{"version":3,"sources":["assets/logo.svg","controllers/authenticationController.js","utils/encryptDecrypt.js","components/languageSelect/LanguageSelect.jsx","views/login/Login.jsx","assets/logo_lr.svg","components/access/DirectAccess.jsx","components/deviceManagement/DeviceManagement.jsx","components/userManagement/managements.js","components/roleManager/managementRole.jsx","components/projectsManagements/managementProject.jsx","components/settings/Settings.js","utils/helpers.js","controllers/roomControllers.js","components/listItems/ListItemsAreas.jsx","components/sidebar/SideBar.jsx","components/loading/Loading.jsx","controllers/rolesControllers.js","components/roleManager/GestionPermissions.jsx","components/roleManager/ComponentsProject.jsx","components/roleManager/ProjectPermissions.jsx","components/roleManager/PrincipalConfigAndGestionRol.jsx","components/roleManager/AccordionsPrincipal.jsx","components/roleManager/ModalRole.jsx","components/roleManager/AlertComponent.jsx","components/roleManager/ModalAlertChangesRoles.jsx","components/toggleSwitch/style/ToggleSwitch.style.js","components/toggleSwitch/RolesToggleSwitch.jsx","components/roleManager/TableRoles.jsx","components/tableInformation/components/AutoComplete.jsx","views/private/devicesManagement/components/AddingDeviceProject.jsx","components/alert/Denied.jsx","views/private/devicesManagement/components/vrfManagement/loginVrf/loginVrf.style.js","views/private/devicesManagement/components/vrfManagement/loginVrf/controllerLogin.js","views/private/devicesManagement/components/vrfManagement/loginVrf/LoginVrf.jsx","views/private/devicesManagement/components/vrfManagement/loginVrf/helper.js","assets/vrf.png","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/VRFConfigurations.style.js","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/controllerRooms.js","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/VRFConfigurations.jsx","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/helper.js","views/private/devicesManagement/components/vrfManagement/helperVRFmanagemnt.js","views/private/devicesManagement/components/vrfManagement/indexVRF.jsx","components/tableInformation/components/Status.jsx","components/tableInformation/components/SelectInfo.jsx","views/private/devicesManagement/components/AddDeviceButton.jsx","views/private/devicesManagement/components/AddNewMetersModal.jsx","views/private/devicesManagement/components/ManagementButton.jsx","views/private/devicesManagement/components/NoDeviceInProject.jsx","views/private/devicesManagement/components/NoSelectedDevice.jsx","components/tableInformation/style/TableInfo.style.js","components/tableInformation/TableInfo.jsx","views/private/devicesManagement/helper.js","views/private/devicesManagement/DevicesManagement.jsx","controllers/projectController.js","views/private/projectsManagement/ChangeProjectStatusModal.jsx","components/toggleSwitch/ToggleSwitch.jsx","components/projectsManagements/ModalCreateOrEditProject.jsx","views/private/projectsManagement/helpers/hooks/useProject.js","views/private/projectsManagement/projectManagement.jsx","components/roleManager/ModalAlertUserStatusChange.jsx","components/toggleSwitch/UserToggleSwitch.jsx","components/userManagement/createUser/registerForm.js","components/userManagement/optionsUsers/addUserButton.js","components/userManagement/editUsers/editForm.js","components/userManagement/editUsers/EditUser.js","views/private/userManagement/usersManagements.jsx","assets/location.png","components/projects/ProjectCard.jsx","assets/3d.png","components/filterProject/FilterProject.jsx","components/loading/Construction.jsx","views/private/projects/Projects.jsx","controllers/reportController.js","assets/grafica_vacia.svg","components/highcharts/OccupancyChart.jsx","controllers/pdfControllers.js","components/highcharts/Occupation.jsx","constants/devices_types.js","components/devices/DevicesFails.jsx","components/devices/IBMFails.jsx","components/areaSelector/helper.js","components/areaSelector/AreaSelector.jsx","components/reactDateRange/context/ReactDateRangeContext.js","components/reactDateRange/helper.js","components/reactDateRange/components/Calendars.jsx","components/reactDateRange/WrapperReactDateRange.jsx","components/reactDateRange/index.jsx","components/highcharts/Temperature.jsx","components/areas/plugin/PluginMode.jsx","components/areas/plugin/PluginBathroom.jsx","controllers/measurersController.js","components/reports/Ocupation/helper.js","components/reports/Ocupation/OcupationTable.jsx","components/reports/Ocupation/Ocupation.jsx","components/areas/Area.jsx","views/private/areas/components/ActionsMenuButton.jsx","views/private/areas/components/EditRoomModal.jsx","components/message/MessageError.jsx","components/reports/GeneralOcupation/helper.js","components/modal/Modal.jsx","components/highcharts/MeasurerDetails/helperDate.js","components/highcharts/GeneralOccupation.jsx","components/projects/ProjectCardAreaControl.jsx","components/reports/DeviceFails.jsx","components/reports/ModalReportFailsByProject.jsx","components/reports/ReportFailsByProject.jsx","views/private/areas/components/VirtualRoomModal.jsx","components/projects/helperMacroMetters/getDataMacrometersVariables.js","views/private/areas/Areas.jsx","components/projects/helperMacroMetters/getDataMetters.js","components/loading/Loading_devices.jsx","components/devices/HSC.jsx","components/devices/PluguinAula.jsx","views/private/devices/components/Temperature/TemperatureModal.jsx","components/devices/utils/helperBattery.js","assets/alert-icon.png","components/devices/Weather.jsx","controllers/devicesController.js","components/message/MessageInfo.jsx","components/message/MessageSuccess.jsx","components/message/MessageWarning.jsx","components/highcharts/Measurer.jsx","components/devices/HorusMotel.jsx","components/devices/SensorElectrico.jsx","components/devices/Interruptor.jsx","components/devices/BatteryLevel.jsx","components/devices/GraphBatteryLevel/BatteryNoData.jsx","components/devices/GraphBatteryLevel/GraphBatteryLevel.jsx","components/devices/GraphBatteryLevel/GraphBatteryModal.jsx","components/devices/SensorPuerta.jsx","components/devices/SensorMovimiento.jsx","components/devices/SensorHumo.jsx","components/devices/SensorTemperatura.jsx","components/devices/SensorHumedad.jsx","assets/Humedad.png","components/devices/DoorLock/Cerradura.jsx","components/devices/CurtainSwitch/components/IconCortain.style.js","components/devices/CurtainSwitch/components/IconCortain.jsx","components/devices/CurtainSwitch/Curtain.Style.js","components/devices/CurtainSwitch/helperCurtain.js","components/devices/CurtainSwitch/CurtainSwitch.jsx","assets/fant.png","views/private/devices/components/LightSwitchModal.jsx","views/private/devices/components/Swicth/Swicth.jsx","views/private/devices/utils/helperBattery.js","views/private/devices/components/Battery_Newlevel.jsx","views/private/devices/components/Temperature/utils/helperBattery.js","views/private/devices/components/sensors/NewDoorSensor.jsx","views/private/devices/components/sensors/NewMotionSensor.jsx","views/private/devices/helperDevices.js","components/devices/Vrf/VRFG150.jsx","views/private/devices/components/menuDevices/EditDevices.jsx","views/private/devices/components/menuDevices/MenuButton.jsx","views/private/devices/Devices.jsx","views/private/devices/components/Header.jsx","components/highcharts/MeasurerDetails/GraphConsumptionPerMonth.jsx","views/private/devices/components/Temperature/Temperature.jsx","views/private/devices/Hooks/useDevices.js","views/private/devices/components/plugins/HSC.jsx","views/private/devices/Hooks/useWebSocket.js","views/private/devices/components/Temperature/Vrf/Vrf.jsx","views/private/devices/components/doorlook/Lock.jsx","views/private/devices/NewDevices.jsx","components/controllers/ModelEditController.jsx","components/controllers/Controller.jsx","controllers/controllerControllers.js","views/private/controllers/controller.js","views/private/controllers/components/VirtualControllerCreationButton.jsx","views/private/controllers/Controllers.jsx","components/highcharts/MeasurerPhases.jsx","components/measurer/HeavyDuty.jsx","components/macrometer/cardphaseA.js","components/macrometer/cardphaseB.js","components/macrometer/cardphaseC.js","components/macrometer/cardTotal.js","components/dateMUI/helper.js","components/dateMUI/DateMUI.jsx","components/highcharts/MeasurerDetails/GraphConsumptionDetail.jsx","components/macrometer/selectMonth/styledSelect.js","components/macrometer/selectMonth/selectMonth.jsx","components/highcharts/MeasurerDetails/GraphConsumptionPerYear.jsx","components/highcharts/MeasurerDetails/TabGraphic.jsx","components/highcharts/MeasurerDetails/GraphVoltage.jsx","components/highcharts/MeasurerDetails/GraphAmps.jsx","components/highcharts/MeasurerDetails/GraphWatts.jsx","components/highcharts/MeasurerDetails/TabGraphicVAV.jsx","components/highcharts/NewMeasurerDetails/TableConsumptions.jsx","components/highcharts/MeasurerDetails.jsx","components/measurer/macroMeterCard.jsx","components/highcharts/NewMeasurerPhases/GraphKwhPhases.jsx","components/highcharts/NewMeasurerPhases/GraphMeasurerPhases.jsx","components/highcharts/NewMeasurerPhases/TabConsumptionPhases.jsx","components/highcharts/NewMeasurerPhases/NewMeasurerPhases.jsx","components/measurer/Measurer.jsx","components/highcharts/MeasurerGeneral.jsx","views/private/measurer/ModalDateExcelIonLabs.jsx","components/highcharts/NewMesurersCards/CardPhaseANew.jsx","components/highcharts/NewMesurersCards/CardPhaseBNew.jsx","components/highcharts/NewMesurersCards/CardPhaseCNew.jsx","components/highcharts/NewMesurersCards/helperMetter.js","components/highcharts/NewMesurersCards/CardTotalNew.jsx","components/highcharts/NewMeasurerDetails/NewGraphVoltage.jsx","components/highcharts/NewMeasurerDetails/NewGraphWatts.jsx","components/highcharts/NewMeasurerDetails/NewGraphCurrent.jsx","components/highcharts/NewMeasurerDetails/NewGraphFDPotencia.jsx","components/highcharts/NewMeasurerDetails/NewGraphFrequency.jsx","components/highcharts/NewMeasurerDetails/NewGraphArmonicCurrent.jsx","components/highcharts/NewMeasurerDetails/NewGraphArmonicVoltage.jsx","components/highcharts/NewMeasurerDetails/TabNewGraphicVAV.jsx","components/highcharts/NewMeasurerDetails/NewGraphConsumptionDetailsDay.jsx","components/highcharts/NewMeasurerDetails/NewGraphConsumptionDetailsMonth.jsx","components/highcharts/NewMeasurerDetails/NewGraphConsumptionDetailsYear.jsx","components/highcharts/NewMeasurerDetails/TabNewGraphic.jsx","components/highcharts/NewMeasurerDetails.jsx","components/NewMesurer/ModalExcelMacrometer.jsx","components/NewMesurer/NewMacrometerCard.jsx","views/private/measurer/Measurers.jsx","constants/paths.js","components/stepperView/styles/stepperView.style.js","components/stepperView/components/Info.jsx","components/stepperView/styles/Stepper.style.js","components/stepperView/components/Stepper.jsx","components/stepperView/components/Summary.jsx","components/stepperView/stepperView.jsx","views/private/stepperViewMacrometer/stepperViewMacrometer.jsx","controllers/pinCodesController.js","components/devices/DoorLock/components/DropstartDropdown.jsx","components/devices/DoorLock/components/TableListCodes.jsx","components/devices/DoorLock/AddCode.jsx","components/devices/DoorLock/Restriction.jsx","components/loading/LoadingDoorLock.jsx","components/devices/DoorLock/modalContents/SendCodeToPerson.jsx","components/devices/DoorLock/modalContents/HistoryOfSentPasswords.jsx","components/modal/ModalDoorLock.jsx","components/stepperView/styles/DescriptionView.style.js","components/stepperView/styles/Pagination.style.js","components/stepperView/components/Pagination.jsx","components/stepperView/pages/Description.jsx","components/stepperView/pages/ErrorMacrometerInstallation.jsx","components/stepperView/styles/MacrometerVariables.style.js","components/stepperView/components/CancelInstallationButton.jsx","components/stepperView/components/CancelInstallationModal.jsx","components/stepperView/pages/MacrometerVariables.jsx","config/routing/router_per_component.js","components/stepperView/pages/Finalization.jsx","components/stepperView/pages/DataValidation.jsx","views/private/roleManager/roleManager.jsx","components/devices/DoorLock/ListCodes.jsx","components/modal/modalProfile/ModalProfile.jsx","components/modal/modalChangePassword/ModalChangePassword.jsx","components/userManagement/editUsers/chagesPassword/style/changesPasswordForm.style.js","components/inputField/InputField.jsx","components/userManagement/editUsers/chagesPassword/changesPasswordForm.jsx","components/menu/avatarMenu/AvatarMenu.jsx","components/modal/ConfirmationModal.jsx","components/modal/modalChangePassword/ModalChangePasswordRequired.jsx","views/private/dashboard/Principal.jsx","components/userManagement/addUser.js","views/forgotPassword/forgotPassword.jsx","views/private/resetPassword/ResetPassword.jsx","components/loading/ConfirmationIcon.jsx","config/routing/views.js","views/private/resetPassword/Confirmation.jsx","views/private/resetPassword/PasswordUpdated.jsx","config/routing/router_per_view.js","components/principal/App.js","index.js","context/AuthProvider.js","context/index.js","abilities/Abilities.js","controllers/usersControllers.js"],"names":["LOGIN","gql","FORGOT_PASSWORD","RESET_PASSWORD","LOGOUT","async","encryptData","value","password","pwUtf8","TextEncoder","encode","pwHash","window","crypto","subtle","digest","iv","getRandomValues","Uint8Array","alg","name","tagLength","key","importKey","ptUint8","ctBuffer","encrypt","ctStr","Array","from","map","byte","String","fromCharCode","join","b","toString","slice","btoa","decryptData","encryptedData","ivHex","ctBase64","split","match","h","parseInt","atob","ctUint8","ch","charCodeAt","decryptedBuffer","decrypt","TextDecoder","decode","options","LanguageSelect","props","color","fontSize","iconHeight","iconWidth","borderRadious","border","width","anchorEl","setAnchorEl","React","selectedOption","setSelectedOption","open","Boolean","userLanguaje","setUserLanguage","storedLanguage","localStorage","getItem","languageCode","navigator","language","setItem","_jsxs","_Fragment","children","IconButton","id","undefined","onClick","event","currentTarget","sx","margin","gap","borderRadius","_jsx","PublicIcon","height","localLanguage","Menu","MenuListProps","onClose","handleClose","PaperProps","style","maxHeight","ITEM_HEIGHT","option","MenuItem","selected","location","reload","handleOptionClick","Alert","MuiAlert","elevation","variant","Login","register","handleSubmit","errors","useForm","user","setUser","setNp","useContext","AuthContext","showPassword","setShowPassword","useState","userInfo","setUserInfo","history","useHistory","login","useMutation","auth","setValue","setOpen","open2","setOpen2","useEffect","deviceInfo","result","UAParser","getResult","deviceType","test","userAgent","toLowerCase","os","osVersion","version","browser","browserVersion","getDeviceDetails","ipInfo","response","fetch","data","json","ip","country","region","city","coordinates","loc","error","console","fetchIPInfo","fingerprint","fp","FingerprintJS","load","get","visitorId","getDeviceFingerprint","now","Date","localDate","getTime","getTimezoneOffset","sessionInfo","deviceId","sessionStart","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","JSON","stringify","fetchData","process","t","useTranslation","__handleSubmit","encryptedpass","encryptInfo","variables","device","then","resul","token","email","security","last_name","push","catch","err","handleInput","target","handleKeyPress","className","Snackbar","autoHideDuration","reason","severity","handleClose2","src","background","speed","loop","autoplay","Logo","alt","ref","required","placeholder","onChange","onKeyPress","type","VisibilityOffIcon","VisibilityIcon","TARGET","href","Link","to","DirectAccess","useStyles","makeStyles","root","listItem","padding","marginTop","marginLeft","marginBottom","DeviceManagement","classes","ListItem","ListItemIcon","SettingsRemoteOutlinedIcon","ListItemText","primary","Managements","permissionsRoleUser","ManageAccountsIcon","ManagementRole","AdminPanelSettingsIcon","ManagementProject","DashboardIcon","Settings","_permissionsRoleUser$","_permissionsRoleUser$2","_permissionsRoleUser$3","_permissionsRoleUser$4","_permissionsRoleUser$5","handleRemove","removeItem","permissionsRole","config","button","handleClick","SettingsIcon","ExpandLess","ExpandMore","GesUser","Collapse","in","timeout","unmountOnExit","List","component","pathname","Management","GesProject","ManagementProjets","GesRol","GesDisp","DAYS","Mon","Tue","Wed","Thu","Fri","Sat","Sun","MONTHS","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","MONTHS_NUMBER","last_conection","status","change_color_title_plugin","pluggin","Estado","calc_controler_on_off","controller_on","controller_off","color_status_project","on","off","percent","sum_of_the_kwh","i","Number","y","reduce","a","date_of_the_kwh","dt","date_range","length","aux","getDate","getMonth","getFullYear","substring","total_of_the_kwh","_data$map","_i$data","_i$data$map","devices_fails","filter","_i$variables","CommFailure","visible","calc_percent_watts","watts","handlerConvertTimeMeasurePhases","dates","_dates$toString","_dates$toString2","_dates$toString3","_dates$toString4","day_week_start","key_month_start","day_start","year_start","convert_time_measurergeneral","_dates$","_dates$$startDate","_dates$$startDate$toS","_dates$2","_dates$2$startDate","_dates$2$startDate$to","_dates$3","_dates$3$startDate","_dates$3$startDate$to","_dates$4","_dates$4$startDate","_dates$4$startDate$to","_dates$5","_dates$5$endDate","_dates$5$endDate$toSt","_dates$6","_dates$6$endDate","_dates$6$endDate$toSt","_dates$7","_dates$7$endDate","_dates$7$endDate$toSt","_dates$8","_dates$8$endDate","_dates$8$endDate$toSt","_Date","_dates$9","_dates$9$startDate","_Date2","_dates$10","_dates$10$endDate","startDate","day_week_end","endDate","key_month_end","day_end","year_end","end_range","date_last","date","pop","calc_date_range","dateReport","_dateReport$","_dateReport$2","_dateReport$2$startDa","_dateReport$toString","_dateReport$3","_dateReport$4","_dateReport$4$endDate","_dateReport$4$endDate2","_dateReport$toString2","date_start","date_end","setDate","cacl_color_graph_measurer","parseFloat","NaN","round_digits","num","toFixed","define_time_zone","range","defice_toolTip_date","changeNamePluggin","nameFilterAreas","filters","func","all","any_status","any_state","busy","off_line","offline","on_line","free","calculatedMinParameter","_dateReport$toString3","param","calculatedMaxParameter","_dateReport$toString4","day_time_end_zone","roundTotalBy","sumTotalBy","formatDateLocal","month","statePluginMotelConvert","state","bg","text","timeConvertMacromedidor","fechaHoy","year","dia","nDia","mesActual","fechaI","fechaIF","fI","parse","start_date","end_date_new","startTime","endTime","endTimeNew","statePluginMotel","STATES","CheckStatusPluginBathroom","dataArray","some","Status","filterByPluggin","_data$data","_data$data$Device","_pluggin$Category","_pluggin$Category2","_pluggin$Category3","_pluggin$Category4","_pluggin$Category5","_pluggin$Category6","Device","find","_i$Category","_i$Category2","_i$Category3","_i$Category4","_i$Category5","_i$Category6","_i$Category7","Category","category","sub_category","_pluggin$variables","_pluggin$variables2","_pluggin$variables3","_pluggin$variables4","EstadoTexto","percentage_total","ClearLocalStorageExcept","localStorageKey","valorAEvitar","clear","ExtractTypeGateway","useLocation","numbersplit","indexOf","GET_ALL_ROOMS_BY_PROJECT","GET_ALL_CONTROLLERS","VIRTUAL_CONTROLLER_CREATE_ROOM","UPDATE_CONTROLLER","UPDATE_ROOM","UPDATE_DEVICES","ListItemsAreas","_data$getMettersInPro","project","projects","openProjects","setOpenProjects","project__id","loading","useQuery","ProjectId","fetchPolicy","notifyOnNetworkStatusChange","change_project_id","getMettersInProjets","Metters","getInfoMetersByProject","probando","imgProject","proy","sessionStorage","disablePadding","Area","HomeWorkIcon","Ctl","ControlCameraIcon","Med","SpeedIcon","SideBar","_ref","handleOpen","logo","Loading","marginRight","GET_ROLE_PERMISSIONS","CREATE_ROLE_PERMISSION","EDIT_ROLE_PERMISSION","DISABLE_ROLE_PERMISSION","theme","positions","alignItems","textAlign","display","flexDirection","justifyContent","BlueSkySwitch","styled","Switch","backgroundColor","alpha","palette","action","hoverOpacity","GestionPermissions","_ref2","handleChange","label","checked","teme","ComponentsProject","_data$action","setPermissionsRoles","permissionsCheck","setPermissionsCheck","Tooltip","title","Typography","noWrap","ProjectPermissions","_data$component","m","j","BlueSwitch","PrincipalConfigAndGestionRol","nameRole","compPaper","compPer","accord","detailsRown","cards","fontWeight","AccordionsPrincipal","components","checkedArea","setCheckedArea","expanded","setExpanded","createRole","editRole","Accordion","AccordionSummary","expandIcon","ExpandMoreIcon","borderStartEndRadius","borderStartStartRadius","Checkbox","e","toUpperCase","AccordionDetails","containerIcons","contentCreate","alignContent","nameField","center","ModalRole","_info$permissions","refresh","PermissionsConfig","roleId","createOrEditRole","nameRol","setNameRol","setCreateRole","setEnabledOrDisabledRole","newPermissionsRole","setNewPermissionsRole","handleChangeClose","handleModalAlertChangeRoles","Equeal","newRole","Dialog","fullScreen","AppBar","CloseOutlinedIcon","textTitle","disabled","SaveOutlinedIcon","Container","maxWidth","TextField","trim","replace","position","info","permissions","item","AlertComponent","message","styleMessage","AlertTitle","ModalAlertChangesRoles","roleIdd","openChangeRoleStatusFromToggle","setOpenChangeRoleStatusFromToggle","checkedToggle","setCheckedToggle","createTheme","success","main","creations","edits","setMessage","setStyleMessage","enabledOrDisabledRole","roles","roleState","setRoleState","handleCloseAlert","setTimeout","breakpoints","down","DialogTitle","lineHeight","fontFamily","CloseIcon","DialogContent","ThemeProvider","Button","CreateRoleAndPermission","log","enabled","createEditAndDisabledRole","keyframes","WrapperSwitch","div","StyledSwitch","RolesToggleSwitch","currentIdRole","currentRoleStatus","setRoleId","handleOpenChangeRoleStatusModal","TableRoles","setRoles","setCreateOrEditRole","selectedRole","setSelectedRole","inputCleared","setInputCleared","searchTerm","setSearchTerm","filterRole","setFilterRole","setOptions","loadingText","currentRolesPage","setCurrentRolesPage","firstIndex","lastIndex","records","totalRolesPages","Math","ceil","keys","filteredRoles","role","includes","active","delay","arguments","Promise","resolve","sleep","filteredOptions","filterRoled","GesRolVer","GesRolCrear","openCreation","Autocomplete","inputValue","disableClearable","handleAutocompleteChange","onInput","inputName","matchingRole","onOpen","isOptionEqualToValue","getOptionLabel","renderInput","params","size","InputProps","endAdornment","Fragment","CircularProgress","GesRolEditar","ModeEditIcon","auxiliar","prueba","GesRolDes","Fab","preRolesPage","ChevronLeftIcon","nextPage","ChevronRightIcon","values","xs","sm","md","lg","xl","AutoComplete","dataFilter","setSelectedProject","setProjectIdStepper","handleInputChange","inputSelection","idSelection","AddingDeviceProject","openModal","setOpenNewMetersModal","setSelectedDevice","handleOpenAddNewMetersModal","Denied","WarningAmberRounded","LoginWrapper","FisrtCardWrapper","TittleLogin","h2","Description","p","WrapperForm","GET_PROJECT_BY_USER","LoginVrf","tokenvrf","setTokenvrf","setId","setEmail","setPassword","setProjects","loadingvrf","setLoadingvrf","errorvrf","setErrorvrf","setResult","severityAlert","setSeverityAlert","refetch","_data$getAllProjectsB","getAllProjectsByUser","Projects","FormControl","InputLabel","Select","labelId","projectId","method","headers","body","ok","Error","signUpVRF","VRFWrapper","Header","IconWrapper","Icon","img","TittlesWrapper","WrapperUnits","UnitCard","VRFConfigurations","areas","setAreas","unit","setUnit","initialUnit","setInitialUnit","dataQuery","setDataQuery","getUnit","url","getVRF","unitId","roomId","updateUnit","updateVRF","getRoomIdByUnitId","foundUnit","unitItem","getAllRoomsByProject","hasUnitChanged","currentUnit","initialUnitItem","IconVrf","element","updateRoomIdByUnitId","newRoomId","prevUnits","placement","_matchedRoom$Controll","matchedRoom","room","typeGateway","Controller","UpdateUnit","RenderContent","indexVRF","SelectInfo","dataSelect","selectItem","setSelectItem","selectedDevice","MenuProps","input","OutlinedInput","select","AddDeviceButton","setProjectId","handleMacrometerInstalation","ControlPointIcon","AddNewMetersModal","openNewMetersModal","selectedProject","paddingLeft","ManagementButton","endIcon","LoginIcon","NoDeviceInProject","dataProjects","projectsForStepper","WarningAmberRoundedIcon","NoSelectedDevice","MainTableContainer","columnLength","TableInfo","amountColumns","dataTable","currentPage","setCurrentPage","columnName","index","rowData","rowIndex","column","colIndex","dataKey","RenderInformationCases","_data$getMettersProje","_data$getMettersProje2","_data$getMettersProje3","useHandleQuery","getMettersProjectsUsers","newMettersExists","tableDataBuilder","RenderVRF","dataSelector","dataBuilder","query","skipCondition","GET_METTERS_PROJECTS_LOGGED_USER","skip","DevicesManagement","_data$getMettersProje4","userProject","allNewMettersExists","GesDispVer","overflow","GET_PROJECT_BY_ID","GET_INFO_USER_LOGGED","GET_ALL_LOGGED_USER_PROJECT","GET_ALL_USER_PROJECT","CREATE_PROJECT","UPDATE_PROJECT","colorThemes","ModalAlertChangeProjectStatus","statusRefetch","openChangeProjectStatusFromToggle","setOpenChangeProjectStatusFromToggle","projectIdd","openChangeProjectStatusModal","setOpenChangeProjectStatusModal","editProjectStatus","filteredProject","_filteredProject$","updateEnableProjects","ToggleSwitch","currentIdProject","currentProjectStatus","setProjectIdd","handleOpenChangeProjectStatusModal","useStyle","spacing","forms","appbarTitle","photoContainer","textFieldsContainer","gridForButtons","buttonContainer","TRANSLATION_SHORTCUT","ModalCreateOrEditProject","_partnerCountries$fil","_partnerCountries$fil2","_statesOptions$","_statesOptions$$find","_citiesOptions$flat","_citiesOptions$flat$f","_citiesOptions$flat$f2","pressedEditButton","setPressedEditButton","pressedCreateButton","filledNameProject","setNewFilledNameProject","selectedCountry","setNewSelectedCountry","selectedState","setNewSelectedState","selectedCity","setNewSelectedCity","filledStart_Time","setNewFilledStart_Time","filledEnd_Time","setNewFilledEnd_Time","setRefetchProjectTable","imgFilter","filledControlAppUsername","setNewFilledControlAppUsername","filledControlAppPassword","setNewFilledControlAppPassword","useTheme","modalCreateOrEditProject","setModalCreateorEditProject","setDataProjects","countryCode","countryLabel","currency","projectName","projectState","projectCity","projectStart_time","projectEnd_time","projectImg","time_zone","projectControlAppUsername","projectControlAppPassword","userMios","passwordMios","imgRef","useRef","openEditAlert","setNewOpenEditAlert","openCreateAlert","setOpenCreateAlert","enableG150Credentials","setEnableG150Credentials","enableH700Credentials","setEnableH700Credentials","createProject","editProject","showControlPassword","setShowControlPassword","showMiosPassword","setShowMiosPassword","_data$getAllProjects","getAllProjects","getTimeHours","timeString","getTimeMinutes","start_time","end_time","credentials","controllersCredentials","encryptedUsername","encryptedPassword","encryptedUserMios","user_mios","encryptedPasswordMios","password_mios","ENCRYPT_DECRYPT_KEY","controlAppUsername","controlAppPassword","exceptionError","loadSelectedProject","resetInputs","prefix_currency","handleNameChange","handleClickImg","_imgRef$current","current","click","handleImageChange","file","files","reader","FileReader","onload","image","document","createElement","canvas","context","getContext","drawImage","cutImg","toDataURL","readAsDataURL","selectExistingImg","evento","handleSelectState","statesOptions","partnerCountries","list","departmentState","citiesOptions","_list$departmentState","_list$departmentState2","stateName","citiesDistrictMunicipalities","associatedCountry","associatedState","associatedCity","flat","handleSelectCity","handleSelect_StartTime_EndTime","handleControlAppCredentials","prev","handlerMiosPasswords","show","handlerControlPasswords","handleCloseModal","refetchProjectDataTable","editProjects","encryptedControlAppUsername","encryptedControlAppPassword","encryptedMiosUser","encryptedMiosPassword","projectEditionConfig","rejectedReason","creatingProject","userId","projectCreationConfig","CityId","UserId","_citiesOptions$flat2","Toolbar","flex","edge","noValidate","autoComplete","Avatar","boxShadow","cursor","opacity","PhotoCamera","selectedCode","_selectedCode$currenc","_selectedCode$currenc2","code","currencyInfo","currencyPrefix","handleSelectCountry","textContent","autoHighlight","renderOption","Box","mr","flexShrink","srcSet","inputProps","countryInitial","_ref3","borderTop","endAd","htmlFor","InputAdornment","VisibilityOff","Visibility","handlerMiosUser","handlerMiosPassword","anchorOrigin","horizontal","vertical","useProjectUser","dataProject","setData","setLoading","setError","onCompleted","onError","projectsNameId","minWidth","contents","ModalAlertUserStatusChange","setCheckedUserToggle","checkedUserToggle","openChangeUserStatusFromToggle","setOpenChangeUserStatusFromToggle","users","openChangeUserStatusModal","setOpenChangeUserStatusModal","activateOrDesactivateUser","UPDATE_MANY_USERS","GET_ALL_USER","dataUsers","filteredUser","updateEnableUsers","UserToggleSwitch","currentIdUser","currentUserStatus","tittle","tittleTwo","tittleThree","rolesProjectsContainer","gridTemplateColumns","inputPassword","inputPasswordTwo","butreg","formsUserLogin","zIndex","with","userlog","RegisterForm","_theme$breakpoints","_theme$breakpoints2","_theme$breakpoints4","_data$getAllRoles","_theme$breakpoints5","_data$getAllUsers$","_data$getAllUsers$$Pr","_theme$breakpoints6","_theme$breakpoints7","modal","CREATE_USER","datauser","setDatauser","userName","lastName","idNumber","cellPhone","isValidEmail","isValidPassword","userLogin","allRoles","passwordTwo","confirmPassword","projectIdLength","nameProject","setProjectName","openMessage","setOpenMessage","noFilledTextfield","setNoFilledTextfield","colorTextFields","setColorTextFields","showAlertTitle","setShowAlertTitle","np","GET_USER_ROLE","keyPassword","isDisabledSubmit","setValues","valuesTwo","setValuesTwo","showPasswordTwo","handleReg","textField","validateEmail","helperText","handleselectCountry","phone","_theme$breakpoints3","handleRegSelect","getAllRoles","Role","multiple","getAllUsers","Project","form","handleClickShowPassword","onMouseDown","preventDefault","handleClickShowPasswordTwo","VisibilityTwo","VisibilityOffTwo","identification_number","RoleId","headerRegister","icons","right","ResponsiveDialog","openCreateUserModal","setOpenCreateUserModal","useMediaQuery","top","left","formProjects","EditForm","_data$getAllUsers$10","_data$getAllUsers$11","_data$getAllUsers$12","_data$getAllUsers$13","_data$getAllUsers$13$","_data$getAllUsers$14","_data$getAllUsers$14$","closeModal","iddUser","editing","setEditError","setOpenModalEditForm","validateName","setValidateName","validateLastName","setValidateLastName","validatePhoneNumber","setValidatePhoneNumber","setValidateEmail","validateUser","setValidateUser","validateSelectedRole","setValidateSelectedRole","validateSelectedProject","setValidateSelectedProject","validateCountryCode","setValidateCountryCode","alertEdit","setAlertEdit","edit","UPDATE_USER","defaultValue","setDefaultValue","EDIT_USER","editingProject","loggedProjects","mergedProjects","array","hasId","concat","userData","formState","_data$getAllUsers$2","_data$getAllUsers$3","resultCellphone","resultEmail","_data$getAllUsers$4","_data$getAllUsers$5","_data$getAllUsers$6","_data$getAllUsers$7","_data$getAllUsers$8","_data$getAllUsers$9","_data$getAllUsers$9$R","fetchDefaultValue","onSubmit","validateUpdatedEmail","handleRegRoleSelect","prevState","FullScreenDialog","openMod","setOpenSet","getUsers","openEditUserModal","setOpenEditUserModal","editError","handleCloseEditModal","refetchFromUser","DataTable","idd","setIdd","worker","setWorker","setUsers","openModalEditForm","selectedUser","setSelectedUser","searchUser","setSearchUser","_data$getAllUsers","filteredUsers","_user$user","decryptedUsers","setDecryptedUsers","totalPages","DecryptDataUsers","setDecryptDataUsers","filterUser","_users$user","handleOpenCreateUserModal","pageIndex","findIndex","inputUser","matchingUser","_user$name","handleOpenEditUserModal","prePage","EditUser","ProjectCard","wea","setWea","setProject","setProjectID","setMacrometer","day0","toUTCString","temp0","kwh_cost","arrayProj","numControllers","controllers_offline","room_online","room_offline","device_error_free","device_error","FilterProject","_data$projectManageme","showPagination","projectManagementId","proyectos","found","setFound","projectManagement","DatasProjects","navigateProject","resultado","newValue","_dataProjects$getAllP","_dataProjects$getAllP2","getAllProjectsName","margiButton","Chip","onDelete","handleDeleteProject","Construction","page","setPage","variablePage","setVariablePage","letterMatch","setletterMatch","inputProject","setInputProject","cantPage","setCantPage","setShowPagination","Datacache","loadingCache","errorCache","getData","queryData","loadingData","errorData","useLazyQuery","scroll","getInfoUserLogged","cantProy","allProjects","proj","offlineControllers","controllers_online","onlineControllers","offlineDevices","numDevices","offlineRooms","numRooms","handleLeft","handleRight","GET_DATA_REPORT","GET_NEW_DATA_OCCUPANCY","GET_DATA_MEASURER_REPORT","GET_DATA_MEASURER_BY_PROJECT","GET_GENERAL_OCCUPATION_REPORT","GET_DEVICE_BY_TEMPERATURE","GET_BATTERY_DEVICES","GET_REPORT_FAILS_BY_PROJECT","GET_BATTERY_NEW_DEVICES","OccupancyChart","dateMin","dateMax","innerWidth","setInnerWidth","graph_data","HighchartsReact","align","yAxis","min","max","tickAmount","plotOptions","area","fillOpacity","marker","symbol","series","states","inactive","turboThreshold","legend","verticalAlign","layout","x","subtitle","chart","zoomType","xAxis","tickInterval","labels","format","tooltip","xDateFormat","headerFormat","time","timezoneOffset","credits","class","PDF_GENERAL_OCUPATION_REPORT","PDF_OCUPATION_BY_ROOM","PDF_MEASURE_GENERAL","PDF_MEASURE_PHASES","PDF_MACROMETER","EXCEL_GENERAL_OCUPATION_REPORT","EXCEL_MACROMETER_REPORT","Highcharts","lang","resetZoom","resetZoomTitle","innerTheme","green","secondary","light","dark","contrastText","StyledTableCell","withStyles","head","common","white","TableCell","StyledTableCell2","StyledTableCell3","StyledTableRow","hover","TableRow","appBar","formControl","selectEmpty","graphic","focusVisible","imageButton","bottom","imageSrc","backgroundSize","backgroundPosition","imageBackdrop","black","transition","transitions","create","imageTitle","imageMarked","table","tab","Occupation","forwardRef","_reportData$getDataRe","pdfGenerator","setArea","setIdArea","idArea","setRoomId","setGraphic","setLoadingPdf","RoomId","generalPdf","reportData","setReportData","setDateMin","setDateMax","parametroMin","setParametroMin","parametroMax","setParametroMax","nextDay","setNextDay","paramDate","setParamDate","dayMilisegundos","setDayMilisegundos","setTime","setRoom","changeDay","setChangeDay","printRef","basePdf","setBasePdf","selectedDate","setSelectedDate","getDataReport","networkStatus","report_data","finishTime","imageProject","datePrint","pdfOcupationByRoom","dataPdf","decodePdf","f","DIA_EN_MILISEGUNDOS","HORA_EN_MILISEGUNDO","day2","param2","tempPara","tmpDate","paramteroDate","project_id","event_date","day","day_time_zone","useImperativeHandle","occupationPdf","imageGraphic","msToTime","duration","seconds","minutes","hours","round","decimales","signo","consumoTotal","Totales","consumoEficiente","consumoIneficiente","total_consumption","efficient_consumption","inefficient_consumption","porcentaje","valor","valorTotal","html2canvas","linkSource","downloadLink","download","MuiPickersUtilsProvider","utils","DateFnsUtils","locale","frLocale","Grid","container","justify","date2","before","ChevronLeft","DatePicker","okLabel","showTodayButton","todayLabel","disableFuture","KeyboardButtonProps","after","ChevronRight","alias","TableContainer","Paper","Table","TableHead","TableBody","row","scope","total_time_on","efficient_time","inefficient_time","Devices","DevicesFails","result_img","IBMFails","stateinitial","stateClone","img_devices_fails","interruptor","dataSocket","handle_status","_values$status","Libre","Ocupado","AreaSelector","_JSON$parse","_JSON$parse2","changeRoomId","idHeaderOcupation","setNameHeaderOcupation","setOccupationAreaName","filteredSelectedArea","realname","DateRangeContext","createContext","DateRangeProvider","reactDateRange","setReactDateRange","calendarDay","setCalendarDay","acceptButton","setAcceptButton","Provider","lastSelectableDay","closingTime","closingType","currentDate","currentTime","getHours","projectTime","toLocaleLowerCase","currentDay","handlerFormatDate","_item$","_item$$startDate","_item$$startDate$toSt","_item$2","_item$2$startDate","_item$2$startDate$toS","_item$3","_item$3$startDate","_item$3$startDate$toS","_item$4","_item$4$startDate","_item$4$startDate$get","_item$5","_item$5$endDate","_item$5$endDate$toStr","_item$6","_item$6$endDate","_item$6$endDate$getDa","_item$7","_item$7$endDate","_item$7$endDate$toStr","_item$8","_item$8$endDate","_item$8$endDate$getFu","_item$9","_item$9$startDate","_item$10","_item$10$endDate","day_week_s","day_week_e","handlerFormatCalendarDay","_item$toString","_item$toString2","_item$toString3","_item$toString4","allowNextDayButton","globalCalendarDay","globalReactDateRange","selectTypeRange","_Date3","_Date3$toString","_Date4","_Date4$toString","_globalReactDateRange","_Date5","_Date5$toString","_globalReactDateRange2","_lastSelectableDay","_lastSelectableDay$to","selectedDay","selectedStartDate","selectedEndDate","allowDay","Calendars","setDropDownCalendar","setErrorMessage","Calendar","handlerCalendarDay","showPreview","moveRangeOnFirstSelection","showDateDisplay","maxDate","rangeColors","preventSnapRefocus","direction","DateRange","handlerRangesCalendar","_item$selection","_item$selection2","starDate","selection","differenceInDays","_item$selection3","_item$selection4","_item$selection5","_item$selection6","ranges","months","handlerCancelButton","ButtonDays","buttonText","buttonIcon","renderButtons","showButtons","CalendarInput","inputIcon","WrapperReactDateRange","renderNextAndBack","setGlobalReactDateRange","setGlobalCalendarDay","dropDownCalendar","handleErrorMessageDatePicker","_reactDateRange$","_reactDateRange$2","handlerPreviousDay","selectedGlobalDay","previousGlobalDay","handlerNextDay","nextGlobalDay","ReactDateRangePicker","Temperature","_funcCalendar$getDevi","_funcCalendar$getDevi2","_funcCalendar$getDevi3","_funcCalendar$getDevi4","_funcCalendar$getDevi5","_funcCalendar$getDevi6","_handlerMaxAndMinTemp","_tempScale$tooltip","_handlerMaxAndMinTemp2","_tempScale$tooltip2","_tempScale$tooltip3","_funcCalendar$getDevi7","NewRoomId","dateCalendar","setDateCalendar","setIsOpenCalendarCustom","dateCalendarTemp","calendarDatePicker","setCalendarDatePicker","setCalendarDatePickerToday","calendarDatePickerToday","setIdHeaderOcupation","setNewRoomId","TypeGateway","setTypeGateway","parameterMax","setParameterMax","parameterMin","setParameterMin","time_actual","init_time","funcCalendarAction","funcCalendar","isCalendar","averageTemperature","getDeviceByTemperature","temperatureAvarage","tempScale","_i$tooltip","_i$tooltip2","_i$name","valueSuffix","handlerEpochTimeConverter","_globalCalendarDay$to","_globalCalendarDay$to2","epochTime","startTimeZone","endTimeZone","parameter_min","parameter_max","handlerTemperatureQuery","hourStart","hourEnd","getNormalTime","epoch","toISOString","handlerMaxAndMinTemp","scale","highcharts","step","radius","gridLineWidth","getOptions","colors","opposite","minorGridLineWidth","_i$temperatureAvarage","_i$temperatureAvarage2","_i$tooltip3","_i$temperatureAvarage3","_i$temperatureAvarage4","_i$tooltip4","_i$temperatureAvarage5","_i$temperatureAvarage6","_i$temperatureAvarage7","_i$temperatureAvarage8","_i$temperatureAvarage9","_i$temperatureAvarage10","_i$tooltip5","maxTemp","minTemp","maxTempTime","minTempTime","tempAvarage","PluginMode","_props$props","_props$props$data","_props$props2","_props$props2$data","classRoomState","ocupationPlugin","changeAvatarContent","_ocupationPlugin$vari","_classRoomState$varia","_ocupationPlugin$vari2","_classRoomState$varia2","_ocupationPlugin$vari3","_classRoomState$varia3","_ocupationPlugin$vari4","_classRoomState$varia4","Modo","EnergySavingsLeafIcon","bgcolor","avatar","animation","pink","appBarDeviceFails","IconAvatars","Stack","sizes","CleaningServicesOutlinedIcon","GET_INFO_MEASURER_BY_PROJECT","GET_PHASES_MEASURER_REPORT","GET_CLAMPS_MEASURE","GET_HISTORY","GET_TWELVE_HOUR_VOLTAGE","GET_TWELVE_HOUR_AMPS","GET_TWELVE_HOUR_WATTS","GET_METTER_AND_METTER_HISTORIES","GET_MACROMETER_IN_PROJECT","GET_METTERS_HISTORY","GET_METER_HISTORY_VARIABLES","GET_HISTORY_TWO","GET_TWELVE_HOUR_VOLTAGE_TWO","GET_TWELVE_HOUR_CURRENT","GET_TWELVE_HOUR_WATTS_TWO","GET_TWELVE_HOUR_POWER_FACTOR","GET_NEW_INSTALLED_METTERS","UPDATE_NEW_MACROMETER","GET_FREQUENCY_TEST","GET_ARMONIC_CURRENT_TEST","GET_ARMONIC_VOLTAGE_TEST","handleEventDate","convertDate","OcupationTable","_handleDataOccupation","_handleDataOccupation2","_handleDataOccupation3","_handleDataOccupation4","_handleDataOccupation5","_handleDataOccupation6","_handleDataOccupation7","_handleDataOccupation8","_handleDataOccupation9","_handleDataOccupation10","_handleDataOccupation11","_handleDataOccupation12","_handleDataOccupation13","_handleDataOccupation14","_handleDataOccupation15","handleDataOccupationTypeGateway","getNewDataOccupancy","totalConsumptionKwh","totals_consumptions_report_data","totalConsumptionkWh","totalEfficientConsumption","totalInefficientConsumption","totalAverageEfficientPercentage","totalAverageInefficientPercentage","occupancyPercentage","occupationPercentage","filteredOcupancyTable","efficientPercentage","inefficientPercentage","Ocupation","stateRoomId","setStateRoomId","dataOcupation150","loading150","dataOcupation700","loading700","handleTypeGatewayDataOccupancyPdf","handleChangeTypeGateway","queryHorus700","queryHorus150","_dataOcupation700$get","_dataOcupation700$get2","_dataOcupation700$get3","_dataOcupation150$get","_dataOcupation150$get2","_dataOcupation150$get3","_JSON$parse$filter","_JSON$parse2$filter","Transition","Slide","customColors","_props$data","_props$data$Device","_props$data15","_props$data16","_props$data16$Control","_props$project","_props$data17","_props$data18","_props$data19","_props$data20","_props$data20$Control","_props$project2","_props$data21","_props$data21$Control","_props$data22","_props$data23","_props$project3","_FilterDevicesFails","_props$project4","setSerial","setactiveNextBack","loadingPdf","occupationAreaName","setDateCalendarTemp","nameHeaderOcupation","openTemp","setOpenTemp","openDevicesFails","setOpenDevicesFails","openIBMFails","setOpenIBMFails","childRef","client","setClient","serialPluginBathroom","setSerialPluginBathroom","initialState","setInitialState","cloneDataState","setCloneDataState","selectedRoom","setSelectedRoom","statePlugin","REACT_APP_SOCKET_PRODUCTION","REACT_APP_SOCKET_DEVELOP","REACT_APP_SOCKET_STAGING","openArea","_props$data2","serial","_props$data3","_props$data3$Controll","_props$data4","_props$data4$Controll","online","Swal","fire","icon","foundCategory","FindSerialPluginbathroom","onerror","onopen","onclose","close","newClient","W3CWebSocket","send","channel","onmessage","id_device","hndleCloseTemp","handleCloseDeviceFails","handleCloseIBMFails","device_off","_data$Device","areas_with_device_fails","handleDeviceFail","BuildIcon","alignSelf","isStatusOne","stopPropagation","handleClickOpen","_props$data5","_props$data6","_props$data7","_props$data8","_props$data9","_props$data10","day_by_miliseconds","actual_hour","hotel_hour","handleClickOpenTemp","_props$data11","_props$data12","_props$data13","PluginBathroomComp","TransitionComponent","Hidden","mdDown","LoadingButton","DownloadIcon","loadingPosition","Backdrop","_theme$zIndex","drawer","roomIdDatepicker","fullWidth","FilterDevicesFails","_props$data14","_props$data14$Device","ActionsMenuButton","setOpenVirtualRoomModal","setEditRoomModal","handlerPickAction","borderColor","MoreVertIcon","Fade","AreaCreate","AreaEdit","EditRoomModal","_areas$find","_areas$find$Controlle","_areas$find2","openEditRoomModal","refetchArea","updateRoom","controllers","getAllControllers","areaId","setAreaId","areaName","setAreaName","controllerId","setControllerId","controllerSerial","setConrollerSerial","selectedAreaTypeGateway","selectedAreaId","filteredControllers","controller","handlerCloseEditRoomModal","_area$Controller","_area$Controller2","_area$Controller3","handlerPickArea","handlerEditAreaName","_controller$","handlerPickController","updateRoomId","ControllerId","handlerUpdateRoom","MessageError","messageText","errorMessage","errorMessageText","handle_start_and_end_time","start","end","Modal","timerProject","setOpenModal","roomPdf","setRangeDatePicker","rangeDatePicker","rangeDatePickerToday","setRangeDatePickerToday","dayCurrent","_compare_date$toStrin","compare_date","day_compare","day_before","_compare_date$toStrin2","hours_day","minus_horus","Dates","setHours","nextDate","floor","minBlockSize","StyledTableTitle","GeneralOccupation","_globalReactDateRange3","_globalReactDateRange4","_globalReactDateRange5","_globalReactDateRange6","_Highcharts$defaultOp","_Highcharts$defaultOp2","_Highcharts$defaultOp3","_Highcharts$defaultOp4","_Highcharts$defaultOp5","_projectT$project$","_projectT$project$2","_projectT$project$2$t","_projectT$project$3","_projectT$project$3$t","_projectT$project$4","_projectT$project$4$t","_projectT$project$5","_projectT$project$5$t","_projectT$project$6","_projectT$project$6$t","_projectT$project$7","_projectT$project$7$a","_projectT$project$8","_projectT$project$8$a","_projectT$project$9","_projectT$project$9$a","_projectT$project$10","_projectT$project$10$","_projectT$project$11","_projectT$project$11$","_projectT$project$12","_projectT$project$12$","_projectT$project$13","_projectT$project$13$","_projectT$project$14","_projectT$project$14$","_projectT$project$15","_projectT$project$15$","_projectT$project$16","_projectT$project$16$","_projectT$project$17","_projectT$project$17$","_projectT$project$18","_projectT$project$18$","projectData","report","setReport","projectT","setProjectT","downloadGeneralOcupation","setDownloadGeneralOcupation","setDateReport","setOpenDateCustom","openDateCustom","pie","setPie","setRoomPdf","startTimes","setStartTimes","finishTimes","setFinishTimes","setLoad","oldTime","setOldTime","useParams","dataPdfGeneral","setDataPdfGeneral","printRefP","imagePie","pdfFormatStartTime","pdfFormatEndTime","pdfGeneralOcupationReport","initial","final","fileName","elementTwo","getGeneralOccupationReport","rooms","currentHours","handleProjectTime","yesterdayEpoch","addDays","_globalReactDateRange7","_globalReactDateRange8","categories","categoriesOccupationReport","stackLabels","defaultOptions","pointFormat","stacking","maxPointWidth","dataLabels","graphOcupationReport","plotBackgroundColor","plotBorderWidth","plotShadow","accessibility","point","allowPointSelect","GraphPie","total","efficient_percent","inefficient_percent","porcent_time_ocupation","averageDayProject","averageDayRoom","_report$total","_report$total2","_report$total3","_report$total4","_report$total5","_report$average","_report$average2","_report$average3","_report$average4","_report$average5","average","ProjectCardAreaControl","_data$name","AddController","isControllerView","locations","DeviceFails","filteredDevices","_item$Category","_item$Category$name","_item$Category2","_item$Category2$name","_item$Category3","_item$Category3$name","bombilla_regulable","bloqueo_de_puerta","bombilla_regulable_de_pared","door_lock","hvac","interruptor_de_pared","medidor_de_energia","sensor_de_movimiento","sensor_de_puerta","security_sensor","sirena","switch","termostato","ventana","imgTraductor","_i$Category$name","__img__","batteryIcon","lv","Battery20Icon","Battery40Icon","Battery60Icon","Battery80Icon","Battery90Icon","_i$Category2$name","_i$variables2","_i$variables3","_i$variables4","_i$variables5","_i$variables6","_i$variables7","BatteryLevel","FailureDate","ModalReportFailsByProject","_data$getFailuresRepo","filterData","setFilterData","deviceFailsCount","setDeficeFailsCount","filteringCorrectDevices","getFailuresReport","_i$Device","_i$Device$filter","_i$Category3$name","lng","newData","ReportFailsByProject","openReportFailsByProject","handleReportFailsByProject","VirtualRoomModal","_data$getAllControlle","_data$getAllControlle2","createRoom","virtualControllerId","setVirtualControllerId","handleCloseVirtualRoomModal","handleVirtualControllerInput","createRoomWithVirtualController","codigosCiudades","Bogotá","Barranquilla","default","Object","freeze","Areas","_data$getProjectByIdH","_data$getMettersInPro2","_data$getInfoMetersBy","_data$getProjectByIdH3","_count_by_status","_count_by_status2","_count_by_status3","_count_by_status4","_count_by_status5","_areas2","_areas2$filter","setStateBathroom","stateBathroom","macrometer","setDataMacrometer","dataMacrometers","setDataMacrometerVariables","dataMacrometerVariables","openVirtualRoomModal","openDropFilter","setOpenDropFilter","openDropReport","setOpenDropReport","setOpenReportFailsByProject","filter_cat","setFilterCat","inputValues","setInputValues","search_areas","cityProject","getProjectByIdHeader","datosMacrometers","useGetDataMetters","dataMacrometer","metters","macrometers","datoMacrometer","modelo","model","seriales","dataquery","loadingquery","errorquery","useGetDataMacrometersVariables","secondClient","medidoresArgos","_sessionStorage","_dataquery$getMeterHi","forEach","obj","getMeterHistoryVariables","SerialMedidor","variable","resultadoFinal","_areas$find$Device","_areas$find$Device$fi","k","_data$getAllProjects$","_data$getAllProjects$2","_data$getAllProjects$3","_data$getAllProjects$4","_data$getAllProjects$5","_data$getAllProjects$6","_data$getAllProjects$7","count_by_status","_areas$filter","_areas$filter2","_areas$filter3","_areas$filter4","_i$Controller4","_areas","_i$Controller3","__areas__","_key$name","_key$name$toLowerCase","handleChangeCat","__key__","OptionAreas","AreaRoaVer","AreaRpog","AreaRpdf","closeDrops","handleAreasSave","_area$Device","_area$Device$find","_area$Device$find$var","filterArea","_j$Category","_j$Category2","_i$Device$find","_i$Device$find$variab","_i$Controller","_j$Category3","_j$Category4","_i$Controller2","dataMetter","Loading_devices","HSC","_item$variables","setBatteryLevel","libre","setLibre","manual","setManual","apagado","setApagado","auto","setAuto","successMessage","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","isConfirmed","call","_item$variables2","translatingPluginTitle","namePlugin","BatteryFullIcon","Battery50Icon","Battery30Icon","BatteryAlertIcon","AreaDispMan","translatingPluginStatus","_item$variables3","_item$variables4","systemStatus","AccionTexto","pluginName","accionTexto","translationAccionTexto","handleBatteryLevelColor","handleBatteryLevel","Weather","_item$variables5","_item$variables6","_item$variables7","_item$variables8","_item$variables9","_item$variables10","_item$variables15","_item$variables16","_item$variables17","_permissionsRoleUser$6","gridNumber","socketResponse","CurrentSetpoint","setCurrentSetpoint","financial","CurrentTemperature","setCurrentTemperature","cool","setCool","ModeStatus","heat","setHeat","setOff","previousModeThermostatState","setPreviousModeThermostatState","thermostatMode","setpointTemperature","cancel","setCancel","socketSnackbar","setSocketSnackbar","socketInterval","infoMessage","setInfoMessage","setSuccessMessage","warningMessage","_item$variables11","_item$variables12","_item$variables13","clearInterval","_item$variables14","handleChangeThermostatState","actions","upSet","newSetPoint","SocketTimeValidationResponse","downSet","count","setInterval","alert","GET_ALL_DEVICES","MessageInfo","textMessage","MessageSuccess","MessageWarning","setWarningMessage","Measurer","getReportMeterZWave","series_kwh","shared","series_watts","HorusMotel","setState","translatingPluginName","pluginTitle","SensorMovimiento","titleConainer","paddingTop","spacingClose","openBattery","handleCloseBattery","getDataBatteryReport","dataBattery150","getDataNewBatteryReport","dataBattery700","DeviceId","itemId","handleTypeGatewayDataBattery","_dataBattery150$getDe","_dataBattery150$getDe2","_dataBattery150$getDe3","_dataBattery700$getAl","_dataBattery700$getAl2","_dataBattery700$getAl3","getDeviceByBatteryLevel","getAllNewDeviceByBatteryLevel","reverse","BatteryNoData","GraphBatteryLevel","_getDataGraph","getDataGraph","dataGraph","_data$getAllNewDevice","_data$getDeviceByBatt","scrollablePlotArea","scrollPositionX","alternateGridColor","plotBands","spline","lineWidth","pointInterval","pointStart","UTC","navigation","menuItemStyle","GraphBatteryModal","_dataBattery$getAllNe","_dataBattery$getAllNe2","_dataBattery$getDevic","_dataBattery$getDevic2","dataBattery","setDataBattery","query700","query150","SensorPuerta","Tripped","armed","setArmed","Armed","SensorHumo","BatteryUnknownIcon","SensorTemperatura","_item$variables4$stat","_item$variables7$stat","selectIcon","temperature","SensorHumedad","CurrentLevel","StyledIconButton","Cerradura","contId","zwaveId","RoomPreferencesIcon","WrapperIcon","WindowWrapper","WindowLevel","level","BaseCortain","span","IconCortain","WrapperCurtainSwitch","HeaderCurtainswitch","onLine","WrapperCurtainIcon","WrapperActions","WrapperActionsButtons","ActionsButton","handleChangeLevel","limite","incrementar","setReferenceLevel","intervalRef","setLevel","referenceLevel","prevLevel","initialValue","_data$curtains","_data$curtains$variab","_data$curtains$variab2","curtains","items","_data$item","_data$item$variables","LoadLevelStatus","handleSliderChange","stopChange","handlerOnlineCurtain","curtainStatus700","controllerStatus","curtainStatus150","sendWebSocketData","dataSentG150","dataSentH700","sendMessage","setEnableSlider","readyState","WebSocket","OPEN","eventType","IOSSlider","Slider","mode","CurtainSwitch","_props$item","_props$curtains","_props$curtains$varia","_props$curtains$varia2","_props$curtains2","_props$curtains2$vari","_props$curtains2$vari2","_props$item2","_props$item2$variable","_props$item3","_props$item3$variable","_props$item4","_props$item4$variable","_props$item5","_props$item5$variable","_props$item6","_props$item7","_props$item8","_props$item8$variable","_props$item9","_props$curtains3","_props$curtains3$vari","_props$curtains4","_props$item10","idCourtain","setIdCourtain","itemH700","itemStopH700","enableSlider","initialLevel","id_in_controller","item_id","dataStopG150","dataStopH700","conFailure","timerId","clearTimeout","endPoint","event_name","SliderValidation","valueLabelDisplay","getAriaValueText","Swicth","allSwitches","modalOpen","setModalOpen","switchStates","setSwitchStates","pressedToggle","setPressedToggle","socketConection","handleChangeSwitchState","Battery_Newlevel","_ref2$reverse","id_Battery","batteryData","NewDoorSensor","_items$find","sensor","doorSensor","setDoorSensor","battery","setBattery","itemId_Battery","percentageBattery","batteryVariable","handleChangesArmed","NewMotionSensor","motionSensor","setMotionSensor","REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER","REACT_APP_SOCKET_STAGING_NEWCONTROLLER","renderNewDevices","devices","_obj$permissionsRoleU","_obj$permissionsRoleU2","_obj$permissionsRoleU3","_obj$permissionsRoleU4","permission","AreaDispVer","AreaDisp","elements","secondElement","spliceDevicesData","chunkedArray","chunkSize","socket","eventEmitter","EventEmitter","IsThereVRF","SocketVRF","CLOSED","CLOSING","Name","emit","getSocket","getEventEmitter","VRF","_permissionsRoleUser$7","currentFanMode","setCurrentFanMode","CurrentFanMode","timer","setTimer","handleDelayedSend","timeLoad","handleUpdateUnit","ambientTemperature","setpoint","operationStatus","operationMode","warn","fanCoolImage","EditDevices","setCreateDevices","updateDevices","allRooms","_room$Controller","allDevices","setDataEdit","report_energy","report_occupation","report_temp","watts_min","watts_off","dataEdit","connection","lights","plugin","thermostat","prevData","buttonRef","handlerData","handlerDisplayWatts","_device$Category","_device$Category2","_device$Category3","_device$Category4","_device$Category5","_device$Category6","_device$Category7","_device$Category8","_device$Category9","_device$Category10","_device$Category11","_device$Category12","_device$Category13","_device$Category14","_device$Category15","_device$Category16","setpoint_temp","DialogActions","handlerUpdateDevices","updateDeviceId","reportEnergy","reportOccupation","reportTemp","setpointTemp","MenuButton","createDevices","handlerMenu","initialStateFilter","_dataDevice$getMetter","_dataDevice$getMetter2","_dataDevice$getInfoMe","_dataDevice$getAllDev71","_dataDevice$getAllDev72","_dataDevice$getProjec","_dataDevice$getAllDev73","_permissionsRoleUser$8","_dataDevice$getAllDev74","_dataDevice$getAllDev75","_dataDevice$getAllDev76","_pluguin$","_pluguin$2","_pluguin$2$Category","_aire$filter","_aire$filter2","_spliceDevicesData","_dataDevice$getProjec2","_permissionsRoleUser$9","_dataDevice$getAllDev77","_dataDevice$getAllDev78","_dataDevice$getAllDev79","_dataDevice$getAllDev80","_dataDevice$getAllDev81","_dataDevice$getAllDev82","_dataDevice$getProjec3","setDataSocket","stateFilter","setStateFilter","aire","setAire","pluguin","setPluguin","pluginMotel","setPluginMotel","setDevice","aire_clon","setAire_clon","pluguin_clon","setPluguin_clon","device_clon","setDevice_clon","pluginMotel_clon","setPluginMotel_clon","textErrorAlert","setTextErrorAlert","textWarningAlert","setTextWarningAlert","textInfoAlert","setTextInfoAlert","setCreateDevice","dataDevice","listMacromeasureOption","openMeasurer","setOpenMeasurer","openTemperature","setOpenTemperature","openReport","setOpenReport","_dataDevice$getAllDev7","getAllDevices","handleCloseMeasurer","handleCloseTemperature","Send","_dataDevice$getAllDev12","_dataDevice$getAllDev13","_dataDevice$getAllDev14","_dataDevice$getAllDev15","_dataDevice$getAllDev16","_dataDevice$getAllDev17","aireAction","_dataDevice$getAllDev18","_dataDevice$getAllDev19","_dataDevice$getAllDev20","_dataDevice$getAllDev21","pingInterval","_client","dev","elemento","indice","_device$indice","_device$indice$Catego","_device$indice2","_device$indice2$Categ","_device$indice3","_device$indice3$Categ","_device$indice4","_device$indice4$Categ","_device$indice5","_device$indice5$Categ","_device$indice6","_device$indice6$Categ","_device$indice7","_device$indice7$Categ","_device$indice8","_device$indice8$Categ","tempDevice","doorLock","tempAire","tempPluguin","updateState","VRFActions","_dataDevice$getAllDev22","_dataDevice$getAllDev23","_device$variables","_dataDevice$getAllDev24","_dataDevice$getAllDev25","_device$variables2","pluguinAction","subcategory","_dataDevice$getAllDev26","_dataDevice$getAllDev27","_dataDevice$getAllDev28","_dataDevice$getAllDev29","_dataDevice$getAllDev30","_dataDevice$getAllDev31","_dataDevice$getAllDev32","_dataDevice$getAllDev33","_dataDevice$getAllDev34","_dataDevice$getAllDev35","_dataDevice$getAllDev36","_dataDevice$getAllDev37","_dataDevice$getAllDev38","_dataDevice$getAllDev39","_dataDevice$getAllDev40","_dataDevice$getAllDev41","_dataDevice$getAllDev45","_dataDevice$getAllDev46","_dataDevice$getAllDev47","_dataDevice$getAllDev48","_dataDevice$getAllDev49","_dataDevice$getAllDev50","_dataDevice$getAllDev53","_dataDevice$getAllDev54","_dataDevice$getAllDev55","_dataDevice$getAllDev56","_dataDevice$getAllDev57","_dataDevice$getAllDev58","_dataDevice$getAllDev61","_dataDevice$getAllDev62","_dataDevice$getAllDev63","_dataDevice$getAllDev64","_dataDevice$getAllDev65","_dataDevice$getAllDev66","_dataDevice$getAllDev42","_dataDevice$getAllDev43","_dataDevice$getAllDev44","helius","_dataDevice$getAllDev51","_dataDevice$getAllDev52","_dataDevice$getAllDev59","_dataDevice$getAllDev60","_dataDevice$getAllDev67","_dataDevice$getAllDev68","_dataDevice$getAllDev69","_dataDevice$getAllDev70","handleStatusFilter","handleFilter","v_plugin_clon","v_aire_clon","v_devices_clon","c","w","handleOpenReports","_dataDevice$getAllDev8","_dataDevice$getAllDev9","_dataDevice$getAllDev10","_dataDevice$getAllDev11","AreaDispEdit","PluguinAula","_element$Category","_element$Category2","_element$Category3","renderDevice","_dataDevice$getAllDev","_dataDevice$getAllDev2","_dataDevice$getAllDev3","_dataDevice$getAllDev4","_dataDevice$getAllDev5","_dataDevice$getAllDev6","Type","SensorElectrico","Interruptor","AreaRoaDes","_data$getAllDevices5","_devices$Controller","_data$getProjectByIdH2","_data$getAllDevices6","_devices$Controller2","_data$getAllDevices","_data$getAllDevices2","_data$getAllDevices3","_data$getAllDevices4","_childRef$current","GraphConsumptionDetailPerMonth","projectID","setSeeGraphic","datas","setDatas","getHistory","res","currentConsumption","announceNewData","borderWidth","colorByPoint","_variables$items","_variables$items$find","_variables$items$find2","_variables$items$find3","_variables$items$find4","_variables$items2","_variables$items2$fin","_variables$items2$fin2","_variables$items2$fin3","_variables$items3","_variables$items3$fin","_variables$items3$fin2","_variables$items4","_variables$items4$fin","_variables$items4$fin2","_variables$items4$fin3","_variables$items5","_items$filter$","_items$filter$2","_variables$items6","_variables$items6$fin","_items$find2","_items$find2$status","_items$find2$status$v","_items$find3","_items$find4","_items$find5","_items$find6","_items$find6$status","_items$find6$status$v","_items$find7","_items$find8","_items$find9","_items$find10","_items$find10$status","_variablesAirs$coolId","_variablesAirs$coolId2","_variablesAirs$pointT","_variablesAirs$pointT2","_variablesAirs$fanMod","_variablesAirs$fanMod2","_handleThermostatMode4","_handleThermostatMode5","_variablesAirs$fanMod3","allAirs","thermostatState","setThermostatState","idThermostat","setIdThermostat","setBatteryData","setpointCoolScale","openBatteryReport","setOpenBatteryReport","handleOpenBatteryReport","irDeviceTypeId","centralDeviceTypeId","fanCoilDeviceTypeId","pointTemperature","setPointTemperature","sameGrade","tem","setTemp","heats","autoMode","setAutoMode","termostat","fanCoolState","setFanCoolState","fanCooling","setFanCooling","variablesAirs","setVariablesAirs","temId","coolId","pointTemperatureId","fanMode","humidity","handleThermostatModel","deviceTypeId","typeThermostat","speeds","fanState","_handleThermostatMode","_handleThermostatMode2","_handleThermostatMode3","lastUpdateTemperature","fanPosition","setFanPosition","_variables$items8","updateTemperature","itemName","setStateFunction","_variables$items7","_item$status","_handleThermostatMode6","_handleThermostatMode7","_dataSocket$state","_variablesAirs$coolId3","_variablesAirs$coolId4","_variablesAirs$coolId5","_variablesAirs$coolId6","_variablesAirs$pointT3","_variablesAirs$pointT4","_variablesAirs$fanMod4","eventName","_previousModeThermost","_previousModeThermost2","_previousModeThermost3","_previousModeThermost4","_previousModeThermost5","_previousModeThermost6","_previousModeThermost7","_previousModeThermost8","_previousModeThermost9","_previousModeThermost11","_previousModeThermost10","_previousModeThermost12","_handleThermostatMode8","_handleThermostatMode9","changeFan","_handleThermostatMode10","_handleThermostatMode11","_handleThermostatMode12","nextFanPosition","nextSpeed","_batteryData$","_batteryData$2","_batteryData$3","_variablesAirs$humidi","_variablesAirs$humidi2","_variablesAirs$fanMod5","_variablesAirs$fanMod6","_handleThermostatMode13","_handleThermostatMode14","_handleThermostatMode15","_handleThermostatMode16","_variablesAirs$pointT11","_variablesAirs$pointT12","_variablesAirs$pointT13","_variablesAirs$pointT14","_variablesAirs$pointT15","_variablesAirs$pointT16","_variablesAirs$coolId7","_variablesAirs$coolId8","_variablesAirs$coolId9","_variablesAirs$coolId10","_batteryData$4","InvertColorsIcon","fanCool","_variablesAirs$pointT5","_variablesAirs$pointT6","newTemp","_variablesAirs$pointT7","handleUp","_variablesAirs$pointT8","_variablesAirs$pointT9","_variablesAirs$pointT10","handleDown","autoAir","offAir","useExtrationDevices","airs","setAirs","switches","setSwitches","sensorsDoor","setSensorsDoor","sensorsMotion","setSensorMotion","curtainSwitch","setCurtainSwitch","lock","setLock","vrf","setVrf","plugins","setPlugins","allSwitch","doorSensors","motionSensors","allPugin","_i$Category8","_i$Category9","_i$Category10","allVrf","_i$Category11","NewHSC","hsc","AccionTextoId","ModoId","setAccionTexto","stateMode","setStateMode","handleChangesOptions","translatingHeaderCardPlugin","translatingAccionTexto","useSocket","setSocketConection","Vrf","_variables$items9","_variables$items$2","setPoint","setSetpoint","setTem","offCool","setOffCool","fanCoolStatus","setFanCoolStatus","setCount","_ref4","_ref5","idModeUpdated","idFandUpdated","idTermosthatFanMode","_variables$items$","fan","fanModeChange","upSetpoint","downSetPoint","heatMode","Lock","stateLock","setStateLock","previousState","setPreviousState","idLock","handlerChanges","NewDevices","_data$getAllDevices7","_switches$concat","_switches$concat$conc","_data$getAllDevices8","_data$getAllDevices9","_data$getAllDevices9$","dataDevices","REACT_APP_SOCKET_DEVELOP_NEWCONTROLLER","TemperatureContainer","ModelEditController","_useProjectUser","_data$item5","_data$item6","_data$item7","_data$item8","_data$item9","_data$item10","_data$item11","_data$item12","handlerClose","projectIdAssociated","associatedProyect","updatedController","editName","setEditName","setEditProject","setErrors","isValid","firmware","EditOutlinedIcon","handlerEditName","placeContent","handlerEditIdProject","handlerEditProject","_data$item2","activeButton","updated","validateFields","nameError","projectIdError","_data$item3","_data$item4","updateControllerId","modalController","setModalController","handlerOpenAndCloseModalController","CtlEdit","InfoOutlinedIcon","num_rooms","num_devices","CREATE_VIRTUAL_CONTROLLER","VirtualControllerCreationButton","openSnack","setOpenSnack","snackMessage","setSnackMessage","snackSeverity","setSnackSeverity","nameController","setNameController","createVirtualController","CtlCreateVirtual","handleCloseSnack","PlaylistAddCircleIcon","Controllers","dataController","CtlVer","ControllerCard","MeasurerPhases","_data$getPhasesMeasur","_data$getPhasesMeasur2","_data$getPhasesMeasur3","_data$getPhasesMeasur4","_data$getPhasesMeasur5","_data$getPhasesMeasur6","_data$getPhasesMeasur7","_data$getPhasesMeasur8","rangeTable","setRangeTable","measurer","setDateRange","dayActual","setDayActual","getPhasesMeasure","temEndDate","handlerIonLabsMeasurerReport","id_parent","getPhasesMeasureReport","pdfMeasurePhases","measurersPhases","data_kwh","formatter","this","valueDecimals","typography","TabContext","borderBottom","TabList","Tab","TabPanel","data_watts","totals","_i$accumulated","_i$accumulated$initia","_i$accumulated2","_i$accumulated2$final","accumulated","total_range","total_by","finalValue","dailyAccumulated","HeavyDuty","setWatts","Watts","kwh","setKWH","KWH","handleOpenReportPhases","SemiCircleProgressBar","diameter","stroke","percentage","expand","other","transform","shortest","RecipeReviewCard","getMetterAndMetterHistories","dataMetters","EIFA","strokeWidth","arrow","VFA","CFA","FPA","EIFB","VFB","CFB","FPB","EIFC","VFC","CFC","FPC","actual","setActual","setAlias","valuesVariables","setValuesVariables","lecturaActual","toLocaleString","minimumFractionDigits","maximumFractionDigits","useGrouping","nameVariables","EI","EAE","ERR","ERE","EAR","handleNameValue","outerText","objecValue","l","futureDate","epoch1","epoch2","dateOne","dateTwo","sameYear","sameMonth","sameDay","DateMUI","dateMUI","setDateMUI","actualDate","setActualDate","Prev","prevDate","Next","GraphConsumptionDetail","setX","SelectContainer","selectMonth","GraphConsumptionDetailPerYear","setYear","currentYear","listedYears","TabGraphic","GraphConsumptionPerYear","GraphVoltage","getTwelveHourVoltage","startPoint","show_data","GraphAmps","getTwelveHourAmperage","GraphWatts","getTwelveHourWatting","TabGraphicVAV","celda","TableConsumptions","_data$getConsumptionH","_data$getConsumptionH2","_data$getConsumptionH3","dataConsumptionTable","dateMacrometers","dateMacrometersTwo","starTime","aling","getConsumptionHistory","totalBy","activeEnergy","body2","MeasurerDetails","seeGraphic","flexGrow","mx","mt","CardTotal","CardMacrometerA","CardMacrometerB","CardMacrometerC","setZoneP","setDateMacrometers","setDateMacrometersTwo","setValueDatepicker","openNewMeasurer","setOpenNewMeasurer","totalPhases","setTotalphases","MedMacVer","GraphKwhPhases","endTimeRango","getClampsMeasure","GraphMeasurerPhases","_data$getClampsMeasur","_data$getClampsMeasur2","zooming","mouseWheel","TabConsumptionPhases","_data$data$getClampsM","_data$data2","_data$data2$getClamps","_data$data2$getClamps2","NewMeasurerPhases","timeStart","setTimeStart","timeEnd","setTimeEnd","handleReport","_data$Room","_data$Room$Controller","_data$variables","_data$variables2","_data$variables3","_data$variables4","Room","MedRpfVer","MedRpfDes","MeasurerGeneral","_globalReactDateRange10","_globalReactDateRange11","_globalReactDateRange12","_globalReactDateRange13","_globalReactDateRange14","_globalReactDateRange15","_globalReactDateRange16","_globalReactDateRange17","_data$getMetersByProj","_data$getMetersByProj2","_data$getMetersByProj3","_data$getMetersByProj4","_data$getMetersByProj5","_data$getMetersByProj6","_date_last","_data$getMetersByProj7","_data$getMetersByProj8","_data$getMetersByProj9","_data$getMetersByProj10","_data$getMetersByProj11","_data$getMetersByProj12","_data$getMetersByProj13","_data$getMetersByProj14","_data$getMetersByProj15","_data$getMetersByProj16","_data$getMetersByProj17","_data$getMetersByProj18","_data$getMetersByProj19","_data$getMetersByProj20","_data$getMetersByProj21","_data$getMetersByProj22","_data$getMetersByProj23","measurer_data","setMeasurerData","temp","getMetersByProject","_globalReactDateRange9","handlerGeneralMeasurerReport","measuresGeneralPdf","pdfMeasureGeneral","_this$total","useHTML","_j$data","_i$y","_i$y2","ModalDateExcelIonLabs","setOpenModalExcel","dateInitial","setDateInitial","dateFinal","setDateFinal","baseXLSX","setBaseXLSX","Mutation","querySelector","showPicker","testRange","dateRangeOne","decodeXLSX","paddingRight","justifySelf","InputLabelProps","shrink","finDate","dateXlsx","dateRange","_resul$data","_resul$data$generateE","_resul$data2","_resul$data2$generate","generateExcelReport","excelFile","CardPhaseANew","MeasurerDataPhases","PAFA","FPFA","CardPhaseBNew","PAFB","FPFB","CardPhaseCNew","PAFC","FPFC","listMetter","unidad","CardTotalNew","_listMetter$currentIn","_listMetter$currentIn2","_listMetter$","_listMetter$2","_listMetter$currentIn3","_listMetter$currentIn4","measurerData","currentIndex","setCurrentIndex","dataVariables","setDataVariables","dataAliasNow","setDataAliasNow","prevAlias","setPrevAlias","nextAlias","setNextAlias","dataName","setDataName","variableAbre","setVariableAbre","ArrowDropDownCircleIcon","_listMetter$3","_listMetter$currentIn5","_listMetter$5","_listMetter$6","_listMetter$7","_listMetter$8","_listMetter2","_listMetter3","_listMetter4","_listMetter5","_listMetter$4","_listMetter$currentIn6","_listMetter","_listMetter$currentIn7","_listMetter$9","_listMetter$currentIn8","_listMetter$11","_listMetter$12","_listMetter$13","_listMetter$14","_listMetter7","_listMetter8","_listMetter9","_listMetter10","_listMetter$10","_listMetter$currentIn9","_listMetter6","_listMetter$currentIn10","NewGraphVoltage","starpoint","endpoint","ShowData","NewGraphWatts","_data$getTwelveHourWa","_data$getTwelveHourWa2","_data$getTwelveHourWa3","getTwelveHourWatt","NewGraphCurrent","_data$getTwelveHourCu","_data$getTwelveHourCu2","_data$getTwelveHourCu3","getTwelveHourCurrent","NewGraphPowerFactor","_data$getTwelveHourPo","_data$getTwelveHourPo2","_data$getTwelveHourPo3","getTwelveHourPowerFactor","NewGraphFrequency","_data$getFrequencyGra","_data$getFrequencyGra2","_data$getFrequencyGra3","getFrequencyGraphs","NewGraphArmonicCurrent","_data$getHarmonicCurr","_data$getHarmonicCurr2","_data$getHarmonicCurr3","getHarmonicCurrentGraphs","NewGraphArmonicVoltage","_data$getHarmonicVolt","_data$getHarmonicVolt2","_data$getHarmonicVolt3","getHarmonicVoltageGraphs","TabNewGraphicVAV","tabStyle","tabValue","borderTopLeftRadius","borderTopRightRadius","indicatorColor","NewGraphConsumptionDetail","_data$getConsumptionH4","_data$getConsumptionH5","_data$getConsumptionH6","_data$getConsumptionH7","grouping","shadow","NewGraphConsumptionDetailPerMonth","getHistoryTwo","fetchHistoryData","handleFetchData","NewGraphConsumptionDetailYear","TabNewGraphic","NewMeasurerDetails","_parseInt","_data$getMeterHistory","_parseInt2","_data$getMeterHistory2","_parseInt3","_data$getMeterHistory3","_data$getMeterHistory4","_data$getMeterHistory5","_data$getMeterHistory6","_data$getMeterHistory7","_data$getMeterHistory8","_data$getMeterHistory9","_data$getMeterHistory10","_data$getMeterHistory11","_data$getMeterHistory12","_data$getMeterHistory13","_data$getMeterHistory14","_data$getMeterHistory15","dato","startTimeProject","setDataTable","totalConsumptionTable","setTotalConsumptionTable","createMacrometerPdf","printRef2","formatedTotalPhasesWattsA","getMeterHistory","formatedTotalPhasesWattsB","formatedTotalPhasesWattsC","tlmKwh","TImKwh","totalPhasesWattsA","totalPhasesWattsB","totalPhasesWattsC","totalPhasesVoltageA","totalPhasesVoltageB","totalPhasesVoltageC","totalPhasesAmperageA","totalPhasesAmperageB","totalPhasesAmperageC","totalPhasesPowerFactorA","totalPhasesPowerFactorB","totalPhasesPowerFactorC","_rangeDatePicker$","_rangeDatePicker$2","fullYear","lectura","fase","voltaje","amperaje","factorP","percentageGraph","startTimeEpoch","finishTimeEpoch","_variables$image","pdfMacrometer","macrometerPdf","element2","canvas2","data2","ModalExcelMacrometer","loadingDate","setLoadingDate","getXlsx","_resul$data$getConsum","_resul$data$getConsum2","_resul$data2$getConsu","_resul$data2$getConsu2","getConsumptionReportFile","File","fileBase64","NewMacrometerCard","openMenu","setOpenMenu","openModalExcel","handlerOpenModalExcel","handleOpenMeasurer","handlerCloseMenu","CLIENT","Measurers","_data$getProjectByIdH9","_data$getProjectByIdH10","_data$getProjectByIdH11","_data$getProjectByIdH12","_data$getProjectByIdH13","_data$getProjectByIdH14","_data$getProjectByIdH15","setEvent","verifyMacromeasure","setVerifyMacromeasure","isReport","SetIsReport","measurerComponent","setMeasurerComponent","modelM5","setModelM5","modelHse","setModelHse","handleCloseOne","serials","flatMap","metter","dataCity","metterHistory","metterLoading","macrometerData","handleMacrometerData","_data$getMettersInPro3","_metterHistory$getMet","mappedMacrometerData","_mappedMacrometerData","_mappedMacrometerData2","CategoryId","saveData","modelM5d","modelHsed","_data","_data$getProjectByIdH4","_data$getProjectByIdH5","_data$getProjectByIdH6","MacroMeterCard","_data$getProjectByIdH7","_data$getProjectByIdH8","MainStepperContainer","Navbar","InstructionsAndSummaryContainer","InstructionsContainer","SummaryContainer","StepperStatusContainer","Info","ROUTER","Route","path","render","StyledStepper","StyledOptions","Stepper","steps","currentPath","setCurrentPath","validFirstVariables","validSecondVariables","pathName","handleChosenPath","Summary","installedMeters","HomeIcon","meter","ElectricMeterIcon","powerFactor","relationTc","maximumCurrent","StepperView","StepperViewMacrometer","CREATE_PIN_CODE","GET_SENT_PIN_CODE_REPORT","SEND_PIN_CODE_BY_EMAIL","ADD_RESTRICTION","GET_PIN_CODES","slotDropdownMenuProps","paper","ml","content","transformOrigin","MenuItemList","renderIcon","DropstartDropdown","anchorElement","setAnchorElement","slotProps","RangeCodesList","splitTo","splitFrom","getHourTo","getHourFrom","getYearTo","getDayTo","getMountTo","getYearFrom","getDayFrom","getMountFrom","LabelDaysCodeList","days","setLabels","HIDDEN_PIN_REGEX","TableListCodes","listCodes","handleOpenModal","handleAddRestriction","handleViewHistoryOfSentPasswords","handleViewSendCodeToPerson","nameFilter","setNameFilter","statusFitler","setStatusFilter","orderCodes","sort","restrictionLabel","handleChangeStatus","dropdownItems","IS_HIDDEN_PIN","pin","EventIcon","MailOutlineIcon","unshift","HistoryIcon","BlockIcon","EMPTY_STRING","EMAIL_REGEX","FULLNAME_REGEX","AddCode","setTypeMessage","setView","setDataCode","codesGlobal","codeName","setCodeName","codePin","setCodePin","setUserName","userEmail","setUserEmail","userNin","setUserNin","sendEmail","setSendEmail","showCodePin","setShowCodePin","createPinCode","handleToggle","setter","handleDefaultBehavior","handleInputBlur","handleInputKeyPress","keyCode","which","registerCodeInTheDoorLock","_process$env$REACT_AP","SECRET_KEY","CYPHER_PIN","CYPHER_NIN","pinMessageOption","getPinGenerationOption","offset","languages","validateForm","valid","newErrors","startsWith","endsWith","PasswordIcon","px","onBlur","minLength","maxLength","onPaste","FormHelperText","disableElevation","setRandomDigitsAsLockCode","random","setNinDigitsAsLockCode","VpnKeyIcon","FormControlLabel","control","userLocale","_localStorage$getItem","_navigator$languages","RangeRestriction","fromDate","toDate","handleChangeFromDate","handleChangeToDate","DateRangeIcon","py","LocalizationProvider","dateAdapter","AdapterDateFns","adapterLocale","esLocale","enLocale","MobileDateTimePicker","inputFormat","minDateTime","showToolbar","ampm","CustomRestriction","handleChangeDays","EventRepeatIcon","MobileTimePicker","minTime","pt","ToggleButtonGroup","ToggleButton","SelectType","handleClickType","paddingBottom","Divider","orientation","flexItem","Restriction","dataCode","refetchListCode","setType","setFromDate","setToDate","setDays","addRestriction","newDay","valideForm","viewType","goBack","LoadingDoorLock","initialFormData","SendCodeToPerson","setHistory","formData","setFormData","openSnackbar","setOpenSnackbar","sentPinHistory","sentEmails","acc","sentHistory","adapterEmailingsByUser","getSentPinCodeReport","nameValidationMessage","getFullNameValidationMessage","fullname","emailValidationMessage","getEmailValidationMessage","emailAddress","idNumberValidationMessage","getIdNumberValidationMessage","nationalIdentificationNumber","prepareAndSendEmail","person","ENCRYPTED_PIN","ENCRYPTED_NUIP","RECIPIENT_DATA_PREPARED","gutterBottom","borderStyle","mb","handleClickResend","ReplyIcon","dense","CalendarMonthIcon","HistoryOfSentPasswords","MuiToggleButton","styleOverrides","textTransform","msgStatus","stateLoading","setStateLoading","SuccessMessage","CheckCircleIcon","ErrorMessage","CancelIcon","ModalDoorLock","view","typeMessage","selectMessage","viewName","modalContentStorage","add","restriction","renderModalContent","DescriptionContainer","DescriptiontTitle","DescriptionText","PaginationContainer","warning","Pagination","next","labelPreviousButton","labelNextButton","previousButtonColor","nextButtonColor","updateMacroMeter","meterVariables","hideMetersIcons","handleMeter","_data$getNewMeters","existsMeter","getNewMeters","meters","_data$getNewMeters2","startIcon","NavigateBeforeRoundedIcon","NavigateNextRoundedIcon","projectIdStepper","description","ErrorMacrometerInstallation","MainContainerMacrometerVariables","CancelInstallationButtonContainer","MacrometerVariablesTitle","MacrometerVariablesSecondaryContainer","CancelInstallationButton","setOpenCancelInstallation","CancelOutlinedIcon","CancelInstallationModal","openCancelInstallation","handleCancelInstallation","CustomTabPanel","hidden","a11yProps","nameState","allMetersVariables","existMeters","setVaribles","validVariables","setValidVariables","inValidVariables","_meter$alias","_meter$relationTc","isInteger","Tabs","SwipeableViews","axis","onChangeIndex","_variables$index","_variables$index$alia","_variables$index2","_variables$index3","_variables$index3$rel","_variables$index4","_variables$index5","_variables$index6","_variables$index7","_variables$index8","_variables$index9","_variables$index10","dir","handlerMeterAlias","prevVariables","idx","handlerMeterTcRelation","variablesOperation","outcome","focused","readOnly","handlerMeterMaxCurrent","iddRole","setIddRole","setPrueba","totalsProjects","setTotalProjects","currentProjectPage","setCurrentProjectPage","filteredProjects","_project$name","_project$name$toLower","recordsIds","totalProjectPages","setPressedCreateButton","_project$name2","_project$name2$toLowe","preProjectPage","GesProjectVer","GesProjectCrear","handleOpenCreate","matchingProjects","_project$name3","_project$name3$toLowe","Country","State","City","handleOpenEdit","GesProjectDes","refetchTable","UsersManagements","setCodesGlobal","codes","setCodes","getPinCodes","Router_per_Components","prop","Redirect","ModalNavbar","TittleNavbar","h3","CloseButton","fadeIn","fadeOut","scaleIn","scaleOut","ModalBackground","ModalContent","isOpen","setRender","onAnimationEnd","ModalWrapper","ModalChangePassword","shakeVertical","WrapperIndication","Validations","WrapperInputsButton","animate","InputGroup","Input","Label","InputField","inputField","setInputField","prevInputField","ChangesPasswordForm","errorButton","setErrorButton","errorPetition","setErrorPetition","changePassword","validations","setValidations","currentPassword","uppercase","number","specialChar","equalPasswords","validationsOptions","passwordRequirements","objeto","propiedad","hasOwnProperty","colorSpan","newPass","userEdit","currentPass","newPassword","ConfirmPassword","confirmPass","prevValidations","validatePassword","classList","onMouseUp","remove","AccountMenu","setEditAlert","isModalOpen","setIsModalOpen","modalResetPass","setModalResetPass","showEditModifications","setNewShownModifications","logoutSession","handleModalClose","SyncLockIcon","logout","Logout","ModalProfile","ModalChangePasswordModal","handleModalCloseResetPass","ConfirmationDialog","update","valueProp","radioGroupRef","openAlert","setOpenAlert","menssage","setMenssage","errormess","setErrormess","setColor","errormessconf","setErrormessconf","colorconfirm","setColorconfirm","setMatch","emailConf","TransitionProps","onEntering","handleEntering","focus","browserLanguage","ModalChangePasswordRequired","textPassword","setTextPassword","textPasswordTwo","setTextPasswordTwo","setNewPassword","pass","storedValue","togglePasswordVisibility","togglePasswordVisibilityTwo","updatedValues","updatedValidations","validationColor","newPassConfirm","justifyC11ontent","Principal","setAlert","setReload","openSidebar","setOpenSidebar","localTime","toLocaleDateString","AddUser","PersonAddIcon","ConfirmationIcon","views","Dashboard","ForgotPassword","toggle","setToggle","errorEmail","setErrorEmail","forgot_img","submitEmail","send_Email","KeyboardReturnIcon","ResetPassword","passwords","setPasswords","openReponseAlert","setOpenResponseAlert","setResponse","error2","setError2","create_Reg_Password","handleChangePass","new_password","handleCloseResponse","reset_password","placeItems","newPasswordConfirm","_result$data","_result$data$create_R","_result$data2","_result$data2$create_","Confirmation","PasswordUpdated","Router_Per_View","BrowserRouter","App","i18next","use","initReactI18next","init","interpolation","escapeValue","resources","en","translation","es","authLink","setContext","_","authorization","REACT_APP_URI_DEVELOP","REACT_APP_URI_PRODUCTION","REACT_APP_URI_STAGING","REACT_APP_URI_PRODUCTION_NEW","UploadClient","createUploadLink","uri","global","ApolloClient","link","cache","InMemoryCache","ReactDOM","StrictMode","ApolloProvider","Providers","getElementById","AuthProvider","GesUserVer","GesUserCrear","GesUserEditar","GesUserDes","GesProjectEdit","GesDevices","GesDevicesVer","MedRdf","MedRmg","MedRmgVer","MedRmgDes","Mac","AreaVer","AreaRoa","AreaRpta","AreaRptaVer","AreaRpogVer","AreaRpogDes","AreaMed","AreaMedVer","AreaRpdfver","setPermissionsRoleUser","setDatePrint","openModalOcup","setOpenModalOcup","successfulAlert","setSuccessfulAlert","openMessage2","setOpenMessage2","setValidFirstVariables","setValidSecondVariables","confirmMettersExists","setConfirmMettersExists","tokenVrf","stateId","setStateId","projectid","setEditRole","enabledOrDisabledUser","setEnabledOrDisabledUser","isOpenCalendarCustom","dateNextTemp","setDateNextTemp","dateBackTemp","setDateBackTemp","nameUser","setNameUser","lastNameUser","setlastNameUser","setPhone","numberID","setNumberID","profilePicture","setprofilePicture","setUserLogin","roll","setRoll","setPasswordTwo","zoneP","valueDatepicker","datePerDay","setDatePerDay","activeNextBack","AbilityContext","createContextualCan","Consumer"],"mappings":"6vHAAe,MAA0B,iC,QCElC,MAAMA,EAAQC,GAAG;;;;;;;;;;;EAaXC,EAAkBD,GAAG;;;;EAMrBE,EAAiBF,GAAG;;;;EAMpBG,EAASH,GAAG;;;sFC3BlBI,eAAeC,EAAYC,EAAOC,GACvC,MAAMC,GAAS,IAAIC,aAAcC,OAAOH,GAClCI,QAAeC,OAAOC,OAAOC,OAAOC,OAAO,UAAWP,GACtDQ,EAAKJ,OAAOC,OAAOI,gBAAgB,IAAIC,WAAW,KAClDC,EAAM,CAAEC,KAAM,UAAWJ,GAAIA,EAAIK,UAAW,KAC5CC,QAAYV,OAAOC,OAAOC,OAAOS,UACrC,MACAZ,EACAQ,GACA,EACA,CAAC,YAEGK,GAAU,IAAIf,aAAcC,OAAOJ,GACnCmB,QAAiBb,OAAOC,OAAOC,OAAOY,QAAQP,EAAKG,EAAKE,GAExDG,EADUC,MAAMC,KAAK,IAAIX,WAAWO,IACpBK,KAAKC,GAASC,OAAOC,aAAaF,KAAOG,KAAK,IAKpE,OAJcN,MAAMC,KAAKb,GACtBc,KAAKK,IAAO,KAAOA,EAAEC,SAAS,KAAKC,OAAO,KAC1CH,KAAK,IAEO,IADEI,KAAKX,EAExB,CAEOvB,eAAemC,EAAYC,EAAejC,GAC/C,MAAMC,GAAS,IAAIC,aAAcC,OAAOH,GAClCI,QAAeC,OAAOC,OAAOC,OAAOC,OAAO,UAAWP,IAErDiC,EAAOC,GAAYF,EAAcG,MAAM,KAOxCxB,EAAM,CAAEC,KAAM,UAAWJ,GANpB,IAAIE,WACbuB,EAAMG,MAAM,gBAAgBd,KAAI,SAAUe,GACxC,OAAOC,SAASD,EAAG,GACrB,KAGqCxB,UAAW,KAC5CC,QAAYV,OAAOC,OAAOC,OAAOS,UACrC,MACAZ,EACAQ,GACA,EACA,CAAC,YAGGQ,EAAQoB,KAAKL,GACbM,EAAU,IAAI9B,WAClBS,EAAMiB,MAAM,WAAWd,KAAI,SAAUmB,GACnC,OAAOA,EAAGC,WAAW,EACvB,KAGIC,QAAwBvC,OAAOC,OAAOC,OAAOsC,QACjDjC,EACAG,EACA0B,GAIF,OAFuB,IAAIK,aAAcC,OAAOH,EAGlD,C,+DCjDA,MAAMI,EAAU,CAAC,aAAW,WAIb,SAASC,EAAeC,GACrC,MAAM,MAAEC,EAAK,SAAEC,EAAQ,WAAEC,EAAU,UAAEC,EAAS,cAAEC,EAAa,OAAEC,EAAM,MAAEC,GACrEP,GACKQ,EAAUC,GAAeC,WAAe,OACxCC,EAAgBC,GAAqBF,WAAe,MACrDG,EAAOC,QAAQN,IACdO,EAAcC,GAAmBN,aAExCA,aAAgB,KAEd,MAAMO,EAAiBC,aAAaC,QAAQ,YAE5C,GAAIF,EACFD,EAAgBC,OACX,CAEL,MAAMG,EAAeC,UAAUC,SAASpC,MAAM,KAAK,GAC9B,OAAjBkC,GACFJ,EAAgBI,GAChBF,aAAaK,QAAQ,WAAYH,KAEjCJ,EAAgB,MAChBE,aAAaK,QAAQ,WAAY,MAErC,IACC,IA+BH,OACEC,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACG,IAAU,CACT,aAAW,OACXC,GAAG,cACH,gBAAef,EAAO,iBAAcgB,EACpC,gBAAehB,EAAO,YAASgB,EAC/B,gBAAc,OACdC,QArCeC,IACnBtB,EAAYsB,EAAMC,cAAc,EAqC5BC,GAAI,CACFC,OAAQ,OACRhC,SAAU,OACVD,MAAOA,EACPC,SAAUA,EACViC,IAAK,MACLC,aAAc/B,EACdC,OAAQA,EACRC,MAAOA,GACPmB,SAAA,CAEFW,cAACC,IAAU,CAACL,GAAI,CAAEM,OAAQpC,EAAYI,MAAOH,KAC5CO,IA7Be6B,EA6BgBtB,aAAaC,QAAQ,YA5BnC,OAAlBqB,EACK,UACoB,OAAlBA,EACF,kBADF,GA0BgE,OAGrEH,cAACI,IAAI,CACHb,GAAG,YACHc,cAAe,CACb,kBAAmB,eAErBlC,SAAUA,EACVK,KAAMA,EACN8B,QA3CcC,KAClBnC,EAAY,KAAK,EA2CboC,WAAY,CACVC,MAAO,CACLC,UAAWC,IACXzC,MAAO,SAETmB,SAED5B,EAAQzB,KAAK4E,GACZZ,cAACa,IAAQ,CAEPC,SAAUF,IAAWtC,EACrBmB,QAASA,IApEQmB,KACzBrC,EAAkBqC,GAGlB,MAAM7B,EAA0B,eAAX6B,EAAuB,KAAO,KAGnD/B,aAAaK,QAAQ,WAAYH,GAGjCjE,OAAOiG,SAASC,QAAQ,EA0DDC,CAAkBL,GAAQvB,SAExCuB,GAJIA,UAjDOT,KA2DxB,C,+BCjGA,SAASe,EAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CA4Re2D,MA3RA3D,IACb,MAAM,SAAE4D,EAAQ,aAAEC,EAAY,OAAEC,GAAWC,eACrC,KAAEC,EAAI,QAAEC,EAAO,MAAEC,GAAUC,qBAAWC,MACrCC,EAAcC,GAAmBC,oBAAS,IAC1CC,EAAUC,GAAeF,qBAC1BG,EAAUC,eACTC,GAASC,YAAYvI,IACrBwI,EAAMC,GAAYR,mBAAS,CAChCP,KAAM,GACNlH,SAAU,MAEL+D,EAAMmE,GAAWtE,IAAM6D,UAAS,IAChCU,EAAOC,GAAYxE,IAAM6D,UAAS,GAgDzC7D,IAAMyE,WAAU,MACdxI,iBACI,MAAMyI,EAhDZ,WACE,MACMC,GADS,IAAIC,KACGC,YAKtB,MAAO,CACHC,WAHa,qCAAqCC,KAAKpE,UAAUqE,UAAUC,eAGpD,SAAW,MAClCC,GAAIP,EAAOO,GAAGjI,MAAQ,UACtBkI,UAAWR,EAAOO,GAAGE,SAAW,UAChCC,QAASV,EAAOU,QAAQpI,KACxBqI,eAAgBX,EAAOU,QAAQD,QAErC,CAkCyBG,GACbC,QAjCZvJ,iBACE,IACI,MAAMwJ,QAAiBC,MAAM,+CACvBC,QAAaF,EAASG,OAC5B,MAAO,CACHC,GAAIF,EAAKE,GACTnD,SAAU,CACNoD,QAASH,EAAKG,QACdC,OAAQJ,EAAKI,OACbC,KAAML,EAAKK,KACXC,YAAaN,EAAKO,KAG9B,CAAE,MAAOC,GAEL,OADAC,QAAQD,MAAM,4CAA0CA,GACjD,IACX,CACF,CAgB2BE,GACfC,QAfZrK,iBACE,IACI,MAAMsK,QAAWC,IAAcC,OAE/B,aADqBF,EAAGG,OACVC,SAClB,CAAE,MAAOR,GAEL,OADAC,QAAQD,MAAM,gCAAiCA,GACxC,IACX,CACF,CAMgCS,GAEpBC,EAAM,IAAIC,KACVC,EAAY,IAAID,KAAKD,EAAIG,UAAuC,IAA1BH,EAAII,qBAE1CC,EAAc,CAChBC,SAAUb,EACVxB,WAAYJ,EAAWI,WACvBI,GAAIR,EAAWQ,GACfC,UAAWT,EAAWS,UACtBE,QAASX,EAAWW,QACpBC,eAAgBZ,EAAWY,eAC3BO,IAAU,OAANL,QAAM,IAANA,OAAM,EAANA,EAAQK,KAAM,UAClBnD,UAAgB,OAAN8C,QAAM,IAANA,OAAM,EAANA,EAAQ9C,WAAY,CAAC,EAC/B0E,aAAcL,EACdM,SAAUC,KAAKC,iBAAiBC,kBAAkBC,UAGtD1D,EAAYmD,GAERZ,GACA9F,aAAaK,QAAQ,oBAAqByF,GAG9C9F,aAAaK,QAAQ,cAAe6G,KAAKC,UAAUT,GACvD,CAEAU,EAAW,GACV,IAEH,MAAMxL,EAAWyL,qCAEX,EAAEC,GAAMC,cAwBRC,EAAiB/L,UACrB,MAAMgM,QAAsB/L,EAAYkI,EAAKhI,SAAUA,GACjD8L,QAAoBhM,EAAYwL,KAAKC,UAAU7D,GAAW1H,GAEhE,GAAIgI,EAAKd,MAAQc,EAAKhI,SAClB,IACI8H,EAAM,CACFiE,UAAW,CACP7E,KAAMc,EAAKd,KACXlH,SAAU6L,EACVG,OAAQF,KAGfG,MAAMC,IACCA,IAEA9H,aAAaK,QAAQ,QAASyH,EAAM3C,KAAK1C,MAAMsF,OAC/C/H,aAAaK,QAAQ,KAAMyH,EAAM3C,KAAK1C,MAAM/B,IAC5CV,aAAaK,QAAQ,QAASyH,EAAM3C,KAAK1C,MAAMuF,OAC/ChI,aAAaK,QAAQ,mBAAoByH,EAAM3C,KAAK1C,MAAMwF,UAC1DjI,aAAaK,QAAQ,OAAQ,GAAGyH,EAAM3C,KAAK1C,MAAMhG,QAAQqL,EAAM3C,KAAK1C,MAAMyF,aAG1ElI,aAAaK,QAAQ,cAAe6G,KAAKC,UAAU7D,IAEnDP,EAAQ+E,EAAM3C,KAAK1C,MAAMhG,MACzB+G,EAAQ2E,KAAK,iBACjB,IAEHC,OAAOC,IAlDhBvE,GAAQ,EAmDiB,GAErB,CAAE,MAAOuE,GACLzC,QAAQD,MAAM,mCAAiC0C,EACnD,MApDJrE,GAAS,EAuDT,EAGIsE,EAAezH,IACnB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MACrBc,EAAOoE,EAAM0H,OAAO9L,KACpBb,EAAWiF,EAAM0H,OAAO3M,SAC9BiI,EAAS,IACJD,EACH,CAACnH,GAAOd,EACR,CAACC,GAAWD,GACZ,EAGE6M,EAAkB3H,IACJ,UAAdA,EAAMlE,KACR6K,GACF,EAGF,OACErG,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,OAAKmI,UAAU,YAAWjI,SAAA,CACxBW,cAACuH,IAAQ,CAAC/I,KAAMA,EAAMgJ,iBAAkB,IAAMlH,QA3EhCC,CAACb,EAAO+H,KACX,cAAXA,GAIJ9E,GAAQ,EAAM,EAsEyDtD,SACjEW,cAACkB,EAAK,CAACwG,SAAS,QAAOrI,SAAE8G,EAAE,8BAE7BnG,cAACuH,IAAQ,CAAC/I,KAAMoE,EAAO4E,iBAAkB,IAAMlH,QAtEhCqH,CAACjI,EAAO+H,KACZ,cAAXA,GAGJ5E,GAAS,EAAM,EAkE0DxD,SACnEW,cAACkB,EAAK,CAACwG,SAAS,UAASrI,SAAE8G,EAAE,gCAE/BnG,cAAA,OAAKsH,UAAU,QAAOjI,SACpBW,cAAA,iBACEsH,UAAU,QACVM,IAAI,oEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAGZ7I,eAAA,OAAKmI,UAAU,QAAOjI,SAAA,CACpBW,cAAA,OAAKsH,UAAU,mBAAkBjI,SAC/BW,cAAA,OACEsH,UAAU,QACVM,IAAKK,EACLC,IAAI,qBACJhK,MAAM,MACNgC,OAAO,UAGXF,cAAA,OAAKsH,UAAU,oBAAmBjI,SAChCW,cAAA,QAAMsH,UAAU,SAAQjI,SAAE8G,EAAE,0BAE9BhH,eAAA,QACEmI,UAAU,oBAAmBjI,SAAA,CAE7BW,cAAA,SACEsH,UAAU,aACVhM,KAAK,OACL6M,IAAK5G,EAAS,CAAE6G,UAAU,IAC1BC,YAAalC,EAAE,yBACfmC,SAAUnB,EACVoB,WAAYlB,IAEb5F,EAAOnG,MAAQ0E,cAAA,QAAMsH,UAAU,GAAEjI,SAAC,2BACnCW,cAAA,SACAb,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCW,cAAA,SACEsH,UAAU,kBACVhM,KAAK,WACL6M,IAAK5G,EAAS,CAAE6G,UAAU,IAC1BC,YAAalC,EAAE,6BACfqC,KAAMxG,EAAe,OAAS,WAC9BsG,SAAUnB,EACVoB,WAAYlB,IAEK,KAAlB5E,EAAKhI,SACJuF,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAACV,IAAU,CAACG,QAASA,IAAMwC,GAAiBD,GAAc3C,SACvD2C,EAAehC,cAACyI,IAAiB,IAAMzI,cAAC0I,IAAc,QAI3D1I,cAAAZ,WAAA,OAIHqC,EAAOnG,MAAQ0E,cAAA,QAAMsH,UAAU,GAAEjI,SAAC,2BACnCW,cAAA,SACAA,cAAA,SACEP,QAAS4G,EACTiB,UAAU,cACVkB,KAAK,SACLhO,MAAO2L,EAAE,kCAIbnG,cAAA,OAAKsH,UAAU,0BAAyBjI,SACtCF,eAAA,KACEmI,UAAU,gBACVqB,OAAO,SACPC,KAAK,qCAAoCvJ,SAAA,CAExC,IACA8G,EAAE,8BAIPnG,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAC6I,IAAI,CAACC,GAAG,mBAAkBzJ,SAAE8G,EAAE,kCAEjCnG,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAACtC,EAAc,CACbE,MAAO,QACPC,SAAU,OACVC,WAAY,OACZC,UAAW,OACXE,OAAQ,OACRD,cAAe,kBAKnB,ECjTK,MAA0B,oC,OCM1B,SAAS+K,IACpB,OACI/I,cAAA,OAAKsH,UAAU,6BAA4BjI,SAavCW,cAAA,WAuBZ,C,0ICpCA,MAAMgJ,GAAYC,aAAW,CAC3BC,KAAM,CACJrJ,OAAQ,KAEVsJ,SAAU,CACRC,QAAS,MACTC,UAAW,KACXC,WAAY,OACZC,aAAc,QAILC,GAAmBA,KAC9B,MAAM,EAAErD,GAAMC,cACRqD,EAAUT,KAChB,OACE7J,eAACuK,IAAQ,CAACpC,UAAWmC,EAAQN,SAAS9J,SAAA,CACpCW,cAAC2J,IAAY,CAAAtK,SACXW,cAAC4J,IAA0B,MAE7B5J,cAAC6J,IAAY,CAACC,QAAS3D,EAAE,wDAChB,E,yBCpBf,MAAM6C,GAAYC,aAAW,CAC3BC,KAAM,CACJrJ,OAAQ,KAEVsJ,SAAU,CACRC,QAAS,MACTC,UAAW,KACXC,WAAY,OACZC,aAAc,QAiBHQ,OAbYA,KACzB,MAAMN,EAAUT,MACV,EAAE7C,GAAMC,eACR,oBAAE4D,GAAwBlI,qBAAWC,KAC3C,OACE5C,eAACuK,IAAQ,CAACpC,UAAWmC,EAAQN,SAAS9J,SAAA,CACpCW,cAAC2J,IAAY,CAAAtK,SACXW,cAACiK,KAAkB,MAErBjK,cAAC6J,IAAY,CAACC,QAAS3D,EAAE,sDAChB,E,qBCvBf,MAAM6C,GAAYC,aAAW,CAC3BC,KAAM,CACJrJ,OAAQ,KAEVsJ,SAAU,CACRC,QAAS,MACTC,UAAW,KACXC,WAAY,OACZC,aAAc,QAgBHW,OAZeA,KAC5B,MAAM,EAAE/D,GAAMC,cACRqD,EAAUT,KAChB,OACE7J,eAACuK,IAAQ,CAACpC,UAAWmC,EAAQN,SAAS9J,SAAA,CACpCW,cAAC2J,IAAY,CAAAtK,SACXW,cAACmK,KAAsB,MAEzBnK,cAAC6J,IAAY,CAACC,QAAS3D,EAAE,qDAChB,E,qBCnBf,MAAM6C,GAAYC,aAAW,CAC3BC,KAAM,CACJrJ,OAAQ,KAEVsJ,SAAU,CACRC,QAAS,MACTC,UAAW,KACXC,WAAY,OACZC,aAAc,QAkBHa,OAdkBA,KAC/B,MAAM,EAAEjE,GAAMC,cACRqD,EAAUT,KAChB,OACE7J,eAACuK,IAAQ,CAACpC,UAAWmC,EAAQN,SAAS9J,SAAA,CACpCW,cAAC2J,IAAY,CAAAtK,SACXW,cAACqK,KAAa,MAEhBrK,cAAC6J,IAAY,CACXC,QAAS3D,EAAE,yDAEJ,ECdf,MAAM6C,GAAYC,aAAW,CAC3BC,KAAM,CACJrJ,OAAQ,KAEVsJ,SAAU,CACRC,QAAS,MACTC,UAAW,KACXC,WAAY,MACZC,aAAc,QAoHHe,OAhHEA,KAAO,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EACrB,MAAM,EAAExE,GAAMC,eAEP5H,EAAMmE,GAAWtE,IAAM6D,UAAS,IACjC,oBAAE8H,GAAwBlI,qBAAWC,KACrC0H,EAAUT,KAKV4B,EAAeA,KACnB/L,aAAagM,WAAW,KAAK,EAG/B,OACE7K,cAAA,OAAAX,SACsB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCQ,OACrC5L,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACuK,IAAQ,CAACsB,QAAM,EAACvL,QAXLwL,KAClBtI,GAASnE,EAAK,EAU8Ba,SAAA,CACpCW,cAAC2J,IAAY,CAAAtK,SACXW,cAACkL,IAAY,MAEflL,cAAC6J,IAAY,CACXvC,UAAU,WACVwC,QAAS3D,EAAE,6CAEZ3H,EAAOwB,cAACmL,IAAU,IAAMnL,cAACoL,IAAU,OAElB,OAAnBpB,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCa,QACrCrL,cAACsL,IAAQ,CAACC,GAAI/M,EAAMgN,QAAQ,OAAOC,eAAa,EAAApM,SAC9CW,cAAC0L,IAAI,CAACC,UAAU,MAAMrE,UAAWmC,EAAQN,SAAS9J,SAChDW,cAAC6I,IAAI,CAACC,GAAI,wBAAyBxB,UAAU,gBAAejI,SAC1DW,cAAC0J,IAAQ,CACPsB,QAAM,EACNvL,QAASmL,EACTtD,UAAW,IACoB,0BAA7BxM,OAAOiG,SAAS6K,SACZ,YACA,cACHvM,SAEHW,cAAC6L,GAAU,YAKjB,KAEgB,OAAnB7B,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EAAsCqB,WACrC9L,cAACsL,IAAQ,CAACC,GAAI/M,EAAMgN,QAAQ,OAAOC,eAAa,EAAApM,SAC9CW,cAAC0L,IAAI,CAACC,UAAU,MAAMrE,UAAWmC,EAAQN,SAAS9J,SAChDW,cAAC6I,IAAI,CAACC,GAAI,yBAA0BxB,UAAU,gBAAejI,SAC3DW,cAAC0J,IAAQ,CACPsB,QAAM,EACNvL,QAASmL,EACTtD,UAAW,IACoB,2BAA7BxM,OAAOiG,SAAS6K,SACZ,YACA,cACHvM,SAEHW,cAAC+L,GAAiB,YAKxB,KAEgB,OAAnB/B,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,GAApCA,EAAsCsB,OACrChM,cAACsL,IAAQ,CAACC,GAAI/M,EAAMgN,QAAQ,OAAOC,eAAa,EAAApM,SAC9CW,cAAC0L,IAAI,CAACC,UAAU,MAAMrE,UAAWmC,EAAQN,SAAS9J,SAChDW,cAAC6I,IAAI,CAACC,GAAI,mBAAoBxB,UAAU,gBAAejI,SACrDW,cAAC0J,IAAQ,CACPsB,QAAM,EACNvL,QAASmL,EACTtD,UAAW,IACoB,qBAA7BxM,OAAOiG,SAAS6K,SACZ,YACA,cACHvM,SAEHW,cAACkK,GAAc,YAKrB,KAEgB,OAAnBF,QAAmB,IAAnBA,GAAoC,QAAjBW,EAAnBX,EAAqBc,uBAAe,IAAAH,GAApCA,EAAsCsB,QACrCjM,cAACsL,IAAQ,CAACC,GAAI/M,EAAMgN,QAAQ,OAAOC,eAAa,EAAApM,SAC9CW,cAAC0L,IAAI,CAACC,UAAU,MAAMrE,UAAWmC,EAAQN,SAAS9J,SAChDW,cAAC6I,IAAI,CAACC,GAAI,yBAA0BxB,UAAU,gBAAejI,SAC3DW,cAAC0J,IAAQ,CACPsB,QAAM,EACNvL,QAASmL,EACTtD,UAAW,IACoB,2BAA7BxM,OAAOiG,SAAS6K,SACZ,YACA,cACHvM,SAEHW,cAACwJ,GAAgB,YAKvB,QAEJ,MACA,E,oFCxIV,MAAM0C,GAAO,CACXC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,OAGDC,GAAS,CACbC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,OAGMC,GAAgB,CAC3B,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,OAOOC,GAAiBA,CAACC,EAAQtH,IACYA,EAAzCsH,EAA2C,0BAAhC,4BAuBRC,GAA6BC,IACxC,IAAKlP,QAAQkP,GAAU,MAAO,wBAE9B,MAA4B,MADQ,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAASnH,UAAUoH,QAEvC,sBAEA,uBACT,EAGWC,GAAwBA,CAACC,EAAeC,IAC3C,IAAOA,EAAiBD,EAAiB,IAAO,EAG7CE,GAAuBA,CAACC,EAAIC,KACvC,MAAMC,EAAU,IAAOD,EAAMD,EAAM,IACnC,OAAe,GAAXE,GAAiBA,EACZA,EAAU,GAAKA,GAAW,GAAW,mBACrCA,EAAU,IAAMA,GAAW,GAAW,mBACtCA,EAAU,IAAMA,GAAW,GAAW,mBACtCA,EAAU,IAAMA,GAAW,IAAY,yBAA3C,EAJgC,iBAI8B,EAsGxDC,GAAkBpK,GACtBA,EAAKhI,KAAKqS,GAAMC,OAAOD,EAAEE,KAAIC,QAAO,CAACC,EAAGpS,IAAMoS,EAAIpS,GAAG,GAGjDqS,GAAkBA,CAACC,EAAIC,KAClC,GAAIA,EAAWC,OAAS,EAAG,CACzB,MAAMC,EAAM,IAAI3J,KAAKwJ,GACrB,MAAO,GAAGG,EAAIC,UAAY,KACxBxB,GAAcuB,EAAIE,WAAa,MAC7BF,EAAIG,eACV,CACE,OAAO,IAAI9J,KAAKmJ,OAAOK,IAAKrS,WAAW4S,UAAU,GAAI,GACvD,EAGWC,GAAoBnL,IAAU,IAADoL,EACxC,OAAW,OAAJpL,QAAI,IAAJA,GAC8D,QAD1DoL,EAAJpL,EACHhI,KAAKqS,IAAC,IAAAgB,EAAAC,EAAA,OAAM,OAADjB,QAAC,IAADA,GAAO,QAANgB,EAADhB,EAAGrK,YAAI,IAAAqL,GAAkB,QAAlBC,EAAPD,EAASrT,KAAKqS,GAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGE,WAAE,IAAAe,OAAxB,EAADA,EAA2Bd,QAAO,CAACC,EAAGpS,IAAMoS,EAAIpS,GAAG,EAAE,WAAC,IAAA+S,OAD1D,EAAJA,EAEHZ,QAAO,CAACC,EAAGpS,IAAMoS,EAAIpS,GAAG,EAAE,EAOnBkT,GAAiBvL,GACrBA,EAAKwL,QAAQnB,IAAC,IAAAoB,EAAA,MAAkC,MAA5B,OAADpB,QAAC,IAADA,GAAY,QAAXoB,EAADpB,EAAG7H,iBAAS,IAAAiJ,OAAX,EAADA,EAAcC,eAAuB,OAADrB,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAQ,IACtEd,OA6EQe,GAAsBC,GAGlB,IADFvB,OAAOuB,GADF,KAqBPC,GAAmCC,IAAW,IAADC,EAAAC,EAAAC,EAAAC,EACxD,MAAMC,EAAsB,OAALL,QAAK,IAALA,GAAiB,QAAZC,EAALD,EAAOzT,kBAAU,IAAA0T,OAAZ,EAALA,EAAmBd,UAAU,EAAG,GACjDmB,EAAuB,OAALN,QAAK,IAALA,GAAiB,QAAZE,EAALF,EAAOzT,kBAAU,IAAA2T,OAAZ,EAALA,EAAmBf,UAAU,EAAG,GAClDoB,EAAiB,OAALP,QAAK,IAALA,GAAiB,QAAZG,EAALH,EAAOzT,kBAAU,IAAA4T,OAAZ,EAALA,EAAmBhB,UAAU,EAAG,IAC5CqB,EAAkB,OAALR,QAAK,IAALA,GAAiB,QAAZI,EAALJ,EAAOzT,kBAAU,IAAA6T,OAAZ,EAALA,EAAmBjB,UAAU,GAAI,IAEpD,MAAO,GAAGhD,GAAKkE,MAAmBE,MAAc5D,GAAO2D,MAAoBE,GAAY,EAG5EC,GAAgCT,IAAW,IAADU,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACrD,MAAMlC,EAAyB,QAAXK,EAAGV,EAAM,UAAE,IAAAU,GAAW,QAAXC,EAARD,EAAU8B,iBAAS,IAAA7B,GAAY,QAAZC,EAAnBD,EAAqBpU,kBAAU,IAAAqU,OAAvB,EAARA,EAAiCzB,UAAU,EAAG,GAC/DmB,EAA0B,QAAXO,EAAGb,EAAM,UAAE,IAAAa,GAAW,QAAXC,EAARD,EAAU2B,iBAAS,IAAA1B,GAAY,QAAZC,EAAnBD,EAAqBvU,kBAAU,IAAAwU,OAAvB,EAARA,EAAiC5B,UAAU,EAAG,GAChEoB,EAAoB,QAAXS,EAAGhB,EAAM,UAAE,IAAAgB,GAAW,QAAXC,EAARD,EAAUwB,iBAAS,IAAAvB,GAAY,QAAZC,EAAnBD,EAAqB1U,kBAAU,IAAA2U,OAAvB,EAARA,EAAiC/B,UAAU,EAAG,IAC1DqB,EAAqB,QAAXW,EAAGnB,EAAM,UAAE,IAAAmB,GAAW,QAAXC,EAARD,EAAUqB,iBAAS,IAAApB,GAAY,QAAZC,EAAnBD,EAAqB7U,kBAAU,IAAA8U,OAAvB,EAARA,EAAiClC,UAAU,GAAI,IAC5DsD,EAAuB,QAAXnB,EAAGtB,EAAM,UAAE,IAAAsB,GAAS,QAATC,EAARD,EAAUoB,eAAO,IAAAnB,GAAY,QAAZC,EAAjBD,EAAmBhV,kBAAU,IAAAiV,OAArB,EAARA,EAA+BrC,UAAU,EAAG,GAC3DwD,EAAwB,QAAXlB,EAAGzB,EAAM,UAAE,IAAAyB,GAAS,QAATC,EAARD,EAAUiB,eAAO,IAAAhB,GAAY,QAAZC,EAAjBD,EAAmBnV,kBAAU,IAAAoV,OAArB,EAARA,EAA+BxC,UAAU,EAAG,GAC5DyD,EAAkB,QAAXhB,EAAG5B,EAAM,UAAE,IAAA4B,GAAS,QAATC,EAARD,EAAUc,eAAO,IAAAb,GAAY,QAAZC,EAAjBD,EAAmBtV,kBAAU,IAAAuV,OAArB,EAARA,EAA+B3C,UAAU,EAAG,IACtD0D,EAAmB,QAAXd,EAAG/B,EAAM,UAAE,IAAA+B,GAAS,QAATC,EAARD,EAAUW,eAAO,IAAAV,GAAY,QAAZC,EAAjBD,EAAmBzV,kBAAU,IAAA0V,OAArB,EAARA,EAA+B9C,UAAU,GAAI,IACxD2D,GACqC,QAAzCZ,EAAA,IAAI9M,KAAa,QAAT+M,EAACnC,EAAM,UAAE,IAAAmC,GAAW,QAAXC,EAARD,EAAUK,iBAAS,IAAAJ,OAAX,EAARA,EAAqB7V,mBAAW,IAAA2V,OAAA,EAAzCA,EAA2C5M,aACJ,QADa+M,EACpD,IAAIjN,KAAa,QAATkN,EAACtC,EAAM,UAAE,IAAAsC,GAAS,QAATC,EAARD,EAAUI,eAAO,IAAAH,OAAT,EAARA,EAAmBhW,mBAAW,IAAA8V,OAAA,EAAvCA,EAAyC/M,WACrC,GACA,MAAM6G,GAAKsG,MAAiBG,MAAYjG,GAAOgG,MAAkBE,IACvE,MAAO,GAAG1G,GAAKkE,MAAmBE,MAAc5D,GAAO2D,MAAoBE,KAAcsC,GAAW,EAOzFC,GAAa/C,IACxB,MAAMgD,EAAO,IAAI5N,KAIjB,MAHiB,GAAG4N,EAAK9D,iBACvB8D,EAAK/D,WAAa,KAChB+D,EAAKhE,cACQgB,EAAMA,EAAMlB,OAAS,IACpCkB,EAAMiD,MACCjD,GAEAA,CACT,EAGWkD,GAAmBC,IAAgB,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC7C,MAAMC,EAAa,IAAIzO,KACR,QAAbgO,EAAAD,EAAW,UAAE,IAAAC,GAAbA,EAAeZ,UACE,QADOa,EACpBF,EAAW,UAAE,IAAAE,GAAsB,QAAtBC,EAAbD,EAAeb,UAAUjW,kBAAU,IAAA+W,OAAtB,EAAbA,EAAqCnE,UAAU,EAAG,IACxC,OAAVgE,QAAU,IAAVA,GAAsB,QAAZI,EAAVJ,EAAY5W,kBAAU,IAAAgX,OAAZ,EAAVA,EAAwBpE,UAAU,EAAG,KAErC2E,EAAW,IAAI1O,KACN,QAAboO,EAAAL,EAAW,UAAE,IAAAK,GAAbA,EAAed,QACE,QADKe,EAClBN,EAAW,UAAE,IAAAM,GAAS,QAATC,EAAbD,EAAef,eAAO,IAAAgB,GAAY,QAAZC,EAAtBD,EAAwBnX,kBAAU,IAAAoX,OAArB,EAAbA,EAAoCxE,UAAU,EAAG,IACvC,OAAVgE,QAAU,IAAVA,GAAsB,QAAZS,EAAVT,EAAY5W,kBAAU,IAAAqX,OAAZ,EAAVA,EAAwBzE,UAAU,EAAG,KAErClM,EAAS,GACf,KAAO6Q,EAASxO,UAAYuO,EAAWvO,WACrCrC,EAAOgE,KACL,GAAG4M,EAAW3E,iBACZ2E,EAAW5E,WAAa,KACtB4E,EAAW7E,aAEjB6E,EAAWE,QAAQF,EAAW7E,UAAY,GAK5C,OAHA/L,EAAOgE,KACL,GAAG6M,EAAS5E,iBAAiB4E,EAAS7E,WAAa,KAAK6E,EAAS9E,aAE5D/L,CAAM,EAgBF+Q,GAA6BlE,IACxC,MAAMrV,EAAQwC,SAAU,IAAMgX,WAAWnE,GAAU,MACnD,OAAaoE,KAATzZ,GACAA,EAAQ,GAAKA,GAAS,GADD,UAGdA,EAAQ,IAAMA,GAAS,GACzB,UACEA,EAAQ,IAAMA,GAAS,GACzB,UACEA,EAAQ,IAAMA,GAAS,GACzB,UAEA,SACT,EAGW0Z,GAAgBC,GACjB,OAAHA,QAAG,IAAHA,OAAG,EAAHA,EAAKC,QAAQ,GAGTC,GAAmBA,CAACC,EAAO5O,IAC/B4O,EAAMzF,OAAS,EAAI,GAAiB,GAAXnJ,EAGrB6O,GAAuBD,GAC3BA,EAAMzF,OAAS,EAAI,WAAa,WAsC5B2F,GAAoBA,CAACjV,EAAI4G,IAC1B,GAAN5G,EAAgB,SACR4G,EAAE,kDAGHsO,GAAkBA,CAACC,EAASC,EAAMxO,IACzCuO,EAAQE,IACH,GAAGzO,EACR,iGACIwO,EAAKC,OACTF,EAAQG,WACH,GAAG1O,EACR,2GACIwO,EAAKG,aACTJ,EAAQK,KACH,GAAG5O,EACR,kGACIwO,EAAKI,QACTL,EAAQM,SACH,GAAG7O,EACR,qGACIwO,EAAKM,WACTP,EAAQQ,QACH,GAAG/O,EACR,uGACIwO,EAAKQ,aAHb,EA2BWC,GAAyBA,CAAClC,EAAYpN,KAAc,IAADuP,EAC9D,IACIC,GAAkB,OAAVpC,QAAU,IAAVA,GAAsB,QAAZmC,EAAVnC,EAAY5W,kBAAU,IAAA+Y,OAAZ,EAAVA,EAAwBnG,UAAU,EAAG,KAAM,eACvD,OACE,IAAI/J,KAAKmQ,GAAOjQ,UAHQ,KAGIrI,SAAS8I,EAAU,GAAyB,EAI/DyP,GAAyBA,CAACrC,EAAYpN,KAAc,IAAD0P,EAC9D,IAAIC,GACQ,OAAVvC,QAAU,IAAVA,GAAsB,QAAZsC,EAAVtC,EAAY5W,kBAAU,IAAAkZ,OAAZ,EAAVA,EAAwBtG,UAAU,EAAG,KAAM,eAAiBpJ,EAC9D,OAAO,IAAIX,KAAKsQ,GAAmBpQ,SAAS,EAGjCqQ,GAAgBla,IAC3B,GAAkB,iBAAPA,EAAiB,CAC1B,MAAMiT,EAAIjT,EAAIqB,MAAM,KACpB,MAAO,GAAGyR,OAAOG,EAAE,OAAOlB,GAAce,OAAOG,EAAE,QAAQA,EAAE,IAC7D,CACE,OAAO,IAAItJ,KAAKmJ,OAAO9S,IAAMc,WAAW4S,UAAU,GAAI,GACxD,EAGWyG,GAAc3R,GAClBA,EACJhI,KAAKqS,GAAMA,EAAEE,IACbC,QAAO,CAACC,EAAGpS,IAAMoS,EAAIpS,IACrB+X,QAAQ,GAGAwB,GAAmBjH,IAC9B,MAAMG,EAAM,IAAI3J,KAAKwJ,GACfkH,EAAQtI,GAAcuB,EAAIE,WAAa,GAC7C,GAAK6G,EAGL,MAAO,GAAG/G,EAAIC,aAAa8G,KAAS/G,EAAIG,eAAe,EAqF5C6G,GAA0BA,CAACC,EAAO5P,KAC7C,GAAc,KAAV4P,GAA0B,OAAVA,EAClB,MAAO,CACLC,GAAI,UACJC,KAAM9P,EAAE,sDACRlI,OAAQ,UACRL,MAAO,WAyCX,MAvCe,CACb,EAAG,CACDoY,GAAI,UACJC,KAAM9P,EAAE,mDACRlI,OAAQ,UACRL,MAAO,WAET,GAAI,CACFoY,GAAI,UACJC,KAAM9P,EAAE,+CACRlI,OAAQ,GACRL,MAAO,QAET,GAAI,CACFoY,GAAI,UACJC,KAAM9P,EAAE,8CACRlI,OAAQ,GACRL,MAAO,QAET,GAAI,CACFoY,GAAI,UACJC,KAAM9P,EAAE,kDACRlI,OAAQ,GACRL,MAAO,QAET,IAAK,CACHoY,GAAI,UACJC,KAAM9P,EAAE,iDACRlI,OAAQ,GACRL,MAAO,QAET,IAAK,CACHoY,GAAI,UACJC,KAAM9P,EAAE,gDACRlI,OAAQ,GACRL,MAAO,SAIG0Q,OAAOyH,GAAO,EAGjBG,GAA0BA,KACrC,MAAMC,EAAW,IAAIhR,KACfiR,EAAOD,EAASlH,cAAc3S,WAC9B+Z,EAAMF,EAASpH,UAAUzS,WACzBga,GAAQH,EAASpH,UAAY,GAAGzS,WAChCia,EAAYJ,EAASnH,WAAa,EAClCwH,EAAS,GAAGJ,KAAQG,KAAaF,aACjCI,EAAU,GAAGL,KAAQG,KAAaD,aAClCI,EAAKvR,KAAKwR,MAAMH,GAEhBI,GADMzR,KAAKwR,MAAMF,GACJzZ,SAAS0Z,EAAGpa,WAAW4S,UAAU,EAAG,MAEjD2H,EAAeD,EAAa,MAClC,MAAO,CACLE,UAAWF,EACXG,QAJeH,EAAa,MAK5BR,KAAMpZ,SAASoZ,GACfY,WAAYH,EACZhB,MAAOU,EACR,EAkCUU,GAAmBA,CAAClB,EAAO5P,KACtC,MAAM+Q,EAAS,CACb,CACE1b,IAAK,EACLF,KAAM6K,EAAE,mDACR1F,MAAO,sBAET,CACEjF,IAAK,GACLF,KAAM6K,EAAE,+CACR1F,MAAO,sBAET,CACEjF,IAAK,GACLF,KAAM6K,EAAE,8CACR1F,MAAO,wBAET,CACEjF,IAAK,GACLF,KAAM6K,EAAE,kDACR1F,MAAO,qBAET,CACEjF,IAAK,IACLF,KAAM6K,EAAE,iDACR1F,MAAO,0BAET,CACEjF,IAAK,IACLF,KAAM6K,EAAE,gDACR1F,MAAO,2BAGX,OAAa,IAATsV,GAAwB,IAATA,EACVmB,EAAO1H,QAAQnB,GAAe,IAATA,EAAE7S,MAAWgU,QAAQnB,GAAe,IAATA,EAAE7S,MAGpD0b,EAAO1H,QAAQnB,GAAMA,EAAE7S,KAAOua,IAAOvG,QAAQnB,GAAe,IAATA,EAAE7S,KAAU,EAkD3D2b,GAA6BC,KACnCA,GAGEA,EAAUC,MAAM5Q,GAAuC,MAA5BA,EAAOD,UAAU8Q,SAGxCC,GAAmBvT,IAAU,IAADwT,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACvC,MAAMpK,EAAc,OAAJ3J,QAAI,IAAJA,GAAU,QAANwT,EAAJxT,EAAMA,YAAI,IAAAwT,GAAQ,QAARC,EAAVD,EAAYQ,cAAM,IAAAP,OAAd,EAAJA,EAAoBQ,MACjC5J,IAAC,IAAA6J,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAC0B,MAAxB,OAADnK,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,OAAV,EAADA,EAAaQ,YACX,OAADrK,QAAC,IAADA,OAAC,EAADA,EAAGsB,WAC2B,IAA5B,OAADtB,QAAC,IAADA,GAAW,QAAV8J,EAAD9J,EAAGoK,gBAAQ,IAAAN,OAAV,EAADA,EAAaQ,eACiB,IAA5B,OAADtK,QAAC,IAADA,GAAW,QAAV+J,EAAD/J,EAAGoK,gBAAQ,IAAAL,OAAV,EAADA,EAAaO,eACgB,IAA5B,OAADtK,QAAC,IAADA,GAAW,QAAVgK,EAADhK,EAAGoK,gBAAQ,IAAAJ,OAAV,EAADA,EAAaM,eACgB,IAA5B,OAADtK,QAAC,IAADA,GAAW,QAAViK,EAADjK,EAAGoK,gBAAQ,IAAAH,OAAV,EAADA,EAAaK,gBACS,eAAxB,OAADtK,QAAC,IAADA,GAAW,QAAVkK,EAADlK,EAAGoK,gBAAQ,IAAAF,OAAV,EAADA,EAAaG,YACX,OAADrK,QAAC,IAADA,OAAC,EAADA,EAAGsB,UAC0B,eAA5B,OAADtB,QAAC,IAADA,GAAW,QAAVmK,EAADnK,EAAGoK,gBAAQ,IAAAD,OAAV,EAADA,EAAaG,aAA6B,IAGhD,IAAKhL,EAAS,MAAO,qBAOlB,IAADiL,EAAAC,EA6BAC,EAAAC,EAnCF,KACkC,MAAxB,OAAPpL,QAAO,IAAPA,GAAiB,QAAV+J,EAAP/J,EAAS8K,gBAAQ,IAAAf,OAAV,EAAPA,EAAmBgB,WACa,eAAxB,OAAP/K,QAAO,IAAPA,GAAiB,QAAVgK,EAAPhK,EAAS8K,gBAAQ,IAAAd,OAAV,EAAPA,EAAmBe,WACd,OAAP/K,QAAO,IAAPA,MAASgC,SAC2B,IAA5B,OAAPhC,QAAO,IAAPA,GAAiB,QAAViK,EAAPjK,EAAS8K,gBAAQ,IAAAb,OAAV,EAAPA,EAAmBe,eACiB,eAA5B,OAAPhL,QAAO,IAAPA,GAAiB,QAAVkK,EAAPlK,EAAS8K,gBAAQ,IAAAZ,OAAV,EAAPA,EAAmBc,eAErB,MAAuC,UAA5B,OAAPhL,QAAO,IAAPA,GAAkB,QAAXiL,EAAPjL,EAASnH,iBAAS,IAAAoS,OAAX,EAAPA,EAAoBI,aACf,sBACqC,YAA5B,OAAPrL,QAAO,IAAPA,GAAkB,QAAXkL,EAAPlL,EAASnH,iBAAS,IAAAqS,OAAX,EAAPA,EAAoBG,aACtB,wBAEA,qBAEJ,GACwB,KAA7BrL,EAAQ8K,SAASC,UACjB/K,EAAQgC,UAC0B,GAAjChC,EAAQ8K,SAASE,cAAsD,GAAjChL,EAAQ8K,SAASE,cACxD,CACA,GAAiC,KAAtB,OAAPhL,QAAO,IAAPA,OAAO,EAAPA,EAASnH,UAAUoH,SAA8C,QAAvB,OAAPD,QAAO,IAAPA,OAAO,EAAPA,EAASnH,UAAUoH,QACxD,MAAO,0BAST,MARqB,CACnB,EAAG,qBACH,GAAI,qBACJ,GAAI,uBACJ,GAAI,oBACJ,IAAK,yBACL,IAAK,0BAEoB,OAAPD,QAAO,IAAPA,OAAO,EAAPA,EAASnH,UAAUoH,OACzC,CACA,OACiC,MAAxB,OAAPD,QAAO,IAAPA,GAAiB,QAAVmK,EAAPnK,EAAS8K,gBAAQ,IAAAX,OAAV,EAAPA,EAAmBY,WACZ,OAAP/K,QAAO,IAAPA,KAASgC,SAC0B,IAA5B,OAAPhC,QAAO,IAAPA,GAAiB,QAAVoK,EAAPpK,EAAS8K,gBAAQ,IAAAV,OAAV,EAAPA,EAAmBY,cAEoB,UAA5B,OAAPhL,QAAO,IAAPA,GAAkB,QAAXmL,EAAPnL,EAASnH,iBAAS,IAAAsS,OAAX,EAAPA,EAAoBE,aACf,sBACqC,YAA5B,OAAPrL,QAAO,IAAPA,GAAkB,QAAXoL,EAAPpL,EAASnH,iBAAS,IAAAuS,OAAX,EAAPA,EAAoBC,aACtB,wBAEA,0BAVX,CAYA,EAGK,SAASC,GAAiBze,GAC/B,IAAIwI,EACJ,OAAIxI,IACO,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOqU,QAAS,EAClB7L,EAAUhG,SAASxC,GAAS,GAAM,IACzBA,EAAMqU,OAAS,EACxB7L,EAAUhG,SAASxC,GAAS,IAAO,IAC1BA,EAAMqU,OAAS,EACxB7L,EAAUhG,SAASxC,GAAS,IAAQ,IAC3BA,EAAMqU,OAAS,EACxB7L,EAAUhG,SAASxC,GAAS,IAAS,IAC5BA,EAAMqU,OAAS,EACxB7L,EAAUhG,SAASxC,GAAS,IAAU,IAC7BA,EAAMqU,OAAS,EACxB7L,EAAUhG,SAASxC,GAAS,IAAW,IAC9BA,EAAMqU,OAAS,EACxB7L,EAAUhG,SAASxC,GAAS,IAAY,IAC/BA,EAAMqU,OAAS,EACxB7L,EAAUhG,SAASxC,GAAS,IAAa,IAChCA,EAAMqU,OAAS,KACxB7L,EAAUhG,SAASxC,GAAS,IAAc,KAErCwI,GAEU,CAErB,CAEO,MAsCMkW,GAA2BC,IACtC,IAAIC,EAAeva,aAAaC,QAAQqa,GACxCta,aAAawa,QACbxa,aAAaK,QAAQia,EAAiBC,EAAa,EAGxCE,GAAqBA,KAChC,MAAMvY,EAAWwY,cACjB,GAAIxY,EAAU,CACZ,MAAMyY,EAAczY,EAAS6K,SAAS6N,QAAQ,KAE9C,OADoB1Y,EAAS6K,SAASsD,UAAUsK,EAAc,EAEhE,G,cCz8BK,MAAME,GAA2Bxf,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2E9Byf,IAtC+Bzf,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCZA,GAAG;;;;GAMzB0f,GAAiC1f,GAAG;;;;EAMpC2f,GAAoB3f,GAAG;;;;;;;;;;;;EAcvB4f,GAAc5f,GAAG;;;;;;;;;;;;;EAejB6f,GAAiB7f,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECpGpB8f,GAAiBA,KAAO,IAADC,EAAA1P,EAAAC,EAAAC,EAClC,MAAM,EAAEtE,GAAMC,eAER,QAAE8T,EAAO,SAAEC,EAAQ,oBAAEnQ,GAAwBlI,qBAAWC,MACvDqY,EAAcC,GAAmBhc,IAAM6D,UAAS,GACjDoY,EAAchM,OAAOzP,aAAaC,QAAQ,QAE1C,KAAEkF,EAAI,QAAEuW,EAAO,MAAE/V,GAAUgW,aAASd,GAA0B,CAClElT,UAAW,CAAEiU,UAAWH,EAAa/a,GAAI+a,GACzCI,YAAa,WACbC,6BAA6B,IAOzBC,IAHA,OAAJ5W,QAAI,IAAJA,GAA4B,QAAxBiW,EAAJjW,EAAM6W,oBAAoB,UAAE,IAAAZ,OAAxB,EAAJA,EAA8Ba,QAAQjM,QAAS,IAC3C,OAAJ7K,QAAI,IAAJA,KAAM+W,uBAAuBlM,QAEJtP,IACzBV,aAAaK,QAAQ,KAAMK,EAAG,GAEhC,IAAIyb,EAAWnc,aAAaC,QAAQ,MAChCiC,EAAWwY,cACf,MAAM0B,EAAapc,aAAaC,QAAQ,cACxC,OACEkB,cAAAZ,WAAA,CAAAC,SACsB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC2Q,KACrC/b,eAAA,OAAAE,SAAA,CACEW,cAAC6I,IAAI,CAACC,GAAI,gBAAiBxB,UAAU,gBAAejI,SAClDF,eAACuK,IAAQ,CACPsB,QAAM,EACNvL,QAASA,KACP4a,GAAiBD,GACjBe,eAAetQ,WAAW,kBAC1BsQ,eAAetQ,WAAW,kBAAkB,EAE9CvD,UAAW,IACa,kBAAtBvG,EAAS6K,SACL,YACA,cACHvM,SAAA,CAEF,IACDW,cAAC2J,IAAY,CAACrC,UAAU,kBAAiBjI,SACvCW,cAACqK,KAAa,MAEhBrK,cAAC6J,IAAY,CACXC,QAAS3D,EAAE,kDAIM,kBAAtBpF,EAAS6K,UAA6C,OAAboP,EACxC7b,eAAA,OAAAE,SAAA,CACEW,cAAC6I,IAAI,CAACC,GAAI,cAAgBkS,EAAU1T,UAAU,gBAAejI,SAC3DF,eAACuK,IAAQ,CAACsB,QAAM,EAACvL,QAASA,IAAMmb,EAAkBI,GAAU3b,SAAA,CAC1DW,cAAC2J,IAAY,CAACrC,UAAU,iBAAgBjI,SACtCW,cAAA,OAAK4H,IAAKqT,EAAY/S,IAAI,MAAMhK,MAAO,GAAIgC,OAAQ,OAErDF,cAAC6J,IAAY,CACXC,QAAS,GAAGjL,aAAaC,QAAQ,iBACjCwI,UAAU,iCAIhBtH,cAACsL,IAAQ,CAACC,IAAI,EAAMC,QAAQ,OAAOC,eAAa,EAAApM,SAC9CF,eAACuM,IAAI,CAACC,UAAU,MAAMyP,gBAAc,EAAA/b,SAAA,CACd,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsC6Q,MACvCxc,aAAaC,QAAQ,MACnBkB,cAAC6I,IAAI,CACHC,GAAI,cAAgBkS,EACpB1T,UAAU,gBAAejI,SAEzBF,eAACuK,IAAQ,CACPsB,QAAM,EACNvL,QAASA,IAAMmb,EAAkBI,GACjC1T,UAAW,IACTvG,EAAS6K,WAAa,cAAgBoP,EAClC,YACA,cACH3b,SAAA,CAEHW,cAAC2J,IAAY,CAACrC,UAAU,yBAAwBjI,SAC9CW,cAACsb,KAAY,MAEftb,cAAC6J,IAAY,CACXC,QAAS3D,EAAE,wCACXmB,UAAU,uBAId,KACgB,OAAnB0C,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EAAsC8Q,IACrCvb,cAAC6I,IAAI,CACHC,GAAI,oBAAsBkS,EAC1B1T,UAAU,gBAAejI,SAEzBF,eAACuK,IAAQ,CACPsB,QAAM,EACNvL,QAASA,IAAMmb,EAAkBI,GACjC1T,UAAW,IACTvG,EAAS6K,WAAa,oBAAsBoP,EACxC,YACA,cACH3b,SAAA,CAEHW,cAAC2J,IAAY,CAACrC,UAAU,yBAAwBjI,SAC9CW,cAACwb,KAAiB,MAEpBxb,cAAC6J,IAAY,CACXC,QAAS3D,EACP,qDAKN,KACgB,OAAnB6D,QAAmB,IAAnBA,KAAqBc,gBAAgB2Q,IACpCzb,cAAC6I,IAAI,CACHC,GAAI,kBAAoBkS,EACxB1T,UAAU,gBAAejI,SAEzBF,eAACuK,IAAQ,CACPsB,QAAM,EACNvL,QAASA,IAAMmb,EAAkBI,GACjC1T,UAAW,IACTvG,EAAS6K,WAAa,kBAAoBoP,EACtC,YACA,cACH3b,SAAA,CAEHW,cAAC2J,IAAY,CAACrC,UAAU,yBAAwBjI,SAC9CW,cAAC0b,KAAS,MAEZ1b,cAAC6J,IAAY,CACXC,QAAS3D,EACP,mDAKN,aAKVnG,cAAAZ,WAAA,OAGF,MACH,EC5HQuc,OA3BCC,IAAqB,IAApB,WAAEC,GAAYD,EAC7B,MAAM,EAAEzV,GAAMC,cAEd,OACEjH,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCW,cAAA,OAAKsH,UAAU,eAAcjI,SAC3BW,cAAA,OAAKsH,UAAU,mBAAmBM,IAAKkU,EAAM5T,IAAI,YAEnDlI,cAAA,OAAAX,SACgC,kBAA7BvE,OAAOiG,SAAS6K,SACf5L,cAAC+I,EAAY,IAEb/I,cAAAZ,WAAA,MAGJY,cAAA,OAAKsH,UAAU,eAAcjI,SAC3BW,cAAA,QAAMsH,UAAU,SAAQjI,SACrB8G,EAAE,2CAIPnG,cAACga,GAAc,CAAO6B,eAEtB7b,cAACsK,GAAQ,MACL,E,OCpCK,SAASyR,KAQtB,OACE/b,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLub,YAAa,OACb1S,WAAY,OACZD,UAAW,QACXnL,MAAO,SAEToJ,UAAU,QACVM,IAAI,2EACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,KAIhB,CC3BO,MAAMiU,GAAuB/hB,GAAG;;;;;;;;;EAiB1BgiB,IANehiB,GAAG;;;;EAMOA,GAAG;;;;GAM5BiiB,GAAuBjiB,GAAG;;;;;;;;;;;;;;EAgB1BkiB,GAA0BliB,GAAG;;;;iECnC1C,MAAM8O,GAAYC,cAAYoT,IAAK,CACjCC,UAAW,CACTC,WAAY,SACZC,UAAW,SACXC,QAAS,OACTC,cAAe,MACfC,eAAgB,qBAIPC,GAAgBC,aAAOC,KAAPD,EAAejB,IAAA,IAAC,MAAES,GAAOT,EAAA,MAAM,CAC1D,sCAAuC,CACrChe,MAAO,UACP,UAAW,CACTmf,gBAAiBC,aAAM,UAAWX,EAAMY,QAAQC,OAAOC,gBAG3D,yDAA0D,CACxDJ,gBAAiB,WAEpB,IAEc,SAASK,GAAkBC,GAAiC,IAAhC,KAAErZ,EAAI,MAAE+R,EAAK,aAAEuH,GAAcD,EACtE,MAAM,gBAAEvS,GAAoBhJ,qBAAWC,KACjC0H,EAAUT,KAEhB,OACE7J,eAAA,OAAKmI,UAAWmC,EAAQ6S,UAAUjd,SAAA,CAC/B2E,EAAKuZ,MACNvd,cAAC4c,GAAa,CACZnd,QAASA,IAAM6d,EAAatZ,EAAK1I,MACjCkiB,QAAS1S,EAAgB9G,EAAK1I,MAAM+D,SAEnC,QAIT,C,wBCnCA,MAAM2J,GAAYC,cAAYwU,IAAI,CAAQ,KAE3B,SAASC,GAAiB9B,GAAiC,IAAD+B,EAAA,IAA/B,KAAE3Z,EAAI,MAAE+R,EAAK,aAAEuH,GAAc1B,EACrD5S,KAAhB,MAEM,gBACJ8B,EAAe,oBACf8S,EAAmB,iBACnBC,EAAgB,oBAChBC,GACEhc,qBAAWC,KAEf,OACE5C,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAC+d,KAAO,CAACC,MAAOha,EAAKuZ,MAAMle,SACzBF,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BW,cAACie,KAAU,CAAC5c,QAAQ,UAAU6c,QAAM,EAAA7e,SACjC2E,EAAKuZ,QAERvd,cAAC4c,GAAa,CACZnd,QAASA,IAAM6d,EAAatZ,EAAK1I,MACjCkiB,QAAS1S,EAAgB9G,EAAK1I,aAInCya,EAAM/R,EAAK1I,QACC,QADIqiB,EACf3Z,EAAKkZ,cAAM,IAAAS,OAAA,EAAXA,EAAa3hB,KAAI,CAACqS,EAAG7S,IACnBwE,cAAC+d,KAAO,CAACC,MAAO3P,EAAEkP,MAAMle,SACtBF,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAACie,KAAU,CAAC5c,QAAQ,UAAU6c,QAAM,EAAA7e,SACjCgP,EAAEkP,QAGLvd,cAAC4c,GAAa,CACZnd,QAASA,IAAM6d,EAAajP,EAAE/S,MAC9BkiB,QAAS1S,EAAgBuD,EAAE/S,kBAO3C,C,cCzCe,SAAS6iB,GAAkBvC,GAAiC,IAAD+B,EAAAS,EAAA,IAA/B,KAAEpa,EAAI,aAAEsZ,EAAY,MAAEvH,GAAO6F,EACtE,MAAM,gBAAE9Q,GAAoBhJ,qBAAWC,KAEvC,OACE/B,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,UAASjI,SAAA,CACtBW,cAAC+d,KAAO,CAACC,MAAOha,EAAKuZ,MAAMle,SACzBF,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAACie,KAAU,CAAC5c,QAAQ,UAAU6c,QAAM,EAAA7e,SACjC2E,EAAKuZ,QAGRvd,cAAC8c,KAAM,CACLrd,QAASA,IACP6d,EAAatZ,EAAK1I,MAEpBkiB,QAAS1S,EAAgB9G,EAAK1I,aAInCya,EAAM/R,EAAK1I,QACC,QADIqiB,EACf3Z,EAAKkZ,cAAM,IAAAS,OAAA,EAAXA,EAAa3hB,KAAKqiB,GAChBre,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCW,cAAC0d,GAAiB,CAChB1Z,KAAMqa,EACNf,aAAcA,EACdvH,MAAOA,SAIdA,EAAM/R,EAAK1I,QACI,QADC8iB,EACfpa,EAAK2H,iBAAS,IAAAyS,OAAA,EAAdA,EAAgBpiB,KAAKsiB,GACnBte,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCW,cAAC0d,GAAiB,CAChB1Z,KAAMsa,EACNhB,aAAcA,EACdvH,MAAOA,aAOvB,CC7CA,MAAMwI,GAAa1B,aAAOC,KAAPD,EAAejB,IAAA,IAAC,MAAES,GAAOT,EAAA,MAAM,CAChD,sCAAuC,CACrChe,MAAO,0BACP,UAAW,CACTmf,gBAAiBC,aAAM,0BAA2BX,EAAMY,QAAQC,OAAOC,gBAG3E,yDAA0D,CACxDJ,gBAAiB,2BAEpB,IA4CcyB,OA1CsBnB,IAAyC,IAAxC,MAAEE,EAAK,KAAEjiB,EAAI,OAAE4hB,EAAM,UAAEvR,GAAW0R,EACtE,MAAM,gBAAEvS,EAAe,oBAAE8S,GAAwB9b,qBAAWC,KAEtDub,EAAgBhiB,IACpBsiB,EAAoB,IACf9S,EACH,CAACxP,IAAQwP,EAAgBxP,IACzB,EAGJ,OACE6D,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAU,SAAQjI,SAAA,CACpBke,EACDvd,cAACue,GAAU,CACT9e,QAASA,IAAM6d,EAAahiB,GAC5BkiB,QAAS1S,EAAgBxP,QAI7B6D,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAC/ByL,EAAgBxP,KACT,OAAN4hB,QAAM,IAANA,OAAM,EAANA,EAAQlhB,KAAKqS,GACXrO,cAACod,GAAkB,CACjBpZ,KAAMqK,EACNiP,aAAcA,EACdvH,MAAOjL,OAIZA,EAAgBxP,KACN,OAATqQ,QAAS,IAATA,OAAS,EAATA,EAAW3P,KAAKsiB,GACdte,cAACme,GAAkB,CACjBna,KAAMsa,EACNhB,aAAcA,EACdvH,MAAOjL,YAId,E,yCC7CP,MAAM9B,GAAYC,cAAYoT,IAAK,CACjCoC,SAAU,CACRhC,QAAS,OACTve,MAAO,OACPqL,aAAc,QAEhBmV,UAAW,CACTjC,QAAS,OACTE,eAAgB,gBAChB9c,OAAQ,MACR3B,MAAO,QAETygB,QAAS,CACPlC,QAAS,OACTE,eAAgB,SAChBze,MAAO,QAET0gB,OAAQ,CACNxd,UAAW,EACXlD,MAAO,MACP6B,aAAc,QAEhB8e,YAAa,CACXpC,QAAS,OACTC,cAAe,SACfC,eAAgB,iBAElBmC,MAAO,CACLrC,QAAS,OACTM,gBAAiB,UACjB3T,QAAS,OACTrJ,aAAc,OACdF,OAAQ,OAEVme,MAAO,CACLvB,QAAS,OACTsC,WAAY,IACZxC,WAAY,cA+EDyC,OA3EapD,IAOrB,IAPsB,WAC3BqD,EAAU,KACV3jB,EAAI,MACJiiB,EAAK,OACLL,EAAM,UACNvR,EAAS,KACT3H,GACD4X,EACC,MAAMnS,EAAUT,MACTkW,EAAaC,GAAkB9gB,IAAM6D,UAAS,IAC9Ckd,EAAUC,GAAehhB,IAAM6D,UAAS,IACzC,gBAAE4I,EAAe,oBAAE8S,EAAmB,WAAE0B,EAAU,SAAEC,GACxDzd,qBAAWC,KAab,OACE/B,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAKsH,UAAWmC,EAAQiV,UAAUrf,SAChCW,cAAA,OAAKsH,UAAWmC,EAAQkV,QAAQtf,SAC9BF,eAACqgB,KAAS,CACRlX,SAjBWgV,KACnB+B,GAAaD,EAAS,EAiBd9X,UAAWmC,EAAQmV,OACnBQ,UAAU,EAAK/f,SAAA,CAEfW,cAACyf,KAAgB,CACf7hB,MAAM,SACN8hB,WAAY1f,cAAC2f,KAAc,IAC3B,gBAAc,mBACdpgB,GAAG,kBACHK,GAAI,CACFmd,gBAAiB,0BACjB7c,OAAQ,MACRqJ,aAAc,QACdqW,qBAAsB,QACtBC,uBAAwB,SACxBxgB,SAEFF,eAAA,OAAKmI,UAAWmC,EAAQuU,MAAM3e,SAAA,CAC5BW,cAAC8f,KAAQ,CACPxX,SAhCYyX,IAC1B,MAAMvlB,EAAQulB,EAAE3Y,OAAOoW,QACvBI,EAAoB,IACf9S,EACH,CAACxP,GAAOd,GACR,EA4BYc,KAAMA,EACNkiB,QAAS1S,EAAgB9G,EAAK1I,QAE/BiiB,EAAMyC,mBAIXhgB,cAACigB,KAAgB,CAAA5gB,SACdyL,EAAgBxP,GACfqQ,EAAU3P,KAAI,CAACqS,EAAG7S,IAChBwE,cAAA,OAAKsH,UAAWmC,EAAQqV,MAAMzf,SAC5BW,cAACwe,GAA4B,IAAenQ,EAAG0H,OAAK,GAAjBva,OAIvCwE,cAAAZ,WAAA,cAMT,E,mGC5GP,MAAM4J,GAAYC,cAAYoT,IAAK,CACjC6D,eAAgB,CACdzD,QAAS,OACTE,eAAgB,iBAElBwD,cAAe,CACb1D,QAAS,OACTE,eAAgB,SAChByD,aAAc,UAEhB3B,SAAU,CACRpV,UAAW,MACXoT,QAAS,OACTE,eAAgB,SAChBJ,WAAY,UAEd8D,UAAW,CACTniB,MAAO,QAEToiB,OAAQ,CACN7D,QAAS,OACTF,WAAY,SACZre,MAAO,YAIEqiB,GAAY3E,IAAwB,IAAD4E,EAAA,IAAtB,QAAEC,EAAO,KAAEzc,GAAM4X,EACzC,MAAM,kBACJ8E,EAAiB,OACjBC,EAAM,gBACN7V,EAAe,oBACf8S,EAAmB,iBACnBgD,EAAgB,QAChBC,EAAO,WACPC,EAAU,WACVxB,EAAU,cACVyB,EAAa,yBACbC,EAAwB,mBACxBC,EAAkB,sBAClBC,GACEpf,qBAAWC,MAERvD,EAAMmE,GAAWT,oBAAS,GAE3BuH,EAAUT,KAaVmY,EAAoBA,KACxBJ,GAAc,GACdnD,EAAoB8C,GACpB/d,GAAQ,EAAM,EASVye,EAA8BA,KAClCJ,GAAyB,EAAK,EAGhC,SAASK,IACP,MAAMC,EAAc,OAAJtd,QAAI,IAAJA,OAAI,EAAJA,EAAMiU,MAAM5J,GAAMA,EAAE9O,KAAOohB,IAG3C,IAF2B,OAAPW,QAAO,IAAPA,OAAO,EAAPA,EAAShmB,QAETulB,EAClB,OAAO,EAIP,OADE9a,KAAKC,UAAU8E,KAAqB/E,KAAKC,UAAUib,EAGzD,CAEA,OACEjhB,cAAAZ,WAAA,CAAAC,SACEF,eAACoiB,KAAM,CAACC,YAAU,EAAChjB,KAAM8gB,EAAYhf,QAASA,IAAM6gB,IAAoB9hB,SAAA,CACtEW,cAACyhB,KAAM,CAAC7hB,GAAI,CAAEmd,gBAAiB,UAAW7c,OAAQ,OAAQb,SACxDF,eAAA,OAAKmI,UAAWmC,EAAQyW,eAAe7gB,SAAA,CACrCW,cAACV,IAAU,CACTM,GAAI,CACF1B,MAAO,OACPgC,OAAQ,OACRuc,QAAS,OAETE,eAAgB,SAChB/e,MAAO,QACPyB,SAEFW,cAAC0hB,KAAiB,CAChBjiB,QAASA,IAAM0hB,IACfvhB,GAAI,CAAE1B,MAAO,YAGjB8B,cAACie,KAAU,CACT3W,UAAWmC,EAAQkY,UACnBtgB,QAAS,KACTzB,GAAI,CAAEyJ,UAAW,SAAUhK,SAE1BuhB,IAGH5gB,cAACV,IAAU,CACTM,GAAI,CAAE1B,MAAO,OAAQgC,OAAQ,QAC7B0hB,SAAUP,IACV5hB,QAAS2hB,EAA4B/hB,SAErCW,cAAC6hB,KAAgB,CACfva,WACe,IAAb+Z,IACI,0BACA,sBAENzhB,GAAI,CAAE1B,MAAO,OAAQgC,OAAQ,OAC7BT,QAAS2hB,WAMjBjiB,eAAC2iB,KAAS,CACRC,SAAS,KACTza,UAAWmC,EAAQ0W,cACnB7f,QAASA,IAAM6gB,IAAoB9hB,SAAA,CAEnCW,cAAA,OAAKsH,UAAWmC,EAAQgV,SAASpf,SAC/BW,cAACgiB,KAAS,CACR1a,UAAWmC,EAAQ4W,UACnBziB,MAAM,UACNyD,QAAQ,WACRkc,MAAM,aACNjiB,KAAK,UACLiE,GAAG,UACH+I,SAAWyX,GAlGDA,KACpB,MAAMzkB,EAAOykB,EAAE3Y,OAAO5M,MAAMynB,OAEN3mB,EAAK4mB,QADb,gBAC4B,MACpB5mB,GAAQA,IAASulB,GAErCC,EAAWxlB,EACb,EA2F2BgiB,CAAayC,GAC9BvlB,MAAOqmB,MAIX7gB,cAAA,OAAKsH,UAAWmC,EAAQ0Y,SAAS9iB,SAC/BW,cAAA,MAAAX,SAAI,yBAEW,QADXmhB,EACL4B,GAAKC,mBAAW,IAAA7B,OAAA,EAAhBA,EAAkBxkB,KAAKsmB,GACtBtiB,cAACgf,GAAmB,IAAmBsD,EAAMte,KAAMse,GAAzBA,EAAK/iB,aAIpC,E,wGC7KA,MAAMgjB,GAAiB3G,IAAsC,IAArC,KAAEpd,EAAI,QAAEgkB,EAAO,aAAEC,GAAc7G,EAC5D,OACE5b,cAAAZ,WAAA,CAAAC,SACEW,cAACuH,KAAQ,CAAC/I,KAAMA,EAAMgJ,iBAAkBhJ,EAAKa,SAC3CW,cAACkB,KAAK,CAACwG,SAAU+a,EAAapjB,SAC5BF,eAACujB,KAAU,CAAArjB,SAAA,CAAC,IAAEmjB,UAGjB,ECkCMG,GAAyB/G,IAQ/B,IARgC,QACrC6E,EAAO,KACPzc,EAAI,QACJ4e,EAAO,+BACPC,EAA8B,kCAC9BC,EAAiC,cACjCC,EAAa,iBACbC,GACDpH,EACC,MAAM,EAAEzV,GAAMC,cAERiW,EAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KAJc,eAQbvB,GAAYpf,YAAY4Z,KACxBgH,GAAa5gB,YAAY0Z,KACzBmH,GAAS7gB,YAAY2Z,KACrB3d,EAAMmE,GAAWT,oBAAS,IAC1BsgB,EAASc,GAAcphB,sBACvBugB,EAAcc,GAAmBrhB,mBAAS,CAAC,IAG5C,sBACJshB,EAAqB,yBACrBxC,EAAwB,kBACxBN,EAAiB,gBACjB5V,EAAe,oBACf8S,EAAmB,iBACnBgD,EAAgB,QAChBC,EAAO,WACPC,EAAU,WACVxB,EAAU,cACVyB,EAAa,OACbJ,EAAM,MACN8C,EAAK,UACLC,EAAS,aACTC,GACE7hB,qBAAWC,KAET6hB,EAAmBA,KACvBC,YAAW,WACTlhB,GAAQ,EACV,GAAG,IAAK,EA8HV,OACExD,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACoiB,KAAM,CACL/iB,KAAMglB,GAAyBX,EAC/BriB,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,MACPgC,OAAQ,OACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAGXmB,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,oBACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SAED8G,EACC,+EAGJnG,cAACV,IAAU,CAACG,QAhDAc,KAClBygB,GAAyB,GACzB8B,GAAkC,EAAM,EA8CDzjB,SAC/BW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAI5BoC,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChB7c,IAAK,OACLsJ,QAAS,aACT/J,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACf5c,IAAK,OACL5B,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,OACVwL,UAAW,QACXhK,SAAA,CAEFW,cAAA,QAAMS,MAAO,CAAE+b,UAAW,UAAWnd,SAClC8G,EACC,qFAGJnG,cAACqkB,KAAa,CAAChI,MAAOA,EAAMhd,SAC1BW,cAACskB,KAAM,CACL1kB,GAAI,CACF1B,MAAO,OACPkL,QAAS,MACTxL,MAAO,OACPmC,aAAc,MACdkkB,WAAY,QAEd5iB,QAAQ,YACRzD,MAAM,UACN6B,QAASA,IAhNvB,WACE,GAAgB,KAAZohB,GAEAD,IACAza,EACE,wEAGF,IACEid,EAAU,CACR5c,UAAW,CACTiY,SAAUoC,EACV5B,WAAY,CAAC,CAAEnU,uBAGhBpE,MAAMC,KACsC,IAAvCA,EAAM3C,KAAKugB,yBACbjB,EACEnd,EACE,yEAGJod,EAAgB,SAChB5gB,GAAQ,KAER2gB,EACEnd,EACE,2EAGJod,EAAgB,WAChB5gB,GAAQ,GACRihB,IACAC,YAAW,WACT9C,GAAc,GACdN,GACF,GAAG,KACL,IAEDxZ,OAAOC,IACNvE,GAAQ,EAAK,GAEnB,CAAE,MAAOuE,GACPvE,GAAQ,EACV,CAGJ,GACEie,IACAza,EAAE,sEAEF,IACEkd,EAAM,CACJ7c,UAAW,CACTjH,GAAIohB,EACJrlB,KAAMulB,EACN5B,WAAY,CAAC,CAAEnU,uBAGhBpE,MAAMC,IACL2c,EACEnd,EACE,yEAGJod,EAAgB,WAChB5gB,GAAQ,GACRihB,IACAC,YAAW,WACT7C,GAAyB,GACzBD,GAAc,GACdN,GACF,GAAG,IAAK,IAETxZ,OAAOC,IACNzC,QAAQ+f,IAAItd,GACZoc,EACEnd,EACE,uEAGJod,EAAgB,SAChB5gB,GAAQ,EAAK,GAEnB,CAAE,MAAOuE,GACPvE,GAAQ,EACV,MAEA2gB,EACEnd,EACE,2EAGJod,EAAgB,SAChB5gB,GAAQ,GACRihB,IAEF,IACEhC,EAAS,CACPpb,UAAW,CACTjH,GAAIqjB,EACJ6B,QAAShmB,SAASskB,MAGnBrc,MAAM1D,IACLge,GAAyB,GACzBgC,GAAkBD,GAClBjoB,OAAOiG,SAASC,SAChByf,GAAS,IAEVxZ,OAAOC,IACNzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,CACF,CA4F6Bwd,GAA4BrlB,SAE1C8G,EACC,gGAQZnG,cAACuiB,GAAc,CACb/jB,KAAMA,EACNgkB,QAASA,EACTC,aAAcA,MAEf,E,wGC3TQkC,IAAS;;;;;;;EAAxB,MASaC,GAAgB/H,KAAOgI,GAAG;;;;;;EAO1BC,GAAejI,KAAOgI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECuCvBE,OA/Cf,SAA0BnJ,GAAwC,IAAvC,cAAEoJ,EAAa,kBAAEC,GAAmBrJ,EAC7D,MAAM,EAAEzV,GAAMC,eACPyc,EAAgCC,GACrCzkB,IAAM6D,UAAS,IACVye,EAAQuE,GAAa7mB,IAAM6D,SAAS,KACpC6gB,EAAeC,GAAoB3kB,IAAM6D,SAAS+iB,GAOzD,OACE9lB,eAACylB,GAAa,CAAAvlB,SAAA,CACZW,cAAC8kB,GAAY,CAAAzlB,SACXW,cAAC+d,KAAO,CACNC,MAEM7X,GADkB,IAAtB8e,EAEM,8EAGA,8EAEP5lB,SAEDF,eAAA,SAAOmI,UAAU,SAAQjI,SAAA,CACvBW,cAAA,SACEwI,KAAK,WACL/I,QAtB4B0lB,KACtCD,EAAUF,GACVlC,GAAkC,EAAK,EAqB7BtF,SAA+B,IAAtByH,IAEXjlB,cAAA,OAAKsH,UAAU,wBAIrBtH,cAAC2iB,GAAsB,CACrBE,+BAAgCA,EAChCC,kCAAmCA,EACnCC,cAAeA,EACfC,iBAAkBA,EAClBJ,QAASjC,MAIjB,ECpCO,MAAMyE,GAAaxJ,IAAwB,IAADrR,EAAAC,EAAA,IAAtB,KAAExG,EAAI,QAAEyc,GAAS7E,EAC1C,MAAM,EAAEzV,GAAMC,cAmBd,MAAM,UACJ8e,EAAS,SACTG,EAAQ,MACR5B,EAAK,cACL1C,EAAa,oBACbuE,EAAmB,WACnBxE,EAAU,oBACVlD,EAAmB,yBACnBoD,EAAwB,aACxB2C,EAAY,sBACZzC,EAAqB,oBACrBlX,GACElI,qBAAWC,MAERwjB,EAAcC,GAAmBtjB,mBAAS,OAC1CujB,EAAcC,GAAmBxjB,oBAAS,IAC1CyjB,EAAYC,GAAiB1jB,mBAAS,KACtC2jB,EAAYC,GAAiB5jB,sBAE7B1D,EAAMmE,GAAWT,oBAAS,IAC1BzE,EAASsoB,GAAc7jB,mBAAS,IACjC8jB,EAAcxnB,GAA2B,IAAnBf,EAAQoR,QAE7BoX,EAAkBC,GAAuBhkB,mBAAS,GAEnDikB,EADiB,IACHF,EAAmB,GACjCG,EAAYD,EAFK,GAGjBE,EAAU5C,EAAMlnB,MAAM4pB,EAAYC,GAElCE,GADa7C,EAAMznB,KAAKynB,GAAUA,EAAMlkB,KACtBgnB,KAAKC,KAAK/C,EAAM5U,OALjB,KAMP,IAAI/S,MAAMwqB,EAAkB,GAAGG,QAAQlqB,MAAM,GAE7DuG,qBAAU,KACR,GAAIkB,EAAM,CACR,MAAM0iB,EAAgB1iB,EAAKwL,QAAQmX,GACjCA,EAAKrrB,KAAKgI,cAAcsjB,SAASjB,EAAWriB,iBAE9CwiB,EAAcY,GACdR,EAAoB,EACtB,IACC,CAACliB,EAAM2hB,IA6BV7iB,qBAAU,KACR,IAAI+jB,GAAS,EAEb,GAAKb,EAcL,MAVA,WAEE,SApFJ,WAA2B,IAAZc,EAAKC,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,EACrB,OAAO,IAAIC,SAASC,IAClBpD,WAAWoD,EAASH,EAAM,GAE9B,CA+EUI,CAAM,KACRL,EAAQ,CACV,MAAMM,EAAkBnjB,EAAKwL,QAAQmX,GACnCA,EAAKrrB,KAAKgI,cAAcsjB,SAASjB,EAAWriB,iBAE9CyiB,EAAW,IAAIoB,GACjB,CACD,EARD,GAUO,KACLN,GAAS,CAAK,CACf,GACA,CAACb,EAAaL,IAEjB7iB,qBAAU,KACHtE,GACHunB,EAAW,GACb,GACC,CAACvnB,IAEJ,MA+BM4oB,EAAcf,EAAQ7W,QAAQmX,GAClCA,EAAKrrB,KAAKgI,cAAcsjB,SAASjB,EAAWriB,iBAe9C,OACEnE,eAAAC,WAAA,CAAAC,SAAA,CACsB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC8c,UACrCloB,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCF,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAAA,OAAKsH,UAAU,wBAAuBjI,SACpCW,cAAA,MAAIsH,UAAU,cAAajI,SACxB8G,EACC,mEAINhH,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,OAAKsH,UAAU,wBAAuBjI,SAChB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsC8c,YACrCtnB,cAAC+d,KAAO,CACNC,MAAO7X,EACL,0EACA9G,SAEFW,cAAA,UAAQsH,UAAU,iBAAiB7H,QA3HlC8nB,KACnBxG,GAAc,GACduE,EAAoBnf,EAAE,yEACtB2a,EAAW,GAAG,EAwH6DzhB,SACvDW,cAAA,KAAGsH,UAAU,oBAGf,OAGNtH,cAAA,OAAKsH,UAAU,wBAAuBjI,SACpCW,cAACwnB,KAAY,CACXjoB,GAAG,cACH/E,MAAO+qB,EACPkC,WAAYhC,EAAe,GAAKE,EAChC+B,kBAAkB,EAClBpf,SA9Ceqf,CAACjoB,EAAOlF,KACnCA,GACFgrB,EAAgBhrB,GAChBorB,EAAcprB,EAAMc,QAEpBkqB,EAAgB,MAChBI,EAAc,IACdF,GAAgB,GAChBQ,EAAoB,GACtB,EAsCgB1nB,KAAMA,EACNopB,QAlESloB,IACzB,MAAMmoB,EAAYnoB,EAAM0H,OAAO5M,MACzBstB,EAAe9jB,EAAKiU,MACvB0O,GAASA,EAAKrrB,KAAKgI,gBAAkBukB,EAAUvkB,gBAGhDkiB,EADEsC,GAGc,MAElBlC,EAAciC,GACdnC,GAAgB,EAAM,EAwDNqC,OAAQA,KACNplB,GAAQ,EAAK,EAEfrC,QAASA,KACPqC,GAAQ,EAAM,EAEhBqlB,qBAAsBA,CAACpnB,EAAQpG,IAC7BoG,EAAOtF,OAASd,EAAMc,KAExB2sB,eAAiBrnB,GAAWA,EAAOtF,KACnCmC,QAASA,EACT8c,QAASyL,EACTkC,YAAcC,GACZnoB,cAACgiB,KAAS,IACJmG,EACJ5K,MAAOpX,EACL,gEAEFiiB,KAAK,QACL5tB,MAAOmrB,EACP0C,WAAY,IACPF,EAAOE,WACVC,aACEnpB,eAACopB,WAAQ,CAAAlpB,SAAA,CACN2mB,EACChmB,cAACwoB,KAAgB,CAAC5qB,MAAM,UAAUwqB,KAAM,KACtC,KACHD,EAAOE,WAAWC,gBAGvB1oB,GAAI,CAAEG,aAAc,gBAQlCC,cAAA,OAAKsH,UAAU,wBAAuBjI,SACpCF,eAAA,SAAOmI,UAAU,kBAAiBjI,SAAA,CAChCW,cAAA,SAAOsH,UAAU,qBAAoBjI,SACnCF,eAAA,MAAAE,SAAA,CACEW,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,aAAYjI,SAAC,UAE7BW,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,iBAAgBjI,SAC3B8G,EACC,4DAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,YAAWjI,SACtB8G,EACC,8DAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,aAAYjI,SACvB8G,EACC,iEAMTihB,EAAYprB,KAAI,CAACsmB,EAAM9mB,KAAG,IAAAiP,EAAAC,EAAA,OACzB1K,cAAA,SAAOsH,UAAU,6BAA4BjI,SAC3CW,cAAAZ,WAAA,CAAAC,SACEF,eAAA,MAAAE,SAAA,CACEW,cAAA,MAAIsH,UAAU,uBAAsBjI,SAAE,GAAG7D,EAAM,MAC/CwE,cAAA,MAAIsH,UAAU,uBAAsBjI,SAAEijB,EAAKhnB,OAC3C0E,cAAA,MAAIsH,UAAU,6BAA4BjI,SACxCW,cAAA,QACEsH,UAAW,IACTgb,EAAKmC,QACD,mBACA,4BACHplB,SAEFnD,QACkB,IAAjBomB,EAAKmC,QACDte,EACE,4DAEFA,EACE,+DAKZnG,cAAA,MAAIsH,UAAU,uBAAsBjI,SAClCF,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACnB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EACGge,aACFzoB,cAAC+d,KAAO,CACNC,MAAO7X,EACL,sEACA9G,SAEFW,cAAC0oB,KAAY,CACXphB,UAAU,cACV7H,QAASA,IA7OrBF,KAClBwhB,GAAc,GACduE,EACEnf,EAAE,uEAEJ+e,EAAU3lB,GACV,MAAMopB,EAAW3kB,EAAKiU,MAAM5J,GAAMA,EAAE9O,KAAOA,IAAI0f,WAAW,GACvDnU,gBACH8S,EAAoB+K,GACpBzH,EAAsByH,GACtB,MAAMC,EAAS5kB,EAAKiU,MAAM5J,GAAMA,EAAE9O,KAAOA,IACzCuhB,EAAW8H,EAAOttB,KAAK,EAkOsBugB,CAAWyG,EAAK/iB,QAGjC,KAEgB,OAAnByK,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,GAApCA,EAAsCme,UACrC7oB,cAAC+kB,GAAiB,CAChBC,cAAe1C,EAAK/iB,GACpB0lB,kBAAmB3C,EAAKmC,UAExB,gBAKN,YAKhBzkB,cAACugB,GAAS,CAACE,QAASA,EAASzc,KAAMA,IACnChE,cAAC2iB,GAAsB,CAAClC,QAASA,EAASzc,KAAMA,OAEhD,KAEJ7E,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,OACX9gB,UAAU,0BACV7H,QA1NaspB,KACM,IAArB9C,GACFC,EAAoBD,EAAmB,EACzC,EAwNMrE,SAAUqE,GAAoB,EAAE5mB,SAEhCW,cAACgpB,KAAe,MAElB7pB,eAAA,QAAAE,SAAA,CACG4mB,EAAiB,MAAIK,KAExBtmB,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,QACX9gB,UAAU,0BACV7H,QA3NSwpB,KACXhD,IAAqBK,GACvBJ,EAAoBD,EAAmB,EACzC,EAyNMrE,SACEqE,IAAqBK,GAAuC,IAApBA,EACzCjnB,SAEDW,cAACkpB,KAAgB,WAGpB,E,uBC9WP,MAAM7M,GAAQ4G,aAAY,CACxBa,YAAa,CACXqF,OAAQ,CACNC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,SAgHKC,OArGO9rB,IACpB,MAAM,WAAE+rB,EAAU,QAAEjF,GAAY9mB,GAC1B,mBAAEgsB,EAAkB,oBAAEC,GAAwB9nB,qBAAWC,MACxDtE,EAASsoB,GAAc1nB,IAAM6D,SAAS,KACtC1D,EAAMmE,GAAWT,oBAAS,GAC3B8jB,EAAcxnB,GAA2B,IAAnBf,EAAQoR,OAEpC/L,qBAAU,KACR,IAAI+jB,GAAS,EAEb,GAAKb,EAYL,MARA,iBApBJ,WAA2B,IAAZc,EAAKC,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,EACrB,OAAO,IAAIC,SAASC,IAClBpD,WAAWoD,EAASH,EAAM,GAE9B,CAiBYI,CAAM,KAERL,GACFd,EAAW,IAAI2D,GAElB,EAND,GAQO,KACL7C,GAAS,CAAK,CACf,GACA,CAACb,IAEJljB,qBAAU,KACHtE,GACHunB,EAAW,GACb,GACC,CAACvnB,IAqBJ,OACEwB,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAKsH,UAAU,4BAA2BjI,SACxCW,cAACwnB,KAAY,CACXjoB,GAAG,SACH+I,SAxBkBuhB,CAACnqB,EAAOlF,KAChC,MAAMsvB,EAAsB,OAALtvB,QAAK,IAALA,OAAK,EAALA,EAAOc,KACxByuB,EAAmB,OAALvvB,QAAK,IAALA,OAAK,EAALA,EAAO+E,GACvBuqB,GACFH,EAAmBG,GACnBjrB,aAAaK,QAAQ,iBAAkBhD,OAAO4tB,MAE9CH,EAAmB,MACnB9qB,aAAaK,QAAQ,iBAAkBhD,OAAO,MAE5C6tB,GACFH,EAAoBG,GACpBlrB,aAAaK,QAAQ,KAAM6qB,KAE3BH,EAAoB,MACpB/qB,aAAaK,QAAQ,KAAM,MAC7B,EASMU,GAAI,CACFye,EAAG,EACHngB,MAAO,IACP,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,KACzC,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,MAE3C0jB,WAAU6C,EAAU,GACpBjmB,KAAMA,EACNupB,OAAQA,KACNplB,GAAQ,EAAK,EAEfrC,QAASA,KACPqC,GAAQ,EAAM,EAEhBqlB,qBAAsBA,CAACpnB,EAAQpG,IAAUoG,EAAOtF,OAASd,EAAMc,KAC/D2sB,eAAiBrnB,GAAWA,EAAOtF,KACnCmC,QAASA,EACT8c,QAASyL,EACTkC,YAAcC,GACZnoB,cAACgiB,KAAS,IACJmG,EACJ5K,MAAO,YACP6K,KAAK,QACLC,WAAY,IACPF,EAAOE,WACVC,aACEnpB,eAACd,IAAMkqB,SAAQ,CAAAlpB,SAAA,CACZ2mB,EACChmB,cAACwoB,KAAgB,CAAC5qB,MAAM,UAAUwqB,KAAM,KACtC,KACHD,EAAOE,WAAWC,gBAGvB1oB,GAAI,CAAEG,aAAc,WAM7B,ECrFQiqB,OAjCcrsB,IAC3B,MAAM,QAAE8mB,EAAO,UAAEwF,GAActsB,GACzB,mBAAEgsB,EAAkB,sBAAEO,EAAqB,kBAAEC,GACjDroB,qBAAWC,KACPM,EAAUC,cAYhB,OACEtC,cAAA,OAAKsH,UAAU,8BAA6BjI,SAC1CW,cAAC+d,KAAO,CAACC,MAAM,4BAA2B3e,SACxCW,cAAA,UACEsH,UAAU,4BACV7H,QACEwqB,EAV0BG,KAClCF,GAAsB,EAAK,EASuB,KAflD7nB,EAAQ2E,KAAK,0CACb2iB,EAAmB,WACnBQ,EAAkB,IAeZvI,SAAU6C,EAAQplB,SAElBW,cAAA,KAAGsH,UAAU,qBAGb,E,UC5BV,MACM+U,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KAJY,YAOhBW,YAAa,CACXqF,OAAQ,CACNC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,SAyBKa,OApBAA,IAEXlrB,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCW,cAAA,OAAKsH,UAAU,8BAGjBtH,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCW,cAACsqB,KAAmB,CAAC1qB,GAAI,CAAEM,OAAQ,OAAQhC,MAAO,aAElD8B,cAAA,QAAAX,SAAM,4DACNW,cAAA,OAAKsH,UAAU,oBAAmBjI,SAChCW,cAACqkB,KAAa,CAAChI,MAAOA,eCpC3B,MAAMkO,GAAe1N,KAAOgI,GAAG;;;;;EAOzB2F,GAAmB3N,KAAOgI,GAAG;;;;;;;;;EAU7B4F,GAAc5N,KAAO6N,EAAE;;EAGvBC,GAAc9N,KAAO+N,CAAC;;EAGtBC,GAAchO,KAAOgI,GAAG;;;;;oCCtB9B,MAAMiG,GAAsB5wB,GAAG;;;;ECmBtC,SAASgH,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CA0HeotB,OAxHf,WACE,MAAM,SAAEC,EAAQ,YAAEC,GAAgBnpB,qBAAWC,MACtCxC,EAAI2rB,GAAS7sB,IAAM6D,SAAS,KAC5B2E,EAAOskB,GAAY9sB,IAAM6D,YACzBzH,EAAU2wB,GAAe/sB,IAAM6D,YAC/BiY,EAAUkR,GAAehtB,IAAM6D,SAAS,KACxCopB,EAAYC,GAAiBrpB,oBAAS,IACtCspB,EAAUC,GAAevpB,mBAAS,OAClCc,EAAQ0oB,GAAaxpB,mBAAS,OAC9B1D,EAAMmE,GAAWtE,IAAM6D,UAAS,IAChCsgB,EAASc,GAAcphB,sBACvBypB,EAAeC,GAAoB1pB,sBACpC,KAAE8B,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aAASsQ,GAAqB,CACtEpQ,YAAa,sBA4Cf,OA1CArc,IAAMyE,WAAU,KAAO,IAADgpB,EACpBT,EAAgB,OAAJrnB,QAAI,IAAJA,GAA0B,QAAtB8nB,EAAJ9nB,EAAM+nB,4BAAoB,IAAAD,OAAtB,EAAJA,EAA4BE,SAAS,GAChD,CAAChoB,IAyCF7E,eAACorB,GAAY,CAAAlrB,SAAA,CACXW,cAACuH,IAAQ,CAAC/I,KAAMA,EAAMgJ,iBAAkB,KAAMlH,QArC9BC,CAACb,EAAO+H,KACX,cAAXA,GAIJ9E,GAAQ,EAAM,EAgCuDtD,SACjEW,cAACkB,GAAK,CAACwG,SAAUikB,EAActsB,SAAEmjB,MAEnCrjB,eAACqrB,GAAgB,CAAAnrB,SAAA,CACfW,cAACyqB,GAAW,CAAAprB,SAAC,mBACbF,eAACwrB,GAAW,CAAAtrB,SAAA,CAAC,yBACWW,cAAA,SAAS,qCAEjCb,eAAC0rB,GAAW,CAAAxrB,SAAA,CACVW,cAACgiB,KAAS,CACR1Z,SAAW5I,GAAUyrB,EAASzrB,EAAM0H,OAAO5M,OAC3C6tB,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAClCR,GAAG,iBACHge,MAAM,qBACNlc,QAAQ,WACR+mB,KAAK,UAEPpoB,cAACgiB,KAAS,CACR1Z,SAAW5I,GAAU0rB,EAAY1rB,EAAM0H,OAAO5M,OAC9C6tB,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAClCR,GAAG,iBACH6oB,KAAK,QACL7K,MAAM,aACNlc,QAAQ,WACRmH,KAAK,aAEPrJ,eAAC8sB,KAAW,CAACrsB,GAAI,CAAE1B,MAAO,0BAA4BkqB,KAAK,QAAO/oB,SAAA,CAChEW,cAACksB,KAAU,CACT3sB,GAAG,0BACH8oB,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAAMV,SACzC,cAGDW,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,GACpBqsB,QAAQ,0BACR7sB,GAAG,oBACH/E,MAAO+E,EACPge,MAAM,YACNjV,SA/EU5I,IACpBwrB,EAAMxrB,EAAM0H,OAAO5M,MAAM,EA8EQ6E,SAEd,OAAR8a,QAAQ,IAARA,OAAQ,EAARA,EAAUne,KAAKsmB,GACdtiB,cAACa,IAAQ,CAAerG,MAAO8nB,EAAK/iB,GAAGF,SAChC,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,MADMgnB,EAAK/iB,WAM1BS,cAACskB,KAAM,CACLjjB,QAAQ,YACRzB,GAAI,CAAEG,aAAc,EAAGG,OAAQ,QAC/BT,QAjFcnF,UACtBixB,GAAc,GACdE,EAAY,MACZC,EAAU,MAEV,MAAM1nB,EAAO,CACX6C,MAAOA,EACPpM,SAAUA,EACV4xB,UAAW9sB,GAGb,IACE,MAAMuE,QCjELxJ,eAAyB0J,GAG5B,IACI,MAAMF,QAAiBC,MAFf,6FAE0B,CAC9BuoB,OAAQ,OACRC,QAAS,CACL,cAAiB,UAAU1tB,aAAaC,QAAQ,WAChD,eAAgB,mBAChB,OAAU,kBAEd0tB,KAAMzmB,KAAKC,UAAUhC,KAGzB,IAAKF,EAAS2oB,GACV,MAAM,IAAIC,MAAM,uBAAuB5oB,EAAS2J,UAIpD,aADqB3J,EAASG,MAElC,CAAE,MAAOO,GAEL,MADAC,QAAQD,MAAM,oCAAkCA,GAC1CA,CACV,CACJ,CDyC6BmoB,CAAU3oB,GACjC0nB,EAAU5nB,GACVjF,aAAaK,QAAQ,WAAY4E,EAAS8C,OAC1C/H,aAAaK,QAAQ,eAAgBK,GACrC0rB,EAAYnnB,EAAS8C,MACvB,CAAE,MAAOpC,GACP7B,GAAQ,GACRipB,EAAiB,SACjBH,EAAY,oCACZnI,EAAW,qBACX7e,QAAQ+f,IAAIhgB,EACd,CAAC,QACC+mB,GAAc,EAChB,GAwDiClsB,SAC1B,0BAOX,EE/Ie,OAA0B,gCCClC,MAAMutB,GAAa/P,KAAOgI,GAAG;;;;;;;;;;;;EAavBgI,GAAShQ,KAAOgI,GAAG;;;;;EAMnBiI,GAAcjQ,KAAOgI,GAAG;;;;;;;;;EAUxBkI,GAAOlQ,KAAOmQ,GAAG;;;;;;EAOjBC,GAAiBpQ,KAAOgI,GAAG;;;;;;;EAS3BP,GAASzH,KAAO7R,MAAM;;;;;;;;;;;;;;;EAgBtBkiB,GAAerQ,KAAOgI,GAAG;;;;;;;;;;EAWzBsI,GAAWtQ,KAAOgI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvE3B,MAAMnL,GAA2Bxf,GAAG;;;;;;;;;;;;ECqN5BkzB,OAlMf,WACE,MAAM,KAAEppB,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aAASd,GAA0B,CAC3ElT,UAAW,CAAE6lB,UAAW,KACxB3R,YAAa,uBAET,SAAEsQ,EAAQ,YAAEC,GAAgBnpB,qBAAWC,MACtCxC,EAAI2rB,GAAS7sB,IAAM6D,SAAS,KAC5BmrB,EAAOC,GAAYjvB,IAAM6D,SAAS,KAClCqrB,EAAMC,GAAWnvB,IAAM6D,SAAS,KAChCurB,EAAaC,GAAkBrvB,IAAM6D,SAAS,KAC9CyrB,EAAWC,GAAgBvvB,IAAM6D,SAAS,IAC3C2rB,EAAUvzB,UACd,IACE,MAAMwJ,QClCLxJ,iBAEH,MAAMwzB,EAAM,iFAAiFjvB,aAAaC,QAAQ,kBAClH,IACI,MAAMgF,QAAiBC,MAAM+pB,EAAK,CAC9BxB,OAAQ,MACRC,QAAS,CACL,cAAiB,UAAU1tB,aAAaC,QAAQ,cAChD,eAAgB,mBAChB,OAAU,kBAEd0tB,KAAMzmB,KAAKC,cAGf,IAAKlC,EAAS2oB,GACV,MAAM,IAAIC,MAAM,uBAAuB5oB,EAAS2J,UAIpD,aADqB3J,EAASG,MAElC,CAAE,MAAOO,GAEL,MADAC,QAAQD,MAAM,oCAAkCA,GAC1CA,CACV,CACJ,CDU6BupB,GACnBjqB,IACF0pB,EACU,OAAR1pB,QAAQ,IAARA,OAAQ,EAARA,EAAU0oB,KAAKxwB,KAAKuxB,IAAI,CACtBjyB,KAAMiyB,EAAKjyB,KACX0yB,OAAQT,EAAKS,OACbC,OAAQV,EAAKU,YAGjBP,EACU,OAAR5pB,QAAQ,IAARA,OAAQ,EAARA,EAAU0oB,KAAKxwB,KAAKuxB,IAAI,CACtBjyB,KAAMiyB,EAAKjyB,KACX0yB,OAAQT,EAAKS,OACbC,OAAQV,EAAKU,YAIrB,CAAE,MAAOzpB,GACPC,QAAQ+f,IAAIhgB,EACd,CACA,EAEI0pB,EAAa5zB,UACjB,IACE,MAAMwJ,QCjCLxJ,eAAyB0J,GAG5B,IACI,MAAMF,QAAiBC,MAFf,qFAE0B,CAC9BuoB,OAAQ,MACRC,QAAS,CACL,cAAiB,UAAU1tB,aAAaC,QAAQ,cAChD,eAAgB,mBAChB,OAAU,kBAEd0tB,KAAMzmB,KAAKC,UAAUhC,KAGzB,IAAKF,EAAS2oB,GACV,MAAM,IAAIC,MAAM,uBAAuB5oB,EAAS2J,UAIpD,aADqB3J,EAASG,MAElC,CAAE,MAAOO,GAEL,MADAC,QAAQD,MAAM,oCAAkCA,GAC1CA,CACV,CACJ,CDS6B2pB,CAAUnqB,GAC7BF,IACF+pB,IACAppB,QAAQ+f,IAAI,kBAAmB1gB,GAEnC,CAAE,MAAOU,GACPC,QAAQ+f,IAAI,eAAgBhgB,EAC9B,CACA,EAEI4pB,EAAqBJ,IACzB,MAAMK,EAAYd,EAAKtV,MAAMqW,GAAaA,EAASN,SAAWA,IAC9D,OAAOK,EAAYA,EAAUJ,OAAS,IAAI,EAG5CnrB,qBAAU,KACR+qB,GAAS,GACR,IACHxvB,IAAMyE,WAAU,KACdwqB,EACM,OAAJtpB,QAAI,IAAJA,OAAI,EAAJA,EAAMuqB,qBAAqBvyB,KAAKqxB,IAAK,CACnC/xB,KAAM+xB,EAAM/xB,KACZiE,GAAI8tB,EAAM9tB,QAGdquB,EAAiB,OAAJ5pB,QAAI,IAAJA,OAAI,EAAJA,EAAMuqB,qBAAqB,GACvC,CAACvqB,IAOJ,MA8BMwqB,EAAkBR,IACtB,MAAMS,EAAclB,EAAKtV,MAAMqW,GAAaA,EAASN,SAAWA,IAC1DU,EAAkBjB,EAAYxV,MACjCqW,GAAaA,EAASN,SAAWA,IAGpC,SAAKS,IAAgBC,IAIdD,EAAYR,SAAWS,EAAgBT,MAAM,EAGtD,OACE9uB,eAACytB,GAAU,CAAAvtB,SAAA,CACTF,eAAC0tB,GAAM,CAAAxtB,SAAA,CACLW,cAAC8sB,GAAW,CAAAztB,SACVW,cAAC+sB,GAAI,CAACnlB,IAAK+mB,OAEbxvB,eAAC8tB,GAAc,CAAA5tB,SAAA,CACbW,cAAA,MAAAX,SAAI,uCACJF,eAAA,KAAAE,SAAA,CAAG,4DAEDW,cAAA,SAAM,kEAGVA,cAACskB,GAAM,CAAC7kB,QA7Dd,WACEZ,aAAagM,WAAW,YACxBhM,aAAagM,WAAW,gBACxBogB,GACF,EAyD8B5rB,SAAC,aAE3BW,cAACktB,GAAY,CAAA7tB,SACN,OAAJkuB,QAAI,IAAJA,OAAI,EAAJA,EAAMvxB,KAAI,CAAC4yB,EAASpzB,IACnB2D,eAACguB,GAAQ,CAAA9tB,SAAA,CACPW,cAAA,MAAIsH,UAAU,YAAWjI,SAAEuvB,EAAQtzB,OACnC6D,eAAA,OAAKmI,UAAU,kBAAiBjI,SAAA,CAC9BF,eAAA,KAAAE,SAAA,CACEW,cAAA,UAAAX,SAAQ,qBAA0B,OAEpCW,cAAA,KAAAX,SAAIuvB,EAAQZ,YAEd7uB,eAAA,OAAKmI,UAAU,eAAcjI,SAAA,CAC3BW,cAAA,OAAAX,SACEW,cAAA,KAAAX,SACEW,cAAA,UAAAX,SAAQ,0BAIZF,eAAC8sB,KAAW,CAACrsB,GAAI,CAAE1B,MAAO,SAAWkqB,KAAK,QAAO/oB,SAAA,CAC/CW,cAACksB,KAAU,CACT3sB,GAAG,0BACH8oB,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAAMV,SACzC,cAGDW,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,GACpBqsB,QAAQ,0BACR7sB,GAAG,oBACH/E,MAAO4zB,EAAyB,OAAPQ,QAAO,IAAPA,OAAO,EAAPA,EAASZ,QAClCzQ,MAAM,YACNjV,SAAW5I,IACTmvB,OAzFYb,EAyFSY,EAAQZ,OAzFTc,EAyFiBpvB,EAAM0H,OAAO5M,WAxFlEgzB,GAASuB,GACPA,EAAU/yB,KAAKsyB,GACbA,EAASN,SAAWA,EAChB,IAAKM,EAAUL,OAAQa,GACvBR,MALmBO,IAACb,EAAQc,CA0FrB,EAAAzvB,SAEK,OAALguB,QAAK,IAALA,OAAK,EAALA,EAAOrxB,KAAKsmB,GACXtiB,cAACa,IAAQ,CAAerG,MAAO8nB,EAAK/iB,GAAGF,SAChC,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,MADMgnB,EAAK/iB,cAQ5BS,cAAC+d,KAAO,CACNC,MACGwQ,EAAeI,EAAQZ,QAEpB,GADA,gCAGNgB,UAAU,SAAQ3vB,SAElBW,cAAA,UACEsH,UAAU,cACVsa,UAAW4M,EAAeI,EAAQZ,QAClCvuB,QAASA,IAvGHuuB,KAElB,MAAMK,EAAYd,EAAKtV,MAAMqW,GAAaA,EAASN,SAAWA,IAE9D,GAAIK,EAAW,CAAC,IAADY,EAEb,MAAMC,EAAuB,OAATvB,QAAS,IAATA,OAAS,EAATA,EAAW1V,MAC5BkX,GAASA,EAAK5vB,KAAO8uB,EAAUJ,SAIlCI,EAAUe,aAAyB,OAAXF,QAAW,IAAXA,GAAuB,QAAZD,EAAXC,EAAaG,kBAAU,IAAAJ,OAAZ,EAAXA,EAAyBG,cAAe,GAChEf,EAAUhC,UAAYrvB,SAAS6B,aAAaC,QAAQ,iBAGpD2F,QAAQ+f,IAAI,sBAAuB6J,GAEnCH,EAAW,CAACG,GACd,GAqF2BiB,CAAWV,EAAQZ,QAAQ3uB,SAC3C,+BASf,EEhNO,MAAMkwB,GAAgBA,KACzB,MAAM,SACFvE,GACAlpB,qBAAWC,KAGf,OAAIipB,EACQhrB,cAACotB,GAAiB,IAGnBptB,cAAC+qB,GAAQ,GACpB,ECNWyE,OAPf,WACE,OACExvB,cAAAZ,WAAA,CAAAC,SAAGkwB,MAGP,ECEejY,OARCmN,GAEZzkB,cAAA,QAAMsH,UAAW,IAAGmd,EAAQzgB,KAAO,UAAY,YAAa3E,SACzDnD,QAAwB,IAAjBuoB,EAAQzgB,KAAiB,WAAa,Y,oBCKpD,MAAMqY,GAAQ4G,aAAY,CACxBa,YAAa,CACXqF,OAAQ,CACNC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,SAkEKiG,OA7DK9xB,IAClB,MAAM,WAAE+xB,GAAe/xB,GAChBgyB,EAAYC,GAAiBvxB,IAAM6D,SAAS,IAC7C,eAAE2tB,EAAc,kBAAE1F,GAAsBroB,qBAAWC,KAInD+tB,EAAY,CAChBtvB,WAAY,CACVC,MAAO,CACLC,UAAWC,IACXzC,MAAO,UAcb,OACE8B,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAKsH,UAAU,mBAAkBjI,SAC/BF,eAAC8sB,KAAW,CACVrsB,GAAI,CACFye,EAAG,EACHngB,MAAO,IACP,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,KACzC,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,MAE3CkqB,KAAK,QAAO/oB,SAAA,CAEZW,cAACksB,KAAU,CAAC3sB,GAAG,+BAA8BF,SAAC,iBAG9CW,cAACmsB,KAAM,CACLC,QAAQ,+BACR7sB,GAAG,yBACHK,GAAI,CAAEG,aAAc,EAAGG,OAAQ,QAC/B1F,MAAOm1B,EACPrnB,SA7BY5I,IACpB,MACE0H,QAAQ,MAAE5M,IACRkF,EACJkwB,EAA+B,kBAAVp1B,EAAqBA,EAAMqC,MAAM,KAAOrC,GAC7D2vB,EAAkBzqB,EAAM0H,OAAO5M,MAAM,EAyB7Bu1B,MAAO/vB,cAACgwB,KAAa,CAACzS,MAAM,oBAC5BuS,UAAWA,EAAUzwB,SAEpBqwB,EAAW1zB,KAAKi0B,GACfjwB,cAACa,IAAQ,CAAiBrG,MAAOy1B,EAAO1wB,GAAGF,SACzCW,cAAC6J,KAAY,CAACC,QAASmmB,EAAO30B,QADjB20B,EAAO1wB,cAO7B,E,qBCrCQ2wB,OAjCSA,KACtB,MAAM7tB,EAAUC,eACT+pB,EAAW8D,GAAgBjuB,mBAASrD,aAAaC,QAAQ,OAKhE,OACEkB,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAAX,SACEW,cAAC+d,KAAO,CAACC,MAAO,sBAAsB3e,SACpCW,cAACV,IAAU,CACTM,GAAI,CACF1B,MAAO,OACPgC,OAAQ,QAEVT,QAb0B2wB,KAClC/tB,EAAQ2E,KAAK,yCAAyC,EAa9C4a,UAAU,EAAKviB,SAEfW,cAACqwB,KAAgB,CACfzwB,GAAI,CACF1B,MAAO,OACPgC,OAAQ,OACR,SAAU,CAAEtC,MAAO,qBAM5B,ECxBP,MAEMye,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KALc,cAyHLmN,OA/GW1U,IAAe,IAAd,KAAE5X,GAAM4X,EACjC,MAAM,mBACJ2U,EAAkB,sBAClBrG,EAAqB,gBACrBsG,EAAe,mBACf7G,GACE7nB,qBAAWC,KACTM,EAAUC,cASV/B,GARiBvD,SAAS6B,aAAaC,QAAQ,OAQjCyB,KAClB2pB,GAAsB,GACtBP,EAAmB,KAAK,GAG1B,OACE3pB,cAAAZ,WAAA,CAAAC,SACEF,eAACoiB,KAAM,CACL/iB,KAAM+xB,EACNjwB,QAASC,EACTC,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,MACPgC,OAAQ,QAEVb,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBuH,WAAY,yBACZnH,gBAAiB,UACjBnf,MAAO,UACPC,SAAU,OACV0L,aAAc,OACd0a,WAAY,MACZ7a,QAAS,OACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,eAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,OACZ0R,YAAa,QACbpxB,SACH,6BAGDW,cAACV,IAAU,CAACG,QAASc,EAAYlB,SAC/BW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BuB,eAACilB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACf5c,IAAK,OACLsJ,QAAS,YACTmT,WAAY,SACZI,eAAgB,UAChBtd,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,QACVwB,SACH,mFAIDW,cAACypB,GAAY,CAAChF,SAAS,EAAMiF,WAAY1lB,IACzChE,cAACqkB,KAAa,CAAChI,MAAOA,GAAMhd,SAC1BW,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,UACNgkB,SAA8B,OAApB4O,EACV/wB,QAASA,KAlFnB4C,EAAQ2E,KAAK,0CACbkjB,GAAsB,QACtBP,EAAmB,OAiFT/pB,GAAI,CACF1B,MAAO,QACPkL,QAAS,MACTxL,MAAO,OACPmC,aAAc,MACdkkB,WAAY,QACZ5kB,SACH,qBAMN,E,qBC7HP,MAEMgd,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KALc,cA6BLuN,OAnBUA,IAErB1wB,cAACqkB,KAAa,CAAChI,MAAOA,GAAMhd,SAC1BW,cAACskB,KAAM,CACLjjB,QAAQ,YACRsvB,QAAS3wB,cAAC4wB,KAAS,IACnBhzB,MAAM,UACNgkB,UAAU,EACVhiB,GAAI,CACFhC,MAAO,QACPmC,aAAc,OACdV,SACH,e,qBCaQwxB,OA5BYlzB,IAAW,IAADmuB,EACnC,MAAM,KAAE9nB,EAAI,aAAE8sB,GAAiBnzB,GACzB,gBAAE6yB,GAAoB1uB,qBAAWC,KACjCgvB,EAAyB,OAAJ/sB,QAAI,IAAJA,GAA0B,QAAtB8nB,EAAJ9nB,EAAM+nB,4BAAoB,IAAAD,OAAtB,EAAJA,EAA4BE,SAEvD,OACEhsB,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCW,cAACgxB,KAAuB,CAACpxB,GAAI,CAAEM,OAAQ,OAAQhC,MAAO,aACtD8B,cAAA,QAAAX,SAAM,kFAINF,eAAA,OAAKmI,UAAU,+BAA8BjI,SAAA,CAC3CW,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CW,cAACypB,GAAY,CAACC,WAAYqH,EAAoBtM,SAAS,MAEzDzkB,cAACgqB,GAAmB,CAClBvF,QAA6B,OAApB+L,EACTvG,WAAW,OAGfjqB,cAACswB,GAAiB,CAACtsB,KAAM8sB,QAEvB,ECpBKG,OAdUA,IAErBjxB,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCW,cAACgxB,KAAuB,CAACpxB,GAAI,CAAEM,OAAQ,OAAQhC,MAAO,aACtD8B,cAAA,QAAAX,SAAM,2GCLP,MAAM6xB,GAAqBrU,KAAOgI,GAAG;;;;;;;;;;;;aAY9BlnB,GAAWA,EAAMwzB,cAAgB,EAAI,cAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECoCpDC,OA7CIzzB,IACjB,MAAM,cAAE0zB,EAAa,UAAEC,GAAc3zB,GAE9B4zB,EAAaC,GAAkBtvB,mBAAS,GAM/C,OACElC,cAAAZ,WAAA,CAAAC,SACEW,cAACkxB,GAAkB,CACjBG,cAAeA,EACfF,aAAcE,EAAcxiB,OAAOxP,SAEnCF,eAAA,SAAOmI,UAAU,aAAYjI,SAAA,CAC3BW,cAAA,SAAOsH,UAAU,wBAAuBjI,SACtCW,cAAA,MAAIsH,UAAU,KAAIjI,SACF,OAAbgyB,QAAa,IAAbA,OAAa,EAAbA,EAAer1B,KAAI,CAACy1B,EAAYC,IAC/B1xB,cAAA,MAAAX,SACEW,cAAA,MAAAX,SAAKoyB,EAAWlU,SADTmU,SAMf1xB,cAAA,SAAOsH,UAAU,uBAAsBjI,SAC3B,OAATiyB,QAAS,IAATA,OAAS,EAATA,EAAWt1B,KAAI,CAAC21B,EAASC,IACxB5xB,cAAA,MAAIsH,UAAU,OAAMjI,SACJ,OAAbgyB,QAAa,IAAbA,OAAa,EAAbA,EAAer1B,KAAI,CAAC61B,EAAQC,IAC3B9xB,cAAA,MAAIsH,UAAU,KAAIjI,SACfwyB,EAAOlmB,UACN3L,cAAC6xB,EAAOlmB,UAAS,CAAC3H,KAAM2tB,EAAQE,EAAOE,WAEvC,GAAGJ,EAAQE,EAAOE,YAJED,MAFFF,aAejC,EC/BA,MAAMI,GAA0Br0B,IAAW,IAADmuB,EAAAmG,EAAAC,EAAAC,EAC/C,MAAM,eAAEtC,GAAmBlyB,GACrB,KAAEqG,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYuG,GAAevC,GACnDiB,EAAmB,OAAJ9sB,QAAI,IAAJA,GAA0B,QAAtB8nB,EAAJ9nB,EAAM+nB,4BAAoB,IAAAD,OAAtB,EAAJA,EAA4BE,SAC3CsF,EAAgB,OAAJttB,QAAI,IAAJA,GAA6B,QAAzBiuB,EAAJjuB,EAAMquB,+BAAuB,IAAAJ,OAAzB,EAAJA,EAA+BjuB,KAC3CsuB,EAAuB,OAAJtuB,QAAI,IAAJA,GAA6B,QAAzBkuB,EAAJluB,EAAMquB,+BAAuB,IAAAH,GAAM,QAANC,EAA7BD,EAA+BluB,YAAI,IAAAmuB,OAA/B,EAAJA,EAAqCtjB,OAE9D,OAAQghB,GACN,KAAK,EACH,GAAIyC,GAAoB,QAAyB9yB,GAApB8yB,EAC3B,OAAOtyB,cAACixB,GAAgB,IAG5B,KAAK,EACH,GAAIqB,GAAoB,EACtB,OAAOtyB,cAAC6wB,GAAiB,CAAC7sB,KAAMA,EAAM8sB,aAAcA,IAC/C,GAAIwB,EAAmB,EAC5B,OACEtyB,cAACoxB,GAAS,CACRE,UAAWA,EACXD,cAAekB,GAAiB,CAC9Bjb,UACA4Y,mBACAQ,wBAKV,KAAK,EACH,OAAO1wB,cAACwyB,GAAS,IACnB,QACE,OAAO,KACX,EAGWC,GAAe,CAC1B,CAAElzB,GAAI,EAAGjE,KAAM,gBACf,CAAEiE,GAAI,EAAGjE,KAAM,wCAGJi3B,GAAoBG,IAC/B,MAAM,OAAEpb,EAAM,gBAAE4Y,EAAe,iBAAEQ,GAAqBgC,EACtD,MAAO,CACL,CAAEnV,MAAO,SAAUwU,QAAS,QAC5B,CACExU,MAAO,sBACPwU,QAAS,UACTpmB,UAAW2L,GAEb,CAAEiG,MAAO,UAAQwU,QAAS,WAC1B,CAAExU,MAAO,SAAUwU,QAAS,QAC5B,CAAExU,MAAO,UAAW5R,UAAWukB,GAC/B,CAAE3S,MAAO,YAAa5R,UAAW+kB,GAClC,EAWU0B,GAAkB3rB,IAC7B,MAAMlH,EAAKvC,SAAS6B,aAAaC,QAAQ,OACzC,IAAI6zB,EAAQ,KACRC,GAAgB,EAEpB,GACO,IADCnsB,EAEJksB,EAAQE,KACRD,GAAgB,OAIhBA,GAAgB,EAGpB,MAAM,KAAE5uB,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aACxCqY,KACA,CACEnY,YAAa,eACblU,UAAW,CAAEjH,MACbuzB,KAAMF,IAIV,MAAO,CAAE5uB,OAAMuW,UAAS/V,QAAOqnB,UAAS,ECpF5B5I,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KALY,YAQhBW,YAAa,CACXqF,OAAQ,CACNC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,SA4EKuJ,OAvEWA,KAAO,IAADd,EAAAC,EAAApG,EAAAqG,EAAAa,EAAAzoB,EAC9B,MAAM,KAAEvG,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aACxCqY,KACA,CACEnY,YAAa,eACblU,UAAW,CACTjH,GAAIvC,SAAS6B,aAAaC,QAAQ,WAKlC,eAAE+wB,EAAc,gBAAEW,EAAe,oBAAExmB,EAAmB,SAAEghB,GAC5DlpB,qBAAWC,KAMPkxB,GAJc,OAAJjvB,QAAI,IAAJA,GAA6B,QAAzBiuB,EAAJjuB,EAAMquB,+BAAuB,IAAAJ,GAAM,QAANC,EAA7BD,EAA+BjuB,YAAI,IAAAkuB,GAAnCA,EAAqCl2B,KAClD4yB,GAAYA,EAAQnK,UAGC,OAAJzgB,QAAI,IAAJA,GAA0B,QAAtB8nB,EAAJ9nB,EAAM+nB,4BAAoB,IAAAD,OAAtB,EAAJA,EAA4BE,UAC1CkH,EAA0B,OAAJlvB,QAAI,IAAJA,GAA6B,QAAzBmuB,EAAJnuB,EAAMquB,+BAAuB,IAAAF,GAAM,QAANa,EAA7Bb,EAA+BnuB,YAAI,IAAAgvB,OAA/B,EAAJA,EAAqCnkB,OAUjE,OARA/L,qBAAU,KACe,IAAnB+sB,GACFhE,GACF,GACC,CAACgE,EAAgBhE,IAKlB7rB,cAAAZ,WAAA,CAAAC,SACsB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC4oB,WACrCh0B,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CF,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCF,eAAA,OAAKmI,UAAU,0BAAyBjI,SAAA,CACtCW,cAAA,MAAIsH,UAAU,cAAajI,SAAC,+BAC5BW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,8DAItCF,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAACgqB,GAAmB,CAClBvF,QAA6B,OAApB+L,EACTvG,WAAW,IAGbjqB,cAACyvB,GAAU,CAACC,WAAY+C,KACvBS,EAAsB,GAAKrD,EAAiB,EAC3C7vB,cAAAZ,WAAA,CAAAC,SACEW,cAACypB,GAAY,CACXC,WAAYuJ,EACZxO,QAASoL,MAGX,WAIR7vB,cAAA,OACES,MAAO,CAAEgc,QAAS,OAAQ2W,SAAU,QACpC93B,KAAK,qBAAoB+D,SAEzBW,cAACgyB,GAAsB,CAACnC,eAAgBA,SAI5C7vB,cAACqqB,GAAM,KAER,ECxGyBnwB,GAAG;;;;EAA5B,MAMMm5B,GAAoBn5B,GAAG;;;;EAMvBo5B,GAAuBp5B,GAAG;;;;;EAa1Bq5B,IANiBr5B,GAAG;;;;EAMUA,GAAG;;;;GAMjCs5B,GAAuBt5B,GAAG;;;;EAM1Bu5B,GAAiBv5B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCpBw5B,GAAiBx5B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvD3By5B,IDyFwBz5B,GAAG;;;;EAKHA,GAAG;;;;;;;EASHA,GAAG;;;;;;EAQLA,GAAG;;;;;;EAQJA,GAAG;;;;;;ECvHV+oB,aAAY,CAC9BhG,QAAS,CACPiG,QAAS,CACPC,KANc,WAQhB3e,MAAO,CACL2e,KARY,eAaLyQ,GAAgChY,IAAwJ,IAAvJ,SAAEzB,EAAQ,cAAE0Z,EAAa,kCAAEC,EAAiC,qCAAEC,EAAoC,WAAEC,EAAU,cAAEjR,EAAa,iBAAEC,GAAkBpH,EAC7L,MAAM,EAAEzV,GAAMC,eACP5H,EAAMmE,GAAWT,oBAAS,IAC1BsgB,EAASc,GAAcphB,sBACvBugB,EAAcc,GAAmBrhB,mBAAS,CAAC,IAC5C,6BAAE+xB,EAA4B,gCAAEC,GAAoCpyB,qBAAWC,MAE9EoyB,GAAqB3xB,YAAYkxB,IAElC5C,EAAuB,OAAR3W,QAAQ,IAARA,OAAQ,EAARA,EAAUne,KAAKsmB,IAClC,GAAItlB,SAASg3B,KAAgBh3B,SAAa,OAAJslB,QAAI,IAAJA,OAAI,EAAJA,EAAM/iB,IAC1C,MAAO,CACLA,GAAIvC,SAAa,OAAJslB,QAAI,IAAJA,OAAI,EAAJA,EAAM/iB,IACnBklB,QAAa,OAAJnC,QAAI,IAAJA,OAAI,EAAJA,EAAMmC,QAEnB,IAII2P,EAA8B,OAAZtD,QAAY,IAAZA,OAAY,EAAZA,EAActhB,QAAQnB,QAAY7O,IAAN6O,IACrC,OAAf+lB,QAAe,IAAfA,KAAiBp4B,KAAI,CAACsmB,EAAM9mB,KACtB8mB,EAAKmC,QACPnC,EAAKmC,SAAU,EAEfnC,EAAKmC,SAAU,EAEVnC,EAAKmC,WAuBd,OACEtlB,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACoiB,KAAM,CACL/iB,KAAMy1B,GAAgCH,EACtCtzB,WAAY,CACVZ,GAAI,CACFG,aAAc,MACd7B,MAAO,OACPgC,OAAQ,SAEVb,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBuH,WAAY,yBACZnH,gBAAiB,UACjBnf,MAAO,UACPC,SAAU,OACV0L,aAAc,OACd0a,WAAY,MACZ7a,QAAS,OACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,eAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,OACZ0R,YAAa,QACbpxB,SAED8G,EAAE,mGAELnG,cAACV,IAAU,CAACG,QA1CAc,KAClBwzB,GAAqC,GACrCG,GAAgC,EAAM,EAwCC70B,SAC/BW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAI5BoC,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,UAChBtd,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACfC,eAAgB,SAChBJ,WAAY,SACZzc,IAAK,QACLT,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,QACVwB,SAED8G,EAAE,mGAELnG,cAAA,OAAKS,MAAO,CAAEgc,QAAS,OAAQ3c,IAAK,QAAST,SAC3CW,cAACqkB,KAAa,CAAChI,MAAOsX,GAAYt0B,SAChCW,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,UACNwqB,KAAK,QACLxoB,GAAI,CACFhC,MAAO,OACPmC,aAAc,MACd9B,OAAQ,gBACRC,MAAO,IACP,UAAW,CAAE6e,gBAAiB,YAEhCtd,QAASA,IAtGzB,WACE,IAAK,IAAD40B,EACFrR,GAAkBD,GAClBoR,EAAkB,CAChB3tB,UAAW,CACTjH,GAAIvC,SAASg3B,GACbvP,QAA2B,QAApB4P,EAAED,EAAgB,UAAE,IAAAC,OAAA,EAAlBA,EAAoB5P,WAG9B/d,MAAMC,QACNM,OAAOC,OACZ,CAAE,MAAOA,GAAM,CACf2sB,IACAE,GAAqC,EACvC,CAwF+BO,GAAuBj1B,SAErC8G,EAAE,+GAOfnG,cAACuiB,GAAc,CACb/jB,KAAMA,EACNgkB,QAASA,EACTC,aAAcA,MAEf,EClIQ8R,OAtCf,SAAqB3Y,GAAuE,IAAtE,SAAEzB,EAAQ,iBAAEqa,EAAgB,qBAAEC,EAAoB,cAAEZ,GAAejY,EACvF,MAAM,EAAEzV,GAAMC,eACP0tB,EAAmCC,GAAwC11B,IAAM6D,UAAS,IAE1F8xB,EAAYU,GAAiBr2B,IAAM6D,SAAS,KAC5C6gB,EAAeC,GAAoB3kB,IAAM6D,SAASuyB,GAOzD,OACEt1B,eAACylB,GAAa,CAAAvlB,SAAA,CACZW,cAAC8kB,GAAY,CAACxd,UAAU,eAAcjI,SACpCW,cAAC+d,KAAO,CAACC,MAAuC7X,GAAP,IAAzBsuB,EAAkC,mFAAwF,mFAAmFp1B,SAC3NF,eAAA,SAAOmI,UAAU,SAAQjI,SAAA,CACvBW,cAAA,SACEwI,KAAK,WACLF,SAX+BqsB,KACzCD,EAAcF,GACdT,GAAqC,EAAK,EAUhCvW,SAAkC,IAAzBiX,IAEXz0B,cAAA,OAAKsH,UAAU,wBAIrBtH,cAAC4zB,GAA6B,CAC5BC,cAAeA,EACf1Z,SAAUA,EACV2Z,kCAAmCA,EACnCC,qCAAsCA,EACtChR,cAAeA,EACfC,iBAAkBA,EAClBgR,WAAYA,MAIpB,E,0FCWA,MAAMY,GAAW3rB,cAAYoT,IAAK,CAChCnT,KAAM,CACJ,uBAAwB,CACtBrJ,OAAQwc,EAAMwY,QAAQ,IAExBpY,QAAS,OACTC,cAAe,SACfH,WAAY,SACZzc,IAAK,OACLsJ,QAAS,QAEX0rB,MAAO,CACLrY,QAAS,OACTvc,OAAQ,OACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9BtH,QAAS,OACTC,cAAe,SACfxc,OAAQ,QACRhC,MAAO,UAGX62B,YAAa,CACXhY,gBAAiB,UACjBnf,MAAO,OACP4e,UAAW,SACXG,eAAgB,UAElBqY,eAAgB,CACdvY,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChBzc,OAAQ,MACR0qB,EAAG,CAAC,GAENqK,oBAAqB,CACnBxY,QAAS,OACTvc,OAAQ,MACRhC,MAAO,OACPwe,cAAe,SACfC,eAAgB,SAChBJ,WAAY,UAEd2Y,eAAgB,CACdh3B,MAAO,QAETi3B,gBAAiB,CACf1Y,QAAS,OACTE,eAAgB,SAChBze,MAAO,8BAILk3B,GACJ,yFAEWC,GAA2BzZ,IAuBjC,IAAD0Z,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAvBmC,WACvC5B,EAAU,kBACV6B,EAAiB,qBACjBC,EAAoB,oBACpBC,EAAmB,kBACnBC,EAAiB,wBACjBC,EAAuB,gBACvBC,EAAe,sBACfC,EAAqB,cACrBC,EAAa,oBACbC,EAAmB,aACnBC,EAAY,mBACZC,EAAkB,iBAClBC,EAAgB,uBAChBC,EAAsB,eACtBC,EAAc,qBACdC,EAAoB,uBACpBC,EAAsB,UACtBC,EAAS,yBACTC,EAAwB,+BACxBC,EAA8B,yBAC9BC,EAAwB,+BACxBC,GACDrb,EACC,MAAM,EAAEzV,GAAMC,cACRiW,EAAQ6a,eACRztB,EAAUmrB,MAEV,yBACJuC,EAAwB,4BACxBC,EAA2B,oBAC3BptB,GACE3L,IAAMyD,WAAWC,MAEd+uB,EAAcuG,GAAmBn1B,mBAAS,CAC/Co1B,YAAa,GACbC,aAAc,GACdC,SAAU,GACV/S,SAAS,EACTgT,YAAa,GACbC,aAAc,GACdC,YAAa,GACbC,kBAAmB,GACnBC,gBAAiB,GACjBC,WAAY,GACZC,UAAW,GACXC,0BAA2B,GAC3BC,0BAA2B,GAC3BC,SAAU,GACVC,aAAc,KAGVC,EAASC,iBAAO,OACfC,EAAeC,GAAuBr2B,oBAAS,IAC/Cs2B,EAAiBC,GAAsBv2B,oBAAS,IAChDw2B,GAAuBC,IAA4Bz2B,oBAAS,IAC5D02B,GAAuBC,IAA4B32B,oBAAS,IAC5D42B,IAAiBt2B,YAAYixB,KAC7BsF,IAAev2B,YAAYkxB,KAC3BsF,GAAqBC,IAA0B/2B,oBAAS,IACxDg3B,GAAkBC,IAAuBj3B,oBAAS,IAEnD,KAAE8B,GAAI,QAAEuW,GAAO,MAAE/V,GAAK,QAAEqnB,IAAYrR,aAAS6Y,GAAmB,CACpE7sB,UAAW,CAAEjH,GAAIvC,SAASg3B,MAyG5BlxB,qBAAU,KACJkB,IAAQ6xB,GAvGcv7B,WAAa,IAAD8+B,EACtC,MAAMlf,EAAc,OAAJlW,SAAI,IAAJA,IAAoB,QAAhBo1B,EAAJp1B,GAAMq1B,sBAAc,IAAAD,OAAhB,EAAJA,EAAuB,GAEvC,GAAIlf,EAAS,CACX,MAAMof,EAAgBC,GACpBjrB,OAAOtR,SAAmB,OAAVu8B,QAAU,IAAVA,OAAU,EAAVA,EAAYrqB,UAAU,EAAG,IACrCsqB,EAAkBD,GACtBjrB,OAAOtR,SAAmB,OAAVu8B,QAAU,IAAVA,OAAU,EAAVA,EAAYrqB,UAAU,EAAG,IAErC4H,EAAmB,OAAPoD,QAAO,IAAPA,OAAO,EAAPA,EAASuf,WAIrB1iB,GAHgBuiB,EAAaxiB,GACX0iB,EAAe1iB,GAEhB,OAAPoD,QAAO,IAAPA,OAAO,EAAPA,EAASwf,UAInBC,GAHcL,EAAaviB,GACXyiB,EAAeziB,GAEV,OAAPmD,QAAO,IAAPA,OAAO,EAAPA,EAAS0f,wBACvBC,EAA+B,OAAXF,QAAW,IAAXA,OAAW,EAAXA,EAAah4B,KACjCm4B,EAA+B,OAAXH,QAAW,IAAXA,OAAW,EAAXA,EAAal/B,SACjCs/B,EAA+B,OAAXJ,QAAW,IAAXA,OAAW,EAAXA,EAAaK,UACjCC,EAAmC,OAAXN,QAAW,IAAXA,OAAW,EAAXA,EAAaO,cAErCC,EAAsBj0B,oCAE5B,IAAIk0B,EAAqB,GACvBC,EAAqB,GACrBnC,EAAW,GACXC,EAAe,GAEjB,IACM0B,IACFO,QAA2B39B,EACzBo9B,EACAM,IAGAL,IACFO,QAA2B59B,EACzBq9B,EACAK,IAGAJ,IACF7B,QAAiBz7B,EAAYs9B,EAAmBI,IAE9CF,IACF9B,QAAqB17B,EACnBw9B,EACAE,IAIJ9C,EAAgB,IACXvG,EACH2G,YAAoB,OAAPvd,QAAO,IAAPA,OAAO,EAAPA,EAAS5e,KACtBi8B,aAAqB,OAAPrd,QAAO,IAAPA,OAAO,EAAPA,EAAS/V,QACvBuzB,aAAqB,OAAPxd,QAAO,IAAPA,OAAO,EAAPA,EAASnE,MACvB4hB,YAAoB,OAAPzd,QAAO,IAAPA,OAAO,EAAPA,EAAS7V,KACtB0zB,UAAkB,OAAP7d,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,UAapBH,kBAA0B,OAAP1d,QAAO,IAAPA,OAAO,EAAPA,EAASuf,WAC5B5B,gBAAwB,OAAP3d,QAAO,IAAPA,OAAO,EAAPA,EAASwf,SAC1B5B,WAAmB,OAAP5d,QAAO,IAAPA,OAAO,EAAPA,EAAS8S,IACrBgL,0BAA2BoC,EAC3BnC,0BAA2BoC,EAC3BnC,SAAUA,EACVC,aAAcA,GAElB,CAAE,MAAOmC,GACP71B,QAAQ+f,IAAI,4BAA6B8V,GAEzCjD,EAAgB,IACXvG,EACH2G,YAAoB,OAAPvd,QAAO,IAAPA,OAAO,EAAPA,EAAS5e,KACtBi8B,aAAqB,OAAPrd,QAAO,IAAPA,OAAO,EAAPA,EAAS/V,QACvBuzB,aAAqB,OAAPxd,QAAO,IAAPA,OAAO,EAAPA,EAASnE,MACvB4hB,YAAoB,OAAPzd,QAAO,IAAPA,OAAO,EAAPA,EAAS7V,KACtB0zB,UAAkB,OAAP7d,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,UACpBH,kBAA0B,OAAP1d,QAAO,IAAPA,OAAO,EAAPA,EAASuf,WAC5B5B,gBAAwB,OAAP3d,QAAO,IAAPA,OAAO,EAAPA,EAASwf,SAC1B5B,WAAmB,OAAP5d,QAAO,IAAPA,OAAO,EAAPA,EAAS8S,IACrBgL,0BAA2B,GAC3BC,0BAA2B,GAC3BC,SAAU,GACVC,aAAc,IAElB,CACF,GAKEoC,EACF,GACC,CAACv2B,GAAM6xB,IAEV/yB,qBAAU,KACJizB,GACFyE,IACF,GACC,CAACzE,IAEJ,MAAMyE,GAAcA,KAClBnD,EAAgB,IACXvG,EACH2G,YAAa,GACbH,YAAa,GACbC,aAAc,GACdC,SAAU,GACViD,gBAAiB,GACjB/C,aAAc,GACdC,YAAa,GAGbC,kBAAmB,OACnBC,gBAAiB,QACjBE,UAAW,GACXD,WAAY,GACZE,0BAA2B,GAC3BC,0BAA2B,GAC3BC,SAAU,GACVC,aAAc,GACd1T,SAAS,GACT,EAGEiW,GAAoBh7B,IACxB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MACb,oEACH4I,KAAK5I,IAIhB68B,EAAgB,IACXvG,EACH2G,YAAaj9B,IAEfy7B,EAAwBz7B,EAAMqU,QAAU,IAPtConB,GAAwB,EAOgB,EA8BtC0E,GAAiBA,KAAO,IAADC,EACrB,OAANxC,QAAM,IAANA,GAAe,QAATwC,EAANxC,EAAQyC,eAAO,IAAAD,GAAfA,EAAiBE,OAAO,EAGpBC,GAAqBr7B,IACzB,MAAMs7B,EAAOt7B,EAAM0H,OAAO6zB,MAAM,GAChC,GAAID,EAAM,CACR,MAAME,EAAS,IAAIC,WACnBD,EAAOE,OAAUrb,IACf,MAAMsb,EAAQC,SAASC,cAAc,OACrCF,EAAMzzB,IAAMmY,EAAE3Y,OAAOpE,OAErBq4B,EAAMD,OAAUrb,IACd,MAAMyb,EAASF,SAASC,cAAc,UACtCC,EAAOt9B,MAAQ,IACfs9B,EAAOt7B,OAAS,IAChB,MAAMu7B,EAAUD,EAAOE,WAAW,MAClCD,EAAQE,UAAUN,EAAO,EAAG,EAAGG,EAAOt9B,MAAOs9B,EAAOt7B,QACpD,MAAM07B,EAASH,EAAQD,OAAOK,UAAU,aAAc,IACtDxE,EAAgB,IACXvG,EACHgH,WAAY8D,GACZ,CACH,EAEHV,EAAOY,cAAcd,EACvB,MACE3D,EAAgB,IAAKvG,EAAcgH,WAAY,IACjD,EAGIiE,GAAqBC,IACzB,MAAMhP,EAAMgP,EAAO50B,OAAO5M,MAC1B68B,EAAgB,IAAKvG,EAAcgH,WAAY9K,GAAM,EAGjDiP,GAAoBA,CAACv8B,EAAOlF,KAC3BA,GAAU07B,GAAiD,KAA9BpF,EAAayG,cAS7CF,EAAgB,IACXvG,EACH4G,aAAcl9B,EAAMc,OAEtB+6B,GAAoB,KAZpBgB,EAAgB,IACXvG,EACH4G,aAAc,GACdC,YAAa,KAEftB,GAAoB,GACpBE,GAAmB,GAOrB,EAGI2F,GAAgC,OAAhBC,WAAgB,IAAhBA,MAC+C,QAD/B7G,EAAhB6G,KAClB3sB,QAAQof,IAAmB,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAAStzB,SAAqB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,uBAAa,IAAAjC,OAD/B,EAAhBA,EAElBt5B,KAAKogC,GAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMC,kBAElBC,GAAgC,OAAhBH,WAAgB,IAAhBA,MAC+C,QAD/B5G,EAAhB4G,KAClB3sB,QAAQof,IAAmB,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAAStzB,SAAqB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,uBAAa,IAAAhC,OAD/B,EAAhBA,EAElBv5B,KAAKogC,IAAI,IAAAG,EAAAC,EAAA,OACL,OAAJJ,QAAI,IAAJA,GAAqB,QAAjBG,EAAJH,EAAMC,uBAAe,IAAAE,GACoD,QADpDC,EAArBD,EACI/sB,QAAQitB,IAAuB,OAATA,QAAS,IAATA,OAAS,EAATA,EAAWnhC,SAAqB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAc4G,uBAAa,IAAA8E,OADrE,EAAJA,EAEIxgC,KAAKqI,GAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMq4B,8BAA6B,IAGnDC,GAAoB,CACxB,CACErhC,KAAkB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,eAIlBqF,GAAkB,CACtB,CACEthC,KAAsB,QAAlBk6B,EAAE0G,GAAc,UAAE,IAAA1G,GAErB,QAFqBC,EAAhBD,EAAkBvd,MACrBqK,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,QAAoB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAc4G,uBACvC,IAAAjC,OAFqB,EAAhBA,EAEHn6B,OAIDuhC,GAAiB,CACrB,CACEvhC,KAAmB,OAAbghC,SAAa,IAAbA,IACI,QADS5G,EAAb4G,GACFQ,cAAM,IAAApH,GACA,QADAC,EADJD,EAEFoH,cAAM,IAAAnH,GACiD,QADjDC,EAFJD,EAGF1d,MAAMqK,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,QAAoB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAc6G,sBAAY,IAAA/B,OAHxC,EAAbA,EAGuDt6B,OAI3DyhC,GAAmBA,CAACr9B,EAAOlF,KAC1BA,GAAwC,MAAnB,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAc4G,eAAwBtB,GAOlDiB,EAAgB,IACXvG,EACH6G,YAAan9B,EAAMc,KACnBy8B,UAAW/jB,WAAWxZ,EAAMkL,SAASwJ,UAAU,MAEjDqnB,GAAmB,KAXnBc,EAAgB,IACXvG,EACH6G,YAAa,KAEfpB,GAAmB,GAQrB,EAeIyG,GAAkCt9B,IACtC,MAAMoX,EAAYpX,EAAM0H,OAAO5M,MAAM0U,UAAU,EAAG,GAAG+S,OAC/ClL,EAAUrX,EAAM0H,OAAO5M,MAAM0U,UAAU,EAAG,IAAI+S,OAClC,OAAdnL,GAAoC,KAAdA,EACxB2f,GAAuB,IAEvBY,EAAgB,IACXvG,EACH8G,kBAAmB9gB,EACnB+gB,gBAAiB9gB,IAEnB0f,GAAuB,GACzB,EAeIwG,GAA+Bv9B,IACnC,MAAM,KAAEpE,EAAO,GAAE,MAAEd,EAAQ,IAAOkF,EAAM0H,OACxCiwB,GAAiB6F,IAAI,IAAWA,EAAM,CAAC5hC,GAAOd,KAAS,EAanD2iC,GAAuBA,IAAMhE,IAAqBiE,IAAUA,IAC5DC,GAA0BA,IAAMpE,IAAwBmE,IAAUA,IAElEE,GAAmBA,KACvBlG,GAA4B,GAC5BtB,GAAqB,GACjBC,IAAwBF,GAC1B2E,IACF,EAGI5W,GAAmBA,KACvB2U,GAAoB,GACpBE,GAAmB,EAAM,EAW3B,GAAIj0B,GACF,OACExE,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEf1U,UAAU,QACVM,IAAI,iEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAKhB,GAAIuS,GACF,OACEva,cAAA,OACES,MAAO,CACLkc,eAAgB,SAChBJ,WAAY,UACZld,SAEFW,cAAC+b,GAAO,MAKd,MAAMwhB,GAA0BA,KAC9B3G,GAAwB,EAGpB4G,GAAeljC,UACnB,GACE07B,GACAQ,GACAE,GACAR,GACAI,GACAF,EAIA,IAiBE,MAAM+D,EAAsBj0B,oCACtBu3B,QAAoCljC,EAC5B,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAckH,0BACdmC,GAEIuD,QAAoCnjC,EAC5B,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAcmH,0BACdkC,GAEIwD,QAA0BpjC,EAClB,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAcoH,SACdiC,GAEIyD,QAA8BrjC,EACtB,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAcqH,aACdgC,GAGI0D,EAAuB,CAC3Br3B,UAAW,CACTjH,GAAIy0B,EACJ14B,KAAkB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAc2G,YACpBtzB,QAAqB,OAAZ2sB,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,aACvBxhB,MAAmB,OAAZ+a,QAAY,IAAZA,OAAY,EAAZA,EAAc4G,aACrBrzB,KAAkB,OAAZysB,QAAY,IAAZA,OAAY,EAAZA,EAAc6G,YACpBH,SAAsB,OAAZ1G,QAAY,IAAZA,OAAY,EAAZA,EAAc0G,SACxBiD,gBAA6B,OAAZ3J,QAAY,IAAZA,OAAY,EAAZA,EAAc2J,gBAG/BhB,WAAwB,OAAZ3I,QAAY,IAAZA,OAAY,EAAZA,EAAc8G,kBAC1B8B,SAAsB,OAAZ5I,QAAY,IAAZA,OAAY,EAAZA,EAAc+G,gBACxBE,UAAuB,OAAZjH,QAAY,IAAZA,OAAY,EAAZA,EAAciH,UACzB/K,IAAiB,OAAZ8D,QAAY,IAAZA,OAAY,EAAZA,EAAcgH,WACnB8B,uBAAwB,CACtBj4B,KAAM87B,EACNhjC,SAAUijC,EACV1D,UAAW2D,EACXzD,cAAe0D,WAKf7E,GAAY8E,GAAsB52B,OAAO62B,IAC7Cr5B,QAAQ+f,IAAI,iBAAkBsZ,EAAe,IAG/CP,KACA1R,KAEAhI,YAAW,KACT0U,GAAoB,GACpBnB,GAA4B,EAAM,GACjC,IACL,CAAE,MAAOkD,GACP71B,QAAQ+f,IAAI8V,EACd,CACF,EAGIyD,GAAkBzjC,UACtB,GACE07B,GACAQ,GACAE,GACAR,GACAI,GACAF,EAIA,IACE,MAAM+D,EAAsBj0B,oCAetB83B,EAAS,CAAChhC,SAAS6B,aAAaC,QAAQ,QACxC2+B,QAAoCljC,EAC5B,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAckH,0BACdmC,GAEIuD,QAAoCnjC,EAC5B,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAcmH,0BACdkC,GAEIwD,QAA0BpjC,EAClB,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAcoH,SACdiC,GAEIyD,QAA8BrjC,EACtB,OAAZu2B,QAAY,IAAZA,OAAY,EAAZA,EAAcqH,aACdgC,GAGI8D,EAAwB,CAC5Bz3B,UAAW,CACTlL,KAAkB,OAAZw1B,QAAY,IAAZA,OAAY,EAAZA,EAAc2G,YAGpBgC,WAAwB,OAAZ3I,QAAY,IAAZA,OAAY,EAAZA,EAAc8G,kBAC1B8B,SAAsB,OAAZ5I,QAAY,IAAZA,OAAY,EAAZA,EAAc+G,gBACxB1zB,QAAqB,OAAZ2sB,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,aACvBxhB,MAAmB,OAAZ+a,QAAY,IAAZA,OAAY,EAAZA,EAAc4G,aACrBrzB,KAAkB,OAAZysB,QAAY,IAAZA,OAAY,EAAZA,EAAc6G,YACpBH,SAAsB,OAAZ1G,QAAY,IAAZA,OAAY,EAAZA,EAAc0G,SACxBiD,gBAA6B,OAAZ3J,QAAY,IAAZA,OAAY,EAAZA,EAAc2J,gBAC/B1C,UAAuB,OAAZjH,QAAY,IAAZA,OAAY,EAAZA,EAAciH,UAEzBsD,MAAmB,OAAZvK,QAAY,IAAZA,OAAY,EAAZA,EAAcgH,WACrBoG,OAAQ,EACRC,OAAQH,EACRpE,uBAAwB,CACtBj4B,KAAM87B,EACNhjC,SAAUijC,EACV1D,UAAW2D,EACXzD,cAAe0D,WAKf9E,GAAcmF,GAAuBh3B,OAAO62B,IAChDr5B,QAAQ+f,IAAI,kBAAmBsZ,EAAe,IAGhDP,KACA9E,GAAmB,GAEnB5U,YAAW,KACTuT,GAA4B,GAC5BoD,IAAa,GACZ,IACL,CAAE,MAAOF,GACP71B,QAAQ+f,IAAI8V,EACd,CACF,EAGS,IAADjd,GAAA+gB,GAAV,OAAIp6B,GAEA7E,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACoiB,KAAM,CACLja,UAAU,sBACV,kBAAgB,0BAChB9G,WAAY,CACVZ,GAAI,CACF1B,MAAO,QACPgC,OAAQ,OACRH,aAAc,MACd,CAACsc,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7jB,OAAQ,QAC1C,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7jB,OAAQ,QAC1C,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7jB,OAAQ,UAG9C1B,KAAM24B,EACN72B,QAASA,IAAMg9B,KAAmBj+B,SAAA,CAElCW,cAACyhB,KAAM,CAAC7hB,GAAI,CAAEuiB,SAAU,WAAYpF,gBAAiB,WAAY1d,SAC/DF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACie,KAAU,CACTre,GAAI,CACF0+B,KAAM,MACN9hB,UAAW,UAEbnb,QAAQ,KACRsK,UAAU,MAAKtM,SAEfW,cAAA,QAAAX,SACGnD,OACCiK,EACE,GAAGivB,KACDS,EAAoB,OAAS,uBAMvC71B,cAACV,IAAU,CACT1B,MAAM,UACN6B,QAAS69B,GACT19B,GAAI,CACF6c,QAAS,OACT0F,SAAU,YAEZoc,KAAK,MAAKl/B,SAEVW,cAACmkB,KAAS,WAIhBhlB,eAAA,QAAMmI,UAAWmC,EAAQP,KAAMs1B,YAAU,EAACC,aAAa,MAAKp/B,SAAA,CAC1DF,eAAA,OAAKmI,UAAWmC,EAAQurB,eAAgBv1B,QAASk7B,GAAet7B,SAAA,CAC9DW,cAAA,SACEwI,KAAK,OACLL,IAAKiwB,EACL9vB,SAAUyyB,GACVt6B,MAAO,CAAEgc,QAAS,UAEpBzc,cAAC0+B,KAAM,CACLr9B,QAAQ,UACRuG,IAAiB,OAAZkpB,QAAY,IAAZA,OAAY,EAAZA,EAAcgH,WACnBl4B,GAAI,CACF1B,MAAO,IACPgC,OAAQ,IACRy+B,UAAW,yCACXC,OAAQ,UACR,SAAU,CAAEC,QAAS,OAErB,CAACxiB,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,IACPgC,OAAQ,MAEVb,SAEFW,cAAC8+B,KAAW,SAIhB3/B,eAAA,OAAKmI,UAAWmC,EAAQwrB,oBAAoB51B,SAAA,CAC1CF,eAAC8sB,KAAW,CACV7D,KAAK,QACLxoB,GAAI,CACF6c,QAAS,OACTvc,OAAQ,GACRhC,MAAO,IACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,SACzCmB,SAAA,CAEFW,cAACksB,KAAU,CAAC3sB,GAAG,0BAAyBF,SACrC8G,EAAE,GAAGivB,gCAERp1B,cAACmsB,KAAM,CACLC,QAAQ,0BACR7sB,GAAG,oBACH/E,MAAmB,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAcgH,WACrBva,MAAM,uBACNjV,SAAUyzB,GAAkB18B,SAElB,OAATw3B,QAAS,IAATA,OAAS,EAATA,EAAW76B,KAAKV,GACf0E,cAACa,KAAQ,CAAkBrG,MAAW,OAAJc,QAAI,IAAJA,OAAI,EAAJA,EAAM0xB,IAAI3tB,SACrC,OAAJ/D,QAAI,IAAJA,OAAI,EAAJA,EAAMA,MADU,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMA,aAM3B0E,cAACgiB,KAAS,CACR1a,UAAU,eACV+gB,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAClCH,GAAI,CACF6c,QAAS,OACTvc,OAAQ,GACRhC,MAAO,IACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,SAE3CmK,YAAY,kBACZ7N,MAAmB,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAc2G,YACrBnvB,SAAUoyB,GACV98B,MAAOo4B,EAAoB,UAAY,QACvCz2B,GAAG,qBACHs1B,QAAS,EACTv5B,KAAK,eACL+F,QAAQ,WACR+mB,KAAK,QACLqW,aAAa,QAEfz+B,cAACwnB,KAAY,CACXjoB,GAAG,sBACH6oB,KAAK,QACL3qB,QAAS0+B,KACT3hC,MAAOmiC,GAAkB,GACzBr0B,SAAWyX,GA1iBIzkB,KAC3B,MAAMyjC,EAA+B,OAAhB5C,WAAgB,IAAhBA,UAAgB,EAAhBA,KAAkBlkB,MAAM5J,IAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG/S,QAASA,IAcvD,IAAD0jC,EAAAC,EAbM,KAAT3jC,GAAwB,OAATA,GACjB+7B,EAAgB,IACXvG,EACHyG,aAAc,GACdC,SAAU,GACViD,gBAAiB,GACjBnD,YAAa,GACbI,aAAc,GACdC,YAAa,KAEfxB,GAAsB,GACtBE,GAAoB,GACpBE,GAAmB,KAEnBc,EAAgB,IACXvG,EACHwG,YAAyB,OAAZyH,QAAY,IAAZA,OAAY,EAAZA,EAAcG,KAC3B3H,aAA0B,OAAZwH,QAAY,IAAZA,OAAY,EAAZA,EAAczjC,KAC5Bk8B,SAAsB,OAAZuH,QAAY,IAAZA,GAA0B,QAAdC,EAAZD,EAAcI,oBAAY,IAAAH,OAAd,EAAZA,EAA4BxH,SACtCiD,gBAA6B,OAAZsE,QAAY,IAAZA,GAA0B,QAAdE,EAAZF,EAAcI,oBAAY,IAAAF,OAAd,EAAZA,EAA4BG,iBAE/CjJ,GAAsB,GACxB,EAkhB6BkJ,CAAoBtf,EAAE3Y,OAAOk4B,aAC9CC,eAAa,EACbtX,eAAiBrnB,IAAiB,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQtF,OAAQ,GAC5CkkC,aAAcA,CAAC7hC,EAAOiD,IACpBzB,eAACsgC,KAAG,CACF9zB,UAAU,KACV/L,GAAI,CAAE,UAAW,CAAE8/B,GAAI,EAAGC,WAAY,OAClChiC,EAAK0B,SAAA,CAETW,cAAA,OACEua,QAAQ,OACRrc,MAAM,KACN0J,IAAK,2BAA2BhH,EAAOs+B,KAAK57B,oBAC5Cs8B,OAAQ,2BAA2Bh/B,EAAOs+B,KAAK57B,uBAC/C4E,IAAI,KAELtH,EAAOtF,QAGZ4sB,YAAcC,GACZnoB,cAACgiB,KAAS,CACRpiB,GAAI,CACFM,OAAQ,GACRhC,MAAO,IACP6B,aAAc,EACd,CAACsc,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,aAEvCiqB,EACJ5K,MAAOpX,EAAE,GAAGivB,aACZx3B,MAAOs4B,EAAkB,UAAY,QACrC2J,WAAY,IACP1X,EAAO0X,WACVpB,aAAc,gBACdp/B,SAEe,OAAhB88B,WAAgB,IAAhBA,UAAgB,EAAhBA,KAAkBngC,KAAK8jC,GACtB9/B,cAACa,KAAQ,CAEPrG,MAAqB,OAAdslC,QAAc,IAAdA,OAAc,EAAdA,EAAgBZ,KAAK7/B,SAEb,OAAdygC,QAAc,IAAdA,OAAc,EAAdA,EAAgBxkC,MAHE,OAAdwkC,QAAc,IAAdA,OAAc,EAAdA,EAAgBZ,YAS/B//B,eAAA,OAAKmI,UAAWmC,EAAQqrB,MAAMz1B,SAAA,CAC5BW,cAACisB,KAAW,CAACrsB,GAAI,CAAEM,OAAQ,IAAKhC,MAAO,KAAMmB,SAC3CW,cAACwnB,KAAY,CACXjoB,GAAG,sBACH6oB,KAAK,QACLxoB,GAAI,CAAE1B,MAAO,YACb0jB,SACiC,MAAnB,OAAZkP,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,iBAOb,QANDla,GAAC,CACC,WACA,SACA,cACA,UACA,+BACD,IAAAA,IANAA,GAMEuJ,SAAqB,OAAZkK,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,eAE5B95B,QAAsB,OAAby+B,SAAa,IAAbA,QAAa,EAAbA,GAAeY,OACxB7U,eAAiBrnB,IAAiB,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQtF,OAAQ,GAC5CgN,SAAU2zB,GACVzhC,MAAOoiC,GAAgB,GACvB1U,YAAcC,IAAM,IAAA4X,EAAA,OAClB//B,cAACgiB,KAAS,IACJmG,EACJvoB,GAAI,CACF1B,MAAO,WACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9BtH,QAAS,OACTve,MAAO,UAGXN,MAAOw4B,EAAgB,UAAY,QACnC7Y,MAAOpX,EAAE,GAAGivB,WACZxT,SACiC,MAAnB,OAAZkP,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,iBAOb,QANDwI,EAAC,CACC,WACA,SACA,cACA,UACA,+BACD,IAAAA,GANAA,EAMEnZ,SAAqB,OAAZkK,QAAY,IAAZA,OAAY,EAAZA,EAAcyG,gBAE5B,MAIRv3B,cAACisB,KAAW,CAACrsB,GAAI,CAAEM,OAAQ,IAAKhC,MAAO,KAAMmB,SAC3CW,cAACwnB,KAAY,CACXjoB,GAAG,sBACHK,GAAI,CAAE1B,MAAO,YACb0jB,SAAyC,MAAnB,OAAZkP,QAAY,IAAZA,OAAY,EAAZA,EAAc4G,cACxBtP,KAAK,QACL3qB,QAAsB,OAAb6+B,SAAa,IAAbA,IAAqB,QAAR8B,GAAb9B,GAAeQ,cAAM,IAAAsB,QAAR,EAAbA,GAAuBtB,OAChC7U,eAAiBrnB,IAAiB,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQtF,OAAQ,GAC5CgN,SAAUy0B,GACVviC,MAAOqiC,GAAe,GACtB3U,YAAcC,GACZnoB,cAACgiB,KAAS,CACRpiB,GAAI,CACF1B,MAAO,WACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9BtH,QAAS,OACTve,MAAO,aAGPiqB,EACJvqB,MAAO04B,EAAe,UAAY,QAClC/Y,MAAOpX,EAAE,GAAGivB,UACZxT,SAAyC,MAAnB,OAAZkP,QAAY,IAAZA,OAAY,EAAZA,EAAc4G,uBAMlC13B,cAAA,OAAKS,MAAO,CAAEgc,QAAS,OAAQ3c,IAAK,QAAST,SAC3CF,eAAC8sB,KAAW,CACV7D,KAAK,QACLxqB,MAAO44B,EAAmB,UAAY,QACtC52B,GAAI,CACF1B,MAAO,IACPgC,OAAQ,GACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9BtH,QAAS,OACTve,MAAO,UAETmB,SAAA,CAEFW,cAACksB,KAAU,CAAC3sB,GAAG,0BAAyBF,SACrC8G,EAAE,GAAGivB,oBAERj2B,eAACgtB,KAAM,CACLC,QAAQ,0BACR7sB,GAAG,oBACHge,MAAOpX,EAAE,GAAGivB,kBACZ56B,MAAO,GAAe,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAc8G,uBAAmC,OAAZ9G,QAAY,IAAZA,OAAY,EAAZA,EAAc+G,kBAC7DvvB,SAAU00B,GAA+B39B,SAAA,CAEzCW,cAACa,KAAQ,CACPJ,MAAO,CAAEgc,QAAS,OAAQE,eAAgB,UAC1CniB,MAAO,eAAe6E,SACvB,wBAGDW,cAACa,KAAQ,CACPJ,MAAO,CAAEgc,QAAS,OAAQE,eAAgB,UAC1CniB,MAAO,gBAAgB6E,SACxB,8BAwDPW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChB9c,OAAQ,mBACRuJ,QAAS,mBACTlL,MAAO,MACPL,SAAU,OACVkhB,WAAY,MACZihB,UAAW,cACX3gC,SAED8G,EAAE,GAAGivB,wBAERj2B,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,OAAQC,cAAe,UAAWrd,SAAA,CACpDF,eAAA,QACEsB,MAAO,CACL+b,UAAW,SACX3c,OAAQ,oBACRR,SAAA,CACH,oBAECW,cAAA,KAAAX,SAAI8G,EAAE,GAAGivB,wBAA4C,uBAGvDj2B,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,QAASpd,SAAA,CAC3BW,cAACgiB,KAAS,CACRziB,GAAG,sBACHjE,KAAK,4BACLgM,UAAU,eACV8gB,KAAK,QACL/mB,QAAQ,WACR4+B,OAAK,EACL53B,YAAalC,EACX,GAAGivB,+BAELP,QAAS,EACTr6B,MAAmB,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAckH,0BACrB1vB,SAAW5I,GACTu9B,GACEv9B,GAIJE,GAAI,CACF6c,QAAS,OACTvc,OAAQ,GACRhC,MAAO,IACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,SAE3CmqB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,GACpB0+B,aAAc,SAGlBt/B,eAAC8sB,KAAW,CACV7D,KAAK,QACLxoB,GAAI,CACF6c,QAAS,OACTve,MAAO,IACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,QACzCmgB,EAAG,GAELhd,QAAQ,WAAUhC,SAAA,CAElBW,cAACksB,KAAU,CAACgU,QAAQ,8BAA6B7gC,SAC9C8G,EAAE,GAAGivB,iCAERp1B,cAACgwB,KAAa,CACZzwB,GAAG,sBACHjE,KAAK,4BACLiiB,MAAOpX,EACL,GAAGivB,+BAELhN,KAAK,QACLxoB,GAAI,CAAEG,aAAc,OACpByI,KAAMwwB,GAAsB,OAAS,WACrCx+B,MAAmB,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAcmH,0BACrB3vB,SAAW5I,GAAUu9B,GAA4Bv9B,GACjD++B,aAAa,eACbnW,aACEtoB,cAACmgC,KAAc,CAAChe,SAAS,MAAK9iB,SAC5BW,cAACV,IAAU,CACT,aAAW,6BACXG,QAAS49B,GACTkB,KAAK,MAAKl/B,SAET25B,GACCh5B,cAACogC,IAAa,IAEdpgC,cAACqgC,IAAU,gBAQzBlhC,eAAA,QACEsB,MAAO,CACL+b,UAAW,SACX3c,OAAQ,oBACRR,SAAA,CACH,oBAECW,cAAA,KAAAX,SAAI8G,EAAE,GAAGivB,wBAA4C,uBAGvDj2B,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,QAASpd,SAAA,CAC3BW,cAACgiB,KAAS,CACRziB,GAAG,sBACHjE,KAAK,WACLgM,UAAU,eACV8gB,KAAK,QACL/mB,QAAQ,WACRgH,YAAalC,EACX,GAAGivB,+BAELP,QAAS,EACTr6B,MAAmB,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAcoH,SACrB5vB,SAAW5I,GAjsBJA,KACvB,MAAM,MAAElF,EAAQ,IAAOkF,EAAM0H,OAC7BiwB,GAAiB6F,IAAI,IAAWA,EAAMhF,SAAU19B,KAAS,EA+rBpB8lC,CAAgB5gC,GACrCE,GAAI,CACF6c,QAAS,OACTvc,OAAQ,GACRhC,MAAO,IACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,SAE3CmqB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,GACpB0+B,aAAc,SAIlBt/B,eAAC8sB,KAAW,CACV7D,KAAK,QACLxoB,GAAI,CACF6c,QAAS,OACTve,MAAO,IACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAAE7lB,MAAO,QACzCmgB,EAAG,GAELhd,QAAQ,WAAUhC,SAAA,CAElBW,cAACksB,KAAU,CAACgU,QAAQ,8BAA6B7gC,SAC9C8G,EAAE,GAAGivB,iCAERp1B,cAACgwB,KAAa,CACZzwB,GAAG,sBACHjE,KAAK,eACLiiB,MAAOpX,EACL,GAAGivB,+BAELhN,KAAK,QACLxoB,GAAI,CAAEG,aAAc,OACpByI,KAAM0wB,GAAmB,OAAS,WAClC1+B,MAAmB,OAAZs2B,QAAY,IAAZA,OAAY,EAAZA,EAAcqH,aACrB7vB,SAAW5I,GAhuBFA,KAC3B,MAAM,MAAElF,EAAQ,IAAOkF,EAAM0H,OAC7BiwB,GAAiB6F,IAAI,IAAWA,EAAM/E,aAAc39B,KAAS,EA8tBtB+lC,CAAoB7gC,GACzC++B,aAAa,eACbnW,aACEtoB,cAACmgC,KAAc,CAAChe,SAAS,MAAK9iB,SAC5BW,cAACV,IAAU,CACT,aAAW,6BACXG,QAAS09B,GACToB,KAAK,MAAKl/B,SAET65B,GACCl5B,cAACogC,IAAa,IAEdpgC,cAACqgC,IAAU,sBAgC7BrgC,cAAA,OAAKsH,UAAWmC,EAAQ0rB,gBAAgB91B,SACtCW,cAACskB,KAAM,CACL1kB,GAAI,CACFG,aAAc,EACd4+B,UAAW,yCACXzgC,MAAO,MACP,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9BtH,QAAS,OACTve,MAAO,UAGX0jB,UACGsU,IACAI,IACAF,IACAJ,IACAQ,IACAE,EAIHr1B,QAAQ,YACRzD,MAAM,UACNwqB,KAAK,SACL3oB,QAASo2B,EAAoB2H,GAAeO,GAAgB1+B,SAE3D8G,EAAE,GAAGivB,2BAMdj2B,eAAA,OAAAE,SAAA,CACEW,cAACuH,KAAQ,CACP/I,KAAMg6B,EACNhxB,iBAAkB,IAClBlH,QAASsjB,GACT4c,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACwG,SAAS,UAASrI,SACtB8G,EAAE,GAAGivB,6BAIVp1B,cAACuH,KAAQ,CACP/I,KAAM85B,EACN9wB,iBAAkB,IAClBlH,QAASsjB,GACT4c,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACwG,SAAS,UAASrI,SACtB8G,EAAE,GAAGivB,oCA/kBlB,CAqlBA,ECn0CWuL,GAAiBA,KAE5B,MAAOC,EAAaC,GAAW3+B,mBAAS,OACjCqY,EAASumB,GAAc5+B,oBAAS,IAChCsC,EAAOu8B,GAAY7+B,mBAAS,MAGnCsY,aAASgZ,GAAsB,CAC7B9Y,YAAa,eACbsmB,YAAch9B,IAAU,IAAD8nB,EACrB+U,EAAY,OAAJ78B,QAAI,IAAJA,GAA0B,QAAtB8nB,EAAJ9nB,EAAM+nB,4BAAoB,IAAAD,OAAtB,EAAJA,EAA4BE,SAAS,EAE/CiV,QAAUz8B,IACRs8B,GAAW,GACXC,EAASv8B,EAAM,IAenB,MAAO,CAAE08B,eAVyB,OAAXN,QAAW,IAAXA,OAAW,EAAXA,EAAa5kC,KAAIqS,IAAC,CACvC9O,GAAIrD,OAAOmS,EAAE9O,IACbjE,KAAM+S,EAAE/S,KACR0xB,IAAM3e,EAAE2e,IACR7oB,QAAUkK,EAAElK,QACZ4R,MAAQ1H,EAAE0H,MACV1R,KAAOgK,EAAEhK,KACTogB,QAASpW,EAAEoW,YAGY,ECTrBzb,GAAYC,aAAW,CAC3BC,KAAM,CACJi4B,SAAU,IACVthC,OAAQ,IAEVuhC,SAAU,CACR7kB,WAAY,SACZI,eAAgB,UAElBlf,QAAS,CACP8L,aAAc,KACdF,UAAW,KACXsT,eAAgB,SAChBJ,WAAY,Y,yBChBhB,MAGMF,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KANc,WAQhB3e,MAAO,CACL2e,KARY,cAaLke,GAA6BzlB,IAMnC,IANoC,OACzC+E,EAAM,qBACN2gB,EAAoB,kBACpBC,EAAiB,+BACjBC,EAA8B,kCAC9BC,GACD7lB,EACC,MAAM,EAAEzV,GAAMC,eACP5H,EAAMmE,GAAWT,oBAAS,IAC1BsgB,EAASc,GAAcphB,sBACvBugB,EAAcc,GAAmBrhB,mBAAS,CAAC,IAC5C,MAAEw/B,EAAK,0BAAEC,EAAyB,6BAAEC,GACxC9/B,qBAAWC,MAEN8/B,GAA6Br/B,YAAYs/B,OAC1C,QAAEjW,GAAYrR,aAASunB,KAAc,CACzCrnB,YAAa,iBAGTsnB,EAAiB,OAALN,QAAK,IAALA,OAAK,EAALA,EAAO1lC,KAAKsmB,IAC5B,GAAI3B,IAAW2B,EAAK/iB,GAClB,MAAO,CAAEA,GAAI+iB,EAAK/iB,GAAIklB,QAASnC,EAAKmC,QACtC,IAGIwd,EAAwB,OAATD,QAAS,IAATA,OAAS,EAATA,EAAWxyB,QAAQnB,QAAY7O,IAAN6O,IAClC,OAAZ4zB,QAAY,IAAZA,KAAcjmC,KAAI,CAACsmB,EAAM9mB,MACF,IAAjB8mB,EAAKmC,QACPnC,EAAKmC,SAAU,EAEfnC,EAAKmC,SAAU,EAEVnC,EAAKmC,WAgBd,MAAMlkB,EAAcA,KAClBqhC,GAA6B,GAC7BH,GAAkC,EAAM,EAG1C,OACEtiC,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACoiB,KAAM,CACL/iB,KAAMmjC,GAA6BH,EACnChhC,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,MACPgC,OAAQ,OACR,CAACmc,GAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAGXmB,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,oBACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SAED8G,EACC,6FAGJnG,cAACV,IAAU,CAACG,QAASc,EAAYlB,SAC/BW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BoC,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChB7c,IAAK,OACLsJ,QAAS,aACT/J,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACfH,WAAY,SACZzc,IAAK,OACL5B,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,OACVwL,UAAW,QACXhK,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTD,UAAW,SACXte,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,QACVwB,SAED8G,EACC,6FAGJnG,cAAA,OAAKS,MAAO,CAAEgc,QAAS,OAAQ3c,IAAK,QAAST,SAC3CW,cAACqkB,KAAa,CAAChI,MAAOA,GAAMhd,SAC1BW,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,UACNwqB,KAAK,QACLxoB,GAAI,CACFhC,MAAO,OACPmC,aAAc,MACd9B,OAAQ,gBACRC,MAAO,IACP,UAAW,CAAE6e,gBAAiB,YAEhCtd,QAASA,MAjHzB,WACE,IACE6hC,GAAsBC,GACtBM,EAA0B,CACxBr7B,UAAW,CAAEupB,MAAOkS,KAEnBv7B,MAAMC,QACNM,OAAOC,OACZ,CAAE,MAAOA,GAAM,CACfu6B,GAAkC,GAClC5V,GACF,CAuGkBqW,GACA3hC,GAAa,EACblB,SAED8G,EACC,yGASdnG,cAACuiB,GAAc,CACb/jB,KAAMA,EACNgkB,QAASA,EACTC,aAAcA,MAEf,ECjJQ0f,OAhDf,SAAyBvmB,GAAwC,IAAvC,cAAEwmB,EAAa,kBAAEC,GAAmBzmB,EAC5D,MAAM,EAAEzV,GAAMC,eACPo7B,EAAgCC,GACrCv/B,oBAAS,IAEJye,EAAQuE,GAAahjB,mBAAS,KAC9Bq/B,EAAmBD,GAAwBp/B,mBAASmgC,GAO3D,OACEljC,eAACylB,GAAa,CAAAvlB,SAAA,CACZW,cAAC8kB,GAAY,CAACxd,UAAU,eAAcjI,SACpCW,cAAC+d,KAAO,CACNC,MAEM7X,GADkB,IAAtBk8B,EAEM,6EAGA,6EAEPhjC,SAEDF,eAAA,SAAOmI,UAAU,SAAQjI,SAAA,CACvBW,cAAA,SACEwI,KAAK,WACLF,SAtB4B6c,KACtCD,EAAUkd,GACVX,GAAkC,EAAK,EAqB7BjkB,SAA+B,IAAtB6kB,IAEXriC,cAAA,OAAKsH,UAAU,wBAIrBtH,cAACqhC,GAA0B,CACzBG,+BAAgCA,EAChCC,kCAAmCA,EACnCF,kBAAmBA,EACnBD,qBAAsBA,EACtB3gB,OAAQA,MAIhB,E,gFCjBA,MAAM3X,GAAYC,cAAYoT,IAAK,CACjCnT,KAAM,CACJ,uBAAwB,CACtBrJ,OAAQwc,EAAMwY,QAAQ,IAExBzrB,QAAS,QAEX0rB,MAAO,CACLrY,QAAS,OACT,CAACJ,EAAMyH,YAAYC,KAAK,OAAQ,CAC9BtH,QAAS,OACTC,cAAe,WAGnB4lB,OAAQ,CACNl5B,QAAS,MACTE,WAAY,OACZD,UAAW,QACXE,aAAc,QAEhBwmB,MAAO,CACLzmB,WAAY,OACZD,UAAW,QAEbk5B,UAAW,CACTh5B,aAAc,MACdF,UAAW,OAEbm5B,YAAa,CACXn5B,UAAW,OACXC,WAAY,OACZC,aAAc,QAEhBk5B,uBAAwB,CACtBhmB,QAAS,OACTimB,oBAAqB,UAErB,CAACrmB,EAAMyH,YAAYC,KAAK,OAAQ,CAAE2e,oBAAqB,SAEzDC,cAAe,CACbzkC,MAAO,QACPoL,WAAY,QACZD,UAAW,OAEbu5B,iBAAkB,CAChB1kC,MAAO,SACPoL,WAAY,OACZD,UAAW,OAGbw5B,OAAQ,CACN3kC,MAAO,yBACP6e,gBAAiB,UACjB1T,UAAW,OACXC,WAAY,MACZC,aAAc,MACdrJ,OAAQ,OACRtC,MAAO,QACPmC,aAAc,MACd,UAAW,CACTgd,gBAAiB,YAGrB+lB,eAAgB,CACdrmB,QAAS,OACTve,MAAO,QAETsG,MAAO,CACLuY,gBAAiB,UACjBlf,SAAU,OACVkC,aAAc,MACdgjC,OAAQ,IACR5gB,SAAU,WACV6gB,KAAM,SAERC,QAAS,CACP/kC,MAAO,QACP+kC,QAAS,CACP/kC,MAAO,SAET4kC,eAAgB,CACdrmB,QAAS,OACTve,MAAO,cAwwBEglC,OAnwBatnB,IAAgC,IAADunB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAA9B,MAAEC,EAAK,MAAEvnB,EAAK,QAAEwP,GAASjQ,EACpD,MAAM,EAAEzV,GAAMC,eACP7E,GAAYiB,YAAYqhC,OACxBC,EAAUC,GAAe1lC,IAAM6D,SAAS,CAC7C8hC,SAAU,GACVC,SAAU,GACVC,SAAU,GACVC,UAAW,GACX7M,YAAa,GACbzwB,MAAO,GACPu9B,cAAc,EACdC,iBAAiB,EACjBC,UAAW,GACXC,SAAU,GACV9pC,SAAU,GACV+pC,YAAa,GACbC,iBAAiB,EACjBhqB,UAAW,GACXiqB,iBAAiB,KAOZC,EAAaC,GAAkBvmC,IAAM6D,SAAS,KAC9C2iC,EAAaC,GAAkB5iC,oBAAS,IACxC6iC,EAAmBC,GAAwB9iC,mBAAS,UACpD+iC,EAAiBC,GAAsBhjC,mBAAS,YAChDijC,EAAgBC,GAAqBljC,oBAAS,IAE/C,GAAEmjC,GAAOvjC,qBAAWC,MAEpB,KAAEiC,EAAI,QAAEuW,EAAO,MAAE/V,GAAUgW,aAAS8qB,KAAe,CACvD5qB,YAAa,oBACblU,UAAW,CACTjH,GAAIvC,SAAS6B,aAAaC,QAAQ,UAIhCymC,EAAcr/B,oCAGduD,EAAUT,KACVw8B,EACJ1B,EAASE,SAASn1B,OAAS,GAC3Bi1B,EAASG,SAASp1B,OAAS,GAMR,KAAnBi1B,EAASj9B,OACTi9B,EAASQ,UAAUz1B,OAAS,GAC3Bi1B,EAASj9B,QAAUi9B,EAASM,eAC5BN,EAASS,WACmB,IAA7BT,EAASY,iBACTZ,EAASrpC,SAASoU,OAAS,IAC1Bi1B,EAASO,iBACVP,EAASU,YAAY31B,OAAS,GAC9Bi1B,EAASU,cAAgBV,EAASrpC,UAE7B0uB,EAAQsc,GAAapnC,IAAM6D,SAAS,CACzCzH,SAAU,GACVuH,cAAc,KAET0jC,EAAWC,GAAgBtnC,IAAM6D,SAAS,CAC/CsiC,YAAa,GACboB,iBAAiB,IAebrlC,EAAcA,CAACb,EAAO+H,KACX,cAAXA,IAGJq9B,GAAe,GACfM,GAAkB,GAAM,EAG1B,GAAI5gC,EACF,OACExE,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEf1U,UAAU,QACVM,IAAI,iEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAMhB,MAAM69B,EAAanmC,IACjB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MACrBc,EAAOoE,EAAM0H,OAAO9L,KAEJd,EAAM0nB,QADd,uBAC6B,MACrB1nB,GAEpBupC,EAAY,IACPD,EACH,CAACxoC,GAAOd,GAEZ,EAoBIqvB,EAAqBnqB,IACzB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MACrBc,EAAOoE,EAAM0H,OAAO9L,KAELd,EAAM0nB,QADb,UAC4B,MACrB1nB,GAEnBupC,EAAY,IACPD,EACH,CAACxoC,GAAOd,GAEZ,EA4IF,OACE2E,eAACopB,WAAQ,CAAAlpB,SAAA,CACPF,eAAA,QAAMmI,UAAWmC,EAAQP,KAAMs1B,YAAU,EAACC,aAAa,MAAKp/B,SAAA,CAC1DF,eAAA,OAAKmI,UAAWmC,EAAQqrB,MAAMz1B,SAAA,CAC5BW,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CACFG,aAAc,OAEhB0+B,aAAc,OAEhB7+B,GAAI,CACF1B,MAAO,WACP,CAAM,OAALme,QAAK,IAALA,GAAkB,QAAb8mB,EAAL9mB,EAAOyH,mBAAW,IAAAqf,OAAb,EAALA,EAAoBpf,KAAK,OAAQ,CAAE7lB,MAAO,SAE7Cqf,MAAOpX,EACL,mFAEFqC,KAAK,OACLjJ,GAAG,WACHjE,KAAK,WACL+F,QAAQ,WACR+mB,KAAK,QACLhgB,UAAQ,EACR5N,MAAOspC,EAASE,SAChB17B,SAAUu9B,EACVjoC,MACwB,KAAtBkmC,EAASE,UAAmBF,EAASE,SAASn1B,OAAS,EACnDk2B,EACAE,IAGRjlC,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBlhB,MAAOpX,EACL,wFAEF5G,GAAG,WACHjE,KAAK,WACL+F,QAAQ,WACR+mB,KAAK,QACLhgB,UAAQ,EACR5N,MAAOspC,EAASG,SAChB37B,SAAUu9B,EACVjoC,MACwB,KAAtBkmC,EAASG,UAAmBH,EAASG,SAASp1B,OAAS,EACnDk2B,EACAE,OAIV9lC,eAAA,OAAKmI,UAAWmC,EAAQqrB,MAAMz1B,SAAA,CAC5BW,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhB7+B,GAAI,CACF1B,MAAO,WACP,CAAM,OAALme,QAAK,IAALA,GAAkB,QAAb+mB,EAAL/mB,EAAOyH,mBAAW,IAAAsf,OAAb,EAALA,EAAoBrf,KAAK,OAAQ,CAAE7lB,MAAO,SAE7Cqf,MAAOpX,EACL,mGAEF5G,GAAG,WACHjE,KAAK,WACL+F,QAAQ,WACR+mB,KAAK,QACL5tB,MAAOspC,EAASI,SAChB57B,SAAUuhB,IASZ7pB,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBn3B,UAAWmC,EAAQq8B,UACnBvoB,MAAOpX,EACL,oFAEFqC,KAAK,QACLjJ,GAAG,QACHjE,KAAK,QACL+F,QAAQ,WACR+mB,KAAK,QACLhgB,UAAQ,EACR5N,MAAOspC,EAASj9B,MAChByB,SArOiB5I,IACzB,MAAMmH,EAAQnH,EAAM0H,OAAO5M,MACrB4pC,EAPev9B,IACP,mCACDzD,KAAKyD,GAKGk/B,CAAcl/B,GACnCk9B,EAAY,IACPD,EACHj9B,MAAOA,EACPu9B,aAAcA,GACd,EA+NMxmC,MACqB,KAAnBkmC,EAASj9B,OACRi9B,EAASj9B,QAAUi9B,EAASM,aACzBW,EACAE,EAENe,WACqB,KAAnBlC,EAASj9B,OACRi9B,EAASj9B,QAAUi9B,EAASM,aACzBj+B,EACE,gGAEF,QAIVhH,eAAA,OAAKmI,UAAWmC,EAAQqrB,MAAMz1B,SAAA,CAC5BW,cAACwnB,KAAY,CACXjoB,GAAG,sBACH6oB,KAAK,QACL3qB,QAAS0+B,KACT7zB,SAAWyX,GAtRQmf,KAC3B,MAAMpwB,EAAMowB,EAAKhd,QAAQ,MAAO,IAChC6hB,EAAY,IACPD,EACHxM,YAAaxoB,GACb,EAiRuBm3B,CAAoBlmB,EAAE3Y,OAAOk4B,aAC9CC,eAAa,EACbtX,eAAiBrnB,GAAW,IAAIA,EAAOslC,UAAUtlC,EAAOtF,QACxDkkC,aAAcA,CAAC7hC,EAAOiD,IACpBzB,eAACsgC,KAAG,CACF9zB,UAAU,KACV/L,GAAI,CAAE,UAAW,CAAE8/B,GAAI,EAAGC,WAAY,OAClChiC,EAAK0B,SAAA,CAETW,cAAA,OACEua,QAAQ,OACRrc,MAAM,KACN0J,IAAK,2BAA2BhH,EAAOs+B,KAAK57B,oBAC5Cs8B,OAAQ,2BAA2Bh/B,EAAOs+B,KAAK57B,uBAC/C4E,IAAI,KAELtH,EAAOtF,KAAK,KAAGsF,EAAOs+B,KAAK,MAAIt+B,EAAOslC,SAG3Che,YAAcC,IAAM,IAAAge,EAAA,OAClBnmC,cAACgiB,KAAS,CACRpiB,GAAI,CACF1B,MAAO,WACP,CAAM,OAALme,QAAK,IAALA,GAAkB,QAAb8pB,EAAL9pB,EAAOyH,mBAAW,IAAAqiB,OAAb,EAALA,EAAoBpiB,KAAK,OAAQ,CAChC7lB,MAAO,8BAGPiqB,EACJ5K,MAAOpX,EACL,sFAOF05B,WAAY,IACP1X,EAAO0X,WACVpB,aAAc,gBACdp/B,SAED88B,KAAiBngC,KAAK8jC,GACrB9/B,cAACa,KAAQ,CAEPrG,MAAOslC,EAAeZ,KAAK7/B,SAE1BygC,EAAeviB,OAHXuiB,EAAeZ,SAMd,IAIhBl/B,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBlhB,MAAOpX,EACL,wFAEF5G,GAAG,YACHjE,KAAK,YACL+F,QAAQ,WACR+mB,KAAK,QACLyX,WAAW,gBACXrlC,MAAOspC,EAASK,UAChB77B,SAAUuhB,OAWd7pB,cAAA,OAAAX,SACEW,cAAA,MAAIsH,UAAWmC,EAAQ+4B,YAAYnjC,SAChC8G,EACC,oGAINnG,cAAA,OAAKsH,UAAWmC,EAAQqrB,MAAMz1B,SAC5BW,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhB7+B,GAAI,CACF1B,MAAO,IACP,CAAM,OAALme,QAAK,IAALA,GAAkB,QAAbgnB,EAALhnB,EAAOyH,mBAAW,IAAAuf,OAAb,EAALA,EAAoBtf,KAAK,OAAQ,CAAE7lB,MAAO,SAE7Cqf,MAAOpX,EACL,mFAEF5G,GAAG,YACHjE,KAAK,YACL+M,YAAY,oBACZhH,QAAQ,WACR+mB,KAAK,QACL5tB,MAAOspC,EAASQ,UAChBh9B,UAAWmC,EAAQw5B,QACnB36B,SAAUu9B,EACVjoC,MACyB,KAAvBkmC,EAASQ,WAAoBR,EAASQ,UAAUz1B,OAAS,EACrDk2B,EACAE,EAENe,WACyB,KAAvBlC,EAASQ,WAAoBR,EAASQ,UAAUz1B,OAAS,EACrD1I,EACE,+FAEF,GAENiC,UAAQ,MAGZjJ,eAAA,OAAKmI,UAAWmC,EAAQg5B,uBAAuBpjC,SAAA,CAC7CW,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBl/B,GAAG,MACHjE,KAAK,WACL20B,OAAQjwB,cAAA,eACRooB,KAAK,QACL7K,MAAOpX,EACL,mFAEF9E,QAAQ,WACRzD,MAAQkmC,EAASS,SAA+BU,EAApBF,EAC5Bz8B,SAAWyX,GAvaIrgB,KACvB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MACrBc,EAAOoE,EAAM0H,OAAO9L,KAC1ByoC,EAAY,IACPD,EACH,CAACxoC,GAAOd,GACR,EAiauB4rC,CAAgBrmB,GAAG1gB,SAE/B,OAAJ2E,QAAI,IAAJA,GAAiB,QAAbs/B,EAAJt/B,EAAMqiC,mBAAW,IAAA/C,OAAb,EAAJA,EAAmBtnC,KAAKsqC,GACvBtmC,cAACa,KAAQ,CAAerG,MAAO8rC,EAAK/mC,GAAGF,SACpCinC,EAAKhrC,MADOgrC,EAAK/mC,QAMxBJ,eAAC8sB,KAAW,CAACrsB,GAAI,CAAEyJ,UAAW,MAAOC,WAAY,OAAQjK,SAAA,CACvDW,cAACksB,KAAU,CACTtsB,GAAI,CACFyJ,WAAY,GAEd9J,GAAG,YAAWF,SAEb8G,EACC,yFAGJnG,cAACmsB,KAAM,CACL3xB,MAAOmqC,EACP/kC,GAAI,CACFG,aAAc,MACd7B,MAAO,WACP,CAAM,OAALme,QAAK,IAALA,GAAkB,QAAbknB,EAALlnB,EAAOyH,mBAAW,IAAAyf,OAAb,EAALA,EAAoBxf,KAAK,OAAQ,CAChC7lB,MAAO,OACPqL,aAAc,MACdyS,YAAa,QAGjBzc,GAAG,YACHjE,KAAK,YACLy0B,MAAO/vB,cAACgwB,KAAa,CAACzS,MAAM,cAC5BgpB,UAAQ,EACRj+B,SAAWyX,GAtYDA,KACpB,MAAMvlB,EAAQulB,EAAE3Y,OAAO5M,MACvBoqC,EAAgC,kBAAVpqC,EAAqBA,EAAMqC,MAAM,KAAOrC,GAC9DupC,EAAY,IACPD,EACHrpB,UAAWkqB,IAEQ,IAAjBnqC,EAAMqU,OACRk1B,EAAY,IACPD,EACHY,iBAAiB,IAGflqC,EAAMqU,OAAS,GACjBk1B,EAAY,IACPD,EACHY,iBAAiB,GAGvB,EAmX2BpnB,CAAayC,GAC9BqI,KAAK,QACL/mB,QAAQ,WACRzD,OAC+B,IAA7BkmC,EAASY,gBACLK,EACAE,EAENnV,UAAW,CAAElwB,GAAI,CAAE1B,MAAO,UAAYmB,SAEjC,OAAJ2E,QAAI,IAAJA,GAAoB,QAAhBw/B,EAAJx/B,EAAMwiC,YAAY,UAAE,IAAAhD,GAAS,QAATC,EAApBD,EAAsBiD,eAAO,IAAAhD,OAAzB,EAAJA,EAA+BznC,KAAKke,GACnCla,cAACa,KAAQ,CAAkBrG,MAAO0f,EAAQ3a,GAAGF,SAC1C6a,EAAQ5e,MADI4e,EAAQ3a,cAO/BJ,eAAA,OAAKmI,UAAWmC,EAAQi9B,KAAKrnC,SAAA,CAC3BW,cAACgiB,KAAS,CACRpiB,GAAI,CACF1B,MAAO,WACP,CAAM,OAALme,QAAK,IAALA,GAAkB,QAAbqnB,EAALrnB,EAAOyH,mBAAW,IAAA4f,OAAb,EAALA,EAAoB3f,KAAK,OAAQ,CAChCtH,QAAS,OACTve,MAAO,SAGXqB,GAAG,WACH6oB,KAAK,QACL9sB,KAAK,WACLkN,KAAM2gB,EAAOnnB,aAAe,OAAS,WACrCwC,OAAQs/B,EAASO,gBACjBh8B,YAAY,WACZkV,MAAOpX,EACL,uFAEF3L,MAAOspC,EAASrpC,SAChB6N,SAjcgB5I,IACxB,MAEMjF,EAAWiF,EAAM0H,OAAO5M,MAC9BupC,EAAY,IACPD,EACHrpC,SAAUA,EACV4pC,gBALA,uFAKuBjhC,KAAK3I,IAC5B,EA0bMurC,WACwB,KAAtBlC,EAASrpC,UACTqpC,EAASrpC,SAASoU,OAAS,IAC1Bi1B,EAASO,gBACNl+B,EACE,mGAEF,GAENiC,UAAQ,EACRxK,MACwB,KAAtBkmC,EAASrpC,UACTqpC,EAASrpC,SAASoU,OAAS,IAC1Bi1B,EAASO,gBACNU,EACAE,EAEN5c,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,eACdnW,aACEtoB,cAACmgC,KAAc,CAAChe,SAAS,MAAK9iB,SAC5BW,cAACV,IAAU,CACT,aAAW,6BACXG,QA/jBcknC,KAC9BlB,EAAU,IAAKtc,EAAQnnB,cAAemnB,EAAOnnB,cAAe,EA+jB5C4kC,YA1jBelnC,IAC/BA,EAAMmnC,gBAAgB,EA0jBNtI,KAAK,MAAKl/B,SAET8pB,EAAOnnB,aAAehC,cAACqgC,KAAU,IAAMrgC,cAACogC,KAAa,WAMhEpgC,cAACgiB,KAAS,CACRpiB,GAAI,CACF1B,MAAO,WACP,CAAM,OAALme,QAAK,IAALA,GAAkB,QAAbsnB,EAALtnB,EAAOyH,mBAAW,IAAA6f,OAAb,EAALA,EAAoB5f,KAAK,OAAQ,CAChCtH,QAAS,OACTve,MAAO,SAGXqB,GAAG,cACH6oB,KAAK,QACL9sB,KAAK,cACLkN,KAAMk9B,EAAUE,gBAAkB,OAAS,WAC3CphC,MAAOs/B,EAASU,cAAgBV,EAASrpC,SACzC4N,YAAalC,EACX,2GAEFoX,MAAOpX,EACL,+FAEF3L,MAAOspC,EAASU,YAChBl8B,SA7eiB5I,IACzB,MAEMjF,EAAWiF,EAAM0H,OAAO5M,MAC9BupC,EAAY,IACPD,EACHU,YAAa/pC,EACb4pC,gBALA,uFAKuBjhC,KAAK3I,IAC5B,EAseMurC,WAC2B,KAAzBlC,EAASU,aAAsBV,EAASU,YAAY31B,OAAS,EACzD1I,EACE,2GAEF,GAENiC,UAAQ,EACRxK,MAC2B,KAAzBkmC,EAASU,aACTV,EAASU,YAAY31B,OAAS,GAC9Bi1B,EAASU,cAAgBV,EAASrpC,WACjCqpC,EAASO,gBACNU,EACAE,EAEN5c,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,eACdnW,aACEtoB,cAACmgC,KAAc,CAAChe,SAAS,MAAK9iB,SAC5BW,cAACV,IAAU,CACT,aAAW,6BACXG,QAlnBiBqnC,KACjCnB,EAAa,IAAKD,EAAWE,iBAAkBF,EAAUE,iBAAkB,EAknB3DgB,YA7mBkBlnC,IAClCA,EAAMmnC,gBAAgB,EA6mBNtI,KAAK,MAAKl/B,SAETqmC,EAAUE,gBACT5lC,cAAC+mC,KAAa,IAEd/mC,cAACgnC,KAAgB,cAQ/BhnC,cAAA,OAAAX,SACEW,cAACuH,KAAQ,CACP/I,KAAMslC,EAASrpC,WAAaqpC,EAASU,YACrCh9B,iBAAkB,IAClBg5B,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACtD,MAAM,UAASyB,SACnB8G,EACC,0GAKRnG,cAAA,OAAAX,SACEW,cAACskB,KAAM,CACLhd,UAAWmC,EAAQo5B,OACnBpjC,QAvfWnF,UACnB,GACwB,KAAtBwpC,EAASE,UACTF,EAASE,SAASn1B,OAAS,GACL,KAAtBi1B,EAASG,UACTH,EAASG,SAASp1B,OAAS,GAQJ,KAAvBi1B,EAASQ,WACTR,EAASQ,UAAUz1B,OAAS,GACT,KAAnBi1B,EAASj9B,OACRi9B,EAASj9B,QAAUi9B,EAASM,eAC5BN,EAASS,WACmB,IAA7BT,EAASY,iBACa,KAAtBZ,EAASrpC,UACTqpC,EAASrpC,SAASoU,OAAS,IAC1Bi1B,EAASO,iBACe,KAAzBP,EAASU,aACTV,EAASU,YAAY31B,OAAS,GAC9Bi1B,EAASU,cAAgBV,EAASrpC,SAElC2qC,GAAkB,QAElB,IACE7jC,EAAS,CACPiF,UAAW,CACTlL,KAAMwoC,EAASE,SACfj9B,UAAW+8B,EAASG,SACpBgD,4BAA6B1sC,EAC3BupC,EAASI,SACTqB,GAEF1+B,YAAatM,EAAYupC,EAASj9B,MAAO0+B,GACzCpB,gBAAiB5pC,EAAYupC,EAASK,UAAWoB,GACjDjO,YAAawM,EAASxM,YACtB31B,KAAMmiC,EAASQ,UACf7pC,eAAgBF,EAAYupC,EAASrpC,SAAU8qC,GAC/Cf,kBAAmBjqC,EAAYupC,EAASrpC,SAAU8qC,GAClD9qB,UAAWkqB,EACXuC,OAAQlqC,SAAS8mC,EAASS,aAG3B79B,MAAM5C,IACDA,EAASE,MAAgC,qBAAxBF,EAASE,KAAKQ,MACjCC,QAAQ+f,IAAI,yBAAuB1gB,EAASE,KAAKwe,UAEjDsiB,GAAe,GACfjZ,IA/DVhI,YAAW,KACT+f,GAAM,EAAM,GACX,KA+DK,IAED38B,OAAOzC,IACNC,QAAQ+f,IAAI,QAAShgB,GACrB4gC,GAAkB,EAAK,GAE7B,CAAE,MAAOl+B,GACPzC,QAAQD,MAAM,gBAAc0C,EAC9B,CACF,EAybQ0a,SAAU4jB,EAAiBnmC,SAE3BW,cAAA,MAAAX,SACG8G,EACC,mGAMVhH,eAAA,OAAAE,SAAA,CACEW,cAACuH,KAAQ,CACP/I,KAAMqmC,EACNr9B,iBAAkB,IAClBlH,QAASC,EACTigC,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACwG,SAAS,UAASrI,SACtB8G,EACC,mGAKNnG,cAACuH,KAAQ,CACP/I,KAAM2mC,EACN39B,iBAAkB,IAClBlH,QAASC,EACTigC,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACwG,SAAS,QAAOrI,SACpB8G,EACC,mGAKC,ECt2Bf,MAAM6C,GAAYC,cAAYoT,IAAK,CACjC8qB,eAAgB,CACd1qB,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZ1c,OAAQ,OAEVic,KAAM,CACJ5b,OAAQ,QAEVknC,MAAO,CACL3qB,QAAS,OACT0F,SAAU,WACVvkB,MAAO,UACPypC,MAAO,WAII,SAASC,GAAgB1rB,GAAe,IAAd,QAAEiQ,GAASjQ,EAClD,MAAM,EAAEzV,GAAMC,cAERiW,GADUrT,KACFkuB,iBAER,oBAAEltB,EAAmB,oBAAEu9B,EAAmB,uBAAEC,IAD/BC,aAAcprB,EAAMyH,YAAYC,KAAK,OAEtDjiB,qBAAWC,MAEPxB,EAAcA,KAClBinC,GAAuB,EAAM,EAO/B,OACExnC,cAAC3B,IAAMkqB,SAAQ,CAAAlpB,SACbF,eAACoiB,KACC,CACA/iB,KAAM+oC,EACNjnC,QAASC,EACT,kBAAgB,0BAChBC,WAAY,CACVZ,GAAI,CAAE1B,MAAO,OAAQgC,OAAQ,OAAQH,aAAc,QACnDV,SAAA,CAEFW,cAACyhB,KAAM,CAAC7hB,GAAI,CAAEuiB,SAAU,WAAYpF,gBAAiB,WAAY1d,SAC/DF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACie,KAAU,CACTre,GAAI,CAAE0+B,KAAM,MAAO9hB,UAAW,UAC9Bnb,QAAQ,KACRsK,UAAU,MAAKtM,SAEd8G,EACC,4FAGJnG,cAACV,IAAU,CACT1B,MAAM,UACN6B,QAASc,EACTX,GAAI,CACF6c,QAAS,OACT0F,SAAU,YAEZoc,KAAK,MAAKl/B,SAEVW,cAACmkB,KAAS,WAIhBnkB,cAAA,SAEAA,cAACokB,KAAa,CAAA/kB,SACZW,cAACkjC,GAAY,CAACU,MA1CN7tB,IACdyxB,EAAuBzxB,EAAM,EAyCM8V,QAASA,EAASxP,MAAOA,UAKhE,C,OCxEA,MAAM5hB,GAAWyL,oCAEX8C,GAAYC,cAAYoT,IAAK,CACjCnT,KAAM,CACJ,uBAAwB,CACtBrJ,OAAQwc,EAAMwY,QAAQ,GACtB32B,MAAO,2BAGX42B,MAAO,CACLrY,QAAS,OACT,CAACJ,EAAMyH,YAAYC,KAAK,OAAQ,CAC9BtH,QAAS,OACTC,cAAe,SACfH,WAAY,WAGhB+lB,OAAQ,CACNl5B,QAAS,MACTE,WAAY,OACZD,UAAW,QACXE,aAAc,QAEhBwmB,MAAO,CACLzmB,WAAY,OACZD,UAAW,QAEbk5B,UAAW,CACTh5B,aAAc,MACdF,UAAW,OAEbm5B,YAAa,CACX5kC,MAAO,QACPyL,UAAW,OACXC,WAAY,OACZC,aAAc,QAEhBs5B,OAAQ,CACN3kC,MAAO,yBACP6e,gBAAiB,UACjBN,QAAS,OACTirB,IAAK,OACLC,KAAM,MACNznC,OAAQ,OACRtC,MAAO,QACPmC,aAAc,MACd,UAAW,CACTgd,gBAAiB,YAGrB+lB,eAAgB,CACdrmB,QAAS,OACTve,MAAO,QAETsG,MAAO,CACLuY,gBAAiB,UACjBlf,SAAU,OACVkC,aAAc,MACdgjC,OAAQ,IACR5gB,SAAU,WACV6gB,KAAM,SAERC,QAAS,CACP/kC,MAAO,QACP+kC,QAAS,CACP/kC,MAAO,SAET4kC,eAAgB,CACdrmB,QAAS,OACTve,MAAO,UAGX0pC,aAAc,CACZ1pC,MAAO,OACPgC,OAAQ,YAomBG2nC,OAhmBEjsB,IAAqD,IAAD4nB,EAAApK,EAAA0O,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAAnD,WAAEC,EAAU,QAAEC,EAAO,QAAEC,EAAO,aAAEC,GAAc5sB,EAC9D,MAAM,EAAEzV,GAAMC,eACR,qBAAEqiC,GAAyBpqC,IAAMyD,WAAWC,MAC3CvD,EAAMmE,GAAWtE,IAAM6D,UAAS,IAChC6iC,EAAmBC,GAAwB9iC,mBAAS,UACpD+iC,EAAiBC,GAAsBhjC,mBAAS,YAChDwmC,EAAcC,GAAmBzmC,oBAAS,IAC1C0mC,EAAkBC,GAAuB3mC,oBAAS,IAClD4mC,EAAqBC,GAA0B7mC,oBAAS,IACxD6jC,EAAeiD,GAAoB9mC,oBAAS,IAC5C+mC,EAAcC,GAAmBhnC,oBAAS,IAC1CinC,EAAsBC,GAA2BlnC,oBAAS,IAC1DmnC,EAAyBC,GAA8BpnC,oBAAS,IAChEqnC,EAAqBC,GAA0BtnC,oBAAS,IACzD,UAAEunC,EAAS,aAAEC,EAAY,GAAErE,GAAOvjC,qBAAWC,MAE5C4nC,GAAQnnC,YAAYonC,OACpB9F,EAAUC,GAAe7hC,mBAAS,CACvC8hC,SAAU,GACVC,SAAU,GACVE,UAAW,GACX7M,YAAa,GACbzwB,MAAO,GACPy9B,UAAW,GACXC,SAAU,GACV9pB,UAAW,MAENovB,EAAcC,IAAmB5nC,oBAAS,IAC3C,KAAE8B,GAAI,QAAEuW,GAAO,MAAE/V,GAAK,QAAEqnB,IAAYrR,aAASuvB,KAAW,CAC5DvjC,UAAW,CACTjH,GAAI+oC,KAKF0B,GAAqB,OAAJhmC,SAAI,IAAJA,IAAoB,QAAhBw/B,EAAJx/B,GAAMwiC,YAAY,UAAE,IAAAhD,OAAhB,EAAJA,EAAsBiD,QAEvCwD,GAAqB,OAAJjmC,SAAI,IAAJA,IAAoB,QAAhBo1B,EAAJp1B,GAAMq1B,sBAAc,IAAAD,OAAhB,EAAJA,EAAsBp9B,KAAK4yB,GAAYA,IAIxDsb,GAA+B,OAAdD,SAAc,IAAdA,QAAc,EAAdA,GAAgBz6B,QACpC0K,IAAY,OAHAiwB,EAGOH,GAHAzqC,EAGgB2a,EAAQ3a,IAHjB4qC,EAAM9yB,MAAMuX,GAAYA,EAAQrvB,KAAOA,IAAtD6qC,IAACD,EAAO5qC,CAItB,IAEMyD,GAAuB,OAAdgnC,SAAc,IAAdA,QAAc,EAAdA,GAAgBK,OAAOH,KAGpC3oC,SAAU+oC,GAAQ,aAClB9oC,GACA+oC,WAAW,OAAE9oC,KACXC,cAEJoB,qBAAU,KACR+oB,IAAS,GACR,IACH/oB,qBAAU,KACkBxI,WACxB,IAAK,IAADkwC,EAAAC,EACF,MAAMC,QAAwBjuC,EACxB,OAAJuH,SAAI,IAAJA,IAAoB,QAAhBwmC,EAAJxmC,GAAMwiC,YAAY,UAAE,IAAAgE,OAAhB,EAAJA,EAAsBrG,UACtB1pC,IAEIkwC,QAAoBluC,EACpB,OAAJuH,SAAI,IAAJA,IAAoB,QAAhBymC,EAAJzmC,GAAMwiC,YAAY,UAAE,IAAAiE,OAAhB,EAAJA,EAAsB5jC,MACtBpM,IAEFqvC,IAAgB,GAChBjmB,YAAW,KAAO,IAAD+mB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACfnH,EAAY,IACPD,EACHE,SAAc,OAAJhgC,SAAI,IAAJA,IAAoB,QAAhB4mC,EAAJ5mC,GAAMwiC,YAAY,UAAE,IAAAoE,OAAhB,EAAJA,EAAsBtvC,KAChC2oC,SAAc,OAAJjgC,SAAI,IAAJA,IAAoB,QAAhB6mC,EAAJ7mC,GAAMwiC,YAAY,UAAE,IAAAqE,OAAhB,EAAJA,EAAsB9jC,UAChCuwB,YAAiB,OAAJtzB,SAAI,IAAJA,IAAoB,QAAhB8mC,EAAJ9mC,GAAMwiC,YAAY,UAAE,IAAAsE,OAAhB,EAAJA,EAAsBxT,YACnC6M,UACsB,SAApBuG,GAAkD,WAApBA,EAC1B,GACAA,EACN7jC,MAAO8jC,EACPrG,UAAe,OAAJtgC,SAAI,IAAJA,IAAoB,QAAhB+mC,EAAJ/mC,GAAMwiC,YAAY,UAAE,IAAAuE,OAAhB,EAAJA,EAAsBppC,KACjC8Y,UAAe,OAAJzW,SAAI,IAAJA,IAAoB,QAAhBgnC,EAAJhnC,GAAMwiC,YAAY,UAAE,IAAAwE,OAAhB,EAAJA,EAAsBvE,QAAQzqC,KAAKqS,GAAMA,EAAE9O,KACtDglC,SAAc,OAAJvgC,SAAI,IAAJA,IAAoB,QAAhBinC,EAAJjnC,GAAMwiC,YAAY,UAAE,IAAAyE,GAAM,QAANC,EAApBD,EAAsB3E,YAAI,IAAA4E,OAAtB,EAAJA,EAA4B3rC,IACtC,GACD,GACL,CAAE,MAAOiF,IACPC,QAAQD,MAAM,gCAAiCA,GACjD,GAEF2mC,EAAmB,GAClB,CAACnnC,KAEJ,MAAMyF,GAAUT,KAEhB,GAAIxE,GACF,OACExE,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEf1U,UAAU,QACVM,IAAI,iEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAKhB,GAAIuS,GACF,OACEva,cAAA,OACES,MAAO,CACLkc,eAAgB,SAChBJ,WAAY,UACZld,SAEFW,cAAC+b,GAAO,MAId,GAAI8tB,EACF,OACE7pC,cAAA,OACES,MAAO,CACLkc,eAAgB,SAChBJ,WAAY,UACZld,SAEFW,cAAC+b,GAAO,MAkMd,OACE/b,cAACuoB,WAAQ,CAAAlpB,SACPF,eAAA,QACEmI,UAAWmC,GAAQP,KACnBs1B,YAAU,EACVC,aAAa,MACb2M,SAAU5pC,IAlDhBlH,iBACE,IACmB,IAAjBouC,IACqB,IAArBE,IACwB,IAAxBE,IACkB,IAAlB/C,IACiB,IAAjBkD,IACyB,IAAzBE,IAC4B,IAA5BE,IACwB,IAAxBE,QAGA,IACEI,EAAK,CACHnjC,UAAW,CACTjH,GAAI+oC,EACJhtC,KAAMwoC,EAASE,SACfj9B,UAAW+8B,EAASG,SACpBp9B,YAAatM,EAAYupC,EAASj9B,MAAOpM,IACzC0pC,gBAAiB5pC,EAAYupC,EAASK,UAAW1pC,IACjD68B,YAAawM,EAASxM,YACtB31B,KAAMmiC,EAASQ,UACf7pB,UAAWqpB,EAASrpB,UACpBysB,OAAQlqC,SAAS8mC,EAASS,aAG3B79B,MAAM5C,IACDA,EAASE,MAAgC,qBAAxBF,EAASE,KAAKQ,MACjCC,QAAQD,MAAM,0BAAwBV,EAASE,KAAKwe,UAEpDknB,GAAa,GACb7d,KACF,IAED5kB,OAAOC,IACNzC,QAAQ+f,IAAI,QAAShgB,IACrBgkC,GAAa,EAAK,GAExB,CAAE,MAAOthC,GACPzC,QAAQD,MAAM,gBAAc0C,EAC9B,CAEJ,IAQuC7H,SAAA,CAEjCF,eAAA,OAAKmI,UAAWmC,GAAQqrB,MAAMz1B,SAAA,CAC5BW,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhB7+B,GAAI,CAAE1B,MAAO,YACbmK,YAAY,YACZwhC,aAAkB,OAAJ7lC,SAAI,IAAJA,IAAoB,QAAhB8jC,EAAJ9jC,GAAMwiC,YAAY,UAAE,IAAAsB,OAAhB,EAAJA,EAAsBxsC,KACpCiE,GAAG,WACHjE,KAAK,OACLkN,KAAK,OACLnH,QAAQ,WACR+mB,KAAK,QACL7K,MAAOpX,EACL,iFAEFmC,SAvNa5I,IACHA,EAAM0H,OAAO9L,KAA/B,MACMd,EAAQkF,EAAM0H,OAAO5M,MAEb,KAAVA,GADU,eACa4I,KAAK5I,GAI9BupC,EAAY,IACPD,EACHE,SAAUxpC,KALZmuC,GAAgB,GAChBjpC,EAAM0H,OAAO5M,MAAQ,IAOnBA,EAAMqU,OAAS,EACjB85B,GAAgB,GAEhBA,GAAgB,EAClB,EAuMQ/qC,OAAwB,IAAjB8qC,EAAyB3D,EAAoBE,IAEtDjlC,cAACgiB,KAAS,CACRpiB,GAAI,CAAE1B,MAAO,YACbmqB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBp2B,YAAY,cACZ9I,GAAG,YACHsqC,aAAkB,OAAJ7lC,SAAI,IAAJA,IAAoB,QAAhB+jC,EAAJ/jC,GAAMwiC,YAAY,UAAE,IAAAuB,OAAhB,EAAJA,EAAsBhhC,UACpCzL,KAAK,YACL+F,QAAQ,WACR+mB,KAAK,QACL7K,MAAOpX,EACL,sFAEFmC,SArNiB5I,IACPA,EAAM0H,OAAO9L,KAA/B,MACMd,EAAQkF,EAAM0H,OAAO5M,MAEb,KAAVA,GADU,eACa4I,KAAK5I,GAI9BupC,EAAY,IACPD,EACHG,SAAUzpC,KALZquC,GAAoB,GACpBnpC,EAAM0H,OAAO5M,MAAQ,IAOnBA,EAAMqU,OAAS,EACjBg6B,GAAoB,GAEpBA,GAAoB,EACtB,EAqMQjrC,OACuB,IAArBgrC,EAA6B7D,EAAoBE,OAIvD9lC,eAAA,OAAKmI,UAAWmC,GAAQqrB,MAAMz1B,SAAA,CAC5BW,cAACwnB,KAAY,CACX5nB,GAAI,CAAE1B,MAAO,0BACbqB,GAAG,sBACH6oB,KAAK,QACL3qB,QAAS0+B,KACT7zB,SAAWyX,GAvHQmf,KAC3B,MAAMpwB,EAAMowB,EAAKhd,QAAQ,MAAO,IAEpB,KAARpT,GAAsB,OAARA,EAChB06B,GAAuB,IAEvBzF,EAAY,IACPD,EACHxM,YAAaxoB,IAEf06B,GAAuB,GACzB,EA4GyBvD,CAAoBlmB,EAAE3Y,OAAOk4B,aAC9C9kC,MAAOspC,EAASxM,YAChBiI,eAAa,EACbC,aAAcA,CAAC7hC,EAAOiD,IACpBzB,eAACsgC,KAAG,CACF9zB,UAAU,KACV/L,GAAI,CACFG,aAAc,OACd,UAAW,CAAE2/B,GAAI,EAAGC,WAAY,OAE9BhiC,EAAK0B,SAAA,CAETW,cAAA,OACEua,QAAQ,OACRrc,MAAM,KACN0J,IAAK,2BAA2BhH,EAAOs+B,KAAK57B,oBAC5Cs8B,OAAQ,2BAA2Bh/B,EAAOs+B,KAAK57B,uBAC/C4E,IAAI,KACJ,IACAtH,EAAOtF,KAAK,MAAIsF,EAAOslC,SAG7Bhe,YAAcC,GACZnoB,cAACgiB,KAAS,CACRpiB,GAAI,CAAE1B,MAAO,6BACTiqB,EACJ5K,MAAOpX,EACL,oFAEFvI,OAC0B,IAAxB2rC,EACIxE,EACAE,EAENpF,WAAY,IACP1X,EAAO0X,WACVpB,aAAc,gBACdp/B,SAED88B,KAAiBngC,KAAK8jC,GACrB9/B,cAACa,KAAQ,CAEPrG,MAAOslC,EAAeZ,KAAK7/B,SAE1BygC,EAAexkC,MAHXwkC,EAAeZ,YAS9Bl/B,cAACgiB,KAAS,CACRpiB,GAAI,CAAE1B,MAAO,0BACbmqB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBlhB,MAAOpX,EACL,sFAEF5G,GAAG,YACH/E,MAAOspC,EAASK,UAChB9iC,QAAQ,WACR+mB,KAAK,QACL9f,SA5QoB5I,IAC5B,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MAENA,EAAM0nB,QADb,UAC4B,MAErB1nB,EACnBuuC,GAAuB,GAEvBhF,EAAY,IACPD,EACHK,UAAW3pC,IAGXA,EAAMqU,OAAS,GAAKrU,EAAMqU,OAAS,GACrCk6B,GAAuB,GAEvBA,GAAuB,EACzB,EA4PQnrC,OAC0B,IAAxBkrC,EACI/D,EACAE,OAIVjlC,cAAA,OAAKsH,UAAWmC,GAAQqrB,MAAMz1B,SAC5BW,cAACgiB,KAAS,CACRqG,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,QAClCugC,aAAc,OAEhB7+B,GAAI,CACF1B,MAAO,IACP6jB,SAAU,QAEZza,UAAWmC,GAAQq8B,UACnBvoB,MAAOpX,EACL,kFAEFqC,KAAK,QACLjJ,GAAG,QACH/E,MAAOspC,EAASj9B,MAChBvL,KAAK,QACL+F,QAAQ,WACR+mB,KAAK,QACL9f,SA/QiB5I,IACPA,EAAM0H,OAAO9L,KAA/B,MACMuL,EAAQnH,EAAM0H,OAAO5M,MACrB4pC,EARsBv9B,IACd,mCACDzD,KAAKyD,GAMGwkC,CAAqBxkC,GAC1Ck9B,EAAY,IACPD,EACHj9B,MAAOA,IAETmiC,EAAiB5E,EAAa,EAwQtBxmC,OACoB,IAAlBmoC,EAA0BhB,EAAoBE,MAIpDjlC,cAAA,OAAAX,SACEW,cAAA,MAAIsH,UAAWmC,GAAQ+4B,YAAYnjC,SAChC8G,EACC,kGAINhH,eAAA,OAAKmI,UAAWmC,GAAQq5B,eAAezjC,SAAA,CACrCW,cAACgiB,KAAS,CACRpiB,GAAI,CAAE1B,MAAO,WAAYue,QAAS,OAAQirB,IAAK,QAC/Crf,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBp2B,YAAY,OACZ9I,GAAG,OACHjE,KAAK,OACLuuC,aAAkB,OAAJ7lC,SAAI,IAAJA,IAAoB,QAAhBgkC,EAAJhkC,GAAMwiC,YAAY,UAAE,IAAAwB,OAAhB,EAAJA,EAAsBrmC,KACpCN,QAAQ,WACR+mB,KAAK,QACL7K,MAAOpX,EACL,iFAEFmC,SAjSiB5I,IACPA,EAAM0H,OAAO9L,KAA/B,MACMd,EAAQkF,EAAM0H,OAAO5M,MAEb,KAAVA,GADU,cACa4I,KAAK5I,GAI9BupC,EAAY,IACPD,EACHQ,UAAW9pC,KALb0uC,GAAgB,GAChBxpC,EAAM0H,OAAO5M,MAAQ,IAOnBA,EAAMqU,OAAS,EACjBq6B,GAAgB,GAEhBA,GAAgB,EAClB,EAiRQ5hC,UAAWmC,GAAQw5B,QACnBrlC,OAAwB,IAAjBqrC,EAAyBlE,EAAoBE,IAErDsD,EAAU,KACTvoC,cAACgiB,KAAS,CACRpiB,GAAI,CAAE1B,MAAO,WAAYue,QAAS,OAAQirB,IAAK,QAC/Crf,WAAY,CACVzoB,GAAI,CAAEG,aAAc,OACpB0+B,aAAc,OAEhBl/B,GAAG,SACHjE,KAAK,SACL20B,OAAQjwB,cAAA,eACRooB,KAAK,QACL7K,MAAOpX,EACL,iFAEF0jC,aAAkB,OAAJ7lC,SAAI,IAAJA,IAAoB,QAAhBikC,EAAJjkC,GAAMwiC,YAAY,UAAE,IAAAyB,GAAM,QAANC,EAApBD,EAAsB3B,YAAI,IAAA4B,OAAtB,EAAJA,EAA4B3oC,GAC1C+I,SAAWyX,GAhSMrgB,KAC3B,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MACb,KAAVA,EACF4uC,GAAwB,IAExBrF,EAAY,IACPD,EACHS,SAAU/pC,IAEZ4uC,GAAwB,GAC1B,EAsR2BkC,CAAoBvrB,GACrC1e,QAAQ,WACRzD,OAC2B,IAAzBurC,EACIpE,EACAE,EACL5lC,SAEI,OAAJ2E,SAAI,IAAJA,QAAI,EAAJA,GAAMqiC,YAAYrqC,KAAK4E,GACtBZ,cAACa,KAAQ,CAAiBrG,MAAOoG,EAAOrB,GAAGF,SACxCuB,EAAOtF,MADKsF,EAAOrB,WAO7BgpC,EAAU,KACTvoC,cAAA,OAAAX,SACEF,eAAC8sB,KAAW,CACVrsB,GAAI,CACF1B,MAAO,yBACPikB,SAAU,WACV7Y,WAAY,SACZD,UAAW,UACXhK,SAAA,CAEFW,cAACksB,KAAU,CACTtsB,GAAI,CACFyJ,WAAY,GAEd9J,GAAG,YAAWF,SAEb8G,EACC,uFAGJnG,cAACmsB,KAAM,CACL0d,aAAkB,OAAJ7lC,SAAI,IAAJA,IAAoB,QAAhBmkC,EAAJnkC,GAAMwiC,YAAY,UAAE,IAAA2B,GAAS,QAATC,EAApBD,EAAsB1B,eAAO,IAAA2B,OAAzB,EAAJA,EAA+BpsC,KAAKqS,GAAMA,EAAE9O,KAC1DgnC,UAAQ,EACR3mC,GAAI,CAAEG,aAAc,OACpBR,GAAG,YACHjE,KAAK,YACLy0B,MAAO/vB,cAACgwB,KAAa,CAACzS,MAAM,cAC5BjV,SAAWyX,GA9THA,KACpB,MAAM,MAAEvlB,GAAUulB,EAAE3Y,OAEpB28B,GAAawH,IAAS,IACjBA,EACH9wB,UAAWjgB,MAGQ,IAAjBA,EAAMqU,OACRy6B,GAA2B,GAEvB9uC,EAAMqU,OAAS,GACjBy6B,GAA2B,EAE/B,EAgT6BhsB,CAAayC,GAC9BqI,KAAK,QACL/mB,QAAQ,WACRzD,OAC8B,IAA5ByrC,EACItE,EACAE,EAENnV,UAAW,CAAElwB,GAAI,CAAE1B,MAAO,UAAYmB,SAErC2D,GAAOhH,KAAK4yB,GACX5uB,cAACa,KAAQ,CAAkBrG,MAAOo0B,EAAQrvB,GAAGF,SAC1CuvB,EAAQtzB,MADIszB,EAAQrvB,aAQjCS,cAAA,OAAAX,SACEW,cAACskB,KAAM,CACLhd,UAAWmC,GAAQo5B,OACnBjhB,UACmB,IAAjB8mB,IACqB,IAArBE,IACwB,IAAxBE,IACkB,IAAlB/C,IACiB,IAAjBkD,IACyB,IAAzBE,IAC4B,IAA5BE,IACwB,IAAxBE,EAEF/gC,KAAK,SAAQnJ,SAEbW,cAAA,MAAAX,SACG8G,EACC,kGAMD,ECtrBG8C,aAAW,CAC3BC,KAAM,CACJ6T,gBAAiB,WAEnBoqB,eAAgB,CACd1qB,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZ1c,OAAQ,MACRwJ,UAAW,QAEbyS,KAAM,CACJ5b,OAAQ,OACRL,OAAQ,MACRwJ,UAAW,UAYA,SAASmiC,GAAgB5vB,GAMpC,IANqC,QACvC6vB,EAAO,WACPC,EAAU,QACVpD,EAAO,UACPtG,EAAS,QACTnW,GACDjQ,EACC,MAAM,EAAEzV,GAAMC,cACRulC,EAAW3J,EACX3lB,EAAQ6a,eACR1V,EAAaimB,aAAcprB,EAAMyH,YAAYC,KAAK,QAClD,UAAE0lB,EAAS,kBAAEmC,EAAiB,qBAAEC,GAAyB/pC,qBAAWC,MACnE+pC,EAAWtD,GAAgBtmC,oBAAS,GACrC6pC,EAAuBA,KAC3BF,GAAqB,EAAM,EAEvBjoB,EAAmBA,KACvB4kB,GAAa,EAAM,EAGrB,OACExoC,cAAA,OAAAX,SACEF,eAACoiB,KAAM,CACLC,WAAYA,EACZhjB,OAAMotC,EACNtrC,QAASyrC,EACT,kBAAgB,0BAChBvrC,WAAY,CACVZ,GAAI,CAAE1B,MAAO,QAASgC,OAAQ,QAASH,aAAc,QACrDV,SAAA,CAEFW,cAACyhB,KAAM,CAAC7hB,GAAI,CAAEuiB,SAAU,WAAYpF,gBAAiB,WAAY1d,SAC/DF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACie,KAAU,CACTre,GAAI,CAAE6c,QAAS,OAAQE,eAAgB,SAAU2hB,KAAM,GACvDj9B,QAAQ,KACRsK,UAAU,MAAKtM,SAEd8G,EACC,0FAGJnG,cAACV,IAAU,CACT1B,MAAM,UACN6B,QAASssC,EACTxN,KAAK,MAAKl/B,SAEVW,cAACmkB,KAAS,WAIhBnkB,cAAA,SACAA,cAAA,SACAA,cAACokB,KAAa,CAAA/kB,SACZW,cAAC6nC,GAAQ,CACPS,QAASA,EACTE,aAAcA,EACdxG,UAAW2J,EACXK,gBAAiBngB,MAGrB1sB,eAAA,OAAKsB,MAAO,CAAEgc,QAAS,OAAQve,MAAO,OAAQye,eAAgB,UAAWtd,SAAA,CACvEW,cAACuH,KAAQ,CACP/I,KAAMirC,EACNjiC,iBAAkB,IAClBlH,QAASsjB,EACT4c,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACwG,SAAS,UAASrI,SACtB8G,EACC,iGAINnG,cAACuH,KAAQ,CACP/I,KAAMstC,EACNtkC,iBAAkB,IAClBlH,QAASsjB,EACT4c,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACwG,SAAS,QAAOrI,SACpB8G,EACC,mGAQhB,C,OCrGA,MAAM6C,GAAYC,aAAW,CAC3BC,KAAM,CACJi4B,SAAU,IACVthC,OAAQ,IAEVuhC,SAAU,CACR7kB,WAAY,SACZI,eAAgB,UAElBlf,QAAS,CACP8L,aAAc,KACdF,UAAW,KACXsT,eAAgB,SAChBJ,WAAY,YA4cD0vB,OApbI3D,IAAa,IAAD/9B,EAC7B,MAAM,EAAEpE,GAAMC,eACP8lC,EAAKC,GAAU9tC,WAAe,KAC9B+tC,EAAQC,GAAahuC,WAAe,OAGrC,MACJqjC,EAAK,SACL4K,EAAQ,kBACRC,EAAiB,qBACjB9D,EAAoB,oBACpBz+B,EAAmB,oBACnBu9B,EAAmB,uBACnBC,EAAsB,kBACtBoE,EAAiB,qBACjBC,EAAoB,0BACpBlK,EAAyB,6BACzBC,EAA4B,UAC5B6H,IAbczgC,KAcZ3K,aAAiB0D,OAEdyqC,EAAcC,GAAmBpuC,WAAe,OAChDquC,EAAYC,GAAiBtuC,WAAe,KAC5ConB,EAAcC,GAAmBrnB,YAAe,IACjD,KAAE2F,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aAASunB,KAAc,CAC/DrnB,YAAa,iBAIfrc,aAAgB,KACd,GAAI2F,EAAM,CAAC,IAAD4oC,EACR,MAAMC,EAAoB,OAAJ7oC,QAAI,IAAJA,GAAiB,QAAb4oC,EAAJ5oC,EAAMwiC,mBAAW,IAAAoG,OAAb,EAAJA,EAAmBp9B,QAAQ7N,IAAI,IAAAmrC,EAAA,OAC/C,OAAJnrC,QAAI,IAAJA,GAAU,QAANmrC,EAAJnrC,EAAMA,YAAI,IAAAmrC,OAAN,EAAJA,EAAYxpC,cAAcsjB,SAAS8lB,EAAWppC,cAAc,IAE9DgpC,EAASO,GACTrb,EAAe,EACjB,IACC,CAACxtB,EAAM0oC,IAEV,MAAOluC,EAAMmE,GAAWtE,YAAe,IAChCZ,EAASsoB,GAAc1nB,WAAe,IACvC2nB,EAAcxnB,GAA2B,IAAnBf,EAAQoR,QAC7Bk+B,EAAgBC,GAAqB3uC,WAAe,KAEpDkzB,EAAaC,GAAkBnzB,WAAe,GAE/C+nB,EADiB,GACLmL,EACZpL,EAAaC,EAFI,GAGjBC,EAAUqb,EAAMnlC,MAAM4pB,EAAYC,GAClC6mB,EAAa1mB,KAAKC,KAAKkb,EAAM7yB,OAJZ,KAuBhBq+B,EAAkBC,IAlBT,IAAIrxC,MAAMmxC,EAAa,GAAGxmB,QAAQlqB,MAAM,GAkBR8B,WAAe,KAEzD2jC,EAAiB,OAALN,QAAK,IAALA,OAAK,EAALA,EAAO1lC,KAAK+jB,IAC5B,GAAS,OAAL2hB,QAAK,IAALA,KAAO9a,SAAS7G,EAAExgB,IACpB,MAAO,CAAEA,GAAIwgB,EAAExgB,GAAIklB,QAAS1E,EAAE0E,QAChC,IAGI2oB,EAAsB,OAATpL,QAAS,IAATA,OAAS,EAATA,EAAWxyB,QAAQnB,QAAY7O,IAAN6O,IAClC,OAAV++B,QAAU,IAAVA,KAAYpxC,KAAK+jB,IACE,GAAbA,EAAE0E,QACJ1E,EAAE0E,SAAU,EAEZ1E,EAAE0E,SAAU,CACd,IAGFpmB,aAAgB,KACd,IAAIwoB,GAAS,EAEb,GAAKb,EAcL,MAVA,WAGE,SArGN,WAA2B,IAAZc,EAAKC,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,EACrB,OAAO,IAAIC,SAASC,IAClBpD,WAAWoD,EAASH,EAAM,GAE9B,CA+FYI,CAAM,KAERL,EAAQ,CACV,MAAMM,EAAuB,OAALua,QAAK,IAALA,OAAK,EAALA,EAAOlyB,QAAQkyB,IAAK,IAAA2L,EAAA,OACrC,OAAL3L,QAAK,IAALA,GAAW,QAAN2L,EAAL3L,EAAO//B,YAAI,IAAA0rC,OAAN,EAALA,EAAa/pC,cAAcsjB,SAAS8lB,EAAWppC,cAAc,IAE/DyiB,EAAW,IAAIoB,GACjB,CACD,EATD,GAUO,KACLN,GAAS,CAAK,CACf,GACA,CAACb,EAAa0mB,IAEjBruC,aAAgB,KACTG,GACHunB,EAAW,GACb,GACC,CAACvnB,IA2FJ,OAAIgG,EAEAxE,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEf1U,UAAU,QACVM,IAAI,iEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAMZuS,GAAWkvB,EAEXzpC,cAAA,OACES,MAAO,CACLkc,eAAgB,SAChBJ,WAAY,UACZld,SAEFW,cAAC+b,GAAO,MAMZ5c,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCF,eAAA,OAAKmI,UAAU,wBAAuBjI,SAAA,CACpCW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,MAAIsH,UAAU,mBAAkBjI,SAC7B8G,EAAE,kEAGPhH,eAAA,OAAKmI,UAAU,sCAAqCjI,SAAA,CAClDW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACrB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC+c,YACrCtnB,cAAC+d,KAAO,CACNC,MAAO7X,EACL,yEACA9G,SAEFW,cAAA,UACEsH,UAAU,sBACV7H,QA/HgB6tC,KAChC9F,GAAwBD,EAAoB,EA8HOloC,SAEnCW,cAAA,KAAGsH,UAAU,oBAGf,OAENtH,cAAA,OAAKsH,UAAU,wBAAuBjI,SACpCW,cAACwnB,KAAY,CACXjoB,GAAG,cACHK,GAAI,CAAE1B,MAAO,KACb1D,MAAOgyC,EACP/kB,WAAYhC,EAAe,GAAKinB,EAChChlB,kBAAkB,EAClBpf,SAnFmBqf,CAACjoB,EAAOlF,KACvC,GAAIA,EAAO,CACTiyC,EAAgBjyC,GAChBmyC,EAAcnyC,EAAMc,MACpB,MAAMiyC,EAAYhnB,KAAKC,KACrBkb,EAAM8L,WAAW9L,IAAe,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOpmC,SAAc,OAALd,QAAK,IAALA,OAAK,EAALA,EAAOc,MAAO,IAjJxC,IAoJnBk2B,EAAe+b,EACjB,MACEd,EAAgB,MAChBE,EAAc,IACdjnB,GAAgB,GAChB8L,EAAe,EACjB,EAsEYhzB,KAAMA,EACNopB,QAnGaloB,IACzB,MAAM+tC,EAAY/tC,EAAM0H,OAAO5M,MACzBkzC,EAAehM,EAAMzpB,MACxBtW,IAAI,IAAAgsC,EAAA,OAAS,OAAJhsC,QAAI,IAAJA,GAAU,QAANgsC,EAAJhsC,EAAMrG,YAAI,IAAAqyC,OAAN,EAAJA,EAAYrqC,iBAAkBmqC,EAAUnqC,aAAa,IAG/DmpC,EADEiB,GAGc,MAElBf,EAAcc,GACd/nB,GAAgB,EAAM,EAyFVqC,OAAQA,KACNplB,GAAQ,EAAK,EAEfrC,QAASA,KACPqC,GAAQ,EAAM,EAEhBqlB,qBAAsBA,CAACpnB,EAAQpG,IAC7BoG,EAAOtF,OAASd,EAAMc,KAExB2sB,eAAiBrnB,GAAWA,EAAOtF,KACnCmC,QAASA,EACT8c,QAASyL,EACTkC,YAAcC,GACZnoB,cAACgiB,KAAS,IACJmG,EACJ5K,MAAOpX,EACL,+DAEFiiB,KAAK,QACL5tB,MAAOkyC,EACPrkB,WAAY,CACVC,aACEnpB,eAACd,WAAc,CAAAgB,SAAA,CACZ2mB,EACChmB,cAACwoB,KAAgB,CAAC5qB,MAAM,UAAUwqB,KAAM,KACtC,KACHD,EAAOE,WAAWC,gBAGvB1oB,GAAI,CAAEG,aAAc,gBAQlCC,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCF,eAAA,SAAOmI,UAAU,iBAAgBjI,SAAA,CAC/BW,cAAA,SAAOsH,UAAU,6BAA4BjI,SAC3CF,eAAA,MAAAE,SAAA,CACEW,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,YAAWjI,SACtB8G,EAAE,2DAGPnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,gBAAejI,SAC1B8G,EACC,gEAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,gBAAejI,SAC1B8G,EAAE,2DAGPnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,mBAAkBjI,SAC7B8G,EACC,8DAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,iBAAgBjI,SAC3B8G,EACC,gEAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,aAAYjI,SACvB8G,EAAE,4DAGPnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,wBAAuBjI,SAClC8G,EACC,yEAMF,OAAPkgB,QAAO,IAAPA,OAAO,EAAPA,EAASrqB,KAAI,CAACsmB,EAAM9mB,KAAG,IAAAgP,EAAAC,EAAA,OACtBzK,cAAA,SAAiBsH,UAAU,4BAA2BjI,SACpDW,cAAAZ,WAAA,CAAAC,SACEF,eAAA,MAAAE,SAAA,CACEW,cAAA,MAAIsH,UAAU,6BAA4BjI,SAAEijB,EAAKhnB,OACjD0E,cAAA,MAAIsH,UAAU,0BAAyBjI,SACpCijB,EAAKvb,YAER/G,cAAA,MAAIsH,UAAU,0BAAyBjI,SAAEijB,EAAK3gB,OAC9C3B,cAAA,MAAIsH,UAAU,6BAA4BjI,SAClB,OAArBijB,EAAKgV,YAAuB,GAAK,IAAIhV,EAAKgV,gBAE7Ct3B,cAAA,MAAIsH,UAAU,2BAA0BjI,SAAC,mBAGzCF,eAAA,MAAImI,UAAU,uBAAsBjI,SAAA,CACjC,IAAI,oBAGPF,eAAA,MAAImI,UAAU,0BAAyBjI,SAAA,CACjB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCie,aACrCzoB,cAAC+d,KAAO,CACNC,MAAO7X,EACL,qEACA9G,SAEFW,cAAC0oB,KAAY,CACXphB,UAAU,mBACV7H,QAASA,KAAMmuC,OA9PRruC,EA8PgC+iB,EAAK/iB,GA7PpE4sC,EAAO5sC,GACPssC,GAAsBD,QACLlK,EAAMzpB,MAAM5J,GAAMA,EAAE9O,KAAOA,IAHbA,KA8PyC,MAGlD,KAEgB,OAAnByK,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EAAsCoe,UACrC7oB,cAACmiC,GAAgB,CACfC,cAAe9f,EAAK/iB,GACpB8iC,kBAAmB/f,EAAKmC,UAExB,cArCAjpB,EAyCJ,YAMhB2D,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,OACX9gB,UAAU,yBACV7H,QAhQQouC,KACM,IAAhBtc,GACFC,EAAeD,EAAc,EAC/B,EA8PM3P,SAAU2P,GAAe,EAAElyB,SAE3BW,cAACgpB,KAAe,MAElB7pB,eAAA,QAAAE,SAAA,CACGkyB,EAAY,MAAI0b,KAEnBjtC,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,QACX9gB,UAAU,yBACV7H,QAjQSwpB,KACXsI,IAAgB0b,GAClBzb,EAAeD,EAAc,EAC/B,EA+PM3P,SAAU2P,IAAgB0b,GAA6B,IAAfA,EAAiB5tC,SAEzDW,cAACkpB,KAAgB,SAGrBlpB,cAACsnC,GAAgB,CAACzb,QAASA,IAC3B7rB,cAACwrC,GAAgB,IACjBxrC,cAAC8tC,GAAQ,CAACxF,QAAS4D,EAAKlK,UAAWN,EAAO7V,QAASA,IACnD7rB,cAACqhC,GAA0B,CAACiH,QAAS4D,EAAKC,OAAQA,MACjD,E,UCtfQ,OAA0B,qCCuK1B4B,OA3JMpwC,IACnB,MAAM,EAAEwI,GAAMC,eACP4nC,EAAKC,GAAU5vC,IAAM6D,UAAS,IAC/B,WAAEgsC,EAAU,aAAEC,EAAY,cAAEC,GAAkBtsC,qBAAWC,KAEzDM,EAAUC,eACV,KAAEggB,GAAS3kB,EAKjB,IAAI0wC,GAHI,IAAIlpC,MAGCmpC,cAAcp/B,UAAU,EAAG,IAAM,OAC1Cq/B,EAAQ,IAAIppC,KAAKkpC,GAAMhpC,UALD,KAKaid,EAAKyV,UAC/B,IAAI5yB,KAAKopC,GA6CtB,OACEpvC,eAAA,OACEmI,UAAU,qBACV7H,QA3BJ,WACE0uC,EAAa7rB,EAAK/iB,IAClBV,aAAaK,QAAQ,KAAMojB,EAAK/iB,IAChCV,aAAaK,QAAQ,aAAcojB,EAAK0K,KACxCnuB,aAAaK,QAAQ,cAAeojB,EAAKhnB,MACzCuD,aAAaK,QAAQ,YAAaojB,EAAKmX,YACvC56B,aAAaK,QAAQ,WAAYojB,EAAKoX,UACtC76B,aAAaK,QAAQ,SAAUojB,EAAKmY,iBACpC57B,aAAaK,QAAQ,UAAWojB,EAAKksB,UACrC3vC,aAAaK,QAAQ,mBAAoB6G,KAAKC,UAAUrI,EAAM2kB,OAE9D,IAAImsB,EAAY,GAChBA,EAAUznC,KAAKsb,GACf4rB,EAAWO,GACXpsC,EAAQ2E,KAAK,cAAgBsb,EAAK/iB,GACpC,EAYyBF,SAAA,CAErBW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,OACEsH,UAAU,eACVY,IAAI,OACJN,IAAK0a,EAAK0K,IAAM1K,EAAK0K,IAAM,kFAIjC7tB,eAAA,OAAKmI,UAAU,0BAAyBjI,SAAA,CACtCW,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCW,cAAA,QAAAX,SAAOijB,EAAKhnB,SAEd0E,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,QAAMsH,UAAW,6BAA6B0G,GAAqBsU,EAAKosB,eAAgBpsB,EAAKqsB,uBAAuBtvC,SAClHW,cAAA,QAAAX,SAAO,GAAGwO,GAAsByU,EAAKosB,eAAgBpsB,EAAKqsB,uBAAuBxoC,EAAE,sDAGvFnG,cAAA,OAAKsH,UAAU,4BAA2BjI,SACxCF,eAAA,QAAAE,SAAA,CACEW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IAAK7G,GACL7C,MAAM,KACNgC,OAAO,KACPgI,IAAI,WAEA,IACPoa,EAAKje,KAAK,MAAIie,EAAKne,gBAI1BhF,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,QAAAX,SAAO8G,EAAE,uDAEXnG,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,QAAAX,SAAO8G,EAAE,iDAEXnG,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,QAAAX,SAAO8G,EAAE,mDAEXnG,cAAA,OAAKsH,UAAU,0BAAyBjI,SACtCF,eAAA,QAAAE,SAAA,CACEW,cAAA,QAAAX,SAAOijB,EAAKosB,iBAAsB,MAAG1uC,cAAA,QAAMsH,UAAW,GAAGgb,EAAKqsB,oBAAsB,GAAI,gCAAwCtvC,SAAEijB,EAAKqsB,2BAG3I3uC,cAAA,OAAKsH,UAAU,0BAAyBjI,SACtCF,eAAA,QAAAE,SAAA,CACEW,cAAA,QAAAX,SAAOijB,EAAKssB,cAAmB,MAAG5uC,cAAA,QAAMsH,UAAW,GAAGgb,EAAKusB,aAAe,GAAI,gCAAwCxvC,SAAEijB,EAAKusB,oBAGjI7uC,cAAA,OAAKsH,UAAU,0BAAyBjI,SACtCF,eAAA,QAAAE,SAAA,CACEW,cAAA,QAAAX,SAAOijB,EAAKwsB,oBAAyB,MAAG9uC,cAAA,QAAMsH,UAAW,GAAGgb,EAAKysB,aAAe,GAAI,gCAAwC1vC,SAAEijB,EAAKysB,uBAIzI/uC,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,OAAKsH,UAAU,kCAAiCjI,SAC9CW,cAAA,OAAKsH,UAAU,yBAAwBjI,SAEnCF,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OAAKsH,UAAU,8BAA6BjI,SAE1CW,cAAA,OACE4H,IC7IL,yuHD8IKM,IAAI,OACJhK,MAAM,KACNgC,OAAO,SAGXF,cAAA,OAAKsH,UAAU,8BAA6BjI,SAE1CF,eAAA,QAAAE,SAAA,CAAM,OAEJW,cAAA,SAAAX,SACEW,cAAA,OAAAX,SAAK,4BAWjB,E,8BE7BK2vC,OAnHOpzB,IAMf,IAADqzB,EAAA1kC,EAAA,IANiB,KACrB5I,EAAI,SACJwY,EAAQ,eACR+0B,EAAc,aAEdpe,GACDlV,EACC,MAAM,EAAEzV,GAAMC,cACR/D,EAAUC,eACV,WAAE4rC,EAAU,aAAEC,EAAY,oBAAEnkC,GAAwBlI,qBAAWC,MAC/D,KAAEiC,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aACxC+Y,GACA,CACE7Y,YAAa,WACblU,UAAW,CACT2oC,oBAAqBnyC,SAAS6B,aAAaC,QAAQ,WAIlDtE,EAAOkI,GAAYrE,IAAM6D,WAC1BktC,EAAYj1B,GACXk1B,EAAOC,GAAYjxC,IAAM6D,WAC1B+Y,EAAiB,OAAJjX,QAAI,IAAJA,GAAkE,QAA9DirC,EAAJjrC,EAAMurC,kBAAkBt3B,MAAM2W,GAAYA,EAAQrvB,KAAW,OAAL8vC,QAAK,IAALA,OAAK,EAALA,EAAO9vC,aAAG,IAAA0vC,OAA9D,EAAJA,EAAoEjiB,IACvFnuB,aAAaK,QAAQ,cAAoB,OAALmwC,QAAK,IAALA,OAAK,EAALA,EAAO/zC,MAC3CuD,aAAaK,QAAQ,aAAc+b,GAEnCnY,qBAAU,KACJtI,GACFg1C,GACF,GACC,CAACh1C,IAEJsI,qBAAU,KACJusC,GACFI,GACF,GACC,CAACJ,IAEJ,MAAMG,EAAgBA,KACpB,MAAME,EAAYN,EAAUn3B,MAAM2W,GAAYA,EAAQrvB,IAAM/E,EAAM+E,KAClE+vC,EAASI,EAAU,EAEfD,EAAkBA,KACtBtB,EAAakB,EAAM9vC,IACnB8C,EAAQ2E,KAAK,cAAgBqoC,EAAM9vC,GAAG,EAUxC,OACEJ,eAAA,OAAKmI,UAAU,0BAAyBjI,SAAA,CACtCW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCF,eAAA,QAAAE,SAAA,CACG8G,EAAE,iDAAiD,KAAGxE,OAG3DxC,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CAChC,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC2Q,KACrClb,cAACwnB,KAAY,CACXY,KAAK,QACL5tB,MAAOA,EACP8N,SAAUA,CAAC5I,EAAOiwC,KAAc,IAADC,EAAAC,EAC7BntC,EAASitC,GACT9wC,aAAaK,QAAQ,KAAMywC,EAASpwC,IACpCV,aAAaK,QACX,mBACA6G,KAAKC,UACS,OAAZ8qB,QAAY,IAAZA,GAAgC,QAApB8e,EAAZ9e,EAAcgf,0BAAkB,IAAAF,OAApB,EAAZA,EAAkC33B,MAC/B5J,GAAMA,EAAE9O,KAAOowC,EAASpwC,OAI/B2uC,EAAW,CACG,OAAZpd,QAAY,IAAZA,GAAgC,QAApB+e,EAAZ/e,EAAcgf,0BAAkB,IAAAD,OAApB,EAAZA,EAAkC53B,MAC/B5J,GAAMA,EAAE9O,KAAOowC,EAASpwC,MAE3B,EAEJA,GAAG,iBACH9B,QAAS0c,EACT8N,eAAiBrnB,GAAWA,EAAOtF,KACnCmF,MAAO,CAAEvC,MAAO,KAChBgqB,YAAcC,GACZnoB,cAAC3B,IAAMkqB,SAAQ,CAAAlpB,SACbW,cAACgiB,KAAS,CACRpiB,GAAI,CAAEmwC,YAAa,OAAQ9xC,OAAQ,cAC/BkqB,EACJ1nB,MAAO,CAAEP,OAAQ,IACjBqd,MAAOpX,EACL,oEAEF9E,QAAQ,iBAKd,MAEF6tC,GACAlvC,cAACgwC,KAAI,CACHvvC,MAAO,CAAEsc,gBAAiB,UAAWnf,MAAO,SAC5C2f,MAAO1e,aAAaC,QAAQ,eAC5BmxC,SA5DkBC,KAC1BrxC,aAAaK,QAAQ,cAAe,IACpCic,eAAetQ,WAAW,kBAC1BsQ,eAAetQ,WAAW,mBAC1B/P,OAAOiG,SAASC,QAAQ,SA4DlB,EChIK,SAASmvC,KACpB,OACInwC,cAAA,iBACIS,MAAO,CACPvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEb1U,UAAU,QACVM,IAAI,4DACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,GAGpB,CCiNegkB,OA7MEA,KAAO,IAADzhB,EAAAC,EACrB,MAAM,KACJ7I,EAAI,QACJC,EAAO,SACPuY,EAAQ,YACRkR,EAAW,KACX+kB,EAAI,QACJC,EAAO,aACPC,EAAY,gBACZC,EAAe,oBACfvmC,GACElI,qBAAWC,KACTM,EAAUC,eACTkuC,EAAaC,GAAkBvuC,mBAAS,KACxCwuC,EAAcC,GAAmBzuC,mBAAS,KAC1C0uC,EAAUC,GAAe3uC,mBAAS,IAClCgtC,EAAgB4B,GAAqB5uC,oBAAS,IAEnD8B,KAAM+sC,EACNx2B,QAASy2B,EACTxsC,MAAOysC,EAAU,QACjBplB,GACErR,aAAS8Y,GAAsB,CACjC5Y,YAAa,WACbC,6BAA6B,EAE7BnU,UAAW,CACT6f,QAAS,EACT+pB,KAAME,MAIHY,GAAWltC,KAAMmtC,EAAW52B,QAAS62B,EAAa5sC,MAAO6sC,IAC9DC,aAAahe,GAAsB,CACjC5Y,YAAa,aAGX1W,EAAOmtC,GAAaJ,EACpBx2B,EAAU62B,GAAeJ,EACzBxsC,EAAQysC,GAAcI,EA+F5B,OA9DAvuC,qBAAU,KACRhI,OAAOy2C,OAAO,CACZ7J,IAAK,GACL,GACD,IAEH5kC,qBAAU,KACJstC,GACFvkB,GACF,GACC,CAACukB,EAAMvkB,IAEV/oB,qBAAU,KACR,GAAIkB,GACEA,EAAKwtC,kBAAkBr3B,SAAU,CACnCkR,EAAY,IACZ,IAAIomB,EAAWlrB,KAAKC,KAAKxiB,EAAKwtC,kBAAkBE,YAAc,GAC9Db,EAAYY,GACZ,IAAK,IAAIpjC,EAAI,EAAGA,EAAIrK,EAAKwtC,kBAAkBr3B,SAAStL,OAAQR,IAC1Dgd,GAAasmB,GAAS,IACjBA,EACH,CACEpyC,GAAIyE,EAAKwtC,kBAAkBr3B,SAAS9L,GAAG9O,GACvCjE,KAAM0I,EAAKwtC,kBAAkBr3B,SAAS9L,GAAG/S,KACzC+I,KAAML,EAAKwtC,kBAAkBr3B,SAAS9L,GAAGhK,KACzC2oB,IAAKhpB,EAAKwtC,kBAAkBr3B,SAAS9L,GAAG2e,IACxC7oB,QAASH,EAAKwtC,kBAAkBr3B,SAAS9L,GAAGlK,QAC5CwqC,oBACE3qC,EAAKwtC,kBAAkBr3B,SAAS9L,GAAGujC,mBACrCC,mBACE7tC,EAAKwtC,kBAAkBr3B,SAAS9L,GAAGyjC,kBACrCpD,eAAgB1qC,EAAKwtC,kBAAkBr3B,SAAS9L,GAAGqgC,eACnDK,aAAc/qC,EAAKwtC,kBAAkBr3B,SAAS9L,GAAG0jC,eACjDjD,kBAAmB9qC,EAAKwtC,kBAAkBr3B,SAAS9L,GAAG2jC,WACtDnD,aAAc7qC,EAAKwtC,kBAAkBr3B,SAAS9L,GAAG4jC,aACjDrD,YAAa5qC,EAAKwtC,kBAAkBr3B,SAAS9L,GAAG6jC,SAChDzY,WAAYz1B,EAAKwtC,kBAAkBr3B,SAAS9L,GAAGorB,cAiBvD,CACF,GACC,CAACz1B,IAEJlB,qBAAU,KACRjE,aAAaK,QAAQ,UAAW6G,KAAKC,UAAUmU,IAC/CvY,EAAQ/C,aAAaC,QAAQ,QAAQ,IAGnC0F,GACW,4CAATA,IACF3F,aAAagM,WAAW,SACxBxI,EAAQ2E,KAAK,MAGbhH,cAAA,OAAAX,SACEW,cAACmwC,GAAY,OAKf51B,EAEAva,cAAA,OACES,MAAO,CACLkc,eAAgB,SAChBJ,WAAY,UACZld,SAEFW,cAAC+b,GAAO,MAMZ5c,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCW,cAACgvC,GAAa,CACZrtC,KAAMA,EACNmvB,aAAc9sB,EACdmW,SAAUnW,EAAK8rC,mBACfZ,eAAgBA,EAChBrjB,QAASA,IAES,OAAnB7hB,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC2Q,MAxGd,GAAvBw1B,EAAa7hC,QAA8B,IAAf2hC,EAA0Br2B,EACtDu2B,GAGKv2B,GAqGQne,KAAI,CAACsmB,EAAM9mB,IACpBwE,cAAC+tC,GAAW,CAAC/pC,KAAM+sC,EAAqBzuB,KAAMA,GAAX9mB,KAErC,KAEgB,OAAnBwO,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsC0Q,MAAQg0B,EAC7C/vC,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCW,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,OACX9gB,UAAU,6BACV7H,QApIS0yC,KACb/B,EAAO,IACTG,EAAgBD,EAAe,GAC/BD,EAAQD,EAAO,GACjB,EAiIQxuB,SAAUwuB,GAAQ,EAAE/wC,SAEpBW,cAACgpB,KAAe,MAGlB7pB,eAAA,QAAAE,SAAA,CACG+wC,EAAK,MAAIQ,KAGZ5wC,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,QACX9gB,UAAU,6BACV7H,QAzJU2yC,KACdhC,GAAQQ,IACVL,EAAgBD,EAAe,GAC/BD,EAAQD,EAAO,GACjB,EAsJQxuB,SAAUwuB,IAASQ,EAASvxC,SAE5BW,cAACkpB,KAAgB,SAGnB,OACA,E,uHC7NH,MAAMmpB,GAAkBn4C,GAAG;;;;;;;;;;;;;;;;EAkBrBo4C,GAAyBp4C,GAAG;;;;;;;;;;;;;;;;EAkB5Bq4C,GAA2Br4C,GAAG;;;;;;;;EAU9Bs4C,GAA+Bt4C,GAAG;;;;;;;;;;;;;;;;EAkBlCu4C,GAAgCv4C,GAAG;;;;;;;;EAUnCw4C,GAA4Bx4C,GAAG;;;;;;;;;;;;;;;;EAwB/By4C,IAN+Bz4C,GAAG;;;;EAMZA,GAAG;;;;GAYzB04C,IAN6B14C,GAAG;;;;EAMFA,GAAG;;;;GAMjC24C,GAA0B34C,GAAG;;;;8GCtH3B,I,kBCsGA44C,OA/Ff,SAAuBl3B,GAAwC,IAAvC,KAAE5X,EAAI,QAAE+uC,EAAO,QAAEC,EAAO,SAAEltC,GAAU8V,EAC1D,MAAM,EAAEzV,GAAMC,eACP6sC,EAAYC,GAAiBhxC,mBAASpH,OAAOm4C,YAEpD,OACEjzC,cAAAZ,WAAA,CAAAC,SACQ,OAAJ2E,QAAI,IAAJA,KAAMmvC,WAUNnzC,cAACozC,KAAe,CACd31C,QAAS,CACPugB,MAAO,CACL/H,KAAM,GACNo9B,MAAO,QAETC,MAAO,CACLC,IAAK,EACLC,IAAS,OAAJxvC,QAAI,IAAJA,OAAI,EAAJA,EAAMmvC,WAAWtkC,OACtB4kC,YAAgB,OAAJzvC,QAAI,IAAJA,OAAI,EAAJA,EAAMmvC,WAAWtkC,QAAS,EACtCmP,MAAO,CACLyG,SAAS,IAGbivB,YAAa,CACXC,KAAM,CACJC,YAAa,GACbC,OAAQ,CACNpvB,SAAS,EACTqvB,OAAQ,WAGZC,OAAQ,CACNC,OAAQ,CACNC,SAAU,CACRxvB,SAAS,IAGbyvB,eAAgB,EAChBL,OAAQ,CACNpvB,SAAS,EACTqvB,OAAQ,UAEVv2B,MAAO,CACLkH,SAAS,KAIf0vB,OAAQ,CACNd,MAAOJ,GAAc,IAAM,SAAW,QACtCmB,cAAenB,GAAc,IAAM,SAAW,MAC9CoB,OAAQpB,GAAc,IAAM,aAAe,WAC3CqB,EAAG,EACH/lC,EAAG,GAELgmC,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETmB,MAAO,CACLC,SAAU,KAEZC,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAKR,EACLS,IAAKR,EACL4B,OAAQ,CACNC,OAAQ,kBAGZC,QAAS,CACPC,YAAa,WACbC,aAAc,0BAEhBC,KAAM,CACJC,eAAgBpvC,GAElBiuC,OAAY,OAAJ/vC,QAAI,IAAJA,OAAI,EAAJA,EAAMmvC,WACdgC,QAAS,CACP1wB,SAAS,MA/EfzkB,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAmC,IAC3CjvC,EACC,oFAkFd,EClGO,MAAMkvC,GAA+Bn7C,GAAG;;;;;;;;;;;;;;;;;;;;;;EAwBlCo7C,GAAwBp7C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B3Bq7C,GAAsBr7C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EA0BzBs7C,GAAqBt7C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EA0BxBu7C,GAAiBv7C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCpBw7C,GAAiCx7C,GAAI;;;;EAMrCy7C,GAA0Bz7C,GAAI;;;;EClG3C07C,KAAW7vB,WAAW,CACpB8vB,KAAM,CACJC,UAAW,cACXC,eAAgB,iCAIpB,MAAMC,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPnT,QAAS,CACPqZ,KAAM8yB,KAAM,MAEdC,UAAW,CACTC,MAAO,UACPhzB,KAAM,UACNizB,KAAM,UACNC,aAAc,WAKdC,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MACEC,GAAmBL,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MACEE,GAAmBN,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVD,MAAO,MACPmhB,WAAY,WARSw3B,CAUrBI,MACEG,GAAiBP,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAEEhuC,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZjZ,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,QAG1CG,YAAa,CACX/V,SAAU,KAEZgW,YAAa,CACX9tC,UAAWgT,EAAMwY,QAAQ,IAE3B7W,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,2BAGZi5C,YAAa,CACXr3C,OAAQwc,EAAMwY,QAAQ,GACtBsM,SAAU,KAEZgW,YAAa,CACX9tC,UAAWgT,EAAMwY,QAAQ,KAG7BwiB,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAC9CxY,EAAMwY,QAAQ,GAAK,OAGvBojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAGZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAIT+uC,GAAaC,sBAAW,CAAC16C,EAAOwK,KAAS,IAADmwC,EAC5C,MAAM,EAAEnyC,GAAMC,eACPmyC,GAAgB/1C,YAAY8yC,KAC7B,MACJjoB,EAAK,QACLmrB,EAAO,KACP7E,EAAI,UACJ8E,EAAS,OACTC,EAAM,OACNzqB,EAAM,UACN0qB,EAAS,QACTvB,EAAO,WACPwB,EAAU,cACVC,GACE/2C,qBAAWC,MACT,QAAEmY,EAAO,OAAE4+B,EAAM,WAAEC,EAAU,KAAEv6C,EAAI,QAAEmE,GAAYhF,GAChDq7C,EAAYC,GAAiB/2C,mBAAS,KACtC6wC,EAASmG,GAAch3C,sBACvB8wC,EAASmG,GAAcj3C,sBACvBk3C,EAAcC,GAAmBn3C,sBACjCo3C,EAAcC,GAAmBr3C,sBACjCs3C,EAASC,GAAcv3C,oBAAS,IAChCw3C,EAAWC,GAAgBz3C,mBAAS,KACpC03C,EAAiBC,GAAsB33C,mBAAS,IAChD+yC,EAAM6E,GAAW53C,mBAA6B,GAApBgY,EAAQ6d,WACnCtuB,EAAUT,MACTmmB,EAAM4qB,GAAW17C,IAAM6D,SAASrD,aAAaC,QAAQ,cACrDX,EAAUC,GAAeC,IAAM6D,SAAS,OACxC83C,EAAWC,GAAgB57C,IAAM6D,UAAS,GAC3Cg4C,EAAW77C,IAAMg6B,UAChB8hB,EAASC,IAAc/7C,IAAM6D,YAwB7Bm4C,GAAcC,IAAmBj8C,IAAM6D,YAEvCq4C,IAAe,KAAEv2C,GAAI,QAAEuW,GAAO,MAAE/V,GAAK,cAAEg2C,GAAa,QAAE3uB,KAC3DylB,aAAae,GAAiB,CAC5B33B,YAAa,aASjB5X,qBAAU,KACJs0C,GA8iBN,WACE,IACEmB,EAAa,CACX/xC,UAAW,CACT60B,MAAO,CAAC+b,GACRpzC,KAAM,CAAEy2C,YAAaz2C,GAAKu2C,cAAcE,aACxChgB,gBAAiB57B,aAAaC,QAAQ,UACtC0vC,SAAU,EACV13B,UAAWlB,GAAgBwjC,EAAe,OAC1CsB,WAAY,GACZ/V,YAAa9lC,aAAaC,QAAQ,eAClCklC,SAAUnlC,aAAaC,QAAQ,QAC/B67C,aAAc97C,aAAaC,QAAQ,cACnC87C,UAAW/7C,aAAaC,QAAQ,gBAGjC4H,MAAMC,IACLyzC,GAAWzzC,EAAM3C,KAAK62C,mBAAmB,IAE1C5zC,OAAOC,IACNzC,QAAQD,MAAM0C,EAAI,GAExB,CAAE,MAAOA,GACPzC,QAAQD,MAAM0C,EAChB,CACF,CAtkBI4zC,EACF,GACC,CAAC1D,IAEJt0C,qBAAU,KACJq3C,GACFY,IACF,GACC,CAACZ,IAEJr3C,qBAAU,KACJkB,KACFi1C,EAAcj1C,IACdi2C,GAAa,GACf,GACC,CAACj2C,KAEJlB,qBAAU,KAER,GAAKoX,EAAQuf,YAAevf,EAAQwf,SAgD7B,CACDshB,EAAI,IAAI71C,KAEZ,IAAI81C,EAAsB,MAEtBC,EAAsB,KAC1B,IAEIC,GAFO,IAAIh2C,MAGR7I,WAAW4S,UAAU,EAAG,IAC7B,IACAgL,EAAQuf,WACR,QACAvf,EAAQ6d,UAGNqjB,EAASD,EAAKjsC,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EACF,IAAIl2C,KAAKi2C,GAAQ/1C,UACjBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAEhCI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE7B,GAAI21C,EAAE31C,UAAYi2C,EAAS,CACzBjC,EAAgBr8C,SAASq+C,GAAYJ,GACrC/B,EAAWl8C,SAASs+C,GAAWL,GAC/B1B,EACEv8C,SAASq+C,EAAU,IAAM,MAAW,IAAOJ,GAE7C9B,EACEn8C,SAASs+C,EAAS,IAAM,MAAW,IAAOL,GAG5C,IAAIM,EAAgB,IAAIp2C,KAAK61C,EAAE31C,UAAY41C,GAC3CtB,EACE4B,EAActsC,cACZ,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,WAElBurC,GAAgB,IAAIn1C,KAAK61C,EAAE31C,UAAY41C,IAEvCpB,EAAmBmB,EAAE31C,UAAY41C,GACjCV,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACEF,EAActsC,cACd,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,UAChB0qB,WAAYz8B,SAASq+C,GAAYJ,EACjCvhB,SACE18B,SAASq+C,EAAU,IAAM,MAAW,IAAOJ,GAE/CvgC,YAAa,qBAEjB,KAAO,CACL2+B,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9ChB,GAAgB,IAAIn1C,KAAK61C,EAAE31C,YACvBk2C,EAAgB,IAAIp2C,KAAK61C,EAAE31C,WAC/Bs0C,EACE4B,EAActsC,cACZ,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,WAElB8qC,EAAmBmB,EAAE31C,WACrBk1C,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACEF,EAActsC,cACd,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,UAChB0qB,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,qBAEjB,CACF,KA5I8C,CAC5C,IAAIwgC,EAAsB,KAE1B,IAAIF,EAAI,IAAI71C,KAEZm1C,GACE,IAAIn1C,KAAK61C,EAAE/rC,cAAgB,KAAO+rC,EAAEhsC,WAAa,GAAK,IAAMgsC,EAAEjsC,YAEhE4qC,EACEqB,EAAE/rC,cAAgB,KAAO+rC,EAAEhsC,WAAa,GAAK,IAAMgsC,EAAEjsC,WAGvD8qC,EACE,IAAI10C,KACF61C,EAAE/rC,cAAgB,KAAO+rC,EAAEhsC,WAAa,GAAK,IAAMgsC,EAAEjsC,WACrD1J,WAEJ,IAAIq2C,EAAM,IAAIv2C,KAEVw2C,EACFD,EAAIp/C,WAAW4S,UAAU,EAAG,IAAM,gBAAkBgL,EAAQ6d,UAE1DziB,EAAQomC,EAAIp/C,WAAW4S,UAAU,EAAG,IAAM,gBAE1CmsC,EACF,IAAIl2C,KAAKmQ,GAAOjQ,UAChBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAEhCI,EAAU,IAAIn2C,KAAKw2C,GAAet2C,UAEtCg0C,EAAgBgC,GAEhBnC,EAAWoC,GAEX/B,EAAgBv8C,SAASs+C,EAAS,IAAM,MAAW,KAEnDnC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9Cf,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACET,EAAE/rC,cAAgB,KAAO+rC,EAAEhsC,WAAa,GAAK,IAAMgsC,EAAEjsC,UACvD0qB,WAAY4hB,EACZ3hB,SAAU18B,SAASs+C,EAAS,IAAM,MAAW,KAE/C5gC,YAAa,qBAEjB,CA4FA,GACC,IAEHkhC,8BAAoBzzC,GAAK,MACvB,mBAAM0zC,GACJhD,GAAc,SACRiD,IACR,MAwRF,SAASC,GAASC,GAChB,IAAIC,EAAUj/C,SAAUg/C,EAAW,IAAQ,IACzCE,EAAUl/C,SAAUg/C,EAAQ,IAAkB,IAC9CG,EAAQn/C,SAAUg/C,EAAQ,KAAuB,IAMnD,OAFAC,EAAUA,EAAU,GAAK,IAAMA,EAAUA,GAFzCE,EAAQA,EAAQ,GAAK,IAAMA,EAAQA,GAIpB,KAHfD,EAAUA,EAAU,GAAK,IAAMA,EAAUA,EAI3C,CAEA,SAASE,GAAMjoC,GAAqB,IAAhBkoC,EAASt1B,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,EAC9B,IAAIu1B,EAAQnoC,GAAO,EAAI,GAAK,EAE5B,OADAA,GAAYmoC,EACM,IAAdD,EAEKC,EAAQ/1B,KAAK61B,MAAMjoC,IAE5BA,EAAMA,EAAI7X,WAAWO,MAAM,KAMpBy/C,IADPnoC,GAJAA,EAAMoS,KAAK61B,QACPjoC,EAAI,GAAK,KAAOA,EAAI,IAAMA,EAAI,GAAKkoC,EAAYA,MAGzC//C,WAAWO,MAAM,MACP,GAAK,KAAOsX,EAAI,IAAMA,EAAI,GAAKkoC,GAAaA,IAClE,CAEA,SAASE,KACP,IAAIC,EAAU,CACVD,aAAc,EACdE,iBAAkB,EAClBC,mBAAoB,GAEtBruC,EAAI,EACN,IAAKA,EAAI,EAAGA,EAAIrK,GAAKu2C,cAAcE,YAAY5rC,OAAQR,IACrDmuC,EAAQD,cAAgBH,GACtBp4C,GAAKu2C,cAAcE,YAAYpsC,GAAGsuC,mBAEpCH,EAAQC,kBAAoBL,GAC1Bp4C,GAAKu2C,cAAcE,YAAYpsC,GAAGuuC,uBAEpCJ,EAAQE,oBAAsBN,GAC5Bp4C,GAAKu2C,cAAcE,YAAYpsC,GAAGwuC,yBAItC,OAAOL,CACT,CAEA,SAASM,GAAWC,EAAOC,GACzB,OAAkB,GAAdA,EACK,EAEF1uC,OAAO0F,WAAY+oC,EAAQC,EAAc,KAAK5oC,QAAQ,EAC/D,CAQA,GAAI5P,GACF,OACExE,cAAA,OAAKS,MAAO,CAAC,EAAEpB,SACbW,cAACmwC,GAAY,MAKnB,GAAI51B,KAAYy+B,IAAegB,EAC7B,OAAOh6C,cAAC+b,GAAO,IAGjB,MAAM+/B,GAAexhD,UACnB,MAAMs0B,EAAUsrB,EAASrf,QAEnB72B,SADei5C,KAAYruB,IACbiN,UAAU,aAE9B+c,EAAW50C,EAAKzH,MAAM,IAAI,EAatBw+C,GAAYA,KAChB,MAAMmC,EAAa,+BAA+B/C,IAC5CgD,EAAe7hB,SAASC,cAAc,KAE5C4hB,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAFI,0CAGjBD,EAAariB,QAOb+d,GAAc,GACdD,EAAW,IACXwB,GAAW,GAAG,EA8BhB,OACEp6C,cAAA,OAAAX,SACEF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OAAKmI,UAAU,kCAAiCjI,SAAA,CAC9CF,eAAA,OACEsB,MAAO,CACL8I,aAAc,IACdlK,SAAA,CAED,IACDW,cAACq9C,KAAuB,CAACC,MAAOC,KAAcC,OAAQC,KAASp+C,SAC7DF,eAACu+C,KAAI,CAACC,WAAS,EAACC,QAAQ,SAASn9C,MAAO,CAAEvC,MAAO,eAAgBmB,SAAA,CAC/DW,cAACV,IAAU,CACT1B,MAAM,OACN6B,QAASA,KA9ZTsT,KACdknC,GAAa,GACbhB,EAAc,IACdQ,GAAW,GACX,IAAIwB,EAAsB,MACtBC,EAAsB,KACtB2C,EAAQ9qC,EAAK1N,UACjBi1C,GAAgB,IAAIn1C,KAAK04C,EAAQ5C,IACjC,IAAIM,EAAgB,IAAIp2C,KAAK04C,EAAQ5C,GAQrC,GAPAtB,EACE4B,EAActsC,cACZ,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,WAEbmL,EAAQuf,YAAevf,EAAQwf,SAuC9B0hB,GANAD,EADU,IAAIh2C,KAAK04C,EAAQ5C,GAErB3+C,WAAW4S,UAAU,EAAG,IAChC,IACAgL,EAAQuf,WACR,QACAvf,EAAQ6d,WACQ7oB,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EACF,IAAIl2C,KAAKi2C,GAAQ/1C,UACjBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAChCI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9Cf,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACEF,EAActsC,cACd,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,UAChB0qB,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,0BA/D6B,CAC5C,IACIygC,EAIAC,GAJAD,EADU,IAAIh2C,KAAK04C,EAAQ5C,GAErB3+C,WAAW4S,UAAU,EAAG,IAChC,iBACAgL,EAAQ6d,WACQ7oB,UAAU,EAAG,IAAM,gBAEjCmsC,EACF,IAAIl2C,KAAKi2C,GAAQ/1C,UACjBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAChCI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAC7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9Cf,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACEF,EAActsC,cACd,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,UAChB0qB,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,qBAEjB,CAkCA,EA8UgBojC,CAAOzD,GAAa,EACpBh7C,SAEFW,cAAC+9C,KAAW,MAEd/9C,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAACg+C,KAAU,CACTC,QAAQ,cACRC,iBAAiB,EACjBC,WAAW,MACX5+C,GAAG,qBACHge,MAAOpX,EACL,2EAEF0uC,OAAO,gBACPr6C,MAAO6/C,GACP/xC,SA7PQyK,IACxBknC,GAAa,GACbhB,EAAc,IACd,IAAIiC,EAAsB,KAI1B,GAFAZ,GAAgBvnC,GAEXmH,EAAQuf,YAAevf,EAAQwf,SAkC7B,CAOD0hB,GANAD,EACFpoC,EAAKzW,WAAW4S,UAAU,EAAG,IAC7B,IACAgL,EAAQuf,WACR,QACAvf,EAAQ6d,WACQ7oB,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EACF,IAAIl2C,KAAKi2C,GAAQ/1C,UACjBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAChCI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE3Bo0C,EADE6B,EAAU1B,GAMdP,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9Cf,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACE1oC,EAAK9D,cACL,KACC8D,EAAK/D,WAAa,GACnB,IACA+D,EAAKhE,UACP0qB,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,qBAEjB,KAzE8C,CAC5C,IAAIygC,EAEAC,GAFAD,EACFpoC,EAAKzW,WAAW4S,UAAU,EAAG,IAAM,iBAAmBgL,EAAQ6d,WAC9C7oB,UAAU,EAAG,IAAM,gBACjCmsC,EACF,IAAIl2C,KAAKi2C,GAAQ/1C,UACjBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAChCI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAG3Bo0C,EADE6B,EAAU1B,GAKdP,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9Cf,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACE1oC,EAAK9D,cACL,KACC8D,EAAK/D,WAAa,GACnB,IACA+D,EAAKhE,UACP0qB,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,qBAEjB,CAuCA,EA8KgB0jC,eAAa,EACbxgD,MAAM,UACNygD,oBAAqB,CACnB,aAAc,mBAIpBr+C,cAACV,IAAU,CACT1B,MAAM,OACNgkB,SAAU43B,EACV/5C,QAASA,KAtWVsT,KACbknC,GAAa,GACbhB,EAAc,IACd,IAAIgC,EAAsB,MACtBC,EAAsB,KACtB2C,EAAQ9qC,EAAK1N,UAAY41C,EAE7B,GAAI4C,GAASjE,EAAiB,CAC5BU,GAAgB,IAAIn1C,KAAK04C,IACzB,IAAItC,EAAgB,IAAIp2C,KAAK04C,GAa7B,GAZAlE,EACE4B,EAActsC,cACZ,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,WAEH8uC,EAAQ5C,EACRrB,GACbH,GAAW,GAGRv/B,EAAQuf,YAAevf,EAAQwf,SAwC9B0hB,GANAD,EADU,IAAIh2C,KAAK04C,GAEbvhD,WAAW4S,UAAU,EAAG,IAChC,IACAgL,EAAQuf,WACR,QACAvf,EAAQ6d,WACQ7oB,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EACF,IAAIl2C,KAAKi2C,GAAQ/1C,UACjBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAChCI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9Cf,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACEF,EAActsC,cACd,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,UAChB0qB,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,0BAhE6B,CAC5C,IACIygC,EAIAC,GAJAD,EADU,IAAIh2C,KAAK04C,GAEbvhD,WAAW4S,UAAU,EAAG,IAChC,iBACAgL,EAAQ6d,WACQ7oB,UAAU,EAAG,IAAM,gBAEjCmsC,EACF,IAAIl2C,KAAKi2C,GAAQ/1C,UACjBrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAChCI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9Cf,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS07C,EAAQ,IACzB+C,WACEF,EAActsC,cACd,KACCssC,EAAcvsC,WAAa,GAC5B,IACAusC,EAAcxsC,UAChB0qB,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,qBAEjB,CAmCF,MACE++B,GAAW,EACb,EA4QgB6E,CAAMjE,GAAa,EACnBh7C,SAEFW,cAACu+C,KAAY,MAEfp/C,eAAC8sB,KAAW,CAAC3kB,UAAWmC,EAAQytC,YAAY73C,SAAA,CAC1CW,cAACksB,KAAU,CAAC3sB,GAAG,kCAAiCF,SAC7C8G,EACC,6EAGJnG,cAACmsB,KAAM,CACLC,QAAQ,kCACR7sB,GAAG,4BACH/E,MAAOk+C,EACPpwC,SAnqBI5I,IAGpBu5C,EAAc,IAEdR,EAAU/4C,EAAM0H,OAAO5M,OACvB+/C,GAAc,CACZ/zC,UAAW,CACTg1C,WAAYx+C,SAASkd,EAAQ3a,GAAI,IACjCu5C,OAAQ97C,SAAS0C,EAAM0H,OAAO5M,MAAO,IACrCihD,WAAY/B,EACZjgB,WAAY2f,EACZ1f,SAAU4f,GAEZ5+B,YAAa,qBACb,EAopBqCrb,SAEtBguB,EAAMrxB,KAAI,CAACsmB,EAAM9mB,IAChB2D,eAAC0B,KAAQ,CAAWrG,MAAO8nB,EAAK/iB,GAAGF,SAAA,CAChCijB,EAAKk8B,MAAM,KAAGl8B,EAAK7U,OAAO,MADdjS,kBAS3BwE,cAAA,OAAKsH,UAAU,oCAAoCa,IAAK+xC,EAAS76C,SAC/DW,cAAC8yC,GAAc,CACb9uC,KAAMg1C,EAAWuB,cACjBxH,QAASA,EACTC,QAASA,EACTltC,UAAgC,GAApBoU,EAAQ6d,iBAwG1B/3B,cAAA,OAAKsH,UAAU,iBAAgBjI,SAC7BF,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCF,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BW,cAAA,QAAMsH,UAAU,gBAAejI,SAC7BW,cAAA,KAAGsH,UAAU,uBACP,IACPnB,EACC,uIAGH6yC,EAAWuB,cACVv6C,cAAAZ,WAAA,CAAAC,SACEW,cAACy+C,KAAc,CAAC9yC,UAAW+yC,KAAOp3C,UAAU,mBAAkBjI,SAC5DF,eAACw/C,KAAK,CACJr3C,UAAWmC,EAAQyuC,MACnB,aAAW,mBAAkB74C,SAAA,CAE7BW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,+HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,qIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,OAChCW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,yIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gJAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,yIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,kJAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,8IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,6IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,0IAKRhH,eAAC0/C,KAAS,CAAAx/C,SAAA,CACG,OAAV25C,QAAU,IAAVA,GAAyB,QAAfV,EAAVU,EAAYuB,qBAAa,IAAAjC,OAAf,EAAVA,EAA2BmC,YAAYz+C,KAAK8iD,GAC3C3/C,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CACdjD,MAAM,SACN1nC,UAAU,KACVozC,MAAM,MAAK1/C,SAEP,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKxjD,OAER0E,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SACzB,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKjvC,QAER7P,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B08C,GAAY,OAAH+C,QAAG,IAAHA,OAAG,EAAHA,EAAKE,iBAEjB7/C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5B+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKnC,mBAAmB,UAEjCx9C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5By9C,GACCV,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKnC,mBACXP,GAAMG,KAAeA,eACrB,OAGJv8C,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B08C,GAAY,OAAH+C,QAAG,IAAHA,OAAG,EAAHA,EAAKG,kBAEjB9/C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5B+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKlC,uBAAuB,UAErCz9C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CACrB,OAAP6a,QAAO,IAAPA,OAAO,EAAPA,EAASugB,gBAAiB,KACnB,OAAPvgB,QAAO,IAAPA,OAAO,EAAPA,EAASs0B,UACR4N,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKlC,uBAAwB,OAEvC58C,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B08C,GAAY,OAAH+C,QAAG,IAAHA,OAAG,EAAHA,EAAKI,oBAEjB//C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5B+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKjC,yBAAyB,UAEvC19C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CACrB,OAAP6a,QAAO,IAAPA,OAAO,EAAPA,EAASugB,gBAAiB,KACnB,OAAPvgB,QAAO,IAAPA,OAAO,EAAPA,EAASs0B,UACR4N,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKjC,4BAEf19C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5By9C,GACCV,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKjC,yBACXT,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKnC,oBACX,OAGJx9C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5By9C,GACCV,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKjC,yBACXT,GAAMG,KAAeG,qBACrB,OAGJv9C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CACrB,OAAP6a,QAAO,IAAPA,OAAO,EAAPA,EAASugB,gBAAiB,KACnB,OAAPvgB,QAAO,IAAPA,OAAO,EAAPA,EAASs0B,UAAW4N,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKnC,wBA9DfmC,EAAIxjD,QAkE3B6D,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CAACvD,MAAM,SAAQh0C,SAC7B8G,EACC,4IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,WACvBl0C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAMG,KAAeA,cAAc,UAEtCv8C,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,WACvBl0C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAMG,KAAeE,kBAAkB,OACxCz8C,cAAA,SAAU,IACTo8C,GACCU,GACEV,GAAMG,KAAeE,kBACrBL,GAAMG,KAAeA,gBAEtB,IAAI,OAGTv8C,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,WACvBl0C,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAMG,KAAeG,oBAAoB,OAC1C18C,cAAA,SACC88C,GACCV,GAAMG,KAAeG,oBACrBN,GAAMG,KAAeA,eACpB,IAAI,OAGTv8C,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,wBAOjCrzC,cAAAZ,WAAA,CAAAC,SACEW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAAAj3C,SACb8G,EACC,+HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,qIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,OAChCW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,yIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gJAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,yIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,kJAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,8IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,6IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,qJAUd,IAIKiyC,U,qGCjzCR,MAAM+G,GACO,gEADPA,GAEM,+DAFNA,GAMC,0DANDA,GAkBU,mEAlBVA,GAmBE,2DAnBFA,GAoBI,6DApBJA,GAsBT,qEAtBSA,GAuBI,6DAvBJA,GAwBF,uDAxBEA,GA2BU,mEA3BVA,GA4BO,gEA5BPA,GA8BO,gEA9BPA,GAoCT,yEApCSA,GA8DT,oEA9DSA,GAgET,oEAhESA,GAsEA,yDAtEAA,GAwEK,gEAxELA,GAyEQ,kEAzERA,GA0EF,gECdIC,OAtDMxjC,IAAiB,IAAhB,OAAEnV,GAAQmV,EAC5B,MAAM,EAAEzV,GAAMC,cAeRi5C,EAdoB,CACtB,qBAAwBF,GACxB,YAAeA,GACf,WAAcA,GACd,iBAAoBA,GACpB,kBAAqBA,GACrB,mBAAsBA,GACtB,QAAWA,IAGC14C,EAAOgS,SAASnd,KAAKgI,cAAc4e,QAAQ,MAAO,MAwBlE,OACI/iB,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC7BW,cAAA,OAAKsH,UAAU,uBAAsBjI,SACjCW,cAAA,OACI4H,IAAK,GAAGy3C,IACRn3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,SAGff,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC7CW,cAAA,OAAKsH,UAAU,wBAAuBjI,SA5BlB,qBAAzBoH,EAAOgS,SAASnd,KACR6K,EAAE,6EACsB,eAAzBM,EAAOgS,SAASnd,KACf6K,EAAE,4EACsB,gBAAzBM,EAAOgS,SAASnd,KACf6K,EAAE,wEACqB,yBAAzBM,EAAOgS,SAASnd,KACd6K,EAAE,iFACsB,sBAAzBM,EAAOgS,SAASnd,KACf6K,EAAE,2EACsB,uBAAzBM,EAAOgS,SAASnd,KACf6K,EAAE,iFAEF,OAgBHnG,cAAA,OAAKsH,UAAU,6BAA4BjI,SAAEoH,EAAO+3C,aAEtD,EChCCc,OArBE1jC,IAAmC,IAAlC,aAAE2jC,EAAY,WAAEC,GAAY5jC,EAC5C,MAAM6jC,EAAoB,CACxBC,YAAaP,IAGTQ,EAAaJ,EAAa/vC,QAAQnB,IAAC,IAAAoB,EAAA,MAA6B,MAAvB,OAADpB,QAAC,IAADA,GAAY,QAAXoB,EAADpB,EAAG7H,iBAAS,IAAAiJ,OAAX,EAADA,EAAc6H,OAAa,IACnE+nC,EAAaI,EAAkBC,YAErC,OAAOC,EAAW3jD,KAAKqS,GACrBlP,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCW,cAAA,OAAK4H,IAAK,GAAGy3C,IAAcn3C,IAAI,gBAAgBhK,MAAM,KAAKgC,OAAO,SAEnEf,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OAAKsH,UAAU,wBAAuBjI,SAAEgP,EAAE/S,OAC1C0E,cAAA,OAAKsH,UAAU,6BAA4BjI,SAAC,0CAGhD,ECrBG,MAAMugD,GAAiBnyC,IAAY,IAADoyC,EACvC,IAAKpyC,EAAQ,MAAO,oCAWpB,OAAqB,QAArBoyC,EAVe,CACb,EAAG,+BACH,GAAI,gCACJ,GAAI,+BACJ,GAAI,mCACJ,IAAK,kCACL,IAAK,iCACLC,MAAO,+BACPC,QAAS,gCAEGtyC,UAAO,IAAAoyC,IAAI,mCAAmC,ECyC/CG,OA1COriD,IAAW,IAADsiD,EAAAC,EAC9B,MAAM,aAAEC,GAAiBxiD,GACnB,kBAAEyiD,EAAiB,uBAAEC,EAAsB,sBAAEC,GACjDx+C,qBAAWC,MACP,EAAEoE,GAAMC,cAERm6C,EAAgE,QAA5CN,EAAGl6C,KAAK4Q,MAAM9X,aAAaC,QAAQ,iBAAS,IAAAmhD,OAAA,EAAzCA,EAA2CzwC,QACrEnB,GAAMA,EAAE9O,KAAO+O,OAAO8xC,KAGzB,OACEpgD,cAAA,OAAKsH,UAAU,0BAAyBjI,SACtCF,eAAA,UACEmI,UAAU,WACVgB,SAAW+F,GAAM8xC,EAAa9xC,EAAEjH,OAAO5M,OAAO6E,SAAA,CAEJ,QAFI6gD,EAE7Cn6C,KAAK4Q,MAAM9X,aAAaC,QAAQ,iBAAS,IAAAohD,OAAA,EAAzCA,EACG1wC,QAAQnB,IAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG9O,KAAM6gD,IACxBpkD,KAAI,CAACqS,EAAG7S,IACP2D,eAAA,UACEmI,UAAU,SACVxG,UAAQ,EACR8gB,UAAQ,EACRpnB,MAAQ,OAAD6T,QAAC,IAADA,OAAC,EAADA,EAAG9O,GAAGF,SAAA,CAGZgP,EAAE/S,KAAK,MAAI6K,EAAE,GAAGy5C,GAAe,OAADvxC,QAAC,IAADA,OAAC,EAADA,EAAGZ,WACjC5O,aAAaK,QAAQ,mBAAqB,OAADmP,QAAC,IAADA,OAAC,EAADA,EAAGmyC,UAC5CH,EAAwB,OAADhyC,QAAC,IAADA,OAAC,EAADA,EAAGmyC,UAC1BF,EAAsBzhD,aAAaC,QAAQ,uBALvCtD,KAQV+kD,EAAqBvkD,KAAI,CAACqS,EAAG7S,IAC5B2D,eAAA,UAAQ3E,MAAQ,OAAD6T,QAAC,IAADA,OAAC,EAADA,EAAG9O,GAAGF,SAAA,CACjB,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG/S,KAAK,MAAI6K,EAAE,GAAGy5C,GAAe,OAADvxC,QAAC,IAADA,OAAC,EAADA,EAAGZ,aADVjS,SAK3B,EC/CH,MAAMilD,GAAmBC,wBAAc,CAAC,GAElCC,GAAoB/kC,IAAmB,IAAlB,SAAEvc,GAAUuc,EAC5C,MAAOglC,EAAgBC,GAAqB3+C,mBAAS,CACnD,CACEqQ,UAAW,IAAIpN,KACfsN,QAAS,IAAItN,KACb3J,IAAK,gBAGFslD,EAAaC,GAAkB7+C,mBAAS,IAAIiD,OAC5C67C,EAAcC,GAAmB/+C,oBAAS,GAEjD,OACElC,cAACygD,GAAiBS,SAAQ,CACxB1mD,MAAO,CACLomD,iBACAC,oBACAC,cACAC,iBACAC,eACAC,mBACA5hD,SAEDA,GACyB,E,cCxBzB,MAAM8hD,GAAoBA,CAACC,EAAaC,KAE7C,MAAMC,EAAc,IAAIn8C,KAClBo8C,EAAyB,OAAXD,QAAW,IAAXA,OAAW,EAAXA,EAAaE,WAG3BC,EAAcnzC,OADF8yC,GAIlB,GAAyC,OAA1B,OAAXC,QAAW,IAAXA,OAAW,EAAXA,EAAaK,qBAA6B,CAC5C,GAAIH,EAAcE,EAAa,CAC7B,MAAME,EAAaL,EAAYj8C,UAAY,MAC3C,OAAO,IAAIF,KAAKw8C,EAClB,CAAO,GAAIJ,GAAeE,EAAa,CACrC,MAAME,EAAaL,EAAYj8C,UAC/B,OAAO,IAAIF,KAAKw8C,EAClB,CACF,MAAO,GAAyC,OAA1B,OAAXN,QAAW,IAAXA,OAAW,EAAXA,EAAaK,qBAA6B,CACnD,GAAIH,EAAcE,EAAa,CAC7B,MAAME,EAAaL,EAAYj8C,UAAY,OAC3C,OAAO,IAAIF,KAAKw8C,EAClB,CAAO,GAAIJ,GAAeE,EAAa,CACrC,MAAME,EAAaL,EAAYj8C,UAAY,MAC3C,OAAO,IAAIF,KAAKw8C,EAClB,CACF,GAiHIz1C,GAAO,CACXC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,OAGDC,GAAS,CACbC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,OAIMs0C,GAAqBt/B,IAAU,IAADu/B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAnxC,EAAAoxC,EAAAC,EAAAlxC,EAAAmxC,EAAAC,EACzC,MAAMpzC,EAAwB,QAAVyxC,EAAGv/B,EAAK,UAAE,IAAAu/B,GAAW,QAAXC,EAAPD,EAAStvC,iBAAS,IAAAuvC,GAAY,QAAZC,EAAlBD,EAAoBxlD,kBAAU,IAAAylD,OAAvB,EAAPA,EAAgC7yC,UAAU,EAAG,GAC9Du0C,EAAoB,QAAVzB,EAAG1/B,EAAK,UAAE,IAAA0/B,GAAW,QAAXC,EAAPD,EAASzvC,iBAAS,IAAA0vC,GAAY,QAAZC,EAAlBD,EAAoB3lD,kBAAU,IAAA4lD,OAAvB,EAAPA,EAAgChzC,UAAU,EAAG,IAC1D2G,EAAe,QAAVssC,EAAG7/B,EAAK,UAAE,IAAA6/B,GAAW,QAAXC,EAAPD,EAAS5vC,iBAAS,IAAA6vC,GAAY,QAAZC,EAAlBD,EAAoB9lD,kBAAU,IAAA+lD,OAAvB,EAAPA,EAAgCnzC,UAAU,EAAG,GACrDkH,EAAc,QAAVksC,EAAGhgC,EAAK,UAAE,IAAAggC,GAAW,QAAXC,EAAPD,EAAS/vC,iBAAS,IAAAgwC,GAAe,QAAfC,EAAlBD,EAAoBtzC,qBAAa,IAAAuzC,OAA1B,EAAPA,EAAmClmD,WAC1CkW,EAAsB,QAAViwC,EAAGngC,EAAK,UAAE,IAAAmgC,GAAS,QAATC,EAAPD,EAAShwC,eAAO,IAAAiwC,GAAY,QAAZC,EAAhBD,EAAkBpmD,kBAAU,IAAAqmD,OAArB,EAAPA,EAA8BzzC,UAAU,EAAG,GAC1Dw0C,EAAoB,QAAVd,EAAGtgC,EAAK,UAAE,IAAAsgC,GAAS,QAATC,EAAPD,EAASnwC,eAAO,IAAAowC,GAAW,QAAXC,EAAhBD,EAAkB9zC,iBAAS,IAAA+zC,OAApB,EAAPA,EAA6BxmD,WAC1CoW,EAAuB,QAAVqwC,EAAGzgC,EAAK,UAAE,IAAAygC,GAAS,QAATC,EAAPD,EAAStwC,eAAO,IAAAuwC,GAAY,QAAZC,EAAhBD,EAAkB1mD,kBAAU,IAAA2mD,OAArB,EAAPA,EAA8B/zC,UAAU,EAAG,GAC3D0D,EAAkB,QAAVswC,EAAG5gC,EAAK,UAAE,IAAA4gC,GAAS,QAATC,EAAPD,EAASzwC,eAAO,IAAA0wC,GAAe,QAAfC,EAAhBD,EAAkBl0C,qBAAa,IAAAm0C,OAAxB,EAAPA,EAAiC9mD,WAC5CuW,GACoC,QAAxCZ,EAAA,IAAI9M,KAAY,QAARk+C,EAAC/gC,EAAK,UAAE,IAAA+gC,GAAW,QAAXC,EAAPD,EAAS9wC,iBAAS,IAAA+wC,OAAX,EAAPA,EAAoBhnD,mBAAW,IAAA2V,OAAA,EAAxCA,EAA0C5M,cACJ,QADa+M,EACnD,IAAIjN,KAAY,QAARo+C,EAACjhC,EAAK,UAAE,IAAAihC,GAAS,QAATC,EAAPD,EAAS9wC,eAAO,IAAA+wC,OAAT,EAAPA,EAAkBlnD,mBAAW,IAAA8V,OAAA,EAAtCA,EAAwC/M,WACpC,GACA,GAAG6G,GAAKsG,MAAiBkxC,MAAeh3C,GAAOgG,MAAkBE,MACvE,MAAO,GAAG1G,GAAKkE,MAAmBqzC,MAAe/2C,GAAOmJ,MAAUO,MAASvD,GAAW,EAG3E8wC,GAA4BrhC,IAAU,IAADshC,EAAAC,EAAAC,EAAAC,EAChD,IAAKzhC,EAAM,MAAO,GAClB,MAAMlS,EAAqB,OAAJkS,QAAI,IAAJA,GAAgB,QAAZshC,EAAJthC,EAAMhmB,kBAAU,IAAAsnD,OAAZ,EAAJA,EAAkB10C,UAAU,EAAG,GAChDmB,EAAsB,OAAJiS,QAAI,IAAJA,GAAgB,QAAZuhC,EAAJvhC,EAAMhmB,kBAAU,IAAAunD,OAAZ,EAAJA,EAAkB30C,UAAU,EAAG,GACjDoB,EAAgB,OAAJgS,QAAI,IAAJA,GAAgB,QAAZwhC,EAAJxhC,EAAMhmB,kBAAU,IAAAwnD,OAAZ,EAAJA,EAAkB50C,UAAU,EAAG,IAC3CqB,EAAiB,OAAJ+R,QAAI,IAAJA,GAAgB,QAAZyhC,EAAJzhC,EAAMhmB,kBAAU,IAAAynD,OAAZ,EAAJA,EAAkB70C,UAAU,GAAI,IACnD,MAAO,GAAGhD,GAAKkE,MAAmBE,MAAc5D,GAAO2D,MAAoBE,GAAY,EA2D5EyzC,GAAqBA,CAChCC,EACAC,EACA9C,EACA+C,EACA9C,KACI,IAAD+C,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACH,MAAMC,EAAyC,QAA9BV,EAAG,IAAIj/C,KAAK8+C,UAAkB,IAAAG,GAAY,QAAZC,EAA3BD,EAA6B9nD,kBAAU,IAAA+nD,OAAZ,EAA3BA,EAAyCn1C,UAAU,EAAG,IACpE61C,EAAgE,QAA/CT,EAAG,IAAIn/C,KAA4B,QAAxBq/C,EAACN,EAAqB,UAAE,IAAAM,OAAA,EAAvBA,EAAyBjyC,kBAAU,IAAA+xC,GACxD,QADwDC,EAA5CD,EACtBhoD,kBAAU,IAAAioD,OADwD,EAA5CA,EAEtBr1C,UAAU,EAAG,IACX81C,EAA4D,QAA7CP,EAAG,IAAIt/C,KAA4B,QAAxBw/C,EAACT,EAAqB,UAAE,IAAAS,OAAA,EAAvBA,EAAyBlyC,gBAAQ,IAAAgyC,GACpD,QADoDC,EAA1CD,EACpBnoD,kBAAU,IAAAooD,OADoD,EAA1CA,EAEpBx1C,UAAU,EAAG,IACX+1C,EAAsD,QAA9CL,EAAGzD,GAAkBC,EAAaC,UAAY,IAAAuD,GAC9C,QAD8CC,EAA3CD,EACbtoD,kBAAU,IAAAuoD,OAD8C,EAA3CA,EAEb31C,UAAU,EAAG,IAEjB,MAAwB,MAApBi1C,EACEW,IAAgBG,EAMhBF,IAAsBE,GAAYD,IAAoBC,CAK5D,E,cCrKaC,OAtGIvnD,IACjB,MAAM,gBACJwmD,EAAe,YACf/C,EAAW,YACXC,EAAW,oBACX8D,EAAmB,gBACnBlE,EAAe,YACfH,EAAW,eACXC,EAAc,eACdH,EAAc,kBACdC,GACEljD,GAEE,qBAAEumD,EAAoB,kBAAED,EAAiB,gBAAEmB,GAC/CtjD,qBAAWC,KAeb,OAZAe,qBAAU,KACJmhD,GACFlD,EAAekD,EACjB,GACC,CAACA,IAEJnhD,qBAAU,KACJohD,GACFrD,EAAkBqD,EACpB,GACC,CAACA,IAGF/kD,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CACrB,MAApB8kD,EACCnkD,cAACqlD,YAAQ,CACP/8C,SAAWga,ID8BagjC,EAAChjC,EAAMy+B,EAAgBoD,KACvD,GAAwB,MAApBA,EACKpD,EAAez+B,EACxB,EChCUgjC,CAAmBhjC,EAAMy+B,EAAgBoD,EAAgB,EAE3DoB,aAAa,EACbC,2BAA2B,EAC3BC,iBAAiB,EACjB1yC,KAAM+tC,EACN4E,QAASvE,GAAkBC,EAAaC,GACxCsE,YAAa,CAAC,aACdC,oBAAoB,EACpBC,UAAW,eAIb7lD,cAAC8lD,aAAS,CACRx9C,SAAWga,IDoBgByjC,EACnCzjC,EACAu+B,EACAsD,EACAiB,KAEA,IACGjB,IACA,CAAC,IAAK,IAAK,IAAK,MAAMv9B,SAAwB,OAAfu9B,QAAe,IAAfA,OAAe,EAAfA,EAAiBzC,qBAEjD,MAAM,IAAIh1B,MACR,4KAEG,GAAwB,MAApBy3B,EAAyB,CAAC,IAAD6B,EAAAC,EAClC,MAAMC,EAAe,OAAJ5jC,QAAI,IAAJA,GAAe,QAAX0jC,EAAJ1jC,EAAM6jC,iBAAS,IAAAH,OAAX,EAAJA,EAAiBzzC,UAC5BE,EAAc,OAAJ6P,QAAI,IAAJA,GAAe,QAAX2jC,EAAJ3jC,EAAM6jC,iBAAS,IAAAF,OAAX,EAAJA,EAAiBxzC,QAGjC,KAFiB2zC,mBAAiB3zC,EAASyzC,GAAY,EAExC,GAIb,OAAOrF,EAAkB,CACvB,CACEtuC,UAAW2zC,EACXzzC,QAASA,EACTjX,IAAK,eAPTiJ,QAAQ+f,IAAI,iCACZ4gC,GAAgB,EAUpB,MAAO,GAAwB,MAApBjB,EAAyB,CAAC,IAADkC,EAAAC,EAClC,MAAMJ,EAAe,OAAJ5jC,QAAI,IAAJA,GAAe,QAAX+jC,EAAJ/jC,EAAM6jC,iBAAS,IAAAE,OAAX,EAAJA,EAAiB9zC,UAC5BE,EAAc,OAAJ6P,QAAI,IAAJA,GAAe,QAAXgkC,EAAJhkC,EAAM6jC,iBAAS,IAAAG,OAAX,EAAJA,EAAiB7zC,QAGjC,KAFiB2zC,mBAAiB3zC,EAASyzC,GAAY,EAExC,IAIb,OAAOrF,EAAkB,CACvB,CACEtuC,UAAW2zC,EACXzzC,QAASA,EACTjX,IAAK,eAPTiJ,QAAQ+f,IAAI,iCACZ4gC,GAAgB,EAUpB,MAAO,GAAwB,OAApBjB,EAA0B,CAAC,IAADoC,EAAAC,EAG5B3F,EAAkB,CACvB,CACEtuC,UAJiB,OAAJ+P,QAAI,IAAJA,GAAe,QAAXikC,EAAJjkC,EAAM6jC,iBAAS,IAAAI,OAAX,EAAJA,EAAiBh0C,UAK9BE,QAJgB,OAAJ6P,QAAI,IAAJA,GAAe,QAAXkkC,EAAJlkC,EAAM6jC,iBAAS,IAAAK,OAAX,EAAJA,EAAiB/zC,QAK7BjX,IAAK,cAGX,GC5EUuqD,CACEzjC,EACAu+B,EACAsD,EACAiB,EACD,EAEHG,aAAa,EACbC,2BAA2B,EAC3BC,iBAAiB,EACjBgB,OAAQ7F,EACR8E,QAASvE,GAAkBC,EAAaC,GACxCqF,OAAQ,EACRf,YAAa,CAAC,aACdC,oBAAoB,EACpBC,UAAW,eAGf1mD,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,UACEsH,UAAU,uBACV7H,QAASA,IDwMgBknD,EACjCxB,EACAjB,EACAD,EACAlD,EACAF,KAEAE,EAAekD,GACfpD,EAAkBqD,GAClBiB,GAAoB,EAAM,EChNhBwB,CACExB,EACAjB,EACAD,EACAlD,EACAF,GAEHxhD,SACF,aAGDW,cAAA,UACEsH,UAAU,uBACV7H,QAASA,KACPwhD,GAAgB,GAChBkE,GAAoB,EAAM,EAC1B9lD,SACH,iBAIC,EC9EV,MAAMunD,GAAcjpD,IAClB,MAAM,WAAEkpD,EAAU,WAAEC,EAAU,gBAAE3C,EAAe,QAAE1kD,EAAO,cAAEsnD,GACxDppD,EACIqpD,OAAgCxnD,IAAlBunD,GAA8BA,GAC5C,EAAE5gD,GAAMC,cACd,OACEpG,cAAAZ,WAAA,CAAAC,SACuB,MAApB8kD,GAA2B6C,EAC1BhnD,cAAA,UAAQsH,UAAU,2BAA2B7H,QAASA,EAAQJ,SAC3DwnD,IAAe1gD,EAAE,iCAChBhH,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,KAAGsH,UAAWw/C,IACd9mD,cAAA,QAAMsH,UAAU,8BAA6BjI,SAAEwnD,OAGjD1nD,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,QAAMsH,UAAU,8BAA6BjI,SAAEwnD,IAC/C7mD,cAAA,KAAGsH,UAAWw/C,SAIlB,MACH,EAIDG,GAAiBtpD,IACrB,MAAM,KAAEoV,EAAI,UAAEm0C,EAAS,QAAEznD,GAAY9B,EACrC,OACEqC,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,0BAA0B7H,QAASA,EAAQJ,SAAA,CACxDW,cAAA,KAAGsH,UAAW4/C,IACbn0C,MAEF,EAIMo0C,GAAyBxpD,IACpC,MAAM,gBAAEwmD,EAAe,YAAE/C,EAAW,YAAEC,EAAW,kBAAE+F,GACjDzpD,GACI,EAAEwI,GAAMC,eACR,YACJ06C,EAAW,eACXC,EAAc,aACdC,EAAY,gBACZC,EAAe,eACfL,EAAc,kBACdC,GACE/+C,qBAAW2+C,KAET,qBACJyD,EAAoB,wBACpBmD,EAAuB,kBACvBpD,EAAiB,qBACjBqD,GACExlD,qBAAWC,MAERwlD,EAAkBpC,GAAuBjjD,oBAAS,GA8BzD,MFzE0CslD,EAC1CrD,EACA/C,EACAC,EACA+F,KAEA,IACGjD,IACA,CAAC,IAAK,IAAK,IAAK,MAAMv9B,SAAwB,OAAfu9B,QAAe,IAAfA,OAAe,EAAfA,EAAiBzC,qBAEjD,MAAM,IAAIh1B,MACR,4KAEG,IAAK00B,GAA+B,IAAhBA,EACzB,MAAM,IAAI10B,MACR,2EAEG,IACJ20B,IACA,CAAC,IAAK,KAAKz6B,SAAoB,OAAXy6B,QAAW,IAAXA,OAAW,EAAXA,EAAaK,qBAElC,MAAM,IAAIh1B,MACR,wJAEG,GAAiC,mBAAtB06B,GACiB,qBAAtBA,EAET,MAAM,IAAI16B,MACR,6IAGN,EEaA86B,CACErD,EACA/C,EACAC,EACA+F,GAIFtkD,qBAAU,KACJg+C,GAAeE,IACjBsG,EAAqBxG,GACrBG,GAAgB,GAClB,GACC,CAACH,EAAaE,IAGjBl+C,qBAAU,KAC6B,IAAD2kD,EAAAC,EAAhC9G,GAAkBI,IACpBqG,EAAwB,CACtB,CACE90C,UAA4B,QAAnBk1C,EAAE7G,EAAe,UAAE,IAAA6G,OAAA,EAAjBA,EAAmBl1C,UAC9BE,QAA0B,QAAnBi1C,EAAE9G,EAAe,UAAE,IAAA8G,OAAA,EAAjBA,EAAmBj1C,QAC5BjX,IAAK,eAGTylD,GAAgB,GAClB,GACC,CAACL,EAAgBI,IAGlBhhD,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,gCAA+BjI,SAAA,CAC5CW,cAAA,OAAKsH,UAAU,0BAAyBjI,SACtCF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCW,cAAC4mD,GAAU,CACTC,WAAY1gD,EAAE,iCACd2gD,WAAW,kBACXC,cAAeK,EACfjD,gBAAiBA,EACjB1kD,QAASA,IFqEWkoD,EAChC1D,EACAqD,EACApD,EACAmD,EACAlD,KAEA,GAAwB,MAApBA,EAAyB,CAC3B,MAAMyD,EAAoB,IAAIziD,KAAK8+C,GAAmB5+C,UAGtDiiD,EAAqB,IAAIniD,KADCyiD,EADT,OAGnB,KAAO,CACL,MAIMC,EAJoB,IAAI1iD,KAC5B++C,EAAqB,GAAG3xC,WACxBlN,UACe,MAEjBgiD,EAAwB,CACtB,CACE90C,UAAW,IAAIpN,KAAK0iD,GACpBp1C,QAAS,IAAItN,KAAK0iD,GAClBrsD,IAAK,cAGX,GE7FcmsD,CACE1D,EACAqD,EACApD,EACAmD,EACAlD,KAINhlD,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAACinD,GAAa,CACZC,UAAU,sBACVn0C,KACsB,MAApBoxC,EACIR,GAAyBM,GACzBrC,GAAkBsC,GAExBzkD,QAASA,IAAM0lD,GAAqBoC,KAEtCpoD,eAAA,QAAMmI,UAAU,cAAajI,SAAA,CACN,MAApB8kD,EACCnkD,cAAAZ,WAAA,CAAAC,SAAG8G,EAAE,iCACH,KACiB,MAApBg+C,EACCnkD,cAAAZ,WAAA,CAAAC,SAAG8G,EAAE,+BACH,WAIP69C,GACCC,EACAC,EACA9C,EACA+C,EACA9C,GAEArhD,cAAC4mD,GAAU,CACTC,WAAY1gD,EAAE,iCACd2gD,WAAW,iBACXC,cAAeK,EACfjD,gBAAiBA,EACjB1kD,QAASA,IFuDKqoD,EAC5B7D,EACAqD,EACApD,EACAmD,EACAlD,KAEA,GAAwB,MAApBA,EAAyB,CAC3B,MAAMyD,EAAoB,IAAIziD,KAAK8+C,GAAmB5+C,UAGtDiiD,EAAqB,IAAIniD,KADHyiD,EADL,OAGnB,KAAO,CACL,MAIMG,EAJoB,IAAI5iD,KAC5B++C,EAAqB,GAAGzxC,SACxBpN,UACe,MAEjBgiD,EAAwB,CACtB,CACE90C,UAAW,IAAIpN,KAAK4iD,GACpBt1C,QAAS,IAAItN,KAAK4iD,GAClBvsD,IAAK,cAGX,GE/EgBssD,CACE7D,EACAqD,EACApD,EACAmD,EACAlD,KAIJ,UAIPoD,GACCvnD,cAAA,OAAKsH,UAAU,WAAUjI,SACvBW,cAACklD,GAAS,CACRf,gBAAiBA,EACjB/C,YAAaA,EACbC,YAAaA,EACb8D,oBAAqBA,EACrBrE,YAAaA,EACbC,eAAgBA,EAChBE,gBAAiBA,EACjBL,eAAgBA,EAChBC,kBAAmBA,UAK1B,ECjMMmH,GAAwBrqD,GAEjCqC,cAAC2gD,GAAiB,CAAAthD,SAChBW,cAACmnD,GAAqB,IAAKxpD,MC0B3B24C,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAaEG,IAXmBP,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEmBJ,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,OA8jBWiR,OA5jBKrsC,IAAkD,IAADssC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAAhD,OAAE/P,EAAM,QAAE5+B,EAAO,YAAEkV,EAAW,UAAE05B,GAAWltC,EAC9D,MAAOq3B,EAAYC,GAAiBhxC,mBAASpH,OAAOm4C,aAC9C,EAAE9sC,GAAMC,eACR,aACJ2iD,EAAY,gBACZC,EAAe,wBACfC,EAAuB,iBACvBC,EAAgB,mBAChBC,EAAkB,sBAClBC,EAAqB,2BACrBC,EAA0B,wBAC1BC,EAAuB,kBACvBrF,EAAiB,qBACjBsF,EAAoB,kBACpBnJ,GACEt+C,qBAAWC,MAWRksB,EAAQ0qB,GAAaz2C,mBAAS42C,IAC9BhqB,EAAW06B,GAAgBtnD,mBAAS4mD,IACpCW,EAAaC,GAAkBxnD,mBAASktB,IACxCu6B,EAAcC,GAAmB1nD,mBAAS,IAAIiD,OAC9C0kD,EAAcC,GAAmB5nD,mBAbrB+yC,KAEjB,GAAiB,MADA,IAAI9vC,MAAOq8C,YACI,UAATvM,EAAkB,CACvC,MAAM8U,GAAc,IAAI5kD,MAAOE,UAAY,MAC3C,OAAO,IAAIF,KAAK4kD,EAClB,CACA,OAAO,IAAI5kD,IAAM,EAQjB6kD,CAAiB,OAAP9vC,QAAO,IAAPA,OAAO,EAAPA,EAASuf,cAGdwwB,GAAsBjmD,KAAMkmD,EAAc3vC,QAAS4vC,IACxD7Y,aAAaoB,IAET0X,EAAiC,OAAZF,QAAY,IAAZA,GAAoC,QAAxBhC,EAAZgC,EAAcG,8BAAsB,IAAAnC,GAAM,QAANC,EAApCD,EAAsClkD,YAAI,IAAAmkD,OAA9B,EAAZA,EAA4C34C,QACpEof,QAA2CpvB,IAAxB,OAAPovB,QAAO,IAAPA,OAAO,EAAPA,EAAS07B,sBAGlBC,EAAwB,OAAZL,QAAY,IAAZA,GAAoC,QAAxB9B,EAAZ8B,EAAcG,8BAAsB,IAAAjC,GAAM,QAANC,EAApCD,EAAsCpkD,YAAI,IAAAqkD,OAA9B,EAAZA,EAA4CpwC,MAC3D5J,IAAC,IAAAm8C,EAAAC,EAAAC,EAAA,MAC4B,WAA3B,OAADr8C,QAAC,IAADA,GAAU,QAATm8C,EAADn8C,EAAGymC,eAAO,IAAA0V,OAAT,EAADA,EAAYG,cACiB,WAA3B,OAADt8C,QAAC,IAADA,GAAU,QAATo8C,EAADp8C,EAAGymC,eAAO,IAAA2V,OAAT,EAADA,EAAYE,gBAA0B,OAADt8C,QAAC,IAADA,GAAO,QAANq8C,EAADr8C,EAAG/S,YAAI,IAAAovD,GAAPA,EAAS9jC,SAAS,kBAAkB,IAG9E9jB,qBAAU,KACJmhD,GACF2G,GACF,GACC,CAAC3G,IAEJnhD,qBAAU,KACR8nD,GAA2B,GAC1B,CAACxK,EAAmBnyB,EAAQa,IAE/B,MAAM87B,EAA4BA,KAChC,GAAW,OAAP1wC,QAAO,IAAPA,KAASuf,WAAY,CAAC,IAADoxB,EAAA54C,EAAA64C,EACvB,IAAIC,EAAY,KAEZC,GACe,OAAjB/G,QAAiB,IAAjBA,GAA6B,QAAZ4G,EAAjB5G,EAAmB3nD,kBAAU,IAAAuuD,OAAZ,EAAjBA,EAA+B37C,UAAU,EAAG,KAC5C,GAAU,OAAPgL,QAAO,IAAPA,OAAO,EAAPA,EAASuf,qBACL,OAAPvf,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,WAEPkzB,GAAqC,QAAvBh5C,EAAA,IAAI9M,KAAK6lD,UAAc,IAAA/4C,OAAA,EAAvBA,EAAyB5M,WAAS,OAEhDiQ,GAC0B,QAA5Bw1C,EAAA7G,EAAkB3nD,kBAAU,IAAAwuD,OAAA,EAA5BA,EAA8B57C,UAAU,EAAG,KAC3C,GAAU,OAAPgL,QAAO,IAAPA,OAAO,EAAPA,EAASuf,oBAEd,MAAMyxB,EACJ,IAAI/lD,KAAKmQ,GAAOjQ,UAChBrI,SAAgB,OAAPkd,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,UAAW,IAAMgzB,EAE/BI,EAAgB,IAAIhmD,KAAK8lD,GAAa5lD,UAE5CukD,EAAgBuB,GAChBrB,EAAgBoB,GAEhBE,EAAwBF,EAAeC,EACzC,GAGIC,EAA0BA,CAACF,EAAeC,KAC9ClB,EAAmB,CACjBzjD,UAAW,CACTsyC,OAAQ97C,SAASixB,GACjB66B,UAAWh6B,EACXu8B,UAAW,GAAG,IAAIlmD,KAAK+lD,GAAe7lD,YACtCimD,QAAS,GAAG,IAAInmD,KAAKgmD,GAAe9lD,YACpC+pB,YAAaq6B,GAEf/uC,YAAa,YACb,EA6NJ,GAAIyvC,EACF,OAAOnqD,cAAC+b,GAAO,IAGjB,MAAMwvC,EAAiBC,GAEd,IAAIrmD,KAAKqmD,EADE,MACiBC,cAAclvD,MAAM,GAAI,IAWvDmvD,EAAwBC,GACd,UAAVA,EACK,CAAEnY,IAAK,GAAID,IAAK,IACJ,UAAVoY,EACF,CAAEnY,IAAK,GAAID,IAAK,SADlB,EAKT,OACEp0C,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAW1CF,eAAA,OAAKmI,UAAU,oCAAmCjI,SAAA,CAChDW,cAACgoD,GAAoB,CACnB7D,gBAAgB,IAChB/C,aA/BmBnM,GA+BmB,OAAP/6B,QAAO,IAAPA,OAAO,EAAPA,EAASuf,WA9BjC,SAATwb,IAA4B,UAATA,GACd,EACW,UAATA,GACF,QADF,GA6BDoM,YAAY,MAEdrhD,cAACggD,GAAY,CAACG,aAjEE5gD,IAAQ,IAAD0gD,EAAAC,EAC3BvH,EAAUp5C,GACVgqD,EAAqBhqD,GACrB,MAAM6vB,EAAuD,QAA5C6wB,EAAGl6C,KAAK4Q,MAAM9X,aAAaC,QAAQ,iBAAS,IAAAmhD,OAAA,EAAzCA,EAChBzwC,QAAQnB,GAAMrR,SAASqR,EAAE9O,MAAQvC,SAASuC,KAC3CvD,KAAKqS,GAAMA,EAAE+gB,cAEVN,EAAqD,QAA5CoxB,EAAGn6C,KAAK4Q,MAAM9X,aAAaC,QAAQ,iBAAS,IAAAohD,OAAA,EAAzCA,EACd1wC,QAAQnB,GAAMrR,SAASqR,EAAE9O,KAAOA,IACjCvD,KAAKqS,GAAMA,EAAEygB,YAChB46B,EAAet6B,EAAY,IAC3Bo6B,EAAa16B,EAAU,GAAG,OAyDgC,KAA3C,OAAZo7B,QAAY,IAAZA,GAAoC,QAAxB5B,EAAZ4B,EAAcG,8BAAsB,IAAA/B,GAAM,QAANC,EAApCD,EAAsCtkD,YAAI,IAAAukD,OAA9B,EAAZA,EAA4C15C,QAC3C7O,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCACRjvC,EACC,8EAKNnG,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACPugB,MAAO,CACL/H,KAAM,IAGRy9B,YAAa,CACXC,KAAM,CACJC,YAAa,GACbC,OAAQ,CACNpvB,SAAS,EACTqvB,OAAQ,WAGZC,OAAQ,CACN8X,MAAM,EACN7X,OAAQ,CACNC,SAAU,CACRxvB,SAAS,IAGbyvB,eAAgB,EAChBL,OAAQ,CACNpvB,SAAS,EACTqnC,OAAQ,EACRhY,OAAQ,UAEVv2B,MAAO,CACLkH,SAAS,KAIf0vB,OAAQ,CACNd,MAAOJ,GAAc,IAAM,SAAW,QACtCmB,cAAenB,GAAc,IAAM,SAAW,MAC9CoB,OAAQpB,GAAc,IAAM,aAAe,WAC3CqB,EAAG,EACH/lC,EAAG,GAELmmC,MAAO,CACLlsC,KAAM,WACN+qC,IAAKsW,EACLrW,IAAKmW,EACLhV,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACL,CAEEyY,cAAe,EACf/tC,MAAO,CACL/H,KAAM9P,EACJ,2EAGJyuC,OAAQ,CACNC,OAAQ,cAGZ,CAEEtB,IAA0D,QAAvDiV,EAAEkD,EAA8B,OAATnB,QAAS,IAATA,GAAkB,QAAT9B,EAAT8B,EAAWzV,eAAO,IAAA2T,OAAT,EAATA,EAAoBkC,oBAAY,IAAAnC,OAAA,EAArDA,EAAuDjV,IAC5DC,IAA0D,QAAvDkV,EAAEgD,EAA8B,OAATnB,QAAS,IAATA,GAAkB,QAAT5B,EAAT4B,EAAWzV,eAAO,IAAA6T,OAAT,EAATA,EAAoBgC,oBAAY,IAAAjC,OAAA,EAArDA,EAAuDlV,IAC5DuY,cAAe,EACf/tC,MAAO,CACL/H,KAAM9P,EACJ,6EAEF1F,MAAO,CACL7C,MAAiB,OAAVg4C,WAAU,IAAVA,UAAU,EAAVA,KAAYoW,aAAaC,OAAO,KAG3CzjD,KAAM,SACNosC,OAAQ,CACNC,OAAQ,YAAsB,OAAT0V,QAAS,IAATA,GAAkB,QAAT3B,EAAT2B,EAAWzV,eAAO,IAAA8T,OAAT,EAATA,EAAoB+B,cAK3CuB,UAAU,GAEZ,CAEE3Y,IAAK,EACLC,IAAK,EACLx1B,MAAO,KACP42B,OAAQ,CACNC,OAAQ,UACRpwB,SAAS,GAEXsnC,cAAe,EACfI,mBAAoB,IAIxBlX,KAAM,CACJC,gBAA+C,GAA7B5mC,OAAc,OAAP4L,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,YAEpCyc,MAAO,CACLC,SAAU,IACVjsC,KAAM,QAERurC,OAAoB,OAAZmW,QAAY,IAAZA,GAAoC,QAAxBrB,EAAZqB,EAAcG,8BAAsB,IAAAxB,OAAxB,EAAZA,EAAsC7kD,KAC9C8wC,QAAS,CACPC,YAAa,WACbC,aAAc,0BAGhBG,QAAS,CACP1wB,SAAS,MAKjBzkB,cAAA,OAAKsH,UAAU,iCAAgCjI,WAC5C+qD,IACqB,OAAlBA,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBpuD,KAAI,CAACqS,EAAG7S,KAAG,IAAA4wD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAC7B7tD,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,2CAA0CjI,SACrD,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG/S,OAEN6D,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,mFAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,mFAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4EAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4EAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4FAKRnG,cAAC6+C,KAAS,CAAAx/C,SACRF,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC3B,OAADgP,QAAC,IAADA,KAAGi8C,yBAC+B9qD,KAAlC,OAAD6O,QAAC,IAADA,GAAqB,QAApB+9C,EAAD/9C,EAAGi8C,0BAAkB,IAAA8B,OAApB,EAADA,EAAuBa,SACnB,GAAI,OAAD5+C,QAAC,IAADA,GAAqB,QAApBg+C,EAADh+C,EAAGi8C,0BAAkB,IAAA+B,OAApB,EAADA,EAAuBY,WAAY,OAAD5+C,QAAC,IAADA,GAAU,QAATi+C,EAADj+C,EAAGymC,eAAO,IAAAwX,OAAT,EAADA,EAAY3B,cACjD,SAEN3qD,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BgP,EAAEi8C,yBACgC9qD,KAAlC,OAAD6O,QAAC,IAADA,GAAqB,QAApBk+C,EAADl+C,EAAGi8C,0BAAkB,IAAAiC,OAApB,EAADA,EAAuBW,SACnB,GAAI,OAAD7+C,QAAC,IAADA,GAAqB,QAApBm+C,EAADn+C,EAAGi8C,0BAAkB,IAAAkC,OAApB,EAADA,EAAuBU,WAAY,OAAD7+C,QAAC,IAADA,GAAU,QAATo+C,EAADp+C,EAAGymC,eAAO,IAAA2X,OAAT,EAADA,EAAY9B,cACjD,SAEN3qD,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BgP,EAAEi8C,yBACoC9qD,KAAtC,OAAD6O,QAAC,IAADA,GAAqB,QAApBq+C,EAADr+C,EAAGi8C,0BAAkB,IAAAoC,OAApB,EAADA,EAAuBS,aACnB,GAAG5B,EACA,OAADl9C,QAAC,IAADA,GAAqB,QAApBs+C,EAADt+C,EAAGi8C,0BAAkB,IAAAqC,OAApB,EAADA,EAAuBQ,eAEzB,SAENntD,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BgP,EAAEi8C,yBACoC9qD,KAAtC,OAAD6O,QAAC,IAADA,GAAqB,QAApBu+C,EAADv+C,EAAGi8C,0BAAkB,IAAAsC,OAApB,EAADA,EAAuBQ,aACnB,GAAG7B,EACA,OAADl9C,QAAC,IAADA,GAAqB,QAApBw+C,EAADx+C,EAAGi8C,0BAAkB,IAAAuC,OAApB,EAADA,EAAuBO,eAEzB,SAENptD,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BgP,EAAEi8C,yBACoC9qD,KAAtC,OAAD6O,QAAC,IAADA,GAAqB,QAApBy+C,EAADz+C,EAAGi8C,0BAAkB,IAAAwC,OAApB,EAADA,EAAuBO,aACnB,GAAI,OAADh/C,QAAC,IAADA,GAAqB,QAApB0+C,EAAD1+C,EAAGi8C,0BAAkB,IAAAyC,OAApB,EAADA,EAAuBM,eAAgB,OAADh/C,QAAC,IAADA,GAAU,QAAT2+C,EAAD3+C,EAAGymC,eAAO,IAAAkY,OAAT,EAADA,EAAYrC,cACrD,mBAKG,UAhPF1V,MAoPnB,E,2FCjhBKqY,OA7FK3vD,IAAW,IAAD4vD,EAAAC,EAAAC,EAAAC,EAC5B,MAAM,EAAEvnD,GAAMC,cACRunD,EAAsB,OAALhwD,QAAK,IAALA,GAAY,QAAP4vD,EAAL5vD,EAAOA,aAAK,IAAA4vD,GAAM,QAANC,EAAZD,EAAcvpD,YAAI,IAAAwpD,OAAb,EAALA,EAAoBx1C,OAAOC,MAC/C5J,IAAC,IAAA6J,EAAAC,EAAA,OACC,OAAD9J,QAAC,IAADA,OAAC,EAADA,EAAGsB,UACuB,OAAzB,OAADtB,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,OAAV,EAADA,EAAaQ,WACiB,KAA7B,OAADrK,QAAC,IAADA,GAAW,QAAV8J,EAAD9J,EAAGoK,gBAAQ,IAAAN,OAAV,EAADA,EAAaQ,aAAkB,IAG7Bi1C,EAAuB,OAALjwD,QAAK,IAALA,GAAY,QAAP8vD,EAAL9vD,EAAOA,aAAK,IAAA8vD,GAAM,QAANC,EAAZD,EAAczpD,YAAI,IAAA0pD,OAAb,EAALA,EAAoB11C,OAAOC,MAChD5J,IAAC,IAAA+J,EAAAC,EAAA,OACC,OAADhK,QAAC,IAADA,OAAC,EAADA,EAAGsB,UACuB,OAAzB,OAADtB,QAAC,IAADA,GAAW,QAAV+J,EAAD/J,EAAGoK,gBAAQ,IAAAL,OAAV,EAADA,EAAaM,WACiB,KAA7B,OAADrK,QAAC,IAADA,GAAW,QAAVgK,EAADhK,EAAGoK,gBAAQ,IAAAJ,OAAV,EAADA,EAAaM,aAAkB,IAGnC,SAASk1C,IACP,GAAIlwD,EAAO,CAAC,IAADmwD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACT,GACuC,UAAtB,OAAfT,QAAe,IAAfA,GAA0B,QAAXE,EAAfF,EAAiBpnD,iBAAS,IAAAsnD,OAAX,EAAfA,EAA4BQ,OACQ,UAAtB,OAAdX,QAAc,IAAdA,GAAyB,QAAXI,EAAdJ,EAAgBnnD,iBAAS,IAAAunD,OAAX,EAAdA,EAA2BO,MAE3B,OACEtuD,cAACuuD,KAAqB,CACpB3uD,GAAI,CACF6c,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChBzc,OAAQ,OACRhC,MAAO,UAIR,GACgC,YAAtB,OAAf0vD,QAAe,IAAfA,GAA0B,QAAXI,EAAfJ,EAAiBpnD,iBAAS,IAAAwnD,OAAX,EAAfA,EAA4BM,OACQ,YAAtB,OAAdX,QAAc,IAAdA,GAAyB,QAAXM,EAAdN,EAAgBnnD,iBAAS,IAAAynD,OAAX,EAAdA,EAA2BK,MAE3B,MAAO,IACF,GACgC,aAAtB,OAAfV,QAAe,IAAfA,GAA0B,QAAXM,EAAfN,EAAiBpnD,iBAAS,IAAA0nD,OAAX,EAAfA,EAA4BI,OACQ,aAAtB,OAAdX,QAAc,IAAdA,GAAyB,QAAXQ,EAAdR,EAAgBnnD,iBAAS,IAAA2nD,OAAX,EAAdA,EAA2BG,MAE3B,MAAO,IACF,QACgC9uD,KAAtB,OAAfouD,QAAe,IAAfA,GAA0B,QAAXQ,EAAfR,EAAiBpnD,iBAAS,IAAA4nD,OAAX,EAAfA,EAA4BE,YACQ9uD,KAAtB,OAAdmuD,QAAc,IAAdA,GAAyB,QAAXU,EAAdV,EAAgBnnD,iBAAS,IAAA6nD,OAAX,EAAdA,EAA2BC,MAE3B,OAAO,CAEX,CACF,CAYA,OACEtuD,cAAAZ,WAAA,CAAAC,SACGsuD,GAAkBC,EACjB5tD,cAAC+d,KAAO,CAACiR,UAAU,YAAYhR,MAZL,MAA1B6vC,IACK1nD,EAAE,yCAC0B,MAA1B0nD,IACF1nD,EAAE,4CAEFA,EAAE,0CAO8C9G,SACnDW,cAAC0+B,KAAM,CACL9+B,GAAI,CACFM,OAAQ,OACRhC,MAAO,OACPL,SAAU,OACVkhB,WAAY,OACZ1V,UAAW,MACXoT,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB6xC,QAAS,UACT5wD,MAAO,QACPK,OAAQ,kBACR0gC,UAAW,0BACX,UAAW,CACT5hB,gBAAiB,UACjB6hB,OAAQ,YAEVv/B,SAEDwuD,QAGH,MACH,E,mDCzFP,MAAM7kD,GAAYC,aAAW,CAC3BwlD,OAAQ,CACNvuD,OAAQ,OACRhC,MAAO,OACPwwD,UAAW,8BACX3xC,gBAAiB4xC,KAAK,KACtB/vB,OAAQ,UACRD,UAAW,mCAEb,mBAAoB,CAClB,KAAM,CACJA,UAAW,kCACX5hB,gBAAiB,wBAEnB,MAAO,CACL4hB,UAAW,kCACX5hB,gBAAiB,wBAEnB,OAAQ,CACN4hB,UAAW,kCACX5hB,gBAAiB,yBAGrB6xC,kBAAmB,CACjB7xC,gBAAiB,UACjBoF,SAAU,YAEZ80B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,cAIC,SAAS0sC,KACtB,MAAOrwD,EAAMmE,GAAWtE,YAAe,GACjCoL,EAAUT,KAShB,OACE7J,eAACd,WAAc,CAAAgB,SAAA,CACbW,cAAC8uD,KAAK,CAACjJ,UAAU,MAAMhxB,QAAS,EAAEx1B,SAChCW,cAAC0+B,KAAM,CACLj/B,QARWoc,KACjBlZ,GAAQ,EAAK,EAQPosD,MAAM,QACNznD,UAAWmC,EAAQglD,OACnB7uD,GAAI,CAAE1B,MAAO,OAAQgC,OAAQ,OAAQmJ,UAAW,OAAQhK,SAExDW,cAACgvD,KAA4B,CAACpvD,GAAI,CAAE/B,SAAU,cAIpD,SAEJ,CClEO,MAAMoxD,GAA+B/0D,GAAG;;;;;;EAQlCg1D,GAA6Bh1D,GAAG;;;;EAMhCi1D,GAAqBj1D,GAAG;;;;EAYxBk1D,IANgCl1D,GAAG;;;;EAMrBA,GAAG;;;;GAMjBm1D,GAA0Bn1D,GAAG;;;;EAK7Bo1D,GAAuBp1D,GAAG;;;;EAK1Bq1D,GAAwBr1D,GAAG;;;;EAM3Bs1D,GAAkCt1D,GAAG;;;;EAMrCu1D,GAA4Bv1D,GAAG;;;;EAM/Bw1D,GAAsBx1D,GAAG;;;;;;;;;;;;;;;;;EAmBzBy1D,GAA8Bz1D,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;EA2BjC01D,GAAkB11D,GAAG;;;;EAMrB21D,GAA8B31D,GAAG;;;;EAMjC41D,GAA0B51D,GAAG;;;;EAM7B61D,GAA4B71D,GAAG;;;;EAM/B81D,GAA+B91D,GAAG;;;;EAMlC+1D,GAA4B/1D,GAAG;;;;EAM/Bg2D,GAAwBh2D,GAAG;;;;EAM3Bi2D,GAAqBj2D,GAAG;;;;EAMxBk2D,GAA2Bl2D,GAAG;;;;EAM9Bm2D,GAA2Bn2D,GAAG;;;;EClK9Bo2D,GAAmBv9C,IAC9B,MAAMw9C,EAAc,IAAIprD,KAAK4N,GACvB2oC,EAAM6U,EAAYxhD,UAClB8G,EAAQ06C,EAAYvhD,WAE1B,MAAO,GADMuhD,EAAYthD,iBACP4G,EAAQ,KAAK6lC,GAAK,ECMhC1yC,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZjZ,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,QAG1CG,YAAa,CACX/V,SAAU,KAEZgW,YAAa,CACX9tC,UAAWgT,EAAMwY,QAAQ,IAE3B7W,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,2BAGZi5C,YAAa,CACXr3C,OAAQwc,EAAMwY,QAAQ,GACtBsM,SAAU,KAEZgW,YAAa,CACX9tC,UAAWgT,EAAMwY,QAAQ,KAG7BwiB,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAC9CxY,EAAMwY,QAAQ,GAAK,OAGvBojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAGZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAITitC,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MACEC,GAAmBL,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MACEE,GAAmBN,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVD,MAAO,MACPmhB,WAAY,WARSw3B,CAUrBI,MACEG,GAAiBP,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MA8XWwZ,OA5XQ50C,IAA2C,IAAD60C,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAAzC,WAAEvY,EAAU,QAAE9+B,EAAO,YAAEkV,GAAaxT,EAC1D,MAAM,EAAEzV,GAAMC,cACRqD,EAAUT,KAEVwoD,EAAkCA,IAClB,cAAhBpiC,EACe,OAAV4pB,QAAU,IAAVA,OAAU,EAAVA,EAAYyY,oBACM,eAAhBriC,EACQ,OAAV4pB,QAAU,IAAVA,OAAU,EAAVA,EAAYuB,mBADd,EAKHmX,EAC6B,QADVjB,EACvBe,WAAiC,IAAAf,GAAiC,QAAjCC,EAAjCD,EAAmCkB,uCAA+B,IAAAjB,OAAjC,EAAjCA,EACIkB,oBAEAC,EAC6B,QADJlB,EAC7Ba,WAAiC,IAAAb,GAAiC,QAAjCC,EAAjCD,EAAmCgB,uCAA+B,IAAAf,OAAjC,EAAjCA,EACIiB,0BAEAC,EAC6B,QADFjB,EAC/BW,WAAiC,IAAAX,GAAiC,QAAjCC,EAAjCD,EAAmCc,uCAA+B,IAAAb,OAAjC,EAAjCA,EACIgB,4BAEAC,EAC6B,QADEhB,EACnCS,WAAiC,IAAAT,GAAiC,QAAjCC,EAAjCD,EAAmCY,uCAA+B,IAAAX,OAAjC,EAAjCA,EACIe,gCAEAC,EAC6B,QADIf,EACrCO,WAAiC,IAAAP,GAAiC,QAAjCC,EAAjCD,EAAmCU,uCAA+B,IAAAT,OAAjC,EAAjCA,EACIc,kCAEAC,EAC6B,QADVd,EACvBK,WAAiC,IAAAL,GAAa,QAAbC,EAAjCD,EAAmC1W,mBAAW,IAAA2W,GAG7C,QAH6CC,EAA9CD,EAAgDn5C,MAC7CqK,GACkB,KAAjBA,EAAK5J,UAAoC,IAAjB4J,EAAK5J,UAAmC,IAAjB4J,EAAK5J,kBACvD,IAAA24C,OAHgC,EAAjCA,EAGGa,qBAECC,EAC6B,QADRb,EACzBE,WAAiC,IAAAF,GAAa,QAAbC,EAAjCD,EAAmC7W,mBAAW,IAAA8W,OAAb,EAAjCA,EAAgD/hD,QAC7CsvC,GACkB,MAAjBA,EAAIpmC,UAAqC,KAAjBomC,EAAIpmC,UAAoC,KAAjBomC,EAAIpmC,WAGzD,OACE1Y,cAAA,OAAAX,SACEW,cAAA,OAAKsH,UAAU,iBAAgBjI,SAC7BF,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCF,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BW,cAAA,QAAMsH,UAAU,gBAAejI,SAC7BW,cAAA,KAAGsH,UAAU,uBACP,IACPnB,EACC,uIAGH8rD,EACC9yD,eAAA,QAAMmI,UAAU,uBAAsBjI,SAAA,CACnC8G,EACC,kIAED8rD,KAED,KACHT,IACCxxD,cAAAZ,WAAA,CAAAC,SACEW,cAACy+C,KAAc,CAAC9yC,UAAW+yC,KAAOp3C,UAAU,mBAAkBjI,SAC5DF,eAACw/C,KAAK,CAACr3C,UAAWmC,EAAQyuC,MAAO,aAAW,mBAAkB74C,SAAA,CAC5DW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,+HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,qIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4IAKJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,yIAIJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,+IAIJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gJAWJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2IAIJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,iJAIJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,uJA6BRhH,eAAC0/C,KAAS,CAAAx/C,SAAA,CACc,OAArB8yD,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBn2D,KAAK8iD,GAC3B3/C,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CACdjD,MAAM,SACN1nC,UAAU,KACVozC,MAAM,MAAK1/C,SAEP,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKxjD,OAER0E,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SACzB,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKjvC,QAKR7P,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SACzB,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKE,gBAER7/C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CACzB,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKnC,kBAAkB,UAa1B38C,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SACzB,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKG,iBAGRj/C,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SACzB,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKsT,sBAGRjzD,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CACzB,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKlC,sBAAsB,UAO9B58C,cAAC62C,GAAgB,CAACxD,MAAM,SAAQh0C,SAC1B,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKI,mBAGRl/C,cAAC62C,GAAgB,CAACxD,MAAM,SAAQh0C,SAC1B,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKuT,wBAMRlzD,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC1B,OAAHy/C,QAAG,IAAHA,OAAG,EAAHA,EAAKjC,wBAAwB,YA3DV,OAAHiC,QAAG,IAAHA,OAAG,EAAHA,EAAKxjD,QAyF5B6D,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CAACvD,MAAM,GAAEh0C,SACvB8G,EACC,4IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,WACvBl0C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7BqyD,EAAoB,UAEvB1xD,cAACs2C,GAAe,CAACjD,MAAM,WACvBl0C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5B0yD,EAAgC,OAEnC5yD,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7BwyD,EAA0B,UAE7B7xD,cAACs2C,GAAe,CAACjD,MAAM,WACvBl0C,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B2yD,EAAkC,OAYrC7yD,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7ByyD,EAA4B,uBAYzC9xD,cAAAZ,WAAA,CAAAC,SACEW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAAAj3C,SACb8G,EACC,+HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,qIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4IAKJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,yIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gJAQJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,+JAiCZ,E,2BCFKmsD,OA9eGja,sBAAW,CAAC16C,EAAOwK,KACnC,MAAM,QAAE+R,EAAO,OAAE4+B,EAAM,YAAE1pB,GAAgBzxB,GAEnC,QACJy5C,EAAO,WACPwB,EAAU,cACVC,EAAa,aACbkQ,EAAY,gBACZC,EAAe,wBACfC,EAAuB,iBACvBC,EAAgB,mBAChBC,EAAkB,sBAClBC,EAAqB,qBACrBG,EAAoB,kBACpBnJ,EAAiB,wBACjBkJ,EAAuB,2BACvBD,EAA0B,qBAC1BnF,EAAoB,kBACpBD,GACEniD,qBAAWC,MAER0nD,EAAaC,GAAkBxnD,mBAASktB,IACxCmpB,GAAgB/1C,YAAY8yC,IAC7B4E,EAAW7hB,oBACV8hB,EAASC,GAAcl4C,sBACvBk3C,EAAcC,GAAmBn3C,sBAWjCynD,EAAcC,GAAmB1nD,mBAAS,IAAIiD,OAC9C0kD,EAAcC,GAAmB5nD,mBAVrB+yC,KAEjB,GAAiB,MADA,IAAI9vC,MAAOq8C,YACI,UAATvM,EAAkB,CACvC,MAAM8U,GAAc,IAAI5kD,MAAOE,UAAY,MAC3C,OAAO,IAAIF,KAAK4kD,EAClB,CACA,OAAO,IAAI5kD,IAAM,EAKjB6kD,CAAiB,OAAP9vC,QAAO,IAAPA,OAAO,EAAPA,EAASuf,cAEd84B,EAAaC,GAAkBtwD,mBAAS42C,IACxChqB,EAAW06B,GAAgBtnD,mBAAc,OAALvE,QAAK,IAALA,OAAK,EAALA,EAAOmrD,YAE3CvO,GAAiBv2C,KAAMyuD,EAAkBl4C,QAASm4C,IACvDphB,aAAae,KAERof,GAAuBztD,KAAM2uD,EAAkBp4C,QAASq4C,IAC7DthB,aAAagB,IAEfxvC,qBAAU,KACJs0C,GA4TN,WACE,IACEmB,EAAa,CACX/xC,UAAW,CACT60B,MAAO,CAAC+b,GACRpzC,KAAM6uD,IACNp4B,gBAAiB57B,aAAaC,QAAQ,UACtC0vC,SAAU,EACV13B,UAAW5a,OAAO2tD,GAClBnP,WAAY,GACZ/V,YAAa9lC,aAAaC,QAAQ,eAClCklC,SAAUnlC,aAAaC,QAAQ,QAC/B67C,aAAc97C,aAAaC,QAAQ,cACnC87C,UAAW/7C,aAAaC,QAAQ,gBAGjC4H,MAAMC,IACLyzC,EAAWzzC,EAAM3C,KAAK62C,mBAAmB,IAE1C5zC,OAAOC,IACNzC,QAAQD,MAAM0C,EAAI,GAExB,CAAE,MAAOA,GACPzC,QAAQD,MAAM0C,EAChB,CACF,CApVI4zC,EACF,GACC,CAAC1D,IAEJt0C,qBAAU,KACJq3C,GACFY,GACF,GACC,CAACZ,IAEJr3C,qBAAU,KACY,cAAhB2mD,EACFgI,IACyB,eAAhBhI,GACTlP,GACF,GACC,CAACkX,EAAqBlX,EAAezrB,IAExChsB,qBAAU,KACJmhD,GACF2G,GACF,GACC,CAAC3G,IAEJnhD,qBAAU,KACR8nD,GAA2B,GAC1B,CAACxK,EAAmBtxB,EAAWyjC,IAElC,MAAM3H,EAA4BA,KAChC,GAAW,OAAP1wC,QAAO,IAAPA,KAASuf,WAAY,CAAC,IAADoxB,EAAA54C,EAAA64C,EACvB,IAAIC,EAAY,KAEZC,GACe,OAAjB/G,QAAiB,IAAjBA,GAA6B,QAAZ4G,EAAjB5G,EAAmB3nD,kBAAU,IAAAuuD,OAAZ,EAAjBA,EAA+B37C,UAAU,EAAG,KAC5C,GAAU,OAAPgL,QAAO,IAAPA,OAAO,EAAPA,EAASuf,qBACL,OAAPvf,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,WAEPkzB,GAAqC,QAAvBh5C,EAAA,IAAI9M,KAAK6lD,UAAc,IAAA/4C,OAAA,EAAvBA,EAAyB5M,WAAS,OAEhDiQ,GAC0B,QAA5Bw1C,EAAA7G,EAAkB3nD,kBAAU,IAAAwuD,OAAA,EAA5BA,EAA8B57C,UAAU,EAAG,KAC3C,GAAU,OAAPgL,QAAO,IAAPA,OAAO,EAAPA,EAASuf,oBAEd,MAAMyxB,EACJ,IAAI/lD,KAAKmQ,GAAOjQ,UAChBrI,SAAgB,OAAPkd,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,UAAW,IAAMgzB,EAE/BI,EAAgB,IAAIhmD,KAAK8lD,GAAa5lD,UAE5CukD,EAAgBuB,GAChBrB,EAAgBoB,GAEhB4H,EAAwB5H,EAAeC,EACzC,CACA,EAGFvP,8BAAoBzzC,GAAK,MACvB,mBAAM0zC,GACJhD,GAAc,SACRiD,GACR,MAGF,MAAMgX,EAA0BA,CAACjJ,EAAcF,KAC7C,MAAMoJ,EAAgB,CACpBvsD,UAAW,CACTiU,UAAkB,OAAPP,QAAO,IAAPA,OAAO,EAAPA,EAAS3a,GACpBupD,UAAW5sD,OAAO4yB,GAClB2sB,WAAY6U,GAAgBzG,GAC5BpwB,WAAYnrB,OAAO,GAAG,IAAInJ,KAAK0kD,GAAcxkD,aAC7Cq0B,SAAUprB,OAAO,GAAG,IAAInJ,KAAKwkD,GAActkD,cAE7CqV,YAAa,YAGTs4C,EAAgB,CACpBxsD,UAAW,CACTg1C,WAAmB,OAAPthC,QAAO,IAAPA,OAAO,EAAPA,EAAS3a,GACrBu5C,OAAQ97C,SAASu1D,GACjB9W,WAAY6U,GAAgBzG,GAC5BpwB,WAAYnrB,OAAO,GAAG,IAAInJ,KAAK0kD,GAAcxkD,aAC7Cq0B,SAAUprB,OAAO,GAAG,IAAInJ,KAAKwkD,GAActkD,cAE7CqV,YAAa,YAGK,cAAhB+uC,EACFgI,EAAoBsB,GACK,eAAhBtJ,GACTlP,EAAcyY,EAChB,EAuMF,GAAIN,EACF,OAAO1yD,cAAC+b,GAAO,IACV,GAAI62C,EACT,OAAO5yD,cAAC+b,GAAO,IAGjB,MAAM+/B,EAAexhD,UACnB,MAAMs0B,EAAUsrB,EAASrf,QAEnB72B,SADei5C,KAAYruB,IACbiN,UAAU,aAC9B+c,EAAW50C,EAAKzH,MAAM,IAAI,EAGtBw+C,EAAYA,KAChB,MAAMmC,EAAa,+BAA+B/C,IAC5CgD,EAAe7hB,SAASC,cAAc,KAE5C4hB,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAFI,8BAGjBD,EAAariB,QACb+d,GAAc,GACdD,EAAW,IACXwB,EAAW,GAAG,EA8BhB,MAQMyY,EAAoCA,KACxC,GAAoB,cAAhBpJ,EAA6B,CAAC,IAADwJ,EAAAC,EAAAC,EAQ/B,MAAO,CACL1Y,YAPgB,OAAhBkY,QAAgB,IAAhBA,GAAqC,QAArBM,EAAhBN,EAAkBlB,2BAAmB,IAAAwB,GAAa,QAAbC,EAArCD,EAAuCxY,mBAAW,IAAAyY,OAAlC,EAAhBA,EAAoD1jD,QACjDxL,GACmB,MAAlBA,EAAK0U,UACa,KAAlB1U,EAAK0U,UACa,KAAlB1U,EAAK0U,WAITi5C,gCACkB,OAAhBgB,QAAgB,IAAhBA,GAAqC,QAArBQ,EAAhBR,EAAkBlB,2BAAmB,IAAA0B,OAArB,EAAhBA,EACIxB,gCAEV,CAAO,GAAoB,eAAhBlI,EAA8B,CAAC,IAAD2J,EAAAC,EAAAC,EAQvC,MAAO,CACL7Y,YAPgB,OAAhBgY,QAAgB,IAAhBA,GAA+B,QAAfW,EAAhBX,EAAkBlY,qBAAa,IAAA6Y,GAAa,QAAbC,EAA/BD,EAAiC3Y,mBAAW,IAAA4Y,OAA5B,EAAhBA,EAA8C7jD,QAC3CxL,GACmB,MAAlBA,EAAK0U,UACa,KAAlB1U,EAAK0U,UACa,KAAlB1U,EAAK0U,WAITi5C,gCACkB,OAAhBc,QAAgB,IAAhBA,GAA+B,QAAfa,EAAhBb,EAAkBlY,qBAAa,IAAA+Y,OAAf,EAAhBA,EAAiC3B,gCAEvC,GAmBF,OACExyD,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAgB1CF,eAAA,OAAKmI,UAAU,oCAAmCjI,SAAA,CAChDW,cAACgoD,GAAoB,CACnB7D,gBAAgB,IAChB/C,aA5BmBnM,EA4BmB,OAAP/6B,QAAO,IAAPA,OAAO,EAAPA,EAASuf,WA3BjC,SAATwb,GAA4B,UAATA,EACd,EACW,UAATA,EACF,QADF,GA0BDoM,YAAY,MAEdrhD,cAACggD,GAAY,CAACG,aAjKE5gD,IAAQ,IAAD0gD,EAAAsT,EAAArT,EAAAsT,EAC3BhB,EAAejzD,GACfgqD,EAAqBhqD,GACrB,MAAM6vB,EAAuD,QAA5C6wB,EAAGl6C,KAAK4Q,MAAM9X,aAAaC,QAAQ,iBAAS,IAAAmhD,GACV,QADUsT,EAAzCtT,EAChBzwC,QAAQnB,GAAMrR,SAAU,OAADqR,QAAC,IAADA,OAAC,EAADA,EAAG9O,MAAQvC,SAASuC,YAAI,IAAAg0D,OADU,EAAzCA,EAEhBv3D,KAAKqS,GAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG+gB,cAEZN,EAAqD,QAA5CoxB,EAAGn6C,KAAK4Q,MAAM9X,aAAaC,QAAQ,iBAAS,IAAAohD,GACnB,QADmBsT,EAAzCtT,EACd1wC,QAAQnB,GAAMrR,SAAU,OAADqR,QAAC,IAADA,OAAC,EAADA,EAAG9O,KAAOA,WAAG,IAAAi0D,OADmB,EAAzCA,EAEdx3D,KAAKqS,GAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGygB,YAClB06B,EAAa16B,EAAU,IACvB46B,EAAet6B,EAAY,GAAG,OA0J5BpvB,cAAA,OAAKmI,IAAK+xC,EAAS76C,SACjBW,cAAC8yC,GAAc,CACb9uC,KAnFc,cAAhBylD,EACqB,OAAhBkJ,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBlB,oBACA,eAAhBhI,EACc,OAAhBgJ,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBlY,mBADpB,EAkFDxH,QAAS8W,EACT7W,QAAS2W,EACT7jD,UAAiC,IAAd,OAAPoU,QAAO,IAAPA,OAAO,EAAPA,EAAS6d,eAKzB/3B,cAACwwD,GAAc,CACbxX,WArDgB,cAAhByQ,EACKkJ,EACkB,eAAhBlJ,EACFgJ,OADF,EAoDHv4C,QAASA,EACTkV,YAAaq6B,OAhDQxU,KAkDnB,ICxdV,MAAMwe,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAGMg2D,GAAe1wC,aAAY,CAC/BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAJa,wBASbna,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZysC,kBAAmB,CACjB7xC,gBAAiB,UACjBoF,SAAU,YAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,4BAIdo5C,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAC9CxY,EAAMwY,QAAQ,GAAK,OAGvBojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAEZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAihBAgS,OA7gBD1d,IAAW,IAADi2D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACtB,MAAM,EAAE3uD,GAAMC,eACPmyC,GAAgB/1C,YAAY8yC,KAC5BrC,EAAYC,GAAiBhxC,mBAASpH,OAAOm4C,aAC9C,KACJU,EAAI,UACJ8E,EAAS,QACTD,EAAO,UACPuc,EAAS,kBACTC,EAAiB,gBACjBhM,EAAe,WACfiM,EAAU,sBACV7L,EAAqB,mBACrB8L,EAAkB,sBAClB5U,EAAqB,oBACrB6U,EAAmB,oBACnBC,EAAmB,uBACnB/U,EAAsB,qBACtBiH,EAAoB,qBACpBiC,GACEznD,qBAAWC,KACTM,EAAUC,eACT9D,EAAMmE,GAAWtE,IAAM6D,UAAS,IAChCmzD,EAAUC,GAAepzD,oBAAS,IAClCqzD,EAAkBC,GAAuBn3D,IAAM6D,UAAS,IACxDuzD,GAAcC,IAAmBr3D,IAAM6D,UAAS,GACjDuH,GAAUT,KACV2sD,GAAWt9B,oBACVu9B,GAAQC,IAAa3zD,mBAAS,OAC9B4zD,GAAsBC,IAA2B7zD,mBAAS,OAC1D8zD,GAAcC,IAAmB/zD,mBAAS,KAC1Cg0D,GAAgBC,IAAqBj0D,mBAAS,CAAC,IAC/Ck0D,GAAcC,IAAmBn0D,mBAAS,IAC3Co0D,GAAmB,OAAL34D,QAAK,IAALA,GAAW,QAANi2D,EAALj2D,EAAOqG,YAAI,IAAA4vD,GAAQ,QAARC,EAAXD,EAAa57C,cAAM,IAAA67C,OAAd,EAALA,EAAqB57C,MACtC5J,IAAC,IAAA6J,EAAAC,EAAA,OACC,OAAD9J,QAAC,IAADA,OAAC,EAADA,EAAGsB,UACuB,OAAzB,OAADtB,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,OAAV,EAADA,EAAaQ,WACiB,KAA7B,OAADrK,QAAC,IAADA,GAAW,QAAV8J,EAAD9J,EAAGoK,gBAAQ,IAAAN,OAAV,EAADA,EAAaQ,aAAkB,KAuB7B,4BACJ49C,GAA2B,yBAC3BC,GAAwB,yBACxBC,IACEvwD,4wBA+DJ,SAASwwD,KAAY,IAADC,EAClB93D,aAAaK,QAAQ,WAAYvB,EAAMqG,KAAKw6C,OAC5C3/C,aAAaK,QAAQ,KAAMvB,EAAMuc,QAAQ3a,IACzCV,aAAaK,QAAQ,cAAyB,QAAZy3D,EAAEh5D,EAAMqG,YAAI,IAAA2yD,OAAA,EAAVA,EAAYtnC,WAAWD,aAE3DopB,EAAQ76C,EAAMqG,KAAKw6C,OACnB/F,EAAU96C,EAAMqG,KAAKzE,IACrBw1D,EAAUp3D,EAAMqG,KAAKqrB,WAAWunC,QAChC,IAAI9nD,EAAMjQ,aAAaC,QAAQ,eACJ,IAAD+3D,EAAAC,EAA1B,GAAY,eAARhoD,EACFzM,EAAQ2E,KACN,gBAAgBrJ,EAAMqG,KAAKzE,MAAW,OAAL5B,QAAK,IAALA,GAAW,QAANk5D,EAALl5D,EAAOqG,YAAI,IAAA6yD,GAAY,QAAZC,EAAXD,EAAaxnC,kBAAU,IAAAynC,OAAlB,EAALA,EAAyB1nC,oBAEvD,GAAY,cAARtgB,EAAqB,CAAC,IAADioD,EAAAC,EAC9B30D,EAAQ2E,KACN,mBAAmBrJ,EAAMqG,KAAKzE,MAAW,OAAL5B,QAAK,IAALA,GAAW,QAANo5D,EAALp5D,EAAOqG,YAAI,IAAA+yD,GAAY,QAAZC,EAAXD,EAAa1nC,kBAAU,IAAA2nC,OAAlB,EAALA,EAAyB5nC,cAEjE,CACKzxB,EAAMqG,KAAKqrB,WAAW4nC,QACzBC,KAAKC,KAAK,CACRC,KAAM,QACNp5C,MAAO,UACP/H,KAAM,6BAGZ,CAtFAnT,qBAAU,KACR,GAAInF,EAAO,CACT,MAAMqF,EnF+iB6BgB,KACvC,IACGA,IACAA,EAAKA,OACLA,EAAKA,KAAKgU,SACVhU,EAAKA,KAAKqrB,aACVrrB,EAAKA,KAAKqrB,WAAWunC,OAEtB,OAAO,KAET,IAAIS,GAAgB,EACpB,IAAK,IAAI5wD,KAAUzC,EAAKA,KAAKgU,OAC3B,GACEvR,EAAOgS,UAC0B,IAAjChS,EAAOgS,SAASE,cACa,MAA7BlS,EAAOgS,SAASC,SAChB,CACA2+C,GAAgB,EAChB,KACF,CAEF,IAAKA,EACH,OAAO,KAET,IAAIf,EAActyD,EAAKA,KAAKgU,OAAOxI,QAChC/I,IACoB,IAAnBA,EAAOkJ,SACS,oBAAhBlJ,EAAOnL,MACS,wBAAhBmL,EAAOnL,OAGX,MAAO,CACLs7D,OAAQ5yD,EAAKA,KAAKqrB,WAAWunC,OAC7BN,YAAaA,EACd,EmFjlBkBgB,CAAyB35D,GACpCqF,IACoB,OAAlBA,EAAO4zD,QACTb,GAAwB/yD,EAAO4zD,QAGN,OAAvB5zD,EAAOszD,aACTL,GAAgBjzD,EAAOszD,aAM7B,IACC,CAAC34D,IAEJmF,qBAAU,KACR,GAA6B,OAAzBgzD,GAA+B,CAC7BF,KACFA,GAAO2B,QAAU3B,GAAO4B,OAAS5B,GAAO6B,QAAU,KAClD7B,GAAO8B,SAET,MAAMC,EAAY,IAAIC,gBAAa,GAAGrB,MA+BtC,OA9BAoB,EAAUH,OAAS,KACb1B,IACF6B,EAAUE,KAAK9xD,KAAKC,UAAU,CAAE8xD,QAAShC,KAAwB,EAErE6B,EAAUJ,QAAU,WAClB9yD,QAAQ+f,IAAI,oDACd,EACAmzC,EAAUI,UAAY,SAAUh4C,GAC9B,GAAsB,kBAAXA,EAAE/b,KAAmB,CAC9B,MAAMF,EAAWiC,KAAK4Q,MAAMoJ,EAAE/b,MAE9BiyD,IAAiB1qB,GACfA,EAAUvvC,KAAKsmB,GACbA,EAAK/iB,KAAOuE,EAASk0D,UACjB,IACK11C,EACH9b,UAAW,IAAK8b,EAAK9b,UAAW8Q,OAAQxT,EAAS2J,SAEnD6U,KAGV,CAGF,EACAq1C,EAAUF,QAAU,KAClB5B,GAAU,KAAK,EAEjBA,GAAU8B,GAEH,KACDA,GAAWA,EAAUD,OAAO,CAEpC,IACC,CAAC5B,KA6BJ,MAgEMmC,GAAiBA,KACrBjP,EAAgB,IAAI7jD,MACpBgwD,EAAoB,IAAIhwD,MACxBmwD,GAAY,EAAM,EAOd/0D,GAAcA,KAClB6oD,EAAsB,IAAIjkD,MAC1BxC,GAAQ,EAAM,EAGVu1D,GAAyBA,KAC7B1C,GAAoB,EAAM,EAGtB2C,GAAsBA,KAC1BzC,IAAgB,EAAM,EAalB0C,GnFxLgCp0D,KAAU,IAADq0D,EAC/C,OAAW,OAAJr0D,QAAI,IAAJA,GAAY,QAARq0D,EAAJr0D,EAAMgU,cAAM,IAAAqgD,OAAR,EAAJA,EAAc7oD,QAClBnB,GAAiC,KAA3BA,EAAE7H,UAAUkJ,aAAsBrB,EAAEsB,UAC3Cd,MAAM,EmFqLWypD,CAAwB36D,EAAMqG,MAEjD,OACE7E,eAAA,OAAKmI,UAAW,kBAAkBjI,SAAA,CAChCF,eAAA,OACE6e,MAAO7X,EAAE,sDACTmB,UAAW,GAAGiQ,GAAgB5Z,4BAC5By6D,GAAa,EACT,6BACA,gCACH/4D,SAAA,CAEHW,cAAA,QACEsH,UAAW,GAAGoG,GAA0B4oD,mBACxC72D,QAASi3D,GAASr3D,SAEZ,OAAL1B,QAAK,IAALA,GAAW,QAANm2D,EAALn2D,EAAOqG,YAAI,IAAA8vD,OAAN,EAALA,EAAatV,QAGf4Z,GAAa,GACZp4D,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCW,cAAA,QACEP,QAjDa84D,KACvB/C,GAAoB,EAAK,EAiDfluD,UAAU,mBACV0W,MACEo6C,GAAa,EACTjyD,EACE,2EACE,GAAGiyD,KACP,GACL/4D,SAEDW,cAACqkB,KAAa,CAAChI,MAAOs3C,GAAat0D,SACjCW,cAACw4D,KAAS,CACR54D,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZk8C,UAAW,SACXv4D,OAAQ,OACRhC,MAAO,QAETN,MAAM,oBAQhBoC,cAACstD,GAAU,CAAC3vD,MAAOA,OAErBqC,cAAA,OACEsH,UAAW,4BACH,OAAL3J,QAAK,IAALA,GAAW,QAANo2D,EAALp2D,EAAOqG,YAAI,IAAA+vD,GAAY,QAAZC,EAAXD,EAAa1kC,kBAAU,IAAA2kC,IAAvBA,EAAyBiD,SAAS,4BAErCx3D,QAASi3D,GAASr3D,SAElBF,eAAA,OACEmI,UAAW,gCACT6P,GAA0B6+C,MACK,IAA/BE,GAAewC,YACX,uBACA,2BACHr5D,SAAA,CAEHW,cAAA,QACEge,MAAO7X,EACL,8DAEFmB,UAAU,gCACV7H,QAAUsgB,IACRA,EAAE44C,kBAzKUC,MAAO,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC5Bv2D,GAAQ,GACR9D,aAAaK,QAAQ,WAAiB,OAALvB,QAAK,IAALA,GAAW,QAANk7D,EAALl7D,EAAOqG,YAAI,IAAA60D,OAAN,EAALA,EAAara,OAC9ChG,EAAa,OAAL76C,QAAK,IAALA,GAAW,QAANm7D,EAALn7D,EAAOqG,YAAI,IAAA80D,OAAN,EAALA,EAAata,OACrB/F,EAAe,OAAL96C,QAAK,IAALA,GAAW,QAANo7D,EAALp7D,EAAOqG,YAAI,IAAA+0D,OAAN,EAALA,EAAax5D,IACvBV,aAAaK,QAAQ,mBAAyB,OAALvB,QAAK,IAALA,GAAW,QAANq7D,EAALr7D,EAAOqG,YAAI,IAAAg1D,OAAN,EAALA,EAAa19D,MACtD+kD,EAA4B,OAAL1iD,QAAK,IAALA,GAAW,QAANs7D,EAALt7D,EAAOqG,YAAI,IAAAi1D,OAAN,EAALA,EAAa39D,MACpCglD,EAAsBzhD,aAAaC,QAAQ,qBAC3CyqD,EAA0B,OAAL5rD,QAAK,IAALA,GAAW,QAANu7D,EAALv7D,EAAOqG,YAAI,IAAAk1D,OAAN,EAALA,EAAa35D,IAElC,MAAM45D,EAAqB,MAErBC,GAAc,IAAIj0D,MAAOq8C,WAEzB6X,EAAa/qD,OACjBzP,aAAaC,QAAQ,aAAaoQ,UAAU,EAAG,IAEjDk6C,EACEgQ,EAAcC,EACV,IAAIl0D,MAAK,IAAIA,MAAOE,UAAY8zD,GAChC,IAAIh0D,MAI8B,SAAtCtG,aAAaC,QAAQ,cACiB,UAAtCD,aAAaC,QAAQ,aAErBwoD,EAAqB,IAAIniD,MACsB,UAAtCtG,aAAaC,QAAQ,eAC1Bs6D,EAAc,GAChB9R,EACE,IAAIniD,KAAK,IAAIA,MAAK,IAAIA,MAAOE,UAAY8zD,KAElCC,GAAe,IACxB9R,EAAqB,IAAIniD,MAE7B,EAsIUyzD,EAAiB,EACjBv5D,SAEFW,cAAA,KAAGsH,UAAU,qBAGftH,cAAA,QACEsH,UAAW,6BAOX7H,QAAUsgB,IACRA,EAAE44C,kBAlJcW,MAAO,IAADC,EAAAC,EAAAC,EAChCnE,GAAY,GACZz2D,aAAaK,QAAQ,mBAAyB,OAALvB,QAAK,IAALA,GAAW,QAAN47D,EAAL57D,EAAOqG,YAAI,IAAAu1D,OAAN,EAALA,EAAaj+D,MACtD+kD,EAA4B,OAAL1iD,QAAK,IAALA,GAAW,QAAN67D,EAAL77D,EAAOqG,YAAI,IAAAw1D,OAAN,EAALA,EAAal+D,MACpCglD,EAAsBzhD,aAAaC,QAAQ,qBAC3CyqD,EAA0B,OAAL5rD,QAAK,IAALA,GAAW,QAAN87D,EAAL97D,EAAOqG,YAAI,IAAAy1D,OAAN,EAALA,EAAal6D,IAClCy1D,GAAkB,GAClB,MACMoE,GAAc,IAAIj0D,MAAOq8C,WAES,SAAtC3iD,aAAaC,QAAQ,cACiB,UAAtCD,aAAaC,QAAQ,aAErBwoD,EAAqB,IAAIniD,MACsB,UAAtCtG,aAAaC,QAAQ,eAC1Bs6D,EAAc,GAChB9R,EACE,IAAIniD,KAAK,IAAIA,MAAK,IAAIA,MAAOE,UAVR,SAYd+zD,GAAe,IACxB9R,EAAqB,IAAIniD,MAE7B,EA6HUm0D,EAAqB,EAOvBj6D,SAEAW,cAAA,KAAGsH,UAAU,sBAGftH,cAAA,QAAMsH,UAAU,+BAA8BjI,SAC3C8X,GAA0B6+C,IACzBh2D,cAAA,QAAMP,QAASA,KAhHzBi2D,IAAgB,EAgHoC,EAAAr2D,SACxCW,cAAC05D,GAAkB,MAEnB,YAIVv6D,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAMA,EACN8B,QAASC,GACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,GACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CACT3W,UAAWmC,GAAQuU,MACnB3c,QAAS4xC,GAAc,IAAM,KAAO,KACpCI,MAAOJ,GAAc,IAAM,SAAW,OAAO5zC,SAE5C,GAAQ,OAAL1B,QAAK,IAALA,GAAc,QAATs2D,EAALt2D,EAAOuc,eAAO,IAAA+5C,OAAT,EAALA,EAAgB34D,UAAU6K,EAC5B,kFACG+uD,MAGP/1D,eAACy6D,KAAM,CAACC,QAAM,EAAAx6D,SAAA,CACZW,cAAC85D,KACC,CACAr6D,QAASA,IAAMk2D,GAAS96B,QAAQghB,gBAChClrB,QAAS3wB,cAAC+5D,KAAY,IACtBC,gBAAgB,MAChBp8D,MAAM,UAASyB,SAEd8G,EACC,6EAGJnG,cAACi6D,KAAQ,CACPr6D,GAAI,CACFhC,MAAO,OACPmlC,OAAS1mB,IAAK,IAAA69C,EAAA,OAAU,OAAL79C,QAAK,IAALA,GAAa,QAAR69C,EAAL79C,EAAO0mB,cAAM,IAAAm3B,OAAR,EAALA,EAAeC,QAAS,CAAC,GAE9C37D,OAAMy2D,EACNx1D,QAASw1D,EAAW51D,SAEpBW,cAACwoB,KAAgB,CAAC5qB,MAAM,sBAMhCoC,cAACsyD,GAAS,CACRp4C,QAAc,OAALvc,QAAK,IAALA,OAAK,EAALA,EAAOuc,QAChB4+B,OAAa,OAALn7C,QAAK,IAALA,GAAW,QAANu2D,EAALv2D,EAAOqG,YAAI,IAAAkwD,OAAN,EAALA,EAAa30D,GACrB66D,iBAAuB,OAALz8D,QAAK,IAALA,GAAW,QAANw2D,EAALx2D,EAAOqG,YAAI,IAAAmwD,OAAN,EAALA,EAAa50D,GAC/BupD,UAAgB,OAALnrD,QAAK,IAALA,GAAW,QAANy2D,EAALz2D,EAAOqG,YAAI,IAAAowD,OAAN,EAALA,EAAatL,UACxB15B,YAAkB,OAALzxB,QAAK,IAALA,GAAW,QAAN02D,EAAL12D,EAAOqG,YAAI,IAAAqwD,GAAY,QAAZC,EAAXD,EAAahlC,kBAAU,IAAAilC,OAAlB,EAALA,EAAyBllC,YACtCjnB,IAAKwtD,QAITx2D,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAM62D,EACN/0D,QAAS23D,GACT0B,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASw4D,GACT,aAAW,QAAO54D,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CACT3W,UAAWmC,GAAQuU,MACnB3c,QAAS4xC,GAAc,IAAM,KAAO,KACpCI,MAAOJ,GAAc,IAAM,SAAW,OAAO5zC,SAE5C,GAAQ,OAAL1B,QAAK,IAALA,GAAc,QAAT42D,EAAL52D,EAAOuc,eAAO,IAAAq6C,OAAT,EAALA,EAAgBj5D,UAAU6K,EAC5B,uFACG+uD,WAIXl1D,cAACioD,GAAW,CACV74B,YAAkB,OAALzxB,QAAK,IAALA,GAAW,QAAN62D,EAAL72D,EAAOqG,YAAI,IAAAwwD,GAAY,QAAZC,EAAXD,EAAanlC,kBAAU,IAAAolC,OAAlB,EAALA,EAAyBrlC,YACtC0pB,OAAa,OAALn7C,QAAK,IAALA,GAAW,QAAN+2D,EAAL/2D,EAAOqG,YAAI,IAAA0wD,OAAN,EAALA,EAAan1D,GACrBupD,UAAgB,OAALnrD,QAAK,IAALA,GAAW,QAANg3D,EAALh3D,EAAOqG,YAAI,IAAA2wD,OAAN,EAALA,EAAa7L,UACxB5uC,QAAc,OAALvc,QAAK,IAALA,OAAK,EAALA,EAAOuc,aAIpB/a,eAACoiB,KAAM,CACL84C,WAAS,EACT77D,KAAM+2D,EACNj1D,QAAS43D,GACTyB,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQmlD,kBAAkBvvD,SAC3CF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASy4D,GACT,aAAW,QAAO74D,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CACT3W,UAAWmC,GAAQuU,MACnB3c,QAAS4xC,GAAc,IAAM,KAAO,KACpCI,MAAOJ,GAAc,IAAM,SAAW,OAAO5zC,SAEvC,OAAL1B,QAAK,IAALA,GAAc,QAATi3D,EAALj3D,EAAOuc,eAAO,IAAA06C,OAAT,EAALA,EAAgBt5D,YAIvB0E,cAAA,OAAKsH,UAAU,yBAAwBjI,SACpC8G,EACC,6EACE,GAAGiyD,OAEY,QADfvD,EAlPeyF,MAAO,IAADC,EAAAC,EAC/B,OAAY,OAAL78D,QAAK,IAALA,GAAW,QAAN48D,EAAL58D,EAAOqG,YAAI,IAAAu2D,GAAQ,QAARC,EAAXD,EAAaviD,cAAM,IAAAwiD,OAAd,EAALA,EAAqBhrD,QACzBnB,GAAiC,KAA3BA,EAAE7H,UAAUkJ,aAAsBrB,EAAEsB,SAC5C,EAgPI2qD,UAAoB,IAAAzF,OAAA,EAApBA,EAAsB74D,KAAI,CAACyK,EAAQjL,IAClCwE,cAACo/C,GAAY,CAAW34C,OAAQA,GAAbjL,QAIvB2D,eAACoiB,KAAM,CACL84C,WAAS,EACT77D,KAAMi3D,GACNn1D,QAAS63D,GACTwB,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQmlD,kBAAkBvvD,SAC3CF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAAS04D,GACT,aAAW,QAAO94D,SAElBW,cAACmkB,KAAS,MAEZhlB,eAAC8e,KAAU,CACT3W,UAAWmC,GAAQuU,MACnB3c,QAAS4xC,GAAc,IAAM,KAAO,KACpCI,MAAOJ,GAAc,IAAM,SAAW,OAAO5zC,SAAA,CAEvC,OAAL1B,QAAK,IAALA,GAAc,QAATm3D,EAALn3D,EAAOuc,eAAO,IAAA46C,OAAT,EAALA,EAAgBx5D,KAAK,gBAI5B0E,cAAA,OAAKsH,UAAU,yBAAwBjI,SAAE,+BACxCW,cAACs/C,GAAQ,CAACC,aAAcyW,GAAcxW,WAAY0W,UAEjD,E,+BC5lBKuE,OAjEY98D,IAAW,IAAD4M,EAAAC,EACnC,MAAM,wBAAEkwD,EAAuB,iBAAEC,GAAqBh9D,GAChD,oBAAEqM,GAAwBlI,qBAAWC,MACrC,EAAEoE,GAAMC,eACPjI,EAAUC,GAAeC,IAAM6D,SAAS,MACzC1D,EAAOC,QAAQN,GAMfy8D,EAAqB19C,IACzB9e,EAAY,MACG,IAAX8e,EACFw9C,GAAwB,GACJ,IAAXx9C,GACTy9C,GAAiB,EACnB,EAGF,OACEx7D,eAAA,OAAKmI,UAAU,kBAAiBjI,SAAA,CAC9BW,cAACskB,KAAM,CACL/kB,GAAG,cACH,gBAAef,EAAO,iBAAcgB,EACpC,gBAAc,OACd,gBAAehB,EAAO,YAASgB,EAC/BI,GAAI,CACF3B,OAAQ,YACR48D,YAAa,QACbl8B,UAAW,4CAEbl/B,QAzBeC,IACnBtB,EAAYsB,EAAMC,cAAc,EAwBPN,SAErBW,cAAC86D,KAAY,CAACl9D,MAAM,aAEtBuB,eAACiB,IAAI,CACHb,GAAG,YACHc,cAAe,CACb,kBAAmB,eAErBlC,SAAUA,EACVK,KAAMA,EACN8B,QAASs6D,EACTjB,oBAAqBoB,KAAK17D,SAAA,CAEN,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCywD,WACrCh7D,cAACa,IAAQ,CAACpB,QAASA,IAAMm7D,EAAkB,GAAGv7D,SAC3C8G,EACC,kHAGF,KACgB,OAAnB6D,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCywD,SACrCj7D,cAACa,IAAQ,CAACpB,QAASA,IAAMm7D,EAAkB,GAAGv7D,SAC3C8G,EACC,gHAGF,UAEF,EC4MK+0D,OA1PQv9D,IAAW,IAADw9D,EAAAC,EAAAC,EAC/B,MAAM,MAAEhuC,EAAK,UAAEhB,EAAS,kBAAEivC,EAAiB,iBAAEX,EAAgB,YAAEY,GAC7D59D,GACI,EAAEwI,GAAMC,cAERiW,EAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KAJc,eAQbq4C,GAAch5D,YAAYsX,KAC3B,KAAE9V,EAAI,QAAEuW,EAAO,QAAEsR,GAAYrR,aAASb,GAAqB,CAC/DnT,UAAW,CACT6lB,UAAWA,GAEb3R,YAAa,WACbC,6BAA6B,IAGzB8gD,EAAkB,OAAJz3D,QAAI,IAAJA,OAAI,EAAJA,EAAM03D,mBACnBC,EAAQC,GAAa15D,mBAAS,KAC9B25D,EAAUC,GAAe55D,mBAAS,KAClC65D,EAAcC,GAAmB95D,mBAAS,KAC1C+5D,EAAkBC,GAAsBh6D,mBAAS,KACjDktB,EAAas6B,GAAkBxnD,mBAAS,IACzCi6D,EAA+B,OAAL9uC,QAAK,IAALA,GAE/B,QAFoC8tC,EAAL9tC,EAAOpV,MACpC07B,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMp0C,MAAOo8D,IAAc,OAAJhoB,QAAI,IAAJA,OAAI,EAAJA,EAAMmV,aAAc6S,WACtD,IAAAR,GAAY,QAAZC,EAF+BD,EAE7B9rC,kBAAU,IAAA+rC,OAFwB,EAALA,EAEjBhsC,YACTgtC,EAAsB,OAAL/uC,QAAK,IAALA,GAEtB,QAF2BguC,EAALhuC,EAAOpV,MAC3B07B,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMp0C,MAAOo8D,IAAc,OAAJhoB,QAAI,IAAJA,OAAI,EAAJA,EAAMmV,aAAc6S,WACtD,IAAAN,OAF2B,EAALA,EAEpB97D,GAEG88D,EAAiC,OAAXZ,QAAW,IAAXA,OAAW,EAAXA,EAAajsD,QACtC8sD,IACW,OAAVA,QAAU,IAAVA,OAAU,EAAVA,EAAYltC,eAAgB+sC,GACC,aAAlB,OAAVG,QAAU,IAAVA,OAAU,EAAVA,EAAYltC,cACiB,cAA5B+sC,GAC2B,eAAlB,OAAVG,QAAU,IAAVA,OAAU,EAAVA,EAAYltC,cACiB,YAA5B+sC,IAGAI,EAA4BA,KAChC5B,GAAiB,GACjBiB,EAAU,IACVE,EAAY,IACZE,EAAgB,IAChBE,EAAmB,IACnBxS,EAAe,GAAG,EAqDpB,OACE1pD,cAAAZ,WAAA,CAAAC,SACEF,eAACoiB,KAAM,CACL/iB,KAAM88D,EACN96D,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,MACPgC,OAAQ,OACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAGXmB,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,oBACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SAED8G,EAAE,gDAELnG,cAACV,IAAU,CAACG,QAAS88D,EAA0Bl9D,SAC7CW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BoC,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChB7c,IAAK,OACLsJ,QAAS,aACT/J,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACf5c,IAAK,OACL5B,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,OACVwL,UAAW,QACXhK,SAAA,CAEFF,eAAC8sB,KAAW,CAACouC,WAAS,EAACjyC,KAAK,QAAO/oB,SAAA,CACjCW,cAACksB,KAAU,CAAC3sB,GAAG,2BAA0BF,SAAE,SAC3CW,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACH/E,MAAOmhE,EACPp+C,MAAO,OACPjV,SAAWyX,GA5HAxgB,KAAQ,IAADi9D,EAAAC,EAAAC,EAC9B,MAAM/oB,EAAY,OAALtmB,QAAK,IAALA,OAAK,EAALA,EAAOpV,MACjB07B,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMp0C,MAAOA,IAAU,OAAJo0C,QAAI,IAAJA,OAAI,EAAJA,EAAMmV,aAAcvpD,IAEnDq8D,EAAUr8D,GACVu8D,EAAgB,OAAJnoB,QAAI,IAAJA,OAAI,EAAJA,EAAMr4C,MAClB0gE,EAAoB,OAAJroB,QAAI,IAAJA,GAAgB,QAAZ6oB,EAAJ7oB,EAAMtkB,kBAAU,IAAAmtC,OAAZ,EAAJA,EAAkBj9D,IAClC28D,EAAuB,OAAJvoB,QAAI,IAAJA,GAAgB,QAAZ8oB,EAAJ9oB,EAAMtkB,kBAAU,IAAAotC,OAAZ,EAAJA,EAAkB7F,QACrClN,EAAmB,OAAJ/V,QAAI,IAAJA,GAAgB,QAAZ+oB,EAAJ/oB,EAAMtkB,kBAAU,IAAAqtC,OAAZ,EAAJA,EAAkBttC,YAAY,EAoHhButC,CAAgB58C,EAAE3Y,OAAO5M,OAAO6E,SAEhDguB,EAAMrxB,KAAKxB,GACVwF,cAACa,KAAQ,CAEPrG,MAAOA,EAAMsuD,UAAYtuD,EAAMsuD,UAAYtuD,EAAM+E,GAAGF,SAEnD7E,EAAMc,MAHFd,EAAM+E,WASnBS,cAACgiB,KAAS,CACRziB,GAAG,iBACHge,MAAOpX,EAAE,kDACT9E,QAAQ,WACR+mB,KAAK,QACLC,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpC0jB,UAAW+5C,EACXrzD,SAAWyX,IAAM68C,OAvIApiE,EAuIoBulB,EAAE3Y,OAAO5M,WAtIxDshE,EAAYthE,GADeA,KAuIoC,EACrDA,MAAOqhE,EACPzzD,UAAU,EACVxK,MAAOi+D,EAAW,UAAY,UAGhC18D,eAAC8sB,KAAW,CAACouC,WAAS,EAACjyC,KAAK,QAAO/oB,SAAA,CACjCW,cAACksB,KAAU,CAAC3sB,GAAG,2BAA2BqiB,UAAWi6C,EAASx8D,SAC3D8G,EAAE,qDAELnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACHqiB,UAAW+5C,EACXnhE,MAAOuhE,EACPx+C,MAAOpX,EAAE,mDACTmC,SAAWyX,GApJMxgB,KAAQ,IAADs9D,EACpC,MAAMP,EAAwB,OAAXb,QAAW,IAAXA,OAAW,EAAXA,EAAajsD,QAC7B8sD,IACW,OAAVA,QAAU,IAAVA,OAAU,EAAVA,EAAY1F,UAAWqF,IACb,OAAVK,QAAU,IAAVA,OAAU,EAAVA,EAAYltC,eAAgB+sC,IAEhCH,EAAgBz8D,GAChBmqD,EAA4B,QAAdmT,EAACP,EAAW,UAAE,IAAAO,OAAA,EAAbA,EAAeztC,YAAY,EA6Ib0tC,CAAsB/8C,EAAE3Y,OAAO5M,OAAO6E,SAEnC,OAAnBg9D,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBrgE,KAAKxB,GACzB2E,eAAC0B,KAAQ,CAAiBrG,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAO+E,GAAGF,SAAA,CACnC,OAAL7E,QAAK,IAALA,OAAK,EAALA,EAAOo8D,QACF,OAALp8D,QAAK,IAALA,OAAK,EAALA,EAAOc,SAAc,OAALd,QAAK,IAALA,OAAK,EAALA,EAAOo8D,QAAS,MAAW,OAALp8D,QAAK,IAALA,OAAK,EAALA,EAAOc,OAAS,KAFrC,OAALd,QAAK,IAALA,OAAK,EAALA,EAAO+E,WAQ5BS,cAACqkB,KAAa,CAAChI,MAAOA,EAAMhd,SAC1BW,cAACskB,KAAM,CACL1kB,GAAI,CACF1B,MAAO,OACPkL,QAAS,MACTxL,MAAO,OACPmC,aAAc,MACdkkB,WAAY,QAEd5iB,QAAQ,YACRzD,MAAM,UACN6B,QAASA,IAhKvBnF,iBACE,GAAIqhE,GAAUE,GAAYE,EACxB,IACEP,EAAW,CACTh1D,UAAW,CACTu2D,aAAcX,EACdhtC,YAAaA,EACbprB,KAAM,CACJ1I,KAAMugE,EACNrd,MAAOqd,EACPphD,UAAW4R,EACX2wC,aAAcjB,MAIpBl4C,YAAW,KACT03C,IACAgB,GAA2B,GAC1B,IACL,CAAE,MAAOr1D,GACPzC,QAAQD,MAAM,gBAAc0C,EAC9B,CAEJ,CAyI6B+1D,GACfr7C,WAAU+5C,GAAUE,GAAYE,GAA4B18D,SAE3D8G,EAAE,mEAMZ,E,cC7QP,SAASjF,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CAuBeu/D,OArBf,SAAsBv/D,GACpB,MAAM,YAAEw/D,GAAgBx/D,GAClB,aAAEy/D,EAAY,gBAAEhY,GAAoBtjD,qBAAWC,KAC/Cs7D,OAAmC79D,IAAhB29D,EAA4BA,EAAc,iBAE7D58D,EAAcA,CAACb,EAAO+H,KACX,cAAXA,GAGJ29C,GAAiBgY,EAAa,EAGhC,OACEp9D,cAACuH,IAAQ,CAAC/I,KAAM4+D,EAAc51D,iBAAkB,IAAMlH,QAASC,EAAYlB,SACzEW,cAACkB,GAAK,CAACZ,QAASC,EAAamH,SAAS,QAAOrI,SAC1Cg+D,GAAsC,6BAI/C,EC5BO,MAAMC,GAA6BhpD,IACxC,MAAMmlB,EAAa,IAAIt0B,KAAU,OAALmP,QAAK,IAALA,OAAK,EAALA,EAAO/B,WAC7BmnB,EAAW,IAAIv0B,KAAU,OAALmP,QAAK,IAALA,OAAK,EAALA,EAAO7B,SAKjC,MAAO,CACL8qD,MAJwB,GAAG9jC,EAAWxqB,iBAAiBwqB,EAAWzqB,WAAW,KAAKyqB,EAAW1qB,YAK7FyuD,IAJsB,GAAG9jC,EAASzqB,iBAAiByqB,EAAS1qB,WAAW,KAAK0qB,EAAS3qB,YAKtF,ECmBG/F,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZysC,kBAAmB,CACjB7xC,gBAAiB,UACjBoF,SAAU,YAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,4BAIdo5C,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAC9CxY,EAAMwY,QAAQ,GAAK,OAGvBojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAEZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAGToqD,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAsIe8/D,OApIM7hD,IAAqD,IAApD,SAAEvc,EAAQ,MAAE2e,EAAK,YAAE/S,EAAW,aAAEyyD,GAAc9hD,EAClE,MAAM,EAAEzV,GAAMC,eACPmyC,GAAgB/1C,YAAY8yC,KAC7B,UACJrrB,EAAS,aACT0zC,EAAY,WACZ1I,EAAU,QACV2I,EAAO,mBACPC,EAAkB,gBAClBC,EAAe,qBACfC,EAAoB,wBACpBC,GACEl8D,qBAAWC,KACT0H,EAAUT,KACVi1D,GAAa,IAAI94D,MAAOE,UAAY,MAE1CvC,qBAAU,KACR,GAAImnB,EACF,GAAqB,UAAjByzC,GAA6C,SAAjBA,EAAyB,CAAC,IAADQ,EACvD,MAAMC,EAAe,IAAIh5D,KACnBi5D,EAA0B,OAAZD,QAAY,IAAZA,GAAwB,QAAZD,EAAZC,EAAc7hE,kBAAU,IAAA4hE,OAAZ,EAAZA,EAA0BhvD,UAAU,EAAG,IACrDmvD,EAAa,IAAIl5D,KAAKi5D,GAAa/4D,UAAY,MAErD24D,EAAwB,CACtB,IACKD,EAAqB5X,UACxB5zC,UAAW,IAAIpN,KAAKk5D,GACpB5rD,QAAS,IAAItN,KAAKk5D,GAClB7iE,IAAK,eAGTqiE,EAAmB,CACjB,IACKC,EAAgB3X,UACnB5zC,UAAW,IAAIpN,KAAKk5D,GACpB5rD,QAAS,IAAItN,KAAKk5D,GAClB7iE,IAAK,cAKX,MAAO,GAAqB,UAAjBkiE,EAA0B,CAAC,IAADY,EACnC,MAAMH,EAAe,IAAIh5D,KACnBo5D,EAAYJ,EAAa3c,WACzBgd,EACJD,EAAY,GAAK,OAAYA,GAAa,GAAK,MAAW,KACtDH,EAA0B,OAAZD,QAAY,IAAZA,GAAwB,QAAZG,EAAZH,EAAc7hE,kBAAU,IAAAgiE,OAAZ,EAAZA,EAA0BpvD,UAAU,EAAG,IACrDmvD,EAAa,IAAIl5D,KAAKi5D,GAAa/4D,UAAYm5D,EAErDR,EAAwB,CACtB,IACKD,EAAqB5X,UACxB5zC,UAAW,IAAIpN,KAAKk5D,GACpB5rD,QAAS,IAAItN,KAAKk5D,GAClB7iE,IAAK,eAGTqiE,EAAmB,CACjB,IACKC,EAAgB3X,UACnB5zC,UAAW,IAAIpN,KAAKk5D,GACpB5rD,QAAS,IAAItN,KAAKk5D,GAClB7iE,IAAK,cAGX,CACF,GAIC,CAACyuB,IAEJ,MAAM1pB,EAAe8N,IACnBsvD,GAAa,GACbK,EAAwB,CAAC,CACvBzrD,UAAW,IAAIpN,KAAK84D,GACpBxrD,QAAS,IAAItN,KAAK84D,GAClBziE,IAAK,cACJ,EAKL,OACE2D,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAMyrB,EACN3pB,QAASC,EACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,EAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,EACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,CAAG1kB,QAASc,MAExBP,cAACie,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,EAAQuU,MAAM3e,SAC/C2e,IAEH7e,eAACy6D,KAAM,CAACC,QAAM,EAAAx6D,SAAA,CACZW,cAAC85D,KACC,CACAr6D,QAASwL,EACT0lB,QAAS3wB,cAAC+5D,KAAY,IACtBC,gBAAgB,MAChBp8D,MAAM,UAASyB,SAEd8G,EACC,6HAGJnG,cAACi6D,KAAQ,CACPr6D,GAAI,CACFhC,MAAO,OACPmlC,OAAS1mB,GAAUA,EAAM0mB,OAAOo3B,OAAS,KAE3C37D,KAAMy2D,EACNx1D,QAASw1D,EAAW51D,SAEpBW,cAACwoB,KAAgB,CAAC5qB,MAAM,sBAK/ByB,IACM,EC9PN,MAAMo/D,GAASjT,IACpB,MAAMlK,EAAc,IAAIn8C,KAAKqmD,GAC7BlK,EAAYod,SAAS,EAAG,EAAG,EAAG,GAE9B,MAAMC,EAAW,IAAIx5D,KAAKqmD,GAC1BmT,EAAS7qD,QAAQ6qD,EAAS5vD,UAAY,GACtC4vD,EAASD,SAAS,EAAG,EAAG,EAAG,GAK3B,MAAO,CAAEnB,MAHUh3C,KAAKq4C,MAAMtd,EAAYj8C,UAAY,KAG1Bm4D,IAFXj3C,KAAKq4C,MAAMD,EAASt5D,UAAY,IAAO,IAEb,ECiCvCixC,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAG9BlqB,KAAM,CACJqyC,aAAc,IACdhhE,SAAU,OARU04C,CAUpBI,MAEJf,KAAW7vB,WAAW,CACpB8vB,KAAM,CACJC,UAAW,cACXC,eAAgB,iCAIpB,MAAMa,GAAmBL,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEEmoB,GAAmBvoB,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,UACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANW04C,CAQrBI,MACEE,GAAmBN,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,UACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVD,MAAO,MACPmhB,WAAY,WARSw3B,CAUrBI,MASE3tC,IARiButC,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAEc/tC,cAAYoT,IAAK,CACjC67B,MAAO,CACL/W,SAAU,KAEZn2B,OAAQ,CACNnL,OAAQwc,EAAMwY,QAAQ,SAopCXkqC,OAhpCYphE,IAAW,IAADqhE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACnC,MAAM,YAAEC,GAAgBjkE,GAClB,EAAEwI,GAAMC,eACP+zC,GAASC,IAAc/7C,IAAM6D,YAC7B2/D,GAAQC,IAAazjE,IAAM6D,YAC3Bq2C,IAAgB/1C,YAAY6yC,KAC5B0sB,GAAUC,IAAe3jE,IAAM6D,YAEhC,yBACJ+/D,GAAwB,4BACxBC,GAA2B,WAC3BhvD,GAAU,cACVivD,GAAa,kBACbC,GAAiB,eACjBC,GAAc,QACdjrB,GAAO,WACPwB,GAAU,IACV0pB,GAAG,OACHC,GAAM,QACN3E,GAAO,WACP4E,GAAU,WACVC,GAAU,cACVC,GAAa,YACbC,GAAW,eACXC,GAAc,WACd3N,GAAU,cACVpc,GAAa,UACb5uB,GAAS,gBACT6zC,GAAe,mBACfD,GAAkB,qBAClBE,GAAoB,wBACpBC,GAAuB,qBACvB9Z,GAAoB,wBACpBmD,IACEvlD,qBAAWC,MACRmY,GAASg0B,IAAchsC,mBAAS0/D,IAChC98D,GAAM+9D,IAAW3gE,oBAAS,IAC1B4gE,GAASC,IAAc7gE,mBAAS,KACjC,GAAE3C,IAAOyjE,eACRC,GAAgBC,IAAqB7kE,IAAM6D,SAAS,CACzDm5B,MAAO,CAAC+b,GAASkrB,IACjBt+D,KAAM,CAAEmrB,KAAMyuC,IACd9mD,UAAW2rD,GACX/nB,WAAYioB,GACZh+B,YAAa9lC,aAAaC,QAAQ,eAClCklC,SAAUnlC,aAAaC,QAAQ,QAC/B67C,aAAc97C,aAAaC,QAAQ,cACnC87C,UAAW/7C,aAAaC,QAAQ,eAE5B2K,GAAUT,KACVkxC,GAAW77C,IAAMg6B,SACjB8qC,GAAY9kE,IAAMg6B,SAExBv1B,qBAAU,KACJggE,KACEL,IAAcK,IAChBF,GAAe,IAEbH,IAAcK,IAChBF,GAAe,IAEnB,GACC,CAACE,KAEJhgE,qBAAU,KACJs0C,IACFgsB,IACF,GACC,CAAChsB,KAEJt0C,qBAAU,KACJw/D,IAwGN,WACE,IACE/pB,GAAa,CACX/xC,UAAW,CACT60B,MAAO,CAAC+b,GAASkrB,IACjBt+D,KAAM45D,GACN9mD,UAAW5a,OAAOmnE,IAClB3oB,WAAYx+C,OAAOonE,IACnB3+B,YAAas+B,GAAet+B,YAC5BX,SAAUi/B,GAAej/B,SACzB2W,aAAcsoB,GAAetoB,aAC7BC,UAAWqoB,GAAeroB,aAG3Bl0C,MAAMC,IACLyzC,GAAWzzC,EAAM3C,KAAKu/D,0BAA0B,IAEjDt8D,OAAOC,IACNzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,CACF,CA9HI4zC,EACF,GACC,CAACwnB,KAEJx/D,qBAAU,KACJq3C,IACFY,IACF,GACC,CAACZ,KAEJ,MAAMY,GAAYA,KAAO,IAADyJ,EAAAG,EACtB,MAAMzH,EAAa,+BAA+B/C,KAC5CgD,EAAe7hB,SAASC,cAAc,MACpCgiC,MAAOiG,EAAShG,IAAKiG,GAAUnG,GAA0B,CAC/D/qD,UAAkC,QAAzBiyC,EAAEN,GAAqB,UAAE,IAAAM,OAAA,EAAvBA,EAAyBjyC,UACpCE,QAAgC,QAAzBkyC,EAAET,GAAqB,UAAE,IAAAS,OAAA,EAAvBA,EAAyBlyC,QAClCjX,IAAK,cAEDkoE,EAAW,GAAGv9D,EAClB,iIACKtH,aAAaC,QAAQ,qBAAqB0kE,OAAaC,SAC9DtmB,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAAWsmB,EACxBvmB,EAAariB,QAOb+d,IAAc,GACdD,GAAW,IACX2pB,GAAO,IACPnoB,GAAW,GAAG,EA8BVgpB,GAAW9oE,UACf,IACE,MAAMqpE,EAAaR,GAAUtoC,QAC7B,GAAI8oC,EAAY,CACd,MACM3/D,SADei5C,KAAY0mB,IACb9nC,UAAU,aAC9B0mC,GAAOv+D,EAAKzH,MAAM,IACpB,MACEgmE,GAAO,IACP1pB,IAAc,EAElB,CAAE,MAAOr0C,IACPC,QAAQ+f,IAAIhgB,GACd,GAwBF,IAAI6+D,GAA4C,QAA1BrE,EAAG9a,GAAqB,UAAE,IAAA8a,GAAW,QAAXC,EAAvBD,EAAyBzsD,iBAAS,IAAA0sD,OAAX,EAAvBA,EAAoC55D,UACzDi+D,GAA0C,QAA1BpE,EAAGhb,GAAqB,UAAE,IAAAgb,GAAS,QAATC,EAAvBD,EAAyBzsD,eAAO,IAAA0sD,OAAT,EAAvBA,EAAkC95D,UA2BzD,MAAO6rC,IAAS,QAAE32B,GAAO,MAAE/V,GAAK,KAAER,KAAUstC,aAC1CmB,GACA,CACE/3B,YAAa,aAmJjB,SAAS0hC,GAAMjoC,GAAqB,IAAhBkoC,EAASt1B,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,EAC9B,IAAIu1B,EAAQnoC,GAAO,EAAI,GAAK,EAE5B,OADAA,GAAYmoC,EACM,IAAdD,EAEKC,EAAQ/1B,KAAK61B,MAAMjoC,IAE5BA,EAAMA,EAAI7X,WAAWO,MAAM,KAMpBy/C,IADPnoC,GAJAA,EAAMoS,KAAK61B,QACPjoC,EAAI,GAAK,KAAOA,EAAI,IAAMA,EAAI,GAAKkoC,EAAYA,MAGzC//C,WAAWO,MAAM,MACP,GAAK,KAAOsX,EAAI,IAAMA,EAAI,GAAKkoC,GAAaA,IAClE,CA7JAh+C,IAAMyE,WAAU,KACVkB,KACFg+D,GAAYh+D,GAAK4/D,4BACjB9B,GAAU99D,GAAK4/D,2BAA2BC,OAC1C3B,GAA4Bl+D,GAAK4/D,2BAA2BC,OAC5DrB,GAAW,CACTqB,MAAO7/D,GAAK4/D,2BAA2BC,MACvC3pD,QAASlW,GAAK4/D,2BAA2B1pD,UAE7C,GACC,CAAClW,KAEJ3F,IAAMyE,WAAU,KAQd,GAPA+/D,IAAQ,GAOJ54C,GAAW,CACb,MAAMs3B,EAAc,IAAIp8C,KAClB2+D,EAAeviB,EAAYC,WAC3BC,EAAcsiB,GAAyB,OAAP7pD,SAAO,IAAPA,QAAO,EAAPA,GAASuf,YAC/C,GAAoB,IAAhBgoB,EAAmB,CACrB,MAAMuiB,EAAiBziB,EAAYl8C,UAAY,MAC/CgiD,GAAwB,CACtB,CACE90C,UAAW,IAAIpN,KAAK6+D,GACpBvxD,QAASwxD,mBAAQ,IAAI9+D,KAAK6+D,GAAiB,GAC3CxoE,IAAK,eAIT,MAAQ+hE,MAAOiG,EAAShG,IAAKiG,GAAUnG,GAA0B,CAC/D/qD,UAAW,IAAIpN,KAAK6+D,GACpBvxD,QAASwxD,mBAAQ,IAAI9+D,KAAK6+D,GAAiB,GAC3CxoE,IAAK,cAGP01C,GAAQ,CACN1qC,UAAW,CACTiU,UAAWzd,SAASuC,IACpBk6B,WAAY+pC,EACZ9pC,SAAU+pC,IAGhB,MAAO,GAAoB,KAAhBhiB,EAAoB,CAC7B,MAAMuiB,EACJF,EAAeriB,EACXF,EAAYl8C,UAAY,OACxBk8C,EAAYl8C,UAAY,MAE9BgiD,GAAwB,CACtB,CACE90C,UAAW,IAAIpN,KAAK6+D,GACpBvxD,QAASwxD,mBAAQ,IAAI9+D,KAAK6+D,GAAiB,GAC3CxoE,IAAK,eAIT,MAAQ+hE,MAAOiG,EAAShG,IAAKiG,GAAUnG,GAA0B,CAC/D/qD,UAAW,IAAIpN,KAAK6+D,GACpBvxD,QAASwxD,mBAAQ,IAAI9+D,KAAK6+D,GAAiB,GAC3CxoE,IAAK,cAGP01C,GAAQ,CACN1qC,UAAW,CACTiU,UAAWzd,SAASuC,IACpBk6B,WAAY+pC,EACZ9pC,SAAU+pC,IAGhB,CACF,IACC,CAACx5C,KAEJnnB,qBAAU,KACR,GAAIohD,GAAsB,CAAC,IAADggB,EAAAC,EACxB,MAAQ5G,MAAOiG,EAAShG,IAAKiG,GAAUnG,GAA0B,CAC/D/qD,UAAW,IAAIpN,KAA4B,QAAxB++D,EAAChgB,GAAqB,UAAE,IAAAggB,OAAA,EAAvBA,EAAyB3xD,WAC7CE,QAASwxD,mBAA+B,QAAxBE,EAACjgB,GAAqB,UAAE,IAAAigB,OAAA,EAAvBA,EAAyB1xD,QAAS,GACnDjX,IAAK,cAEP01C,GAAQ,CACN1qC,UAAW,CACTiU,UAAWzd,SAASuC,IACpBk6B,WAAY+pC,EACZ9pC,SAAU+pC,IAGhB,IACC,CAACvf,KA4IJ,MAAM6f,GAAqB9uB,GACZ,SAATA,GAA4B,UAATA,EACd,EACW,UAATA,EACF,QADF,EAKT,OACE91C,eAACs+D,GAAK,CACJxyD,YAhSJ3Q,iBACEu+C,IAAc,GACd,SAxDmBv+C,WACnB,IACE,MAAMs0B,EAAkB,OAARsrB,SAAQ,IAARA,QAAQ,EAARA,GAAUrf,QAC1B,GAAIjM,EAAS,CACX,MACM5qB,SADei5C,KAAYruB,IACbiN,UAAU,aAC9B+c,GAAW50C,EAAKzH,MAAM,IACxB,MACEq8C,GAAW,IACXC,IAAc,EAElB,CAAE,MAAOr0C,IACPC,QAAQ+f,IAAIhgB,GACd,GA4CQs3C,EACR,CAAE,MAAOt3C,IACPC,QAAQ+f,IAAIhgB,GACd,CACF,EA0RIk5D,aAAqB,OAAPxjD,SAAO,IAAPA,QAAO,EAAPA,GAASuf,WACvBzb,MAAO,GAAGnf,aAAaC,QAAQ,oBAAoBqH,EACjD,iIACE9G,SAAA,EAEHkb,IAAYwnD,IAAaF,GAEK,KAAnB,OAARE,SAAQ,IAARA,QAAQ,EAARA,GAAU8B,MAAMh1D,QAClB1P,eAAA,OAAAE,SAAA,CAWEW,cAACgoD,GAAoB,CACnB7D,gBAAgB,IAChB/C,YAAa2iB,GAAyB,OAAP7pD,SAAO,IAAPA,QAAO,EAAPA,GAASuf,YACxC4nB,YAAY,MAGbwgB,IACC7hE,cAAA,OAAAX,SACG0iE,IAAsC,IAAlB,OAARA,SAAQ,IAARA,QAAQ,EAARA,GAAU8B,MAAMh1D,SAC3B1P,eAAA,OAAKmI,UAAU,uDAAsDjI,SAAA,CACnEW,cAAA,QAAMsH,UAAU,gBAAejI,SAC7BW,cAAA,KAAGsH,UAAU,uBAEdnB,EACC,2IAmBT07D,IACC1iE,eAAA,OAAAE,SAAA,CACG0iE,IAAsC,IAAlB,OAARA,SAAQ,IAARA,QAAQ,EAARA,GAAU8B,MAAMh1D,SAC3B1P,eAAA,OAAKmI,UAAU,iDAAgDjI,SAAA,CAC7DW,cAAA,OAAKmI,IAAK+xC,GAAS76C,SACjBW,cAAA,OAAKsH,UAAU,0CAAyCjI,SACtDW,cAACozC,KACC,CACAwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERwV,MAAO,CACL/H,KAAM,IAGRy+B,MAAO,CACL0vB,WAAoB,OAARrC,SAAQ,IAARA,QAAQ,EAARA,GAAUsC,4BAExB/wB,MAAO,CACLC,IAAK,EACLv1B,MAAO,CACL/H,KAAM,wBAERquD,YAAa,CACX7/C,SAAS,EACThkB,MAAO,CACLse,WAAY,OACZnhB,OAEa,OAAVg4C,WAAU,IAAVA,MAA0B,QAAhBwpB,EAAVxpB,KAAY2uB,sBAAc,IAAAnF,GAAO,QAAPC,EAA1BD,EAA4BphD,aAAK,IAAAqhD,OAAvB,EAAVA,EAAmC5+D,SACxB,OAAVm1C,WAAU,IAAVA,MAA0B,QAAhB0pB,EAAV1pB,KAAY2uB,sBAAc,IAAAjF,GAAO,QAAPC,EAA1BD,EAA4BthD,aAAK,IAAAuhD,GAAO,QAAPC,EAAjCD,EAAmC9+D,aAAK,IAAA++D,OAA9B,EAAVA,EACI5hE,QACN,UAiBRk3C,QAAS,CACPE,aAAc,wBACdwvB,YACE,0DAEJ9wB,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,SACVC,cAAe,GACfC,WAAY,CACVlgD,SAAS,KAIfsvB,OAAQ,CACE,OAARguB,SAAQ,IAARA,QAAQ,EAARA,GAAU6C,qBAAqB,GACvB,OAAR7C,SAAQ,IAARA,QAAQ,EAARA,GAAU6C,qBAAqB,IAEjCzvB,QAAS,CACP1wB,SAAS,UAMnBzkB,cAAA,OAAKmI,IAAKg7D,GAAU9jE,SAClBW,cAAA,OAAKsH,UAAU,0CAAyCjI,SACtDW,cAACozC,KACC,CACAwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVowB,oBAAqB,KACrBC,gBAAiB,KACjBC,YAAY,EACZv8D,KAAM,OAERwV,MAAO,CACL/H,KAAM,IAER6+B,QAAS,CACP0vB,YACE,iDAEJQ,cAAe,CACbC,MAAO,CACLta,YAAa,MAGjBjX,YAAa,CACX4uB,IAAK,CACHl6C,KAAM,IACN88C,kBAAkB,EAClBtmC,OAAQ,UACR+lC,WAAY,CACVlgD,SAAS,EACTowB,OACE,mDAKRd,OAAQ,CAAS,OAARguB,SAAQ,IAARA,QAAQ,EAARA,GAAUoD,SAAS,IAC5BhwB,QAAS,CACP1wB,SAAS,aASvBtlB,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDF,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BW,cAAA,QAAMsH,UAAU,gBAAejI,SAC7BW,cAAA,KAAGsH,UAAU,uBAEdnB,EACC,wJAGJhH,eAACw/C,KAAK,CAACr3C,UAAWmC,GAAQyuC,MAAO,aAAW,gBAAe74C,SAAA,CACzDW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,WACvBrzC,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,sIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,0IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,8HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,oIAMRhH,eAAC0/C,KAAS,CAAAx/C,SAAA,CACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAAC42C,GAAgB,CACfjrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SACZ,UAGDF,eAACw3C,KAAS,CAAChrC,UAAU,KAAK0nC,MAAM,SAAS0L,MAAM,MAAK1/C,SAAA,CACjD+8C,GAAc,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZtC,EAARsC,GAAU7nD,QAAQ,UAAE,IAAAulD,OAAZ,EAARA,EAAsB2F,MAAMzoB,mBAAmB,UAGxDx9C,eAACy3C,GAAgB,CACfjrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SAAA,CAEV+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZrC,EAARqC,GAAU7nD,QAAQ,UAAE,IAAAwlD,GAAO,QAAPC,EAApBD,EAAsB0F,aAAK,IAAAzF,OAAnB,EAARA,EAA6B/iB,uBAC7B,UAGJz9C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAc,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZnC,EAARmC,GAAU7nD,QAAQ,UAAE,IAAA0lD,GAAO,QAAPC,EAApBD,EAAsBwF,aAAK,IAAAvF,OAAnB,EAARA,EAA6BwF,mBAAmB,OAEzDlmE,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZjC,EAARiC,GAAU7nD,QAAQ,UAAE,IAAA4lD,GAAO,QAAPC,EAApBD,EAAsBsF,aAAK,IAAArF,OAAnB,EAARA,EAA6BljB,yBAC7B,UAGJ19C,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZ/B,EAAR+B,GAAU7nD,QAAQ,UAAE,IAAA8lD,GAAO,QAAPC,EAApBD,EAAsBoF,aAAK,IAAAnF,OAAnB,EAARA,EAA6BqF,qBAC7B,OAGJnmE,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZ7B,EAAR6B,GAAU7nD,QAAQ,UAAE,IAAAgmD,GAAO,QAAPC,EAApBD,EAAsBkF,aAAK,IAAAjF,OAAnB,EAARA,EAA6BoF,wBAC7B,UAINpmE,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAAC42C,GAAgB,CACfjrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SAEV8G,EACC,oIAGJhH,eAACw3C,KAAS,CAAChrC,UAAU,KAAK0nC,MAAM,SAAS0L,MAAM,MAAK1/C,SAAA,CACjD+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZ3B,EAAR2B,GAAU7nD,QAAQ,UAAE,IAAAkmD,GAAmB,QAAnBC,EAApBD,EAAsBoF,yBAAiB,IAAAnF,OAA/B,EAARA,EACI1jB,mBACJ,SAEDx2C,EACC,yHAGJhH,eAACy3C,GAAgB,CACfjrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SAAA,CAEV+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZzB,EAARyB,GAAU7nD,QAAQ,UAAE,IAAAomD,GAAmB,QAAnBC,EAApBD,EAAsBkF,yBAAiB,IAAAjF,OAA/B,EAARA,EACI3jB,uBACJ,SAEDz2C,EACC,yHAGJhH,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZvB,EAARuB,GAAU7nD,QAAQ,UAAE,IAAAsmD,GAAmB,QAAnBC,EAApBD,EAAsBgF,yBAAiB,IAAA/E,OAA/B,EAARA,EACI4E,mBACJ,OAGJlmE,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZrB,EAARqB,GAAU7nD,QAAQ,UAAE,IAAAwmD,GAAmB,QAAnBC,EAApBD,EAAsB8E,yBAAiB,IAAA7E,OAA/B,EAARA,EACI9jB,yBACJ,SAED12C,EACC,yHAGJhH,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZnB,EAARmB,GAAU7nD,QAAQ,UAAE,IAAA0mD,GAAmB,QAAnBC,EAApBD,EAAsB4E,yBAAiB,IAAA3E,OAA/B,EAARA,EACIyE,qBACJ,OAGJnmE,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZjB,EAARiB,GAAU7nD,QAAQ,UAAE,IAAA4mD,GAAmB,QAAnBC,EAApBD,EAAsB0E,yBAAiB,IAAAzE,OAA/B,EAARA,EACIwE,wBACJ,UAKNpmE,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAAC42C,GAAgB,CACfjrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SAEV8G,EACC,4IAGJhH,eAACw3C,KAAS,CAAChrC,UAAU,KAAK0nC,MAAM,SAAS0L,MAAM,MAAK1/C,SAAA,CACjD+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZf,EAARe,GAAU7nD,QAAQ,UAAE,IAAA8mD,GAAgB,QAAhBC,EAApBD,EAAsByE,sBAAc,IAAAxE,OAA5B,EAARA,EACItkB,mBACJ,SAEDx2C,EACC,yHAGJhH,eAACy3C,GAAgB,CACfjrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SAAA,CAEV+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZb,EAARa,GAAU7nD,QAAQ,UAAE,IAAAgnD,GAAgB,QAAhBC,EAApBD,EAAsBuE,sBAAc,IAAAtE,OAA5B,EAARA,EACIvkB,uBACJ,SAEDz2C,EACC,yHAGJhH,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZX,EAARW,GAAU7nD,QAAQ,UAAE,IAAAknD,GAAgB,QAAhBC,EAApBD,EAAsBqE,sBAAc,IAAApE,OAA5B,EAARA,EACIgE,mBACJ,OAGJlmE,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZT,EAARS,GAAU7nD,QAAQ,UAAE,IAAAonD,GAAgB,QAAhBC,EAApBD,EAAsBmE,sBAAc,IAAAlE,OAA5B,EAARA,EACI1kB,yBACJ,SAED12C,EACC,yHAGJhH,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZP,EAARO,GAAU7nD,QAAQ,UAAE,IAAAsnD,GAAgB,QAAhBC,EAApBD,EAAsBiE,sBAAc,IAAAhE,OAA5B,EAARA,EACI6D,qBACJ,OAGJnmE,eAACy3C,GAAgB,CACfjrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SAAA,CAEV+8C,GACS,OAAR2lB,SAAQ,IAARA,IAAoB,QAAZL,EAARK,GAAU7nD,QAAQ,UAAE,IAAAwnD,GAAgB,QAAhBC,EAApBD,EAAsB+D,sBAAc,IAAA9D,OAA5B,EAARA,EACI4D,wBACJ,mBAOZvlE,cAAA,SAC0B,GAAzB+hE,GAAS8B,MAAMh1D,QACd1P,eAAA,OAAKmI,UAAU,sCAAqCjI,SAAA,CAClDW,cAAA,QAAAX,SACEW,cAAA,WAEFA,cAAA,QAAAX,SACG8G,EACC,0HAGJnG,cAAA,QAAAX,SACEW,cAAA,cAKNA,cAAA,SAEC6hE,GAAO7lE,KAAK6lE,IAAM,IAAA6D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OACjBnmE,cAAAZ,WAAA,CAAAC,SACGwiE,EAAOlyD,SACN3P,cAAA,OAAKsH,UAAU,iBAAgBjI,SAC7BF,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCF,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BW,cAAA,QAAMsH,UAAU,gBAAejI,SAC7BW,cAAA,KAAGsH,UAAU,uBAEdu6D,EAAOrjB,SAEVr/C,eAACw/C,KAAK,CACJr3C,UAAWmC,GAAQyuC,MACnB,aAAW,gBAAe74C,SAAA,CAE1BW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAAAj3C,SACb8G,EACC,yHAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,sIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,0IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,8HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,oIAMRhH,eAAC0/C,KAAS,CAAAx/C,SAAA,CACPwiE,EAAOvtD,MAAMtY,KAAK8iD,GACjB3/C,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAAC22C,KAAS,CAAChrC,UAAU,KAAKozC,MAAM,MAAK1/C,SAClCy/C,EAAI/rC,OAEP5T,eAACw3C,KAAS,CACRhrC,UAAU,KACV0nC,MAAM,SACN0L,MAAM,MAAK1/C,SAAA,CAEV+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKnC,mBAAmB,WAEjCx9C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKlC,uBAAuB,WAErCz9C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKumB,mBAAmB,QAEjClmE,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKjC,yBAAyB,WAEvC19C,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKwmB,qBAAqB,QAEnCnmE,eAACw3C,KAAS,CAACtD,MAAM,SAAQh0C,SAAA,CACtB+8C,GAAS,OAAH0C,QAAG,IAAHA,OAAG,EAAHA,EAAKymB,wBAAwB,UAxBzBzmB,EAAI/rC,QA4BrB5T,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC42C,GAAgB,CACfvD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,iIAGJnG,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,uCAGdnI,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAAChvC,UAAU,oCAC3BtH,cAACs2C,GAAe,CACdjD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,sIAGJnG,cAACs2C,GAAe,CACdjD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,0IAGJnG,cAACs2C,GAAe,CACdjD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,8HAGJnG,cAACs2C,GAAe,CACdjD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,4IAGJnG,cAACs2C,GAAe,CACdjD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,gIAGJnG,cAACs2C,GAAe,CACdjD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,kIAINhH,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAAC22C,KAAS,CAACtD,MAAM,WAEjBl0C,eAACw3C,KAAS,CAACtD,MAAM,SAAQh0C,SAAA,CACtB+8C,GAAY,OAANylB,QAAM,IAANA,GAAa,QAAP6D,EAAN7D,EAAQuD,aAAK,IAAAM,OAAP,EAANA,EAAe/oB,mBAAmB,YAE3Cx9C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAY,OAANylB,QAAM,IAANA,GAAa,QAAP8D,EAAN9D,EAAQuD,aAAK,IAAAO,OAAP,EAANA,EAAe/oB,uBAAuB,WAG/Cz9C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAY,OAANylB,QAAM,IAANA,GAAa,QAAP+D,EAAN/D,EAAQuD,aAAK,IAAAQ,OAAP,EAANA,EAAeP,mBAAmB,QAE3ClmE,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAY,OAANylB,QAAM,IAANA,GAAa,QAAPgE,EAANhE,EAAQuD,aAAK,IAAAS,OAAP,EAANA,EAAehpB,yBAAyB,UAGjD19C,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAY,OAANylB,QAAM,IAANA,GAAa,QAAPiE,EAANjE,EAAQuD,aAAK,IAAAU,OAAP,EAANA,EAAeR,qBAAqB,QAE7CtlE,cAAC22C,KAAS,CAACtD,MAAM,cAEnBl0C,eAAC63C,KAAQ,CAAA33C,SAAA,CACN,IACDW,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC42C,GAAgB,CACfvD,MAAM,SACN/rC,UAAU,kCAAiCjI,SAE1C8G,EACC,4HAGJnG,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,oCAEZtH,cAAC8+D,GAAgB,CACfzrB,MAAM,SACN/rC,UAAU,uCAGdnI,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAAC22C,KAAS,CAACtD,MAAM,WAEjBl0C,eAACw3C,KAAS,CAACtD,MAAM,SAAQh0C,SAAA,CACtB+8C,GAAMylB,EAAOuE,QAAQzpB,mBAAmB,WAE3Cx9C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAY,OAANylB,QAAM,IAANA,GAAe,QAATkE,EAANlE,EAAQuE,eAAO,IAAAL,OAAT,EAANA,EAAiBnpB,uBAAuB,UAGjDz9C,eAACy3C,GAAgB,CAACvD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAY,OAANylB,QAAM,IAANA,GAAe,QAATmE,EAANnE,EAAQuE,eAAO,IAAAJ,OAAT,EAANA,EAAiBX,mBAAmB,QAE7ClmE,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GACO,OAANylB,QAAM,IAANA,GAAe,QAAToE,EAANpE,EAAQuE,eAAO,IAAAH,OAAT,EAANA,EAAiBppB,yBACjB,UAGJ19C,eAAC03C,GAAgB,CAACxD,MAAM,SAAQh0C,SAAA,CAC7B+8C,GAAY,OAANylB,QAAM,IAANA,GAAe,QAATqE,EAANrE,EAAQuE,eAAO,IAAAF,OAAT,EAANA,EAAiBZ,qBAAqB,QAE/CnmE,eAACw3C,KAAS,CAACtD,MAAM,SAAQh0C,SAAA,CACtB+8C,GAAY,OAANylB,QAAM,IAANA,GAAe,QAATsE,EAANtE,EAAQuE,eAAO,IAAAD,OAAT,EAANA,EAAiBZ,wBAAwB,sBAS7D,UAMXpmE,eAAA,QACEsB,MAAO,CACLgc,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChBzc,OAAQ,yBACRrC,SAAU,OACViC,IAAK,OACLT,SAAA,CAEFW,cAAA,KAAGo1C,MAAM,gCACRjvC,EACC,6HA1rBJnG,cAAC+b,GAAO,IA8rBV/b,cAACk9D,GAAY,CACXC,YAAah3D,EACX,oIAGE,ECloCGkgE,OA3GgBzqD,IAA8B,IAAD0qD,EAAA,IAA5B,KAAEtiE,EAAI,cAAEuiE,GAAe3qD,EACrD,MAAM,EAAEzV,GAAMC,eACP4nC,EAAKC,GAAU5vC,IAAM6D,WACtBnB,EAAWwY,cACXitD,EAAmB,4BAA4BpjE,KAAKrC,EAAS6K,UAQnE,OANA9I,qBAAU,KACRhI,OAAOy2C,OAAO,CACZ7J,IAAK,GACL,GACD,IAGDvoC,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAU,kCAAiCjI,SAAA,CAC9CW,cAAA,OACEsH,UAAW,6BACL,OAAJtD,QAAI,IAAJA,GAAU,QAANsiE,EAAJtiE,EAAM1I,YAAI,IAAAgrE,OAAN,EAAJA,EAAYz3D,SAAU,GAClB,wBACA,yBACHxP,SAEE,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAM1I,OAET0E,cAAA,OAAKsH,UAAU,8BAA6BjI,SAC1CF,eAAA,QAAAE,SAAA,CACEW,cAAA,OAAK4H,IAAK6+D,GAAWv+D,IAAI,WAAWhK,MAAM,KAAKgC,OAAO,OAAQ,IAC9DF,cAAA,QAAAX,SAAO,GAAO,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAMK,SAAa,OAAJL,QAAI,IAAJA,OAAI,EAAJA,EAAMG,iBAGnChF,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCW,cAAA,QACEsH,UAAW,oCAAoC0G,GACzC,OAAJhK,QAAI,IAAJA,OAAI,EAAJA,EAAM0qC,eACF,OAAJ1qC,QAAI,IAAJA,OAAI,EAAJA,EAAM4tC,sBACJvyC,SAEH,GAAGwO,GACE,OAAJ7J,QAAI,IAAJA,OAAI,EAAJA,EAAM0qC,eACF,OAAJ1qC,QAAI,IAAJA,OAAI,EAAJA,EAAM4tC,sBACJzrC,EAAE,gDAEPqgE,GAAoBD,QAGzBpnE,eAAA,OAAKmI,UAAU,iCAAgCjI,SAAA,CAC7CW,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CF,eAAA,QAAAE,SAAA,CACEW,cAAA,QAAAX,SAAW,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAM0qC,iBACZ,MACD1uC,cAAA,QACEsH,UAAW,IACL,OAAJtD,QAAI,IAAJA,OAAI,EAAJA,EAAM4tC,oBAAqB,GACvB,yCAEHvyC,SAEE,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAM4tC,0BAKb5xC,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CF,eAAA,QAAAE,SAAA,CACEW,cAAA,QAAAX,SAAW,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAMkuC,WACZ,MACDlyC,cAAA,QACEsH,UAAW,IACL,OAAJtD,QAAI,IAAJA,OAAI,EAAJA,EAAMiuC,cAAe,GACjB,yCAEH5yC,SAEE,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAMiuC,oBAKbjyC,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CF,eAAA,QAAAE,SAAA,CACEW,cAAA,QAAAX,SAAW,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAMguC,aACZ,MACDhyC,cAAA,QACEsH,UAAW,IACL,OAAJtD,QAAI,IAAJA,OAAI,EAAJA,EAAMguC,YAAa,GACf,yCAEH3yC,SAEE,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAM+tC,sBAIb/xC,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC3C8G,EAAE,mDAELnG,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC3C8G,EAAE,6CAELnG,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC3C8G,EAAE,oDAGN,E,oGCqDQugE,OApJK9qD,IAAe,IAADy8C,EAAA,IAAb,KAAEr0D,GAAM4X,EAC3B,MAAM+qD,EAAsB,OAAJ3iE,QAAI,IAAJA,GAAY,QAARq0D,EAAJr0D,EAAMgU,cAAM,IAAAqgD,OAAR,EAAJA,EAAc7oD,QACnC8S,IAAI,IAAAskD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MACqC,aAApC,OAAJ3kD,QAAI,IAAJA,GAAc,QAAVskD,EAAJtkD,EAAM7J,gBAAQ,IAAAmuD,GAAM,QAANC,EAAdD,EAAgBtrE,YAAI,IAAAurE,OAAhB,EAAJA,EAAsBvjE,gBACkB,2BAApC,OAAJgf,QAAI,IAAJA,GAAc,QAAVwkD,EAAJxkD,EAAM7J,gBAAQ,IAAAquD,GAAM,QAANC,EAAdD,EAAgBxrE,YAAI,IAAAyrE,OAAhB,EAAJA,EAAsBzjE,gBACkB,0BAApC,OAAJgf,QAAI,IAAJA,GAAc,QAAV0kD,EAAJ1kD,EAAM7J,gBAAQ,IAAAuuD,GAAM,QAANC,EAAdD,EAAgB1rE,YAAI,IAAA2rE,OAAhB,EAAJA,EAAsB3jE,cAAwC,KAE5D,EAAE6C,GAAMC,cAERq5C,EAAoB,CACxBynB,mBAAoB/nB,GACpBgoB,kBAAmBhoB,GACnBioB,4BAA6BjoB,GAC7BkoB,UAAWloB,GACXmoB,KAAMnoB,GACNO,YAAaP,GACbooB,qBAAsBpoB,GACtBqoB,mBAAoBroB,GACpBsoB,qBAAsBtoB,GACtBuoB,iBAAkBvoB,GAClBwoB,gBAAiBxoB,GACjByoB,OAAQzoB,GACR0oB,OAAQ1oB,GACR2oB,WAAY3oB,GACZ4oB,QAAS5oB,IAGL6oB,EAAgB35D,IAAO,IAAD6J,EAAA+vD,EAC1B,MAAMC,EAAW,OAAD75D,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,GAAM,QAAN+vD,EAAX/vD,EAAa5c,YAAI,IAAA2sE,OAAhB,EAADA,EAAmB3kE,cAAc4e,QAAQ,MAAO,KAEhE,OAAOu9B,EAAkByoB,EAAQ,EAG7BC,EAAeC,GACfA,GAAM,GAAKA,GAAM,GACZpoE,cAACqoE,KAAa,IACZD,EAAK,IAAMA,GAAM,GACnBpoE,cAACsoE,KAAa,IACZF,EAAK,IAAMA,GAAM,GACnBpoE,cAACuoE,KAAa,IACZH,EAAK,IAAMA,GAAM,GACnBpoE,cAACwoE,KAAa,IAEdxoE,cAACyoE,KAAa,IA8CzB,OACEtpE,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCW,cAAA,OAAKsH,UAAU,YAAWjI,SAAM,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAM1I,OAClC0E,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC5B,OAAfsnE,QAAe,IAAfA,OAAe,EAAfA,EAAiB3qE,KAAI,CAACqS,EAAG7S,KAAG,IAAA2c,EAAAuwD,EAAAj5D,EAAAk5D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,E5FogBKr6D,EA9EEy5D,E4FpeR3hE,EA8CC,OAC3BtH,eAAA,OAAemI,UAAU,WAAUjI,SAAA,CACjCW,cAAA,OAAK4H,IAAK,GAAGogE,EAAa35D,KAAMnG,IAAI,QACpC/I,eAAA,OAAKmI,UAAU,0BAAyBjI,SAAA,CACtCW,cAAA,OAAKsH,UAAU,qBAAoBjI,UAlDboH,EAoDjB,OAAD4H,QAAC,IAADA,GAAW,QAAV8J,EAAD9J,EAAGoK,gBAAQ,IAAAN,GAAM,QAANuwD,EAAXvwD,EAAa7c,YAAI,IAAAotE,OAAhB,EAADA,EAAmBplE,cAAc4e,QAAQ,KAAM,KAnD9C,YAAXzb,EACKN,EACL,mHAEkB,qBAAXM,EACFN,EACL,uHAEkB,gBAAXM,EACFN,EACL,kHAEkB,gCAAXM,EACFN,EACL,iIAEkB,eAAXM,EACFN,EACL,sHAEkB,uBAAXM,EACFN,EACL,4HAEkB,yBAAXM,EACFN,EACL,2HAEkB,sBAAXM,EACFN,EACL,qHAEkB,cAAXM,EACFN,EACL,qHAGKM,KAiBCzG,cAAA,OAAKsH,UAAU,wBAAuBjI,SAAG,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGmwC,QACzC,OAADnwC,QAAC,IAADA,GAAY,QAAXoB,EAADpB,EAAG7H,iBAAS,IAAAiJ,GAAZA,EAAcw5D,cACgB,OAA9B,OAAD56D,QAAC,IAADA,GAAY,QAAXs6D,EAADt6D,EAAG7H,iBAAS,IAAAmiE,OAAX,EAADA,EAAcM,cACZjpE,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCF,eAAA,OAAKmI,UAAU,uBAAsBjI,SAAA,CACnCW,cAAA,UAAAX,SACG8G,EACC,2HAGJhH,eAAA,QAAMmI,UAAU,0BAAyBjI,SAAA,CACrC,OAADgP,QAAC,IAADA,GAAY,QAAXu6D,EAADv6D,EAAG7H,iBAAS,IAAAoiE,OAAX,EAADA,EAAcK,aAAa,OAE9BjpE,cAAA,QACEsH,UAAW,8B5F+ZW8gE,E4F9ZnB,OAAD/5D,QAAC,IAADA,GAAY,QAAXw6D,EAADx6D,EAAG7H,iBAAS,IAAAqiE,OAAX,EAADA,EAAcI,a5F+ZhCb,GAAM,KAAOA,EAAK,GACb,oBACEA,GAAM,IAAMA,EAAK,GACnB,sBAEA,sB4Fnae/oE,SAEH8oE,EAAa,OAAD95D,QAAC,IAADA,GAAY,QAAXy6D,EAADz6D,EAAG7H,iBAAS,IAAAsiE,OAAX,EAADA,EAAcG,qBAI9B,OAAD56D,QAAC,IAADA,GAAY,QAAX06D,EAAD16D,EAAG7H,iBAAS,IAAAuiE,GAAZA,EAAcG,YAChB/pE,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAA,QAAAX,SACG8G,EACC,uI5FieoBwI,E4F9dI,OAADN,QAAC,IAADA,GAAY,QAAX26D,EAAD36D,EAAG7H,iBAAS,IAAAwiE,OAAX,EAADA,EAAcE,Y5F+dlDtzD,GAAgBtH,OAAOK,Q4F5dhB3O,cAAA,OAAKsH,UAAU,mBAAkBjI,SAC9B8G,EACC,0HA1CA3K,EA+CJ,QAGN,EC/CK2tE,OA3GmBvtD,IAAoB,IAADwtD,EAAA,IAAlB,UAAE/8C,GAAWzQ,EAC9C,MAAM,EAAEzV,GAAMC,eACPijE,EAAYC,GAAiBjrE,IAAM6D,SAAS,OAC7C,iBAAEqnE,EAAgB,oBAAEC,GAAwB1nE,qBAAWC,MAEvD,KAAEiC,EAAI,QAAEuW,GAAYC,aAASo4B,GAA6B,CAC9DpsC,UAAW,CACTiU,UAAW4R,GAEb3R,YAAa,iBAGT+uD,EAA8B,OAAJzlE,QAAI,IAAJA,GAAuB,QAAnBolE,EAAJplE,EAAM0lE,yBAAiB,IAAAN,OAAnB,EAAJA,EAAyB55D,QACtDnB,IAAC,IAAAs7D,EAAAC,EAAA,OACC,OAADv7D,QAAC,IAADA,GAAS,QAARs7D,EAADt7D,EAAG2J,cAAM,IAAA2xD,GAKR,QALQC,EAATD,EAAWn6D,QACRnB,IAAC,IAAA6J,EAAA+vD,EAAA9vD,EAAAuwD,EAAAtwD,EAAAyxD,EAAA,MACqC,aAApC,OAADx7D,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,GAAM,QAAN+vD,EAAX/vD,EAAa5c,YAAI,IAAA2sE,OAAhB,EAADA,EAAmB3kE,gBACkB,2BAApC,OAAD+K,QAAC,IAADA,GAAW,QAAV8J,EAAD9J,EAAGoK,gBAAQ,IAAAN,GAAM,QAANuwD,EAAXvwD,EAAa7c,YAAI,IAAAotE,OAAhB,EAADA,EAAmBplE,gBACkB,0BAApC,OAAD+K,QAAC,IAADA,GAAW,QAAV+J,EAAD/J,EAAGoK,gBAAQ,IAAAL,GAAM,QAANyxD,EAAXzxD,EAAa9c,YAAI,IAAAuuE,OAAhB,EAADA,EAAmBvmE,cAAwC,WAC9D,IAAAsmE,OALA,EAADA,EAKG/6D,QAAS,CAAC,IAGjB/L,qBAAU,KACHyX,GACHivD,EAAoBC,EAAwB56D,OAC9C,GACC,IAoBH,OAAI0L,EACKva,cAAC+b,GAAO,IAIf/b,cAAA,OAAKsH,UAAU,oCAAmCjI,SAC9CoqE,GAA8D,IAAnCA,EAAwB56D,OAOnD1P,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAU,wBAAuBjI,SAAA,CACpCW,cAAA,OAAKsH,UAAU,iBAAgBjI,UAjCtByqE,EAmCLL,EACGztE,KAAKqS,GAAMA,EAAE2J,OAAOnJ,SACpBL,QAAO,CAACC,EAAGpS,IAAMoS,EAAIpS,IApC7BytE,EAAM,EACT,GAAG3jE,EACD,0IACG2jE,IACL,GAAG3jE,EACD,+HAkCEhH,eAAA,OAAKmI,UAAU,kBAAiBjI,SAAA,CAC9BF,eAAA,SAAAE,SAAA,CACG8G,EACC,wHACC,OAELhH,eAAA,UAAQ7D,KAAK,iBAAiBgN,SApCpByX,IACpB,MAAMvlB,EAAQulB,EAAE3Y,OAAO5M,MACvB,GAAc,QAAVA,EAAiB,OAAO8uE,EAAc,MAC1C,MAAMS,EAAU,GAEhB,OADAA,EAAQ/iE,KAA4B,OAAvByiE,QAAuB,IAAvBA,OAAuB,EAAvBA,EAAyBj6D,QAAQnB,GAAMA,EAAE/S,MAAQd,KACvD8uE,EAAcS,EAAQ,GAAG,EA+B+B1qE,SAAA,CACnDW,cAAA,UAAQxF,MAAO,MAAM6E,SAClB8G,EACC,iHAGHsjE,EAAwBztE,KAAI,CAACqS,EAAG7S,IAC/BwE,cAAA,UAAkBxF,MAAO6T,EAAE/S,KAAK+D,SAC7BgP,EAAE/S,MADQE,cAOL,OAAf6tE,EACCrpE,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC3CoqE,EAAwBztE,KAAKqS,GAC5BrO,cAAC0mE,GAAW,CAAC1iE,KAAMqK,QAIvBrO,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC3CgqE,EAAWrtE,KAAKqS,GACfrO,cAAC0mE,GAAW,CAAC1iE,KAAMqK,WA5C3BrO,cAAA,OAAKsH,UAAU,eAAcjI,SAC1B8G,EACC,uHA3BS2jE,KA2EX,ECzGV,MAAMrW,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAwCeqsE,OAtCcpuD,IAItB,IAJuB,YAC5BgmD,EAAW,yBACXqI,EAAwB,2BACxBC,GACDtuD,EACC,MAAM,EAAEzV,GAAMC,cACd,OACEjH,eAACoiB,KAAM,CACLQ,SAAS,KACTs4C,WAAS,EACT77D,KAAMyrE,EACN3pE,QAAS4pE,EACTvQ,oBAAqBlG,GAAWp0D,SAAA,CAEhCF,eAAA,OAAKmI,UAAU,kCAAiCjI,SAAA,CAC9CW,cAAA,OAAKsH,UAAU,wCAAuCjI,SACpDW,cAAA,QAAMP,QAASyqE,EAA2B7qE,SACxCW,cAAA,KAAGo1C,MAAM,qBAGbp1C,cAAA,OAAKsH,UAAU,uCAAsCjI,SACnDW,cAAA,QAAAX,SACG,GAAc,OAAXuiE,QAAW,IAAXA,OAAW,EAAXA,EAAatmE,UAAU6K,EACzB,oIAINnG,cAAA,OAAKsH,UAAU,gDAMjBtH,cAACmpE,GAAyB,CAAC98C,UAAWu1C,EAAYriE,OAC3C,ECiME4qE,OAlNWxsE,IAAW,IAADysE,EAAAC,EAClC,MAAM,KAAE7rE,EAAI,wBAAEk8D,EAAuB,UAAEruC,EAAS,YAAEkvC,GAAgB59D,GAC5D,EAAEwI,GAAMC,eACPkkE,GAAc9nE,YAAYoX,KAC3B,KAAE5V,EAAI,QAAEuW,EAAO,QAAEsR,GAAYrR,aAASb,GAAqB,CAC/DnT,UAAW,CACT6lB,UAAWA,GAEb3R,YAAa,WACbC,6BAA6B,IAGzB0B,EAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KAJc,eASb04C,EAAUC,GAAe55D,mBAAS,KAClCqoE,EAAqBC,GAA0BtoE,mBAAS,IAEzDuoE,EAA8BA,KAClC/P,GAAwB,EAAM,EA0ChC,OACE16D,cAAAZ,WAAA,CAAAC,SACEF,eAACoiB,KAAM,CACL/iB,KAAMA,EAENgC,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,MACPgC,OAAQ,OACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAGXmB,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,oBACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SAED8G,EACC,uEAGJnG,cAACV,IAAU,CAACG,QAASgrE,EAA4BprE,SAC/CW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BuB,eAACilB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACf5c,IAAK,OACLsJ,QAAS,YACTmT,WAAY,SACZI,eAAgB,UAChBtd,SAAA,CAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SAEf5c,IAAK,OACL5B,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,OACVwL,UAAW,QACXhK,SAAA,CAEFW,cAACgiB,KAAS,CACRziB,GAAG,iBACHge,MAAOpX,EACL,yEAEF9E,QAAQ,WACR+mB,KAAK,QACLC,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpCoK,SAvHiB5I,IAC3B,MAAMlF,EAAQkF,EAAM0H,OAAO5M,OACb,kEAEJ4I,KAAK5I,IAAoB,KAAVA,IACvBshE,EAAYthE,EAEd,EAiHUA,MAAOqhE,EACPzzD,UAAU,EACVxK,MAAOi+D,EAAW,UAAY,UAGhC18D,eAAC8sB,KAAW,CAACouC,WAAS,EAACjyC,KAAK,QAAO/oB,SAAA,CACjCW,cAACksB,KAAU,CACT3sB,GAAG,2BACH3B,MAAO2sE,EAAsB,UAAY,QAAQlrE,SAEhD8G,EACC,4EAGJnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACH/E,MAAO+vE,EACPhtD,MAAOpX,EACL,0EAEFmC,SAAWyX,IAAM2qD,OApIOxrC,EAoIsBnf,EAAE3Y,OAAO5M,WAnInEgwE,EAAuBtrC,GADaA,KAoIsC,EAC9DthC,MAAO2sE,EAAsB,UAAY,QAAQlrE,SAE5C,OAAJ2E,QAAI,IAAJA,GAAuB,QAAnBomE,EAAJpmE,EAAM03D,yBAAiB,IAAA0O,GAIqB,QAJrBC,EAAvBD,EACG56D,QACC8sD,GAC4B,YAA3BA,EAAWltC,aACgB,cAA3BktC,EAAWltC,qBAA4B,IAAAi7C,OAJxC,EAAJA,EAKGruE,KAAKxB,GACLwF,cAACa,KAAQ,CAAgBrG,MAAOA,EAAM+E,GAAGF,SACtC7E,EAAMc,MADMd,EAAM+E,cAO/BS,cAACqkB,KAAa,CAAChI,MAAOA,EAAMhd,SAC1BW,cAACskB,KAAM,CACL1kB,GAAI,CACF1B,MAAO,MACPkL,QAAS,MACTxL,MAAO,OACPmC,aAAc,MACdkkB,WAAY,QAEd5iB,QAAQ,YACRzD,MAAM,UACN6B,QAASA,IA3JrBnF,iBACE,GAAIuhE,GAAY0O,EACd,IACED,EAAW,CACT9jE,UAAW,CACTxC,KAAM,CACJ,CACE+3D,aAAcwO,EACdjvE,KAAMugE,EACNxvC,UAAWA,OAKnBxI,YAAW,KACT03C,IACAkP,GAA6B,GAC5B,IACL,CAAE,MAAOvjE,GACPzC,QAAQD,MAAM,gBAAc0C,EAC9B,CAGJ,CAoI2ByjE,GACf/oD,UAAUi6C,IAAY0O,EAAmClrE,SAExD8G,EACC,wFAMT,ECvOP,MAAMykE,GAAkB,CACtBC,YAAQ,KACRC,aAAc,KACdC,QAAS,MAEXC,OAAOC,OAAOL,IC4iBCM,OAzhBAvtE,IAAW,IAADwtE,EAAAlxD,EAAAmxD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAphE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAihE,EAAAC,EACvB,MAAM,EAAE1lE,GAAMC,eACPmyC,GAAgB/1C,YAAY6yC,KAC7B,MACJhoB,EAAK,SACLC,EAAQ,aACRqwC,EAAY,iBACZmO,EAAgB,cAChBC,EAAa,oBACb/hE,EAAmB,sBACnBo/C,EAAqB,WACrB4iB,EAAU,kBACVC,EAAiB,gBACjBC,EAAe,2BACfC,EAA0B,wBAC1BC,GACEtqE,qBAAWC,KAETu0D,EAAcjpC,EAAMrxB,KAAKqS,GAC7BA,EAAE2J,OAAOC,MACN5J,IAAC,IAAA6J,EAAAC,EAAA,OACC,OAAD9J,QAAC,IAADA,OAAC,EAADA,EAAGsB,UACuB,OAAzB,OAADtB,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,OAAV,EAADA,EAAaQ,WACiB,KAA7B,OAADrK,QAAC,IAADA,GAAW,QAAV8J,EAAD9J,EAAGoK,gBAAQ,IAAAN,OAAV,EAADA,EAAaQ,aAAkB,MAEnC,IAUKna,EAAMmE,GAAWtE,IAAM6D,UAAS,IAChCmqE,EAAsB3R,GAA2Br8D,IAAM6D,UAAS,IAChEo5D,EAAmBX,GAAoBt8D,IAAM6D,UAAS,IACtDoqE,EAAgBC,GAAqBrqE,oBAAS,IAC9CsqE,EAAgBC,GAAqBvqE,oBAAS,IAC9C+nE,EAA0ByC,GAC/BxqE,oBAAS,GACLoY,EAAchM,OAAOzP,aAAaC,QAAQ,QAIzC6tE,EAAYC,KAFHtqE,cAEmBjE,IAAM6D,SApBnB,CACpB0S,KAAK,EACLM,SAAS,EACTF,UAAU,EACVH,YAAY,EACZE,MAAM,MAqED83D,GAAaC,IAAkB5qE,mBAAS,CAC7C6qE,aAAc,MAGV,KAAE/oE,GAAI,QAAEuW,GAAO,MAAE/V,GAAK,QAAEqnB,IAAYrR,aAASd,GAA0B,CAC3ElT,UAAW,CAAEiU,UAAWH,EAAa/a,GAAI+a,GACzCI,YAAa,WACbC,6BAA6B,IAGzBqyD,GAAkB,OAAJhpE,SAAI,IAAJA,IAA0B,QAAtBmnE,EAAJnnE,GAAMipE,4BAAoB,IAAA9B,OAAtB,EAAJA,EAA4B9mE,KAC1C6oE,GCzIyBC,MAAO,IAADlzD,EACnC,MAAM1a,EAAKvC,SAAS6B,aAAaC,QAAQ,QAEnC,KAACkF,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAWrR,aAASi1C,GAA2B,CACxE/0C,YAAY,eACZlU,UAAU,CAACiU,UAAWlb,MAGnB6tE,EAAgBnB,GAAoB/pE,qBACpCmrE,EAAe,OAAJrpE,QAAI,IAAJA,GAAyB,QAArBiW,EAAJjW,EAAM6W,2BAAmB,IAAAZ,OAArB,EAAJA,EAA2Bje,KAAKqS,GAAMA,EAAEyM,UACnDwyD,EAAqB,OAAPD,QAAO,IAAPA,OAAO,EAAPA,EAASvwC,OACvBywC,EAA4B,OAAXD,QAAW,IAAXA,OAAW,EAAXA,EAAatxE,KAAIqS,IAAC,CACtCuoD,OAAU,OAADvoD,QAAC,IAADA,OAAC,EAADA,EAAGuoD,OACZpY,MAAS,OAADnwC,QAAC,IAADA,OAAC,EAADA,EAAGmwC,MACXgvB,OAAQn/D,EAAEo/D,UAKb,OAHA3qE,qBAAU,KACPmpE,EAAkBsB,EAAe,GACjC,CAACvpE,IACIopE,CAAc,EDsHAD,GAEnBO,GAA2B,OAAhBR,SAAgB,IAAhBA,QAAgB,EAAhBA,GAAkBlxE,KAAKqS,GAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGuoD,UAE/C5yD,KAAM2pE,GACNpzD,QAASqzD,GACTppE,MAAOqpE,IDtImCC,EAACJ,EAAUrpE,KACvD,MAAM,KAAEL,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aACxCm1C,GACA,CACEiG,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQ8W,EACR3sE,SAAU6pE,GAAgBvmE,IAASumE,GAAgBG,SAErDrwD,YAAa,aAGjB,MAAO,CAAE1W,OAAMuW,UAAS/V,QAAOqnB,UAAS,EC2HpCiiD,CAA+BJ,GAAUV,IAE7ClqE,qBAAU,KACR,GAAIoqE,GAAkB,CACpB,MAAMc,EAAiC,OAAhBd,SAAgB,IAAhBA,QAAgB,EAAhBA,GAAkBlxE,KAAKqS,GAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGm/D,SACX,IAADS,EAA3C,GAA0B,kBAAtBD,EAAe,GACH,QAAdC,EAAA9yD,sBAAc,IAAA8yD,GAAdA,EAAgB/uE,QACd,kBACI,OAAJ6G,WAAI,IAAJA,UAAI,EAAJA,KAAMC,UAAUgoE,GAGtB,IACC,CAAChqE,KAEJlB,qBAAU,KACR,GAAIoqE,GAAkB,CAAC,IAADgB,EACpB,IAAIx+B,EAAY,CAAC,EACD,OAAhBw9B,SAAgB,IAAhBA,OAAkBiB,SAASC,IACzB,IAAIxX,EAAY,OAAHwX,QAAG,IAAHA,OAAG,EAAHA,EAAKxX,OACblnB,EAAUknB,KACblnB,EAAUknB,GAAU,CAClBA,OAAQA,EACRpY,MAAO4vB,EAAI5vB,MACXivB,MAAOW,EAAIZ,QAEf,IAGO,OAATG,SAAS,IAATA,IAAmC,QAA1BO,EAATP,GAAWU,gCAAwB,IAAAH,GAAnCA,EAAqCC,SAASC,IAC5C,IAAIxX,EAAY,OAAHwX,QAAG,IAAHA,OAAG,EAAHA,EAAKE,cACd5+B,EAAUknB,KACZlnB,EAAUknB,GAAQ2X,SAAc,OAAHH,QAAG,IAAHA,OAAG,EAAHA,EAAKG,SACpC,IAEF,IAAIC,EAAiBxD,OAAO7hD,OAAOumB,GACnCy8B,EAA2BqC,GAC3BrzD,eAAejc,QAAQ,iBAAkB6G,KAAKC,UAAUwoE,GAC1D,IACC,CAACb,MAGE,OAAJ3pE,SAAI,IAAJA,IAA4B,QAAxBiW,EAAJjW,GAAM6W,oBAAoB,UAAE,IAAAZ,GAAS,QAATmxD,EAA5BnxD,EAA8Ba,eAAO,IAAAswD,OAAjC,EAAJA,EAAuCv8D,QAAS,GAC5C,OAAJ7K,SAAI,IAAJA,IAA4B,QAAxBqnE,EAAJrnE,GAAM+W,8BAAsB,IAAAswD,GAA5BA,EAA8Bx8D,OAOhC/L,qBAAU,KAAO,IAADq4D,EAAAsT,EAAAC,EACT,OAALrhD,QAAK,IAALA,GAC+B,QAD1B8tC,EAAL9tC,EACIpV,MAAM5J,GAAgB,QAAT,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG9O,aAAY,IAAA47D,GACrB,QADqBsT,EAD/BtT,EAEInjD,cAAM,IAAAy2D,GAEP,QAFOC,EAFVD,EAEYj/D,QACPnB,GAAgB,SAAT,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG9O,KAA0B,SAAT,OAAD8O,QAAC,IAADA,OAAC,EAADA,EAAG9O,KAA0B,SAAT,OAAD8O,QAAC,IAADA,OAAC,EAADA,EAAG9O,aACjD,IAAAmvE,GAJHA,EAKI1yE,KAAK2yE,GACE7C,EAAiB,IACnBC,EACH,CAAC4C,EAAEpvE,IAAKovE,EAAEnoE,UAAU8Q,UAEtB,GACH,IAEHxU,qBAAU,KACG,IAAD8rE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAANlrE,KACFspB,EAAa,OAAJtpB,SAAI,IAAJA,QAAI,EAAJA,GAAMuqB,sBACf1vB,aAAaK,QAAQ,KAAU,OAAJ8E,SAAI,IAAJA,IAAuB,QAAnB4qE,EAAJ5qE,GAAMq1B,eAAe,UAAE,IAAAu1C,OAAnB,EAAJA,EAAyBrvE,IACpDV,aAAaK,QAAQ,aAAkB,OAAJ8E,SAAI,IAAJA,IAAuB,QAAnB6qE,EAAJ7qE,GAAMq1B,eAAe,UAAE,IAAAw1C,OAAnB,EAAJA,EAAyB7hD,KAC5DnuB,aAAaK,QAAQ,cAAmB,OAAJ8E,SAAI,IAAJA,IAAuB,QAAnB8qE,EAAJ9qE,GAAMq1B,eAAe,UAAE,IAAAy1C,OAAnB,EAAJA,EAAyBxzE,MAC7DuD,aAAaK,QAAQ,YAAiB,OAAJ8E,SAAI,IAAJA,IAAuB,QAAnB+qE,EAAJ/qE,GAAMq1B,eAAe,UAAE,IAAA01C,OAAnB,EAAJA,EAAyBt1C,YAC3D56B,aAAaK,QAAQ,WAAgB,OAAJ8E,SAAI,IAAJA,IAAuB,QAAnBgrE,EAAJhrE,GAAMq1B,eAAe,UAAE,IAAA21C,OAAnB,EAAJA,EAAyBt1C,UAC1D76B,aAAaK,QAAQ,SAAc,OAAJ8E,SAAI,IAAJA,IAAuB,QAAnBirE,EAAJjrE,GAAMq1B,eAAe,UAAE,IAAA41C,OAAnB,EAAJA,EAAyBx0C,iBACxD57B,aAAaK,QAAQ,UAAe,OAAJ8E,SAAI,IAAJA,IAAuB,QAAnBkrE,EAAJlrE,GAAMq1B,eAAe,UAAE,IAAA61C,OAAnB,EAAJA,EAAyB1gC,UAC3D,GACC,CAACxqC,KAEJ,MAcMmrE,GAAkBA,KAAO,IAADC,EAAAC,EAAAC,EAAAC,EAC5B,MAAO,CACL36D,IAAU,OAALyY,QAAK,IAALA,OAAK,EAALA,EAAOxe,OACZkG,KAAW,OAALsY,QAAK,IAALA,GAA4C,QAAvC+hD,EAAL/hD,EAAO7d,QAAQnB,GAAmB,YAAZ,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGZ,iBAAoB,IAAA2hE,OAAvC,EAALA,EAA8CvgE,OACpDsG,KAAW,OAALkY,QAAK,IAALA,GAA0C,QAArCgiD,EAALhiD,EAAO7d,QAAQnB,GAAmB,UAAZ,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGZ,iBAAkB,IAAA4hE,OAArC,EAALA,EAA4CxgE,OAClDiG,UAAgB,OAALuY,QAAK,IAALA,GAAuC,QAAlCiiD,EAALjiD,EAAO7d,QAAQnB,GAAmB,OAAZ,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGZ,iBAAe,IAAA6hE,OAAlC,EAALA,EAAyCzgE,OACpDoG,QAAc,OAALoY,QAAK,IAALA,GAAqD,QAAhDkiD,EAALliD,EAAO7d,QAAQnB,IAAC,IAAAmhE,EAAA,OAA+B,KAAzB,OAADnhE,QAAC,IAADA,GAAa,QAAZmhE,EAADnhE,EAAGghB,kBAAU,IAAAmgD,OAAZ,EAADA,EAAevY,OAAgB,WAAC,IAAAsY,OAAhD,EAALA,EAAuD1gE,OACjE,EAGG4gE,GAASA,KACb,GAAkC,MAAnB,OAAX5C,SAAW,IAAXA,QAAW,EAAXA,GAAaE,cACf,OAzBY,OAAVJ,QAAU,IAAVA,KAAYz3D,QACF,OAALmY,QAAK,IAALA,OAAK,EAALA,EAAO7d,QAAQnB,GAAmB,UAAZ,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGZ,UACZ,OAAVk/D,QAAU,IAAVA,KAAY53D,KACT,OAALsY,QAAK,IAALA,OAAK,EAALA,EAAO7d,QAAQnB,GAAmB,YAAZ,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGZ,UACZ,OAAVk/D,QAAU,IAAVA,KAAY93D,WACT,OAALwY,QAAK,IAALA,OAAK,EAALA,EAAO7d,QAAQnB,GAAmB,OAAZ,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGZ,UACZ,OAAVk/D,QAAU,IAAVA,KAAY33D,SACT,OAALqY,QAAK,IAALA,OAAK,EAALA,EAAO7d,QAAQnB,IAAC,IAAAqhE,EAAA,OAA+B,KAAzB,OAADrhE,QAAC,IAADA,GAAa,QAAZqhE,EAADrhE,EAAGghB,kBAAU,IAAAqgD,OAAZ,EAADA,EAAezY,OAAgB,IAEpD5pC,EAiBF,CACL,IAAIsiD,EAAY,IAAItiD,GACpB,OAAgB,OAATsiD,QAAS,IAATA,OAAS,EAATA,EAAWngE,QAAQhU,IAAG,IAAAo0E,EAAAC,EAAA,OACxB,OAAHr0E,QAAG,IAAHA,GAAS,QAANo0E,EAAHp0E,EAAKF,YAAI,IAAAs0E,GAAe,QAAfC,EAATD,EAAWtsE,qBAAa,IAAAusE,OAArB,EAAHA,EAA0BjpD,SAAoB,OAAXimD,SAAW,IAAXA,QAAW,EAAXA,GAAaE,aAAa,GAEjE,GAQI7C,IANW7rE,IAAMg6B,SAMY6xC,KACjCwC,GAA6BzC,EAAyB,GAGlD6F,GAAmBC,IAErBnD,GADa,WAAXmD,EACW,CACX76D,SAAS,EACTF,UAAU,EACVH,YAAY,EACZE,MAAM,EACNH,KAAK,GAEa,cAAXm7D,EACI,CACX76D,SAAS,EACTF,UAAU,EACVH,YAAY,EACZE,MAAM,EACNH,KAAK,GAEa,YAAXm7D,EACI,CACX76D,SAAS,EACTL,YAAY,EACZG,UAAU,EACVD,MAAM,EACNH,KAAK,GAEa,QAAXm7D,EACI,CACX76D,SAAS,EACTF,UAAU,EACVH,YAAY,EACZD,KAAK,EACLG,MAAM,GAGK,CACXG,SAAS,EACTF,UAAU,EACVH,YAAY,EACZD,KAAK,EACLG,MAAM,IAGVw3D,GAAkB,EAAM,EAS1B,OAAI/nE,GAEAxE,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEf1U,UAAU,QACVM,IAAI,iEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAMZuS,GACKva,cAAC+b,GAAO,IAIf5c,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BF,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCW,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCW,cAAA,OACE4H,IAAS,OAAJ5D,SAAI,IAAJA,IAA0B,QAAtBsnE,EAAJtnE,GAAMipE,4BAAoB,IAAA3B,OAAtB,EAAJA,EAA4Bt+C,IACjC1lB,UAAU,eACVY,IAAI,OACJhK,MAAM,MACNgC,OAAO,UAGXf,eAAA,OAAKmI,UAAU,0CAAyCjI,SAAA,CACtDW,cAAA,OAAKsH,UAAU,8BAA6BjI,SAC1CW,cAACqmE,GAAsB,CAACriE,KAAU,OAAJA,SAAI,IAAJA,QAAI,EAAJA,GAAMipE,yBAEtC9tE,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CF,eAAA,OAAKmI,UAAU,8CAA6CjI,SAAA,CAC1DW,cAAA,OAAKsH,UAAU,kCAAiCjI,SAC7C8G,EAAE,6CAGJ1H,QAAQ63D,GACPt2D,cAAA,UAEAb,eAAA,OACEmI,UAAU,oCACV7H,QAASA,IAAM8sE,GAAmBD,GAAgBjtE,SAAA,CAElDW,cAAA,QAAMsH,UAAW,iCAAiCjI,SAC/CoV,GAAgBk4D,EAAYwC,KAAmBhpE,KAElDnG,cAAA,QAAMsH,UAAU,iCAAgCjI,SAC9CW,cAAA,KAAGsH,UAAU,qBAKnBtH,cAAA,OACEsH,UAAW,IACTglE,EACI,4BACA,8BACHjtE,SAEHF,eAAA,QAAMmI,UAAU,oBAAmBjI,SAAA,CACjCF,eAAA,OACEmI,UAAU,wBACV7H,QAASA,IAAMqwE,GAAgB,OAAOzwE,SAAA,CAErC8G,EACC,6FACA,IACiB,QAAlBolE,EAAC4D,YAAiB,IAAA5D,OAAA,EAAjBA,EAAmB32D,IAAI,OAE3BzV,eAAA,OACEmI,UAAU,wBACV7H,QAASA,IAAMqwE,GAAgB,WAAWzwE,SAAA,CAEzC8G,EACC,mGACA,IACiB,QAAlBqlE,EAAC2D,YAAiB,IAAA3D,OAAA,EAAjBA,EAAmBr2D,KAAK,OAE5BhW,eAAA,OACEmI,UAAU,0BACV7H,QAASA,IAAMqwE,GAAgB,QAAQzwE,SAAA,CAEtC8G,EACC,8FACA,IACiB,QAAlBslE,EAAC0D,YAAiB,IAAA1D,OAAA,EAAjBA,EAAmB12D,KAAK,OAE5B5V,eAAA,OACEmI,UAAU,wBACV7H,QAASA,IAAMqwE,GAAgB,YAAYzwE,SAAA,CAE1C8G,EACC,iGACA,IACiB,QAAlBulE,EAACyD,YAAiB,IAAAzD,OAAA,EAAjBA,EAAmBz2D,QAAQ,OAE/B9V,eAAA,OACEmI,UAAU,sBACV7H,QAASA,IAAMqwE,GAAgB,cAAczwE,SAAA,CAE5C8G,EACC,uGACA,IACiB,QAAlBwlE,EAACwD,YAAiB,IAAAxD,OAAA,EAAjBA,EAAmB72D,UAAU,YAKrC9U,cAAA,OAAKsH,UAAU,oCAAmCjI,SAChDW,cAAA,QAAMsH,UAAU,gCAA+BjI,SAC7CW,cAAA,SACEwI,KAAK,OACLlB,UAAU,GACVe,YAAalC,EACX,+FAEF7K,KAAK,eACLd,MAAkB,OAAXqyE,SAAW,IAAXA,QAAW,EAAXA,GAAaE,aACpBzkE,SA/PM5I,IACtB,MAAM,KAAEpE,EAAI,MAAEd,GAAUkF,EAAM0H,OAC9B0lE,GAAe,IAAKD,GAAa,CAACvxE,GAAOd,GAAQ,QAiQnB,OAAnBwP,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCylE,YACrChwE,cAACy6D,GAAiB,CAChBC,wBAAyBA,EACzBC,iBAAkBA,IAElB,QAEc,OAAnB3wD,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCylE,WACrC9wE,eAAA,OAAKmI,UAAU,oCAAmCjI,SAAA,CAChDW,cAAA,OAAKsH,UAAU,gBAAejI,SAC5BF,eAAA,QAAMmI,UAAU,wBAAuBjI,SAAA,CACrCW,cAAA,UACEwI,KAAK,OACLlB,UAAU,cACV7H,QAASA,IAAMgtE,GAAmBD,GAAgBntE,SAElDW,cAAA,QAAAX,SACG8G,EACC,sGAINnG,cAAA,QACEsH,UAAU,iCACV7H,QAASA,IAAMgtE,GAAmBD,GAAgBntE,SAElDW,cAAA,KAAGsH,UAAU,uBAKnBtH,cAAA,OACEsH,UAAW,IACTklE,EACI,4BACA,8BACHntE,SAEHF,eAAA,QAAMmI,UAAU,oBAAmBjI,SAAA,CACb,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EAAsCylE,SACrClwE,cAAA,OACEsH,UAAU,uBACV7H,QAASA,KApX7Bk+D,GAAa,GACb8O,GAAkB,EAoXqB,EACjBptE,SAED8G,EACC,8GAGF,KAUgB,OAAnB6D,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,GAApCA,EAAsCylE,SACrCnwE,cAAA,OACEsH,UAAU,qCACV7H,QAASyqE,GAA2B7qE,SAEnC8G,EACC,yGAGF,aAIR,cAKU,OAAnB6D,QAAmB,IAAnBA,GAAoC,QAAjBW,EAAnBX,EAAqBc,uBAAe,IAAAH,GAApCA,EAAsC0Q,KACrClc,eAAA,OAAKmI,UAAU,4BAA4B7H,QArZ9B2wE,KACjB7D,GAAkB,GAClBE,GAAkB,EAAM,EAmZ2CptE,SAAA,CApc7CgxE,MAAO,IAADC,EAAAC,EAAAC,EAC5B3xE,aAAagM,WAAW,SACxB,MAAM4lE,EAAa,GACb98B,EAAOtmB,EAAM,QAMQ7tB,KAJrB,OAAJm0C,QAAI,IAAJA,GAAY,QAAR28B,EAAJ38B,EAAM37B,cAAM,IAAAs4D,GAIX,QAJWC,EAAZD,EAAcr4D,MACXqG,IAAC,IAAAoyD,EAAAC,EAAA,OACoC,MAApC3zE,SAAU,OAADshB,QAAC,IAADA,GAAW,QAAVoyD,EAADpyD,EAAG7F,gBAAQ,IAAAi4D,OAAV,EAADA,EAAah4D,WACkB,IAAxC1b,SAAU,OAADshB,QAAC,IAADA,GAAW,QAAVqyD,EAADryD,EAAG7F,gBAAQ,IAAAk4D,OAAV,EAADA,EAAah4D,aAAmB,WAC5C,IAAA43D,GAAW,QAAXC,EAJDD,EAIG/pE,iBAAS,IAAAgqE,OAJR,EAAJA,EAIc5iE,QAIT,OAALyf,QAAK,IAALA,KAAOrxB,KAAKqS,IAAO,IAADs7D,EAAAiH,EAAAC,EAAAC,EAChB,OAAOL,EAAWzpE,KAAK,CACrByG,OAAS,OAADY,QAAC,IAADA,GAAS,QAARs7D,EAADt7D,EAAG2J,cAAM,IAAA2xD,GAIhB,QAJgBiH,EAATjH,EAAW1xD,MAChBqG,IAAC,IAAAyyD,EAAAC,EAAA,OACoC,MAApCh0E,SAAU,OAADshB,QAAC,IAADA,GAAW,QAAVyyD,EAADzyD,EAAG7F,gBAAQ,IAAAs4D,OAAV,EAADA,EAAar4D,WACkB,IAAxC1b,SAAU,OAADshB,QAAC,IAADA,GAAW,QAAV0yD,EAAD1yD,EAAG7F,gBAAQ,IAAAu4D,OAAV,EAADA,EAAar4D,aAAmB,WAC5C,IAAAi4D,GAAW,QAAXC,EAJOD,EAILpqE,iBAAS,IAAAqqE,OAJH,EAADA,EAIMjjE,OACdtS,KAAO,OAAD+S,QAAC,IAADA,OAAC,EAADA,EAAGmwC,MACTj/C,GAAK,OAAD8O,QAAC,IAADA,OAAC,EAADA,EAAG9O,GACPihD,SAAW,OAADnyC,QAAC,IAADA,OAAC,EAADA,EAAG/S,KACb8zB,YAAc,OAAD/gB,QAAC,IAADA,GAAa,QAAZyiE,EAADziE,EAAGghB,kBAAU,IAAAyhD,OAAZ,EAADA,EAAe1hD,aAC5B,IAIC,OAAL/B,QAAK,IAALA,KAAOrxB,KAAKqS,IAAO,IAAD4iE,EAChB,OAAiB,OAAVR,QAAU,IAAVA,OAAU,EAAVA,EAAYzpE,KAAK,CACtB1L,KAAO,OAAD+S,QAAC,IAADA,OAAC,EAADA,EAAGmwC,MACTj/C,GAAK,OAAD8O,QAAC,IAADA,OAAC,EAADA,EAAG9O,GACPuvB,UAAY,OAADzgB,QAAC,IAADA,OAAC,EAADA,EAAGy6C,UACdr7C,OAAS,OAADY,QAAC,IAADA,OAAC,EAADA,EAAGZ,OACX+yC,SAAW,OAADnyC,QAAC,IAADA,OAAC,EAADA,EAAG/S,KACb8zB,YAAc,OAAD/gB,QAAC,IAADA,GAAa,QAAZ4iE,EAAD5iE,EAAGghB,kBAAU,IAAA4hD,OAAZ,EAADA,EAAe7hD,aAC5B,IAGNvwB,aAAaK,QAAQ,QAAS6G,KAAKC,UAAUyqE,GAAY,EA8ZlDJ,CAAgBZ,MACR,QADiB7D,EACzB6D,YAAQ,IAAA7D,GACoB,QADpBC,EAARD,EACGp8D,QAAQnB,GAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGsB,iBAAQ,IAAAk8D,OADpB,EAARA,EAEG7vE,KAAI,CAACsmB,EAAM9mB,IACXwE,cAACqb,GAAI,CAEHrX,KAAMse,EACNpI,QAAa,OAAJlW,SAAI,IAAJA,QAAI,EAAJA,GAAMipE,qBACfiE,WAAgB,OAAJltE,SAAI,IAAJA,QAAI,EAAJA,GAAM6W,qBAHbrf,QAOX,KACJwE,cAAC++D,GAAiB,CAAC6C,YAAiB,OAAJ59D,SAAI,IAAJA,QAAI,EAAJA,GAAMipE,uBACtCjtE,cAACgqE,GAAoB,CACnBC,yBAA0BA,EAC1BC,2BAA4BA,GAC5BtI,YAAiB,OAAJ59D,SAAI,IAAJA,QAAI,EAAJA,GAAMipE,uBAErBjtE,cAACmqE,GAAgB,CACf3rE,KAAM6tE,EACN3R,wBAAyBA,EACzBruC,UAAW/R,EACXihD,YAAa1vC,KAEf7rB,cAACk7D,GAAa,CACZ7tC,MAAW,OAAJrpB,SAAI,IAAJA,QAAI,EAAJA,GAAMuqB,qBACblC,UAAW/R,EACXghD,kBAAmBA,EACnBX,iBAAkBA,EAClBY,YAAa1vC,OAEX,EEjjBK,SAASslD,KACtB,OACEnxE,cAAAZ,WAAA,CAAAC,SACIW,cAAA,iBACIS,MAAO,CACPvC,MAAO,OAEP0J,IAAI,4DACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,KAIpB,C,mECqTeopE,OAlTHx1D,IAAkC,IAADy1D,EAAA9mE,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAAhC,KAAE2X,EAAI,KAAEu1C,EAAI,YAAE+J,GAAahmD,EACtC,MAAM,EAAEzV,GAAMC,eACP6iE,EAAcqI,GAAmBjzE,IAAM6D,SAC9B,QADsCmvE,EACpD/uD,EAAK9b,iBAAS,IAAA6qE,OAAA,EAAdA,EAAgBpI,eAEXsI,EAAOC,GAAYtvE,oBAAS,IAC5BuvE,EAAQC,GAAaxvE,oBAAS,IAC9ByvE,EAASC,GAAc1vE,oBAAS,IAChC2vE,EAAMC,GAAW5vE,oBAAS,IAC1B4C,EAAM+9D,GAAWxkE,IAAM6D,UAAS,IACjC,eAAE6vE,EAAc,aAAE3U,EAAY,oBAAEpzD,GACpClI,qBAAWC,KA4BbzH,eAAe4iB,EAAOxd,SACdw3D,KAAKC,KAAK,CACdn5C,MAAO7X,EAAE,+CACT8P,KAAM9P,EAAE,8CACRixD,KAAM,OACN4a,kBAAkB,EAClBC,mBAAoB,UACpBC,kBAAmB,OACnBC,kBAAmBhsE,EACjB,6DAEDO,MAAM1D,IACP,GAAIA,EAAOovE,YAET,OADAvP,GAAQ,GACAnjE,GACN,KAAK,EACE6xE,IACHc,EAAK,QAAS,GACdb,GAAUD,IAEZ,MACF,KAAK,EACCA,IACFc,EAAK,UAAW,GAChBb,GAAS,IAEX,MACF,KAAK,EACEC,IACHC,GAAU,GACVE,GAAW,GACXE,GAAQ,GACRO,EAAK,SAAU,IAEjB,MACF,KAAK,EACEV,IACHD,GAAU,GACVE,GAAW,GACXE,GAAQ,GACRO,EAAK,UAAW,IAElB,MACF,KAAK,EACER,IACHH,GAAU,GACVE,GAAW,GACXE,GAAQ,GACRO,EAAK,OAAQ,IAKrB,GAEJ,CAEA,SAASA,EAAK3yE,EAAOwd,GACnB,OAAO,IAAI8J,SAAQ,KACjBnD,YAAW,KACTg0C,EAAKv1C,EAAM5iB,EAAOwd,EAAQoF,EAAK7J,SAASE,aAAa,GACpD,IAAK,GAEZ,CA1FA7V,qBAAU,KAAO,IAADwvE,EACd,OAAQhwD,EAAK9b,UAAU8nD,MACrB,IAAK,SACHojB,GAAU,GACVE,GAAW,GACXE,GAAQ,GACR,MACF,IAAK,UACHJ,GAAU,GACVE,GAAW,GACXE,GAAQ,GACR,MACF,IAAK,OACHJ,GAAU,GACVE,GAAW,GACXE,GAAQ,GACR,MACF,QACE,OAAO,EAEXN,EAA0C,WAA7B,OAAJlvD,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiBt5D,aAAuC,GAChE,CAACsJ,IAEJxf,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IAwGlB,OACE5yE,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BF,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,OAAKo1C,MAAM,cAAa/1C,SACtBW,cAAA,QAAAX,SAhBuBkzE,MAC7B,MAAMC,EAAmC,kBAAX,OAAJlwD,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,MAAwB,OAAJgnB,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,KAAO,GACjE,MAC+B,qBAA7Bk3E,EAAWlvE,eACkB,oBAA7BkvE,EAAWlvE,cAEJ6C,EAAE,gEAEFqsE,CACT,EAOaD,OAETpzE,eAAA,OAAKmI,UAAU,YAAWjI,SAAA,CACxBW,cAAA,OAAKsH,UAAU,YAAWjI,SACvB4pE,GAAgB9pE,eAAA,QAAAE,SAAA,CAAO4pE,EAAa,SAEvCjpE,cAAA,QACEsH,UACG2hE,EAEGA,EAAe,GACf,8BACA,wBAHA,gCAIL5pE,SAEC4pE,EAAsBA,EAAe,GACrCjpE,cAACyyE,KAAe,IACdxJ,EAAe,GACjBjpE,cAACyoE,KAAa,IACZQ,EAAe,GACjBjpE,cAACwoE,KAAa,IACZS,EAAe,GACjBjpE,cAACuoE,KAAa,IACZU,EAAe,GACjBjpE,cAAC0yE,KAAa,IACZzJ,EAAe,GACjBjpE,cAAC2yE,KAAa,IACZ1J,EAAe,GACjBjpE,cAACqoE,KAAa,IAEdroE,cAAC4yE,KAAgB,IAfF,UAoBrB5yE,cAAA,OAAKsH,UAAU,cAAajI,SAC1BW,cAAA,QAAMsH,UAAU,kBAAiBjI,SAC/BW,cAAA,KAAGo1C,MAAM,uBAMfj2C,eAAA,OAAKmI,UAAW,oBAAkBxC,GAAO,uBAA+BzF,SAAA,CACtEW,cAAA,OAAKsH,UAAU,gBAAejI,SAC5BW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IAAK2pE,EAAQpyB,GAAqBA,GAClCj3C,IAAI,OACJhK,MAAM,KACNgC,OAAO,WAIbf,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCW,cAAA,OACEsH,UAAU,kBACV7H,UACqC,QAAnC8K,EAAAP,EAAoBc,uBAAe,IAAAP,IAAnCA,EAAqCsoE,cACjC,MACE31D,EAAO,EAAE,GAGhB7d,SAEDW,cAAA,OAAKsH,UAAWiqE,EAAQ,YAAc,SAASlyE,SAC7CW,cAAA,QAAAX,SACG8G,EAAE,8DAKTnG,cAAC+d,KAAO,CACNC,MAAO7X,EAAE,2DAA2D9G,SAEpEW,cAAA,OACEsH,UAAU,kBACV7H,UACqC,QAAnC+K,EAAAR,EAAoBc,uBAAe,IAAAN,IAAnCA,EAAqCqoE,cACjC,MACE31D,EAAO,EAAE,GAGhB7d,SAEDW,cAAA,OAAKsH,UAAYiqE,EAAsB,SAAd,YAAuBlyE,SAC7C8G,EAAE,+DAObnG,cAAA,OAAKsH,UAAU,gBAAejI,WAAEyF,GAAO9E,cAACmxE,GAAe,MAGvDhyE,eAAA,OACEmI,UAAW,wBAAsBxC,GAAO,uBAA+BzF,SAAA,CAEvEW,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCW,cAAA,QAAAX,SACG8G,EAAE,gEAGPnG,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OACEsH,UAAWiqE,EAAQ,uBAAyB,uBAAuBlyE,SAEnEW,cAAA,QAAMsH,UAAU,gBAAejI,SArJTyzE,MAAO,IAADC,EAAAC,EACpC,MAAMC,EACoC,kBAA7B,OAAJ3wD,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiBG,aAChB,OAAJ5wD,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiBE,YACjB,GAEN,MAAmC,UAA/BD,EAAa3vE,cACR6C,EAAE,wDAC+B,YAA/B8sE,EAAa3vE,cACf6C,EAAE,mDAC+B,WAA/B8sE,EAAa3vE,cACf6C,EAAE,qDAC+B,YAA/B8sE,EAAa3vE,cACf6C,EAAE,kDAC+B,SAA/B8sE,EAAa3vE,cACf6C,EAAE,mDAC+B,mBAA/B8sE,EAAa3vE,cACf6C,EAAE,wDAC+B,SAA/B8sE,EAAa3vE,cACf6C,EAAE,mDAEF8sE,CACT,EA+HyCH,YAMvC3zE,eAAA,OAAKmI,UAAW,eAAaxC,GAAO,uBAA+BzF,SAAA,CACjEW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAO8G,EAAE,uDAEXhH,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAA,QACEsH,UAAWmqE,EAAS,wBAA0B,qBAC9ChyE,UACqC,QAAnCgL,EAAAT,EAAoBc,uBAAe,IAAAL,IAAnCA,EAAqCooE,cACjC,MACE31D,EAAO,EAAE,GAGhB7d,SAEA8G,EAAE,uDAELnG,cAAA,QACEsH,UAAWqqE,EAAU,qBAAuB,kBAC5ClyE,UACqC,QAAnCiL,EAAAV,EAAoBc,uBAAe,IAAAJ,IAAnCA,EAAqCmoE,cACjC,MACE31D,EAAO,EAAE,GAGhB7d,SAEAmV,GAAkBotD,EAAYriE,GAAI4G,KAErCnG,cAAA,QACEsH,UAAWuqE,EAAO,sBAAwB,mBAC1CpyE,UACqC,QAAnCkL,EAAAX,EAAoBc,uBAAe,IAAAH,IAAnCA,EAAqCkoE,cACjC,MACE31D,EAAO,EAAE,GAGhB7d,SAEA8G,EAAE,6DAIL,ECrEKirE,OApPHx1D,IAAqB,IAAD02D,EAAA,IAAnB,KAAEhwD,EAAI,KAAEu1C,GAAMj8C,EACzB,MAAO21D,EAAOC,GAAYtvE,oBAAS,IAC5BuvE,EAAQC,GAAaxvE,oBAAS,IAC9ByvE,EAASC,GAAc1vE,oBAAS,IAChC2vE,EAAMC,GAAW5vE,oBAAS,IAC1B4C,EAAM+9D,GAAWxkE,IAAM6D,UAAS,IACjC,EAAEiE,GAAMC,eACR,eAAE2rE,EAAc,aAAE3U,EAAY,oBAAEpzD,GACpClI,qBAAWC,KAiCbzH,eAAe4iB,EAAOxd,SACdw3D,KAAKC,KAAK,CACdn5C,MAAO7X,EAAE,+CACT8P,KAAM9P,EAAE,8CACRixD,KAAM,OACN4a,kBAAkB,EAClBC,mBAAoB,UACpBC,kBAAmB,OACnBC,kBAAmBhsE,EACjB,6DAEDO,MAAM1D,IACP,GAAIA,EAAOovE,YAET,OADAvP,GAAQ,GACAnjE,GACN,KAAK,EACE6xE,IACHc,EAAK,QAAS,GACdb,GAAUD,IAEZ,MACF,KAAK,EACCA,IACFc,EAAK,UAAW,GAChBb,GAAS,IAEX,MACF,KAAK,EACEC,IACHC,GAAU,GACVE,GAAW,GACXE,GAAQ,GACRO,EAAK,SAAU,IAEjB,MACF,KAAK,EACEV,IACHD,GAAU,GACVE,GAAW,GACXE,GAAQ,GACRO,EAAK,SAAU,IAEjB,MACF,KAAK,EACER,IACHH,GAAU,GACVE,GAAW,GACXE,GAAQ,GACRO,EAAK,OAAQ,IAKrB,GAEJ,CAEA,SAASA,EAAK3yE,EAAOwd,GACnB,OAAO,IAAI8J,SAAQ,KACjBnD,YAAW,KACTg0C,EAAKv1C,EAAM5iB,EAAOwd,EAAQoF,EAAK7J,SAASE,aAAa,GACpD,IAAK,GAEZ,CA/FA7V,qBAAU,KAAO,IAADuuE,EACd,OAAQ/uD,EAAK9b,UAAU8nD,MACrB,IAAK,SACHojB,GAAU,GACVE,GAAW,GACXE,GAAQ,GACR,MACF,IAAK,SAKL,IAAK,UACHJ,GAAU,GACVE,GAAW,GACXE,GAAQ,GACR,MACF,IAAK,OACHJ,GAAU,GACVE,GAAW,GACXE,GAAQ,GACR,MACF,QACE,OAAO,EAEXN,EAA0C,WAA7B,OAAJlvD,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiBr4D,aAAuC,GAChE,CAACsJ,IAEJxf,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IA8FlB,OACE5yE,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BF,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,OAAKo1C,MAAM,cAAa/1C,SACtBW,cAAA,QAAAX,SAhBuBkzE,MAC7B,MAAMY,EAAkC,iBAAV,OAAJ7wD,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,MAAmBgnB,EAAKhnB,KAAO,GAC/D,MACgC,sBAApB,OAAV63E,QAAU,IAAVA,OAAU,EAAVA,EAAY7vE,gBACkB,qBAApB,OAAV6vE,QAAU,IAAVA,OAAU,EAAVA,EAAY7vE,eAEL6C,EAAE,gEAEFgtE,CACT,EAOaZ,OAETvyE,cAAA,OAAKsH,UAAU,cAAajI,SAC1BW,cAAA,QAAMsH,UAAU,kBAAiBjI,SAC/BW,cAAA,KAAGo1C,MAAM,uBAMfj2C,eAAA,OAAKmI,UAAW,oBAAkBxC,GAAO,uBAA+BzF,SAAA,CACtEW,cAAA,OAAKsH,UAAU,gBAAejI,SAC5BW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IAAK2pE,EAAQpyB,GAAqBA,GAClCj3C,IAAI,OACJhK,MAAM,KACNgC,OAAO,WAIbf,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCW,cAAA,OACEsH,UAAU,kBACV7H,QAASA,KACPyd,EAAO,EAAE,EACT7d,SAEFW,cAAA,OAAKsH,UAAWiqE,EAAQ,YAAc,SAASlyE,SAC5C8G,EAAE,4DAIPnG,cAAC+d,KAAO,CACNC,MAAO7X,EAAE,2DAA2D9G,SAEpEW,cAAA,OACEsH,UAAU,kBACV7H,QAASA,KACPyd,EAAO,EAAE,EACT7d,SAEFW,cAAA,OAAKsH,UAAYiqE,EAAsB,SAAd,YAAuBlyE,SAC7C8G,EAAE,+DAObnG,cAAA,OAAKsH,UAAU,gBAAejI,WAAEyF,GAAO9E,cAACmxE,GAAe,MAGvDhyE,eAAA,OACEmI,UAAW,wBAAsBxC,GAAO,uBAA+BzF,SAAA,CAEvEW,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCW,cAAA,QAAAX,SACG8G,EAAE,gEAGPnG,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OACEsH,UAAWiqE,EAAQ,uBAAyB,uBAAuBlyE,SAEnEW,cAAA,QAAMsH,UAAU,gBAAejI,SAhGT+zE,KAC9B,MAAMH,EAAsC,kBAAhBG,EAA2BA,EAAc,GACrE,MAAoC,WAApB,OAAZH,QAAY,IAAZA,OAAY,EAAZA,EAAc3vE,eACT6C,EAAE,wDACgC,UAApB,OAAZ8sE,QAAY,IAAZA,OAAY,EAAZA,EAAc3vE,eAChB6C,EAAE,mDACgC,oBAApB,OAAZ8sE,QAAY,IAAZA,OAAY,EAAZA,EAAc3vE,eAChB6C,EAAE,wDACgC,aAApB,OAAZ8sE,QAAY,IAAZA,OAAY,EAAZA,EAAc3vE,eAChB6C,EAAE,mDAEF8sE,CACT,EAqFWI,CAA2B,OAAJ/wD,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiBY,sBAOjD/zE,eAAA,OAAKmI,UAAW,eAAaxC,GAAO,uBAA+BzF,SAAA,CACjEW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAO8G,EAAE,uDAEXhH,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAA,QACEsH,UAAWmqE,EAAS,wBAA0B,qBAC9ChyE,QAASA,KACPyd,EAAO,EAAE,EACT7d,SAED8G,EAAE,uDAELnG,cAAA,QACEsH,UAAWqqE,EAAU,qBAAuB,kBAC5ClyE,QAASA,KACPyd,EAAO,EAAE,EACT7d,SAED8G,EAAE,oDAELnG,cAAA,QACEsH,UAAWuqE,EAAO,sBAAwB,mBAC1CpyE,QAASA,KACPyd,EAAO,EAAE,EACT7d,SAED8G,EAAE,6DAIL,EC3OI8c,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KALc,cCFb,MAAMmwD,GAA2BrK,GACjCA,GAAiC,IAAjBA,EAEVA,GAAgB,KAAOA,GAAgB,GACzC,wBACEA,GAAgB,IAAMA,GAAgB,GACxC,4BACEA,GAAgB,IAAMA,GAAgB,EACxC,mCADF,EALE,gCAUEsK,GAAsBtK,IACjC,GAAKA,GAAiC,IAAjBA,EAEd,IAAIA,EAAe,GACxB,OAAOjpE,cAACyyE,KAAe,IAClB,GAAIxJ,EAAe,GACxB,OAAOjpE,cAACyoE,KAAa,IAChB,GAAIQ,EAAe,GACxB,OAAOjpE,cAACwoE,KAAa,IAChB,GAAIS,EAAe,GACxB,OAAOjpE,cAACuoE,KAAa,IAChB,GAAIU,EAAe,GACxB,OAAOjpE,cAAC0yE,KAAa,IAChB,GAAIzJ,EAAe,GACxB,OAAOjpE,cAAC2yE,KAAa,IAChB,GAAI1J,EAAe,GACxB,OAAOjpE,cAACqoE,KAAa,IAChB,GAAIY,EAAe,GACxB,OAAOjpE,cAAC4yE,KAAgB,GAC1B,QC1Ca,wuZCgeAY,OA3cC53D,IAA0D,IAADy1D,EAAAiB,EAAAS,EAAAC,EAAAS,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1pE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAupE,EAAA,IAAxD,KAAE5xD,EAAI,QAAE3U,EAAO,KAAEkqD,EAAI,WAAEsc,EAAU,eAAEC,GAAgBx4D,EAClE,MAAOqtD,EAAcqI,GAAmBjzE,IAAM6D,SACxC,OAAJogB,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,GAAfA,EAAiBpI,aAAejsE,SAAa,OAAJslB,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiBrJ,cAAgB,KAErEoL,EAAiBC,GAAsBpyE,mBAC5CqyE,GAAc,OAAJjyD,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiBsB,mBAEtBG,EAAoBC,GAAyBvyE,mBAClDqyE,GAAc,OAAJjyD,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiBwB,sBAGtBE,EAAMC,GAAWzyE,mBACS,WAA3B,OAAJogB,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,OAAX,EAAJA,EAAiBmB,cAEZC,EAAMC,GAAW5yE,mBACS,WAA3B,OAAJogB,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiBkB,cAEZ/C,EAAMC,GAAW5vE,mBACS,mBAA3B,OAAJogB,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,OAAX,EAAJA,EAAiBiB,cAEZ1mE,EAAK6mE,GAAU7yE,mBACW,QAA3B,OAAJogB,QAAI,IAAJA,GAAe,QAAXsxD,EAAJtxD,EAAM9b,iBAAS,IAAAotE,OAAX,EAAJA,EAAiBgB,cAGZI,EAA6BC,GAClC/yE,mBAAS,CACPgzE,eAAoB,OAAJ5yD,QAAI,IAAJA,GAAe,QAAXuxD,EAAJvxD,EAAM9b,iBAAS,IAAAqtE,OAAX,EAAJA,EAAiBe,WACjCO,oBAAyB,OAAJ7yD,QAAI,IAAJA,GAAe,QAAXwxD,EAAJxxD,EAAM9b,iBAAS,IAAAstE,OAAX,EAAJA,EAAiBO,mBAGnCvvE,EAAM+9D,GAAWxkE,IAAM6D,UAAS,IAChC+nB,EAAW0zC,GAAgBz7D,oBAAS,IACpCkzE,EAAQC,GAAanzE,oBAAS,IAC9BozE,EAAgBC,GAAqBrzE,mBAAS,MAC/CszE,EAAiBn9C,iBAAO,OAKxB,YACJo9C,GAAW,eACXC,GAAc,eACd3D,GAAc,kBACd4D,GAAiB,aACjBvY,GAAY,gBACZhY,GAAe,eACfwwB,GAAc,oBACd5rE,IACElI,qBAAWC,KAefe,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,GAAc2U,GAAgB6D,KAElC9yE,qBAAU,KAAO,IAAD+yE,EAAAC,EAAAC,EAGd,OAFAzB,EAAmBC,GAAc,OAAJjyD,QAAI,IAAJA,GAAe,QAAXuzD,EAAJvzD,EAAM9b,iBAAS,IAAAqvE,OAAX,EAAJA,EAAiBxB,kBAC9CI,EAAsBF,GAAc,OAAJjyD,QAAI,IAAJA,GAAe,QAAXwzD,EAAJxzD,EAAM9b,iBAAS,IAAAsvE,OAAX,EAAJA,EAAiBtB,qBACrC,OAAJlyD,QAAI,IAAJA,GAAe,QAAXyzD,EAAJzzD,EAAM9b,iBAAS,IAAAuvE,OAAX,EAAJA,EAAiBnB,YACvB,IAAK,SACHD,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,GACPE,EAA+B,IAC1BD,EACHE,eAAgB,WAElBc,cAAcR,EAAe36C,SAC7B,MACF,IAAK,SACH85C,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,GACPE,EAA+B,IAC1BD,EACHE,eAAgB,WAElBc,cAAcR,EAAe36C,SAC7B,MACF,IAAK,iBACH85C,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,GACPE,EAA+B,IAC1BD,EACHE,eAAgB,mBAElBc,cAAcR,EAAe36C,SAC7B,MACF,IAAK,MACH85C,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,GACPE,EAA+B,IAC1BD,EACHE,eAAgB,QAElBc,cAAcR,EAAe36C,SAC7B,MACF,IAAK,kBACHo6C,EAA+B,IAC1BD,EACHG,oBAAqBd,IAEvB2B,cAAcR,EAAe36C,SAGjC,GACC,CAACvY,IAEJxf,qBAAU,KAAO,IAADmzE,EAEc,MAAZ,OAAd7B,QAAc,IAAdA,OAAc,EAAdA,EAAgB3mE,SACU,MAAZ,OAAd2mE,QAAc,IAAdA,OAAc,EAAdA,EAAgB3mE,SACU,MAAZ,OAAd2mE,QAAc,IAAdA,OAAc,EAAdA,EAAgB3mE,SACgB,MAA5B,OAAJ6U,QAAI,IAAJA,GAAe,QAAX2zD,EAAJ3zD,EAAM9b,iBAAS,IAAAyvE,OAAX,EAAJA,EAAiBvmE,eACE,IAAnB4lE,IAEoD,YAArB,OAA3BN,QAA2B,IAA3BA,OAA2B,EAA3BA,EAA6BE,iBAC/BP,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,IACkD,YAArB,OAA3BC,QAA2B,IAA3BA,OAA2B,EAA3BA,EAA6BE,iBACtCP,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,IAEyC,oBAArB,OAA3BC,QAA2B,IAA3BA,OAA2B,EAA3BA,EAA6BE,iBAE7BP,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,IACkD,SAArB,OAA3BC,QAA2B,IAA3BA,OAA2B,EAA3BA,EAA6BE,kBACtCP,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,IAGTT,EACEC,GAAqC,OAA3BS,QAA2B,IAA3BA,OAA2B,EAA3BA,EAA6BG,uBAElB,IAAnBG,IACFlwB,IAAgB,GAChBmwB,EAAkB,OAEtB,GACC,CAACnB,EAAgB9xD,EAAMgzD,IAE1B,MA6BMY,GAA+BC,IACnB,IAAZA,EA9BQC,MACZ,MAAMC,EACJr5E,SAASq3E,GAAmB,EAAI,GAAK,GAAKr3E,SAASq3E,GAAmB,EACxEC,EAAmB+B,GAEnBxyD,YAAW,KACT85C,GAAa,GACbkF,GAAQ,GACRhL,EAAKv1C,EAAMpmB,OAAOm6E,GAAc,GAChCC,IAA8B,GA/HpB,KAgIH,EAqBPF,GACqB,IAAZD,EAnBGI,MACd,MAAMF,EACJr5E,SAASq3E,GAAmB,EAAI,GAAK,GAAKr3E,SAASq3E,GAAmB,EACxEC,EAAmB+B,GAGnBxyD,YAAW,KACTg/C,GAAQ,GACRhL,EAAKv1C,EAAMpmB,OAAOm6E,GAAc,GAIhCC,IAA8B,GA/IpB,KAgJH,EAOPC,GACqB,IAAZJ,EACJzB,GAEH7wD,YAAW,KACTg0C,EAAKv1C,EAAM,SAAU,GACrBugD,GAAQ,GACR8R,GAASD,GACTI,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,GACPuB,IAA8B,GAC7B,KAEgB,IAAZH,EACJtB,IACHlX,GAAa,GACb95C,YAAW,KACTg/C,GAAQ,GACRhL,EAAKv1C,EAAM,SAAU,GACrBwyD,GAASD,GACTF,GAAQ,GACR7C,GAAQ,GACRiD,GAAO,GACPuB,IAA8B,GAC7B,MAEgB,IAAZH,EACJtE,IACHlU,GAAa,GACb95C,YAAW,KACTg/C,GAAQ,GACRhL,EAAKv1C,EAAM,iBAAkB,GAC7BwyD,GAAQ,GACRH,GAAQ,GACR7C,GAASD,GACTkD,GAAO,GACPuB,IAA8B,GAC7B,MAEgB,IAAZH,IACJjoE,IACHyvD,GAAa,GACb95C,YAAW,KACTg/C,GAAQ,GACRhL,EAAKv1C,EAAM,MAAO,GAClBwyD,GAAQ,GACRH,GAAQ,GACR7C,GAAQ,GACRiD,GAAQ7mE,GACRooE,IAA8B,GAC7B,MAEP,EAGF,SAAS/B,GAAUjgC,GACjB,OAAOhmC,OAAO0F,WAAWsgC,GAAGlgC,QAAQ,EACtC,CAEA,MAAMkiE,GAA+BA,KACnCN,cAAcR,EAAe36C,SAC7B,IAAI27C,EAAQ,EACZhB,EAAe36C,QAAU47C,aAAY,KACnCD,IACIA,EAAQ,KACVR,cAAcR,EAAe36C,SAC7B06C,GAAkB,GAClB1S,GAAQ,GACV,GACC,IAAK,EAGV,OACE1jE,eAAA,OACEmI,UACa,GAAXqG,EACI,sBAAsBwmE,IACtB,8BAA8BA,YACnC90E,SAAA,CAEDF,eAAA,OACEmI,UAAW,mCACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXyxD,EAAJzxD,EAAM9b,iBAAS,IAAAutE,OAAX,EAAJA,EAAiBrkE,aAAqB,mBAAqB,OAC1DrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAW,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,UAGfr/C,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC5B4pE,GACC9pE,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CAAE4pE,EAAa,OAGrDjpE,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QAAMsH,UAAWgsE,GAAwBrK,GAAc5pE,SACpD4pE,EAAesK,GAAmBtK,GAAgB,YAIzDjpE,cAAA,OACEsH,UAAW,oBACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAX0xD,EAAJ1xD,EAAM9b,iBAAS,IAAAwtE,OAAX,EAAJA,EAAiBtkE,aAAqB,mBAAqB,OAC1DrQ,SAE8B,MAA5B,OAAJijB,QAAI,IAAJA,GAAe,QAAX2xD,EAAJ3xD,EAAM9b,iBAAS,IAAAytE,OAAX,EAAJA,EAAiBvkE,aAChB1P,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,SAGjDF,cAAA,QAAMsH,UAAU,cAAajI,SAC3BW,cAAA,KAAGsH,UAAU,uBAOrBnI,eAAA,OACEmI,UAAW,oCACTxC,GAAO,4BACNzF,SAAA,CAEHW,cAAA,OACEsH,WACE4G,EAAM,2BAA6B,IAD1B,wBAEa7O,SAExBF,eAAA,QAAMmI,WAAc4G,EAAM,mBAAqB,IAA9B,iBAAiD7O,SAAA,CAChEW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTF,WAAY,aACZ1e,SAAU,OACVqmB,WAAY,UACZ7kB,SAEDg1E,IAGHr0E,cAAA,QACES,MAAO,CACLgc,QAAS,OACTF,WAAY,aACZlT,UAAW,OACXxL,SAAU,OACVqmB,WAAY,UACZ7kB,SACH,eAKLF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,OACEsH,UAAU,uBACV7H,QACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBO,EAAnBP,GAAqBc,uBAAe,IAAAP,GAApCA,EAAsCsoE,YAClC,KACEqD,GAA4B,EAAE,OAEhC12E,EACLH,SAEDW,cAAA,QAAMsH,UAAU,WAAUjI,SACxBW,cAAA,KAAGsH,UAAU,0BAGjBtH,cAAA,OACEsH,UAAU,uBACV7H,QACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBQ,EAAnBR,GAAqBc,uBAAe,IAAAN,GAApCA,EAAsCqoE,YAClC,KACEqD,GAA4B,EAAE,OAEhC12E,EACLH,SAEDW,cAAA,QAAMsH,UAAU,aAAYjI,SAC1BW,cAAA,KAAGsH,UAAU,kCAMrBtH,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAG1BnxE,cAAA,OACEsH,UAAW,qBACTxC,GAAO,4BACNzF,SAEHF,eAAA,QAAMmI,UAAU,WAAUjI,SAAA,CAAEm1E,EAAmB,aAIjDr1E,eAAA,OACEmI,UAAW,6BACTxC,GAAO,4BACNzF,SAAA,CAEHW,cAAA,OACEsH,UAAWotE,EAAO,wBAA0B,qBAC5Cj1E,QACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBS,EAAnBT,GAAqBc,uBAAe,IAAAL,GAApCA,EAAsCooE,YAClC,KACEqD,GAA4B,EAAE,OAEhC12E,EACLH,SAEDW,cAAA,QAAAX,SAAM,WAERW,cAAA,OACEsH,UAAWutE,EAAO,wBAA0B,qBAC5Cp1E,QACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBU,EAAnBV,GAAqBc,uBAAe,IAAAJ,GAApCA,EAAsCmoE,YAClC,KACEqD,GAA4B,EAAE,OAEhC12E,EACLH,SAEDW,cAAA,QAAAX,SAAM,WAERW,cAAA,OACEsH,UAAWuqE,EAAO,wBAA0B,qBAC5CpyE,QACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBW,EAAnBX,GAAqBc,uBAAe,IAAAH,GAApCA,EAAsCkoE,YAClC,KACEqD,GAA4B,EAAE,OAEhC12E,EACLH,SAEDW,cAAA,QAAAX,SAAM,WAERW,cAAA,OACEsH,UAAW4G,EAAM,uBAAyB,oBAC1CzO,QACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBkqE,EAAnBlqE,GAAqBc,uBAAe,IAAAopE,GAApCA,EAAsCrB,YAClC,KACEqD,GAA4B,EAAE,OAEhC12E,EACLH,SAEDW,cAAA,QAAAX,SAAM,eAKN,EC3dH,MAAMs3E,GAAkBz8E,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECIlC,SAASgH,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CAqBei5E,OAnBf,SAAqBj5E,GACnB,MAAM,YAAEk5E,GAAgBl5E,GAClB,YAAE83E,EAAW,eAAEC,GAAmB5zE,qBAAWC,KAC7CxB,EAAcA,CAACb,EAAO+H,KACX,cAAXA,GAGJiuE,GAAgBD,EAAY,EAG9B,OACEz1E,cAACuH,IAAQ,CAAC/I,KAAMi3E,EAAajuE,iBAAkB,IAAMlH,QAASC,EAAYlB,SACxEW,cAACkB,GAAK,CAACZ,QAASC,EAAamH,SAAS,OAAMrI,SACzCw3E,GAA4B,mBAIrC,ECrBA,SAAS31E,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CAwBem5E,OAtBf,WACE,MAAM,eAAE/E,EAAc,kBAAE4D,GAAsB7zE,qBAAWC,KACnDxB,EAAcA,CAACb,EAAO+H,KACX,cAAXA,GAGJkuE,GAAmB5D,EAAe,EAGpC,OACE/xE,cAACuH,IAAQ,CACP/I,KAAMuzE,EACNvqE,iBAAkB,IAClBlH,QAASC,EAAYlB,SAErBW,cAACkB,GAAK,CAACZ,QAASC,EAAamH,SAAS,UAASrI,SAAC,6BAKtD,ECzBA,SAAS6B,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CAwBeo5E,OAtBSp5E,IACtB,MAAM,YAAEk5E,GAAgBl5E,GAClB,eAAEi4E,EAAc,kBAAEoB,GAAsBl1E,qBAAWC,KACnDxB,EAAcA,CAACb,EAAO+H,KACX,cAAXA,GAGJuvE,GAAmBpB,EAAe,EAEpC,OACE51E,cAACuH,IAAQ,CACP/I,KAAMo3E,EACNpuE,iBAAkB,IAClBlH,QAASC,EAAYlB,SAErBW,cAACkB,GAAK,CAACZ,QAASC,EAAamH,SAAS,UAASrI,SAC5Cw3E,GAA4B,yBAEtB,ECRf,MAAM7gC,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPnT,QAAS,CACPqZ,KAAM8yB,KAAM,MAEdC,UAAW,CACTC,MAAO,UACPhzB,KAAM,UACNizB,KAAM,UACNC,aAAc,WAKdrtC,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZjZ,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,QAG1CG,YAAa,CACX/V,SAAU,IACV73B,WAAY,IAEd6tC,YAAa,CACX9tC,UAAWgT,EAAMwY,QAAQ,IAE3B7W,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,2BAGZi5C,YAAa,CACXr3C,OAAQwc,EAAMwY,QAAQ,GACtBsM,SAAU,KAEZgW,YAAa,CACX9tC,UAAWgT,EAAMwY,QAAQ,KAG7BwiB,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,GAAK,OAE7EojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAGZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAITitC,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAEEC,GAAmBL,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEEG,GAAiBP,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAqkBWigC,OAnkBEr7D,IAA0B,IAAzB,QAAE1B,EAAO,OAAE4+B,GAAQl9B,EACnC,MAAM,OAAE88B,EAAM,MAAErrB,EAAK,UAAEorB,GAAc32C,qBAAWC,MAEzCgxC,EAASmG,GAAch3C,sBACvB8wC,EAASmG,GAAcj3C,sBACvBk3C,EAAcC,GAAmBn3C,sBACjCo3C,EAAcC,GAAmBr3C,sBACjCs3C,EAASC,GAAcv3C,oBAAS,IAChC03C,EAAiBC,GAAsB33C,mBAAS,GACjDuH,EAAUT,MACTqxC,EAAcC,GAAmBp4C,sBACjC83C,EAAWC,GAAgB/3C,oBAAS,GAE3CY,qBAAU,KAER,GAAKoX,EAAQuf,YAAevf,EAAQwf,SAkC7B,CACDshB,EAAI,IAAI71C,KAEZ,IAAI81C,EAAsB,MAEtBC,EAAsB,KAC1B,IAEIC,GAFO,IAAIh2C,MAEC7I,WAAW4S,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,QAAUvf,EAAQ6d,UAEvFqjB,EAASD,EAAKjsC,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EAAW,IAAIl2C,KAAKi2C,GAAQ/1C,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAE1EI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UACzB21C,EAAE31C,UAAYi2C,GAChBjC,EAAgBr8C,SAASq+C,GAAYJ,GACrC/B,EAAWl8C,SAASs+C,GAAWL,GAC/B1B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,IAAOJ,GAC3D9B,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,IAAOL,GAErDX,EAAgB,IAAIn1C,KAAK61C,EAAE31C,UAAY41C,IAEvCpB,EAAmBmB,EAAE31C,UAAY41C,GAEjCi8B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS87C,EAAQ,IACzBrf,WAAYz8B,SAASq+C,GAAYJ,EACjCvhB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,IAAOJ,GAEvDvgC,YAAa,mBAGf2+B,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9ChB,EAAgB,IAAIn1C,KAAK61C,EAAE31C,YAE3Bw0C,EAAmBmB,EAAE31C,WAErB6xE,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS87C,EAAQ,IACzBrf,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,iBAGnB,KArF8C,CAC5C,IAAIwgC,EAAsB,KAE1B,IAAIF,EAAI,IAAI71C,KAEZm1C,EAAgB,IAAIn1C,KAAK61C,EAAE/rC,cAAgB,KAAO+rC,EAAEhsC,WAAa,GAAK,IAAMgsC,EAAEjsC,YAG9E8qC,EAAmB,IAAI10C,KAAK61C,EAAE/rC,cAAgB,KAAO+rC,EAAEhsC,WAAa,GAAK,IAAMgsC,EAAEjsC,WAAW1J,WAC5F,IAAIq2C,EAAM,IAAIv2C,KAEVw2C,EAAgBD,EAAIp/C,WAAW4S,UAAU,EAAG,IAAM,gBAAkBgL,EAAQ6d,UAE5EziB,EAAQomC,EAAIp/C,WAAW4S,UAAU,EAAG,IAAM,gBAE1CmsC,EAAW,IAAIl2C,KAAKmQ,GAAOjQ,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAEzEI,EAAU,IAAIn2C,KAAKw2C,GAAet2C,UAEtCg0C,EAAgBgC,GAEhBnC,EAAWoC,GAEX/B,EAAgBv8C,SAASs+C,EAAS,IAAM,MAAW,KAEnDnC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAC9C47B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS87C,EAAQ,IACzBrf,WAAY4hB,EACZ3hB,SAAU18B,SAASs+C,EAAS,IAAM,MAAW,KAE/C5gC,YAAa,gBAEjB,CAmDA,GACC,IAEH,MAAOw8D,GAAqB,KAAElzE,EAAI,QAAEuW,EAAO,MAAE/V,IAAW8sC,aAAaiB,IAErEzvC,qBAAU,KACJkB,GACFi2C,GAAa,EACf,GACC,CAACj2C,IA8LJ,OAAIQ,EACKxE,cAACmwC,GAAY,KAGlB51B,GAAYvW,GAASg2C,EAKvB76C,eAAA,OAAKmI,UAAU,gCAA+BjI,SAAA,CAC5CW,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CW,cAACq9C,KAAuB,CACtBC,MAAOC,KACPC,OAAQC,KAASp+C,SAEjBF,eAACu+C,KAAI,CACHC,WAAS,EACTC,QAAQ,SAAQv+C,SAAA,CAEhBW,cAACV,IAAU,CACT1B,MAAM,OACN6B,QAASA,KAjNLsT,KACdknC,GAAa,GACbR,GAAW,GACX,IAAIwB,EAAsB,MACtBC,EAAsB,KACtB2C,EAAQ9qC,EAAK1N,UAIjB,GAHAi1C,EAAgB,IAAIn1C,KAAK04C,EAAQ5C,IACb,IAAI91C,KAAK04C,EAAQ5C,GAEhC/gC,EAAQuf,YAAevf,EAAQwf,SAuB9B0hB,GADAD,EADU,IAAIh2C,KAAK04C,EAAQ5C,GACZ3+C,WAAW4S,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,QAAUvf,EAAQ6d,WAC5E7oB,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EAAW,IAAIl2C,KAAKi2C,GAAQ/1C,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAC1EI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9C47B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS07C,EAAQ,IACzBjf,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,qBAvC6B,CAC5C,IACIygC,EACAC,GADAD,EADU,IAAIh2C,KAAK04C,EAAQ5C,GACZ3+C,WAAW4S,UAAU,EAAG,IAAM,iBAAmBgL,EAAQ6d,WAC1D7oB,UAAU,EAAG,IAAM,gBAEjCmsC,EAAW,IAAIl2C,KAAKi2C,GAAQ/1C,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAC1EI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAC7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9C47B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS07C,EAAQ,IACzBjf,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,gBAEjB,CAqBA,EAgKYojC,CAAOzD,EAAa,EACpBh7C,SAEFW,cAAC+9C,KAAW,MAEd/9C,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAACg+C,KAAU,CACTC,QAAQ,cACRC,iBAAiB,EACjBC,WAAW,MACX5+C,GAAG,qBACHge,MAAM,QACNs3B,OAAO,gBACPr6C,MAAO6/C,EACP/xC,SA5GYyK,IACxBknC,GAAa,GACb,IAAIiB,EAAsB,KAI1B,GAFAZ,EAAgBvnC,GAEXmH,EAAQuf,YAAevf,EAAQwf,SAwB7B,CAED0hB,GADAD,EAAOpoC,EAAKzW,WAAW4S,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,QAAUvf,EAAQ6d,WACzE7oB,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EAAW,IAAIl2C,KAAKi2C,GAAQ/1C,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAC1EI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAG3Bo0C,EADE6B,EAAU1B,GAMdP,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9C47B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS07C,EAAQ,IACzBjf,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,gBAEjB,KAlD8C,CAC5C,IAAIygC,EACAC,GADAD,EAAOpoC,EAAKzW,WAAW4S,UAAU,EAAG,IAAM,iBAAmBgL,EAAQ6d,WACvD7oB,UAAU,EAAG,IAAM,gBACjCmsC,EAAW,IAAIl2C,KAAKi2C,GAAQ/1C,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAC1EI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAG3Bo0C,EADE6B,EAAU1B,GAKdP,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9C47B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS07C,EAAQ,IACzBjf,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,gBAEjB,CA0BA,EAqDY0jC,eAAa,EACbxgD,MAAM,UACNygD,oBAAqB,CACnB,aAAc,mBAIpBr+C,cAACV,IAAU,CACT1B,MAAM,OACNgkB,SAAU43B,EACV/5C,QAASA,KAtLNsT,KACbknC,GAAa,GACb,IAAIgB,EAAsB,MACtBC,EAAsB,KACtB2C,EAAQ9qC,EAAK1N,UAAY41C,EAE7B,GAAI4C,GAASjE,EASX,GARAU,EAAgB,IAAIn1C,KAAK04C,IACL,IAAI14C,KAAK04C,GAEdA,EAAQ5C,EACRrB,GACbH,GAAW,GAGRv/B,EAAQuf,YAAevf,EAAQwf,SAwB9B0hB,GADAD,EADU,IAAIh2C,KAAK04C,GACJvhD,WAAW4S,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,QAAUvf,EAAQ6d,WAC5E7oB,UAAU,EAAG,IAAM,IAAMgL,EAAQuf,WAAa,OAE5D4hB,EAAW,IAAIl2C,KAAKi2C,GAAQ/1C,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAC1EI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9C47B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS07C,EAAQ,IACzBjf,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,qBAxC6B,CAC5C,IACIygC,EACAC,GADAD,EADU,IAAIh2C,KAAK04C,GACJvhD,WAAW4S,UAAU,EAAG,IAAM,iBAAmBgL,EAAQ6d,WAC1D7oB,UAAU,EAAG,IAAM,gBAEjCmsC,EAAW,IAAIl2C,KAAKi2C,GAAQ/1C,UAAYrI,SAASkd,EAAQ6d,UAAW,IAAMmjB,EAC1EI,EAAU,IAAIn2C,KAAKg2C,GAAM91C,UAE7Bg0C,EAAgBr8C,SAASq+C,IACzBnC,EAAWl8C,SAASs+C,IACpB/B,EAAgBv8C,SAASq+C,EAAU,IAAM,MAAW,KACpDlC,EAAWn8C,SAASs+C,EAAS,IAAM,MAAW,KAE9C47B,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS07C,EAAQ,IACzBjf,WAAYz8B,SAASq+C,GACrB3hB,SAAU18B,SAASq+C,EAAU,IAAM,MAAW,KAEhD3gC,YAAa,gBAEjB,MAuBA++B,GAAW,EACb,EA2HY6E,CAAMjE,EAAa,EACnBh7C,SAEFW,cAACu+C,KAAY,MAEfp/C,eAAC8sB,KAAW,CAAC3kB,UAAWmC,EAAQytC,YAAY73C,SAAA,CAC1CW,cAACksB,KAAU,CAAC3sB,GAAG,kCAAiCF,SAAC,YACjDW,cAACmsB,KAAM,CACLC,QAAQ,kCACR7sB,GAAG,4BACH/E,MAAOk+C,EACPpwC,SAvEQ5I,IACpB+4C,EAAU/4C,EAAM0H,OAAO5M,OACvB08E,EAAoB,CAClB1wE,UAAW,CACTsyC,OAAQ97C,SAAS0C,EAAM0H,OAAO5M,MAAO,IACrCi/B,WAAY2f,EACZ1f,SAAU4f,GAEZ5+B,YAAa,gBACb,EA8DiCrb,SAEtBguB,EAAMrxB,KAAI,CAACsmB,EAAM9mB,IAChBwE,cAACa,KAAQ,CAEPrG,MAAO8nB,EAAK/iB,GAAGF,SAEdijB,EAAKk8B,OAHDhjD,iBAWnBwE,cAAA,OAAKsH,UAAU,oCAAmCjI,SAC/C2E,EAAKkzE,oBACJl3E,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERwV,MAAO,CACL/H,KAAM,kBAERy+B,MAAO,CACLlsC,KAAM,WACN+qC,IAAKR,EACLS,IAAKR,EACL2B,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLC,IAAK,EACLC,IAAKxvC,EAAKkzE,oBAAoBroE,OAC9B4kC,WAAYzvC,EAAKkzE,oBAAoBroE,OAAS,EAC9CmP,MAAO,CACL/H,KAAM,0BAGVg2C,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAChEvY,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,WAGdxvB,KAAM,CACJC,gBAAsC,GAApBh7B,EAAQ6d,WAE5B+c,QAAS,CACPC,YAAa,WACbC,aAAc,0BAEhBjB,OAAQ/vC,EAAKkzE,oBAAoBC,cAIrCn3E,cAAAZ,WAAA,MAIJY,cAAA,OAAKsH,UAAU,iCAAgCjI,SAC5C2E,EAAKkzE,oBACJl3E,cAAAZ,WAAA,CAAAC,SACG2zC,GACChzC,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERwV,MAAO,CACL/H,KAAM,SASRy+B,MAAO,CACLlsC,KAAM,WACN+qC,IAAKR,EACLS,IAAKR,EACL2B,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLC,IAAK,EACLv1B,MAAO,CACL/H,KAAM,cAGVg2C,OAAQ,CAAC,UAAW,UAAW,WAC/BnX,QAAS,CACP0vB,YAAa,2GACb4S,QAAQ,GAEV1jC,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,SAGdxvB,KAAM,CACJC,gBAAsC,GAApBh7B,EAAQ6d,WAE5Bgc,OAAQ/vC,EAAKkzE,oBAAoBG,kBAMzCr3E,cAAAZ,WAAA,MAIJY,cAAA,OAAKsH,UAAU,kCAAiCjI,SAC9CF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,wCAAuCjI,SAAC,kBACvDF,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,MAChCW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,aAChCW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,eAGpCF,eAAC0/C,KAAS,CAAAx/C,SAAA,GACP2E,EAAKkzE,oBAAoBC,YACtBnzE,EAAKkzE,oBAAoBC,WAAWn7E,KAAI,CAACqS,EAAG7S,IAC1C2D,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE7D,EAAM,IACvCwE,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAEgP,EAAE/S,OACnC6D,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAAE+O,GAAeC,EAAErK,MAAM,eAIhE7E,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SACf,qBAGDW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER5/C,eAACy3C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SAAA,CAEb8P,GAAiBnL,EAAKkzE,oBAAoBC,YAAY,wBAQlEnzE,EAAKkzE,oBAAoBC,WACxBnzE,EAAKkzE,oBAAoBC,WAAWn7E,KAAKsiB,GACvCte,cAAA,OAAKsH,UAAU,4BAA2BjI,SACxCF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BF,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAAC,iBAAeif,EAAEhjB,QAC9D6D,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,MAChCW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,SAChCW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,eAGpCF,eAAC0/C,KAAS,CAAAx/C,SAAA,CACPif,EAAEta,KAAKhI,KAAI,CAACqS,EAAG7S,IACd2D,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE7D,EAAM,IACvCwE,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAEqP,GAAgBL,EAAEimC,KACnDn1C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAAEgP,EAAEE,EAAE,eAGzCpP,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SACf,qBAGDW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER5/C,eAACy3C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SAAA,CAEb+O,GAAekQ,EAAEta,MAAM,0BAStChE,cAAAZ,WAAA,OA7QGY,cAAC+b,GAAO,GA+QT,EC1tBSkH,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAiFHqhC,OA5EI17D,IAAqB,IAADy1D,EAAA0B,EAAAC,EAAAS,EAAAC,EAAAC,EAAA,IAAnB,KAAErxD,EAAI,KAAEu1C,GAAMj8C,EAChC,MAAM,EAAEzV,GAAMC,eACR,YACJqvE,EAAW,eACXC,EAAc,eACd3D,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,GACEtjD,qBAAWC,MACRgU,EAAOwhE,GAAYl5E,IAAM6D,SACH,MAAvB,OAAJogB,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiBzjE,UAEZ9I,EAAM+9D,GAAWxkE,IAAM6D,UAAS,GACvCY,qBAAU,KAAO,IAADwvE,EACdiF,EAAoC,MAAvB,OAAJj1D,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiB1kE,QAA6B,GACtD,CAAC0U,IAEJxf,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IAWlB,OACE5yE,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCF,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCW,cAAA,OAAKsH,UAAU,YAAWjI,SAZFm4E,MAC5B,MAAMC,EAAoC,kBAAX,OAAJn1D,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,MAAwB,OAAJgnB,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,KAAO,GAClE,MAAmC,kBAApB,OAAXm8E,QAAW,IAAXA,OAAW,EAAXA,EAAan0E,eACR6C,EAAE,sDAEFsxE,CACT,EAMgCD,KAC5Bx3E,cAAA,OAAKsH,UAAU,eAEjBnI,eAAA,OAAKmI,UAAU,wBAAuBjI,SAAA,CACpCW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,OAAK4H,IAAKu3C,GAAoBj3C,IAAI,OAAOhK,MAAM,KAAKgC,OAAO,SAE7Df,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,OAAKsH,UAAU,qBAAoBjI,SAChC8G,EAAE,0DAELnG,cAAA,OACEsH,UAAU,6BACV7G,MAAO,CACLxC,OAAQ,aAEN6X,GAA4B,OAAJwM,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiBnlE,OAAQzH,GAAGlI,SAEtD8e,gBAAiB,GACfjH,GAA4B,OAAJwM,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiBplE,OAAQzH,GAAG6P,KAEtDpY,MAAO,GACLkY,GAA4B,OAAJwM,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,OAAX,EAAJA,EAAiB7lE,OAAQzH,GAAGvI,SAEtDyB,SAEDyW,GAA4B,OAAJwM,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiB9lE,OAAQzH,GAAG8P,aAI3DjW,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC1C8G,EAAE,wDAELnG,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC1C4X,GAAqB,OAAJqL,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,OAAX,EAAJA,EAAiB/lE,OAAQzH,GAAGnK,KAAKqS,GACjDrO,cAAA,OAAKsH,UAAU,4BAA2BjI,SAAG,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG/S,aAG/C,E,UC1EV,MAAM06C,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAmIHyhC,OA/HU97D,IAAqB,IAADrR,EAAA,IAAnB,KAAE+X,EAAI,KAAEu1C,GAAMj8C,EACtC,MAAM,EAAEzV,GAAMC,eACR,YACJqvE,EAAW,eACXC,EAAc,eACd3D,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,EAAe,oBACfp7C,GACElI,qBAAWC,MACRgU,EAAOwhE,GAAYl5E,IAAM6D,SACL,KAAzBogB,EAAK9b,UAAU8Q,SAEV2xD,EAAcqI,GAAmBjzE,IAAM6D,SAC5CogB,EAAK9b,UAAUyiE,eAEVnkE,EAAM+9D,GAAWxkE,IAAM6D,UAAS,GACvCY,qBAAU,KACRy0E,EAAkC,KAAzBj1D,EAAK9b,UAAU8Q,QACpBgL,EAAK9b,UAAUyiE,cACjBqI,EAAgBhvD,EAAK9b,UAAUyiE,aACjC,GAEC,CAAC3mD,IAEJxf,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IAgBlB,OACE5yE,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACqB,KAA9Bgb,EAAK9b,UAAUkJ,YAAqB,wBAA0B,OAC7DrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAOijB,EAAKk8B,UAEdx+C,cAAA,OACEsH,UAAW,IACqB,KAA9Bgb,EAAK9b,UAAUkJ,YACX,0BACA,0BACHrQ,SAE4B,KAA9BijB,EAAK9b,UAAUkJ,YACd1P,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,MAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,SAGjDF,cAAA,QAAMsH,UAAU,qBAAoBjI,SAClCW,cAAA,KAAGo1C,MAAM,uBAKjBj2C,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEmO,EAAQopC,GAAgCA,GAE1Cj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BnxE,cAAA,OACEsH,UAAW,oCACTxC,GAAO,qBACNzF,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASzH,EACT6L,UAAU,EACVtZ,WACqC,QAAnCiC,EAAAP,EAAoBc,uBAAe,IAAAP,IAAnCA,EAAqCsoE,cA1EhCv4E,WACnBuoE,GAAQ,SAMD,IAAI77C,SAAQ,KACjBnD,YAAW,KACTg0C,EAAKv1C,GAAOvM,EAAM,GACjB,IAAK,IAPVwhE,GAAUxhE,EAAM,OA6ER/V,cAAA,SACE+V,EAKA/V,cAAA,QAAAX,SACG8G,EAAE,wDALLnG,cAAA,QAAAX,SACG8G,EAAE,2DAMJ,cAIL,ECzIV,MAAM6vC,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAkLHj+B,OA7KA4D,IAAqB,IAADy1D,EAAAsC,EAAAC,EAAAC,EAAAtpE,EAAA,IAAnB,KAAE+X,EAAI,KAAEu1C,GAAMj8C,EAC5B,MAAM,EAAEzV,GAAMC,eACR,YACJqvE,EAAW,eACXC,EAAc,eACd3D,EAAc,kBACd4D,EAAiB,eACjBC,EAAc,aACdxY,EAAY,gBACZhY,EAAe,oBACfp7C,GACElI,qBAAWC,MACRgU,EAAOwhE,GAAYl5E,IAAM6D,SACH,MAAvB,OAAJogB,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiB/5D,UAEZxS,EAAM+9D,GAAWxkE,IAAM6D,UAAS,IAChCozE,EAAgBC,GAAqBrzE,mBAAS,MAC/CszE,EAAiBn9C,iBAAO,MAE9Bv1B,qBAAU,KAAO,IAADwvE,EACdiF,EAAoC,MAAvB,OAAJj1D,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiBh7D,SAC1B0+D,cAAcR,EAAe36C,QAAQ,GACpC,CAACvY,IAEJxf,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,EAAgB6D,IAElC9yE,qBAAU,KACR,GAAIwyE,EACFzS,GAAQ,GACR0S,EAAkB,WACb,IAAuB,IAAnBD,EAA0B,CAAC,IAADvC,EACnClQ,GAAQ,GACR0S,EAAkB,MAClBgC,EAAoC,MAAvB,OAAJj1D,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiBz7D,SAC1B8tC,GAAgB,EAClB,IACC,CAACkwB,IAsCJ,MAAMgB,EAA+BA,KACnCN,cAAcR,EAAe36C,SAC7B,IAAI27C,EAAQ,EACZhB,EAAe36C,QAAU47C,aAAY,KACnCD,IACIA,EAAQ,KACVR,cAAcR,EAAe36C,SAC7B06C,GAAkB,GAClB1S,GAAQ,GACV,GACC,IAAK,EAGV,OACE7iE,cAAAZ,WAAA,CAAAC,SACkB,kBAAX,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,MAA0B,KAC/B6D,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,OAAX,EAAJA,EAAiBjkE,aACb,wBACA,OACHrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAW,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,UAEfx+C,cAAA,OACEsH,UAAW,IACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXsxD,EAAJtxD,EAAM9b,iBAAS,IAAAotE,OAAX,EAAJA,EAAiBlkE,aACb,0BACA,0BACHrQ,SAE8B,MAA5B,OAAJijB,QAAI,IAAJA,GAAe,QAAXuxD,EAAJvxD,EAAM9b,iBAAS,IAAAqtE,OAAX,EAAJA,EAAiBnkE,aAChB1P,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,SAGjDF,cAAA,QAAMsH,UAAU,qBAAoBjI,SAClCW,cAAA,KAAGo1C,MAAM,uBAKjBj2C,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEmO,EAAQopC,GAA0BA,GAEpCj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BnxE,cAAA,OACEsH,UAAW,oCACTxC,GAAO,qBACNzF,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASzH,EACTzN,WACqB,OAAnB0B,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cAhHrCv4E,WAcnBuoE,GAAQ,GAQD,IAAI77C,SAAQ,KAAO,IAADgsD,EAAAS,EAAAC,EAEsB,IAA3C12E,SAAa,OAAJslB,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiBtjE,cACO,QAA7B,OAAJ4S,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,OAAX,EAAJA,EAAiB/jE,mBACgBlQ,KAA7B,OAAJ8iB,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiBhkE,cAEjBmoD,EAAKv1C,GAAOvM,GACZugE,KAEAA,GACF,IAhBFiB,GAAUxhE,EAAM,OAsGJ/V,cAAA,SACE+V,EAGA/V,cAAA,QAAAX,SAAO8G,EAAE,wCAFTnG,cAAA,QAAAX,SAAO8G,EAAE,qDASpB,E,UC9JW8C,cAAYoT,IAAK,CACjCuyC,kBAAmB,CACjBzsC,SAAU,QACVjkB,MAAO,IACP6kC,OAAQ,GACR7iC,OAAQ,GACRqJ,aAAc,IACdo1B,UACE,uKACF5hB,gBAAiB,WAEnB46D,cAAe,CACbruE,WAAY+S,EAAMwY,QAAQ,GAC1Bj3B,MAAO,QACPg6E,WAAY,GACZt5C,KAAM,GAERtgB,MAAO,CACLngB,SAAU,IAEZg6E,aAAc,CACZ77D,YAAa,GACb5S,QAAS,YACTw1B,OAAQ,UACR7+B,aAAc,GACd,UAAW,CACTgd,gBAAiB,gBAoGRksD,OA/FMrtD,IAAiE,IAAhE,YAAEk8D,EAAW,mBAAEC,EAAkB,KAAEz8E,EAAI,GAAEiE,EAAE,YAAE6vB,GAAaxT,EAC9E,MAAOo8D,GAAwBh0E,KAAMi0E,EAAgB19D,QAASm4C,IAC5DphB,aAAaqB,KAERulC,GAA2Bl0E,KAAMm0E,EAAgB59D,QAASq4C,IAC/DthB,aAAauB,IAETmgB,EAAgB,CACpBxsD,UAAW,CACT4xE,SAAUp7E,SAASuC,EAAI,MAIrBwzD,EAAgB,CACpBvsD,UAAW,CACT6xE,OAAQ94E,IAYZ,GARAuD,qBAAU,KACY,cAAhBssB,EACF8oD,EAAwBnlB,GACC,eAAhB3jC,GACT4oD,EAAqBhlB,EACvB,GACC,IAEiB,eAAhB5jC,GAAgCsjC,EAClC,OAAO1yD,cAAC+b,GAAO,IACV,GAAoB,cAAhBqT,GAA+BwjC,EACxC,OAAO5yD,cAAC+b,GAAO,IAGjB,MAAMu8D,EAA+BA,KACA,IAADC,EAAAC,EAAAC,EAKMC,EAAAC,EAAAC,EALxC,MAAoB,eAAhBxpD,EACK,CACLprB,KAAoB,OAAdi0E,QAAc,IAAdA,GAAuC,QAAzBM,EAAdN,EAAgBY,+BAAuB,IAAAN,OAAzB,EAAdA,EAAyCv0E,KAC/C6K,OAAsB,OAAdopE,QAAc,IAAdA,GAAuC,QAAzBO,EAAdP,EAAgBY,+BAAuB,IAAAL,GAAM,QAANC,EAAvCD,EAAyCx0E,YAAI,IAAAy0E,OAA/B,EAAdA,EAA+C5pE,QAEhC,cAAhBugB,EACF,CACLprB,KAAoB,OAAdm0E,QAAc,IAAdA,GAA6C,QAA/BO,EAAdP,EAAgBW,qCAA6B,IAAAJ,OAA/B,EAAdA,EAA+C10E,KACrD6K,OAAsB,OAAdspE,QAAc,IAAdA,GAA6C,QAA/BQ,EAAdR,EAAgBW,qCAA6B,IAAAH,GAAM,QAANC,EAA7CD,EAA+C30E,YAAI,IAAA40E,OAArC,EAAdA,EAAqD/pE,aAH1D,CAKP,EAGF,OACE7O,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAKsH,UAAU,kBAAiBjI,SACa,IAA1Ci5E,IAA+BzpE,aACUrP,IAA1C84E,IAA+BzpE,OAC7B7O,cAAA,OAAKsH,UAAU,uBAAsBjI,SAClC8G,aAAE,oDAGLhH,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OAAKsH,UAAU,wBAAuBjI,SACnC8G,aAAE,2DAELhH,eAAA,OAAKmI,UAAU,iCAAgCjI,SAAA,CAC7CW,cAAA,OAAKsH,UAAU,4BAA2BjI,SACvC8G,aAAE,iDAELnG,cAAA,OAAKsH,UAAU,6BAA4BjI,SACxC8G,aAAE,qDAGN,IAAImyE,IAA+Bt0E,MAAM+0E,UAAU/8E,KACjDqS,GACCuH,GAAgBvH,EAAEimC,IAChBt0C,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAAEuW,GAAgBvH,EAAEimC,KACxDn1C,eAAA,OAAKmI,UAAU,uBAAsBjI,SAAA,CACnCF,eAAA,QAAMmI,UAAU,0BAAyBjI,SAAA,CAAEgP,EAAEE,EAAE,OAC/CvO,cAAA,QACEsH,UAAW,6BAA6BgsE,GACtCjlE,EAAEE,KACAlP,SAEHk0E,GAAmBllE,EAAEE,qBAUzC,ECzIP,MAEM8N,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KALc,cAiFL61D,OAvEOp9D,IAA4B,IAA3B,KAAEpd,EAAI,MAAEk5D,EAAK,KAAEp8D,GAAMsgB,EAC1C,MAAM,EAAEzV,GAAMC,cACd,OACEpG,cAAAZ,WAAA,CAAAC,SACEF,eAACoiB,KAAM,CACL/iB,KAAMA,EACN8B,QAASo3D,EACTl3D,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,OACPgC,OAAQ,QAEVb,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,oBACT/J,SAAA,CAEFF,eAAA,QACEsB,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SAAA,CAED8G,EAAE,uDAAuD,MAAI7K,KAEhE0E,cAACV,IAAU,CAACG,QAASi4D,EAAMr4D,SACzBW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BuB,eAACilB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACf5c,IAAK,OACLsJ,QAAS,YACTmT,WAAY,SACZI,eAAgB,UAChBtd,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,QACVwB,SAED8G,EAAE,oDAGLnG,cAACqkB,KAAa,CAAChI,MAAOA,YAGzB,ECYQ48D,OAnGWr9D,IAA4B,IAADs9D,EAAA,IAA1B,KAAEl1E,EAAI,YAAEorB,GAAaxT,EAC9C,SAASu9D,EAAa/pD,EAAaprB,GACjC,IAAIo1E,EAC8B,IAADC,EAAjC,GAAoB,cAAhBjqD,EACFgqD,EAAgB,OAAJp1E,QAAI,IAAJA,GAAmC,QAA/Bq1E,EAAJr1E,EAAM80E,qCAA6B,IAAAO,OAA/B,EAAJA,EAAqCr1E,UAC5C,GAAoB,eAAhBorB,EAA8B,CAAC,IAADkqD,EACvCF,EAAgB,OAAJp1E,QAAI,IAAJA,GAA6B,QAAzBs1E,EAAJt1E,EAAM60E,+BAAuB,IAAAS,OAAzB,EAAJA,EAA+Bt1E,IAC7C,CACA,OAAOo1E,CACT,CACAD,EAAa/pD,EAAaprB,GAE1B,MAAM,EAAEmC,GAAMC,cACd,OACEpG,cAAA,OAAKsH,UAAU,oBAAmBjI,SACa,KAAb,QAA/B65E,EAAAC,EAAa/pD,EAAaprB,UAAK,IAAAk1E,OAAA,EAA/BA,EAAiCrqE,QAChC7O,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,IACVq4C,gBAAiB,IAGrBx7D,MAAO,CACL/H,KAAM,GACNo9B,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNosC,OAAQ,CACNxhB,SAAU,YAGdkgB,MAAO,CACLt1B,MAAO,CACL/H,KAAM9P,EACJ,8DAGJgmD,mBAAoB,EACpBJ,cAAe,EACf0tB,mBAAoB,KACpBC,UAAW,CACT,CAEE39E,KAAM,GACN+M,GAAI,IACJlL,MAAO,6BAIbk3C,QAAS,CACP6V,YAAa,KAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,EACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,IAGf/lC,OAAQ,CACNpvB,SAAS,GAEXo1D,cAAe,KACfC,WAAY30E,KAAK40E,IAAI,KAAM,EAAG,GAAI,EAAG,EAAG,KAG5ChmC,OAAQ,CACN,CACEz4C,KAAM6K,EAAE,kDACRnC,KAAMm1E,EAAa/pD,EAAaprB,GAC5Bm1E,EAAa/pD,EAAaprB,GAC1B,KAGRg2E,WAAY,CACVC,cAAe,CACbp8E,SAAU,QAGds3C,QAAS,CACP1wB,SAAS,MAIb,MACA,ECzEV,MAAMzb,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,SAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,OAIJm1B,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IA2Feu8E,OAzFWt+D,IAOnB,IAADu+D,EAAAC,EAAAC,EAAAC,EAAA,IAPqB,KACzB97E,EAAI,KACJlD,EAAI,YACJiF,EAAW,GACXhB,EAAE,SACFs8D,EAAQ,YACRzsC,GACDxT,EACC,MAAOo8D,GAAwBh0E,KAAMi0E,EAAgB19D,QAASm4C,IAC5DphB,aAAaqB,KAGbulC,GACEl0E,KAAMm0E,EAAgB59D,QAASq4C,IAC/BthB,aAAauB,KAEV0nC,EAAaC,GAAkBt4E,sBAChC,EAAEiE,GAAMC,cACRqD,EAAUT,KAGVyxE,GAFQvjD,eAEG,CACf1wB,UAAW,CACT6xE,OAAQ94E,KAGNm7E,EAAW,CACfl0E,UAAW,CACT4xE,SAAUp7E,SAASuC,EAAI,MAgB3B,OAZAuD,qBAAU,KACY,cAAhBssB,EACF8oD,EAAwBuC,GACC,eAAhBrrD,GACT4oD,EAAqB0C,EACvB,GACC,IAEH53E,qBAAU,KACR03E,EAAevC,GAAkBE,EAAe,GAC/C,CAACF,EAAgBE,IAGlBn4E,cAAAZ,WAAA,CAAAC,SACc,OAAXk7E,QAAW,IAAXA,GAA0C,QAA/BJ,EAAXI,EAAazB,qCAA6B,IAAAqB,GAAM,QAANC,EAA1CD,EAA4Cn2E,YAAI,IAAAo2E,GAAhDA,EAAkDvrE,QACI,KAA5C,OAAX0rE,QAAW,IAAXA,GAAoC,QAAzBF,EAAXE,EAAa1B,+BAAuB,IAAAwB,GAAM,QAANC,EAApCD,EAAsCr2E,YAAI,IAAAs2E,OAA/B,EAAXA,EAA4CzrE,QAC1C1P,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAMA,EACN8B,QAASC,EACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,EAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,EACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC5c,QAAS,KAAKhC,SACvB,GAAGR,aAAaC,QAAQ,oBAAoBqH,EAC3C,0DACG7K,OAAUugE,WAKrB77D,cAACi5E,GAAiB,CAACj1E,KAAMu2E,EAAanrD,YAAaA,IAEnDpvB,cAACipE,GAAY,CACXjlE,KAAMu2E,EACNj/E,KAAMA,EACNiE,GAAIA,EACJ6vB,YAAaA,OAIjBpvB,cAAAZ,WAAA,CAAAC,SACEW,cAACg5E,GAAa,CAACx6E,KAAMA,EAAMk5D,MAAOn3D,EAAajF,KAAMA,OAGxD,EClGP,MAAM06C,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAkMH0kC,OA7LM/+D,IAA+B,IAADy1D,EAAAsC,EAAAC,EAAAC,EAAAtpE,EAAA,IAA7B,KAAE+X,EAAI,KAAEu1C,EAAI,SAAEgE,GAAUjgD,EAC5C,MAAMwT,EAAc9V,MACd,EAAEnT,GAAMC,eACP5H,EAAMmE,GAAWT,oBAAS,IAC3B,YACJuzE,EAAW,eACXC,EAAc,eACd3D,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,EAAe,oBACfp7C,GACElI,qBAAWC,KAETg2E,EAAqBA,KACzBp1E,GAASnE,EAAK,GAGTuX,EAAOwhE,GAAYl5E,IAAM6D,SACH,MAAvB,OAAJogB,QAAI,IAAJA,OAAI,EAAJA,EAAM9b,UAAUo0E,WAEX3R,EAAcqI,GAAmBjzE,IAAM6D,SAC5ClF,SAAa,OAAJslB,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiBpI,gBAErB4R,EAAOC,GAAYz8E,IAAM6D,UAAS,IAClC4C,EAAM+9D,GAAWxkE,IAAM6D,UAAS,GAEvCY,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IAElBjvE,qBAAU,KAAO,IAADwvE,EAAAS,EAAAU,EAEcT,EAGOU,GAJnC6D,EAAqC,MAAxB,OAAJj1D,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiBsI,UAClB,OAAJt4D,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,GAAfA,EAAiBgI,QACnBD,EAAmC,MAAtB,OAAJx4D,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiB+H,QAEpB,OAAJz4D,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,GAAfA,EAAiBxK,cACnBqI,EAAgBt0E,SAAa,OAAJslB,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiBzK,cAC5C,GACC,CAAC3mD,IA8BJ,OACEtiB,cAAAZ,WAAA,CAAAC,SACGijB,EACCnjB,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,OAAX,EAAJA,EAAiBjkE,aACb,wBACA,OACHrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAW,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,UAEfx+C,cAAA,OACEsH,UAAW,IACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXsxD,EAAJtxD,EAAM9b,iBAAS,IAAAotE,OAAX,EAAJA,EAAiBlkE,aACb,0BACA,yBACHrQ,SAE8B,MAA5B,OAAJijB,QAAI,IAAJA,GAAe,QAAXuxD,EAAJvxD,EAAM9b,iBAAS,IAAAqtE,OAAX,EAAJA,EAAiBnkE,aAChB1P,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC5B4pE,EACC9pE,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CACjC4pE,EAAa,OAEd,KACJjpE,cAAA,OACEsH,UAAU,yBACV7H,QAASs4E,EAAmB14E,SAE5BW,cAAA,QAAMsH,UAAWgsE,GAAwBrK,GAAc5pE,SACpDk0E,GAAmBtK,OAGxBjpE,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,cAKrDf,eAAA,OAAKmI,UAAU,iBAAiB7H,QAASs4E,EAAmB14E,SAAA,CACzD4pE,EACC9pE,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CAAE4pE,EAAa,OACjD,KACJjpE,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QAAMsH,UAAWgsE,GAAwBrK,GAAc5pE,SACpDk0E,GAAmBtK,eAOhC9pE,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEmO,EAAQopC,GAA8BA,GAExCj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BnxE,cAAA,OACEsH,UAAW,oCACTxC,GAAO,qBACNzF,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASq9D,EACTvyE,WACqB,OAAnB0B,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cAnHrCv4E,iBACb48D,KAAKC,KAAK,CACdn5C,MAAO7X,EAAE,+CACT8P,KAAM9P,EAAE,8CACRixD,KAAM,OACN4a,kBAAkB,EAClBC,mBAAoB,UACpBC,kBAAmB,OACnBC,kBAAmBhsE,EACjB,6DAEDO,MAAM1D,IACHA,EAAOovE,cACTvP,GAAQ,GAQL,IAAI77C,SAAQ,KACjBnD,YAAW,KACTg0C,EAAKv1C,EAAMu4D,EAAM,GAChB,IAAK,IATNC,GAAUD,GACZ,GACA,OAwGU76E,cAAA,SACE66E,EAKA76E,cAAA,QAAAX,SAAO8G,EAAE,+CAJTnG,cAAA,QAAAX,SACG8G,EAAE,0DASbnG,cAACk6E,GAAiB,CAChBre,SAAUA,EACVr9D,KAAMA,EACNlD,KAAU,OAAJgnB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,MACZj+C,YAAaw3E,EACb3oD,YAAaA,EACb7vB,GAAQ,OAAJ+iB,QAAI,IAAJA,OAAI,EAAJA,EAAM/iB,QAIdS,cAAAZ,WAAA,KAED,EClMP,MAAM42C,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SA4LHyhC,OAxLU97D,IAA+B,IAADy1D,EAAAiB,EAAAS,EAAAe,EAAA+B,EAAAC,EAAAvrE,EAAA,IAA7B,KAAE+X,EAAI,KAAEu1C,EAAI,SAAEgE,GAAUjgD,EAChD,MAAMwT,EAAc9V,MACd,EAAEnT,GAAMC,eACR,YACJqvE,EAAW,eACXC,EAAc,eACd3D,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,EAAe,oBACfp7C,GACElI,qBAAWC,MACRgU,EAAOwhE,GAAYl5E,IAAM6D,SACF,MAAxB,OAAJogB,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiBuJ,WAEZ3R,EAAcqI,GAAmBjzE,IAAM6D,SACxC,OAAJogB,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,GAAfA,EAAiBrJ,aAAejsE,SAAa,OAAJslB,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiB9J,cAAgB,KAErE4R,EAAOC,GAAYz8E,IAAM6D,UAAS,IAClC4C,EAAM+9D,GAAWxkE,IAAM6D,UAAS,IAChC1D,EAAMmE,GAAWtE,IAAM6D,UAAS,GAEjC61E,EAAqBA,KACzBp1E,GAASnE,EAAK,EAGhBsE,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IAElBjvE,qBAAU,KAAO,IAADkwE,EAAAS,EAAAE,EAEcD,EAGOE,EAAAC,GAJnC0D,EAAqC,MAAxB,OAAJj1D,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiB4H,UAClB,OAAJt4D,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,GAAfA,EAAiBsH,QACnBD,EAAmC,MAAtB,OAAJx4D,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiBqH,QAEpB,OAAJz4D,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,GAAfA,EAAiB1K,cACnBqI,EACM,OAAJhvD,QAAI,IAAJA,GAAe,QAAXsxD,EAAJtxD,EAAM9b,iBAAS,IAAAotE,GAAfA,EAAiB3K,aACbjsE,SAAa,OAAJslB,QAAI,IAAJA,GAAe,QAAXuxD,EAAJvxD,EAAM9b,iBAAS,IAAAqtE,OAAX,EAAJA,EAAiB5K,cAC1B,GAER,GACC,CAAC3mD,IA8BJ,OACEnjB,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXwxD,EAAJxxD,EAAM9b,iBAAS,IAAAstE,OAAX,EAAJA,EAAiBpkE,aAAqB,wBAA0B,OAC/DrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAW,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,UAEfx+C,cAAA,OACEsH,UAAW,IACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXuzD,EAAJvzD,EAAM9b,iBAAS,IAAAqvE,OAAX,EAAJA,EAAiBnmE,aACb,0BACA,yBACHrQ,SAE8B,MAA5B,OAAJijB,QAAI,IAAJA,GAAe,QAAXwzD,EAAJxzD,EAAM9b,iBAAS,IAAAsvE,OAAX,EAAJA,EAAiBpmE,aAChB1P,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,iBAAiB7H,QAASs4E,EAAmB14E,SAAA,CACzD4pE,EACC9pE,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CAAE4pE,EAAa,OACjD,KACJjpE,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QACEsH,UAAWgsE,GAAwBrK,GACnCxpE,QAASs4E,EAAmB14E,SAE3Bk0E,GAAmBtK,OAIxBjpE,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,cAKrDf,eAAA,OAAKmI,UAAU,iBAAiB7H,QAASs4E,EAAmB14E,SAAA,CACzD4pE,EACC9pE,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CAAE4pE,EAAa,QACjD,KAEJjpE,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QAAMsH,UAAWgsE,GAAwBrK,GAAc5pE,SACpDk0E,GAAmBtK,eAOhC9pE,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEmO,EAAQopC,GAAgCA,GAE1Cj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BnxE,cAAA,OACEsH,UAAW,oCACTxC,GAAO,qBACNzF,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASq9D,EACTvyE,WACqB,OAAnB0B,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cA/GjCv4E,WAWnBuoE,GAAQ,GAQD,IAAI77C,SAAQ,KACjBnD,YAAW,KACTg0C,EAAKv1C,EAAMu4D,EAAM,GAChB,IAAK,IATVC,GAAUD,EAAM,OAwGR76E,cAAA,SACE66E,EAKA76E,cAAA,QAAAX,SAAO8G,EAAE,mDAJTnG,cAAA,QAAAX,SACG8G,EAAE,sDAIJ,YAITnG,cAACk6E,GAAiB,CAChBre,SAAUA,EACVr9D,KAAMA,EACNlD,KAAU,OAAJgnB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,MACZj+C,YAAaw3E,EACbx4E,GAAQ,OAAJ+iB,QAAI,IAAJA,OAAI,EAAJA,EAAM/iB,GACV6vB,YAAaA,MAEX,E,qBCtMV,MAAM4mB,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAgLH+kC,OA5KIp/D,IAAqB,IAADrR,EAAA,IAAnB,KAAE+X,EAAI,KAAEu1C,GAAMj8C,EAChC,MAAM,EAAEzV,GAAMC,eACR,YACJqvE,EAAW,eACXC,EAAc,eACd3D,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,EAAe,oBACfp7C,GACElI,qBAAWC,MACRgU,EAAOwhE,GAAYl5E,IAAM6D,SACJ,KAA1BogB,EAAK9b,UAAUo0E,UAEV3R,EAAcqI,GAAmBjzE,IAAM6D,SAC5CogB,EAAK9b,UAAUyiE,eAEV4R,EAAOC,GAAYz8E,IAAM6D,UAAS,IAClC4C,EAAM+9D,GAAWxkE,IAAM6D,UAAS,GAEvCY,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IAElBjvE,qBAAU,KACRy0E,EAAmC,KAA1Bj1D,EAAK9b,UAAUo0E,SACpBt4D,EAAK9b,UAAUu0E,OACjBD,EAAiC,KAAxBx4D,EAAK9b,UAAUu0E,OAEtBz4D,EAAK9b,UAAUyiE,cACjBqI,EAAgBhvD,EAAK9b,UAAUyiE,aACjC,GACC,CAAC3mD,IA2BJ,OACEnjB,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACqB,KAA9Bgb,EAAK9b,UAAUkJ,YAAqB,wBAA0B,OAC7DrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAOijB,EAAKk8B,UAEdx+C,cAAA,OACEsH,UAAW,IACqB,KAA9Bgb,EAAK9b,UAAUkJ,YACX,0BACA,yBACHrQ,SAE4B,KAA9BijB,EAAK9b,UAAUkJ,YACd1P,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,SAGjDf,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,YAAWjI,SACvB4pE,GAAgB9pE,eAAA,QAAAE,SAAA,CAAO4pE,EAAa,UAEvCjpE,cAAA,OAAKsH,UAAU,YAAWjI,SACxBW,cAAA,QACEsH,UACG2hE,EAEGA,EAAe,GACf,8BACA,wBAHA,gCAIL5pE,SAEC4pE,EAEEA,EAAe,GACjBjpE,cAACyyE,KAAe,IACdxJ,EAAe,GACjBjpE,cAACyoE,KAAa,IACZQ,EAAe,GACjBjpE,cAACwoE,KAAa,IACZS,EAAe,GACjBjpE,cAACuoE,KAAa,IACZU,EAAe,GACjBjpE,cAAC0yE,KAAa,IACZzJ,EAAe,GACjBjpE,cAAC2yE,KAAa,IACZ1J,EAAe,GACjBjpE,cAACqoE,KAAa,IAEdroE,cAAC4yE,KAAgB,IAhBjB5yE,cAACi7E,KAAkB,gBAwBjC97E,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEmO,EACIopC,GACAA,GAENj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BnxE,cAAA,OACEsH,UAAW,oCACTxC,GAAO,qBACNzF,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASq9D,EACTvyE,WACqC,QAAnCiC,EAAAP,EAAoBc,uBAAe,IAAAP,IAAnCA,EAAqCsoE,cAvHhCv4E,iBACb48D,KAAKC,KAAK,CACdn5C,MAAO,uBACP/H,KAAM,uDACNmhD,KAAM,OACN4a,kBAAkB,EAClBC,mBAAoB,UACpBC,kBAAmB,OACnBC,kBAAmB,sBAClBzrE,MAAM1D,IACHA,EAAOovE,cACTvP,GAAQ,GAQL,IAAI77C,SAAQ,KACjBnD,YAAW,KACTg0C,EAAKv1C,EAAMu4D,EAAM,GAChB,IAAK,IATNC,GAAUD,GACZ,GACA,OA8GM76E,cAAA,SACE66E,EAGA76E,cAAA,QAAAX,SAAO8G,EAAE,gDAFTnG,cAAA,QAAAX,SAAO8G,EAAE,mDAGR,cAIL,ECtHK+0E,OA5EWt/D,IAAe,IAADy1D,EAAAiB,EAAAS,EAAAC,EAAAmI,EAAA1H,EAAAC,EAAAC,EAAAyH,EAAAxH,EAAA,IAAb,KAAEtxD,GAAM1G,EAEjC,SAASy/D,EAAWC,GAClB,OAAIA,GAAe,GACVn8B,GACEm8B,EAAc,GAChBn8B,GAEAA,EAEX,CAEA,OACEn/C,cAAAZ,WAAA,CAAAC,SAEAF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAW,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,UAEfx+C,cAAA,OACEsH,UAAW,IACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiB3hE,aACb,0BACA,0BACHrQ,SAE8B,MAA5B,OAAJijB,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiB5iE,aAChB1P,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,MAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,SAGjDF,cAAA,QAAMsH,UAAU,qBAAoBjI,SAClCW,cAAA,KAAGo1C,MAAM,uBAKjBj2C,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OAAKsH,UAAU,yBAAwBjI,cACIG,KAApC,OAAJ8iB,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiByB,oBAChBx0E,cAAA,QAAAX,SACEW,cAAA,OACG4H,IAAKyzE,EAAe,OAAJ/4D,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,GAAQ,QAARmI,EAAfnI,EAAiBvlE,cAAM,IAAA0tE,OAAnB,EAAJA,EAAyB3gF,OACzC0N,IAAI,gBACJhK,MAAM,KACNgC,OAAO,SAIdF,cAAA,QAAAX,SACEW,cAAA,OACE4H,IAAKyzE,EAAe,OAAJ/4D,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,OAAX,EAAJA,EAAiBe,oBACjCtsE,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAMbF,cAAA,UACAA,cAAA,OAAKsH,UAAU,kBAAiBjI,cACWG,KAApC,OAAJ8iB,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiBc,oBAChBr1E,eAAA,QAAAE,SAAA,CAAW,OAAJijB,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,GAAQ,QAARyH,EAAfzH,EAAiBlmE,cAAM,IAAA2tE,OAAnB,EAAJA,EAAyB5gF,MAAM4Z,QAAQ,GAAG,YAEjDjV,eAAA,QAAAE,SAAA,CAAW,OAAJijB,QAAI,IAAJA,GAAe,QAAXsxD,EAAJtxD,EAAM9b,iBAAS,IAAAotE,OAAX,EAAJA,EAAiBY,mBAAmB,qBAMhD,ECtBQ+G,OAlDO3/D,IAAe,IAADy1D,EAAA,IAAb,KAAE/uD,GAAM1G,EAE7B,OACEzc,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACqB,KAA9Bgb,EAAK9b,UAAUkJ,YAAqB,wBAA0B,OAC7DrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAOijB,EAAKk8B,UAEdx+C,cAAA,OACEsH,UAAW,IACsB,MAA3B,OAAJgb,QAAI,IAAJA,OAAI,EAAJA,EAAM9b,UAAUkJ,aACZ,0BACA,0BACHrQ,SAE8B,MAA5B,OAAJijB,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiB3hE,aAChB1P,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,MAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,SAGjDF,cAAA,QAAMsH,UAAU,qBAAoBjI,SAClCW,cAAA,KAAGo1C,MAAM,uBAKjBj2C,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QAAAX,SACEW,cAAA,OAAK4H,ICpCF,ygGDoCwBM,IAAI,gBAAgBhK,MAAM,KAAKgC,OAAO,WAGrEF,cAAA,UACAA,cAAA,OAAKsH,UAAU,kBAAiBjI,cACGG,IAAhC8iB,EAAK9b,UAAUg1E,aACdr8E,eAAA,QAAMmI,UAAU,wBAAuBjI,SAAA,CAAEijB,EAAK9b,UAAUiH,OAAOjT,MAAM,QAErE2E,eAAA,QAAMmI,UAAU,wBAAuBjI,SAAA,CAAEijB,EAAK9b,UAAUg1E,aAAa,eAKvE,E,qBENV,MAAMxlC,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAKZwlC,GAAmB5+D,aAAOvd,IAAPud,CAAmB,CAC1CE,gBAAiB,UACjB,UAAW,CACTA,gBAAiB,aAsLN2+D,OAlLG9/D,IAA6B,IAADg4D,EAAAC,EAAAC,EAAA,IAA3B,KAAExxD,EAAI,KAAEu1C,EAAI,OAAE8jB,GAAQ//D,EACvC,MAAM,YACJ65D,EAAW,eACXC,EAAc,eACd3D,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,EAAe,eACfwwB,EAAc,aACd7Z,GACEj6D,qBAAWC,MAERgU,EAAOwhE,GAAYr1E,mBACC,KAAzBogB,EAAK9b,UAAU8Q,SAEV2xD,EAAcqI,GAAmBpvE,mBACtClF,SAASslB,EAAK9b,UAAUyiE,gBAEnBnkE,EAAM+9D,GAAW3gE,oBAAS,IAC1B1D,EAAMmE,GAAWT,oBAAS,IAC1BozE,EAAgBC,GAAqBrzE,mBAAS,MAC/CszE,EAAiBn9C,iBAAO,MAE9Bv1B,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,EAAgB6D,IAElC9yE,qBAAU,KAAO,IAADuuE,EAAAiB,EAGqBS,GAFnCwE,EAAoC,MAAvB,OAAJj1D,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiB/5D,SAC1B0+D,cAAcR,EAAe36C,SACrB,OAAJvY,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,GAAfA,EAAiBrJ,eACnBqI,EAAoB,OAAJhvD,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiB9J,aACnC,GACC,CAAC3mD,IAEJxf,qBAAU,KACR,GAAIwyE,EACFzS,GAAQ,GACR0S,EAAkB,WACb,IAAuB,IAAnBD,EAA0B,CAAC,IAADtC,EACnCnQ,GAAQ,GACR0S,EAAkB,MAClBgC,EAAoC,MAAvB,OAAJj1D,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiB17D,SAC1B8tC,GAAgB,EAClB,IACC,CAACkwB,IAmCJ,MAAMgB,EAA+BA,KACnCN,cAAcR,EAAe36C,SAC7B,IAAI27C,EAAQ,EACZhB,EAAe36C,QAAU47C,aAAY,KACnCD,IACIA,EAAQ,KACVR,cAAcR,EAAe36C,SAC7B06C,GAAkB,GAClB1S,GAAQ,GACV,GACC,IAAK,EAOV,OACE1jE,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXsxD,EAAJtxD,EAAM9b,iBAAS,IAAAotE,OAAX,EAAJA,EAAiBlkE,aAAqB,wBAA0B,OAC/DrQ,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAW,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,UAEfx+C,cAAA,OACEsH,UAAW,IACuB,MAA5B,OAAJgb,QAAI,IAAJA,GAAe,QAAXuxD,EAAJvxD,EAAM9b,iBAAS,IAAAqtE,OAAX,EAAJA,EAAiBnkE,aACb,0BACA,yBACHrQ,SAE8B,MAA5B,OAAJijB,QAAI,IAAJA,GAAe,QAAXwxD,EAAJxxD,EAAM9b,iBAAS,IAAAstE,OAAX,EAAJA,EAAiBpkE,aAChB1P,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,SAGjDf,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC5B4pE,EACC9pE,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CAAE4pE,EAAa,OACjD,KACJjpE,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QACEsH,UAAWgsE,GAAwBrK,GACnCxpE,QAjCWs4E,KACzBp1E,GAASnE,EAAK,EAgC4Ba,SAE3Bk0E,GAAmBtK,eAOhC9pE,eAAA,OAAKmI,UAAU,0CAAyCjI,SAAA,CACtDW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IAAKmO,EAAQopC,GAAyBA,GACtCj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BnxE,cAAA,OACEsH,UAAW,oCACTxC,GAAO,qBACNzF,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CAACsL,KAAK,SAAS5K,QAASzH,EAAOzN,SAjH7BhO,gBACb48D,KAAKC,KAAK,CACdn5C,MAAO,uBACP/H,KAAM,uDACNmhD,KAAM,OACN4a,kBAAkB,EAClBC,mBAAoB,UACpBC,kBAAmB,OACnBC,kBAAmB,sBAClBzrE,MAAM1D,IACHA,EAAOovE,cACTvP,GAAQ,GAQL,IAAI77C,SAAQ,KAAO,IAADysD,EAAAC,EAAAC,EAEsB,IAA3C32E,SAAa,OAAJslB,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,OAAX,EAAJA,EAAiB/jE,cACO,QAA7B,OAAJ4S,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiBhkE,mBACgBlQ,KAA7B,OAAJ8iB,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,OAAX,EAAJA,EAAiBjkE,cAEjBmoD,EAAKv1C,EAAMvM,GACXugE,KAEAA,GACF,IAhBEiB,GAAUxhE,GACZ,GACA,MAoGM/V,cAAA,SACC+V,EAAQ/V,cAAA,QAAAX,SAAM,cAAmBW,cAAA,QAAAX,SAAM,iBAAqB,SAGjEW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAC6I,IAAI,CAACC,GAAI,eAAe6yE,KAAUr5D,EAAKs5D,UAAUv8E,SAChDW,cAACy7E,GAAgB,CAAAp8E,SACfW,cAAC67E,KAAmB,eAKxB,ECtOH,MAAMC,GAAcj/D,KAAOgI,GAAG;YACzBlnB,GAASA,EAAMyqB,KAAO,GAAGzqB,EAAMyqB,SAAW;WAC3CzqB,GAASA,EAAMyqB,KAAO,GAAGzqB,EAAMyqB,SAAW;;;;;EAQxC2zD,GAAgBl/D,KAAOgI,GAAG;;;;;;;;;EAW1Bm3D,GAAcn/D,KAAOgI,GAAG;;cAEvBlnB,IAAc,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOs+E,QAAS,EAAI,GAAQ,OAALt+E,QAAK,IAALA,OAAK,EAALA,EAAOs+E,SAAW;YACpDt+E,GAAQ,IAAMA,EAAMs+E;;;;;;;;;;EAanBC,GAAcr/D,KAAOs/D,IAAI;;;;ECbvBC,OAjBMz+E,GAEjBwB,eAAC28E,GAAW,CAAC1zD,KAAMzqB,EAAMyqB,KAAK/oB,SAAA,CAC5BW,cAAC+7E,GAAa,CAAA18E,SACZW,cAACg8E,GAAW,CAACC,MAAOt+E,EAAMs+E,UAG5Bj8E,cAACk8E,GAAW,OCdX,MAAMG,GAAuBx/D,KAAOgI,GAAG;;;;;;;;;EAUjCy3D,GAAsBz/D,KAAOgI,GAAG;;;;;;;;sBAQtBlnB,GACnBA,EAAM4+E,OAAS,yBAA2B;;;;;;EAQjCC,GAAqB3/D,KAAOgI,GAAG;;;;;;;;;;;;EAc/B43D,GAAiB5/D,KAAOgI,GAAG;;;;;;;;;;EAW3B63D,GAAwB7/D,KAAOgI,GAAG;;;EAIlC83D,GAAgB9/D,KAAO7R,MAAM;;;;;;;;;;;;;;;EC1DnC,SAAS4xE,GACdC,EACAC,EACAb,EACAc,EACAC,EACAC,EACAC,GAEAD,EAASC,GACTlH,cAAyB,OAAXgH,QAAW,IAAXA,OAAW,EAAXA,EAAaniD,SAC3BmiD,EAAYniD,QAAU47C,aAAY,KAChCsG,GAAmBI,IAEjB,IAAIxtC,EAAWmtC,EAAcK,EADhB,GACmCA,EADnC,GAUb,OARAxtC,EAAWmtC,EACPv2D,KAAKgtB,IAAI5D,EAAUktC,GACnBt2D,KAAKitB,IAAI7D,EAAU,IAEnBA,IAAaktC,IAAYC,GAAentC,GAAY,KACtDqmC,cAAyB,OAAXgH,QAAW,IAAXA,OAAW,EAAXA,EAAaniD,SAC3BoiD,EAASttC,IAEJA,CAAQ,GACf,GACD,IACL,CAEO,SAASytC,GAAahuD,EAAaprB,GACxC,GAAoB,cAAhBorB,EAA6B,CAAC,IAADiuD,EAAAC,EAAAC,EAC/B,MAAMluC,EAAY,OAAJrrC,QAAI,IAAJA,GAAc,QAAVq5E,EAAJr5E,EAAMw5E,gBAAQ,IAAAH,GAAW,QAAXC,EAAdD,EAAgB72E,iBAAS,IAAA82E,GAAO,QAAPC,EAAzBD,EAA2BG,aAAK,IAAAF,OAA5B,EAAJA,EAAkCtlE,MAC7C2W,GAA6B,WAAjBA,EAAQtzB,OAEvB,OAAO0B,SAASqyC,EAAM5hC,OACxB,CAA0C,IAADiwE,EAAAC,EAAlC,GAAoB,eAAhBvuD,EACT,OAAOpyB,SAAa,OAAJgH,QAAI,IAAJA,GAAU,QAAN05E,EAAJ15E,EAAMse,YAAI,IAAAo7D,GAAW,QAAXC,EAAVD,EAAYl3E,iBAAS,IAAAm3E,OAAjB,EAAJA,EAAuBC,gBAE3C,CAMO,SAASC,GACdluC,EACAstC,EACAD,EACAD,IARK,SAAoBC,GACzBhH,cAAcgH,EAAYniD,QAC5B,CAQEijD,CAAWd,GACXC,EAASttC,GACTotC,EAAkBptC,EACpB,CAEO,MAAMouC,GAAuBA,CAClCC,EACAC,EACAC,EACA9uD,IAEoB,cAAhBA,KACE4uD,IAAoBC,GAKC,eAAhB7uD,EACgB,MAArB8uD,QAAiD1+E,IAArB0+E,OAD3B,EASIC,GAAoBA,CAC/BC,EACAC,EACAzoB,EACAxmC,EACAkvD,EACAC,KAEA,IACE,GAAoB,eAAhBnvD,EACF,OAAIwmC,GAAUA,EAAO4oB,aAAeC,UAAUC,MAC5C9oB,EAAOiC,KAAK9xD,KAAKC,UAAUo4E,IACpB,CAAEl7D,SAAS,EAAMV,QAAS,kCAEjC/d,QAAQD,MACN,sEAEK,CACL0e,SAAS,EACTV,QACE,uEAGmB,cAAhB4M,IACTkvD,EAAY,CACV/+E,GAAIrD,OAAmB,OAAZmiF,QAAY,IAAZA,OAAY,EAAZA,EAAc9+E,IACzBo/E,UAAuB,OAAZN,QAAY,IAAZA,OAAY,EAAZA,EAAcM,UACzBnkF,MAAmB,OAAZ6jF,QAAY,IAAZA,OAAY,EAAZA,EAAc7jF,MACrBs9D,QAAqB,OAAZumB,QAAY,IAAZA,OAAY,EAAZA,EAAcznB,OACvBA,OAAoB,OAAZynB,QAAY,IAAZA,OAAY,EAAZA,EAAcznB,SAEQ,iBAAhB,OAAZynB,QAAY,IAAZA,OAAY,EAAZA,EAAcM,YAChBJ,GAAgB,GAGtB,CAAE,MAAO/5E,GAEP,OADAC,QAAQD,MAAM,yBAA0BA,EAAMge,SACvC,CAAEU,SAAS,EAAOV,QAAS,yBACpC,G,cCrFF,MAGMo8D,GAAY/hE,aAAOgiE,KAAPhiE,EAAejB,IAAA,IAAC,MAAES,GAAOT,EAAA,MAAM,CAC/Che,MAA8B,SAAvBye,EAAMY,QAAQ6hE,KAAkB,UAAY,UACnD5+E,OAAQ,EACRkJ,QAAS,SACT,qBAAsB,CACpBlJ,OAAQ,GACRhC,MAAO,GACP6e,gBAAiB,OACjB4hB,UAAW,iCACX,iCAAkC,CAChCA,UAAW,qCACX,uBAAwB,CACtBA,UAdN,oFAiBE,WAAY,CACVA,UACE,wGAGN,0BAA2B,CACzB9gC,SAAU,GACVkhB,WAAY,SACZ2oB,IAAK,EACL3qB,gBAAiB,QACjBnf,MAAOye,EAAMY,QAAQhH,KAAKnM,QAC1B,YAAa,CACX2S,QAAS,QAEX,MAAO,CACL5U,WAAY,cACZjK,MAA8B,SAAvBye,EAAMY,QAAQ6hE,KAAkB,OAAS,SAGpD,qBAAsB,CACpB7gF,OAAQ,OACRiC,OAAQ,GAEV,oBAAqB,CACnB2+B,QAAS,GACTF,UAAW,8BACX5hB,gBAAiB,WAEpB,IAkPcgiE,OAhPQphF,IAAW,IAADqhF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC/B,MAAM,EAAEp6E,GAAMC,cACRgpB,EAAc9V,KACd2kE,EAAwB,OAALtgF,QAAK,IAALA,OAAK,EAALA,EAAOsgF,iBAC1Bt+B,EAAkB,OAALhiD,QAAK,IAALA,OAAK,EAALA,EAAOgiD,YACnB6gC,EAAYC,GAAiBv+E,mBAAc,OAALvE,QAAK,IAALA,GAAW,QAANqhF,EAALrhF,EAAO2kB,YAAI,IAAA08D,OAAN,EAALA,EAAaz/E,IACpDmhF,EAAgB,OAAL/iF,QAAK,IAALA,GAAe,QAAVshF,EAALthF,EAAO6/E,gBAAQ,IAAAyB,GAAW,QAAXC,EAAfD,EAAiBz4E,iBAAS,IAAA04E,GAAO,QAAPC,EAA1BD,EAA4BzB,aAAK,IAAA0B,OAA5B,EAALA,EAAmClnE,MACjD2W,GAA6B,WAAjBA,EAAQtzB,OAEjBqlF,EAAoB,OAALhjF,QAAK,IAALA,GAAe,QAAVyhF,EAALzhF,EAAO6/E,gBAAQ,IAAA4B,GAAW,QAAXC,EAAfD,EAAiB54E,iBAAS,IAAA64E,GAAO,QAAPC,EAA1BD,EAA4B5B,aAAK,IAAA6B,OAA5B,EAALA,EAAmCrnE,MACrD2W,GAA6B,gBAAjBA,EAAQtzB,QAEhBslF,EAAcrC,GAAmBr8E,oBAAS,IAC1C+5E,EAAOgB,GAAY/6E,mBACnB,OAALvE,QAAK,IAALA,GAAW,QAAN4hF,EAAL5hF,EAAO2kB,YAAI,IAAAi9D,GAAW,QAAXC,EAAXD,EAAa/4E,iBAAS,IAAAg5E,GAAtBA,EAAwB5B,gBACf,OAALjgF,QAAK,IAALA,GAAW,QAAN8hF,EAAL9hF,EAAO2kB,YAAI,IAAAm9D,GAAW,QAAXC,EAAXD,EAAaj5E,iBAAS,IAAAk5E,OAAjB,EAALA,EAAwB9B,gBAChB,OAAR8C,QAAQ,IAARA,OAAQ,EAARA,EAAUjzE,SAETyvE,EAAgBH,GAAqB76E,mBAC1Ck7E,GAAahuD,EAAazxB,IAEtBkjF,EAAoB,OAALljF,QAAK,IAALA,GAAW,QAANgiF,EAALhiF,EAAO2kB,YAAI,IAAAq9D,GAAW,QAAXC,EAAXD,EAAan5E,iBAAS,IAAAo5E,GAAtBA,EAAwBhC,gBACpC,OAALjgF,QAAK,IAALA,GAAW,QAANkiF,EAALliF,EAAO2kB,YAAI,IAAAu9D,GAAW,QAAXC,EAAXD,EAAar5E,iBAAS,IAAAs5E,OAAjB,EAALA,EAAwBlC,gBAChB,OAAR8C,QAAQ,IAARA,OAAQ,EAARA,EAAUjzE,QACPmoD,EAAQC,GAAa3zD,mBAAS,MAC/B86E,EAAc3kD,iBAAO,MAK3B+kD,GAAahuD,EAAazxB,GAE1B,MAAMygF,EAAe,CACnBpmB,UAAgB,OAALr6D,QAAK,IAALA,GAAW,QAANoiF,EAALpiF,EAAO2kB,YAAI,IAAAy9D,OAAN,EAALA,EAAae,iBACxBlqB,OAAa,OAALj5D,QAAK,IAALA,OAAK,EAALA,EAAOi5D,OACf15C,OAAQ,YACR1iB,MAAOyhF,EACP1N,SAAU,gBAGN8P,EAAe,CACnBznB,OAAa,OAALj5D,QAAK,IAALA,OAAK,EAALA,EAAOi5D,OACfr3D,GAAY,OAARmhF,QAAQ,IAARA,OAAQ,EAARA,EAAUK,QACdpC,UAAW,iBACXnkF,MAAOyhF,GAGH+E,EAAe,CACnBhpB,UAAgB,OAALr6D,QAAK,IAALA,GAAW,QAANqiF,EAALriF,EAAO2kB,YAAI,IAAA09D,OAAN,EAALA,EAAac,iBACxBlqB,OAAa,OAALj5D,QAAK,IAALA,OAAK,EAALA,EAAOi5D,OACf15C,OAAQ,cACRqxD,SAAU,gBAGN0S,EAAe,CACnBrqB,OAAa,OAALj5D,QAAK,IAALA,OAAK,EAALA,EAAOi5D,OACfr3D,GAAgB,OAAZohF,QAAY,IAAZA,OAAY,EAAZA,EAAcI,QAClBpC,UAAW,cACXnkF,MAAO,GAGH0jF,EAAmB,CACvBgD,WAAiB,OAALvjF,QAAK,IAALA,GAAW,QAANsiF,EAALtiF,EAAO2kB,YAAI,IAAA29D,GAAW,QAAXC,EAAXD,EAAaz5E,iBAAS,IAAA05E,OAAjB,EAALA,EAAwBxwE,YACpCC,QAAc,OAALhS,QAAK,IAALA,GAAW,QAANwiF,EAALxiF,EAAO2kB,YAAI,IAAA69D,OAAN,EAALA,EAAaxwE,SAGlBquE,EAAmB,CACvBzB,OAAa,OAAL5+E,QAAK,IAALA,GAAe,QAAVyiF,EAALziF,EAAO6/E,gBAAQ,IAAA4C,GAAW,QAAXC,EAAfD,EAAiB55E,iBAAS,IAAA65E,OAArB,EAALA,EAA4B9D,OACpC5sE,QAAc,OAALhS,QAAK,IAALA,GAAe,QAAV2iF,EAAL3iF,EAAO6/E,gBAAQ,IAAA8C,OAAV,EAALA,EAAiB3wE,SAG5B7M,qBAAU,KACR,MAAMq+E,EAAUt9D,YAAW,KACrBo4D,IAAU4E,GACZ1C,GACEC,EACAC,EACAzoB,EACAxmC,EACK,OAALzxB,QAAK,IAALA,OAAK,EAALA,EAAO2gF,YAEX,GACC,MACH,MAAO,IAAM8C,aAAaD,EAAQ,GACjC,CAAClF,IAEJn5E,qBAAU,KACR,QACoBtD,KAAb,OAAL7B,QAAK,IAALA,OAAK,EAALA,EAAOi5D,SACa,QAAf,OAALj5D,QAAK,IAALA,OAAK,EAALA,EAAO0jF,gBACa7hF,KAAf,OAAL7B,QAAK,IAALA,OAAK,EAALA,EAAO0jF,UACP,CACIzrB,IACFA,EAAO2B,QAAU3B,EAAO4B,OAAS5B,EAAO6B,QAAU,KAClD7B,EAAO8B,SAET,MAAMC,EAAY,IAAIC,gBAAa,GAAQ,OAALj6D,QAAK,IAALA,OAAK,EAALA,EAAO0jF,YA0B7C,OAzBA1pB,EAAUH,OAAS,KACR,OAAL75D,QAAK,IAALA,KAAOi5D,QACTe,EAAUE,KAAK9xD,KAAKC,UAAU,CAAE8xD,QAAc,OAALn6D,QAAK,IAALA,OAAK,EAALA,EAAOi5D,SAAU,EAE9De,EAAUJ,QAAU,WAClB9yD,QAAQ+f,IAAI,oDACd,EACAmzC,EAAUI,UAAY,SAAUh4C,GAC9B,GAAsB,kBAAXA,EAAE/b,KAAmB,CAC9B,MAAMF,EAAWiC,KAAK4Q,MAAMoJ,EAAE/b,MAER,oBAAZ,OAARF,QAAQ,IAARA,OAAQ,EAARA,EAAUoZ,UACF,OAARpZ,QAAQ,IAARA,OAAQ,EAARA,EAAUk0D,YAAawoB,GAEvBzD,EAAkB//E,SAAS8G,EAAS2J,QAExC,CAGF,EACAkqD,EAAUF,QAAU,KAClB5B,EAAU,KAAK,EAEjBA,EAAU8B,GAEH,KACDA,GAAWA,EAAUD,OAAO,CAEpC,IACC,CAAM,OAAL/5D,QAAK,IAALA,OAAK,EAALA,EAAOi5D,SAEX9zD,qBAAU,KAEmB,gBAAf,OAAV68C,QAAU,IAAVA,OAAU,EAAVA,EAAYjnC,WACe,YAAjB,OAAVinC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,cACF,OAAV3hC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAmB,OAARqI,QAAQ,IAARA,OAAQ,EAARA,EAAUK,WAEjChE,EAAkB//E,SAAmB,OAAV2iD,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,QACvCwrE,EAA2B,OAAV5hC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,OAC/B,GAEC,CAAC4pC,IAEJ,MAAM4hC,EAAoB5hC,IAEtB4+B,EADEtC,IAAUt8B,EAId,EAGF,OACExgD,eAACk9E,GAAoB,CAAAh9E,SAAA,CACnBW,cAACs8E,GAAmB,CAClBC,OAAQwB,GACU,OAAhBC,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBzB,OAClB0B,EACgB,OAAhBC,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBgD,WAClB9xD,GACA/vB,SAEI,OAAL1B,QAAK,IAALA,GAAW,QAAN4iF,EAAL5iF,EAAO2kB,YAAI,IAAAi+D,OAAN,EAALA,EAAa/hC,QAEhBr/C,eAACq9E,GAAkB,CAAAn9E,SAAA,CACjBW,cAACo8E,GAAW,CAACH,MAAOiB,EAAgB90D,KAAK,OACxC80D,EAAe,OAElB/9E,eAACs9E,GAAc,CAAAp9E,SAAA,CACbW,cAAC4+E,GAAS,CACR4C,kBAAkB,KAClBl5E,SAAUA,CAAC5I,EAAOiwC,IAChBixC,EACI/C,GACEluC,EACAstC,EACAD,EACAD,GAEF,KAEN,aAAW,cACX0E,iBAvJR,SAAmBjnF,GACjB,MAAO,GAAGA,IACZ,EAsJQ+4C,IAAK,EACLC,IAAK,IACLh5C,MAAO0iF,IAET/9E,eAACu9E,GAAqB,CAAAr9E,SAAA,CACpBF,eAACw9E,GAAa,CACZl9E,QAASA,IACPm9E,GACE,GACA,EACAX,EACAc,EACAC,EACAC,EACAC,GAEH79E,SAAA,CAEDW,cAAA,KAAGsH,UAAU,wBACZnB,EAAE,8CAELhH,eAACw9E,GAAa,CACZl9E,QAASA,IACP0+E,GACE6C,EACAC,EACArrB,EACAxmC,EACK,OAALzxB,QAAK,IAALA,OAAK,EAALA,EAAO2gF,YACPC,GAGJj3E,UAAU,aAAYjI,SAAA,CAEtBW,cAAA,KAAGsH,UAAU,uBACZnB,EAAE,8CAELhH,eAACw9E,GAAa,CACZl9E,QAASA,IACPm9E,GACE,KACA,EACAX,EACAc,EACAC,EACAC,EACAC,GAEH79E,SAAA,CAEDW,cAAA,KAAGsH,UAAU,sBACZnB,EAAE,oDAIY,ECtTZ,OAA0B,iCCiB3B8c,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KALc,cCCpB,MAAM6yB,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAwMHyrC,OAnMA9lE,IAMR,IANS,YACd+lE,EAAW,YACXrD,EAAW,OACX1nB,EAAM,WACNjX,EAAU,iBACVs+B,GACDriE,EACC,MAAM,EAAEzV,GAAMC,eACR,MAAEo4C,EAAK,UAAEh4C,GAAcm7E,GACvB,QAAEZ,EAAO,OAAEtzE,EAAM,OAAE8uE,GAAW/1E,GAC7Bo7E,EAAWC,GAAgB3/E,oBAAS,IACpC4/E,EAAcC,GAAmB7/E,mBAASuL,IAC1Cu0E,EAAeC,GAAoB//E,oBAAS,IAC5C4C,EAAM+9D,GAAW3gE,oBAAS,IAC1BozE,EAAgBC,GAAqBrzE,mBAAS,MAC/CszE,EAAiBn9C,iBAAO,OAExB,eACJ05C,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,EAAe,eACfwwB,EAAc,kBACdoB,EAAiB,gBACjBkL,EAAe,oBACfl4E,GACElI,qBAAWC,KAEfe,qBAAU,KACoB,WAAxB68C,EAAWjnC,UAAyBinC,EAAW04B,SAAW0I,IAC5DgB,EAAgBpiC,EAAW5pC,OAC3BigE,cAAcR,EAAe36C,SACzBmnD,IACFzM,GAAkB,GAClB0M,GAAiB,IAErB,GACC,CAACtiC,EAAYqiC,IAUhBl/E,qBAAU,KACJwyE,GACFK,GAAkB,GAClB9xD,YAAW,KACTg/C,GAAQ,EAAM,GACb,MACH0S,EAAkB,MAClB0M,GAAiB,KACW,IAAnB3M,IACT0B,GAAkB,GAClBnzD,YAAW,KACTg/C,GAAQ,EAAM,GACb,MACHkf,EAAgBt0E,GAChB8nE,EAAkB,MAClB0M,GAAiB,GACnB,GACC,CAAC3M,IAQJ,MAiBM6M,EAA0BA,KAC9B,GAAI5F,GAAU0B,EAAkB,CAC9B8D,GAAiBD,GAKjBxD,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIwhF,EACJpC,UAAW,eACXnkF,MAAO0B,QATU4lF,KAWnBjf,GAAQ,GACRof,GAAiB,GA5BgB3L,MACnCN,cAAcR,EAAe36C,SAC7B,IAAI27C,EAAQ,EACZhB,EAAe36C,QAAU47C,aAAY,KACnCD,IACIA,EAAQ,KACVR,cAAcR,EAAe36C,SAC7B06C,GAAkB,GAClB1S,GAAQ,GACV,GACC,IAAK,EAmBNyT,EACF,MACEzT,GAAQ,GACRh/C,YAAW,KACTuhC,GAAgB,GAChByd,GAAQ,EAAM,GACb,IACL,EAGgC,IAADt4D,EAAjC,GAAoB,cAAhBo3E,EACF,OACE3hF,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACTi1E,GAAU0B,EAAmB,KAAO,0BACnC5+E,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAAEm/C,IAClCx+C,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QACEsH,UACEi1E,GAAU0B,EACN,qBACA,6BACL5+E,SAEDW,cAAA,KAAGo1C,MAAM,uBAIfj2C,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEk6E,EACI3iC,GACAA,GAENj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BnxE,cAAA,OACEsH,UAAW,oCACTxC,GAAO,qBACNzF,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASskE,EACTx5E,WACqB,OAAnB0B,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cAClCsP,MAKVniF,cAAA,SACE8hF,EAGA9hF,cAAA,QAAAX,SAAO8G,EAAE,wCAFTnG,cAAA,QAAAX,SAAO8G,EAAE,qDAezB,EC5MK,MAYMotE,GAAsBtK,GAC5BA,EAEMA,EAAe,GACjBjpE,cAACyyE,KAAe,IACdxJ,EAAe,GACjBjpE,cAACyoE,KAAa,IACZQ,EAAe,GACjBjpE,cAACwoE,KAAa,IACZS,EAAe,GACjBjpE,cAACuoE,KAAa,IACZU,EAAe,GACjBjpE,cAAC0yE,KAAa,IACZzJ,EAAe,GACjBjpE,cAAC2yE,KAAa,IACZ1J,EAAe,GACjBjpE,cAACqoE,KAAa,IAEdroE,cAAC4yE,KAAgB,IAhBjB5yE,cAACi7E,KAAkB,ICRxBxnB,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAEMqL,GAAYC,cAAYoT,IAAK,CACjCs7D,cAAe,CACbruE,WAAY+S,EAAMwY,QAAQ,GAC1Bj3B,MAAO,QACPg6E,WAAY,GACZt5C,KAAM,GAERtgB,MAAO,CACLngB,SAAU,IAEZg6E,aAAc,CACZ77D,YAAa,GACb5S,QAAS,WACTw1B,OAAQ,UACR7+B,aAAc,GACd,UAAW,CACTgd,gBAAiB,gBAmFRqlE,OA9EUxmE,IAKlB,IAADyB,EAAAglE,EAAA,IALoB,YACxBvK,EAAW,mBACXC,EAAkB,KAClBz8E,EAAI,WACJgnF,GACD1mE,EACC,MAAMnS,EAAUT,MACV,QAAEuR,EAAO,MAAE/V,EAAK,KAAER,GAASwW,aAASq4B,GAAyB,CACjErsC,UAAW,CAAE6xE,OAAQiK,MAGhB/H,EAAaC,GAAkBt4E,qBAWtC,OATAY,qBAAU,KACR,IAAKyX,IAAY/V,GAASR,EAAM,CAAC,IAADq1E,EAC9B,MAAMkJ,EAAgD,QAArClJ,EAAGr1E,EAAK80E,qCAA6B,IAAAO,OAAA,EAAlCA,EAAoCr1E,UACpCxE,IAAhB+iF,GAAoD,IAAvBA,EAAY1zE,QAC3C2rE,EAAe+H,EAEnB,IACC,CAACv+E,IAGF7E,eAACoiB,KAAM,CACL84C,WAAS,EACT74C,YAAU,EACVhjB,KAAMs5E,EACNx3E,QAASy3E,EACTpe,oBAAqBlG,GAAWp0D,SAAA,CAEhCF,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,QAAMsH,UAAWmC,EAAQouE,aAAcp4E,QAASs4E,EAAmB14E,SAAC,MAGpEF,eAAA,QACE6e,MAAO,wBAAwBnf,aAAaC,QAC1C,oBACKxD,IACPgM,UAAU,oCAAmCjI,SAAA,CAC9C,wBACuB,GAAGR,aAAaC,QAAQ,iBAAiB,KAAG,IACjExD,QAGL0E,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC5Bk7E,GAAsC,IAAvBA,EAAY1rE,OAG3B1P,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAACi5E,GAAiB,CAACj1E,KAAMA,EAAMorB,YAAa,cAC5CjwB,eAAA,OAAKmI,UAAU,iCAAgCjI,SAAA,CAC7CW,cAAA,OAAKsH,UAAU,4BAA2BjI,SAAC,UAC3CW,cAAA,OAAKsH,UAAU,6BAA4BjI,SAAC,aAE7B,QADXge,EACL,IAAIk9D,UAAY,IAAAl9D,GAAW,QAAXglE,EAAhBhlE,EAAkB07D,iBAAS,IAAAsJ,OAAX,EAAhBA,EAA6BrmF,KAAKqS,IACjClP,sBAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,OAAKsH,UAAU,sBAAqBjI,SACjCuW,GAAiB,OAADvH,QAAC,IAADA,OAAC,EAADA,EAAGimC,KAEtBn1C,eAAA,OAAKmI,UAAU,uBAAsBjI,SAAA,CACnCF,eAAA,QAAMmI,UAAU,0BAAyBjI,SAAA,CAAG,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGE,EAAE,OAChDvO,cAAA,QACEsH,UAAW,6BD7FS2hE,EC8FjB,OAAD56D,QAAC,IAADA,OAAC,EAADA,EAAGE,ED7FlB06D,EAEMA,GAAgB,KAAOA,GAAgB,GACzC,wBACEA,GAAgB,IAAMA,GAAgB,GACxC,4BACEA,GAAgB,IAAMA,GAAgB,EACxC,mCADF,EALE,kCC6Fa5pE,SAEHk0E,GAAoB,OAADllE,QAAC,IAADA,OAAC,EAADA,EAAGE,UAXmB,OAADF,QAAC,IAADA,OAAC,EAADA,EAAG9O,IDtFxB0pE,KCqG3B,OAxBHjpE,cAAA,OAAKsH,UAAU,uBAAsBjI,SAAC,qBA4BnC,EC3GN,MAAMi0E,GAA2BrK,GACjCA,GAAiC,IAAjBA,EAEVA,GAAgB,KAAOA,GAAgB,GACzC,wBACEA,GAAgB,IAAMA,GAAgB,GACxC,4BACEA,GAAgB,IAAMA,GAAgB,EACxC,mCADF,EALE,gCAUEsK,GAAsBtK,IACjC,GAAKA,GAAiC,IAAjBA,EAEd,IAAIA,EAAe,GACxB,OAAOjpE,cAACyyE,KAAe,IAClB,GAAIxJ,EAAe,GACxB,OAAOjpE,cAACyoE,KAAa,IAChB,GAAIQ,EAAe,GACxB,OAAOjpE,cAACwoE,KAAa,IAChB,GAAIS,EAAe,GACxB,OAAOjpE,cAACuoE,KAAa,IAChB,GAAIU,EAAe,GACxB,OAAOjpE,cAAC0yE,KAAa,IAChB,GAAIzJ,EAAe,GACxB,OAAOjpE,cAAC2yE,KAAa,IAChB,GAAI1J,EAAe,GACxB,OAAOjpE,cAACqoE,KAAa,IAChB,GAAIY,EAAe,GACxB,OAAOjpE,cAAC4yE,KAAgB,GAC1B,QCbI58B,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SA2JHusC,OAtJO5mE,IAAuD,IAAD6mE,EAAAl4E,EAAA,IAArD,OAAEm4E,EAAM,OAAE9rB,EAAM,WAAEjX,EAAU,iBAAEs+B,GAAkBriE,EACrE,MAAM,EAAEzV,GAAMC,eACP5H,EAAMmE,GAAWT,oBAAS,IAC3B,MAAEs8C,EAAK,UAAEh4C,EAAS,SAAEiS,EAAQ,KAAEnd,GAASonF,GACvC,SAAEhqE,EAAQ,aAAEC,GAAiBF,GAC7B,MAAEglE,EAAK,OAAEhwE,EAAM,KAAEjF,EAAI,OAAE+zE,GAAW/1E,GACjCq0E,EAAOC,GAAY54E,oBAAS,IAC5BygF,EAAYC,GAAiB1gF,mBAC7B,OAALu7E,QAAK,IAALA,GAAiD,QAA5CgF,EAALhF,EAAOxlE,MAAM8H,GAAkB,qBAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAA2B,IAAAmnF,OAA5C,EAALA,EAAmDh1E,SAE9Co1E,EAASC,GAAc5gF,mBAAS,CACrC6gF,eAAgB,GAChBC,kBAAmB,MAEf,oBAAEh5E,GAAwBlI,qBAAWC,KAE3Ce,qBAAU,KACR,IACY,OAAV68C,QAAU,IAAVA,OAAU,EAAVA,EAAYjnC,YAAaA,GACR,SAAjBC,GAC2B,qBAAjB,OAAVgnC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,YACZ,EACkB,OAAL7D,QAAK,IAALA,OAAK,EAALA,EAAOxlE,MAAM8H,GAAMA,EAAEghE,WAAsB,OAAVphC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,YAExDuK,EAAwB,OAAVjjC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,MAE9B,CAEA,MAAMktE,EAA2B,OAATz8E,QAAS,IAATA,OAAS,EAATA,EAAWi3E,MAAMxlE,MACtCqK,GAAuB,YAAdA,EAAKhnB,OAEb2nF,GACFH,EAAW,CACTC,eAA+B,OAAfE,QAAe,IAAfA,OAAe,EAAfA,EAAiBlC,QACjCiC,kBAAkC,OAAfC,QAAe,IAAfA,OAAe,EAAfA,EAAiBx1E,QAExC,GACC,CAACkyC,IAEJ,MAIMo4B,EAAqBA,KACzBp1E,GAASnE,EAAK,EAGhB,OACEwB,cAAAZ,WAAA,CAAAC,SACY,gBAATmJ,GACCrJ,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACTi1E,GAAU0B,EAAmB,KAAO,0BACnC5+E,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAOm/C,MAETx+C,cAAA,OACEsH,UAAW,IACTk3C,EAAQ,0BAA4B,yBACnCn/C,SAEDm/C,EAKAr/C,eAAA,OAAKmI,UAAU,iBAAiB7H,QAASs4E,EAAmB14E,SAAA,EAClD,OAAPwjF,QAAO,IAAPA,OAAO,EAAPA,EAASG,oBACR7jF,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CAC1B,OAAPwjF,QAAO,IAAPA,OAAO,EAAPA,EAASG,kBAAkB,OAIhChjF,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QACEsH,UAAWgsE,GACF,OAAPuP,QAAO,IAAPA,OAAO,EAAPA,EAASG,mBACT3jF,SAEDk0E,GAA0B,OAAPsP,QAAO,IAAPA,OAAO,EAAPA,EAASG,0BAjBnChjF,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,cAuBvDf,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,0BAERjI,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACE+6E,EACIxjC,GACAA,GAENj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,UAC9Bm/C,GAAQx+C,cAACmxE,GAAe,MAE5BnxE,cAAA,OACEsH,UAAW,mCACRk3C,GAAQ,qBACRn/C,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASq9D,EACTvyE,WACqB,OAAnB0B,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cAnF/BqQ,MACzBpI,GAAUD,EAAM,OAwFJ76E,cAAA,SACC2iF,EACC3iF,cAAA,QAAAX,SACG8G,EAAE,kDAGLnG,cAAA,QAAAX,SAAO8G,EAAE,uDAKjBnG,cAACoiF,GAAgB,CACfE,WAAmB,OAAPO,QAAO,IAAPA,OAAO,EAAPA,EAASE,eACrBhL,mBAAoBA,EACpBz8E,KAAMkjD,EACNs5B,YAAat5E,QAIlB,EClKP,MAAMw3C,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SA8LHktC,OAzLSvnE,IAAuD,IAAD6mE,EAAAl4E,EAAA,IAArD,OAAEm4E,EAAM,OAAE9rB,EAAM,WAAEjX,EAAU,iBAAEs+B,GAAkBriE,EACvE,MAAM,EAAEzV,GAAMC,eACP5H,EAAMmE,GAAWT,oBAAS,IAC3B,MAAEs8C,EAAK,UAAEh4C,EAAS,SAAEiS,EAAQ,KAAEnd,GAASonF,GACvC,SAAEhqE,EAAQ,aAAEC,GAAiBF,GAC7B,OAAEhL,EAAM,KAAEjF,EAAI,MAAEi1E,EAAK,OAAElB,GAAW/1E,GACjCq0E,EAAOC,GAAY54E,oBAAS,IAC5BkhF,EAAcC,GAAmBnhF,mBACjC,OAALu7E,QAAK,IAALA,GAAwC,QAAnCgF,EAALhF,EAAOxlE,MAAM8H,GAAkB,YAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAkB,IAAAmnF,OAAnC,EAALA,EAA0Ch1E,SAErCo1E,EAASC,GAAc5gF,mBAAS,CACrC6gF,eAAgB,GAChBC,kBAAmB,MAEf,oBAAEh5E,GAAwBlI,qBAAWC,KAE3Ce,qBAAU,KACR,GACE68C,EAAWjnC,WAAaA,GACP,WAAjBC,GAC0B,WAA1BgnC,EAAW2hC,WACX,EACkB,OAAL7D,QAAK,IAALA,OAAK,EAALA,EAAOxlE,MAAM8H,GAAMA,EAAEghE,UAAYphC,EAAW04B,WAEvDgL,EAAgB1jC,EAAW5pC,MAE/B,CAEA,MAAMktE,EAAkBz8E,EAAUi3E,MAAMxlE,MACrCqK,GAAuB,YAAdA,EAAKhnB,OAEb2nF,GACFH,EAAW,CACTC,eAAgBE,EAAgBlC,QAChCiC,kBAAmBC,EAAgBx1E,QAEvC,GACC,CAACkyC,IAEJ,MAIMo4B,EAAqBA,KACzBp1E,GAASnE,EAAK,EAEhB,OACEwB,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OACEmI,UAAW,oCACTi1E,GAAU0B,EAAmB,KAAO,0BACnC5+E,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAOm/C,MAETx+C,cAAA,OACEsH,UAAW,IACRu7E,EAAQG,kBAEL,wBADA,2BAEH3jF,SAEDm/C,EAKAx+C,cAAAZ,WAAA,CAAAC,SACGwjF,EAAQG,mBACP7jF,eAAA,OACEmI,UAAU,mBACV7H,QAASs4E,EAAmB14E,SAAA,CAE5BW,cAAA,OAAKsH,UAAU,YAAWjI,SACxBF,eAAA,QAAAE,SAAA,CAAOwjF,EAAQG,kBAAkB,SAEnChjF,cAAA,OAAKsH,UAAU,YAAWjI,SACvBwjF,EAAQG,mBACP7jF,eAAA,QAAAE,SAAA,CAAOwjF,EAAQG,kBAAkB,SAGrChjF,cAAA,OAAKsH,UAAU,YAAWjI,SACxBW,cAAA,QACEsH,UACGu7E,EAAQG,kBAELH,EAAQG,mBAAqB,GAC7B,gCACAH,EAAQG,mBAAqB,GAC7B,8BACA,wBALA,gCAML3jF,SAECwjF,EAAQG,kBAENH,EAAQG,kBAAoB,GAC9BhjF,cAACyyE,KAAe,IACdoQ,EAAQG,kBAAoB,GAC9BhjF,cAACyoE,KAAa,IACZoa,EAAQG,kBAAoB,GAC9BhjF,cAACwoE,KAAa,IACZqa,EAAQG,kBAAoB,GAC9BhjF,cAACuoE,KAAa,IACZsa,EAAQG,kBAAoB,GAC9BhjF,cAAC0yE,KAAa,IACZmQ,EAAQG,kBAAoB,GAC9BhjF,cAAC2yE,KAAa,IACZkQ,EAAQG,kBAAoB,GAC9BhjF,cAACqoE,KAAa,IAEdroE,cAAC4yE,KAAgB,IAhBjB5yE,cAACi7E,KAAkB,aA/B/Bj7E,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,GAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,cAwDvDf,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,+BAERjI,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEw7E,EACIjkC,GACAA,GAENj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,UAC9Bm/C,GAAQx+C,cAACmxE,GAAe,MAE5BnxE,cAAA,OACEsH,UAAW,mCACRk3C,GAAQ,qBACRn/C,SAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASq9D,EACTvyE,WACqB,OAAnB0B,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cApH7BqQ,MACzBpI,GAAUD,EAAM,OAyHN76E,cAAA,SACE66E,EAKA76E,cAAA,QAAAX,SACG8G,EAAE,sDALLnG,cAAA,QAAAX,SACG8G,EAAE,2DAUbnG,cAACoiF,GAAgB,CACfE,WAAYO,EAAQE,eACpBhL,mBAAoBA,EACpBz8E,KAAMkjD,EACNs5B,YAAat5E,QAGhB,E,UC5MP,MACE8kF,0CAAyC,GACzCC,uCACF,IAAIr9E,4wBAESs9E,GAAmBA,CAACC,EAASrV,KAAS,IAADsV,EAAAC,EAAAC,EAAAC,EAChD,MAAMC,GACmB,QAAvBJ,EAAAtV,EAAIpkE,2BAAmB,IAAA05E,GAAiB,QAAjBC,EAAvBD,EAAyB54E,uBAAe,IAAA64E,OAAjB,EAAvBA,EAA0CI,eACnB,QAD8BH,EACrDxV,EAAIpkE,2BAAmB,IAAA45E,GAAiB,QAAjBC,EAAvBD,EAAyB94E,uBAAe,IAAA+4E,OAAjB,EAAvBA,EAA0CG,UAE5C,OAAOP,EAAQznF,KAAKioF,GAClBjkF,cAAA,OAAKsH,UAAU,6BAA4BjI,SAChC,OAAR4kF,QAAQ,IAARA,OAAQ,EAARA,EAAUjoF,KAAI,CAACkoF,EAAe1oF,IACW,WAApC0oF,EAAczrE,SAASC,UAAyBorE,EAEhD9jF,cAAC0hF,GAAM,CACLC,YAAauC,EACbjG,iBAAkB7P,EAAI6P,iBACtBt+B,WAAYyuB,EAAIzuB,WAEhBiX,OAAQwX,EAAIxX,OACZ0nB,YAAalQ,EAAIkQ,aAFZ9iF,GAM2B,oBAApC0oF,EAAczrE,SAASC,UACiB,SAAxCwrE,EAAczrE,SAASE,cACvBmrE,EAGE9jF,cAACwiF,GAAa,CACZvE,iBAAkB7P,EAAI6P,iBACtBt+B,WAAYyuB,EAAIzuB,WAChB+iC,OAAQwB,EACRttB,OAAQwX,EAAIxX,OACZ0nB,YAAalQ,EAAIkQ,cAIe,oBAApC4F,EAAczrE,SAASC,UACiB,WAAxCwrE,EAAczrE,SAASE,cACvBmrE,EAGE9jF,cAACmjF,GAAe,CACdlF,iBAAkB7P,EAAI6P,iBACtBt+B,WAAYyuB,EAAIzuB,WAChB+iC,OAAQwB,EACRttB,OAAQwX,EAAIxX,OACZ0nB,YAAalQ,EAAIkQ,cAIe,eAApC4F,EAAczrE,SAASC,UACiB,eAAxCwrE,EAAczrE,SAASE,cACvBmrE,EAGE9jF,cAAC++E,GAAa,CACZd,iBAAkB7P,EAAI6P,iBACtBT,SAAU0G,EACVvkC,WAAYyuB,EAAIzuB,WAChB0hC,SAAUiC,GACV1sB,OAAQwX,EAAIxX,OACZ0nB,YAAalQ,EAAIkQ,cAId,UAIb,EAGS6F,GAAoBA,CAACV,EAASjN,KACzC,IAAI4N,EAAe,GACfC,EAAY7N,EAEhB,IAAK,IAAInoE,EAAI,EAAGA,GAAW,OAAPo1E,QAAO,IAAPA,OAAO,EAAPA,EAAS50E,QAAQR,GAAKg2E,EACxCD,EAAap9E,KAAKy8E,EAAQlnF,MAAM8R,EAAGA,EAAIg2E,IAGzC,OAAOD,CAAY,EAarB,IAAIE,GACJ,MAAMC,GAAe,IAAIC,gBACZC,GAAczgF,IACzB,GAAIA,EAAM,CAER,IAAK,MAAMse,KAAQte,EAEjB,GAAIse,EAAK9b,WAAqC,kBAAxB8b,EAAK9b,UAAUgC,KAEnC,OAAO,EAIX,OAAO,CACT,GAGWk8E,GAAYA,KAEpBJ,IACDA,GAAO9F,aAAeC,UAAUkG,QAChCL,GAAO9F,aAAeC,UAAUmG,UAEhCN,GAAS,IAAI7F,UACX,mFAGF6F,GAAO9sB,OAASl9D,YAIhBgqF,GAAOvsB,UAAYz9D,UAAqB,IAAd,KAAE0J,GAAM4X,EAEhC,MAAM4G,EAAUzc,KAAK4Q,MAAM3S,GACN,gBAAjBwe,EAAQqiE,MAEVN,GAAaO,KAAK,aAActiE,EAAQwL,OAAQxL,EAClD,EAGF8hE,GAAO7sB,QAAUn9D,UAEfgqF,GAAS,IAAI,EAGfA,GAAO/sB,QAAUj9D,SAAYmK,QAAQD,MACvC,EAGWugF,GAAYA,IAAMT,GAClBU,GAAkBA,IAAMT,GClJxBU,GAAMrpE,IAA0C,IAADy1D,EAAAiB,EAAAS,EAAAC,EAAAS,EAAAC,EAAAC,EAAAC,EAAAC,EAAAtpE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAupE,EAAAgR,EAAA,IAAxC,QAAEv3E,EAAO,WAAEwmE,EAAU,KAAE7xD,EAAI,KAAEu1C,GAAMj8C,EACrD,MAAM,oBAAE5R,GAAwBlI,qBAAWC,MAEpCyyE,EAAoBC,GAAyBvyE,mBAClDqyE,EAAc,OAAJjyD,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiBmD,sBAEtBvL,EAAcqI,GAAmBpvE,mBAClC,OAAJogB,QAAI,IAAJA,GAAe,QAAXgwD,EAAJhwD,EAAM9b,iBAAS,IAAA8rE,OAAX,EAAJA,EAAiBrJ,eAEZyL,EAAMC,GAAWzyE,mBACU,YAA5B,OAAJogB,QAAI,IAAJA,GAAe,QAAXywD,EAAJzwD,EAAM9b,iBAAS,IAAAusE,OAAX,EAAJA,EAAiB6B,cAEZC,EAAMC,GAAW5yE,mBACU,YAA5B,OAAJogB,QAAI,IAAJA,GAAe,QAAX0wD,EAAJ1wD,EAAM9b,iBAAS,IAAAwsE,OAAX,EAAJA,EAAiB4B,cAEZ/C,EAAMC,GAAW5vE,mBACU,oBAA5B,OAAJogB,QAAI,IAAJA,GAAe,QAAXmxD,EAAJnxD,EAAM9b,iBAAS,IAAAitE,OAAX,EAAJA,EAAiBmB,cAEZ1mE,EAAK6mE,GAAU7yE,mBACY,SAA5B,OAAJogB,QAAI,IAAJA,GAAe,QAAXoxD,EAAJpxD,EAAM9b,iBAAS,IAAAktE,OAAX,EAAJA,EAAiBkB,cAEZP,EAAiBC,GAAsBpyE,mBAC5ClF,SAASu3E,EAAc,OAAJjyD,QAAI,IAAJA,GAAe,QAAXqxD,EAAJrxD,EAAM9b,iBAAS,IAAAmtE,OAAX,EAAJA,EAAiBU,oBAE/B8Q,EAAgBC,GAAqBljF,mBACtC,OAAJogB,QAAI,IAAJA,GAAe,QAAXsxD,EAAJtxD,EAAM9b,iBAAS,IAAAotE,OAAX,EAAJA,EAAiByR,iBAGZvgF,EAAM+9D,GAAW3gE,oBAAS,IAC1BojF,EAAOC,GAAYrjF,mBAAS,MAC7B4kB,EAAQ,KAKd,SAASytD,EAAUjgC,GACjB,OAAOhmC,OAAO0F,WAAWsgC,GAAGlgC,QAAQ,EACtC,CAGA,MAAMoxE,EAAoBA,CAACnP,EAAan5D,KAClCooE,GACFlE,aAAakE,GAGfC,EACE1hE,YAAW,KACTg0C,EAAKv1C,EAAMpmB,OAAOm6E,GAAcn5D,GAChC2lD,GAAQ,GACR4iB,GAAU,GACT3+D,GACJ,EAuBHhkB,qBAAU,IACD,IAAMs+E,aAAakE,IACzB,CAACA,IAEJxiF,qBAAU,KACR,MAAMyhF,EAAeS,KACfU,EAAmBA,CAAC13D,EAAQxL,KAC5BF,EAAK9b,UAAUhB,WAAawoB,IAC9BymD,EAAsBF,EAAU/xD,EAAQmjE,qBACxCrR,EAAmB9xD,EAAQojE,UAEK,QAA5BpjE,EAAQqjE,iBACV9Q,GAAO,GACPJ,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,KAERiD,GAAO,GACPJ,EAAkC,WAA1BnyD,EAAQsjE,eAChBhR,EAAkC,WAA1BtyD,EAAQsjE,eAChBhU,EAAkC,mBAA1BtvD,EAAQsjE,gBAEpB,EAKF,OAFAvB,EAAat2E,GAAG,aAAcy3E,GAEvB,KACLnB,EAAar2E,IAAI,aAAcw3E,EAAiB,CACjD,GACA,CAACpjE,EAAK9b,UAAUhB,WAEnB,MAAMigF,EAAWA,KACf5hE,YAAW,KACTg/C,GAAQ,EAAM,GACb/7C,EAAM,EAGLovD,EAA+Bh5D,IACpB,IAAXA,EAjDQk5D,MACZ,MAAMC,EAAcr5E,SAASq3E,GAAmB,EAC5CgC,GAjCiB,IAkCnB/B,EAAmB+B,GACnBmP,EAAkBnP,EAAa,IAE/B5xE,QAAQshF,KAAK,kCACf,EA2CE3P,GACoB,IAAXl5D,EA7DGq5D,MACd,MAAMF,EAAcr5E,SAASq3E,GAAmB,EAC5CgC,GAxBiB,IAyBnB/B,EAAmB+B,GACnBmP,EAAkBnP,EAAa,IAE/B5xE,QAAQshF,KAAK,kCACf,EAuDExP,GACoB,IAAXr5D,EACJw3D,GACH7wD,YAAW,KACTg0C,EAAKv1C,EAAM,SAAU,GACrBugD,GAAQ,GACR8R,GAASD,GACTI,GAAQ,GACRhD,GAAQ,GACRiD,GAAO,GACP0Q,GAAU,GACT3+D,GAEe,IAAX5J,EACJ23D,GACHhxD,YAAW,KACTg/C,GAAQ,GACRhL,EAAKv1C,EAAM,SAAU,GACrBwyD,GAASD,GACTF,GAAQ,GACR7C,GAAQ,GACRiD,GAAO,GACP0Q,GAAU,GACT3+D,GAEe,IAAX5J,EACJ20D,GACHhuD,YAAW,KACTg/C,GAAQ,GACRhL,EAAKv1C,EAAM,iBAAkB,GAC7BwyD,GAAQ,GACRH,GAAQ,GACR7C,GAASD,GACTkD,GAAO,GACP0Q,GAAU,GACT3+D,GAEe,IAAX5J,IACJhP,GACH2V,YAAW,KACTg/C,GAAQ,GACRhL,EAAKv1C,EAAM,MAAO,GAClBwyD,GAAQ,GACRH,GAAQ,GACR7C,GAAQ,GACRiD,GAAQ7mE,GACRu3E,GAAU,GACT3+D,GAEP,EAGF,OACE9mB,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAW,yBAAyBjI,SAAA,CACvCF,eAAA,OAAKmI,UAAW,uCAAuCjI,SAAA,CACrDW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,QAAAX,SAAW,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMk8B,UAGfx+C,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCW,cAAA,QACEsH,UACmC,OAA7B,OAAJgb,QAAI,IAAJA,GAAe,QAAXuxD,EAAJvxD,EAAM9b,iBAAS,IAAAqtE,OAAX,EAAJA,EAAiBnkE,aACb,sBACA,qBACLrQ,SAEDW,cAAA,KAAGo1C,MAAM,uBAKfj2C,eAAA,OACEmI,UAAW,wCACTxC,GAAO,gCACNzF,SAAA,CAEHF,eAAA,OACEmI,WACEotE,GAAQG,GAAQsQ,EACZ,GACA,gCAHK,4BAIiB9lF,SAAA,CAE5BF,eAAA,QACEmI,WACEotE,GAAQG,GAAQsQ,EAAiB,GAAK,wBAD7B,qBAEU9lF,SAAA,CAEpBg1E,EACDr0E,cAAA,QACES,MAAO,CACLgc,QAAS,OACT5e,SAAU,OACV0e,WAAY,QACZlT,UAAW,QACXhK,SACH,aAIHW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,QAAMsH,UAAU,eAAcjI,SAC5BF,eAAA,QACEsB,MAAO,CACLgc,QAAS,OACT5e,SAAU,OACVyL,WAAY,QACZjK,SAAA,CAEDm1E,EAAmB,kBAM5Br1E,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,OAAKsH,UAAU,cAAajI,SAC1BW,cAAA,OACEsH,UACqB,SAAnB69E,EACI,SACmB,WAAnBA,EACA,UACA,UAENv9E,IAAKo+E,GACLvmF,SACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCsoE,YAClC,MAGN3qE,IAAI,UAGRlI,cAAA,OAAKS,MAAO,CAAEgc,QAAS,OAAQE,eAAgB,UAAWtd,SACpC,SAAnB8lF,EACChmF,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACU,QAAnB69E,GACmB,WAAnBA,GACmB,SAAnBA,EACI,MACA,UAGRnlF,cAAA,OACEsH,UAAW,aACU,WAAnB69E,GAAkD,SAAnBA,EAC3B,SACA,UAGRnlF,cAAA,OACEsH,UAAW,aACU,SAAnB69E,EAA4B,OAAS,aAItB,QAAnBA,EACFhmF,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACU,QAAnB69E,EAA2B,MAAQ,UAGvCnlF,cAAA,OACEsH,UAAW,aACU,WAAnB69E,GAAkD,SAAnBA,EAC3B,SACA,UAGRnlF,cAAA,OACEsH,UAAW,aACU,SAAnB69E,EAA4B,OAAS,aAItB,SAAnBA,EACFhmF,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACU,SAAnB69E,EAA4B,UAAY,UAG5CnlF,cAAA,OACEsH,UAAW,aACU,SAAnB69E,GACmB,WAAnBA,GACmB,SAAnBA,EACI,aACA,UAGRnlF,cAAA,OACEsH,UAAW,aACU,SAAnB69E,EAA4B,WAAa,aAI7C,UAIRnlF,cAAA,OACEsH,UAAW,yBACTxC,GAAO,gCACNzF,SAEHW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAE8lF,YAK3CnlF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAG1BhyE,eAAA,OACEmI,UAAW,iCACTxC,GAAO,gCACNzF,SAAA,CAEHF,eAAA,OAAKmI,UAAU,iCAAgCjI,SAAA,CAC7CW,cAAA,OACEsH,UAAU,2BACV7H,QACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCqoE,YAClC,IAAMqD,EAA4B,GAClC,KACL72E,SAEDW,cAAA,QAAMsH,UAAU,eAAcjI,SAC5BW,cAAA,KAAGo1C,MAAM,0BAIbp1C,cAAA,OACEsH,UAAU,2BACV7H,QACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EAAsCooE,YAClC,IAAMqD,EAA4B,GAClC,KACL72E,SAEDW,cAAA,QAAMsH,UAAU,iBAAgBjI,SAC9BW,cAAA,KAAGo1C,MAAM,+BAKfj2C,eAAA,OAAKmI,UAAU,wBAAuBjI,SAAA,CACpCW,cAAA,OACEsH,UACEotE,EAAO,4BAA8B,yBAEvCj1E,QACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,GAApCA,EAAsCmoE,YAClC,IAAMqD,EAA4B,GAClC,KACL72E,SACF,SAIDW,cAAA,OACEsH,UACEutE,EAAO,4BAA8B,yBAEvCp1E,QACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBW,EAAnBX,EAAqBc,uBAAe,IAAAH,GAApCA,EAAsCkoE,YAClC,IAAMqD,EAA4B,GAClC,KACL72E,SACF,SAIDW,cAAA,OACEsH,UACEuqE,EAAO,4BAA8B,yBAEvCpyE,QACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBkqE,EAAnBlqE,EAAqBc,uBAAe,IAAAopE,GAApCA,EAAsCrB,YAClC,IAAMqD,EAA4B,GAClC,KACL72E,SACF,SAIDW,cAAA,OACEsH,UACE4G,EAAM,2BAA6B,wBAErCzO,QACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBk7E,EAAnBl7E,EAAqBc,uBAAe,IAAAo6E,GAApCA,EAAsCrS,YAClC,IAAMqD,EAA4B,GAClC,KACL72E,SACF,kBA2KT,E,cCrjBG,MAAM4mF,GAAcrqE,IAAmD,IAADrR,EAAA,IAAjD,KAAE/L,EAAI,iBAAE0nF,EAAgB,QAAEzC,EAAO,QAAE53D,GAASjQ,EACtE,MAAQ5X,KAAM6/D,GAAUrpD,aAASd,GAA0B,CACzDlT,UAAW,CACTiU,UAAWzd,SAAS6B,aAAaC,QAAQ,OACzCS,GAAIvC,SAAS6B,aAAaC,QAAQ,UAIhCswB,EAAcvwB,aAAaC,QAAQ,gBAClCqnF,GAAiB3jF,YAAYuX,KAC9B,EAAE5T,GAAMC,cAERiW,EAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KAJc,eAQd,oBAAEnZ,GAAwBlI,qBAAWC,KACrCqkF,EAAgB,OAALviB,QAAK,IAALA,OAAK,EAALA,EAAOt1C,qBAAqB/e,QAC1C2f,IAAI,IAAAk3D,EAAA,OAAS,OAAJl3D,QAAI,IAAJA,GAAgB,QAAZk3D,EAAJl3D,EAAME,kBAAU,IAAAg3D,OAAZ,EAAJA,EAAkBj3D,eAAgBA,CAAW,IAEnDk3D,EAAoB,OAAP7C,QAAO,IAAPA,OAAO,EAAPA,EAASzrE,OAEtBzX,EAAcA,KAClB2lF,GAAiB,GACjBK,EAAY,CACVhnF,GAAI,GACJi/C,MAAO,GAEPpvB,YAAaA,EACbw2D,SAAU,GACVj2E,QAAS,GACT62E,cAAe,GACfC,kBAAmB,GACnBC,YAAa,GACb72E,MAAO,GACP82E,UAAW,GACXC,UAAW,IACX,EAGEhmF,EAAS,CACb,CAAEtF,KAAM,KAAMd,OAAO,GACrB,CAAEc,KAAM,KAAMd,OAAO,KAEhBqsF,EAAUN,GAAerkF,mBAAS,CACvC3C,GAAI,GACJi/C,MAAO,GAEPpvB,YAAaA,EACbw2D,SAAU,GACVj2E,QAAS,GACT62E,cAAe,GACfC,kBAAmB,GACnBC,YAAa,GACb72E,MAAO,GACP82E,UAAW,GACXC,UAAW,GACXE,YAAY,EACZC,QAAQ,EACRC,QAAQ,EACRC,YAAY,EACZh5D,OAAQ,GACRa,UAAW,KAGbhsB,qBAAU,KACK,OAAR+jF,QAAQ,IAARA,KAAUl3E,SACb42E,GAAaW,IAAQ,IAChBA,EACHT,mBAAmB,EACnBC,aAAa,KAEjB,GACC,CAAS,OAARG,QAAQ,IAARA,OAAQ,EAARA,EAAUl3E,UAEd,MAAMw3E,EAAY9uD,iBAAO,MA4CnB+uD,EAAe1nF,IACnB,MAAM,KAAEpE,EAAI,MAAEd,GAAUkF,EAAM0H,OAE9Bm/E,GAAaW,IAAQ,IAChBA,EACH,CAAC5rF,GAAOd,KACP,EAoEC6sF,EAAsBA,OACd,OAARR,QAAQ,IAARA,KAAUI,YAAsB,OAARJ,QAAQ,IAARA,KAAUE,QAMxC,OACE/mF,cAAAZ,WAAA,CAAAC,SACEF,eAACoiB,KAAM,CACL/iB,KAAMA,EACN8B,QAASC,EACTC,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,QACP6jB,SAAU,MACV7hB,OAAQ,OACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAET,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAGXmB,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,oBACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SAED8G,EAAE,0DAELnG,cAACV,IAAU,CAACG,QAASc,EAAYlB,SAC/BW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BoC,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChB7c,IAAK,OACLsJ,QAAS,aACT/J,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACfxe,MAAO,OACPmL,UAAW,QACXhK,SAAA,CAEFF,eAAC8sB,KAAW,CACVouC,WAAS,EACTjyC,KAAK,QACL3nB,MAAO,CAAE8I,aAAc,QAASlK,SAAA,CAEhCW,cAACksB,KAAU,CAAC3sB,GAAG,2BAA0BF,SACtC8G,EAAE,0DAELnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACHjE,KAAK,KACLiiB,MAAOpX,EACL,wDAEFmC,SAhNa5I,IAAW,IAAD4nF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACnC,MAAM9oF,EAAKG,EAAM0H,OAAO5M,MAClBiM,EAAmB,OAAV6/E,QAAU,IAAVA,OAAU,EAAVA,EAAYruE,MAAMxR,IAAiB,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQlH,MAAOA,IAE3DgnF,EAAY,CACVhnF,IAAU,OAANkH,QAAM,IAANA,OAAM,EAANA,EAAQlH,KAAM,GAClB6vB,YAAaA,EACbovB,OAAa,OAAN/3C,QAAM,IAANA,OAAM,EAANA,EAAQ+3C,QAAS,GACxBonC,UAAgB,OAANn/E,QAAM,IAANA,OAAM,EAANA,EAAQ6hF,gBAAiB,GACnC34E,SAAe,OAANlJ,QAAM,IAANA,OAAM,EAANA,EAAQkJ,WAAW,EAC5B62E,eAAqB,OAAN//E,QAAM,IAANA,OAAM,EAANA,EAAQ+/E,iBAAiB,EACxCC,mBAAyB,OAANhgF,QAAM,IAANA,OAAM,EAANA,EAAQggF,qBAAqB,EAChDC,aAAmB,OAANjgF,QAAM,IAANA,OAAM,EAANA,EAAQigF,eAAe,EACpC72E,OAAa,OAANpJ,QAAM,IAANA,OAAM,EAANA,EAAQoJ,QAAS,GACxB82E,WAAiB,OAANlgF,QAAM,IAANA,OAAM,EAANA,EAAQkgF,YAAa,GAChCC,WAAiB,OAANngF,QAAM,IAANA,OAAM,EAANA,EAAQmgF,YAAa,GAChCE,WACkC,gBAAzB,OAANrgF,QAAM,IAANA,GAAgB,QAAV6gF,EAAN7gF,EAAQgS,gBAAQ,IAAA6uE,OAAV,EAANA,EAAkB5uE,WACkB,MAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAV8gF,EAAN9gF,EAAQgS,gBAAQ,IAAA8uE,OAAV,EAANA,EAAkB5uE,eACY,SAAzB,OAANlS,QAAM,IAANA,GAAgB,QAAV+gF,EAAN/gF,EAAQgS,gBAAQ,IAAA+uE,OAAV,EAANA,EAAkB9uE,WACkB,QAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAVghF,EAANhhF,EAAQgS,gBAAQ,IAAAgvE,OAAV,EAANA,EAAkB9uE,gBACpB,EACFouE,OACkC,YAAzB,OAANtgF,QAAM,IAANA,GAAgB,QAAVihF,EAANjhF,EAAQgS,gBAAQ,IAAAivE,OAAV,EAANA,EAAkBhvE,WACkB,qBAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAVkhF,EAANlhF,EAAQgS,gBAAQ,IAAAkvE,OAAV,EAANA,EAAkBhvE,eACY,OAAzB,OAANlS,QAAM,IAANA,GAAgB,QAAVmhF,EAANnhF,EAAQgS,gBAAQ,IAAAmvE,OAAV,EAANA,EAAkBlvE,WACkB,OAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAVohF,EAANphF,EAAQgS,gBAAQ,IAAAovE,OAAV,EAANA,EAAkBlvE,gBACpB,EACFquE,OACkC,SAAzB,OAANvgF,QAAM,IAANA,GAAgB,QAAVqhF,EAANrhF,EAAQgS,gBAAQ,IAAAqvE,OAAV,EAANA,EAAkBpvE,WACkB,OAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAVshF,EAANthF,EAAQgS,gBAAQ,IAAAsvE,OAAV,EAANA,EAAkBpvE,eACY,gBAAzB,OAANlS,QAAM,IAANA,GAAgB,QAAVuhF,EAANvhF,EAAQgS,gBAAQ,IAAAuvE,OAAV,EAANA,EAAkBtvE,WACkB,gBAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAVwhF,EAANxhF,EAAQgS,gBAAQ,IAAAwvE,OAAV,EAANA,EAAkBtvE,gBACpB,EACFsuE,WACkC,UAAzB,OAANxgF,QAAM,IAANA,GAAgB,QAAVyhF,EAANzhF,EAAQgS,gBAAQ,IAAAyvE,OAAV,EAANA,EAAkBxvE,WACkB,UAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAV0hF,EAAN1hF,EAAQgS,gBAAQ,IAAA0vE,OAAV,EAANA,EAAkBxvE,eACY,OAAzB,OAANlS,QAAM,IAANA,GAAgB,QAAV2hF,EAAN3hF,EAAQgS,gBAAQ,IAAA2vE,OAAV,EAANA,EAAkB1vE,WACkB,OAA7B,OAANjS,QAAM,IAANA,GAAgB,QAAV4hF,EAAN5hF,EAAQgS,gBAAQ,IAAA4vE,OAAV,EAANA,EAAkB1vE,gBACpB,GACF,EAwKsCtZ,SAEjB,OAAVinF,QAAU,IAAVA,OAAU,EAAVA,EAAYtqF,KAAKxB,GAChB2E,eAAC0B,KAAQ,CAAiBrG,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAO+E,GAAGF,SAAA,CACnC,OAAL7E,QAAK,IAALA,OAAK,EAALA,EAAOo8D,QACF,OAALp8D,QAAK,IAALA,OAAK,EAALA,EAAOc,SAAc,OAALd,QAAK,IAALA,OAAK,EAALA,EAAOo8D,QAAS,IAAS,OAALp8D,QAAK,IAALA,OAAK,EAALA,EAAOgkD,QAAU,KAFpC,OAALhkD,QAAK,IAALA,OAAK,EAALA,EAAO+E,WAQ5BJ,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTimB,oBAAqB,UACrBxkC,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACViC,IAAK,OACL,CAACuc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B2e,oBAAqB,QAEvBrjC,SAAA,CAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACf5c,IAAK,OACLsJ,QAAS,YACT/J,SAAA,CAkBFW,cAACgiB,KAAS,CACRziB,GAAG,iBACHge,MAAOpX,EACL,wDAEF9E,QAAQ,WACRugB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,IACrBjE,KAAK,QACL8sB,KAAK,QACLC,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpCoK,SAAU8+E,EACV5sF,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUroC,QArKnB,OAARqoC,QAAQ,IAARA,KAAUI,WAwKAjnF,cAACgiB,KAAS,CACRziB,GAAG,iBACHge,MAAOpX,EACL,4DAEF9E,QAAQ,WACR+mB,KAAK,QACL9sB,KAAK,WACLsmB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,IACrB8oB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpCoK,SAAU8+E,EACV5sF,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUjB,WAEjB,KAEJzmF,eAAC8sB,KAAW,CAACouC,WAAS,EAACjyC,KAAK,QAAO/oB,SAAA,CACjCW,cAACksB,KAAU,CAAA7sB,SACR8G,EACC,4DAGJnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACHjE,KAAK,UACLsmB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,IACrB/E,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUl3E,QACjB4N,MAAOpX,EACL,0DAEFmC,SAAU8+E,EAAY/nF,SAEf,OAANuB,QAAM,IAANA,OAAM,EAANA,EAAQ5E,KAAI,CAACxB,EAAOgB,IACnBwE,cAACa,KAAQ,CAAWrG,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOA,MAAM6E,SAChC,OAAL7E,QAAK,IAALA,OAAK,EAALA,EAAOc,MADKE,UAMpB6rF,IACCloF,eAAC8sB,KAAW,CAACouC,WAAS,EAACjyC,KAAK,QAAO/oB,SAAA,CACjCW,cAACksB,KAAU,CAAA7sB,SACR8G,EACC,kEAGJnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBzE,KAAK,gBACL8wB,QAAQ,2BACR7sB,GAAG,qBACHqiB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,IACrB/E,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUL,cACjBjpE,MAAOpX,EACL,gEAEFmC,SAAU8+E,EAAY/nF,SAEf,OAANuB,QAAM,IAANA,OAAM,EAANA,EAAQ5E,KAAI,CAACxB,EAAOgB,IACnBwE,cAACa,KAAQ,CAAWrG,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOA,MAAM6E,SAChC,OAAL7E,QAAK,IAALA,OAAK,EAALA,EAAOc,MADKE,UAMnB,QAGN2D,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACf5c,IAAK,OACLsJ,QAAS,YACT/J,SAAA,CAEFF,eAAC8sB,KAAW,CAACouC,WAAS,EAACjyC,KAAK,QAAO/oB,SAAA,CACjCW,cAACksB,KAAU,CAAA7sB,SACR8G,EACC,sEAGJnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACHqiB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,OAAe,OAARsnF,QAAQ,IAARA,KAAUl3E,SACtCnV,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUJ,kBACjBnrF,KAAK,oBACLiiB,MAAOpX,EACL,oEAEFmC,SAAU8+E,EAAY/nF,SAEf,OAANuB,QAAM,IAANA,OAAM,EAANA,EAAQ5E,KAAI,CAACxB,EAAOgB,IACnBwE,cAACa,KAAQ,CAAWrG,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOA,MAAM6E,SAChC,OAAL7E,QAAK,IAALA,OAAK,EAALA,EAAOc,MADKE,UAnQrB,OAARqrF,QAAQ,IAARA,KAAUC,YAAsB,OAARD,QAAQ,IAARA,KAAUG,QAAkB,OAARH,QAAQ,IAARA,KAAUI,WA2Q5C9nF,eAAC8sB,KAAW,CAACouC,WAAS,EAACjyC,KAAK,QAAO/oB,SAAA,CACjCW,cAACksB,KAAU,CAAA7sB,SACR8G,EACC,uEAGJnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACHqiB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,OAAe,OAARsnF,QAAQ,IAARA,KAAUl3E,SACtCrU,KAAK,cACLd,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUH,YACjBnpE,MAAOpX,EACL,qEAEFmC,SAAU8+E,EAAY/nF,SAEf,OAANuB,QAAM,IAANA,OAAM,EAANA,EAAQ5E,KAAI,CAACxB,EAAOgB,IACnBwE,cAACa,KAAQ,CAAWrG,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOA,MAAM6E,SAChC,OAAL7E,QAAK,IAALA,OAAK,EAALA,EAAOc,MADKE,UAMnB,KAEH6rF,IACCrnF,cAACgiB,KAAS,CACRziB,GAAG,iBACHge,MAAOpX,EACL,wDAEF9E,QAAQ,WACR+mB,KAAK,QACL9sB,KAAK,QACL+sB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpC0jB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,IACrB+I,SAAU8+E,EACV5sF,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUh3E,QAEjB,KAEHw3E,IACCrnF,cAACgiB,KAAS,CACRziB,GAAG,iBACHge,MAAOpX,EACL,4DAEF9E,QAAQ,WACR+mB,KAAK,QACL9sB,KAAK,YACL+sB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpC0jB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,IACrB+I,SAAU8+E,EACV5sF,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUF,YAEjB,KAEHU,IACCrnF,cAACgiB,KAAS,CACRziB,GAAG,iBACHge,MAAOpX,EACL,4DAEF9E,QAAQ,WACR+mB,KAAK,QACL9sB,KAAK,YACL+sB,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpC0jB,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,IACrB+I,SAAU8+E,EACV5sF,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAUD,YAEjB,WAGR5mF,cAAA,QACES,MAAO,CACLgc,QAAS,OACT5c,OAAQ,mBACRkf,WAAY,QACZ1f,SAED8G,EAAE,gEAELhH,eAAC8sB,KAAW,CACVouC,WAAS,EACTjyC,KAAK,QACL3nB,MAAO,CAAE8I,aAAc,QAASlK,SAAA,CAEhCW,cAACksB,KAAU,CAAC3sB,GAAG,2BAA0BF,SACtC8G,EAAE,0DAELnG,cAACmsB,KAAM,CACLvsB,GAAI,CAAEG,aAAc,OACpBqsB,QAAQ,2BACR7sB,GAAG,qBACHjE,KAAK,QACLiiB,MAAOpX,EACL,wDAEFmC,SAjba5I,IACzB,MAAMH,EAAKG,EAAM0H,OAAO5M,MAClB20B,EAAe,OAARi3D,QAAQ,IAARA,OAAQ,EAARA,EAAUnuE,MAAMkX,IAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAM5vB,MAAOA,IAEnDgnF,GAAaW,IAAQ,IAChBA,EACHj5D,OAAQjxB,SAAa,OAAJmyB,QAAI,IAAJA,OAAI,EAAJA,EAAM5vB,KAAO,GAC9BuvB,WAAe,OAAJK,QAAI,IAAJA,OAAI,EAAJA,EAAM25B,YAAa,MAC7B,EA0aStuD,MAAe,OAARqsF,QAAQ,IAARA,OAAQ,EAARA,EAAU54D,OACjBrM,WAAmB,OAARilE,QAAQ,IAARA,KAAUtnF,MAAc,OAARsnF,QAAQ,IAARA,OAAQ,EAARA,EAAUG,QAAO3nF,SAEnC,OAAR+mF,QAAQ,IAARA,OAAQ,EAARA,EAAUpqF,KAAKxB,GACdwF,cAACa,KAAQ,CAAiBrG,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAO+E,GAAGF,SACnC,OAAL7E,QAAK,IAALA,OAAK,EAALA,EAAOgkD,OADU,OAALhkD,QAAK,IAALA,OAAK,EAALA,EAAO+E,gBAQZ,OAAnByK,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCsoE,YACrC7yE,cAACuoF,KAAa,CACZ3oF,GAAI,CACF6c,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChBtT,UAAW,QACXE,aAAc,QACdlK,SAEFW,cAACqkB,KAAa,CAAChI,MAAOA,EAAMhd,SAC1BW,cAACskB,KAAM,CACL1kB,GAAI,CACF6c,QAAS,OACTve,MAAO,MACPkL,QAAS,MACTxL,MAAO,OACPmC,aAAc,MACdkkB,WAAY,QAEd5iB,QAAQ,YACRzD,MAAM,UACN6B,QAASA,IAzcM+oF,MAC3B,GAAIrB,EAAUtsD,UAAYssD,EAAUtsD,QAAQjZ,WAC1CulE,EAAUtsD,QAAQjZ,UAAW,EACjB,OAARilE,QAAQ,IAARA,KAAUtnF,IACZ,IACE4mF,EAAc,CACZ3/E,UAAW,CACTiiF,eAAgB5B,EAAStnF,GACzB6vB,YAAay3D,EAASz3D,YACtBovB,MAAOqoC,EAASroC,MAChB7uC,QAASk3E,EAASl3E,QAClB+4E,aAAc7B,EAASL,cACvBmC,iBAAkB9B,EAASJ,kBAC3BmC,WAAY/B,EAASH,YACrB72E,MAAOg3E,EAASh3E,MAChBg5E,aAAchC,EAASjB,SACvBe,UAAWE,EAASF,UACpBC,UAAWC,EAASD,UACpB34D,OAAQ44D,EAAS54D,OACjBa,UAAW+3D,EAAS/3D,aAGxBjL,YAAW,KACTgI,IACAtrB,IACA4mF,EAAUtsD,QAAQjZ,UAAW,CAAK,GACjC,IACL,CAAE,MAAO1a,GACPzC,QAAQD,MAAM,gBAAc0C,EAC9B,CAEJ,EA0a2BshF,GACfrgF,IAAKg/E,EACLvlE,SAAkB,OAARilE,QAAQ,IAARA,MAAUtnF,GAAkBF,SAErC8G,EAAE,4DAIP,SAEL,EC/mBM2iF,GAAaltE,IAA2B,IAADrR,EAAAC,EAAAC,EAAA,IAAzB,QAAEg5E,EAAO,QAAE53D,GAASjQ,EAC7C,MAAM,EAAEzV,GAAMC,cACRiW,EAAQ6a,gBACP/4B,EAAUC,GAAe8D,mBAAS,OAClC6mF,EAAe7C,GAAoBhkF,oBAAS,GAC7C1D,EAAOC,QAAQN,IACf,oBAAE6L,GAAwBlI,qBAAWC,KAc3C,OACE5C,eAAAC,WAAA,CAAAC,SAAA,CACsB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCy5E,UACpB,OAAnBh6E,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCqoE,YACpC1zE,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCW,cAACskB,KAAM,CACL/kB,GAAG,cACH,gBAAef,EAAO,iBAAcgB,EACpC,gBAAc,OACd,gBAAehB,EAAO,YAASgB,EAC/BC,QAtBWC,IACnBtB,EAAYsB,EAAMC,cAAc,EAsBxBC,GAAI,CACF3B,OAAQ,YACR48D,YAAa,QACbl8B,UAAW,2CACX,CAACtiB,EAAMyH,YAAYC,KAAK,OAAQ,CAAE3a,QAAS,oBAC3C/J,SAGFW,cAAC86D,KAAY,CAACl9D,MAAM,aAEtBoC,cAACI,IAAI,CACHb,GAAG,YACHc,cAAe,CACb,kBAAmB,eAErBlC,SAAUA,EACVK,KAAMA,EACN8B,QAhCUC,KAClBnC,EAAY,KAAK,EAgCTu7D,oBAAqBoB,KAAK17D,SAE1BW,cAACa,IAAQ,CAACpB,QAvCAupF,KAClB9C,GAAiB,EAAK,EAsCiB7mF,SAC5B8G,EAAE,qEAIP,KACgB,OAAnB6D,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EAAsCooE,YACrC7yE,cAACimF,GAAW,CACVznF,KAAMuqF,EACN7C,iBAAkBA,EAClBzC,QAASA,EACT53D,QAASA,IAET,OACH,ECtBP,IAAI+pC,GAAS,KAEb,MAAM5sD,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,4BAIdo5C,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAC9CxY,EAAMwY,QAAQ,GAAK,OAGvBojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAEZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAIToqD,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAEMsrF,GAAqB,CACzBr0E,KAAK,EACL3G,IAAI,EACJC,KAAK,GA+jCQixC,OA5jCCA,KAAO,IAAD+pC,EAAAC,EAAAC,EAAA7+E,EAAAC,EAAA6+E,EAAAC,EAAAC,EAAAC,EAAA/+E,EAAAC,EAAAC,EAAAupE,EAAAgR,EAAAuE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpB,MAAM,EAAExkF,GAAMC,eACR,OACJwwD,EAAM,UACN7B,EAAS,KACTphB,EAAI,OACJ1lB,EAAM,UACN0qB,EAAS,QACTH,EAAO,UACPC,EAAS,kBACTk9B,EAAiB,gBACjBvwB,EAAe,kBACf4xB,EAAiB,YACjBvB,EAAW,eACXC,EAAc,kBACd1gB,EAAiB,WACjBC,GAAU,cACVpc,GAAa,oBACb7uC,GAAmB,sBACnBo/C,GAAqB,mBACrB8L,GAAkB,sBAClB5U,GAAqB,oBACrB8U,GAAmB,qBACnB9N,GAAoB,qBACpBiC,IACEznD,qBAAWC,MACR49C,GAAYirC,IAAiB1oF,sBAC7B2oF,GAAaC,IAAkB5oF,mBAAS+mF,KACzC,GAAE1pF,IAAOyjE,eACR+nB,GAAMC,IAAW9oF,mBAAS,KAC1B+oF,GAASC,IAAchpF,mBAAS,KAChCipF,GAAaC,IAAkBlpF,mBAAS,KACxCuE,GAAQ4kF,IAAanpF,mBAAS,KAC9BopF,GAAWC,IAAgBrpF,mBAAS,KACpCspF,GAAcC,IAAmBvpF,mBAAS,KAC1CwpF,GAAaC,IAAkBzpF,mBAAS,KACxC0pF,GAAkBC,IAAuB3pF,mBAAS,IAEnDyzD,IADUrzD,cACC+1B,qBACVyzD,GAAgBC,IAAqB7pF,mBAAS,KAC9C8pF,GAAkBC,IAAuB/pF,mBAAS,KAClDgqF,GAAeC,IAAoBjqF,mBAAS,KAC5C6mF,GAAeqD,IAAmBlqF,oBAAS,IAGhD8B,KAAMqoF,GAAU,QAChB9xE,GAAO,MACP/V,GAAK,QACLqnB,IACErR,aAASm8D,GAAiB,CAC5BnwE,UAAW,CACTsyC,OAAQ97C,SAASuC,GAAI,IACrBkb,UAAWzd,SAAS6B,aAAaC,QAAQ,MAAO,IAChDswB,YAAa9V,MAEfoB,YAAa,WACbC,6BAA6B,IAGzB2xE,IACM,OAAVD,SAAU,IAAVA,IAAkC,QAAxBnD,EAAVmD,GAAYxxE,oBAAoB,UAAE,IAAAquE,GAAS,QAATC,EAAlCD,EAAoCpuE,eAAO,IAAAquE,OAAjC,EAAVA,EAA6Ct6E,QAAS,IAC5C,OAAVw9E,SAAU,IAAVA,IAAkC,QAAxBjD,EAAViD,GAAYtxE,8BAAsB,IAAAquE,OAAxB,EAAVA,EAAoCv6E,QAAS,GAExCrQ,GAAMmE,IAAWtE,IAAM6D,UAAS,IAChCqqF,GAAcC,IAAmBtqF,oBAAS,IAC1CuqF,GAAiBC,IAAsBxqF,oBAAS,IAEjD,4BACJq0D,GAA2B,yBAC3BC,GAAwB,yBACxBC,IACEvwD,6wBAwEGymF,GAAYC,IAAiB1qF,mBAAS,aAEvCuH,GAAUT,KAChBlG,qBAAU,KAAO,IAAD+pF,EACFpI,GAAqB,OAAV4H,SAAU,IAAVA,IAAyB,QAAfQ,EAAVR,GAAYS,qBAAa,IAAAD,OAAf,EAAVA,EAA2B70E,SAEhD0sE,IACF,GACC,CAAW,OAAV2H,SAAU,IAAVA,QAAU,EAAVA,GAAYS,gBAEhB,MAuDMvsF,GAAcA,KAElBoC,IAAQ,GACRymD,GAAsB,IAAIjkD,KAAO,EAG7B4nF,GAAsBA,KAC1BP,IAAgB,EAAM,EAGlBQ,GAAyBA,KAC7B5jC,GAAsB,IAAIjkD,MAC1BunF,IAAmB,EAAM,EAwM3B,SAASO,GAAKxmF,EAAQgH,GAAS,IAAD65E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACSoF,EAAAC,EAArC,GAAkC,IAAxB,OAAN1mF,QAAM,IAANA,GAAgB,QAAV6gF,EAAN7gF,EAAQgS,gBAAQ,IAAA6uE,OAAV,EAANA,EAAkB5uE,UACpBk9C,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAfa,EAAVb,GAAYS,qBAAa,IAAAI,GAAY,QAAZC,EAAzBD,EAA2B79D,kBAAU,IAAA89D,OAA3B,EAAVA,EAAuCv2B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnBvS,SAAU,eACVrxD,OAAQ,SACR1iB,MAAOiT,EAAS,IAAM,YAGrB,GAC0B,IAAxB,OAANhH,QAAM,IAANA,GAAgB,QAAV8gF,EAAN9gF,EAAQgS,gBAAQ,IAAA8uE,OAAV,EAANA,EAAkB7uE,WACiB,IAA5B,OAANjS,QAAM,IAANA,GAAgB,QAAV+gF,EAAN/gF,EAAQgS,gBAAQ,IAAA+uE,OAAV,EAANA,EAAkB7uE,eACW,IAAxB,OAANlS,QAAM,IAANA,GAAgB,QAAVghF,EAANhhF,EAAQgS,gBAAQ,IAAAgvE,OAAV,EAANA,EAAkB/uE,WACiB,IAA5B,OAANjS,QAAM,IAANA,GAAgB,QAAVihF,EAANjhF,EAAQgS,gBAAQ,IAAAivE,OAAV,EAANA,EAAkB/uE,eACW,IAAxB,OAANlS,QAAM,IAANA,GAAgB,QAAVkhF,EAANlhF,EAAQgS,gBAAQ,IAAAkvE,OAAV,EAANA,EAAkBjvE,WAAmD,IAA5B,OAANjS,QAAM,IAANA,GAAgB,QAAVmhF,EAANnhF,EAAQgS,gBAAQ,IAAAmvE,OAAV,EAANA,EAAkBjvE,cACtD,CAAC,IAADy0E,EAAAC,EACAz3B,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAfe,EAAVf,GAAYS,qBAAa,IAAAM,GAAY,QAAZC,EAAzBD,EAA2B/9D,kBAAU,IAAAg+D,OAA3B,EAAVA,EAAuCz2B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnB5jE,OAAQ,QACRqxD,SAAU,eACV/zE,MAAOiT,EAAS,IAAM,MAG5B,MAAO,GACyB,IAAxB,OAANhH,QAAM,IAANA,GAAgB,QAAVohF,EAANphF,EAAQgS,gBAAQ,IAAAovE,OAAV,EAANA,EAAkBnvE,WACgB,IAA5B,OAANjS,QAAM,IAANA,GAAgB,QAAVqhF,EAANrhF,EAAQgS,gBAAQ,IAAAqvE,OAAV,EAANA,EAAkBnvE,cAClB,CAAC,IAAD20E,EAAAC,EACA33B,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAfiB,EAAVjB,GAAYS,qBAAa,IAAAQ,GAAY,QAAZC,EAAzBD,EAA2Bj+D,kBAAU,IAAAk+D,OAA3B,EAAVA,EAAuC32B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnB5jE,OAAQ,WACRqxD,SAAU,eACV/zE,MAAOiT,EAAS,IAAM,MAG5B,CACF,CACA,SAAS+/E,GAAW/mF,EAAQgH,EAAQyP,GACD,IAADuwE,EAAAC,EAUzBC,EAAAC,EAVO,GAAV1wE,GAAyB,GAAVA,EACjB04C,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAfoB,EAAVpB,GAAYS,qBAAa,IAAAW,GAAY,QAAZC,EAAzBD,EAA2Bp+D,kBAAU,IAAAq+D,OAA3B,EAAVA,EAAuC92B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnB5jE,OAAQ,WACRqxD,SAAU,eACV/zE,MAAOiT,KAIXmoD,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAfsB,EAAVtB,GAAYS,qBAAa,IAAAa,GAAY,QAAZC,EAAzBD,EAA2Bt+D,kBAAU,IAAAu+D,OAA3B,EAAVA,EAAuCh3B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnB5jE,OAAQ,aACRqxD,SAAU,eACV/zE,MAAOiT,IAIf,CArQA3K,qBAAU,KACJ8yD,KACFA,GAAO2B,QAAU3B,GAAO4B,OAAS5B,GAAO6B,QAAU,KAClD7B,GAAO8B,SAGK74D,aAAaC,QAAQ,SAQnC,IAAI+uF,EAiBJ,OAnBAj4B,GAAS,IAAIgC,gBAAa,GAAGrB,MAI7BX,GAAO4B,OAAS,KACVZ,GAAQhB,GAAOiC,KAAK9xD,KAAKC,UAAU,CAAE8xD,QAASlB,KAElDi3B,EAAepX,aAAY,KAAO,IAADqX,GACrB,QAANA,EAAAl4B,UAAM,IAAAk4B,OAAA,EAANA,EAAQtP,cAAeC,UAAUC,MACnC9oB,GAAOiC,KAAK9xD,KAAKC,UAAU,CAAEwC,KAAM,SACrC,GACC,IAAM,EAGXotD,GAAO6B,QAAU,KACfue,cAAc6X,GACdj4B,GAAS,IAAI,EAGR,KACLogB,cAAc6X,GACVj4B,IAAQA,GAAO8B,OAAO,CAC3B,GACA,CAACd,IAEJ9zD,qBAAU,KACJ8yD,GACFA,GAAOmC,UAAav1C,IAClB,IAAIxe,EAAO+B,KAAK4Q,MAAa,OAAP6L,QAAO,IAAPA,OAAO,EAAPA,EAASxe,MAGZ,UAAX,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMwE,QAEVoiF,GAAc5mF,GACN,OAAJA,QAAI,IAAJA,KAAMwe,UACa,kBAAb,OAAJxe,QAAI,IAAJA,OAAI,EAAJA,EAAMwe,SAgClBloB,eAA2ByzF,GACnB,OAANtnF,SAAM,IAANA,OAAQ+mC,WAAU,CAACwgD,EAAUC,KAC3B,IAAY,OAARD,QAAQ,IAARA,OAAQ,EAARA,EAAUzuF,OAAU,OAAHwuF,QAAG,IAAHA,OAAG,EAAHA,EAAK/1B,WAAW,CAAC,IAADk2B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACnC,IAAIC,EAAa,IAAIzoF,IAGrB,GAFAyoF,EAAWjB,GAAU,IAAKiB,EAAWjB,IACrCiB,EAAWjB,GAAQznF,UAAY,IAAK0oF,EAAWjB,GAAQznF,WACf,GAApCC,GAAOwnF,GAAQx1E,SAASC,SACP,WAAZ,OAAHq1E,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,UACPgyE,EAAWjB,GAAQznF,UAAU8Q,OAAY,OAAHy2E,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,aAExC,GACkC,IAAxB,QAAdygF,EAAAznF,GAAOwnF,UAAO,IAAAC,GAAU,QAAVC,EAAdD,EAAgBz1E,gBAAQ,IAAA01E,OAAV,EAAdA,EAA0Bz1E,WACiB,IAA5B,QAAd01E,EAAA3nF,GAAOwnF,UAAO,IAAAG,GAAU,QAAVC,EAAdD,EAAgB31E,gBAAQ,IAAA41E,OAAV,EAAdA,EAA0B11E,eACW,IAAxB,QAAd21E,EAAA7nF,GAAOwnF,UAAO,IAAAK,GAAU,QAAVC,EAAdD,EAAgB71E,gBAAQ,IAAA81E,OAAV,EAAdA,EAA0B71E,WACiB,IAA5B,QAAd81E,EAAA/nF,GAAOwnF,UAAO,IAAAO,GAAU,QAAVC,EAAdD,EAAgB/1E,gBAAQ,IAAAg2E,OAAV,EAAdA,EAA0B91E,cAET,WAAZ,OAAHo1E,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QACPgyE,EAAWjB,GAAQznF,UAAU8Q,OAAY,OAAHy2E,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OACnB,aAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QACdgyE,EAAWjB,GAAQznF,UAAU2oF,SAAc,OAAHpB,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OACrB,iBAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QACdgyE,EAAWjB,GAAQznF,UAAUyiE,aAAkB,OAAH8kB,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OACzB,YAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QACdgyE,EAAWjB,GAAQznF,UAAUo0E,QAAa,OAAHmT,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OACpB,UAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,UACdgyE,EAAWjB,GAAQznF,UAAUu0E,MAAW,OAAHgT,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,aAEvC,GAC+B,GAApChH,GAAOwnF,GAAQx1E,SAASC,UACgB,GAAxCjS,GAAOwnF,GAAQx1E,SAASE,aAEL,YAAZ,OAAHo1E,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QACPgyE,EAAWjB,GAAQznF,UAAUo0E,QAAa,OAAHmT,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OACpB,UAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QACdgyE,EAAWjB,GAAQznF,UAAUu0E,MAAW,OAAHgT,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAClB,iBAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,UACdgyE,EAAWjB,GAAQznF,UAAUyiE,aAAkB,OAAH8kB,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,aAE9C,GAC+B,GAApChH,GAAOwnF,GAAQx1E,SAASC,UACgB,GAAxCjS,GAAOwnF,GAAQx1E,SAASE,aAEL,WAAZ,OAAHo1E,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,UACPgyE,EAAWjB,GAAQznF,UAAU8Q,OAAY,OAAHy2E,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,aAExC,GAAwC,GAApChH,GAAOwnF,GAAQx1E,SAASC,SAAe,CAChD,IAAI02E,EAAW,IAAIrE,IACf,OAAJA,SAAI,IAAJA,OAAMv9C,WAAU,CAACwgD,EAAU3/E,MACb,OAAR2/E,QAAQ,IAARA,OAAQ,EAARA,EAAUzuF,MAAS,OAAHwuF,QAAG,IAAHA,OAAG,EAAHA,EAAK/1B,aACvBo3B,EAAS/gF,GAAK,IAAK+gF,EAAS/gF,IAC5B+gF,EAAS/gF,GAAG7H,UAAY,IACnB4oF,EAAS/gF,GAAG7H,WAEE,eAAZ,OAAHunF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,SACPkyE,EAAS/gF,GAAG7H,UAAUouE,WAAgB,OAAHmZ,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OACxCyhF,EAAWjB,GAAQznF,UAAUouE,WAAgB,OAAHmZ,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,QACvB,oBAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,SACdkyE,EAAS/gF,GAAG7H,UAAU6tE,gBAAqB,OAAH0Z,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAC7CyhF,EAAWjB,GAAQznF,UAAU6tE,gBAAqB,OAAH0Z,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,QAC5B,uBAAZ,OAAHsgF,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,UACdkyE,EAAS/gF,GAAG7H,UAAUguE,mBAAwB,OAAHuZ,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAChDyhF,EAAWjB,GAAQznF,UAAUguE,mBAAwB,OAAHuZ,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,QAE3D,IAEFu9E,GAAQoE,EACV,MAAO,GACkC,MAAxB,QAAdV,EAAAjoF,GAAOwnF,UAAO,IAAAS,GAAU,QAAVC,EAAdD,EAAgBj2E,gBAAQ,IAAAk2E,OAAV,EAAdA,EAA0Bj2E,WACiB,IAA5B,QAAdk2E,EAAAnoF,GAAOwnF,UAAO,IAAAW,GAAU,QAAVC,EAAdD,EAAgBn2E,gBAAQ,IAAAo2E,OAAV,EAAdA,EAA0Bl2E,eACW,MAAxB,QAAdm2E,EAAAroF,GAAOwnF,UAAO,IAAAa,GAAU,QAAVC,EAAdD,EAAgBr2E,gBAAQ,IAAAs2E,OAAV,EAAdA,EAA0Br2E,WACiB,IAA5B,QAAds2E,EAAAvoF,GAAOwnF,UAAO,IAAAe,GAAU,QAAVC,EAAdD,EAAgBv2E,gBAAQ,IAAAw2E,OAAV,EAAdA,EAA0Bt2E,cAE5B,GAAkB,eAAdo1E,EAAI7wE,OAAyB,CAC/BgyE,EAAWjB,GAAQznF,UAAUwS,YAAiB,OAAH+0E,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAChD,IAAI4hF,EAAc,IAAIpE,IACf,OAAPA,SAAO,IAAPA,OAASz9C,WAAU,CAACwgD,EAAU3/E,MAChB,OAAR2/E,QAAQ,IAARA,OAAQ,EAARA,EAAUzuF,OAAU,OAAHwuF,QAAG,IAAHA,OAAG,EAAHA,EAAK/1B,aACxBq3B,EAAYhhF,GAAK,IAAKghF,EAAYhhF,IAClCghF,EAAYhhF,GAAG7H,UAAY,IACtB6oF,EAAYhhF,GAAG7H,WAEpB6oF,EAAYhhF,GAAG7H,UAAUwS,YAAiB,OAAH+0E,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAC9C,IAEFy9E,GAAWmE,EACb,MAAO,GAAmB,gBAAZ,OAAHtB,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QAAyB,CACvCgyE,EAAWjB,GAAQznF,UAAU0sE,YAAiB,OAAH6a,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAChD,IAAI4hF,EAAc,IAAIpE,IACf,OAAPA,SAAO,IAAPA,OAASz9C,WAAU,CAACwgD,EAAU3/E,MAChB,OAAR2/E,QAAQ,IAARA,OAAQ,EAARA,EAAUzuF,OAAU,OAAHwuF,QAAG,IAAHA,OAAG,EAAHA,EAAK/1B,aACxBq3B,EAAYhhF,GAAK,IAAKghF,EAAYhhF,IAClCghF,EAAYhhF,GAAG7H,UAAY,IACtB6oF,EAAYhhF,GAAG7H,WAEpB6oF,EAAYhhF,GAAG7H,UAAU0sE,YAAiB,OAAH6a,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAC9C,IAEFy9E,GAAWmE,EACb,MAAO,GAAmB,SAAZ,OAAHtB,QAAG,IAAHA,OAAG,EAAHA,EAAK7wE,QAAkB,CAChCgyE,EAAWjB,GAAQznF,UAAU0sE,YAAiB,OAAH6a,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OAChD,IAAI4hF,EAAc,IAAIpE,IACf,OAAPA,SAAO,IAAPA,OAASz9C,WAAU,CAACwgD,EAAU3/E,MAChB,OAAR2/E,QAAQ,IAARA,OAAQ,EAARA,EAAUzuF,OAAU,OAAHwuF,QAAG,IAAHA,OAAG,EAAHA,EAAK/1B,aACxBq3B,EAAYhhF,GAAK,IAAKghF,EAAYhhF,IAClCghF,EAAYhhF,GAAG7H,UAAY,IACtB6oF,EAAYhhF,GAAG7H,WAEpB6oF,EAAYhhF,GAAG7H,UAAU8nD,KAAU,OAAHy/B,QAAG,IAAHA,OAAG,EAAHA,EAAKtgF,OACvC,IAEFy9E,GAAWmE,EACb,CAEFhE,GAAU6D,EACZ,IAEJ,CAnJUI,CAAYtrF,GAEK,6CAAb,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMwe,UACW,OAAb,OAAJxe,QAAI,IAAJA,OAAI,EAAJA,EAAMyJ,QAENoW,YAAW,KACT8xD,GAAkB,EAAK,GACtB,MACuB,OAAb,OAAJ3xE,QAAI,IAAJA,OAAI,EAAJA,EAAMyJ,SACf0+E,GAAiB,gCACjBzW,GAAe,IACW,OAAb,OAAJ1xE,QAAI,IAAJA,OAAI,EAAJA,EAAMyJ,SACfw+E,GAAoB,oBACpBjV,GAAkB,IACQ,OAAb,OAAJhzE,QAAI,IAAJA,OAAI,EAAJA,EAAMyJ,SACfw+E,GAAoB,6BACpBjV,GAAkB,IACQ,OAAb,OAAJhzE,QAAI,IAAJA,OAAI,EAAJA,EAAMyJ,QACfoW,YAAW,KACTuhC,GAAgB,EAAK,GACpB,MAEH3gD,QAAQ+f,IAAQ,OAAJxgB,QAAI,IAAJA,OAAI,EAAJA,EAAMwe,QAAa,OAAJxe,QAAI,IAAJA,OAAI,EAAJA,EAAMyJ,SAErC,EAGFhJ,QAAQD,MAAM,iCAChB,GACC,CAACiC,KA0LJ,MAAM8oF,GAAaA,CAAC9oF,EAAQgH,EAAQyP,KAClC,MAAMonE,EAASS,KACf,GAAIT,GAAUA,EAAO9F,aAAeC,UAAUC,KAAM,CAAC,IAAD8Q,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAClD,MAAMrtE,EACO,IAAXtF,GAA2B,IAAXA,EACZnX,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAfmD,EAAVnD,GAAYS,qBAAa,IAAA0C,GAAY,QAAZC,EAAzBD,EAA2BngE,kBAAU,IAAAogE,OAA3B,EAAVA,EAAuC74B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,GAAiB,QAAXipF,EAANjpF,EAAQD,iBAAS,IAAAkpF,OAAX,EAANA,EAAmBlqF,SAC9B0X,OAAQ,WACRqxD,SAAU,eACV/zE,MAAOiT,EACP4e,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAE3CiH,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAfsD,EAAVtD,GAAYS,qBAAa,IAAA6C,GAAY,QAAZC,EAAzBD,EAA2BtgE,kBAAU,IAAAugE,OAA3B,EAAVA,EAAuCh5B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,GAAiB,QAAXopF,EAANppF,EAAQD,iBAAS,IAAAqpF,OAAX,EAANA,EAAmBrqF,SAC9B0X,OAAQ,aACRqxD,SAAU,eACV/zE,MAAOiT,EACP4e,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAEjDwlF,EAAOzsB,KAAKr1C,EACd,MACE/d,QAAQD,MAAM,qBAChB,EAEF,SAASsrF,GAAcrpF,EAAQgH,EAAQyP,EAAQ6yE,GACtB,IAADC,EAAAC,EAWYC,EAAAC,EAUzBC,EAAAC,EArBU,GAAfN,EACFn6B,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAf2D,EAAV3D,GAAYS,qBAAa,IAAAkD,GAAY,QAAZC,EAAzBD,EAA2B3gE,kBAAU,IAAA4gE,OAA3B,EAAVA,EAAuCr5B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnB5jE,OAAQ,eACRqxD,SAAU,eACV/zE,MAAOiT,KAIG,GAAVyP,GAAyB,GAAVA,EACjB04C,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAf6D,EAAV7D,GAAYS,qBAAa,IAAAoD,GAAY,QAAZC,EAAzBD,EAA2B7gE,kBAAU,IAAA8gE,OAA3B,EAAVA,EAAuCv5B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnB5jE,OAAQ,eACRqxD,SAAU,eACV/zE,MAAOiT,KAIXmoD,GAAOiC,KACL9xD,KAAKC,UAAU,CACb4wD,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAf+D,EAAV/D,GAAYS,qBAAa,IAAAsD,GAAY,QAAZC,EAAzBD,EAA2B/gE,kBAAU,IAAAghE,OAA3B,EAAVA,EAAuCz5B,OAC/CoB,UAAiB,OAANvxD,QAAM,IAANA,OAAM,EAANA,EAAQq6E,iBACnB5jE,OAAQ,aACRqxD,SAAU,eACV/zE,MAAOiT,IAKjB,CAEA3K,qBAAU,KACR,GAAIupF,GAAY,CAAC,IAADiE,EAAAC,EAAAC,EACdz7B,EAAoB,OAAVs3B,SAAU,IAAVA,IAAyB,QAAfiE,EAAVjE,GAAYS,qBAAa,IAAAwD,GAAY,QAAZC,EAAzBD,EAA2BjhE,kBAAU,IAAAkhE,OAA3B,EAAVA,EAAuC35B,QACjD/3D,aAAaK,QAAQ,WAAsB,OAAVmtF,SAAU,IAAVA,IAAyB,QAAfmE,EAAVnE,GAAYS,qBAAa,IAAA0D,OAAf,EAAVA,EAA2BhyC,OAC5DwsC,GAAQ,IACRE,GAAW,IACXE,GAAe,IACfC,GAAU,IAEV,IAAK,IAAIh9E,EAAI,EAAGA,GAAc,OAAVg+E,SAAU,IAAVA,IAAyB,QAAfoE,EAAVpE,GAAYS,qBAAa,IAAA2D,GAAQ,QAARC,EAAzBD,EAA2Bz4E,cAAM,IAAA04E,OAAvB,EAAVA,EAAmC7hF,QAAQR,IAAK,CAAC,IAADoiF,EAAAC,EAAAC,EAAAC,EAClE,GAAc,OAAVvE,SAAU,IAAVA,IAAyB,QAAfsE,EAAVtE,GAAYS,qBAAa,IAAA6D,GAAW,QAAXC,EAAzBD,EAA2B34E,OAAO3J,UAAE,IAAAuiF,GAApCA,EAAsCjhF,QAAS,CAAC,IAADkhF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACjD,GAAgE,IAAlD,OAAV5F,SAAU,IAAVA,IAAyB,QAAfwE,EAAVxE,GAAYS,qBAAa,IAAA+D,GAAW,QAAXC,EAAzBD,EAA2B74E,OAAO3J,UAAE,IAAAyiF,GAAU,QAAVC,EAApCD,EAAsCr4E,gBAAQ,IAAAs4E,OAApC,EAAVA,EAAgDr4E,UAAe,CAAC,IAADw5E,EAAAC,EAAAC,EAEjE,IAAIC,EAAmB,OAAVhG,SAAU,IAAVA,IAAyB,QAAf6F,EAAV7F,GAAYS,qBAAa,IAAAoF,GAAQ,QAARC,EAAzBD,EAA2Bl6E,cAAM,IAAAm6E,OAAvB,EAAVA,EAAmC3iF,QAC7CnB,IAAC,IAAA6J,EAAA,MAA0B,eAApB,OAAD7J,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,OAAV,EAADA,EAAa5c,KAAoB,IAE1C0vF,GAAQqH,GACR9G,GAAa,IAAIR,GAAgB,OAAVsB,SAAU,IAAVA,IAAyB,QAAf+F,EAAV/F,GAAYS,qBAAa,IAAAsF,OAAf,EAAVA,EAA2Bp6E,OAAO3J,IAC3D,MAAO,GACuD,MAAlD,OAAVg+E,SAAU,IAAVA,IAAyB,QAAf2E,EAAV3E,GAAYS,qBAAa,IAAAkE,GAAW,QAAXC,EAAzBD,EAA2Bh5E,OAAO3J,UAAE,IAAA4iF,GAAU,QAAVC,EAApCD,EAAsCx4E,gBAAQ,IAAAy4E,OAApC,EAAVA,EAAgDx4E,WACgB,IAAtD,OAAV2zE,SAAU,IAAVA,IAAyB,QAAf8E,EAAV9E,GAAYS,qBAAa,IAAAqE,GAAW,QAAXC,EAAzBD,EAA2Bn5E,OAAO3J,UAAE,IAAA+iF,GAAU,QAAVC,EAApCD,EAAsC34E,gBAAQ,IAAA44E,OAApC,EAAVA,EAAgD14E,cAChD,CAAC,IAAD25E,EAAAC,EACArH,GAAW,IAAID,GAAmB,OAAVoB,SAAU,IAAVA,IAAyB,QAAfiG,EAAVjG,GAAYS,qBAAa,IAAAwF,OAAf,EAAVA,EAA2Bt6E,OAAO3J,KAC1Do9E,GAAgB,IAAIR,GAAmB,OAAVoB,SAAU,IAAVA,IAAyB,QAAfkG,EAAVlG,GAAYS,qBAAa,IAAAyF,OAAf,EAAVA,EAA2Bv6E,OAAO3J,IACjE,MAAO,GACuD,MAAlD,OAAVg+E,SAAU,IAAVA,IAAyB,QAAfiF,EAAVjF,GAAYS,qBAAa,IAAAwE,GAAW,QAAXC,EAAzBD,EAA2Bt5E,OAAO3J,UAAE,IAAAkjF,GAAU,QAAVC,EAApCD,EAAsC94E,gBAAQ,IAAA+4E,OAApC,EAAVA,EAAgD94E,WACgB,IAAtD,OAAV2zE,SAAU,IAAVA,IAAyB,QAAfoF,EAAVpF,GAAYS,qBAAa,IAAA2E,GAAW,QAAXC,EAAzBD,EAA2Bz5E,OAAO3J,UAAE,IAAAqjF,GAAU,QAAVC,EAApCD,EAAsCj5E,gBAAQ,IAAAk5E,OAApC,EAAVA,EAAgDh5E,cAChD,CAAC,IAAD65E,EAAAC,EACAvH,GAAW,IAAID,GAAmB,OAAVoB,SAAU,IAAVA,IAAyB,QAAfmG,EAAVnG,GAAYS,qBAAa,IAAA0F,OAAf,EAAVA,EAA2Bx6E,OAAO3J,KAC1Do9E,GAAgB,IAAIR,GAAmB,OAAVoB,SAAU,IAAVA,IAAyB,QAAfoG,EAAVpG,GAAYS,qBAAa,IAAA2F,OAAf,EAAVA,EAA2Bz6E,OAAO3J,IACjE,MAAO,GACuD,MAAlD,OAAVg+E,SAAU,IAAVA,IAAyB,QAAfuF,EAAVvF,GAAYS,qBAAa,IAAA8E,GAAW,QAAXC,EAAzBD,EAA2B55E,OAAO3J,UAAE,IAAAwjF,GAAU,QAAVC,EAApCD,EAAsCp5E,gBAAQ,IAAAq5E,OAApC,EAAVA,EAAgDp5E,WACgB,IAAtD,OAAV2zE,SAAU,IAAVA,IAAyB,QAAf0F,EAAV1F,GAAYS,qBAAa,IAAAiF,GAAW,QAAXC,EAAzBD,EAA2B/5E,OAAO3J,UAAE,IAAA2jF,GAAU,QAAVC,EAApCD,EAAsCv5E,gBAAQ,IAAAw5E,OAApC,EAAVA,EAAgDt5E,cAChD,CAAC,IAAD+5E,EAAAC,EACAvH,GAAe,IACVD,GACO,OAAVkB,SAAU,IAAVA,IAAyB,QAAfqG,EAAVrG,GAAYS,qBAAa,IAAA4F,OAAf,EAAVA,EAA2B16E,OAAO3J,KAEpCw9E,GAAoB,IACfV,GACO,OAAVkB,SAAU,IAAVA,IAAyB,QAAfsG,EAAVtG,GAAYS,qBAAa,IAAA6F,OAAf,EAAVA,EAA2B36E,OAAO3J,IAEtC,CACAg9E,IAAW5kF,IAAM,IAAAmsF,EAAA,MAAK,IACjBnsF,EACO,OAAV4lF,SAAU,IAAVA,IAAyB,QAAfuG,EAAVvG,GAAYS,qBAAa,IAAA8F,OAAf,EAAVA,EAA2B56E,OAAO3J,GACnC,IACDs9E,IAAgBllF,IAAM,IAAAosF,EAAA,MAAK,IACtBpsF,EACO,OAAV4lF,SAAU,IAAVA,IAAyB,QAAfwG,EAAVxG,GAAYS,qBAAa,IAAA+F,OAAf,EAAVA,EAA2B76E,OAAO3J,GACnC,GACH,CACF,CACF,IACC,CAACg+E,KAEJ,MAAMyG,GAAqBA,CAAC9uF,EAAM+R,IACpB,OAAR/R,EACE+R,EAAMnB,IACDk2E,GAAe,CACpBl2E,KAAK,EACL3G,IAAI,EACJC,KAAK,IAGF48E,GAAe,CACpBl2E,KAAMmB,EAAMnB,IACZ3G,IAAI,EACJC,KAAK,IAEU,MAARlK,EACL+R,EAAM9H,GACD68E,GAAe,CACpBl2E,KAAK,EACL3G,IAAI,EACJC,KAAK,IAGF48E,GAAe,CACpB78E,IAAK8H,EAAM9H,GACX2G,KAAK,EACL1G,KAAK,IAEU,OAARlK,EACL+R,EAAM7H,IACD48E,GAAe,CACpB58E,KAAK,EACLD,IAAI,EACJ2G,KAAK,IAGFk2E,GAAe,CACpB58E,KAAM6H,EAAM7H,IACZD,IAAI,EACJ2G,KAAK,SAXF,EAqBHm+E,GAAeA,CAAC/uF,EAAM+R,KAC1B,MAAMi9E,EAAgB,IAAIxH,IACpByH,EAAc,IAAI3H,IAClB4H,EAAiB,IAAIxH,IAC3B,GAAY,OAAR1nF,EAAe,CACjB,MAAMmvF,EAAkB,OAAdD,QAAc,IAAdA,OAAc,EAAdA,EAAgB1jF,QAAQnB,IAAC,IAAAoB,EAAA,MAAkC,MAA5B,OAADpB,QAAC,IAADA,GAAY,QAAXoB,EAADpB,EAAG7H,iBAAS,IAAAiJ,OAAX,EAADA,EAAcC,YAAkB,IAClE0jF,EAAe,OAAXH,QAAW,IAAXA,OAAW,EAAXA,EAAazjF,QACpBnB,IAAC,IAAAs6D,EAAA,OAAmB,IAAb,OAADt6D,QAAC,IAADA,OAAC,EAADA,EAAGsB,UAAgD,MAA5B,OAADtB,QAAC,IAADA,GAAY,QAAXs6D,EAADt6D,EAAG7H,iBAAS,IAAAmiE,OAAX,EAADA,EAAcj5D,YAAkB,IAEzDkb,EAAiB,OAAbooE,QAAa,IAAbA,OAAa,EAAbA,EAAexjF,QAAQnB,GAAoB,IAAb,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGsB,WAC1C07E,GAAU8H,GACVnI,GAAQoI,GACRlI,GAAWtgE,GACXkoE,GAAmB9uF,EAAM+R,EAC3B,MAAO,GAAY,MAAR/R,EAAc,CACvB,MAAMmvF,EAAkB,OAAdD,QAAc,IAAdA,OAAc,EAAdA,EAAgB1jF,QACvBnB,IAAC,IAAAu6D,EAAAC,EAAA,MAC6B,MAA5B,OAADx6D,QAAC,IAADA,GAAY,QAAXu6D,EAADv6D,EAAG7H,iBAAS,IAAAoiE,OAAX,EAADA,EAAcl5D,mBACelQ,IAA5B,OAAD6O,QAAC,IAADA,GAAY,QAAXw6D,EAADx6D,EAAG7H,iBAAS,IAAAqiE,OAAX,EAADA,EAAcn5D,YAAwB,IAEpC0jF,EAAe,OAAXH,QAAW,IAAXA,OAAW,EAAXA,EAAazjF,QACpBnB,IAAC,IAAAy6D,EAAA,OAAmB,IAAb,OAADz6D,QAAC,IAADA,OAAC,EAADA,EAAGsB,UAAiD,OAA7B,OAADtB,QAAC,IAADA,GAAY,QAAXy6D,EAADz6D,EAAG7H,iBAAS,IAAAsiE,OAAX,EAADA,EAAcp5D,YAAmB,IAE1Dkb,EAAiB,OAAbooE,QAAa,IAAbA,OAAa,EAAbA,EAAexjF,QAAQnB,GAAoB,IAAb,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGsB,WAC1Cq7E,GAAQoI,GACRlI,GAAWtgE,GACXygE,GAAU8H,GACVL,GAAmB9uF,EAAM+R,EAC3B,KAAmB,OAAR/R,IACTqnF,GAAU6H,GACVlI,GAAQiI,GACR/H,GAAW8H,GACXF,GAAmB9uF,EAAM+R,GAC3B,EAUF,OAAIwE,KAAY8xE,GAEZrsF,cAAA,OAAAX,SACEW,cAAC+b,GAAO,MAKVvX,GACKxE,cAACmwC,GAAY,IAIpBnwC,cAAAZ,WAAA,CAAAC,SACsB,OAAnB2K,SAAmB,IAAnBA,IAAoC,QAAjBO,EAAnBP,GAAqBc,uBAAe,IAAAP,GAApCA,EAAsCw5E,aACpB,OAAnB/5E,SAAmB,IAAnBA,IAAoC,QAAjBQ,EAAnBR,GAAqBc,uBAAe,IAAAN,GAApCA,EAAsCw5E,SACpC7kF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CAChCgtF,IAAwB,OAAVA,SAAU,IAAVA,IAAyB,QAAfhD,EAAVgD,GAAYS,qBAAa,IAAAzD,GAAY,QAAZC,EAAzBD,EAA2Bh6D,kBAAU,IAAAi6D,GAArCA,EAAuCryB,OACpDj3D,cAAAZ,WAAA,IAEAY,cAAA,OAAKsH,UAAU,iBAAgBjI,SAC7BF,eAAA,QAAMmI,UAAU,2BAA0BjI,SAAA,CACxCW,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,KAAGsH,UAAU,kCAEftH,cAAA,QAAMsH,UAAU,uBAAsBjI,SACnC8G,EAAE,yDAKXhH,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,OACEsH,UAAU,kBACVM,IAAe,OAAVykF,SAAU,IAAVA,IAAgC,QAAtB9C,EAAV8C,GAAYpf,4BAAoB,IAAAsc,OAAtB,EAAVA,EAAkCv8D,IACvC9kB,IAAI,OACJhK,MAAM,MACNgC,OAAO,UAGXf,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CACpDW,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC5CW,cAACqmE,GAAsB,CACrBriE,KAAgB,OAAVqoF,SAAU,IAAVA,QAAU,EAAVA,GAAYpf,yBAGtB9tE,eAAA,OAAKmI,UAAU,+BAA8BjI,SAAA,CAC3CW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,QAAMsH,UAAU,mBAAkBjI,SACrB,OAAVgtF,SAAU,IAAVA,IAAyB,QAAf7C,EAAV6C,GAAYS,qBAAa,IAAAtD,OAAf,EAAVA,EAA2BhrC,UAGhCx+C,cAAA,OAAKsH,UAAU,sCAAqCjI,SAClDF,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCW,cAAA,OACEsH,UAAW,4BACE,OAAXujF,SAAW,IAAXA,OAAaj2E,IACT,mCACA,qCACHvV,SAEHW,cAAA,QACEP,UACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBS,EAAnBT,GAAqBc,uBAAe,IAAAL,IAApCA,EAAsCooE,cAClC,KAAMkgB,GAAa,MAAOlI,KAE/BxrF,SAEA8G,EACC,gEAINnG,cAAA,OACEsH,UAAW,4BACE,OAAXujF,SAAW,IAAXA,OAAa58E,GACT,kCACA,oCAENxO,UACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBU,EAAnBV,GAAqBc,uBAAe,IAAAJ,IAApCA,EAAsCmoE,cAClC,KAAMkgB,GAAa,KAAMlI,KAE9BxrF,SAEDW,cAAA,QAAAX,SACG8G,EACC,mEAINnG,cAAA,OACEsH,UAAW,4BACE,OAAXujF,SAAW,IAAXA,OAAa38E,IACT,mCACA,qCACH7O,SAEHW,cAAA,QACEP,UACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBW,EAAnBX,GAAqBc,uBAAe,IAAAH,IAApCA,EAAsCkoE,cAClC,KAAMkgB,GAAa,MAAOlI,KAE/BxrF,SAEA8G,EACC,wEAMVnG,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CF,eAAA,OAAKmI,UAAU,kBAAiBjI,SAAA,CAC9BW,cAAA,QAAMsH,UAAU,iBAAgBjI,SAC9BF,eAAA,UACE7D,KAAK,SACLiE,GAAG,GACH+H,UAAU,wBACVgB,WACqB,OAAnB0B,SAAmB,IAAnBA,IAAoC,QAAjBkqE,EAAnBlqE,GAAqBc,uBAAe,IAAAopE,IAApCA,EAAsCrB,cACjC9yD,IA1KFrgB,KACzB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MAC3BoyF,GAAcpyF,EAAM,EAwKa64F,CAAkBtzE,IAE9B1gB,SAAA,CAEDW,cAAA,UAAQxF,MAAM,YAAW6E,SACtB8G,EAAE,iDAEJmmF,GACCtsF,cAAA,UAAQxF,MAAM,WAAU6E,SACrB8G,EAAE,iDAEH,KACJnG,cAAA,UAAQxF,MAAM,cAAa6E,SACxB8G,EAAE,wDAITnG,cAAA,QAAMsH,UAAU,wBAAuBjI,SACrCW,cAAA,UACEwI,KAAK,OACLlB,UAAU,cACV7H,UACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBk7E,EAAnBl7E,GAAqBc,uBAAe,IAAAo6E,IAApCA,EAAsCjV,aAClC,MA/qBJrX,MAAO,IAAD06B,EAC5B,MAAMn6B,EAAqB,MAErBC,GAAc,IAAIj0D,MAAOq8C,WAEzB6X,EAAa/qD,OACjBzP,aAAaC,QAAQ,aAAaoQ,UAAU,EAAG,IAIjB,IAADqkF,EAAAC,EAAAC,EAF/BlqC,GAA+B,OAAV8iC,SAAU,IAAVA,IAAyB,QAAfiH,EAAVjH,GAAYS,qBAAa,IAAAwG,OAAf,EAAVA,EAA2B/zF,IAE9B,aAAdotF,IACFvjC,GACEgQ,EAAcC,EACV,IAAIl0D,MAAK,IAAIA,MAAOE,UAAY8zD,GAChC,IAAIh0D,MAEVqzC,EAAkB,OAAV6zC,SAAU,IAAVA,IAAyB,QAAfkH,EAAVlH,GAAYS,qBAAa,IAAAyG,OAAf,EAAVA,EAA2B/0C,OACnC/F,EAAoB,OAAV4zC,SAAU,IAAVA,IAAyB,QAAfmH,EAAVnH,GAAYS,qBAAa,IAAA0G,OAAf,EAAVA,EAA2Bj0F,IACrCV,aAAaK,QAAQ,mBAA8B,OAAVmtF,SAAU,IAAVA,IAAyB,QAAfoH,EAAVpH,GAAYS,qBAAa,IAAA2G,OAAf,EAAVA,EAA2Bn4F,MACpEglD,GAAsBzhD,aAAaC,QAAQ,qBAC3C6D,IAAQ,GAEgC,SAAtC9D,aAAaC,QAAQ,cACiB,UAAtCD,aAAaC,QAAQ,aAErBwoD,GAAqB,IAAIniD,MACsB,UAAtCtG,aAAaC,QAAQ,eAC1Bs6D,EAAc,GAChB9R,GACE,IAAIniD,KAAK,IAAIA,MAAK,IAAIA,MAAOE,UAAY8zD,KAElCC,GAAe,IACxB9R,GAAqB,IAAIniD,QAGN,eAAdwnF,KACTD,IAAmB,GAEqB,SAAtC7tF,aAAaC,QAAQ,cACiB,UAAtCD,aAAaC,QAAQ,aAErBwoD,GAAqB,IAAIniD,MACsB,UAAtCtG,aAAaC,QAAQ,eAC1Bs6D,EAAc,GAChB9R,GACE,IAAIniD,KAAK,IAAIA,MAAK,IAAIA,MAAOE,UAAY8zD,KAElCC,GAAe,IACxB9R,GAAqB,IAAIniD,OAI7B6vD,GAAkB,GACpB,EA2nB4B4D,EAAiB,GAGxBv5D,SAEDW,cAAA,KAAGo1C,MAAM,wBAKG,OAAnBprC,SAAmB,IAAnBA,IAAoC,QAAjBy/E,EAAnBz/E,GAAqBc,uBAAe,IAAA2+E,GAApCA,EAAsCiK,aACrC1zF,cAAC8oF,GAAU,CACTsD,gBAAiBA,GACjB3I,QAAmB,OAAV4I,SAAU,IAAVA,QAAU,EAAVA,GAAYS,cACrBjhE,QAASA,KAET,KACJ7rB,cAAA,OAAKsH,UAAU,sCAAqCjI,SAClDF,eAAA,QAAMmI,UAAU,mBAAkBjI,SAAA,CAChCW,cAAA,QAAAX,SACEW,cAAA,KAAGo1C,MAAM,qBACH,IACRj2C,eAAA,QAAMmI,UAAU,iBAAgBjI,SAAA,E9I3yBlB2E,G8I4yBiB,OAAVqoF,SAAU,IAAVA,IAAyB,QAAf3C,EAAV2C,GAAYS,qBAAa,IAAApD,OAAf,EAAVA,EAA2B1xE,O9I3yBvD,OAAJhU,SAAI,IAAJA,QAAI,EAAJA,GAAMwL,QAAQnB,GAAMA,EAAEsB,UAASd,Q8I2yBoC,IACtD7O,cAAA,QAAMsH,UAAU,uBAAsBjI,SACnCkQ,GAAwB,OAAV88E,SAAU,IAAVA,IAAyB,QAAf1C,EAAV0C,GAAYS,qBAAa,IAAAnD,OAAf,EAAVA,EAA2B3xE,2BAQX,IAAlC,OAAVq0E,SAAU,IAAVA,IAAyB,QAAfzC,EAAVyC,GAAYS,qBAAa,IAAAlD,OAAf,EAAVA,EAA2B5xE,OAAOnJ,SACjC7O,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCF,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAAZ,WAAA,CAAAC,SACsB,IAAZ,OAAP4rF,SAAO,IAAPA,QAAO,EAAPA,GAASp8E,UAAuC,KAAd,QAAVg7E,EAAAoB,GAAQ,UAAE,IAAApB,OAAA,EAAVA,EAAYl6E,UACnC3P,cAAAZ,WAAA,CAAAC,SACyC,IAA5B,QAAVyqF,EAAAmB,GAAQ,UAAE,IAAAnB,GAAU,QAAVC,EAAVD,EAAYrxE,gBAAQ,IAAAsxE,OAAV,EAAVA,EAAsBpxE,cACrB3Y,cAACoxE,GAAG,CACFptE,KAAMyC,GAAO,GACb6b,KAAM2oE,GAAQ,GACdpzB,KAAMi4B,GACNluB,YAAuB,OAAVyqB,SAAU,IAAVA,QAAU,EAAVA,GAAYpf,uBAG3BjtE,cAAC2zF,GAAW,CACV3vF,KAAMyC,GAAO,GACb6b,KAAM2oE,GAAQ,GACdpzB,KAAMi4B,GACNluB,YAAuB,OAAVyqB,SAAU,IAAVA,QAAU,EAAVA,GAAYpf,2BAMnCjtE,cAAAZ,WAAA,CAAAC,SACoB,KAAb,OAAJ0rF,SAAI,IAAJA,QAAI,EAAJA,GAAMl8E,UACD,OAAJk8E,SAAI,IAAJA,IAIG,QAJCf,EAAJe,GACIv7E,QACCnB,IAAC,IAAA06D,EAAA,OACC,OAAD16D,QAAC,IAADA,OAAC,EAADA,EAAGsB,UAAkC,mBAAtB,OAADtB,QAAC,IAADA,GAAY,QAAX06D,EAAD16D,EAAG7H,iBAAS,IAAAuiE,OAAX,EAADA,EAAcvgE,KAAwB,WACvD,IAAAwhF,OAJC,EAAJA,EAKIhuF,KAAI,CAACsmB,EAAM9mB,IACXwE,cAACwzE,GAAO,CAENW,WAAY,oBAAoB34E,IAChC8mB,KAAMA,EACN3U,QAAgB,OAAPs9E,SAAO,IAAPA,QAAO,EAAPA,GAASp8E,OAClBgpD,KAAM21B,GACNpZ,eAAgBz0B,IALXnkD,QAUfwE,cAAAZ,WAAA,CAAAC,SACoB,KAAb,OAAJ0rF,SAAI,IAAJA,QAAI,EAAJA,GAAMl8E,UACD,OAAJk8E,SAAI,IAAJA,IAIG,QAJCd,EAAJc,GACIv7E,QACCnB,IAAC,IAAA26D,EAAA,OACC,OAAD36D,QAAC,IAADA,OAAC,EAADA,EAAGsB,UAAiC,kBAArB,OAADtB,QAAC,IAADA,GAAY,QAAX26D,EAAD36D,EAAG7H,iBAAS,IAAAwiE,OAAX,EAADA,EAAcxgE,KAAuB,WACtD,IAAAyhF,OAJC,EAAJA,EAKIjuF,KAAI,CAACsmB,EAAM9mB,IACXwE,cAACilF,GAAG,CAEF3iE,KAAMA,EACN3U,QAAgB,OAAPs9E,SAAO,IAAPA,QAAO,EAAPA,GAASp8E,OAClBslE,WAAY,oBAAoB34E,IAChCq8D,KAAM03B,IAJD/zF,QAQfwE,cAAAZ,WAAA,CAAAC,SACS,OAANoH,SAAM,IAANA,QAAM,EAANA,GAAQzK,KACP,CAACsmB,EAAM9mB,KAAG,IAAAorE,EAAAE,EAAA,OACoB,MAAxB,OAAJxkD,QAAI,IAAJA,GAAc,QAAVskD,EAAJtkD,EAAM7J,gBAAQ,IAAAmuD,OAAV,EAAJA,EAAgBluD,WACgB,IAA5B,OAAJ4J,QAAI,IAAJA,GAAc,QAAVwkD,EAAJxkD,EAAM7J,gBAAQ,IAAAquD,OAAV,EAAJA,EAAgBnuD,eACd3Y,cAACs3E,GAAU,IAAK97E,EAAK8mB,KAAMA,EAAMu1C,KAAMo1B,IACxC,MAGyC,QAD7C/C,EACF/F,IJr/BiBV,GIq/BmBh9E,GJp/BrC,OAAPg9E,SAAO,IAAPA,QAAO,EAAPA,GAASj0E,QACbof,IAAO,IAAAglE,EAAAC,EAAAC,EAAA,MACyB,QAAxB,OAAPllE,QAAO,IAAPA,GAAiB,QAAVglE,EAAPhlE,EAASnW,gBAAQ,IAAAm7E,OAAV,EAAPA,EAAmBl7E,YACa,MAAxB,OAAPkW,QAAO,IAAPA,GAAiB,QAAVilE,EAAPjlE,EAASnW,gBAAQ,IAAAo7E,OAAV,EAAPA,EAAmBn7E,WACiB,MAA5B,OAAPkW,QAAO,IAAPA,GAAiB,QAAVklE,EAAPllE,EAASnW,gBAAQ,IAAAq7E,OAAV,EAAPA,EAAmBn7E,iBACA,KAAd,OAAPiW,QAAO,IAAPA,OAAO,EAAPA,EAASjf,QAAiB,KI++B8B,UAAE,IAAAu6E,OAAA,EAA/CA,EAAiDluF,KAChD,CAAC4yB,EAASpzB,IACRwE,cAAA,OAAKsH,UAAU,6BAA4BjI,SACjC,OAAPuvB,QAAO,IAAPA,OAAO,EAAPA,EAAS5yB,KAAKkoF,GAz2Bd6P,EAACzxE,EAAM9mB,KAAS,IAAD61E,EAAA2iB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAClC,MAAM,SAAE37E,EAAQ,aAAEC,GAAqB,OAAJ2J,QAAI,IAAJA,OAAI,EAAJA,EAAM7J,SACzC,OAAQzb,SAAS0b,IACf,KAAK,EACH,MAA8B,YAAtB,OAAJ4J,QAAI,IAAJA,GAAe,QAAX+uD,EAAJ/uD,EAAM9b,iBAAS,IAAA6qE,OAAX,EAAJA,EAAiBijB,MACZt0F,cAACu0F,GAAe,IAAK/4F,EAAK8mB,KAAMA,EAAMu1C,KAAMo1B,KAE5CjtF,cAACw0F,GAAW,IAAKh5F,EAAK8mB,KAAMA,EAAMu1C,KAAMo1B,KAEnD,KAAK,EACH,OAAQjwF,SAAS2b,IACf,KAAK,EACH,OACE3Y,cAAC26E,GAAY,IACPn/E,EACJ8mB,KAAMA,EACNu1C,KAAMo1B,GACNpxB,SAAoB,OAAVwwB,SAAU,IAAVA,IAAyB,QAAf2H,EAAV3H,GAAYS,qBAAa,IAAAkH,OAAf,EAAVA,EAA2B14F,OAG3C,KAAK,EACH,OACE0E,cAAC03E,GAAgB,IACXl8E,EACJ8mB,KAAMA,EACNu1C,KAAMo1B,GACNpxB,SAAoB,OAAVwwB,SAAU,IAAVA,IAAyB,QAAf4H,EAAV5H,GAAYS,qBAAa,IAAAmH,OAAf,EAAVA,EAA2B34F,OAG3C,KAAK,EACH,OAAO0E,cAACg7E,GAAU,IAAKx/E,EAAK8mB,KAAMA,EAAMu1C,KAAMo1B,KAChD,QACE,OAAO,KAGb,KAAK,GACH,OAAuB,GAAhBt0E,EACL3Y,cAACk7E,GAAiB,IAAK1/E,EAAK8mB,KAAMA,IAChC,KAEN,KAAK,GACH,OAAuB,GAAhB3J,EACL3Y,cAACu7E,GAAa,IAAK//E,EAAK8mB,KAAMA,IAC5B,KAEN,KAAK,EACH,OAAuB,GAAhB3J,EACL3Y,cAAC07E,GAAS,IACJlgF,EACJ8mB,KAAMA,EACNu1C,KAAMo1B,GACNtR,OAAkB,OAAV0Q,SAAU,IAAVA,IAAyB,QAAf6H,EAAV7H,GAAYS,qBAAa,IAAAoH,GAAY,QAAZC,EAAzBD,EAA2B7kE,kBAAU,IAAA8kE,OAA3B,EAAVA,EAAuC50F,KAE/C,KACN,KAAK,EACH,OAAuB,GAAhBoZ,EACL3Y,cAAC++E,GAAa,IACRvjF,EACJ8mB,KAAMA,EACNs0C,OAAkB,OAAVy1B,SAAU,IAAVA,IAAyB,QAAf+H,EAAV/H,GAAYS,qBAAa,IAAAsH,GAAY,QAAZC,EAAzBD,EAA2B/kE,kBAAU,IAAAglE,OAA3B,EAAVA,EAAuCz9B,OAC/ChB,OAAQA,GACRyrB,SAAU9qB,KAEV,KAEN,QACE,OAAO,KACX,EAuyBoBw9B,CAAa7P,EAAe1oF,cAQ1CwE,cAAC42E,GAAW,CAACC,YAAaqV,KAC1BlsF,cAACk9D,GAAY,IACbl9D,cAAC82E,GAAc,IACf92E,cAAC+2E,GAAc,CAACF,YAAamV,KAE7B7sF,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAMA,GACN8B,QAASC,GACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,GACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,GAAQuU,MAAM3e,SAC/C,GAAa,OAAVgtF,SAAU,IAAVA,IAAgC,QAAtBlC,EAAVkC,GAAYpf,4BAAoB,IAAAkd,OAAtB,EAAVA,EAAkC7uF,UAAU6K,EAC9C,sFACG+uD,OAG6B,QAAnCk1B,EAAApgF,GAAoBc,uBAAe,IAAAs/E,GAAnCA,EAAqCqK,WACpCz0F,cAAC45D,KAAM,CAACC,QAAM,EAAAx6D,SACZF,eAAC26D,KACC,CACAr6D,QAASA,IAAMk2D,GAAS96B,QAAQghB,gBAChClrB,QAAS3wB,cAAC+5D,KAAY,IACtBx/C,QAAS06C,GACT+E,gBAAgB,MAChBp8D,MAAM,UAASyB,SAAA,CAEd8G,EACC,+EAEFnG,cAACi6D,KAAQ,CACPr6D,GAAI,CACFhC,MAAO,OACPmlC,OAAS1mB,GAAUA,EAAM0mB,OAAOo3B,OAAS,KAE3C37D,KAAMy2D,GACNx1D,QAASw1D,GAAW51D,SAEpBW,cAACwoB,KAAgB,CAAC5qB,MAAM,mBAI5B,UAORoC,cAACsyD,GAAS,CACRnqD,IAAKwtD,GACL7c,OAAQv5C,GACR66D,iBAAkB9rD,OAAO/O,GAAG1C,MAAM,KAAK,IACvCqd,QAAmB,OAAVmyE,SAAU,IAAVA,QAAU,EAAVA,GAAYpf,qBACrBnkB,UAAqB,OAAVujC,SAAU,IAAVA,IAAyB,QAAfhC,EAAVgC,GAAYS,qBAAa,IAAAzC,OAAf,EAAVA,EAA2BvhC,UACtC15B,YAAuB,OAAVi9D,SAAU,IAAVA,IAAyB,QAAf/B,EAAV+B,GAAYS,qBAAa,IAAAxC,GAAY,QAAZC,EAAzBD,EAA2Bj7D,kBAAU,IAAAk7D,OAA3B,EAAVA,EAAuCn7D,iBAIxDjwB,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAMiuF,GACNnsF,QAAS0sF,GACTrzB,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASutF,GACT,aAAW,QAAO3tF,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,GAAQuU,MAAM3e,SAC/C,GAAGR,aAAaC,QAAQ,oBAAoBqH,EAC3C,uFACG+uD,YAIXl1D,cAACioD,GAAW,CACVnP,OAAQv5C,GACR2a,QAAmB,OAAVmyE,SAAU,IAAVA,QAAU,EAAVA,GAAYpf,qBACrBnkB,UAAqB,OAAVujC,SAAU,IAAVA,IAAyB,QAAf7B,EAAV6B,GAAYS,qBAAa,IAAAtC,OAAf,EAAVA,EAA2B1hC,UACtC15B,YAAuB,OAAVi9D,SAAU,IAAVA,IAAyB,QAAf5B,EAAV4B,GAAYS,qBAAa,IAAArC,GAAY,QAAZC,EAAzBD,EAA2Bp7D,kBAAU,IAAAq7D,OAA3B,EAAVA,EAAuCt7D,iBAIxDjwB,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAM+tF,GACNjsF,QAASysF,GACTpzB,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASstF,GACT,aAAW,QAAO1tF,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,GAAQuU,MAAM3e,SACrC,OAAVgtF,SAAU,IAAVA,IAAgC,QAAtB1B,EAAV0B,GAAYpf,4BAAoB,IAAA0d,OAAtB,EAAVA,EAAkCrvF,YAIzC0E,cAACi3E,GAAQ,CAACn+B,OAAQv5C,GAAI2a,QAAmB,OAAVmyE,SAAU,IAAVA,QAAU,EAAVA,GAAYpf,6BAG7C,OJ7nCwBwW,O1I0HAz/E,E8IogC3B,ECtrCP,MAAMgF,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,4BAIdo5C,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAC9CxY,EAAMwY,QAAQ,GAAK,OAGvBojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAEZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAIToqD,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IA+TekvB,OA7TAjR,IAA0C,IAAD3B,EAAAmxD,EAAAC,EAAA9gE,EAAAC,EAAAC,EAAA0gE,EAAAzgE,EAAAgqF,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAAxC,KAAE9wF,EAAI,QAAEy/E,EAAO,QAAEvpE,EAAO,QAAE2R,GAASjQ,EACjD,MAAO+wE,EAAYC,GAAiB1qF,mBAAS,cACtC6mF,EAAeqD,GAAmBlqF,oBAAS,IAC5C,EAAEiE,GAAMC,cACRuvD,EAAWt9B,oBACX,OACJu+B,EAAM,UACN7B,EAAS,KACTphB,EAAI,OACJ1lB,EAAM,UACN0qB,EAAS,QACTH,EAAO,UACPC,EAAS,kBACTk9B,EAAiB,gBACjBvwB,EAAe,kBACf4P,EAAiB,WACjBC,EAAU,cACVpc,EAAa,oBACb7uC,EAAmB,sBACnBo/C,EAAqB,mBACrB8L,EAAkB,sBAClB5U,EAAqB,oBACrB8U,EAAmB,qBACnB9N,EAAoB,qBACpBiC,GACEznD,qBAAWC,KAITirB,EAAa,OAAP9S,QAAO,IAAPA,OAAO,EAAPA,EAAS8S,IAGfwxB,EAAe,OAAPilC,QAAO,IAAPA,OAAO,EAAPA,EAASjlC,OAMhBhgD,EAAMmE,KAHP,OAAJqB,QAAI,IAAJA,GAAyB,QAArBiW,EAAJjW,EAAM6W,2BAAmB,IAAAZ,GAAS,QAATmxD,EAAzBnxD,EAA2Ba,eAAO,IAAAswD,OAA9B,EAAJA,EAAoCv8D,QAAS,IACzC,OAAJ7K,QAAI,IAAJA,GAA4B,QAAxBqnE,EAAJrnE,EAAM+W,8BAAsB,IAAAswD,GAA5BA,EAA8Bx8D,QAER3M,oBAAS,KAC1BqqF,EAAcC,GAAmBtqF,oBAAS,IAC1CuqF,GAAiBC,IAAsBxqF,oBAAS,GACjDuH,GAAUT,KAgEVzI,GAAcA,KAClBoC,GAAQ,GACRymD,EAAsB,IAAIjkD,KAAO,EAO7B6nF,GAAyBA,KAC7B5jC,EAAsB,IAAIjkD,MAC1BunF,IAAmB,EAAM,EAG3B,OACEvtF,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,OACEsH,UAAU,kBACVM,IAAKolB,EACL9kB,IAAI,OACJhK,MAAM,MACNgC,OAAO,UAGXf,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CACpDW,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC5CW,cAACqmE,GAAsB,CAACriE,KAAMkW,MAEhC/a,eAAA,OAAKmI,UAAU,+BAA8BjI,SAAA,CAC3CW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,QAAMsH,UAAU,mBAAkBjI,SAAEm/C,MAEtCx+C,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CF,eAAA,OAAKmI,UAAU,kBAAiBjI,SAAA,CAC9BW,cAAA,QAAMsH,UAAU,iBAAgBjI,SAC9BF,eAAA,UACE7D,KAAK,SACLiE,GAAG,GACH+H,UAAU,wBACVgB,WACqB,OAAnB0B,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cACjC9yD,IA/CIrgB,KACzB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MAC3BoyF,EAAcpyF,EAAM,EA6CO64F,CAAkBtzE,IAE9B1gB,SAAA,CAEDW,cAAA,UAAQxF,MAAM,YAAW6E,SACtB8G,EAAE,iDAKLnG,cAAA,UAAQxF,MAAM,cAAa6E,SACxB8G,EAAE,wDAITnG,cAAA,QAAMsH,UAAU,wBAAuBjI,SACrCW,cAAA,UACEwI,KAAK,OACLlB,UAAU,cACV7H,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,IAApCA,EAAsCylE,aAClC,MA7HErX,MAAO,IAADm8B,EAC5B,MAAM57B,EAAqB,MAErBC,GAAc,IAAIj0D,MAAOq8C,WAEzB6X,EAAa/qD,OACjBzP,aAAaC,QAAQ,aAAaoQ,UAAU,EAAG,IAGjB,IAAD8lF,EAAAC,EAAAC,EAD/B3rC,EAAyB,OAAJvlD,QAAI,IAAJA,GAAmB,QAAf+wF,EAAJ/wF,EAAM8oF,qBAAa,IAAAiI,OAAf,EAAJA,EAAqBx1F,IACxB,aAAdotF,GACFvjC,EACEgQ,EAAcC,EACV,IAAIl0D,MAAK,IAAIA,MAAOE,UAAY8zD,GAChC,IAAIh0D,MAEVqzC,EAAY,OAAJx0C,QAAI,IAAJA,GAAmB,QAAfgxF,EAAJhxF,EAAM8oF,qBAAa,IAAAkI,OAAf,EAAJA,EAAqBx2C,OAC7B/F,EAAc,OAAJz0C,QAAI,IAAJA,GAAmB,QAAfixF,EAAJjxF,EAAM8oF,qBAAa,IAAAmI,OAAf,EAAJA,EAAqB11F,IAC/BV,aAAaK,QAAQ,mBAAwB,OAAJ8E,QAAI,IAAJA,GAAmB,QAAfkxF,EAAJlxF,EAAM8oF,qBAAa,IAAAoI,OAAf,EAAJA,EAAqB55F,MAC9DglD,EAAsBzhD,aAAaC,QAAQ,qBAC3C6D,GAAQ,GAGgC,SAAtC9D,aAAaC,QAAQ,cACiB,UAAtCD,aAAaC,QAAQ,aAErBwoD,EAAqB,IAAIniD,MACsB,UAAtCtG,aAAaC,QAAQ,eAC1Bs6D,EAAc,GAChB9R,EACE,IAAIniD,KAAK,IAAIA,MAAK,IAAIA,MAAOE,UAAY8zD,KAElCC,GAAe,IACxB9R,EAAqB,IAAIniD,QAGL,gBAAfwnF,GACTD,IAAmB,GACnB13B,GAAkB,GAEsB,SAAtCn2D,aAAaC,QAAQ,cACiB,UAAtCD,aAAaC,QAAQ,aAErBwoD,EAAqB,IAAIniD,MACsB,UAAtCtG,aAAaC,QAAQ,eAC1Bs6D,EAAc,GAChB9R,EACE,IAAIniD,KAAK,IAAIA,MAAK,IAAIA,MAAOE,UAAY8zD,KAElCC,GAAe,IACxB9R,EAAqB,IAAIniD,QAGL,aAAfwnF,GACTH,GAAgB,EAClB,EAwEsB5zB,EAAiB,GAGxBv5D,SAEDW,cAAA,KAAGo1C,MAAM,wBAKG,OAAnBprC,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EAAsCipF,aACrC1zF,cAAC8oF,GAAU,CACTsD,gBAAiBA,EACjB3I,QAASA,EACT53D,QAASA,IAET,KAEJ7rB,cAAA,OAAKsH,UAAU,sCAAqCjI,SAClDF,eAAA,QAAMmI,UAAU,mBAAkBjI,SAAA,CAChCW,cAAA,QAAAX,SACEW,cAAA,KAAGo1C,MAAM,qBACH,IACRp1C,cAAA,QAAMsH,UAAU,8BAQxBnI,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAMA,EACN8B,QAASC,GACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,GACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,GAAQuU,MAAM3e,SAC/C,GAAO,OAAJ2E,QAAI,IAAJA,GAA0B,QAAtBmnE,EAAJnnE,EAAMipE,4BAAoB,IAAA9B,OAAtB,EAAJA,EAA4B7vE,UAAU6K,EACxC,sFACG+uD,MAGa,OAAnBlrD,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,GAApCA,EAAsC+pF,WACrCz0F,cAAC45D,KAAM,CAACC,QAAM,EAAAx6D,SACZF,eAAC26D,KACC,CACAr6D,QAASA,KAAA,IAAA01F,EAAA,OAAc,OAARx/B,QAAQ,IAARA,GAAiB,QAATw/B,EAARx/B,EAAU96B,eAAO,IAAAs6D,OAAT,EAARA,EAAmBt5C,eAAe,EACjDlrB,QAAS3wB,cAAC+5D,KAAY,IACtBx/C,QAAS06C,EACT+E,gBAAgB,MAChBp8D,MAAM,UAASyB,SAAA,CAEd8G,EACC,+EAEFnG,cAACi6D,KAAQ,CACPr6D,GAAI,CACFhC,MAAO,OACPmlC,OAAS1mB,GAAUA,EAAM0mB,OAAOo3B,OAAS,KAE3C37D,KAAMy2D,EACNx1D,QAASw1D,EAAW51D,SAEpBW,cAACwoB,KAAgB,CAAC5qB,MAAM,mBAI5B,UAGRoC,cAACsyD,GAAS,CACRp4C,QAAa,OAAJlW,QAAI,IAAJA,OAAI,EAAJA,EAAMipE,qBACfn0B,OAAe,OAAP2qC,QAAO,IAAPA,OAAO,EAAPA,EAASlkF,GACjB66D,iBAAkB9rD,OAAc,OAAPm1E,QAAO,IAAPA,OAAO,EAAPA,EAASlkF,IAClCupD,UAAe,OAAJ9kD,QAAI,IAAJA,GAAmB,QAAf0wF,EAAJ1wF,EAAM8oF,qBAAa,IAAA4H,OAAf,EAAJA,EAAqB5rC,UAChC15B,YAAoB,OAAPq0D,QAAO,IAAPA,GAAmB,QAAZkR,EAAPlR,EAASp0D,kBAAU,IAAAslE,OAAZ,EAAPA,EAAqBvlE,YAClCjnB,IAAKwtD,OAITx2D,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAMiuF,GACNnsF,QAAS0sF,GACTrzB,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,GAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASutF,GACT,aAAW,QAAO3tF,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,GAAQuU,MAAM3e,SAC/C,GAAO,OAAJ2E,QAAI,IAAJA,GAA0B,QAAtB4wF,EAAJ5wF,EAAMipE,4BAAoB,IAAA2nB,OAAtB,EAAJA,EAA4Bt5F,UAAU6K,EACxC,uFACG+uD,WAIXl1D,cAACioD,GAAW,CACV/tC,QAAa,OAAJlW,QAAI,IAAJA,OAAI,EAAJA,EAAMipE,qBACfn0B,OAAe,OAAP2qC,QAAO,IAAPA,OAAO,EAAPA,EAASlkF,GACjBupD,UAAe,OAAJ9kD,QAAI,IAAJA,GAAmB,QAAf6wF,EAAJ7wF,EAAM8oF,qBAAa,IAAA+H,OAAf,EAAJA,EAAqB/rC,UAChC15B,YAAoB,OAAPq0D,QAAO,IAAPA,GAAmB,QAAZqR,EAAPrR,EAASp0D,kBAAU,IAAAylE,OAAZ,EAAPA,EAAqB1lE,mBA2BlC,E,0DC3ZcmnB,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAEqBJ,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEmBJ,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MA0GWo+C,OAxGwBx5E,IAA8B,IAA7B,UAAEy5E,EAAS,SAAEvvF,GAAU8V,EAC7D,MAAM,WAAE1I,EAAU,OAAE0jD,EAAM,cAAE0+B,GAAkBxzF,qBAAWC,KAEzDe,qBAAU,KACRwyF,GAAc,EAAM,GACnB,IAEH,MAAO3rC,EAAcC,GAAmB1nD,mBAASqT,GAAuBrC,EAAYpN,KAC7E+jD,EAAcC,GAAmB5nD,mBAASkT,GAAuBlC,EAAYpN,KAE7EtL,EAAOkI,GAAYR,sBACnBqzF,EAAOC,GAAYtzF,mBAAS,KAI7B,KAAE8B,EAAI,QAAEuW,GAAYC,aAAS40C,GAAa,CAC9C5oD,UAAW,CACTowD,OAAQA,EACR/gD,MAAOK,KAA0BL,MACjCO,KAAMF,KAA0BE,KAChC2hB,UAAWjyB,GAEb4U,YAAa,aAGf,OAAIH,IAAYvW,EACPhE,cAAAZ,WAAA,IAIPY,cAAA,OAAKsH,UAAU,2CAA0CjI,SAI3B,IAA3B2E,EAAKyxF,WAAW5mF,OACf7O,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAkC,qBAI/Cp1C,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERyjD,OAAQ,CAAC,WAETjuC,MAAO,CACLq1B,MAAO,OACPp9B,KAAM,oBACJjS,EAAKyxF,WAAWC,IAAM1xF,EAAKyxF,WAAWE,mBAAmBvhF,QAAQ,GAAKmhF,UAG1EhhD,SAAU,CACRlB,MAAO,OACPp9B,KAAM,IAER+uD,cAAe,CACb4wB,gBAAiB,CACfnxE,SAAS,IAGbiwB,MAAO,CACLlsC,KAAM,YAER8qC,MAAO,CACLt1B,MAAO,CACL/H,KAAM,KAGVk+B,OAAQ,CACN1vB,SAAS,GAEXivB,YAAa,CACXK,OAAQ,CACN8hD,YAAa,EACblxB,WAAY,CACVlgD,SAAS,EACTowB,OAAQ,mBAKdC,QAAS,CACPE,aAAc,wDACdwvB,YAAa,wFAGfzwB,OAAQ,CACN,CACEz4C,KAAM,SACNw6F,cAAc,EACd9xF,KAAMA,EAAKyxF,WAAWC,UAM5B,ECwoCKztC,OA9wCKrsC,IAQb,IAADm6E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1U,EAAA2U,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IARe,SACnB78B,EAAQ,QACR88B,EAAO,WACPh5C,EAAU,YACV2+B,EAAW,OACX1nB,EAAM,QACN/qC,GAAO,iBACPoyD,IACDriE,EACC,MAAM,kBACJ+5D,GAAiB,gBACjBvwB,GAAe,kBACf4xB,GAAiB,oBACjBhtE,IACElI,qBAAWC,MACRkoB,GAAW0zC,IAAgBz7D,oBAAS,IACpCkzE,GAAQC,IAAanzE,oBAAS,IAC/B,MAAEs8C,GAAK,UAAEh4C,GAAS,QAAEmJ,IAAYgpF,GAChC,MAAElb,IAAUj3E,IACXoyF,GAAiBC,IAAsB32F,mBAAS,KAChD42F,GAAcC,IAAmB72F,mBAAS,OAC1CqgF,GAAayW,IAAkB92F,mBAC3B,OAATsE,SAAS,IAATA,IAAgB,QAAPuvF,EAATvvF,GAAWi3E,aAAK,IAAAsY,OAAP,EAATA,EAAkBvmF,QAAQnB,GAAkB,aAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG/S,SAE/BivD,GAA0D,QAAjDyrC,EAAGxvF,GAAUi3E,MAAMxlE,MAAM5J,GAAiB,SAAXA,EAAE/S,cAAgB,IAAA06F,GAAQ,QAARC,EAA9CD,EAAgDvoF,cAAM,IAAAwoF,OAAR,EAA9CA,EACdtqC,MACEstC,GAEL,QAFsB/C,EAAG1vF,GAAUi3E,MAAMxlE,MACvC5J,GAAiB,gCAAXA,EAAE/S,cACV,IAAA46F,GAAQ,QAARC,EAFyBD,EAEvBzoF,cAAM,IAAA0oF,OAAR,EAFyBA,EAEfxqC,OAEJutC,GAAmBC,IAAwBj3F,oBAAS,GACrD4kB,GAAQ,IACRsyE,GAA0BA,KAC9BD,IAAsBD,GAAkB,GAEnC5jB,GAAgBC,IAAqBrzE,mBAAS,MAC/CszE,GAAiBn9C,iBAAO,MAExBghE,GAAiB,CACrB,kBACA,kBACA,mBAEIC,GAAsB,CAAC,kBAAmB,kBAC1CC,GAAsB,CAAC,iBAAkB,mBACxCC,GAAkBC,IAAuBv3F,mBACrC,OAATsE,SAAS,IAATA,IAAgB,QAAP4vF,EAAT5vF,GAAWi3E,aAAK,IAAA2Y,GAC0C,QAD1CC,EAAhBD,EACIn+E,MAAM8H,GAAkB,iCAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAuC,IAAA+6F,GAChD,QADgDC,EAD1DD,EAEI5oF,cAAM,IAAA6oF,GAAO,QAAPC,EAFVD,EAEY97F,aAAK,IAAA+7F,OAFR,EAATA,EAEmBniF,QAAQ,IAEvBslF,GAAY18F,SACP,OAATwJ,SAAS,IAATA,IAAgB,QAAPgwF,EAAThwF,GAAWi3E,aAAK,IAAA+Y,GAC0C,QAD1CC,EAAhBD,EACIv+E,MAAM8H,GAAkB,iCAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAuC,IAAAm7F,GAChD,QADgDC,EAD1DD,EAEIhpF,cAAM,IAAAipF,OAFD,EAATA,EAEYl8F,MAAM4Z,QAAQ,KAErBulF,GAAKC,IAAW13F,mBACZ,OAATsE,SAAS,IAATA,IAAgB,QAAPmwF,EAATnwF,GAAWi3E,aAAK,IAAAkZ,GAAiC,QAAjCC,EAAhBD,EAAkB1+E,MAAM8H,GAAkB,UAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAgB,IAAAs7F,GAAQ,QAARC,EAAjDD,EAAmDnpF,cAAM,IAAAopF,GAAO,QAAPC,EAAzDD,EAA2Dr8F,aAAK,IAAAs8F,OAAvD,EAATA,EAAkE1iF,QAAQ,KAErEsgE,GAAMC,IAAWzyE,mBACb,OAATsE,SAAS,IAATA,IAAgB,QAAPuwF,EAATvwF,GAAWi3E,aAAK,IAAAsZ,OAAP,EAATA,EAAkB9+E,MAAM8H,GAAqB,UAAb,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGtS,YAE7BosF,GAAO/kB,IAAW5yE,mBAErB,UADG,OAALu7E,SAAK,IAALA,IAA4D,QAAvDuZ,EAALvZ,GAAOjuE,QAAQlU,GAAwB,qBAAX,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMA,QAA4B,UAAE,IAAA07F,OAAvD,EAALA,EAA8DvpF,UAKzDqsF,GAAUC,IAAe73F,mBAEf,sBADV,OAALu7E,SAAK,IAALA,IAAsE,QAAjEwZ,EAALxZ,GAAOjuE,QAAQwqF,GAAkC,qBAAX,OAATA,QAAS,IAATA,OAAS,EAATA,EAAW1+F,QAA4B,UAAE,IAAA27F,OAAjE,EAALA,EACIxpF,UAKCwsF,GAAcC,IAAmBh4F,mBAC7B,OAATsE,SAAS,IAATA,IAAgB,QAAP0wF,EAAT1wF,GAAWi3E,aAAK,IAAAyZ,GAAgD,QAAhDC,EAAhBD,EAAkBj/E,MAAM8H,GAAkB,yBAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAA+B,IAAA67F,OAAvD,EAATA,EAAkE1pF,SAE7D0sF,GAAYC,IAAiBl4F,oBAAS,IACtC4C,GAAM+9D,IAAW3gE,oBAAS,IAC1Bm4F,GAAeC,IAAoBp4F,mBAAS,CACjDq4F,MAAO,CACLxZ,QAAc,OAALtD,SAAK,IAALA,IAAsC,QAAjCgF,EAALhF,GAAOxlE,MAAM8H,GAAkB,UAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAgB,IAAAmnF,OAAjC,EAALA,EAAwC1B,QACjDvmF,MAAY,OAALijF,SAAK,IAALA,IAAsC,QAAjC2Z,EAAL3Z,GAAOxlE,MAAM8H,GAAkB,UAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAgB,IAAA87F,GAAQ,QAARC,EAAtCD,EAAwC3pF,cAAM,IAAA4pF,GAAO,QAAPC,EAA9CD,EAAgD78F,aAAK,IAAA88F,OAAhD,EAALA,EAAuDljF,QAAQ,IAExEomF,OAAQ,CACNzZ,QAAc,OAALtD,SAAK,IAALA,IAAiD,QAA5C8Z,EAAL9Z,GAAOxlE,MAAM8H,GAAkB,qBAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAA2B,IAAAi8F,OAA5C,EAALA,EAAmDxW,QAC5DvmF,MAAY,OAALijF,SAAK,IAALA,IAAiD,QAA5C+Z,EAAL/Z,GAAOxlE,MAAM8H,GAAkB,qBAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAA2B,IAAAk8F,OAA5C,EAALA,EAAmD/pF,QAE5DgtF,mBAAoB,CAClB1Z,QAAc,OAALtD,SAAK,IAALA,IAA6D,QAAxDga,EAALha,GAAOxlE,MAAM8H,GAAkB,iCAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAuC,IAAAm8F,OAAxD,EAALA,EACL1W,QACJvmF,MAAY,OAALijF,SAAK,IAALA,IACmD,QAD9Cia,EAALja,GACHxlE,MAAM8H,GAAkB,iCAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAuC,IAAAo8F,GAChD,QADgDC,EADnDD,EAEHjqF,cAAM,IAAAkqF,GAAO,QAAPC,EAFHD,EAEKn9F,aAAK,IAAAo9F,OAFL,EAALA,EAEYxjF,QAAQ,IAE7BsmF,QAAS,CACP3Z,QAAc,OAALtD,SAAK,IAALA,IAAqD,QAAhDoa,EAALpa,GAAOxlE,MAAM8H,GAAkB,yBAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAA+B,IAAAu8F,OAAhD,EAALA,EAAuD9W,QAChEvmF,MAAY,OAALijF,SAAK,IAALA,IAAqD,QAAhDqa,EAALra,GAAOxlE,MAAM8H,GAAkB,yBAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAA+B,IAAAw8F,OAAhD,EAALA,EAAuDrqF,QAEhEktF,SAAU,CACR5Z,QAAc,OAALtD,SAAK,IAALA,IAAiD,QAA5Csa,EAALta,GAAOxlE,MAAMzd,GAAyB,aAAfA,EAAMc,cAAoB,IAAAy8F,OAA5C,EAALA,EAAmDhX,QAC5DvmF,MAAY,OAALijF,SAAK,IAALA,IAAiD,QAA5Cua,EAALva,GAAOxlE,MAAMzd,GAAyB,aAAfA,EAAMc,cAAoB,IAAA08F,GAAQ,QAARC,EAAjDD,EAAmDvqF,cAAM,IAAAwqF,OAApD,EAALA,EAA2Dz9F,UAI/Dw6E,GAA6BC,IAClC/yE,mBAAS,CACPgzE,eAAgB,CACd6L,QAAsB,OAAbsZ,SAAa,IAAbA,IAAqB,QAARnC,EAAbmC,GAAeG,cAAM,IAAAtC,OAAR,EAAbA,EAAuBnX,QAChCtzE,OAAqB,OAAb4sF,SAAa,IAAbA,IAAqB,QAARlC,EAAbkC,GAAeG,cAAM,IAAArC,OAAR,EAAbA,EAAuB39F,OAEjC26E,oBAAqB,CACnB4L,QAAsB,OAAbsZ,SAAa,IAAbA,IAAiC,QAApBjC,EAAbiC,GAAeI,0BAAkB,IAAArC,OAApB,EAAbA,EAAmCrX,QAC5CtzE,OAAqB,OAAb4sF,SAAa,IAAbA,IAAiC,QAApBhC,EAAbgC,GAAeI,0BAAkB,IAAApC,OAApB,EAAbA,EAAmC79F,OAE7CkgG,QAAS,CACP3Z,QAAsB,OAAbsZ,SAAa,IAAbA,IAAsB,QAAT/B,EAAb+B,GAAeK,eAAO,IAAApC,OAAT,EAAbA,EAAwBvX,QACjCtzE,OAAqB,OAAb4sF,SAAa,IAAbA,IAAsB,QAAT9B,EAAb8B,GAAeK,eAAO,IAAAnC,OAAT,EAAbA,EAAwB/9F,SAIhCogG,GAAwBA,KAC5B,GAAIvB,GAAezyE,SAAkB,OAATpgB,SAAS,IAATA,QAAS,EAATA,GAAWq0F,cAAe,CAEpD,MAAO,CAAEC,eAAgB,KAAMC,OADb,CAAC,MAAO,SAAU,OAAQ,YAE9C,CAAO,GAAIxB,GAAoB3yE,SAAkB,OAATpgB,SAAS,IAATA,QAAS,EAATA,GAAWq0F,cAAe,CAEhE,MAAO,CACLC,eAAgB,UAChBC,OAHoB,CAAC,MAAO,SAAU,QAK1C,CAAO,GAAIzB,GAAoB1yE,SAAkB,OAATpgB,SAAS,IAATA,QAAS,EAATA,GAAWq0F,cAAe,CAEhE,MAAO,CACLC,eAAgB,UAChBC,OAHuB,CAAC,MAAO,YAKnC,GAGIC,GAAYh3F,IAAU,IAADi3F,EAAAC,EAAAC,EACzB,GAAgD,QAArB,QAAvBF,EAAAL,YAAuB,IAAAK,OAAA,EAAvBA,EAAyBH,gBAAyB,CACpD,GAAa,WAAT92F,EACF,MAAO,SACF,GAAa,SAATA,EACT,MAAO,OACF,GAAa,QAATA,EACT,MAAO,MACF,GAAa,aAATA,EACT,MAAO,MAEX,MAAO,GAAgD,aAArB,QAAvBk3F,EAAAN,YAAuB,IAAAM,OAAA,EAAvBA,EAAyBJ,gBAA8B,CAChE,GAAa,aAAT92F,EACF,MAAO,OACF,GAAa,QAATA,EACT,MAAO,IAEX,MAAO,GAAgD,aAArB,QAAvBm3F,EAAAP,YAAuB,IAAAO,OAAA,EAAvBA,EAAyBL,gBAA8B,CAChE,GAAa,QAAT92F,EACF,MAAO,MACF,GAAa,WAATA,EACT,MAAO,SACF,GAAa,SAATA,EACT,MAAO,MAEX,GAGIo3F,GAAwB/iE,iBAAOr7B,SAASw8F,MACvC6B,GAAaC,IAAkBp5F,mBACb,QADqBs2F,EAC5CoC,YAAuB,IAAApC,GAAQ,QAARC,EAAvBD,EAAyBuC,cAAM,IAAAtC,OAAR,EAAvBA,EAAiCh/E,QAAqB,OAAb4gF,SAAa,IAAbA,IAAsB,QAAT3B,EAAb2B,GAAeK,eAAO,IAAAhC,OAAT,EAAbA,EAAwBl+F,QAGnEsI,qBAAU,KACR,GAA6B,UAAf,OAAV68C,QAAU,IAAVA,OAAU,EAAVA,EAAYjnC,UAAqB,CAAC,IAAD6iF,EACnC,MAAMC,EAAoBA,CAACC,EAAUC,KAAsB,IAADC,EACxD,MAAMr5E,EAAgB,OAAT9b,SAAS,IAATA,IAAgB,QAAPm1F,EAATn1F,GAAWi3E,aAAK,IAAAke,OAAP,EAATA,EAAkB1jF,MAC5B8H,IAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGghE,YAAsB,OAAVphC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,UAAW,OAADt4D,QAAC,IAADA,OAAC,EAADA,EAAGzkB,QAASmgG,IAE1B,IAADG,EAA/B,GAAIt5E,GAAkB,OAAVq9B,QAAU,IAAVA,KAAY5pC,QACR,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,UAAc,OAAJuM,QAAI,IAAJA,GAAY,QAARs5E,EAAJt5E,EAAM7U,cAAM,IAAAmuF,OAAR,EAAJA,EAAcphG,OAAO,CA2BxC,IAADqhG,EAAAC,EAOuCC,EAjC3C,GAAiC,kBAAZ,OAAVp8C,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,OAqBrB,GApB0B,UAAZ,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,SACd4+D,IAAQ,GACRG,IAAQ,GACRilB,IAAY,IAEW,QAArBp6C,EAAW5pC,QACb4+D,IAAQ,GACRG,IAAQ,GACRilB,IAAY,IAEW,SAArBp6C,EAAW5pC,QACb++D,IAAQ,GACRH,IAAQ,GACRolB,IAAY,IAEW,qBAArBp6C,EAAW5pC,QACb4+D,IAAQ,GACRG,IAAQ,GACRilB,IAAY,IAGU,SAAZ,OAAVp6C,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,QACU,YAAZ,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,QACU,UAAZ,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,QACU,cAAZ,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,OAEZmkF,GAA0B,OAAVv6C,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,OAC5BulF,GACyB,QADXO,EACZjB,YAAuB,IAAAiB,GAAQ,QAARC,EAAvBD,EAAyBd,cAAM,IAAAe,OAAR,EAAvBA,EAAiCriF,QAAkB,OAAVkmC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,QAI3D,GAAiC,kBAAZ,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,OACrB2lF,EAA2B,OAAV/7C,QAAU,IAAVA,GAAiB,QAAPo8C,EAAVp8C,EAAY5pC,aAAK,IAAAgmF,OAAP,EAAVA,EAAmB3nF,QAAQ,GAEhD,CACF,EAEI0kF,EAAwB,OAATtyF,SAAS,IAATA,IAAgB,QAAP+0F,EAAT/0F,GAAWi3E,aAAK,IAAA8d,OAAP,EAATA,EAAkBtjF,MACpC8H,IAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGghE,YAAsB,OAAVphC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,UAEpCmjB,EAAkB,8BAA+B/B,IACjD+B,EAAkB,kBAAmB7mB,IACrC6mB,EAAkB,sBAAuBtB,IACzCsB,EAAkB,OAAQ5B,IACK,cAAjB,OAAVj6C,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,aAA6BwX,GAC3CwB,GAAiB,IACZD,GACHM,SAAU,CAAEngG,MAAiB,OAAVmlD,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,QAGrC,IACC,CAAC4pC,IAEJ78C,qBAAU,KACJsyE,KACFqkB,GAAoBz8F,SAAS08F,KAC7B0B,GAAsBvgE,QAAU6+D,GAChC7tE,KACF,GACC,CAACupD,GAAQskB,KAEZ52F,qBAAU,KAAO,IAADk5F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACd,IAAIC,GAC0B,qBAAjB,OAAV58C,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,aACgB,iCAAjB,OAAV3hC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,aACe,yBAAjB,OAAV3hC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,aACe,iCAAjB,OAAV3hC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,cACa,UAAjB,OAAV3hC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,aACe,cAAjB,OAAV3hC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,aACe,YAAjB,OAAV3hC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,YACVvrE,EAAkB,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,OAEZ,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAwB,OAAbgiB,SAAa,IAAbA,IAAqB,QAAR2B,EAAb3B,GAAeG,cAAM,IAAAwB,OAAR,EAAbA,EAAuBjb,UAC1B,SAApB6X,KACc,IAAd2D,GACU,SAAVxmF,IASU,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAwB,OAAbgiB,SAAa,IAAbA,IAAqB,QAAR4B,EAAb5B,GAAeG,cAAM,IAAAyB,OAAR,EAAbA,EAAuBlb,UAC1B,SAApB6X,KACc,IAAd2D,GACU,SAAVxmF,IASU,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAwB,OAAbgiB,SAAa,IAAbA,IAAqB,QAAR6B,EAAb7B,GAAeG,cAAM,IAAA0B,OAAR,EAAbA,EAAuBnb,UAC1B,SAApB6X,KACc,IAAd2D,GACU,qBAAVxmF,IASU,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAwB,OAAbgiB,SAAa,IAAbA,IAAqB,QAAR8B,EAAb9B,GAAeG,cAAM,IAAA2B,OAAR,EAAbA,EAAuBpb,UAC1B,QAApB6X,KACc,IAAd2D,GACU,QAAVxmF,GAlCAigE,cAAcR,GAAe36C,SAC7B06C,IAAkB,GAClBN,GAA+B,IAC1BD,GACHE,eAAgB,CAAE6L,QAAmB,OAAVphC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,OAAQ5qE,OAAQsI,OAuC/C,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAwB,OAAbgiB,SAAa,IAAbA,IAAiC,QAApB+B,EAAb/B,GAAeI,0BAAkB,IAAA2B,OAApB,EAAbA,EAAmCrb,UACtC,aAApB6X,KAWU,OAAVj5C,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAwB,OAAbgiB,SAAa,IAAbA,IAAiC,QAApBgC,EAAbhC,GAAeI,0BAAkB,IAAA4B,OAApB,EAAbA,EAAmCtb,UACtC,aAApB6X,IARA5iB,cAAcR,GAAe36C,SAC7B06C,IAAkB,GAClBN,GAA+B,IAC1BD,GACHG,oBAAqB,CAAE4L,QAAmB,OAAVphC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,OAAQ5qE,OAAQsI,OAepD,OAAV4pC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,WAAwB,OAAbgiB,SAAa,IAAbA,IAAsB,QAATiC,EAAbjC,GAAeK,eAAO,IAAA4B,OAAT,EAAbA,EAAwBvb,UAC3B,QAApB6X,KACc,IAAd2D,IAGAvmB,cAAcR,GAAe36C,SAC7B06C,IAAkB,GAClBN,GAA+B,IAC1BD,GACH0lB,QAAS,CAAE3Z,QAAmB,OAAVphC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,OAAQ5qE,OAAQsI,KAEpD,GACC,CAAC4pC,IAEJ78C,qBAAU,KACR,GAAIwyE,GACFK,IAAkB,GAClB9S,IAAQ,GACR0S,GAAkB,WACb,IAAuB,IAAnBD,GAA0B,CAAC,IAADknB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAInC,GAHAjmB,IAAkB,GAClBnU,IAAQ,GACR0S,GAAkB,MAEwC,UAA7B,OAA3BP,SAA2B,IAA3BA,IAA2C,QAAhBwnB,EAA3BxnB,GAA6BE,sBAAc,IAAAsnB,OAAhB,EAA3BA,EAA6C/uF,SAC7CqrF,MAA4C,OAA3B9jB,SAA2B,IAA3BA,IAA2C,QAAhBynB,EAA3BznB,GAA6BE,sBAAc,IAAAunB,OAAhB,EAA3BA,EAA6C1b,SAE9DpM,IAAQ,GACRG,IAAQ,GACRilB,IAAY,QACP,GACmD,UAA7B,OAA3B/kB,SAA2B,IAA3BA,IAA2C,QAAhB0nB,EAA3B1nB,GAA6BE,sBAAc,IAAAwnB,OAAhB,EAA3BA,EAA6CjvF,SAC7CqrF,MAA4C,OAA3B9jB,SAA2B,IAA3BA,IAA2C,QAAhB2nB,EAA3B3nB,GAA6BE,sBAAc,IAAAynB,OAAhB,EAA3BA,EAA6C5b,SAE9DjM,IAAQ,GACRH,IAAQ,GACRolB,IAAY,QACP,GACmD,SAA7B,OAA3B/kB,SAA2B,IAA3BA,IAA2C,QAAhB4nB,EAA3B5nB,GAA6BE,sBAAc,IAAA0nB,OAAhB,EAA3BA,EAA6CnvF,SAC7CqrF,MAA4C,OAA3B9jB,SAA2B,IAA3BA,IAA2C,QAAhB6nB,EAA3B7nB,GAA6BE,sBAAc,IAAA2nB,OAAhB,EAA3BA,EAA6C9b,SAE9DpM,IAAQ,GACRG,IAAQ,GACRilB,IAAY,QACP,GAEH,sBADyB,OAA3B/kB,SAA2B,IAA3BA,IAA2C,QAAhB8nB,EAA3B9nB,GAA6BE,sBAAc,IAAA4nB,OAAhB,EAA3BA,EAA6CrvF,SAE7CqrF,MAA4C,OAA3B9jB,SAA2B,IAA3BA,IAA2C,QAAhB+nB,EAA3B/nB,GAA6BE,sBAAc,IAAA6nB,OAAhB,EAA3BA,EAA6Chc,SAE9DpM,IAAQ,GACRG,IAAQ,GACRilB,IAAY,QACP,IACsB,OAA3B/kB,SAA2B,IAA3BA,IAAgD,QAArBgoB,EAA3BhoB,GAA6BG,2BAAmB,IAAA6nB,OAArB,EAA3BA,EAAkDjc,UAClD+X,GACA,CAAC,IAADoE,EACAzD,GAC6B,OAA3BzkB,SAA2B,IAA3BA,IAAgD,QAArBkoB,EAA3BloB,GAA6BG,2BAAmB,IAAA+nB,OAArB,EAA3BA,EAAkDzvF,OAEtD,MAAO,IACsB,OAA3BunE,SAA2B,IAA3BA,IAAoC,QAATioB,EAA3BjoB,GAA6B0lB,eAAO,IAAAuC,OAAT,EAA3BA,EAAsClc,WAAY+X,GAClD,CAAC,IAADqE,EAAAC,EAAAC,EACAnD,GAA2C,OAA3BllB,SAA2B,IAA3BA,IAAoC,QAATmoB,EAA3BnoB,GAA6B0lB,eAAO,IAAAyC,OAAT,EAA3BA,EAAsC1vF,QACtD6tF,GACyB,QADX8B,EACZxC,YAAuB,IAAAwC,GAAQ,QAARC,EAAvBD,EAAyBrC,cAAM,IAAAsC,OAAR,EAAvBA,EAAiC5jF,QAC/Bu7D,GAA4B0lB,QAAQjtF,QAG1C,CACF,IACC,CAAC6nE,KAEJ,MAAMgB,GAA+BA,KACnCN,cAAcR,GAAe36C,SAC7B,IAAI27C,EAAQ,EACZhB,GAAe36C,QAAU47C,aAAY,KACnCD,IACIA,EAAQ,KACVR,cAAcR,GAAe36C,SAC7B06C,IAAkB,GAClB1S,IAAQ,GACV,GACC,IAAK,EAwQJy6B,GAAav9E,IACjB,IAA0B,KAAb,OAATvZ,SAAS,IAATA,QAAS,EAATA,GAAW+1E,UAAwC,IAArB0B,GAA2B,CAAC,IAADsf,EAAAC,EAAAC,EAC3D1E,GAAgBh5E,EAAE3Y,OAAO7H,IAGzBs5F,GAAmB,OAEnB,MAAM6E,GACHrC,GAAc,IAA4B,QAA3BkC,EAAI3C,YAAuB,IAAA2C,GAAQ,QAARC,EAAvBD,EAAyBxC,cAAM,IAAAyC,OAAR,EAAvBA,EAAiC3uF,QACjD8uF,EAAmC,QAA1BF,EAAG7C,YAAuB,IAAA6C,OAAA,EAAvBA,EAAyB1C,OAAO2C,GAClDxD,GAAgByD,GAChBrC,GAAeoC,GAGfpf,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIwgB,EAAE3Y,OAAO7H,GACbo/E,UAAW,cACXnkF,MAAOmjG,IAETrnB,KACAzT,IAAQ,EACV,MACEA,IAAQ,GACRh/C,YAAW,KACTuhC,IAAgB,GAChByd,IAAQ,EAAM,GACb,IACL,EA0JY,IAAD+6B,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA1zF,GAAA2zF,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAb,GAAItG,EACF,OACEx5F,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAW,yBAAyBjI,SAAA,CACvCF,eAAA,OACEmI,UAAW,uCACTd,GAAU+1E,QAAU0B,GAChB,KACA,yBACH5+E,SAAA,CAEHW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,QAAAX,SAAOm/C,OAEgB,KAAb,OAAX+jC,SAAW,IAAXA,QAAW,EAAXA,GAAa1zE,cAAwCrP,KAAb,OAAX+iF,SAAW,IAAXA,QAAW,EAAXA,GAAa1zE,QACzC1P,eAAA,OAAKmI,UAAU,iBAAiB7H,QAAS25F,GAAwB/5F,SAAA,CAC9DkjF,GAAY,IACXpjF,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CACnB,QADmBu+F,GACjCrb,GAAY,UAAE,IAAAqb,QAAA,EAAdA,GAAgBnwF,OAAO,OAG5BzN,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QACEsH,UAAWgsE,GAAsC,QAAfuqB,GAACtb,GAAY,UAAE,IAAAsb,QAAA,EAAdA,GAAgBpwF,QAAQpO,SAE1Dk0E,GAAiC,QAAfuqB,GAACvb,GAAY,UAAE,IAAAub,QAAA,EAAdA,GAAgBrwF,eAIxC,KACJzN,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCW,cAAA,QACEsH,UACEd,GAAU+1E,QAAU0B,GAChB,qBACA,sBACL5+E,SAEDW,cAAA,KAAGo1C,MAAM,uBAKfj2C,eAAA,OACEmI,UAAW,wCACTxC,IAAO,gCACNzF,SAAA,CAEHF,eAAA,OACEmI,WACEotE,IAAQmlB,IAASM,IAAcL,GAC3B,GACA,gCAHK,4BAIiBz6F,SAAA,CAE5BF,eAAA,QACEmI,WACEotE,IAAQmlB,IAASM,IAAcL,GAC3B,GACA,wBAHK,qBAIUz6F,SAAA,CAEpBm6F,GACDx5F,cAAA,QACES,MAAO,CACLgc,QAAS,OACT5e,SAAU,OACV0e,WAAY,QACZlT,UAAW,QACXhK,SAEqB,YAAtB45F,GACG,QACsB,eAAtBA,GACA,QACsB,WAAtBA,GACA,QACA,oBAGRj5F,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCF,eAAA,QAAMmI,UAAU,eAAcjI,SAAA,CACd,OAAbg7F,SAAa,IAAbA,IAAuB,QAAV0D,GAAb1D,GAAeM,gBAAQ,IAAAoD,IAAvBA,GAAyBvjG,MACxB2E,eAAA,QACEsB,MAAO,CACLgc,QAAS,OACT5e,SAAU,QACVwB,SAAA,CAEFW,cAACk/F,KAAgB,IACH,OAAb7E,SAAa,IAAbA,IAAuB,QAAV2D,GAAb3D,GAAeM,gBAAQ,IAAAqD,QAAV,EAAbA,GAAyBxjG,MACzB,OAED,KACJ2E,eAAA,QACEsB,MAAO,CACLgc,QAAS,OACT5e,SAAU,QACVwB,SAAA,CAEDs6F,GACc,YAAdpvC,GACG,QACc,eAAdA,GACA,QACc,WAAdA,GACA,QACA,0BAMZprD,eAAA,OACEmI,UAAU,sBACV/H,GAAiB,OAAb86F,SAAa,IAAbA,IAAsB,QAAT4D,GAAb5D,GAAeK,eAAO,IAAAuD,QAAT,EAAbA,GAAwBld,QAAQ1hF,SAAA,CAEpCF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,OAAKsH,UAAU,cAAajI,SAC1BW,cAAA,OACEsH,UACmB,SAAjB2yF,GACI,SACiB,WAAjBA,GACA,UACA,UAENryF,IAAKu3F,GACL1/F,UACqB,OAAnBuK,SAAmB,IAAnBA,IAAoC,QAAjBO,GAAnBP,GAAqBc,uBAAe,IAAAP,KAApCA,GAAsCsoE,cAClCyqB,GAGN/9F,GAAiB,OAAb86F,SAAa,IAAbA,IAAsB,QAAT6D,GAAb7D,GAAeK,eAAO,IAAAwD,QAAT,EAAbA,GAAwBnd,QAC5B74E,IAAI,UAGRlI,cAAA,OACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,UAChBtd,SAEgB,aAAjB46F,GACCj6F,cAAAZ,WAAA,CAAAC,SAC+C,QAArB,QAAvB8+F,GAAAvD,YAAuB,IAAAuD,QAAA,EAAvBA,GAAyBrD,gBACxB37F,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACQ,aAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,UACA,UAGRj6F,cAAA,OACEsH,UAAW,aACQ,aAAjB2yF,IACiB,SAAjBA,GACI,aACA,UAGRj6F,cAAA,OACEsH,UAAW,aACQ,aAAjB2yF,GAA8B,WAAa,aAKjD96F,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACQ,aAAjB2yF,GAA8B,UAAY,UAG9Cj6F,cAAA,OACEsH,UAAW,aACQ,aAAjB2yF,GACI,aACA,UAGRj6F,cAAA,OACEsH,UAAW,aACQ,aAAjB2yF,GAA8B,WAAa,eAOrDj6F,cAAAZ,WAAA,CAAAC,SACgD,QAArB,QAAvB++F,GAAAxD,YAAuB,IAAAwD,QAAA,EAAvBA,GAAyBtD,iBAEvB,aADqB,QAAvBuD,GAAAzD,YAAuB,IAAAyD,QAAA,EAAvBA,GAAyBvD,iBAEP,QAApBlC,GA0BE,aADyB,QAAvB0F,GAAA1D,YAAuB,IAAA0D,QAAA,EAAvBA,GAAyBxD,gBAE3B37F,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACQ,QAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,MACA,UAGRj6F,cAAA,OACEsH,UAAW,aACQ,QAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,SACA,UAGRj6F,cAAA,OACEsH,UAAW,aACQ,QAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,OACA,aAIY,QAApBrB,GACFz5F,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACQ,QAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,OACA,SAGRj6F,cAAA,OACEsH,UAAW,aACQ,QAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,OACA,YAGRj6F,cAAA,OACEsH,UAAW,aACQ,QAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,OACA,aAIR,KArFF96F,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACQ,QAAjB2yF,IACiB,WAAjBA,IACiB,SAAjBA,GACI,MACA,UAGRj6F,cAAA,OACEsH,UAAW,aACQ,WAAjB2yF,IACiB,SAAjBA,GACI,SACA,UAGRj6F,cAAA,OACEsH,UAAW,aACQ,SAAjB2yF,GAA0B,OAAS,oBAuEnDj6F,cAAA,OACEsH,UAAW,yBACTxC,IAAO,gCACNzF,SAEHW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC27F,GAASf,cAMlBj6F,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,IAAO9E,cAACmxE,GAAe,MAI1BhyE,eAAA,OACEmI,UAAW,iCACTxC,IAAO,gCACNzF,SAAA,CAEHF,eAAA,OAAKmI,UAAU,iCAAgCjI,SAAA,CAC7CW,cAAA,OACEsH,UAAU,2BACV/H,GAAiB,OAAb86F,SAAa,IAAbA,IAAiC,QAApBkE,GAAblE,GAAeI,0BAAkB,IAAA8D,QAApB,EAAbA,GAAmCxd,QACvCthF,QAAUsgB,IAAC,IAAAvV,EAAA,QACU,OAAnBR,SAAmB,IAAnBA,IAAoC,QAAjBQ,EAAnBR,GAAqBc,uBAAe,IAAAN,IAApCA,EAAsCqoE,cAC5B,IAAVgnB,KACa,IAAbC,KA/mBE/5E,KAChB,IAA0B,KAAb,OAATvZ,SAAS,IAATA,QAAS,EAATA,GAAW+1E,UAAwC,IAArB0B,GAA2B,CAAC,IAADmhB,EAwCpDC,EArCP,GAFAtG,GAAgBh5E,EAAE3Y,OAAO7H,IAEP,YAAdgrD,IAAiD,YAAtB0uC,GAAiC,CAC9D,MAAMqG,EACJtiG,SAASw8F,IAAoB,EAAI,GAC7B,GACAx8F,SAASw8F,IAAoB,EACnCC,GAAoB6F,GACpBlE,GAAsBvgE,QAAUykE,CAClC,MAAO,GACS,eAAd/0C,IACsB,eAAtB0uC,GACA,CACA,MAAMqG,EACJtiG,SAASw8F,IAAoB,EAAI,GAC7B,GACAx8F,SAASw8F,IAAoB,EACnCC,GAAoB6F,GACpBlE,GAAsBvgE,QAAUykE,CAClC,EAEiB,OAAbjF,SAAa,IAAbA,IAAiC,QAApB+E,EAAb/E,GAAeI,0BAAkB,IAAA2E,OAApB,EAAbA,EAAmCre,WAAYhhE,EAAE3Y,OAAO7H,GAC1DskB,YAAW,KACTg/C,IAAQ,GAGRg2B,GAAmB,YAEnBh1E,YAAW,KACTy6D,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIrD,OAAO6jB,EAAE3Y,OAAO7H,IACpBo/E,UAAW,mBACXnkF,MAAO0B,OAAOk/F,GAAsBvgE,WAEtCy7C,IAA8B,GAC7BxvD,GAAM,GACR,OAEH2yE,GAAoBz8F,SAAsB,OAAbq9F,SAAa,IAAbA,IAAiC,QAApBgF,EAAbhF,GAAeI,0BAAkB,IAAA4E,OAApB,EAAbA,EAAmC7kG,QAChEqpB,YAAW,KACTg/C,IAAQ,EAAK,GACZ,MACHh/C,YAAW,KAAO,IAAD07E,EACf9F,GACEz8F,SAAsB,OAAbq9F,SAAa,IAAbA,IAAiC,QAApBkF,EAAblF,GAAeI,0BAAkB,IAAA8E,OAApB,EAAbA,EAAmC/kG,OAC7C,GACA,MAEP,MACEqoE,IAAQ,GACRh/C,YAAW,KACTuhC,IAAgB,GAChByd,IAAQ,EAAM,GACb,IACL,EAsjBkB28B,CAASz/E,EACJ,EACV1gB,SAEDW,cAAA,QACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAiC,QAApBmE,GAAbnE,GAAeI,0BAAkB,IAAA+D,QAApB,EAAbA,GAAmCzd,QACvCz5E,UAAU,eAAcjI,SAExBW,cAAA,KACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAiC,QAApBoE,GAAbpE,GAAeI,0BAAkB,IAAAgE,QAApB,EAAbA,GAAmC1d,QACvC3rC,MAAM,0BAIZp1C,cAAA,OACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAiC,QAApBqE,GAAbrE,GAAeI,0BAAkB,IAAAiE,QAApB,EAAbA,GAAmC3d,QACvCz5E,UAAU,2BACV7H,QAAUsgB,IAAC,IAAAtV,EAAA,QACU,OAAnBT,SAAmB,IAAnBA,IAAoC,QAAjBS,EAAnBT,GAAqBc,uBAAe,IAAAL,IAApCA,EAAsCooE,cAC5B,IAAVgnB,KACa,IAAbC,KAvkBI/5E,KAClB,IAA0B,KAAb,OAATvZ,SAAS,IAATA,QAAS,EAATA,GAAW+1E,UAAwC,IAArB0B,GAA2B,CAAC,IAADwhB,EAwCpDC,EArCP,GAFA3G,GAAgBh5E,EAAE3Y,OAAO7H,IAEP,YAAdgrD,IAAiD,YAAtB0uC,GAAiC,CAC9D,MAAMqG,EACJtiG,SAASw8F,IAAoB,EAAI,GAC7B,GACAx8F,SAASw8F,IAAoB,EACnCC,GAAoB6F,GACpBlE,GAAsBvgE,QAAUykE,CAClC,MAAO,GACS,eAAd/0C,IACsB,eAAtB0uC,GACA,CACA,MAAMqG,EACJtiG,SAASw8F,IAAoB,EAAI,GAC7B,GACAx8F,SAASw8F,IAAoB,EACnCC,GAAoB6F,GACpBlE,GAAsBvgE,QAAUykE,CAClC,EAEiB,OAAbjF,SAAa,IAAbA,IAAiC,QAApBoF,EAAbpF,GAAeI,0BAAkB,IAAAgF,OAApB,EAAbA,EAAmC1e,WAAYhhE,EAAE3Y,OAAO7H,GAC1DskB,YAAW,KACTg/C,IAAQ,GAGRg2B,GAAmB,YAEnBh1E,YAAW,KACTy6D,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIrD,OAAO6jB,EAAE3Y,OAAO7H,IACpBo/E,UAAW,mBACXnkF,MAAO0B,OAAOk/F,GAAsBvgE,WAEtCy7C,IAA8B,GAC7BxvD,GAAM,GACR,OAEH2yE,GAAoBz8F,SAAsB,OAAbq9F,SAAa,IAAbA,IAAiC,QAApBqF,EAAbrF,GAAeI,0BAAkB,IAAAiF,OAApB,EAAbA,EAAmCllG,QAChEqpB,YAAW,KACTg/C,IAAQ,EAAK,GACZ,MACHh/C,YAAW,KAAO,IAAD87E,EACflG,GACEz8F,SAAsB,OAAbq9F,SAAa,IAAbA,IAAiC,QAApBsF,EAAbtF,GAAeI,0BAAkB,IAAAkF,OAApB,EAAbA,EAAmCnlG,OAC7C,GACA,MAEP,MACEqoE,IAAQ,GACRh/C,YAAW,KACTuhC,IAAgB,GAChByd,IAAQ,EAAM,GACb,IACL,EA8gBkB+8B,CAAW7/E,EACN,EACV1gB,SAEDW,cAAA,QACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAiC,QAApBsE,GAAbtE,GAAeI,0BAAkB,IAAAkE,QAApB,EAAbA,GAAmC5d,QACvCz5E,UAAU,iBAAgBjI,SAE1BW,cAAA,KACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAiC,QAApBuE,GAAbvE,GAAeI,0BAAkB,IAAAmE,QAApB,EAAbA,GAAmC7d,QACvC3rC,MAAM,+BAKdj2C,eAAA,OAAKmI,UAAU,wBAAuBjI,SAAA,CACpCW,cAAA,OACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAqB,QAARwE,GAAbxE,GAAeG,cAAM,IAAAqE,QAAR,EAAbA,GAAuB9d,QAC3Bz5E,UACEotE,GAAO,4BAA8B,yBAEvCj1E,QAAUC,IAAK,IAAAgL,EAAA,QACM,OAAnBV,SAAmB,IAAnBA,IAAoC,QAAjBU,EAAnBV,GAAqBc,uBAAe,IAAAJ,IAApCA,EAAsCmoE,cAtyB3Cv4E,YACiB,KAAb,OAATkM,SAAS,IAATA,QAAS,EAATA,GAAW+1E,UAAwC,IAArB0B,IAChC8a,GAAgBh5E,EAAE3Y,OAAO7H,IAGzBs5F,GAAmB,QAKnBva,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIrD,OAAO6jB,EAAE3Y,OAAO7H,IACpBo/E,UAAW,eACXnkF,MAAO,SAET87E,KACAzT,IAAQ,GACRh/C,YAAW,KACT8wD,IAAQ,GACRG,IAAQ,EAAM,GACbhuD,MAEH+7C,IAAQ,GACRh/C,YAAW,KACTuhC,IAAgB,GAChByd,IAAQ,EAAM,GACb,KACL,EA0wBkB50D,CAAGvO,EACE,EACVL,SACF,SAGDW,cAAA,OACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAqB,QAARyE,GAAbzE,GAAeG,cAAM,IAAAsE,QAAR,EAAbA,GAAuB/d,QAC3Bz5E,UACEuyF,GAAQ,4BAA8B,yBAExCp6F,QAAUsgB,IAAC,IAAApV,EAAA,QACU,OAAnBX,SAAmB,IAAnBA,IAAoC,QAAjBW,EAAnBX,GAAqBc,uBAAe,IAAAH,IAApCA,EAAsCkoE,cAnxBxC9yD,MACc,KAAb,OAATvZ,SAAS,IAATA,QAAS,EAATA,GAAW+1E,UAAwC,IAArB0B,IAChC8a,GAAgBh5E,EAAE3Y,OAAO7H,IAGzBs5F,GAAmB,QAMnBva,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIrD,OAAO6jB,EAAE3Y,OAAO7H,IACpBo/E,UAAW,eACXnkF,MAAO,SAETqoE,IAAQ,GACRyT,KACAzyD,YAAW,KACTixD,IAAQ,GACRH,IAAQ,EAAM,GACb7tD,MAEH+7C,IAAQ,GACRh/C,YAAW,KACTuhC,IAAgB,GAChByd,IAAQ,EAAM,GACb,KACL,EAsvBkBgS,CAAK90D,EACA,EACV1gB,SACF,SAGDW,cAAA,OACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAqB,QAAR0E,GAAb1E,GAAeG,cAAM,IAAAuE,QAAR,EAAbA,GAAuBhe,QAC3Bz5E,UACEwyF,GACI,4BACA,yBAENr6F,QAAUsgB,IAAC,IAAAm0D,EAAA,QACU,OAAnBlqE,SAAmB,IAAnBA,IAAoC,QAAjBkqE,EAAnBlqE,GAAqBc,uBAAe,IAAAopE,IAApCA,EAAsCrB,cAjwBrC9yD,MACW,KAAb,OAATvZ,SAAS,IAATA,QAAS,EAATA,GAAW+1E,UAAwC,IAArB0B,IAChC8a,GAAgBh5E,EAAE3Y,OAAO7H,IACzBs5F,GAAmB,QACnBva,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIrD,OAAO6jB,EAAE3Y,OAAO7H,IACpBo/E,UAAW,eACXnkF,MAAO,qBAETqoE,IAAQ,GACRyT,KACAzyD,YAAW,KACT8wD,IAAQ,GACRG,IAAQ,EAAM,GACbhuD,MAEH+7C,IAAQ,GACRh/C,YAAW,KACTuhC,IAAgB,GAChByd,IAAQ,EAAM,GACb,KACL,EA2uBkBg9B,CAAQ9/E,EACH,EACV1gB,SACF,SAGDW,cAAA,OACET,GAAiB,OAAb86F,SAAa,IAAbA,IAAqB,QAAR2E,GAAb3E,GAAeG,cAAM,IAAAwE,QAAR,EAAbA,GAAuBje,QAC3Bz5E,UACEotE,IAAQmlB,IAASM,IAAcL,GAC3B,wBACA,2BAENr6F,QAAUsgB,IAAC,IAAAmlE,EAAA,QACU,OAAnBl7E,SAAmB,IAAnBA,IAAoC,QAAjBk7E,EAAnBl7E,GAAqBc,uBAAe,IAAAo6E,IAApCA,EAAsCrS,cAtvBtC9yD,MACY,KAAb,OAATvZ,SAAS,IAATA,QAAS,EAATA,GAAW+1E,UAAwC,IAArB0B,IAChC8a,GAAgBh5E,EAAE3Y,OAAO7H,IAGzBs5F,GAAmB,OAKnBva,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIrD,OAAO6jB,EAAE3Y,OAAO7H,IACpBo/E,UAAW,eACXnkF,MAAO,QAETqoE,IAAQ,GACRyT,KACAzyD,YAAW,KACT8wD,IAAQ,GACRG,IAAQ,EAAM,GACbhuD,MAEH+7C,IAAQ,GACRh/C,YAAW,KACTuhC,IAAgB,GAChByd,IAAQ,EAAM,GACb,KACL,EA0tBkBi9B,CAAO//E,EACF,EACV1gB,SACF,iBAgBPW,cAACk6E,GAAiB,CAChBre,SAAUA,EACVr9D,KAAM06F,GACN59F,KAAMkjD,GACNj+C,YAAa64F,GACb75F,GAAkB,QAAhB0/F,GAAE1c,GAAY,UAAE,IAAA0c,QAAA,EAAdA,GAAgBle,QACpB3xD,YAAa9V,SAIrB,ECpyCK,MAUMymF,GAAuBtc,IAClC,MAAOuc,EAAMC,GAAW/9F,mBAASuhF,IAC1Byc,EAAUC,GAAej+F,mBAASuhF,IAClC2c,EAAaC,GAAkBn+F,mBAASuhF,IACxC6c,EAAeC,GAAmBr+F,mBAASuhF,IAC3C+c,EAAeC,GAAoBv+F,mBAASuhF,IAC5Cid,EAAMC,GAAWz+F,mBAASuhF,IAC1Bmd,EAAKC,GAAU3+F,mBAASuhF,IACxBqd,EAASC,GAAc7+F,qBA8D9B,OA5DAY,qBAAU,KACR,MAAMk+F,EAAmB,OAAPvd,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QACxBnB,IAAC,IAAA6J,EAAA,MAA+B,YAAzB,OAAD7J,QAAC,IAADA,GAAW,QAAV6J,EAAD7J,EAAGoK,gBAAQ,IAAAP,OAAV,EAADA,EAAaQ,YAAwC,KAAd,OAADrK,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAEnEwwF,EAAYa,GAEZ,MAAMrI,EAAiB,OAAPlV,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QACtBnB,IAAC,IAAA8J,EAAA1I,EAAA,MAC0B,UAAzB,OAADpB,QAAC,IAADA,GAAW,QAAV8J,EAAD9J,EAAGoK,gBAAQ,IAAAN,OAAV,EAADA,EAAaO,WACU,gBAAtB,OAADrK,QAAC,IAADA,GAAY,QAAXoB,EAADpB,EAAG7H,iBAAS,IAAAiJ,OAAX,EAADA,EAAcjH,QACC,KAAd,OAAD6F,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAExBswF,EAAQtH,GAER,MAAMsI,EAAqB,OAAPxd,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QAC1BnB,IAAC,IAAA+J,EAAAC,EAAA,MAC0B,qBAAzB,OAADhK,QAAC,IAADA,GAAW,QAAV+J,EAAD/J,EAAGoK,gBAAQ,IAAAL,OAAV,EAADA,EAAaM,WACiB,UAA7B,OAADrK,QAAC,IAADA,GAAW,QAAVgK,EAADhK,EAAGoK,gBAAQ,IAAAJ,OAAV,EAADA,EAAaM,gBACE,KAAd,OAADtK,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAExB0wF,EAAeY,GAEf,MAAMC,EAAuB,OAAPzd,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QAC5BnB,IAAC,IAAAiK,EAAAC,EAAA,MAC0B,qBAAzB,OAADlK,QAAC,IAADA,GAAW,QAAViK,EAADjK,EAAGoK,gBAAQ,IAAAH,OAAV,EAADA,EAAaI,WACiB,YAA7B,OAADrK,QAAC,IAADA,GAAW,QAAVkK,EAADlK,EAAGoK,gBAAQ,IAAAF,OAAV,EAADA,EAAaI,gBACE,KAAd,OAADtK,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAExB4wF,EAAgBW,GAEhB,MAAMC,EAAkB,OAAP1d,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QACvBnB,IAAC,IAAAmK,EAAA,MAA+B,gBAAzB,OAADnK,QAAC,IAADA,GAAW,QAAVmK,EAADnK,EAAGoK,gBAAQ,IAAAD,OAAV,EAADA,EAAaE,YAA4C,KAAd,OAADrK,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAEvEoxF,EAAWI,GAEX,MAAMX,EAAuB,OAAP/c,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QAC5BnB,IAAC,IAAA+yF,EAAAC,EAAA,MAC0B,gBAAzB,OAADhzF,QAAC,IAADA,GAAW,QAAV+yF,EAAD/yF,EAAGoK,gBAAQ,IAAA2oF,OAAV,EAADA,EAAa1oF,WACiB,gBAA7B,OAADrK,QAAC,IAADA,GAAW,QAAVgzF,EAADhzF,EAAGoK,gBAAQ,IAAA4oF,OAAV,EAADA,EAAa1oF,gBACE,KAAd,OAADtK,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAExB8wF,EAAiBD,GAEjB,MAAMn5B,EAAmB,OAAPoc,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QACxBnB,IAAC,IAAAizF,EAAA,MAA+B,eAAzB,OAADjzF,QAAC,IAADA,GAAW,QAAVizF,EAADjzF,EAAGoK,gBAAQ,IAAA6oF,OAAV,EAADA,EAAa5oF,YAA2C,KAAd,OAADrK,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAEtEgxF,EAAQt5B,GAER,MAAMk6B,EAAgB,OAAP9d,QAAO,IAAPA,OAAO,EAAPA,EAASj0E,QACrBnB,IAAC,IAAAmzF,EAAA74B,EAAA,MAC0B,UAAzB,OAADt6D,QAAC,IAADA,GAAW,QAAVmzF,EAADnzF,EAAGoK,gBAAQ,IAAA+oF,OAAV,EAADA,EAAa9oF,WACU,mBAAtB,OAADrK,QAAC,IAADA,GAAY,QAAXs6D,EAADt6D,EAAG7H,iBAAS,IAAAmiE,OAAX,EAADA,EAAcngE,QACC,KAAd,OAAD6F,QAAC,IAADA,OAAC,EAADA,EAAGsB,QAAiB,IAExBkxF,EAAOU,GACHA,GACF7c,IACF,GACC,CAACjB,IAEG,CACLyc,WACAF,OACAM,gBACAF,cACAU,UACAN,gBACAI,MACAF,OACD,ECqRYe,OAtWA7lF,IAOR,IAADrR,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAPU,IACd+2F,EAAG,QACHxnF,EAAO,OACP08C,EAAM,WACNjX,EAAU,YACV2+B,EAAW,iBACXL,GACDriE,EACC,MAAM,EAAEzV,GAAMC,eACR,MAAEo4C,EAAK,UAAEh4C,EAAS,SAAEiS,EAAQ,KAAEnd,GAASomG,GACvC,SAAEhpF,EAAQ,aAAEC,GAAiBF,GAC7B,QAAEsoE,EAAO,OAAEtzE,EAAM,KAAEjF,EAAI,YAAE0qE,EAAW,KAAE5kB,EAAI,YAAEt1C,EAAW,OAAEujE,GAC7D/1E,GACI,cAAEm7F,EAAa,OAAEC,GAAW7gB,GAC3BxP,EAAOC,GAAYtvE,mBAAyB,UAAhB8W,IAC5Bo6D,EAAayuB,GAAkB3/F,mBAASgxE,IACxC4uB,EAAWC,GAAgB7/F,mBAASosD,IACpCujB,EAAMC,GAAW5vE,mBAAkB,SAATosD,IAC1BmjB,EAAQC,GAAaxvE,mBAAkB,WAATosD,IAC9BqjB,EAASC,GAAc1vE,mBAAkB,YAATosD,IAChCgnB,EAAgBC,GAAqBrzE,mBAAS,MAC/CszE,EAAiBn9C,iBAAO,OACxB,oBAAEruB,EAAmB,kBAAE2rE,EAAiB,gBAAEvwB,GAC9CtjD,qBAAWC,KAEbe,qBAAU,KAEkB,eAAxB68C,EAAWjnC,UACe,gBAA1BinC,EAAW2hC,YAEc,YAArB3hC,EAAW5pC,QACby7D,GAAS,GACTwE,cAAcR,EAAe36C,UAKP,eAAxB8kB,EAAWjnC,UACe,gBAA1BinC,EAAW2hC,aAEc,UAArB3hC,EAAW5pC,OACb8rF,EAAeliD,EAAW5pC,OAC1By7D,EAAS7xB,EAAW5pC,OACpBigE,cAAcR,EAAe36C,SAC7B06C,GAAkB,GAClBS,cAAcR,EAAe36C,WACC,SAArB8kB,EAAW5pC,OAKU,mBAArB4pC,EAAW5pC,OAKU,YAArB4pC,EAAW5pC,SATpB8rF,EAAeliD,EAAW5pC,OAC1BigE,cAAcR,EAAe36C,SAC7B06C,GAAkB,GAClBS,cAAcR,EAAe36C,WAeP,eAAxB8kB,EAAWjnC,UACe,SAA1BinC,EAAW2hC,aAEc,SAArB3hC,EAAW5pC,QACb+7D,EAAQnyB,EAAW5pC,OACnB67D,GAAW,GACXF,GAAU,GACVqwB,EAAa,QACb/rB,cAAcR,EAAe36C,UAEN,YAArB8kB,EAAW5pC,QACb67D,EAAWjyB,EAAW5pC,OACtB27D,GAAU,GACVI,GAAQ,GACRiwB,EAAa,WACb/rB,cAAcR,EAAe36C,UAEN,WAArB8kB,EAAW5pC,QACb27D,EAAU/xB,EAAW5pC,OACrB+7D,GAAQ,GACRF,GAAW,GACXmwB,EAAa,UACb/rB,cAAcR,EAAe36C,UAEjC,GACC,CAAC8kB,IAEJ78C,qBAAU,KACJwyE,GACFK,GAAkB,GAClBJ,EAAkB,QACU,IAAnBD,IACTlwB,GAAgB,GAChBy8C,EAAe3uB,GACfqC,EAAkB,MACpB,GACC,CAACD,IAEJ,MAAMgB,EAA+BA,KACnCN,cAAcR,EAAe36C,SAC7B,IAAI27C,EAAQ,GACG,IAAX+F,IAAyC,IAArB0B,IAEtBzI,EAAe36C,QAAU47C,aAAY,KACnCD,IACIA,EAAQ,KACVR,cAAcR,EAAe36C,SAC7B06C,GAAkB,GAClBA,EAAkB,MACpB,GACC,KACL,EAGIysB,EAAwBjiF,IAC5Bu+D,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIoiG,EACJhjB,UAAW,cACXnkF,MAAO,UAET87E,GAA8B,EAuEhC,OACEt2E,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BF,eAAA,OACEmI,UAAW,+BACTi1E,GAAU0B,EAAmB,KAAO,iBACnC5+E,SAAA,CAEHW,cAAA,OAAKo1C,MAAM,cAAa/1C,SACtBW,cAAA,QAAAX,SAnC2Bm/C,KACnC,MAAMi5B,EAA+B,kBAAVj5B,EAAqBA,EAAQ,GACxD,MAAmC,sBAApB,OAAXi5B,QAAW,IAAXA,OAAW,EAAXA,EAAan0E,eACR6C,EAAE,gEAC+B,sBAApB,OAAXsxE,QAAW,IAAXA,OAAW,EAAXA,EAAan0E,eACf6C,EAAE,2DAEFsxE,CACT,EA2BewqB,CAA4BzjD,OAErCx+C,cAAA,OAAKsH,UAAU,cAAajI,SAC1BW,cAAA,QACEsH,UAAW,IACTi1E,GAAU0B,EACN,kBACA,2BACH5+E,SAEHW,cAAA,KAAGo1C,MAAM,uBAMfj2C,eAAA,OACEmI,UAAW,oBACTd,EAAUywD,QAAS,uBAClB53D,SAAA,CAEHW,cAAA,OAAKsH,UAAU,gBAAejI,SAC5BW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IAAKpB,EAAUywD,OAAS9X,GAAqBA,GAC7Cj3C,IAAI,OACJhK,MAAM,KACNgC,OAAO,WAIbf,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCW,cAAA,OACEsH,UAAU,kBACV7H,UACqC,QAAnC8K,EAAAP,EAAoBc,uBAAe,IAAAP,IAAnCA,EAAqCsoE,cAChC9yD,KACCiiF,GAAuB,GAG9B3iG,SAEDW,cAAA,OAAKsH,UAA2B,UAAhB8rE,EAA0B,YAAc,SAAS/zE,SAC/DW,cAAA,QACEP,UACqC,QAAnC+K,EAAAR,EAAoBc,uBAAe,IAAAN,IAAnCA,EAAqCqoE,cAChC9yD,KACCiiF,GAAuB,GAG9B3iG,SAEA8G,EAAE,8DAKTnG,cAAC+d,KAAO,CACNC,MAAO7X,EACL,2DACA9G,SAEFW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,OAAKsH,WAAqB,IAAViqE,EAAkB,YAAc,SAASlyE,SACtD8G,EAAE,+DAObnG,cAAA,OAAKsH,UAAU,gBAAejI,WAC3BmH,EAAUywD,QAASj3D,cAACmxE,GAAe,MAItChyE,eAAA,OACEmI,UAAW,2BAA0DjI,SAAA,CAErEW,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCW,cAAA,QAAAX,SACG8G,EAAE,gEAGPnG,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OACEsH,UACEiqE,EAAQ,uBAAyB,uBAClClyE,SAEDW,cAAA,QAAMsH,UAAU,gBAAejI,SAlHX+zE,KAC9B,MAAMH,EAAsC,kBAAhBG,EAA2BA,EAAc,GACrE,MAAmC,UAA/BH,EAAa3vE,cACR6C,EAAE,wDAC+B,SAA/B8sE,EAAa3vE,cACf6C,EAAE,mDAC+B,mBAA/B8sE,EAAa3vE,cACf6C,EAAE,wDAC+B,YAA/B8sE,EAAa3vE,cACf6C,EAAE,mDAEF8sE,CACT,EAuGaivB,CAAuB9uB,YAMhCj0E,eAAA,OACEmI,UAAW,eACA,OAATd,QAAS,IAATA,MAAWywD,SAAS,uBACnB53D,SAAA,CAEHW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAO8G,EAAE,uDAEXhH,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BW,cAAA,QACEsH,UACEmqE,EAAS,wBAA0B,qBAErChyE,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,IAApCA,EAAsCooE,cACjC9yD,KAhKjB2xD,GAAU,GACVI,GAAQ,GACRF,GAAW,GACX0M,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIqiG,EACJjjB,UAAW,cACXnkF,MAAO,WAET87E,GAuJ4C,GAGjCj3E,SAEA8G,EAAE,uDAELnG,cAAA,QACEsH,UAAWqqE,EAAU,qBAAuB,kBAC5ClyE,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,IAApCA,EAAsCmoE,cACjC9yD,KA1LjB6xD,GAAW,GACXF,GAAU,GACVI,GAAQ,GACRwM,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIqiG,EACJjjB,UAAW,cACXnkF,MAAO,YAET87E,GAiLyC,GAG9Bj3E,SAEA8G,EAAE,oDAGLnG,cAAA,QACEsH,UAAWuqE,EAAO,sBAAwB,mBAC1CpyE,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBW,EAAnBX,EAAqBc,uBAAe,IAAAH,IAApCA,EAAsCkoE,cACjC9yD,KArNjB+xD,GAAQ,GACRF,GAAW,GACXF,GAAU,GACV4M,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIqiG,EACJjjB,UAAW,cACXnkF,MAAO,SAET87E,GA4M0C,GAG/Bj3E,SAEA8G,EAAE,+DAKV,EC/SQg8F,OA5DGA,CAACr0E,EAAK8oC,KACtB,MAAM,mBAAEwrC,GAAuBtgG,qBAAWC,MACnC6zD,EAAQC,GAAa3zD,mBAAS,OAC9By9C,EAAYirC,GAAiB1oF,mBAAS,CAAC,GAE9CY,qBAAU,KACR,MAAM60D,EAAY,IAAI8mB,UAAU3wD,GAEhC,IAAI+/D,EAqCJ,OAnCAl2B,EAAUH,OAAS,KACjBG,EAAUE,KACR9xD,KAAKC,UAAU,CAAE8xD,QAASlB,EAAQA,SAAQl3D,MAAO,iBAEnD0iG,GAAmB,GAEnBvU,EAAepX,aAAY,MACZ,OAAT9e,QAAS,IAATA,OAAS,EAATA,EAAW6mB,cAAeC,UAAUC,MACtC/mB,EAAUE,KAAK9xD,KAAKC,UAAU,CAAEwC,KAAM,SACxC,GACC,IAAM,EAGXmvD,EAAUI,UAAah4C,IACrB,IACE,IAAI4/B,EAAa55C,KAAK4Q,MAAMoJ,EAAE/b,MAC9B,GAAyB,UAAX,OAAV27C,QAAU,IAAVA,OAAU,EAAVA,EAAYn3C,MAAiB,OAEjCoiF,EAAcjrC,EAChB,CAAE,MAAOn7C,GACPC,QAAQD,MAAM,yBAA0BA,EAC1C,GAGFmzD,EAAUJ,QAAU,SAAU/yD,GAC5B49F,GAAmB,EACrB,EAEAzqC,EAAUF,QAAU,KAClBue,cAAc6X,GACduU,GAAmB,EAAM,EAG3BvsC,EAAU8B,GAEH,KACLqe,cAAc6X,GACdl2B,EAAUD,OAAO,CAClB,GACA,CAAC5pC,EAAK8oC,IAQT,MAAO,CAAEhB,SAAQ0oB,YANI97D,IACfozC,GAAUA,EAAO4oB,aAAeC,UAAUC,MAC5C9oB,EAAOiC,KAAK9xD,KAAKC,UAAUwc,GAC7B,EAG4Bm9B,aAAY,ECkc7B0iD,OAxfHzmF,IAA4C,IAADm6E,EAAAC,EAAAI,EAAAC,EAAAC,EAAAC,EAAAC,EAAAG,EAAAV,EAAAc,EAAAG,EAAAyE,EAAAJ,EAAA+G,EAAAC,EAAAh4F,EAAA,IAA1C,IAAEq2F,EAAG,YAAEtiB,EAAW,OAAE1nB,EAAM,QAAE/qC,GAASjQ,EAChD,MAAM,MAAE4iC,EAAK,UAAEh4C,GAAco6F,GACvB,kBAAEjrB,EAAiB,gBAAEvwB,EAAe,oBAAEp7C,GAC1ClI,qBAAWC,MACNygG,EAAUC,GAAevgG,mBACrB,OAATsE,QAAS,IAATA,GAAgB,QAAPuvF,EAATvvF,EAAWi3E,aAAK,IAAAsY,GAEP,QAFOC,EAAhBD,EACI99E,MAAM5J,GAAiB,gCAAXA,EAAE/S,OACfmS,cAAM,IAAAuoF,OAFA,EAATA,EAEWx7F,MAAM4Z,QAAQ,KAEpBulF,EAAK+I,GAAUxgG,mBACX,OAATsE,QAAS,IAATA,GAAgB,QAAP4vF,EAAT5vF,EAAWi3E,aAAK,IAAA2Y,GAAiC,QAAjCC,EAAhBD,EAAkBn+E,MAAM8H,GAAkB,UAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAgB,IAAA+6F,GAAQ,QAARC,EAAjDD,EAAmD5oF,cAAM,IAAA6oF,GAAO,QAAPC,EAAzDD,EAA2D97F,aAAK,IAAA+7F,OAAvD,EAATA,EAAkEniF,QAAQ,KAErEsgE,EAAMC,GAAWzyE,mBACb,OAATsE,QAAS,IAATA,GAAgB,QAAPgwF,EAAThwF,EAAWi3E,aAAK,IAAA+Y,OAAP,EAATA,EAAkBv+E,MAAM8H,IAAC,IAAA1C,EAAA,MACuB,QAAd,QAAhCA,EAAa,uBAAX,OAAD0C,QAAC,IAADA,OAAC,EAADA,EAAGzkB,aAA4B,IAAA+hB,OAAA,EAAhCA,EAAmC5P,OAA8B,MAG9Dk1F,EAASC,GAAc1gG,mBACnB,OAATsE,QAAS,IAATA,GAAgB,QAAPmwF,EAATnwF,EAAWi3E,aAAK,IAAAkZ,OAAP,EAATA,EAAkB1+E,MAAM8H,IAAC,IAAAggB,EAAA,MACuB,SAAd,QAAhCA,EAAa,uBAAX,OAADhgB,QAAC,IAADA,OAAC,EAADA,EAAGzkB,aAA4B,IAAAykC,OAAA,EAAhCA,EAAmCtyB,OAA+B,MAG/Do1F,EAAeC,GAAoB5gG,mBAC/B,OAATsE,QAAS,IAATA,GAA8D,QAArDyvF,EAATzvF,EAAWi3E,MAAMxlE,MAAM5J,GAAiB,wBAAXA,EAAE/S,cAA+B,IAAA26F,OAArD,EAATA,EAAgExoF,QAE5D0xF,EAAU,CAAC,MAAO,SAAU,OAAQ,SACnC3oB,EAAOusB,GAAY7gG,mBAAS,IAC5B2yE,EAAMC,GAAW5yE,mBACb,OAATsE,QAAS,IAATA,GAAgB,QAAPuwF,EAATvwF,EAAWi3E,aAAK,IAAAsZ,OAAP,EAATA,EAAkB9+E,MAAM8H,IAAC,IAAAijF,EAAA,MACuB,YAAd,QAAhCA,EAAa,uBAAX,OAADjjF,QAAC,IAADA,OAAC,EAADA,EAAGzkB,aAA4B,IAAA0nG,OAAA,EAAhCA,EAAmCv1F,OAAkC,MAGlEokE,EAAMC,GAAW5vE,mBACb,OAATsE,QAAS,IAATA,GAAgB,QAAP0wF,EAAT1wF,EAAWi3E,aAAK,IAAAyZ,OAAP,EAATA,EAAkBj/E,MAAM8H,IAAC,IAAAkjF,EAAA,MACuB,oBAAd,QAAhCA,EAAa,uBAAX,OAADljF,QAAC,IAADA,OAAC,EAADA,EAAGzkB,aAA4B,IAAA2nG,OAAA,EAAhCA,EAAmCx1F,OAE1B,KAGPy1F,EAAyB,OAAT18F,QAAS,IAATA,GAAgB,QAAPm1F,EAATn1F,EAAWi3E,aAAK,IAAAke,OAAP,EAATA,EAAkB1jF,MACrC5J,GAAiB,oBAAXA,EAAE/S,OAEL6nG,EAAyB,OAAT38F,QAAS,IAATA,GAAgB,QAAP+0F,EAAT/0F,EAAWi3E,aAAK,IAAA8d,OAAP,EAATA,EAAkBtjF,MACrC5J,GAAiB,gCAAXA,EAAE/S,OAEL8nG,EAA+B,OAAT58F,QAAS,IAATA,GAAgB,QAAP87F,EAAT97F,EAAWi3E,aAAK,IAAA6kB,OAAP,EAATA,EAAkBrqF,MAC3C5J,GAAiB,wBAAXA,EAAE/S,QAEJwJ,EAAM+9D,GAAW3gE,oBAAS,IAC1BojF,EAAOC,GAAYrjF,mBAAS,MAG7B4kB,EAAQ,KAEdhkB,qBAAU,KACR,MAAMyhF,EAAeS,KACfU,EAAmBA,CAAC13D,EAAQxL,KAAa,IAAD6gF,GAC/B,OAAT78F,QAAS,IAATA,GAAmB,QAAV68F,EAAT78F,EAAWi3E,MAAM,UAAE,IAAA4lB,OAAV,EAATA,EAAqBtiB,WAAY/yD,IACnC00E,EAAOlgF,EAAQmjE,mBAAmBvxE,QAAQ,IAC1CquF,EAAYjgF,EAAQojE,UACpBkd,EAAiBtgF,EAAQ8gF,KAEO,QAA5B9gF,EAAQqjE,iBACV+c,GAAW,GACXjuB,GAAQ,GACRG,GAAQ,GACRhD,GAAQ,KAER8wB,GAAW,GACXjuB,EAAkC,OAA1BnyD,EAAQsjE,eAChBhR,EAAkC,WAA1BtyD,EAAQsjE,eAChBhU,EAAkC,mBAA1BtvD,EAAQsjE,gBAEpB,EAKF,OAFAvB,EAAat2E,GAAG,aAAcy3E,GAEvB,KACLnB,EAAar2E,IAAI,aAAcw3E,EAAiB,CACjD,GACA,CAAU,OAATl/E,QAAS,IAATA,GAAmB,QAAV+7F,EAAT/7F,EAAWi3E,MAAM,UAAE,IAAA8kB,OAAV,EAATA,EAAqBxhB,UAkIzB,OACE/gF,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAW,yBAAyBjI,SAAA,CACvCF,eAAA,OAAKmI,UAAW,uCAAuCjI,SAAA,CACrDW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,QAAAX,SAAOm/C,MAGTx+C,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCW,cAAA,QACEsH,UACEd,EAAU+1E,OACN,qBACA,sBACLl9E,SAEDW,cAAA,KAAGo1C,MAAM,uBAKfj2C,eAAA,OACEmI,UAAW,wCACTxC,GAAO,gCACNzF,SAAA,CAEHF,eAAA,OACEmI,WACEotE,GAAQG,GAAQguB,EACZ,GACA,gCAHK,4BAIiBxjG,SAAA,CAE5BF,eAAA,QACEmI,WACEotE,GAAQG,GAAQguB,EAAgB,GAAK,wBAD5B,qBAEUxjG,SAAA,CAEpBmjG,EACDxiG,cAAA,QACES,MAAO,CACLgc,QAAS,OACT5e,SAAU,OACV0e,WAAY,QACZlT,UAAW,QACXhK,SACH,aAIHW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAClCW,cAAA,QAAMsH,UAAU,eAAcjI,SAC5BF,eAAA,QACEsB,MAAO,CACLgc,QAAS,OACT5e,SAAU,OACVyL,WAAY,QACZjK,SAAA,CAEDs6F,EAAI,kBAMbx6F,eAAA,OAAKmI,UAAU,sBAAsB/H,GAAI6jG,EAAoBriB,QAAQ1hF,SAAA,CACnEF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,OAAKsH,UAAU,cAAajI,SAC1BW,cAAA,OACEsH,UACoB,SAAlBu7F,EACI,SACkB,WAAlBA,EACA,UACA,UAENj7F,IAAKo+E,GACLvmF,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCsoE,cAtGlC0wB,MACpBR,EAASvsB,EAAQ,GACbA,EAAQ,GACVusB,EAAS,GAEX,MAAMn6E,EAASu2E,EAAQ3oB,GACvBssB,EAAiBl6E,GACjB,MAAMpG,EAAUzc,KAAKC,UAAU,CAC7B4wD,SACAr3D,GAAI6jG,EAAoBriB,QACxBpC,UAAW,cACXnkF,MAAOouB,EACPyD,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAG3C+kB,YAAW,KACTy6D,EAAYzmB,KAAKr1C,GACjBqgD,GAAQ,EAAK,GACZ/7C,GACHjD,YAAW,KACTg/C,GAAQ,EAAM,GACb,IAAK,GAqFMtjE,GAAI6jG,EAAoBriB,QACxB74E,IAAI,UAGRlI,cAAA,OACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,UAChBtd,SAEiB,SAAlBwjG,EACC1jG,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACS,QAAlBu7F,GACkB,WAAlBA,GACkB,SAAlBA,EACI,MACA,QACHxjG,SAEF,MAEHW,cAAA,OACEsH,UAAW,aACS,WAAlBu7F,GAAgD,SAAlBA,EAC1B,SACA,UAGR7iG,cAAA,OACEsH,UAAW,aACS,SAAlBu7F,EAA2B,OAAS,aAItB,WAAlBA,EACF1jG,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACS,QAAlBu7F,GACkB,WAAlBA,GACkB,SAAlBA,EACI,MACA,UAGR7iG,cAAA,OACEsH,UAAW,aACS,WAAlBu7F,GAAgD,SAAlBA,EAC1B,SACA,UAGR7iG,cAAA,OACEsH,UAAW,aACS,SAAlBu7F,EAA2B,OAAS,aAItB,QAAlBA,EACF1jG,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACS,QAAlBu7F,EAA0B,MAAQ,UAGtC7iG,cAAA,OACEsH,UAAW,aACS,WAAlBu7F,GAAgD,SAAlBA,EAC1B,SACA,UAGR7iG,cAAA,OACEsH,UAAW,aACS,SAAlBu7F,EAA2B,OAAS,aAItB,SAAlBA,EACF1jG,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OACEsH,UAAW,aACS,SAAlBu7F,EAA2B,UAAY,UAG3C7iG,cAAA,OACEsH,UAAW,aACS,SAAlBu7F,GACkB,WAAlBA,GACkB,SAAlBA,EACI,aACA,UAGR7iG,cAAA,OACEsH,UAAW,aACS,SAAlBu7F,EAA2B,WAAa,aAI5C,UAIR7iG,cAAA,OACEsH,UAAW,yBACTxC,GAAO,gCACNzF,SAEHW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAEwjG,YAK3C7iG,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAI1BhyE,eAAA,OACEmI,UAAW,iCACTxC,GAAO,gCACNzF,SAAA,CAEHF,eAAA,OAAKmI,UAAU,iCAAgCjI,SAAA,CAC7CW,cAAA,OACET,GAAI4jG,EAAcpiB,QAClBz5E,UAAU,2BACV7H,QAAUsgB,IAAC,IAAAvV,EAAA,QACU,OAAnBR,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,IAApCA,EAAsCqoE,cA7QjC2wB,MACjBf,EAAYzlG,SAASwlG,GAAY,GACjC,MAAMhgF,EAAUzc,KAAKC,UAAU,CAC7B4wD,SACAr3D,GAAI4jG,EAAcpiB,QAClBpC,UAAW,mBACXnkF,MAAOwC,SAASwlG,GAAY,EAC5Bn2E,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAE3C+jE,GAAQ,GACRh/C,YAAW,KACTy6D,EAAYzmB,KAAKr1C,GACjBqgD,GAAQ,EAAM,GACb/7C,EAAM,EAiQO08E,EACK,EACVnkG,SAEDW,cAAA,QAAMT,GAAI4jG,EAAcpiB,QAASz5E,UAAU,eAAcjI,SACvDW,cAAA,KAAGT,GAAI4jG,EAAcpiB,QAAS3rC,MAAM,0BAGxCp1C,cAAA,OACET,GAAI4jG,EAAcpiB,QAClBz5E,UAAU,2BACV7H,QAAUsgB,IAAC,IAAAtV,EAAA,QACU,OAAnBT,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,IAApCA,EAAsCooE,cA1Q/B4wB,MACnBhB,EAAYzlG,SAASwlG,GAAY,GACjC,MAAMhgF,EAAUzc,KAAKC,UAAU,CAC7B4wD,SACAr3D,GAAI4jG,EAAcpiB,QAClBpC,UAAW,mBACXnkF,MAAOwC,SAASwlG,GAAY,EAC5Bn2E,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAE3C+jE,GAAQ,GACRh/C,YAAW,KACTy6D,EAAYzmB,KAAKr1C,GACjBqgD,GAAQ,EAAM,GACb/7C,EAAM,EA8PO28E,EACK,EACVpkG,SAEDW,cAAA,QAAMT,GAAI4jG,EAAcpiB,QAASz5E,UAAU,iBAAgBjI,SACzDW,cAAA,KAAGT,GAAI4jG,EAAcpiB,QAAS3rC,MAAM,+BAI1Cj2C,eAAA,OAAKmI,UAAU,wBAAuBjI,SAAA,CACpCW,cAAA,OACET,GAAI2jG,EAAcniB,QAClBz5E,UACEotE,EAAO,4BAA8B,yBAEvCj1E,QAASA,KAAA,IAAAiL,EAAA,QACY,OAAnBV,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,IAApCA,EAAsCmoE,cAnXzCv4E,WACTq6E,GAAQ,GACRiuB,GAAW,GACX9tB,GAAQ,GACRhD,GAAQ,GACR,MAAMtvD,EAAUzc,KAAKC,UAAU,CAC7B4wD,SACAr3D,GAAI2jG,EAAcniB,QAClBpC,UAAW,eACXnkF,MAAO,OACP6xB,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAE3C+jE,GAAQ,GACRh/C,YAAW,KACTy6D,EAAYzmB,KAAKr1C,GACjBqgD,GAAQ,EAAM,GACb/7C,EAAM,EAmWuD7Y,EAAY,EACjE5O,SACF,SAGDW,cAAA,OACET,GAAI2jG,EAAcniB,QAClBz5E,UACEutE,EAAO,4BAA8B,yBAEvCp1E,QAASA,KAAA,IAAAkL,EAAA,QACY,OAAnBX,QAAmB,IAAnBA,GAAoC,QAAjBW,EAAnBX,EAAqBc,uBAAe,IAAAH,IAApCA,EAAsCkoE,cA5WnCv4E,WACfq6E,GAAQ,GACRiuB,GAAW,GACX9tB,GAAQ,GACRhD,GAAQ,GACR,MAAMtvD,EAAUzc,KAAKC,UAAU,CAC7B4wD,SACAr3D,GAAI2jG,EAAcniB,QAClBpC,UAAW,eACXnkF,MAAO,OACP6xB,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAE3C+jE,GAAQ,GACRh/C,YAAW,KACTy6D,EAAYzmB,KAAKr1C,GACjBqgD,GAAQ,EAAM,GACb/7C,EAAM,EA6VO48E,EACK,EACVrkG,SACF,SAGDW,cAAA,OACET,GAAI2jG,EAAcniB,QAClBz5E,UACEuqE,EAAO,4BAA8B,yBAEvCpyE,QAASA,KAAA,IAAAy0E,EAAA,QACY,OAAnBlqE,QAAmB,IAAnBA,GAAoC,QAAjBkqE,EAAnBlqE,EAAqBc,uBAAe,IAAAopE,IAApCA,EAAsCrB,cAvWnCv4E,WACfq6E,GAAQ,GACRiuB,GAAW,GACX9tB,GAAQ,GACRhD,GAAQ,GACR,MAAMtvD,EAAUzc,KAAKC,UAAU,CAC7B4wD,SACAr3D,GAAI2jG,EAAcniB,QAClBpC,UAAW,eACXnkF,MAAO,OACP6xB,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAE3C+jE,GAAQ,GACRh/C,YAAW,KACTy6D,EAAYzmB,KAAKr1C,GACjBqgD,GAAQ,EAAM,GACb/7C,EAAM,EAwVOgzE,EACK,EACVz6F,SACF,SAGDW,cAAA,OACET,GAAI2jG,EAAcniB,QAClBz5E,UACEq7F,EAAU,wBAA0B,2BAEtCljG,QAASA,KAAA,IAAAylF,EAAA,QACY,OAAnBl7E,QAAmB,IAAnBA,GAAoC,QAAjBk7E,EAAnBl7E,EAAqBc,uBAAe,IAAAo6E,IAApCA,EAAsCrS,cAlWxCv4E,WACVq6E,GAAQ,GACRiuB,GAAW,GACX9tB,GAAQ,GACRhD,GAAQ,GACR,MAAMtvD,EAAUzc,KAAKC,UAAU,CAC7B4wD,SACAr3D,GAAI2jG,EAAcniB,QAClBpC,UAAW,eACXnkF,MAAO,MACP6xB,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAE3C+jE,GAAQ,GACRh/C,YAAW,KACTy6D,EAAYzmB,KAAKr1C,GACjBqgD,GAAQ,EAAM,GACb/7C,EAAM,EAmVO5Y,EACK,EACV7O,SACF,kBAMN,EC7eP,MAAM22C,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAWL0tD,IANY9mF,aAAOvd,IAAPud,CAAmB,CAC1CE,gBAAiB,UACjB,UAAW,CACTA,gBAAiB,aAGDnB,IAOb,IAAD6mE,EAAA2U,EAAA,IAPe,IACnB57F,EAAG,KACHklG,EAAI,WACJ/gD,EAAU,YACV2+B,EAAW,OACX1nB,EAAM,iBACNqnB,GACDriE,EACC,MAAM,MAAE4iC,EAAK,UAAEh4C,EAAS,QAAEmJ,EAAO,SAAE8I,GAAaioF,GAC1C,SAAEhoF,EAAQ,aAAEC,GAAiBF,GAC5Bja,EAAMmE,GAAWT,oBAAS,IAC3B,MAAEu7E,EAAK,OAAElB,GAAW/1E,GACnBuP,EAAOwhE,GAAYr1E,mBACnB,OAALu7E,QAAK,IAALA,GAA2C,QAAtCgF,EAALhF,EAAOxlE,MAAM8H,GAAkB,eAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGzkB,eAAqB,IAAAmnF,OAAtC,EAALA,EAA6Ch1E,SAExC3I,EAAM+9D,GAAW3gE,oBAAS,IAC1B0hG,EAAWC,GAAgB3hG,mBACtB,YAAV6T,IAEK+tF,EAAeC,GAAoB7hG,mBAAS,KAE5C2gF,EAASC,GAAc5gF,mBAAS,CACrC6gF,eAAgB,GAChBC,kBAAmB,KAEfghB,EAAc,OAALvmB,QAAK,IAALA,GAA2C,QAAtC2Z,EAAL3Z,EAAOxlE,MAAM5J,GAAkB,eAAX,OAADA,QAAC,IAADA,OAAC,EAADA,EAAG/S,eAAqB,IAAA87F,OAAtC,EAALA,EAA6CrW,QAC5Dj+E,qBAAU,KACR,IACY,OAAV68C,QAAU,IAAVA,OAAU,EAAVA,EAAYjnC,YAAaA,GACE,eAAjB,OAAVinC,QAAU,IAAVA,OAAU,EAAVA,EAAY2hC,YACZ,EACkB,OAAL7D,QAAK,IAALA,OAAK,EAALA,EAAOxlE,MAAM8H,GAAMA,EAAEghE,WAAsB,OAAVphC,QAAU,IAAVA,OAAU,EAAVA,EAAY04B,aAExDd,EAAmB,OAAV53B,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,OACrB8tF,EAAmC,aAAZ,OAAVlkD,QAAU,IAAVA,OAAU,EAAVA,EAAY5pC,QAE7B,CAEA,MAAMktE,EAA2B,OAATz8E,QAAS,IAATA,OAAS,EAATA,EAAWi3E,MAAMxlE,MACtCqK,GAAuB,YAAdA,EAAKhnB,OAEb2nF,GACFH,EAAW,CACTC,eAA+B,OAAfE,QAAe,IAAfA,OAAe,EAAfA,EAAiBlC,QACjCiC,kBAAkC,OAAfC,QAAe,IAAfA,OAAe,EAAfA,EAAiBx1E,QAExC,GACC,CAACkyC,IACJ,MAAMo4B,EAAqBA,KACzBp1E,GAASnE,EAAK,EAwBhB,OACEW,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CACjCF,eAAA,OAAKmI,UAAW,qCAAqCjI,SAAA,CACnDW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BW,cAAA,QAAAX,SAAOm/C,MAETx+C,cAAA,OAAKsH,UAAW,0BAA+BjI,SAC7CW,cAAA,OACEsH,UAAW,IACTk3C,EAAQ,0BAA4B,yBACnCn/C,SAEDm/C,EAKAr/C,eAAA,OAAKmI,UAAU,iBAAiB7H,QAASs4E,EAAmB14E,SAAA,EAClD,OAAPwjF,QAAO,IAAPA,OAAO,EAAPA,EAASG,oBACR7jF,eAAA,QAAMmI,UAAU,qBAAoBjI,SAAA,CAC1B,OAAPwjF,QAAO,IAAPA,OAAO,EAAPA,EAASG,kBAAkB,OAIhChjF,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QACEsH,UAAWgsE,GACF,OAAPuP,QAAO,IAAPA,OAAO,EAAPA,EAASG,mBACT3jF,SAEDk0E,GAA0B,OAAPsP,QAAO,IAAPA,OAAO,EAAPA,EAASG,0BAjBnChjF,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,OAAK4H,IAAK8uE,MAAOxuE,IAAI,QAAQhK,MAAM,KAAKgC,OAAO,gBAwBzDf,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OACEsH,UAAW,4BACTxC,GAAO,4BACNzF,SAEHW,cAAA,QAAAX,SACEW,cAAA,OACE4H,IACEg8F,EAAYzkD,GAAyBA,GAEvCj3C,IAAI,gBACJhK,MAAM,KACNgC,OAAO,WAIbF,cAAA,OAAKsH,UAAU,oBAAmBjI,WAC/ByF,GAAO9E,cAACmxE,GAAe,MAE1BhyE,eAAA,OACEmI,UAAW,oCACTxC,GAAO,qBACNzF,SAAA,CAEHF,eAAA,OAAAE,SAAA,CACEW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CACLsL,KAAK,SACL5K,QAASomF,EACTnkG,QA1FSwkG,KACrBpgF,YAAW,KACTggF,GAAcD,EAAU,GACvB,KACHG,IACAlgF,YAAW,KAGTg/C,GAAQ,GACRyb,EAAY,CACV1nB,SACAkB,QAASlB,EACTr3D,GAAIykG,EACJrlB,UAAW,YACXnkF,MAAO,cAETqpB,YAAW,KACTg/C,GAAQ,EAAM,GACb,IAAK,GACP,IAAK,MA0EA7iE,cAAA,SACC4jG,EACC5jG,cAAA,QAAAX,SAAM,cAENW,cAAA,QAAAX,SAAM,iBACL,OAELW,cAAA,OAAKsH,UAAU,iCAGnBtH,cAACoiF,GAAgB,CACfE,WAAmB,OAAPO,QAAO,IAAPA,OAAO,EAAPA,EAASE,eACrBhL,mBAAoBA,EACpBz8E,KAAMkjD,EACNs5B,YAAat5E,MAEX,GClIQyK,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,YAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,GAER8Y,QAAS,CACP/tC,UAAW,IAEbgyB,MAAO,CACLlZ,SAAU,WACVjiB,OAAQ,IACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,kBACPgC,OAAQ,KAEV,0BAA2B,CACzB6iC,OAAQ,EACR,mBAAoB,CAClBlE,QAAS,KAEX,iBAAkB,CAChBA,QAAS,GAEX,gBAAiB,CACf5gC,OAAQ,4BAIdo5C,aAAc,CAAC,EACfC,YAAa,CACXn1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACR96B,QAAS,OACTF,WAAY,SACZI,eAAgB,SAChB/e,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9Bc,SAAU,CACRr1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRE,eAAgB,QAChBC,mBAAoB,cAEtBC,cAAe,CACbx1B,SAAU,WACVwlB,KAAM,EACNN,MAAO,EACPK,IAAK,EACL6P,OAAQ,EACRx6B,gBAAiBV,EAAMY,QAAQw5B,OAAOmB,MACtC/Y,QAAS,GACTgZ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCC,WAAY,CACV71B,SAAU,WACV/Y,QAAS,GAAGiT,EAAMwY,QAAQ,QAAQxY,EAAMwY,QAAQ,QAC9CxY,EAAMwY,QAAQ,GAAK,OAGvBojB,YAAa,CACX/3C,OAAQ,EACRhC,MAAO,GACP6e,gBAAiBV,EAAMY,QAAQw5B,OAAOC,MACtCv0B,SAAU,WACVo1B,QAAS,EACT5P,KAAM,kBACNkQ,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAEvCG,MAAO,CACL/W,SAAU,KAEZ/e,KAAM,CACJ7Y,aAAc,IAEhB4uC,IAAK,CACH9uC,UAAW,QAyKA66F,OAlKIA,KAAO,IAADnP,EAAAC,EAAAC,EAAAC,EAAAR,EAAAG,EAAAsP,EAAAC,EAAAC,EAAAC,EAAA3P,EAAAG,EAAAyP,EAAAC,EAAAj6F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAupE,EAAAgR,EAAAuE,EACvB,MAAM,EAAEtjF,GAAMC,eACR,GAAE7G,GAAOyjE,eACT,KAAEh/D,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aAASm8D,GAAiB,CAClEnwE,UAAW,CACTsyC,OAAQ97C,SAASuC,EAAI,IACrBkb,UAAWzd,SAAS6B,aAAaC,QAAQ,MAAO,IAChDswB,YAAa9V,MAEfoB,YAAa,WACbC,6BAA6B,KAGzB,eACJo3D,EAAc,kBACd4D,EAAiB,aACjBvY,EAAY,gBACZhY,EAAe,oBACfp7C,GACElI,qBAAWC,KAET85D,EAAe,OAAJ73D,QAAI,IAAJA,GAAmB,QAAf+wF,EAAJ/wF,EAAM8oF,qBAAa,IAAAiI,OAAf,EAAJA,EAAqBz5F,KAChCmoF,EAAc,OAAJz/E,QAAI,IAAJA,OAAI,EAAJA,EAAM8oF,cAChBlsD,EAAkB,OAAJ58B,QAAI,IAAJA,OAAI,EAAJA,EAAMipE,sBACpB,SAAEizB,GAAaH,GAAwB,OAAJ/7F,QAAI,IAAJA,GAAmB,QAAfgxF,EAAJhxF,EAAM8oF,qBAAa,IAAAkI,OAAf,EAAJA,EAAqBh9E,SACxD,KAAEgoF,GAASD,GAAwB,OAAJ/7F,QAAI,IAAJA,GAAmB,QAAfixF,EAAJjxF,EAAM8oF,qBAAa,IAAAmI,OAAf,EAAJA,EAAqBj9E,SACpD,YAAEooF,GAAgBL,GAAwB,OAAJ/7F,QAAI,IAAJA,GAAmB,QAAfkxF,EAAJlxF,EAAM8oF,qBAAa,IAAAoI,OAAf,EAAJA,EAAqBl9E,SAC3D,cAAEsoF,GAAkBP,GAAwB,OAAJ/7F,QAAI,IAAJA,GAAmB,QAAf0wF,EAAJ1wF,EAAM8oF,qBAAa,IAAA4H,OAAf,EAAJA,EAAqB18E,SAC7D,QAAE8oF,GAAYf,GAAwB,OAAJ/7F,QAAI,IAAJA,GAAmB,QAAf6wF,EAAJ7wF,EAAM8oF,qBAAa,IAAA+H,OAAf,EAAJA,EAAqB78E,SACvD,cAAEwoF,GAAkBT,GAAwB,OAAJ/7F,QAAI,IAAJA,GAAmB,QAAfmgG,EAAJngG,EAAM8oF,qBAAa,IAAAqX,OAAf,EAAJA,EAAqBnsF,QAC7DysF,EAAsB,OAARvE,QAAQ,IAARA,GACG,QADKkE,EAARlE,EAChB71D,OAAO+1D,UAAY,IAAAgE,GACE,QADFC,EADHD,EAEhB/5D,OAAOi2D,UAAc,IAAA+D,OAFG,EAARA,EAGhBh6D,OAAOm2D,IACL,IAAEI,GAAQb,GAAwB,OAAJ/7F,QAAI,IAAJA,OAAI,EAAJA,EAAM8oF,cAAc90E,SAClD,KAAE0oF,GAASX,GAAwB,OAAJ/7F,QAAI,IAAJA,GAAmB,QAAfsgG,EAAJtgG,EAAM8oF,qBAAa,IAAAwX,OAAf,EAAJA,EAAqBtsF,QAEpD4+C,GADS6tB,GAAe,OAAJzgF,QAAI,IAAJA,OAAI,EAAJA,EAAM8oF,cAAc90E,QACxB,OAAPyrE,QAAO,IAAPA,GAAmB,QAAZkR,EAAPlR,EAASp0D,kBAAU,IAAAslE,OAAZ,EAAPA,EAAqB/9B,QAC9BqnB,EAA0B,OAAPwF,QAAO,IAAPA,GAAmB,QAAZqR,EAAPrR,EAASp0D,kBAAU,IAAAylE,OAAZ,EAAPA,EAAqB79B,OACxCqtB,EAASS,MAGT,uCACJxB,EAAsC,0CACtCD,GAAyC,uCACzCohB,IACEx+F,6wBAGE,OAAE0vD,GAAM,YAAE0oB,GAAW,WAAE3+B,IAAewiD,GAC1C7e,GACA1sB,GAGF,OAAK5yD,GAAQuW,EAETva,cAAA,OAAAX,SACEW,cAAC+b,GAAO,MAKVvX,EACKxE,cAACmwC,GAAY,IAIpBnwC,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,qBAAoBjI,SAAA,CAChC2E,GAAY,OAAJA,QAAI,IAAJA,GAAmB,QAAfugG,EAAJvgG,EAAM8oF,qBAAa,IAAAyX,GAAY,QAAZC,EAAnBD,EAAqBl1E,kBAAU,IAAAm1E,GAA/BA,EAAiCvtC,OACxCj3D,cAAAZ,WAAA,IAEAY,cAAA,OAAKsH,UAAU,iBAAgBjI,SAC7BF,eAAA,QAAMmI,UAAU,2BAA0BjI,SAAA,CACxCW,cAAA,QAAMsH,UAAU,sBAAqBjI,SACnCW,cAAA,KAAGsH,UAAU,kCAEftH,cAAA,QAAMsH,UAAU,uBAAsBjI,SACnC8G,EAAE,yDAKXnG,cAAC6sB,GAAM,CACL7oB,KAAMA,EACNy/E,QAASA,EACTvpE,QAAS0mB,EACT/U,QAASA,IAEX1sB,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,EACjB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,OAAjB,EAAnBA,EAAsCw5E,eAClB,OAAnB/5E,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,OAAjB,EAAnBA,EAAsCw5E,YAC/B,OAAP8c,QAAO,IAAPA,OAAO,EAAPA,EAAS9kG,KAAKqS,GACZrO,cAACyhG,GAAM,CACLxjB,iBAAkBA,EAClBt+B,WAAYA,GACZ+hD,IAAKrzF,EACL6L,QAAS0mB,EACTg2B,OAAQA,EACR0nB,YAAaA,SAGC,OAAnBt0E,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,OAAjB,EAAnBA,EAAsCu5E,YAClB,OAAnBh6E,QAAmB,IAAnBA,GAAoC,QAAjBU,EAAnBV,EAAqBc,uBAAe,IAAAJ,OAAjB,EAAnBA,EAAsCq5E,eAClC,OAAJic,QAAI,IAAJA,OAAI,EAAJA,EAAMhkG,KAAI,CAACqS,EAAG7S,IACZwE,cAAC2kG,GAAoB,CACnB9oC,SAAUA,EACV88B,QAAStqF,EACT4vE,iBAAkBA,EAClBt+B,WAAYA,GAEZ9zB,QAASA,EACTyyD,YAAaA,GACb1nB,OAAQA,GAHHp7D,MAOS,OAAnBwO,QAAmB,IAAnBA,GAAoC,QAAjBW,EAAnBX,EAAqBc,uBAAe,IAAAH,GAApCA,EAAsCo5E,aACpB,OAAnB/5E,QAAmB,IAAnBA,GAAoC,QAAjBkqE,EAAnBlqE,EAAqBc,uBAAe,IAAAopE,GAApCA,EAAsC8P,SAC/B,OAAH4c,QAAG,IAAHA,OAAG,EAAHA,EAAK5kG,KAAI,CAACqS,EAAG7S,IACXwE,cAACqiG,GAAG,CACF1iD,WAAY2kC,EAEZhG,YAAagG,EACb1tB,OAAQA,EACRgqC,IAAKvyF,GAHA7S,KAMT,KAEgB,OAAnBwO,QAAmB,IAAnBA,GAAoC,QAAjBk7E,EAAnBl7E,EAAqBc,uBAAe,IAAAo6E,GAApCA,EAAsCnB,aACpB,OAAnB/5E,QAAmB,IAAnBA,GAAoC,QAAjBy/E,EAAnBz/E,EAAqBc,uBAAe,IAAA2+E,GAApCA,EAAsCzF,SAC9B,OAAJ0c,QAAI,IAAJA,OAAI,EAAJA,EAAM1kG,KAAI,CAACqS,EAAG7S,IACZwE,cAAC2jG,GAAI,CAEHjD,KAAMryF,EACNsxC,WAAYA,GACZ2+B,YAAaA,GACb1nB,OAAQA,EACRqnB,iBAAkBA,GALbziF,KAQT,KAEHgoF,GAAiBW,GAAkBsgB,EAAa,GAAI,CAEjD7tC,SACA0nB,eACA3+B,cACAs+B,mBACAj0E,2BAINhK,cAAC82E,GAAc,IACf92E,cAACk9D,GAAY,IACbl9D,cAAC+2E,GAAc,QAEhB,E,0CC1RA,MAAM6tB,GAAsBhpF,IAA4C,IAADipF,EAAAnnB,EAAAonB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAA1C,KAAE7mG,EAAI,aAAE8mG,EAAY,KAAEthG,EAAI,QAAE6nB,GAASjQ,EACvE,MACMS,EAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KAJc,cASdhJ,EAA2B,QAAnB0qF,EAAGlkE,YAAgB,IAAAkkE,OAAA,EAAhBA,EAAkB3jE,eAC7BqkE,EAAsB1mG,aAAaC,QAAQ,MAC3C0mG,EAA4B,OAARrrF,QAAQ,IAARA,OAAQ,EAARA,EAAUlC,MACjCqK,GAAStlB,SAASslB,EAAK/iB,MAAQvC,SAASuoG,MAGpC/0E,EAAiB7G,GAAsBznB,mBAAS,KACjD,EAAEiE,GAAMC,eACPq/F,GAAqBjjG,YAAYqX,KACjC6rF,EAAUC,GAAezjG,oBAAS,IAClC62B,EAAa6sE,GAAkB1jG,oBAAS,IACxCT,EAAQokG,GAAa3jG,mBAAS,CAAE5G,MAAM,EAAO+wB,WAAW,KACxDw6D,EAAUN,GAAerkF,mBAAS,CACvC5G,KAAU,OAAJ0I,QAAI,IAAJA,GAAU,QAAN05E,EAAJ15E,EAAMse,YAAI,IAAAo7D,OAAN,EAAJA,EAAYpiF,KAClB+wB,UAAW/d,OAAOi3F,KA2EdO,EAAWtrG,GACL,KAAVA,QAA0BgF,IAAVhF,GAAiC,OAAVA,EAEzC,OACE2E,eAACoiB,KAAM,CACL/iB,KAAMA,EACNgC,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,MACPgC,OAAQ,OACR,CAACmc,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,EAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAGXmB,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,oBACT/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SAED8G,EAAE,qCAGLnG,cAACV,IAAU,CACTG,QAASA,KACP6lG,IACAK,GAAY,GACZC,GAAe,GACfj8E,EAAmB,KAAK,EACxBtqB,SAEFW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BoC,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChB7c,IAAK,OACLsJ,QAAS,aACT/J,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACf5c,IAAK,OACL5B,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,OACVwL,UAAW,QACXhK,SAAA,CAEFF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAAX,SAAG,QAAO,IAAM,OAAJ2E,QAAI,IAAJA,GAAU,QAAN8gG,EAAJ9gG,EAAMse,YAAI,IAAAwiF,OAAN,EAAJA,EAAYvlG,MAG1BJ,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAAX,SAAG,YAAW,IAAM,OAAJ2E,QAAI,IAAJA,GAAU,QAAN+gG,EAAJ/gG,EAAMse,YAAI,IAAAyiF,OAAN,EAAJA,EAAYnuC,UAG7BkvC,EAAY,OAAJ9hG,QAAI,IAAJA,GAAU,QAANghG,EAAJhhG,EAAMse,YAAI,IAAA0iF,OAAN,EAAJA,EAAYe,WACnB5mG,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAAX,SAAG,cAAa,IAAM,OAAJ2E,QAAI,IAAJA,GAAU,QAANihG,EAAJjhG,EAAMse,YAAI,IAAA2iF,OAAN,EAAJA,EAAYc,YAGjCD,EAAY,OAAJ9hG,QAAI,IAAJA,GAAU,QAANkhG,EAAJlhG,EAAMse,YAAI,IAAA4iF,OAAN,EAAJA,EAAYz3B,QACnBtuE,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAAX,SAAG,WAAU,IAAM,OAAJ2E,QAAI,IAAJA,GAAU,QAANmhG,EAAJnhG,EAAMse,YAAI,IAAA6iF,OAAN,EAAJA,EAAY13B,SAI/BtuE,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAAX,SAAG,iBAAgB,IAAM,OAAJ2E,QAAI,IAAJA,GAAU,QAANohG,EAAJphG,EAAMse,YAAI,IAAA8iF,OAAN,EAAJA,EAAYh2E,eAGnCjwB,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTF,WAAY,SACZzc,IAAK,QACLT,SAAA,CAEFW,cAACgiB,KAAS,CACRgkB,WACEvkC,EAAOnG,MAAQ6K,EAAE,wCAEnB9E,QAAQ,WACR+mB,KAAK,QACLC,WAAY,CACVzoB,GAAI,CAAEG,aAAc,QAEtBH,GAAI,CAAE1B,MAAO,QACbmK,YAAY,SACZwhC,aAAkB,OAAJ7lC,QAAI,IAAJA,GAAU,QAANqhG,EAAJrhG,EAAMse,YAAI,IAAA+iF,OAAN,EAAJA,EAAY/pG,KAC1BsmB,UAAW8jF,EACXnoF,MAAOpX,EAAE,6CACTmC,SAzLiByX,IAC3BwmE,EAAY,IAAKM,EAAUvrF,KAAMykB,EAAE3Y,OAAO5M,QAC1CqrG,GAAW3oE,IAAI,IAAWA,EAAM5hC,MAAM,KAAS,IAyLvC0E,cAACgmG,KAAgB,CACfvmG,QAnMYwmG,KACtBN,GAAaD,EAAS,EAmMZ9lG,GAAI,CACFsmG,aAAc,SACdtnE,OAAQ,UACRhhC,MAAO,UACP,UAAW,CAAEA,MAAO,iBAK1BuB,eAAA,OAAKsB,MAAO,CAAEgc,QAAS,OAAQF,WAAY,SAAUzc,IAAK,QAAST,SAAA,CACjEW,cAACwnB,KAAY,CACXjoB,GAAG,sBACH6oB,KAAK,QACLxoB,GAAI,CAAE1B,MAAO,QACb0jB,UAAWmX,EACXt7B,QAAS0c,EACT8N,eAAiBrnB,GAAiB,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQtF,KACpCuuC,aAAc27D,EACdl9F,SAAUA,CAAC5I,EAAOiwC,IA1MDw2D,EAACzmG,EAAOiwC,KACnC,MAAMn1C,EAAQwC,SAAiB,OAAR2yC,QAAQ,IAARA,OAAQ,EAARA,EAAUpwC,IACjCoqB,EAAmBgmB,GACnB42C,EAAY,IAAKM,EAAUx6D,UAAW7xB,IACtCqrG,GAAW3oE,IAAI,IAAWA,EAAM7Q,WAAW,KAAS,EAuMxC85E,CAAqBzmG,EAAOiwC,GAE9BznB,YAAcC,GACZnoB,cAACgiB,KAAS,IACJmG,EACJ5K,MAAOpX,EAAE,+CACTyb,UAAWmX,MAIjB/4B,cAACgmG,KAAgB,CACfvmG,QA/Ne2mG,KACzBR,GAAgB7sE,EAAY,EA+NlBn5B,GAAI,CACFsmG,aAAc,SACdtnE,OAAQ,UACRhhC,MAAO,UACP,UAAW,CAAEA,MAAO,iBAI1BoC,cAACqkB,KAAa,CAAChI,MAAOA,EAAMhd,SAC1BW,cAACskB,KAAM,CACL1mB,MAAM,UACNgkB,UAA6B,IAnNnB7B,MAAO,IAADsmF,EAC1B,MAAM/qG,EAAe,OAARurF,QAAQ,IAARA,OAAQ,EAARA,EAAUvrF,KACjB+wB,EAAoB,OAARw6D,QAAQ,IAARA,OAAQ,EAARA,EAAUx6D,UAC5B,OACG/wB,KAAa,OAAJ0I,QAAI,IAAJA,GAAU,QAANqiG,EAAJriG,EAAMse,YAAI,IAAA+jF,OAAN,EAAJA,EAAY/qG,OACpB+wB,IAAc/d,OAAOi3F,KACH,OAApB/0E,GAGkB,KAATl1B,QAAJ,CAEP,EAwMoBgrG,GACV7mG,QAtMI8mG,KACd,IAvBqBC,MACrB,MAAMC,EAAqC,KAAzB5f,EAASvrF,KAAK2mB,OAC1BykF,GAAkB7f,EAASx6D,UAGjC,OADAw5E,EAAU,CAAEvqG,KAAMmrG,EAAWp6E,UAAWq6E,MAC/BD,GAAaC,EAAe,EAkBhCF,GACH,OAAO/hG,QAAQD,MAAM,uCAEvB,IAAK,IAADmiG,EAAAC,EACFnB,EAAkB,CAChBj/F,UAAW,CACTqgG,mBAAwB,OAAJ7iG,QAAI,IAAJA,GAAU,QAAN2iG,EAAJ3iG,EAAMse,YAAI,IAAAqkF,OAAN,EAAJA,EAAYpnG,GAChC6vB,YAAiB,OAAJprB,QAAI,IAAJA,GAAU,QAAN4iG,EAAJ5iG,EAAMse,YAAI,IAAAskF,OAAN,EAAJA,EAAYx3E,YACzBprB,KAAM,CACJ1I,KAAc,OAARurF,QAAQ,IAARA,OAAQ,EAARA,EAAUvrF,KAChBmf,UAAmB,OAARosE,QAAQ,IAARA,OAAQ,EAARA,EAAUx6D,cAIxB3lB,MAAMC,IACDA,EAAM3C,MAA6B,qBAArB2C,EAAM3C,KAAKQ,MAC3BC,QAAQD,MAAM,sBAAuBmC,EAAM3C,KAAKwe,SAEhDqB,YAAW,KACTgI,GAAS,GACR,IACL,IAED5kB,OAAOC,IACNzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,GA0KUtH,GAAI,CACF1B,MAAO,OACPkL,QAAS,MACTxL,MAAO,OACPmC,aAAc,MACdkkB,WAAY,QAEd5iB,QAAQ,YAAWhC,SAElB8G,EAAE,+CAKJ,ECjOEkpB,OAzEK1xB,IAAW,IAAD4M,EAAAy0E,EAAAO,EAAAE,EAAAE,EAAAE,EAAAE,EAAAC,EAAAC,EAAAE,EAC5B,MAAO2mB,EAAiBC,GAAsB7kG,oBAAS,IACjD,EAAEiE,GAAMC,eACR,oBAAE4D,GAAwBlI,qBAAWC,KACrCilG,EAAqCA,KACzCD,GAAoBD,EAAgB,EAEtC,OACE9mG,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CACd,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC08F,QACrC9nG,eAAA,OACEmI,UAAW,8BACJ,OAAL3J,QAAK,IAALA,GAAW,QAANqhF,EAALrhF,EAAO2kB,YAAI,IAAA08D,GAAXA,EAAa/nB,OAAS,kBAAoB,oBACzC53D,SAAA,CAEHW,cAAC+d,KAAO,CACNC,MAAO7X,EAAE,iCACT6oB,UAAU,MACV1nB,UAAU,oBACV7H,QAASunG,EAAmC3nG,SAE5CW,cAACknG,KAAgB,CACf5/F,UAAU,oBACV7H,QAASunG,MAGbhnG,cAAA,OAAKsH,UAAU,mBAAkBjI,SAAO,OAAL1B,QAAK,IAALA,GAAW,QAAN4hF,EAAL5hF,EAAO2kB,YAAI,IAAAi9D,OAAN,EAALA,EAAajkF,OAChD0E,cAAA,OAAKsH,UAAU,kBAAiBjI,SAAE,GAAQ,OAAL1B,QAAK,IAALA,GAAW,QAAN8hF,EAAL9hF,EAAO2kB,YAAI,IAAAm9D,OAAN,EAALA,EAAa7oB,cAGpD52D,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OACEmI,UAAW,8BACJ,OAAL3J,QAAK,IAALA,GAAW,QAANgiF,EAALhiF,EAAO2kB,YAAI,IAAAq9D,GAAXA,EAAa1oB,OAAS,kBAAoB,oBACzC53D,SAAA,CAEHW,cAAA,OAAKsH,UAAU,mBAAkBjI,SAAO,OAAL1B,QAAK,IAALA,GAAW,QAANkiF,EAALliF,EAAO2kB,YAAI,IAAAu9D,OAAN,EAALA,EAAavkF,OAChD0E,cAAA,OAAKsH,UAAU,kBAAiBjI,SAAE,GAAQ,OAAL1B,QAAK,IAALA,GAAW,QAANoiF,EAALpiF,EAAO2kB,YAAI,IAAAy9D,OAAN,EAALA,EAAanpB,gBAKxDz3D,eAAA,OAAKmI,UAAU,mCAAkCjI,SAAA,CAC/CW,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCW,cAAA,QAAAX,SAAO8G,EAAE,8BAEXnG,cAAA,OAAKsH,UAAU,uBAAsBjI,SACnCW,cAAA,QAAAX,SAAO8G,EAAE,gCAEXnG,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CW,cAAA,QAAAX,SAAY,OAAL1B,QAAK,IAALA,GAAW,QAANqiF,EAALriF,EAAO2kB,YAAI,IAAA09D,OAAN,EAALA,EAAamnB,cAEtBnnG,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CW,cAAA,QAAAX,SAAY,OAAL1B,QAAK,IAALA,GAAW,QAANsiF,EAALtiF,EAAO2kB,YAAI,IAAA29D,OAAN,EAALA,EAAamnB,mBAGxBpnG,cAAA,OAAKsH,UAAU,kCAAiCjI,SAC9CW,cAAA,OAAKsH,UAAU,wBAAuBjI,SACpCW,cAAA,QAAAX,SAAO,GAAGmO,GAAoB,OAAL7P,QAAK,IAALA,GAAW,QAANwiF,EAALxiF,EAAO2kB,YAAI,IAAA69D,OAAN,EAALA,EAAalpB,OAAQ9wD,WAGlDnG,cAAC4kG,GAAmB,CAClBpmG,KAAMsoG,EACN9iG,KAAMrG,EACN2nG,aAAc0B,EACdn7E,QAASluB,EAAMkuB,cAGlB,EC5EA,MAAMlS,GAAsBzf,GAAG;;;;;qCCA/B,MAAMmtG,GAA4BntG,GAAG;;;;ECsB5C,SAASgH,GAAMvD,GACb,OAAOqC,cAACmB,KAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CAEA,MAAM0e,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KARc,cAmMLmkF,OAtLf,SAAwC1rF,GAAe,IAADrR,EAAA,IAAb,QAAEshB,GAASjQ,EAClD,MAAOpd,EAAMmE,GAAWtE,IAAM6D,UAAS,IAChCqlG,EAAWC,GAAgBnpG,IAAM6D,UAAS,IAC1CulG,EAAcC,GAAmBrpG,IAAM6D,SAAS,KAChDylG,EAAeC,GAAoBvpG,IAAM6D,SAAS,YAClD2lG,EAAgBC,GAAqBzpG,IAAM6D,SAAS,KACrD,oBAAE8H,GAAwB3L,IAAMyD,WAAWC,KAE3CxB,EAAcA,KAClBoC,GAAQ,EAAM,EAUV5B,EAAWwY,cACXitD,EAAmB,4BAA4BpjE,KAAKrC,EAAS6K,WAC5Dm8F,GAA2BvlG,YAAY6kG,IA8B9C,OACErnG,cAAC3B,IAAMkqB,SAAQ,CAAAlpB,SACO,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCy9F,iBACrC7oG,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAACuH,IAAQ,CACP/I,KAAM+oG,EACN//F,iBAAkB,IAClBlH,QA9Ce2nG,CAACvoG,EAAO+H,KAChB,cAAXA,GAGJ+/F,GAAa,EAAM,EA0CenoG,SAE1BW,cAACkB,GAAK,CAACwG,SAAUigG,EAActoG,SAAEooG,MAElCjhC,GACCrnE,eAAA,UACEmI,UAAU,2BACV7H,QAASA,IAAMkD,GAAQ,GAAMtD,SAAA,CAC9B,4BAECW,cAACkoG,KAAqB,OAG1B/oG,eAACoiB,KAAM,CACL/iB,KAAMA,EACN8B,QAASC,EACTC,WAAY,CACVZ,GAAI,CACF6c,QAAS,OACT1c,aAAc,MACd7B,MAAO,MACPgC,OAAQ,OACR,CAACmc,GAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,OAET,CAACme,GAAMyH,YAAYC,KAAK,OAAQ,CAC9B7lB,MAAO,SAGXmB,SAAA,CAEFF,eAAC6kB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBI,gBAAiB,UACjBnf,MAAO,UACPqmB,WAAY,MACZ7a,QAAS,mBACT,CAACiT,GAAMyH,YAAYC,KAAK,OAAQ,CAC9B3a,QAAS,qBAEX/J,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,OACPgC,OAAQ,MACRgkB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SACH,4BAGDW,cAACV,IAAU,CAACG,QAASc,EAAYlB,SAC/BW,cAACmkB,KAAS,CAACvkB,GAAI,CAAEhC,MAAO,gBAG5BoC,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACf5c,IAAK,OACLsJ,QAAS,YACTmT,WAAY,SACZI,eAAgB,UAChBtd,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACf5c,IAAK,OACL5B,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,OACVwL,UAAW,QACXhK,SAAA,CAEFW,cAACgiB,KAAS,CACR1Z,SAAW5I,GAAUooG,EAAkBpoG,EAAM0H,OAAO5M,OACpD4tB,KAAK,QACLC,WAAY,CACVzoB,GAAI,CAAEG,aAAc,MAAO7B,MAAO,SAEpCqB,GAAG,iBACHge,MAAM,iCACNlc,QAAQ,aAEVrB,cAAA,UACES,MAAO,CACLvC,MAAO,OACPgC,OAAQ,OACRH,aAAc,MACd9B,OAAQ,OACR8e,gBAAiB,UACjBmH,WAAY,yBACZnF,WAAY,OACZnhB,MAAO,QACPK,OAAQ,gBACR2gC,OAAQ,WAEVn/B,QAlJKnF,UACnB,GAAIutG,EACF,UACQE,EAAwB,CAC5BvhG,UAAW,CACTxC,KAAM,CACJ,CACE1I,KAAMusG,EACNx7E,UAAWrvB,SAAS6B,aAAaC,QAAQ,YAKjD4oG,EAAgB,uBAChBE,EAAiB,WACjBJ,GAAa,GACbjnG,IACIsrB,GACFA,GAEJ,CAAE,MAAO3kB,GACPwgG,EAAgB,uCAChBE,EAAiB,SACjBJ,GAAa,EACf,CACF,EAyHoCnoG,SACvB,iCAOP,MAGV,ECrJe8oG,OAzDKA,KAAO,IAAD59F,EACxB,MAAM,GAAEhL,GAAOyjE,eACT,oBAAEh5D,GAAwBlI,qBAAWC,MAEzCiC,KAAMokG,EAAc,QACpB7tF,EAAO,QACPsR,GACErR,aAASb,GAAqB,CAChCnT,UAAW,CAAEiU,UAAWzd,SAASuC,EAAI,KACrCmb,YAAa,WACbC,6BAA6B,IAI/B,OAAIJ,EAEAva,cAAA,OAAKS,MAAO,CAAC,EAAEpB,SACbW,cAAC+b,GAAO,MAMZ/b,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAKsH,UAAU,qBAAoBjI,SACb,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsC89F,OACrClpG,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC5CW,cAAA,OACE4H,IAAmB,OAAdwgG,QAAc,IAAdA,OAAc,EAAdA,EAAgBn7B,qBAAqBjgD,IAC1C1lB,UAAU,oBACVY,IAAI,OACJhK,MAAM,MACNgC,OAAO,UAGXF,cAAA,OAAKsH,UAAU,8BAA6BjI,SAC1CW,cAACqmE,GAAsB,CACrBriE,KAAoB,OAAdokG,QAAc,IAAdA,OAAc,EAAdA,EAAgBn7B,qBACtB1G,cAAevmE,cAACsnG,GAA+B,CAAEz7E,QAASA,WAKhE7rB,cAAA,OAAKsH,UAAU,qCAAoCjI,SAClC,OAAd+oG,QAAc,IAAdA,OAAc,EAAdA,EAAgB1sC,kBAAkB1/D,KAAI,CAACsmB,EAAM9mB,IAC5CwE,cAACsoG,GAAc,IAAK9sG,EAAK8mB,KAAMA,EAAMuJ,QAASA,WAIlD,QAEL,E,yCCcP,MAAMyqB,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAEEC,GAAmBL,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEEG,GAAiBP,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAk9BWuxD,OAh9BQlwD,sBAAW,CAAC16C,EAAOwK,KAAS,IAADqgG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAChD,MAAM,EAAE5iG,GAAMC,eACPmyC,GAAgB/1C,YAAYgzC,KAC5B2E,EAASC,GAAc/7C,IAAM6D,YAC9B,WACJgR,EAAU,kBACVkvD,EAAiB,cACjBD,EAAa,WACb6mC,EAAU,QACV5xD,EAAO,WACPwB,EAAU,cACVqwD,EAAa,cACbpwD,EAAa,IACbypB,EAAG,OACHC,EAAM,kBACNte,EAAiB,qBACjBsF,GACEznD,qBAAWC,MACRvH,EAAOkI,GAAYrE,IAAM6D,SAAS,MAKnC,SAAEgnG,EAAQ,SAAEpjG,GAAanI,GAExBiR,EAAYu6F,GAAgBjnG,mBAAS,KACrCknG,EAAWC,GAAgBnnG,oBAAS,IAAIiD,MAAOE,YAC/CskD,EAAcC,GAAmB1nD,mBACtCqT,GAAuB0uC,EAAmBn+C,KAErC+jD,EAAcC,GAAmB5nD,mBACtCkT,GAAuB6uC,EAAmBn+C,KAErCktC,EAASmG,GAAcj3C,sBACvB6wC,EAASmG,GAAch3C,qBACxBg4C,EAAW77C,IAAMg6B,SACjB8qC,EAAY9kE,IAAMg6B,UAEjBixE,GAAkB,KAAEtlG,EAAI,QAAEuW,EAAO,MAAE/V,IAAW8sC,aACnD4d,IAGFpsD,qBAAU,KACJmhD,GACF2G,IACF,GACC,CAAC3G,IAEJ,MAAM2G,GAA4BA,KAChC,IACIjP,EACFsI,EAAkB3nD,WAAW4S,UAAU,EAAG,IAAM,eAAiBpJ,EAE/D2P,EACFwuC,EAAkB3nD,WAAW4S,UAAU,EAAG,IAAM,eAAiBpJ,EAE/DwP,EAAQ2uC,EAAkB3nD,WAAW4S,UAAU,EAAG,IAAM,eAIxDmsC,GAFF4I,EAAkB3nD,WAAW4S,UAAU,EAAG,IAG1C,IAAI/J,KAAKmQ,GAAOjQ,UAZQ,KAYIrI,SAAS8I,EAAU,KAC7Cw1C,EAAU,IAAIn2C,KAAKw2C,GAAet2C,UAEtC,MAAMkkG,EAAa,IAAIpkG,KAAKsQ,GAAmBpQ,UAK/CykD,EAAgBzO,GAEhBnC,EAAWoC,GAEXsO,EAAgB2/C,GAEhBpwD,EAAWowD,GAMXC,GAA6BnuD,EAAUkuD,EAAW,EAG9CC,GAA+BA,CAACnuD,EAAUkuD,KAC9CD,EAAiB,CACf9iG,UAAW,CACTiU,UAAWzd,SAAS6B,aAAaC,QAAQ,MAAO,IAChD8P,WAAYkE,GAAUG,GAAgBgxC,IACtCwlD,UAAWz1F,WAAmB,OAARk1F,QAAQ,IAARA,OAAQ,EAARA,EAAUttB,SAChCniD,WAAY4hB,EACZ3hB,SAAU6vE,EACVxxE,UAAW77B,OAAO4J,IAEpB4U,YAAa,YACb,EAmKJ5X,qBAAU,KACJs0C,KAEAtkC,GAAUG,GAAgBgxC,IAAoBp1C,OAAS,GACC,GAAxDiE,GAAUG,GAAgBgxC,IAAoBp1C,SAE9Cu0D,KAEEtwD,GAAUG,GAAgBgxC,IAAoBp1C,OAAS,GACzDisC,KAEJ,GACC,CAAC1D,IAEJt0C,qBAAU,KACJw/D,GACFxnB,IACF,GACC,CAACwnB,IAEJx/D,qBAAU,KACJq3C,GACFY,IACF,GACC,CAACZ,IAEJ,MAAMY,GAAYA,KAChB,MAAMmC,EAAa,+BAA+B/C,IAC5CgD,EAAe7hB,SAASC,cAAc,KAE5C4hB,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAFI,wBAGjBD,EAAariB,QAOb+d,GAAc,GACdD,EAAW,IACX2pB,EAAO,IACPnoB,EAAW,GAAG,EAmBVgpB,GAAW9oE,UACf,MAAMqpE,EAAaR,EAAUtoC,QAEvB72B,SADei5C,KAAY0mB,IACb9nC,UAAU,mBAExB0mC,EAAOv+D,EAAKzH,MAAM,IAAI,EA6B9B,SAASu+C,KACP,IACEvC,EAAa,CACX/xC,UAAW,CACT60B,MAAO,CAAC+b,EAASkrB,GACjBt+D,KAAMA,EAAK0lG,uBACX96F,WAAYkE,GAAUG,GAAgBgxC,IACtCntC,UAAW5a,OAAO2tD,GAClBnP,WAAYx+C,OAAOytD,GACnBhlB,YAAa9lC,aAAaC,QAAQ,eAClCklC,SAAUnlC,aAAaC,QAAQ,QAC/B67C,aAAc97C,aAAaC,QAAQ,cACnC87C,UAAW/7C,aAAaC,QAAQ,gBAGjC4H,MAAMC,IACLyzC,EAAWzzC,EAAM3C,KAAK2lG,iBAAiB,IAExC1iG,OAAOC,IACNzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,CACF,CAEA,OAnCA00C,8BAAoBzzC,GAAK,MACvB,qBAAMyhG,GACJ/wD,GAAc,QA3CGv+C,WACnB,MAAMs0B,EAAUsrB,EAASrf,QAEnB72B,SADei5C,KAAYruB,IACbiN,UAAU,aAC9B+c,EAAW50C,EAAKzH,MAAM,IAAI,EAwClBu/C,EAGR,MA8BA97C,cAAA,OAAAX,SACGkb,IAAYvW,EACXhE,cAAC+b,GAAO,IAER5c,eAAA,OAAKmI,UAAU,oCAAmCjI,SAAA,CAOhDW,cAACgoD,GAAoB,CACnB7D,gBAAgB,IAChB/C,YAAa,EACbC,YAAY,MAIZliD,eAAAC,WAAA,CAAAC,SAAA,CACO,OAAJ2E,QAAI,IAAJA,KAAM0lG,wBAC8C,KAA/C,OAAJ1lG,QAAI,IAAJA,GAA4B,QAAxBwkG,EAAJxkG,EAAM0lG,8BAAsB,IAAAlB,GAAU,QAAVC,EAA5BD,EAA8BqB,gBAAQ,IAAApB,OAAlC,EAAJA,EAAwC55F,QACxC7O,cAAAZ,WAAA,CAAAC,SACG2zC,GACChzC,cAAA,OAAKmI,IAAK+xC,EAAS76C,SACjBW,cAAA,OAAKsH,UAAU,uCAAsCjI,SACnDW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERwV,MAAO,CACL/H,KAAM9P,EACJ,4HAGJuuC,MACE5hC,GAAUG,GAAgBgxC,IACvBp1C,QAAU,EACT,CACErG,KAAM,WACN+qC,IAAKsW,EACLrW,IAAKmW,EAAe,KACpBhV,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZ,CACErsC,KAAM,YAEd8qC,MAAO,CACLC,IAAK,EACLC,IAAS,OAAJxvC,QAAI,IAAJA,GAA4B,QAAxB0kG,EAAJ1kG,EAAM0lG,8BAAsB,IAAAhB,OAAxB,EAAJA,EAA8B75F,OACnC4kC,YACM,OAAJzvC,QAAI,IAAJA,OAAI,EAAJA,EAAM0lG,uBAAuB76F,QAAS,EACxCmP,MAAO,CACL/H,KAAM9P,EACJ,6HAGJm+D,YAAa,CACX7/C,SAAS,EACTqlF,UAAW,WACT,OAAOC,KAAK3kC,MAAMhxD,QAAQ,EAC5B,IAGJ63C,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,aAEFvY,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,SACVC,cAAe,KAGnBzvB,KAAM,CACJC,eAAgB7gC,GACdvB,GAAUG,GAAgBgxC,IAC1Bn+C,IAGJgvC,QAAS,CACPC,YAAaxgC,GACXzB,GAAUG,GAAgBgxC,KAE5B+lD,cAAe,EACfh1D,aAAc,yBACd2V,YAAa,SAEf5W,OAAY,OAAJ/vC,QAAI,IAAJA,GAA4B,QAAxB2kG,EAAJ3kG,EAAM0lG,8BAAsB,IAAAf,OAAxB,EAAJA,EAA8BkB,SACtC10D,QAAS,CACP1wB,SAAS,YASvBzkB,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAmC,IAC3CjvC,EACC,2HAMVhH,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OAAKmI,IAAKg7D,EAAU9jE,SAClBW,cAAA,OAAKsH,UAAU,uCAAsCjI,SAC9C,OAAJ2E,QAAI,IAAJA,MAAM0lG,wBAEL52F,GAAUG,GAAgBgxC,IAAoBp1C,OAAS,EAwLvD7O,cAAAZ,WAAA,IAtLAY,cAACy/B,KAAG,CACF7/B,GAAI,CACF1B,MAAO,MACPgC,OAAQ,MACRyc,eAAgB,SAChBJ,WAAY,SACZ0tF,WAAY,SACZ5qG,SAEFF,eAAC+qG,KAAU,CAAC1vG,MAAOA,EAAM6E,SAAA,CACvBW,cAACy/B,KAAG,CACF7/B,GAAI,CACFuqG,aAAc,EACdtvC,YAAa,UACbvxD,WAAY,QACZjK,SAEFW,cAACoqG,KAAO,CACN9hG,SA5fPgV,CAAC5d,EAAOiwC,KAC3BjtC,EAASitC,EAAS,EA4fQ,aAAW,uBAAsBtwC,SAEjCW,cAACqqG,KAAG,CACF9sF,MAAOpX,EACL,yGAEF3L,MAAM,UAUZwF,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,UAERwV,MAAO,CACL/H,KAAM,SAERy+B,MAAO,CACLlsC,KAAM,WACN+qC,IAAKR,EACLS,IAAKR,EACL2B,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLC,IAAK,EACLv1B,MAAO,CACL/H,KAAM9P,EACJ,oHAIN8lD,OAAQ,CAAC,WACTnX,QAAS,CACPC,YAAa,iBACb4V,YAAa,SACbq/C,cAAe,EACf5yB,QAAQ,GAEV1jC,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,QAEZkV,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,IAGbsvB,OAAQ,CACNG,eAAgB,EAChBL,OAAQ,CACNpvB,SAAS,EACTqnC,OAAQ,GACRhY,OAAQ,YAIdmB,KAAM,CACJC,eAAgB7gC,GACdvB,GACEG,GAAgBgxC,IAElBn+C,IAGJiuC,OACM,OAAJ/vC,QAAI,IAAJA,GAA4B,QAAxB4kG,EAAJ5kG,EAAM0lG,8BAAsB,IAAAd,OAAxB,EAAJA,EAA8B2B,WAChCp1D,QAAS,CACP1wB,SAAS,iBAkF3BzkB,cAAA,OAAKsH,UAAU,qCAAoCjI,SACjDF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BF,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CACnD8G,EACC,sGACA,IACA2J,GAAgCm0C,GAAmB,OAEvD9kD,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,kHAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,wGAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,kHAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,gHAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,6GAKRhH,eAAC0/C,KAAS,CAAAx/C,SAAA,GACH,OAAJ2E,QAAI,IAAJA,GAA4B,QAAxB6kG,EAAJ7kG,EAAM0lG,8BAAsB,IAAAb,IAA5BA,EAA8B2B,UACvB,OAAJxmG,QAAI,IAAJA,GAA4B,QAAxB8kG,EAAJ9kG,EAAM0lG,8BAAsB,IAAAZ,OAAxB,EAAJA,EAA8B0B,OAAOxuG,KACnC,CAACqS,EAAG7S,KAAG,IAAAivG,EAAAC,EAAAC,EAAAC,EAAA,OACLzrG,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B7D,EAAM,IAETwE,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC3B,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG/S,OAEN0E,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC3B,OAADgP,QAAC,IAADA,KAAGw8F,YACA,GAAI,OAADx8F,QAAC,IAADA,GAAc,QAAbo8F,EAADp8F,EAAGw8F,mBAAW,IAAAJ,GAAS,QAATC,EAAdD,EAAgBjnC,eAAO,IAAAknC,OAAtB,EAADA,EAAyBt2F,QAC1B,UAEF,MAENpU,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BgP,EAAEw8F,YACC,GAAI,OAADx8F,QAAC,IAADA,GAAc,QAAbs8F,EAADt8F,EAAGw8F,mBAAW,IAAAF,GAAO,QAAPC,EAAdD,EAAgBlnC,aAAK,IAAAmnC,OAApB,EAADA,EAAuBx2F,QACxB,UAEF,MAENjV,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5B6U,GAAc,OAAD7F,QAAC,IAADA,OAAC,EAADA,EAAG7T,OAAO,aAEX,KAIzB2E,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SACf,UAGDW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER/+C,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER/+C,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER5/C,eAACy3C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SAAA,CAEb6U,GACK,OAAJlQ,QAAI,IAAJA,GAA4B,QAAxB+kG,EAAJ/kG,EAAM0lG,8BAAsB,IAAAX,OAAxB,EAAJA,EAA8B+B,aAC7B,IAAI,wBASnB3rG,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CACpDW,cAAA,QAAAX,SACEW,cAAA,WAEFA,cAAA,QAAAX,SACG8G,EACC,kHAGJnG,cAAA,QAAAX,SACEW,cAAA,cAIJb,eAAA,OAAKmI,UAAU,gCAA+BjI,SAAA,CAC3C2E,EAAK0lG,uBAAuBG,SAC3B7lG,EAAK0lG,uBAAuBG,SAAS7tG,KAAKsiB,GACxCte,cAAA,OAAKsH,UAAU,gCAiDjBtH,cAAAZ,WAAA,IAED4E,EAAK0lG,uBAAuBqB,SAC3B/qG,cAAA,OAAKsH,UAAU,4BAA2BjI,SACxCF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,8BAA6BjI,SACzC8G,EACC,wHAGJhH,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,iHAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,4HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,0HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,kHAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,6HAKRnG,cAAC6+C,KAAS,CAAAx/C,SACH,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAM0lG,uBAAuBqB,SAAS/uG,KAAKqS,GAC1ClP,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BqW,GAAc,OAADrH,QAAC,IAADA,OAAC,EAADA,EAAGimC,KAEnBt0C,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,cACRG,KAAnB,OAAD6O,QAAC,IAADA,OAAC,EAADA,EAAG+uE,eACgB,QAAnB,OAAD/uE,QAAC,IAADA,OAAC,EAADA,EAAG+uE,cACC,QACA,GAAI,OAAD/uE,QAAC,IAADA,OAAC,EAADA,EAAG+uE,sBAEZp9E,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,cACVG,KAAjB,OAAD6O,QAAC,IAADA,OAAC,EAADA,EAAG28F,aACc,QAAjB,OAAD38F,QAAC,IAADA,OAAC,EAADA,EAAG28F,YACC,QACA,GAAI,OAAD38F,QAAC,IAADA,OAAC,EAADA,EAAG28F,oBAEZhrG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SACnB,QAAR,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGE,SAAuB/O,KAAR,OAAD6O,QAAC,IAADA,OAAC,EAADA,EAAGE,GACjB,QACA,GAAI,OAADF,QAAC,IAADA,OAAC,EAADA,EAAGE,WAEZvO,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SACJ,QAAvB,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG48F,wBACoBzrG,KAAvB,OAAD6O,QAAC,IAADA,OAAC,EAADA,EAAG48F,kBACC,QACA,GAAI,OAAD58F,QAAC,IAADA,OAAC,EAADA,EAAG48F,yCA4BxBjrG,cAAAZ,WAAA,iBAQV,IC5hCV,MAAM4J,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,SAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,OAIJ0X,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPi5B,UAAW,CACT/yB,KAAM8yB,KAAM,SAKZwd,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAqKeutG,OAlKGtvF,IAA+B,IAA9B,KAAE5X,EAAI,SAAE8B,EAAQ,KAAE+xD,GAAMj8C,EACzC,MAAM,MACJlc,EAAK,cACLyiE,EAAa,kBACbnN,EAAiB,OACjB4B,EAAM,aACNwG,EAAY,eACZ2U,GACEjwE,qBAAWC,MACR+C,EAAM+9D,GAAWxkE,IAAM6D,UAAS,IAChCqqF,EAAcC,GAAmBtqF,oBAAS,IAC1C6T,EAAOwhE,GAAYr1E,mBAAkC,GAAzB8B,EAAKwC,UAAU8Q,SAC3CzH,EAAOs7F,GAAYjpG,mBAAS8B,EAAKwC,UAAU4kG,QAC3CC,EAAKC,GAAUppG,mBAAS8B,EAAKwC,UAAU+kG,KAExC9hG,EAAUT,KAEhBlG,qBAAU,KACR+/D,GAAQ,EAAM,GACb,CAACzF,EAAc2U,IAElB,MAAMxxE,EAAcA,KAClBisF,GAAgB,GAChBx3B,GAAkB,EAAM,EA6B1B,MAAMw2C,EAAyBA,KAC7Bhf,GAAgB,GAChBx3B,GAAkB,GAClBmN,EAAc,CACZ,CACE5vD,UAAW,IAAIpN,KACfsN,QAASwxD,mBAAQ,IAAI9+D,KAAQ,GAC7B3J,IAAK,cAEP,EAGJ,OACE2D,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OAAKmI,UAAU,uBAAsBjI,SAAA,CACnCF,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCW,cAAA,QAAAX,SAAO2E,EAAKw6C,UAEdx+C,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCW,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAAC8c,KAAM,CAACsL,KAAK,SAAS5K,QAASzH,EAAOzN,SA/C7BhO,gBACb48D,KAAKC,KAAK,CACdn5C,MAAO,uBACP/H,KAAM,uDACNmhD,KAAM,OACN4a,kBAAkB,EAClBC,mBAAoB,UACpBC,kBAAmB,OACnBC,kBAAmB,sBAClBzrE,MAAM1D,IACHA,EAAOovE,cACTvP,GAAQ,GAQL,IAAI77C,SAAQ,KACjBnD,YAAW,KACTg0C,EAAK7zD,GAAO+R,EAAM,GACjB,IAAK,IATNwhE,GAAUxhE,GACZ,GACA,WAoCE/V,cAAA,OACEsH,UAAU,2BACV7H,QAAS+rG,EAAuBnsG,SAEhCF,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCW,cAAA,QAAMsH,UAAU,yBAAwBjI,SACrCiP,OACC,GACEtK,EAAKzE,IAAMG,EAAMs4D,WAA6B,OAAhBt4D,EAAMwd,OAChCxd,EAAM+N,OACNzJ,EAAKwC,UAAU+kG,OAErBn3F,QAAQ,KAEZpU,cAAA,QAAMsH,UAAU,sBAAqBjI,SAAC,aAG1CW,cAAA,OACEsH,UAAU,6BACV7H,QAAS+rG,EAAuBnsG,SAEhCW,cAACyrG,KAAqB,CACpBC,SAAU,IACVC,OAAQ53F,GAA0B/P,EAAKwC,UAAU4kG,OACjDQ,WAAY,GAAGh8F,GACb,GACE5L,EAAKzE,IAAMG,EAAMs4D,WAA6B,SAAhBt4D,EAAMwd,OAChCxd,EAAM+N,OACNzJ,EAAKwC,UAAU4kG,eAK3BjsG,eAAA,OACEmI,UAAU,6BACV7H,QAAS+rG,EAAuBnsG,SAAA,CAEhCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,MACpCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,aAEtCF,eAAA,OACEmI,UAAU,6BACV7H,QAAS+rG,EAAuBnsG,SAAA,CAQjB,EANdiP,OACC,GACEtK,EAAKzE,IAAMG,EAAMs4D,WAA6B,SAAhBt4D,EAAMwd,OAChCxd,EAAM+N,OACNzJ,EAAKwC,UAAU4kG,SAErBh3F,QAAQ,GAAQ,IAAI,cAI1BjV,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAM+tF,EACNjsF,QAASC,EACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,EAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,EACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZhlB,eAAC8e,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,EAAQuU,MAAM3e,SAAA,CAAC,wBAC3B2E,EAAKw6C,cAIjCx+C,cAACuoG,GAAc,CAEXziG,WAEFojG,SAAUllG,SAGb,E,oBC3MY6Y,cAAQlf,IACzB,MAAM,OAAEkuG,KAAWC,GAAUnuG,EAC7B,OAAOqC,cAACV,IAAU,IAAKwsG,GAAS,GAFfjvF,EAGhBjB,IAAA,IAAC,MAAES,EAAK,OAAEwvF,GAAQjwF,EAAA,MAAM,CACzBmwF,UAAYF,EAA0B,iBAAjB,eACrBviG,WAAY,OACZuuC,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAAa,CAChDiE,SAAU3/B,EAAMy7B,YAAYkE,SAASgwD,WAExC,IAEc,SAASC,GAAgB5uF,GAAY,IAAX,KAAErZ,GAAMqZ,EAC/C,MAAO+B,EAAUC,GAAehhB,YAAe,GA4B/C,OACEc,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCF,eAAA,OAAKmI,UAAU,yDAAwDjI,SAAA,CACrEW,cAAA,OAAKsH,UAAU,8EAA6EjI,SAC1FF,eAAA,QAAMmI,UAAU,mEAAkEjI,SAAA,CAAC,SAC1E,SAGXF,eAAA,OAAKmI,UAAU,+DAA8DjI,SAAA,CAC3EW,cAACyrG,KAAqB,CACpBG,WAAY,GAhCGpxG,EAiCbwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAU4lG,KAAK5xG,MAAM8B,WAhCxE9B,EAAMqU,OAAS,EACT7R,SAASxC,GAAS,GAAM,IACvBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAO,IACxBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAQ,IACzBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAS,IAC1BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAU,IAC3BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAW,IAC5BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAY,IAC7BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAa,IAC9BA,EAAMqU,OAAS,GAChB7R,SAASxC,GAAS,IAAc,SADnC,IAkBCqN,WAAW,UACXwkG,YAAa,GACbV,OAAO,YAETxsG,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAU4lG,KAAK5xG,MAAO,IAAI,QAClE,aAIZ2E,eAAA,OAAKmI,UAAU,uDAAsDjI,SAAA,CACnEF,eAAA,OAAKmI,UAAU,6EAA4EjI,SAAA,CACxF,IAIDW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAA,QAAAX,SACEW,cAAC+d,KAAO,CAACC,MAAM,UAAUgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SAC5CF,eAAA,UAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAU+lG,IAAI/xG,MAAM4Z,QAChE,GACC,IAAI,gBAOjBjV,eAAA,OAAKmI,UAAU,4EAA2EjI,SAAA,CACxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAA,UAAAX,SAAQ,gBAEVW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,WAAWgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SAC7CW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUgmG,IAAIhyG,MAAM4Z,QAChE,GACC,IAAI,gBAOjBjV,eAAA,OAAKmI,UAAU,4EAA2EjI,SAAA,CACvF,IAIDW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,qBAAqBgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SACvDW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUimG,IAAIjyG,MAAM4Z,QAChE,GACC,IAAI,uBA5FE5Z,KAsG3B,CC5GmBqiB,cAAQlf,IACzB,MAAM,OAAEkuG,KAAWC,GAAUnuG,EAC7B,OAAOqC,cAACV,IAAU,IAAKwsG,GAAS,GAFfjvF,EAGhBjB,IAAA,IAAC,MAAES,EAAK,OAAEwvF,GAAQjwF,EAAA,MAAM,CACzBmwF,UAAYF,EAA0B,iBAAjB,eACrBviG,WAAY,OACZuuC,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAAa,CAChDiE,SAAU3/B,EAAMy7B,YAAYkE,SAASgwD,WAExC,IAEc,SAASC,GAAgB5uF,GAAY,IAAX,KAAErZ,GAAMqZ,EAC/C,MAAO+B,EAAUC,GAAehhB,YAAe,GAyB/C,OACEc,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCF,eAAA,OAAKmI,UAAU,yDAAwDjI,SAAA,CACrEW,cAAA,OAAKsH,UAAU,8EAA6EjI,SAC1FW,cAAA,QAAMsH,UAAU,mEAAkEjI,SAAC,aAIrFF,eAAA,OAAKmI,UAAU,+DAA8DjI,SAAA,CAC3EW,cAACyrG,KAAqB,CACpBY,YAAa,GACbT,WAAY,GA/BGpxG,EAgCbwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAUkmG,KAAKlyG,MAAM8B,WA/BxE9B,EAAMqU,OAAS,EACT7R,SAASxC,GAAS,GAAM,IACvBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAO,IACxBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAQ,IACzBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAS,IAC1BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAU,IAC3BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAW,IAC5BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAY,IAC7BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAa,SADlC,IAmBCqN,WAAW,UAEX8jG,OAAO,YAETxsG,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUkmG,KAAKlyG,MAAO,IAAI,iBAK9E2E,eAAA,OAAKmI,UAAU,uDAAsDjI,SAAA,CACnEW,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,UAAUgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SAC5CW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUmmG,IAAInyG,MAAM4Z,QAChE,GACC,IAAI,eAOjBpU,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,WAAWgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SAC7CW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUomG,IAAIpyG,MAAM4Z,QAChE,GACC,IAAI,eAOjBpU,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,qBAAqBgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SACvDW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUqmG,IAAIryG,MAAM4Z,QAChE,GACC,IAAI,sBAzFE5Z,KAmG3B,CC3HmBqiB,cAAQlf,IACzB,MAAM,OAAEkuG,KAAWC,GAAUnuG,EAC7B,OAAOqC,cAACV,IAAU,IAAKwsG,GAAS,GAFfjvF,EAGhBjB,IAAA,IAAC,MAAES,EAAK,OAAEwvF,GAAQjwF,EAAA,MAAM,CACzBmwF,UAAYF,EAA0B,iBAAjB,eACrBviG,WAAY,OACZuuC,WAAYx7B,EAAMy7B,YAAYC,OAAO,YAAa,CAChDiE,SAAU3/B,EAAMy7B,YAAYkE,SAASgwD,WAExC,IAEc,SAASC,GAAgB5uF,GAAY,IAAX,KAAErZ,GAAMqZ,EAC/C,MAAO+B,EAAUC,GAAehhB,YAAe,GA0B/C,OACEc,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCF,eAAA,OAAKmI,UAAU,yDAAwDjI,SAAA,CACrEW,cAAA,OAAKsH,UAAU,8EAA6EjI,SAC1FW,cAAA,QAAMsH,UAAU,mEAAkEjI,SAAC,aAIrFF,eAAA,OAAKmI,UAAU,+DAA8DjI,SAAA,CAC3EW,cAACyrG,KAAqB,CACpBG,WAAY,GA/BGpxG,EAgCbwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAUsmG,KAAKtyG,MAAM8B,WA/BxE9B,EAAMqU,OAAS,EACT7R,SAASxC,GAAS,GAAM,IAEvBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAO,IACxBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAQ,IACzBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAS,IAC1BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAU,IAC3BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAW,IAC5BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAY,IAC7BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAa,SADlC,IAkBC6xG,YAAa,GACbV,OAAO,UACP9jG,WAAW,YAEb1I,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUsmG,KAAKtyG,MAAO,IAAI,iBAK9E2E,eAAA,OAAKmI,UAAU,uDAAsDjI,SAAA,CACnEW,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,UAAUgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SAC5CW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUumG,IAAIvyG,MAAM4Z,QAChE,GACC,IAAI,eAOjBpU,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,WAAWgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SAC7CW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUwmG,IAAIxyG,MAAM4Z,QAChE,GACC,IAAI,eAOjBpU,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EW,cAAC+d,KAAO,CAACC,MAAM,qBAAqBgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SACvDW,cAAA,UAAAX,SACEF,eAAA,QAAAE,SAAA,CACG2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAUymG,IAAIzyG,MAAM4Z,QAChE,GACC,IAAI,sBAzFE5Z,KAmG3B,CC3He,SAASyxG,GAAgBrwF,GAAY,IAAX,KAAE5X,GAAM4X,EAC/C,MAAOwD,EAAUC,GAAehhB,IAAM6D,UAAS,IACxCgrG,EAAQC,GAAa9uG,IAAM6D,SAAS,KACpCs8C,EAAO4uD,GAAY/uG,IAAM6D,YAOzBmrG,EAAiBC,GAAsBjvG,IAAM6D,SAClD8B,EAAKkoG,4BAA4BqB,cAAcn5F,QAAQ,IAGzDtR,qBAAU,KACOkB,EAAKkoG,4BAA4BqB,cAAcn5F,QAAQ,GAMtCo5F,eAAe,QALtB,CACvBC,sBAAuB,EACvBC,sBAAuB,EACvBC,aAAa,GAE0D,GAExE,CAAC3pG,IAEJ,MAAM4pG,EAAgB,CACpB,CAAEtyG,KAAM,KAAMuyG,GAAI,6BAClB,CAAEvyG,KAAM,MAAOwyG,IAAK,+BACpB,CAAExyG,KAAM,MAAOyyG,IAAK,gCACpB,CAAEzyG,KAAM,MAAO0yG,IAAK,iCACpB,CAAE1yG,KAAM,MAAO2yG,IAAK,KAGhBC,EAAmBnuF,IACvB,IAAIzkB,EAAOykB,EAAE3Y,OAAO+mG,UACpB,MAAMC,EAAiB,OAAJpqG,QAAI,IAAJA,OAAI,EAAJA,EAAMkoG,4BAA4BC,YAAY3lG,UACjE4mG,EAAS9xG,GACT,IAAK,MAAM+S,KAAK+/F,EACV//F,IAAM/S,IACRgyG,EAAmBc,EAAW//F,GAAG7T,OACjCozG,EAAc5xG,KAAKqyG,SACJ7uG,IAAT6uG,EAAEhgG,IACJ8+F,EAAUkB,EAAEhgG,GACd,IAGN,EAGF,OACElP,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BW,cAAA,OAAKsH,UAAU,6EAA4EjI,SACzFF,eAAA,UAAAE,SAAA,CAAQ,kBAAgBnD,OAAa,OAANgxG,QAAM,IAANA,OAAM,EAANA,EAAQltF,oBAEzChgB,cAAA,OAAKsH,UAAU,0DAAyDjI,SACtEW,cAAA,QAAAX,SAAOrC,SAASqwG,GAAiBj5F,QAAQ,OAE3CjV,eAAA,OAAKmI,UAAU,0BAAyBjI,SAAA,CACtCW,cAAC+d,KAAO,CAACC,MAAM,GAAGgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SACrCW,cAAA,OACEsH,WACEk3C,IAAUovD,EAAc,GAAGtyG,KACvB,yBACA,iCAHK,KAKXmE,QAASyuG,EAAgB7uG,SAExBuuG,EAAc,GAAGtyG,SAGtB0E,cAAC+d,KAAO,CAACC,MAAM,GAAGgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SACrCW,cAAA,OACEsH,WACEk3C,IAAUovD,EAAc,GAAGtyG,KACvB,yBACA,iCAHK,KAKXmE,QAASyuG,EAAgB7uG,SAExBuuG,EAAc,GAAGtyG,SAGtB0E,cAAC+d,KAAO,CAACC,MAAM,GAAGgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SACrCW,cAAA,OACEsH,WACEk3C,IAAUovD,EAAc,GAAGtyG,KACvB,yBACA,iCAHK,KAKXmE,QAASyuG,EAAgB7uG,SAExBuuG,EAAc,GAAGtyG,SAGtB0E,cAAC+d,KAAO,CAACC,MAAM,GAAGgR,UAAU,MAAMs9E,OAAK,EAAAjtG,SACrCW,cAAA,OACEsH,WACEk3C,IAAUovD,EAAc,GAAGtyG,KACvB,yBACA,iCAHK,KAKXmE,QAASyuG,EAAgB7uG,SAExBuuG,EAAc,GAAGtyG,SAGtB0E,cAAA,OACEsH,WACEk3C,IAAUovD,EAAc,GAAGtyG,KACvB,yBACA,iCAHK,KAKXmE,QAASyuG,EAAgB7uG,SAExBuuG,EAAc,GAAGtyG,YAK5B,C,qBC3HO,MAAMgzG,GAAYA,CAACC,EAAQC,KAE9B,MAAMC,EAAU,IAAItpG,KAAKopG,GACnBG,EAAU,IAAIvpG,KAAKqpG,GAGnBG,EAAWF,EAAQx/F,gBAAkBy/F,EAAQz/F,cAC7C2/F,EAAYH,EAAQz/F,aAAe0/F,EAAQ1/F,WAC3C6/F,EAAUJ,EAAQ1/F,YAAc2/F,EAAQ3/F,UAG9C,OAAO4/F,GAAYC,GAAaC,CAAO,ECIrC74D,GAAa/yB,aAAY,CAC7BhG,QAAS,CACPnT,QAAS,CACPqZ,KAAM8yB,KAAM,MAEdC,UAAW,CACTC,MAAO,UACPhzB,KAAM,UACNizB,KAAM,UACNC,aAAc,WA8DLy4D,OAzDf,SAAgBlzF,GAAY,IAAX,KAAE5X,GAAM4X,EACvB,MAAM,QAAEmzF,EAAO,WAAEC,GAAeltG,qBAAWC,MACpCktG,EAAYC,GAAiB7wG,IAAM6D,SAASiD,KAAKwR,MAAM,IAAIxR,OAkBlE,OAhBArC,qBAAU,UACKtD,IAATwE,GACFgrG,GAAW,IAAI7pG,MAAOE,UACxB,GACC,CAACrB,IAaFhE,cAACq9C,KAAuB,CAACC,MAAOC,KAAcC,OAAQC,KAASp+C,SAC7DF,eAACu+C,KAAI,CAACC,WAAS,EAACC,QAAQ,SAAQv+C,SAAA,CAC9BW,cAACV,IAAU,CAAC1B,MAAM,OAAO6B,QARlB0vG,KACX,MAAMC,EAAWnrC,mBAAQ8qC,GAAU,GACnCC,EAAWI,EAAS/pG,UAAU,EAMahG,SACrCW,cAAC+9C,KAAW,MAEd/9C,cAACqkB,KAAa,CAAChI,MAAO25B,GAAW32C,SAC/BW,cAACg+C,KAAU,CACTC,QAAQ,cACRC,iBAAiB,EACjBC,WAAW,MACX5+C,GAAG,qBACHge,MAAM,QACNs3B,OAAO,gBACPr6C,MAAOu0G,EACPzmG,SAAW5I,GAAUsvG,EAAW7pG,KAAKwR,MAAMjX,IAC3C0+C,eAAa,EACbxgD,MAAM,UACNygD,oBAAqB,CACnB,aAAc,mBAInBiwD,GAAWS,EAASE,GACnBjvG,cAACV,IAAU,CAAC1B,MAAM,OAAOgkB,UAAU,EAAKviB,SACtCW,cAACu+C,KAAY,MAGfv+C,cAACV,IAAU,CAAC1B,MAAM,OAAO6B,QAtCpB4vG,KACX,MAAM1wC,EAAWsF,mBAAQ8qC,EAAS,GAClCC,EAAWrwC,EAASt5D,UAAU,EAoCehG,SACrCW,cAACu+C,KAAY,UAMzB,EClEwBhI,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAEqBJ,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEmBJ,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAgHWs4D,OA9GgB1zF,IAA8B,IAA7B,UAAEy5E,EAAS,SAAEvvF,GAAU8V,EACrD,MAAM,OAACg7C,EAAM,cAAE0+B,EAAa,QAAEyZ,GAAYjtG,qBAAWC,KAErDe,qBAAU,KACRwyF,GAAc,EAAK,GAClB,IAEH,MAAO96F,EAAOkI,GAAYR,sBACnBqzF,EAAOC,GAAYtzF,mBAAS,GAEnCY,qBAAU,KACRwyF,GAAc,EAAK,GAClB,IAEH,MAGM,KAAEtxF,EAAI,QAAEuW,GAAYC,aAAS40C,GAAa,CAC9C5oD,UAAW,CACTowD,OAAQA,EACRn9B,WAAYglC,GAAMswC,GAASxxC,MAC3B7jC,SAAU+kC,GAAMswC,GAASvxC,IACzBzlC,UAAWjyB,GAEb4U,YAAa,cAGR45B,EAAGi7D,GAAQrtG,mBAAS,IAE3B,OAAIqY,IAAYvW,EACPhE,cAAAZ,WAAA,IAIPD,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDW,cAAA,OAAKsH,UAAU,mBAAkBjI,SACjCW,cAAC8uG,GAAO,CAAC9qG,KAAMA,MAGa,IAA3BA,EAAKyxF,WAAW5mF,OACf7O,cAAAZ,WAAA,IAOAY,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERyjD,OAAQ,CAAC,WAETjuC,MAAO,CACLq1B,MAAO,OACPp9B,KAAM,oBACJjS,EAAKyxF,WAAWC,IAAM1xF,EAAKyxF,WAAWE,mBAAmBvhF,QAAQ,GAAKmhF,UAG1EhhD,SAAU,CACRlB,MAAO,OACPp9B,KAAM,IAER+uD,cAAe,CACb4wB,gBAAiB,CACfnxE,SAAS,IAGbiwB,MAAO,CACLlsC,KAAM,YAER8qC,MAAO,CACLt1B,MAAO,CACL/H,KAAM,KAGVk+B,OAAQ,CACN1vB,SAAS,GAEXivB,YAAa,CACXK,OAAQ,CACN8hD,YAAa,EACblxB,WAAY,CACVlgD,SAAS,EACTowB,OAAQ,mBAKdC,QAAS,CACPE,aAAc,wDACdwvB,YAAa,wFAGfzwB,OAAQ,CACN,CACEz4C,KAAM,QACNw6F,cAAc,EACd9xF,KAAU,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMyxF,WAAWC,WAM7B,ECvJH,MAAM8Z,GAAkB3yF,KAAOoT,MAAM;;;;;;;;;EAUjBpT,KAAOoT,MAAM;;;;;EAOTpT,KAAOgI,GAAG;;;;;;;;;;EAYfhI,KAAOjc,MAAM;;;EC3BxB,SAAS6uG,GAAW7zF,GAAgC,IAA/B,QAAEne,EAAO,MAAEjD,EAAK,SAAE8N,GAAUsT,EAC9D,OACE5b,cAACwvG,GAAe,CAACh1G,MAAOA,EAAO8N,SAAUA,EAASjJ,SACjD5B,EAAQzB,KAAK4E,GACZZ,cAAA,UAA2BxF,MAAOoG,EAAOpG,MAAM6E,SAC5CuB,EAAO2c,OADG3c,EAAOpG,UAM1B,CCmBwB+7C,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAEqBJ,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEmBJ,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAuIW04D,OArIuB9zF,IAA8B,IAA7B,UAAEy5E,EAAS,SAAEvvF,GAAU8V,EAC5D,MAAM,WAAE1I,EAAU,OAAE0jD,EAAM,cAAE0+B,GAAkBxzF,qBAAWC,KACzDe,qBAAU,KACRwyF,GAAc,EAAM,GACnB,IACH,MAAO3rC,EAAcC,GAAmB1nD,mBACtCqT,GAAuBrC,EAAYpN,KAE9B+jD,EAAcC,GAAmB5nD,mBACtCkT,GAAuBlC,EAAYpN,KAE9B8I,EAAYu6F,GAAgBjnG,mBAAS,KACrCknG,EAAWC,GAAgBnnG,oBAAS,IAAIiD,MAAOE,YAC/C2tC,EAASmG,GAAcj3C,sBACvB6wC,EAASmG,GAAch3C,sBACvB1H,EAAOkI,GAAYR,sBACnBqzF,EAAOC,GAAYtzF,mBAAS,KAC5B5D,EAAgBC,GAAqBF,IAAM6D,SAAS,KACpDkU,EAAMu5F,GAAWztG,mBAASgU,KAA0BE,MACrDw5F,GAAc,IAAIzqG,MAAO8J,cACzB4gG,EAAc,IAId,KAAE7rG,EAAI,QAAEuW,GAAYC,aAAS40C,GAAa,CAC9C5oD,UAAW,CACTowD,OAAQA,EACRxgD,KAAMpZ,SAASoZ,GACf2hB,UAAWjyB,GAEb4U,YAAa,cAER45B,EAAGi7D,GAAQrtG,mBAAS,IAE3B,GAAIqY,IAAYvW,EACd,OAAOhE,cAAAZ,WAAA,IAQT,IAAK,IAAIiP,EAAI,KAAMA,GAAKuhG,EAAavhG,IACxB,OAAXwhG,QAAW,IAAXA,KAAa7oG,KAAK,CAChBuW,MAAOrhB,OAAOmS,GACd7T,MAAO8T,OAAOD,KAIlB,OACElP,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDW,cAAA,OAAKsH,UAAU,mBAAkBjI,SAC/BW,cAACmsB,GAAM,CACL1uB,QAAoB,OAAXoyG,QAAW,IAAXA,OAAW,EAAXA,EAAa92B,UACtBv+E,MAAO8D,EACPgK,SAlBoB5I,IAC1BnB,EAAkBmB,EAAM0H,OAAO5M,OAC/Bm1G,EAAQjwG,EAAM0H,OAAO5M,MAAM,MAmBG,IAA3BwJ,EAAKyxF,WAAW5mF,OACf7O,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAkC,qBAI/Cp1C,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERyjD,OAAQ,CAAC,WAETjuC,MAAO,CACLq1B,MAAO,OACPp9B,KAAM,oBACJjS,EAAKyxF,WAAWC,IACZ1xF,EAAKyxF,WAAWE,mBAAmBvhF,QAAQ,GAC3CmhF,UAGRhhD,SAAU,CACRlB,MAAO,OACPp9B,KAAM,IAER+uD,cAAe,CACb4wB,gBAAiB,CACfnxE,SAAS,IAGbiwB,MAAO,CACLlsC,KAAM,YAER8qC,MAAO,CACLt1B,MAAO,CACL/H,KAAM,KAGVk+B,OAAQ,CACN1vB,SAAS,GAEXivB,YAAa,CACXK,OAAQ,CACN8hD,YAAa,EACblxB,WAAY,CACVlgD,SAAS,EACTowB,OAAQ,mBAKdC,QAAS,CACPE,aACE,wDACFwvB,YACE,wFAGJzwB,OAAQ,CACN,CACEz4C,KAAM,MACNw6F,cAAc,EACd9xF,KAAMA,EAAKyxF,WAAWC,WAM5B,ECpLK,SAASoa,GAAUl0F,GAAc,IAAb,SAAC9V,GAAS8V,EAC3C,MAAOphB,EAAOkI,GAAYrE,WAAe,KAMzC,OACE2B,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE1B,MAAO,OAAQgC,OAAQ,MAAO+pG,WAAY,SAAU5qG,SAC7DF,eAAC+qG,KAAU,CAAC1vG,MAAOA,EAAM6E,SAAA,CACvBW,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEuqG,aAAc,EAAGtvC,YAAa,WAAYx7D,SACnDF,eAACirG,KAAO,CAAC9hG,SARIgV,CAAC5d,EAAOiwC,KAC3BjtC,EAASitC,EAAS,EAOqB,aAAW,uBAAsBtwC,SAAA,CAChEW,cAACqqG,KAAG,CAAC9sF,MAAM,kBAAkB/iB,MAAM,MACnCwF,cAACqqG,KAAG,CAAC9sF,MAAM,kBAAkB/iB,MAAM,MACnCwF,cAACqqG,KAAG,CAAC9sF,MAAM,qBAAkB/iB,MAAM,WAGvCwF,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACsvG,GAAsB,CAACxpG,SAAUA,MAEpC9F,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACo1F,GAA8B,CAACtvF,SAAUA,MAE5C9F,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAAC+vG,GAAuB,CAACjqG,SAAUA,UAK7C,CCiEekqG,OA7FMp0F,IAA8B,IAA7B,UAAEy5E,EAAS,SAAEvvF,GAAU8V,EAC3C,MAAM,OAACg7C,EAAM,QAAEm4C,GAAYjtG,qBAAWC,MAEhC,KAAEiC,EAAI,QAAEuW,GAAYC,aAAS60C,GAAyB,CAC1D7oD,UAAW,CACTowD,OAAQA,EACRn9B,WAAYglC,GAAMswC,GAASxxC,MAC3B7jC,SAAU+kC,GAAMswC,GAASvxC,IACzBzlC,UAAWjyB,GAEb4U,YAAa,aAGf,OAAIH,IAAYvW,EACPhE,cAAAZ,WAAA,IAIPY,cAAA,OAAKsH,UAAU,mDAAkDjI,SACzB,IAArC2E,EAAKisG,qBAAqBphG,OACzB7O,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAkC,qBAI/Cp1C,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,IACVq4C,gBAAiB,IAGrBx7D,MAAO,CACL/H,KAAM,8BACNo9B,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAKv2C,SAAS,GAAGgH,EAAKisG,qBAAqBC,iBAC3C18D,IAAKx2C,SAAS,GAAGgH,EAAKisG,qBAAqB5uB,eAC3CzsC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CAELt1B,MAAO,CACL/H,KAAM,YAGV6+B,QAAS,CACP6V,YAAa,MAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAQ/vC,EAAKisG,qBAAqBE,UAClCn2B,WAAY,CACVC,cAAe,CACbp8E,SAAU,eAOlB,ECFKuyG,OAzFGx0F,IAA8B,IAA7B,UAAEy5E,EAAS,SAAEvvF,GAAU8V,EACxC,MAAM,OAAEg7C,EAAM,QAAEm4C,GAAYjtG,qBAAWC,MAEjC,KAAEiC,EAAI,QAAEuW,GAAYC,aAAS80C,GAAsB,CACvD9oD,UAAW,CACTowD,OAAQA,EACRn9B,WAAYglC,GAAMswC,GAASxxC,MAC3B7jC,SAAU+kC,GAAMswC,GAASvxC,IACzBzlC,UAAWjyB,GAEb4U,YAAa,aAEf,OAAIH,IAAYvW,EACPhE,cAAAZ,WAAA,IAIPY,cAAA,OAAKsH,UAAU,mDAAkDjI,SAC9D2E,EAAKisG,qBACJjwG,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAkC,qBAI/Cp1C,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,MAGdnjB,MAAO,CACL/H,KAAM,+BACNo9B,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAKv2C,SAAS,GAAGgH,EAAKqsG,sBAAsBH,iBAC5C18D,IAAKx2C,SAAS,GAAGgH,EAAKqsG,sBAAsBhvB,eAC5CzsC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CAELt1B,MAAO,CACL/H,KAAM,aAGV6+B,QAAS,CACP6V,YAAa,MAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAQ/vC,EAAKqsG,sBAAsBF,UACnCn2B,WAAY,CACVC,cAAe,CACbp8E,SAAU,aAMhB,ECKKyyG,OA1FI10F,IAA8B,IAA7B,UAAEy5E,EAAS,SAAEvvF,GAAU8V,EACzC,MAAM,OAAEg7C,EAAM,QAAEm4C,GAAYjtG,qBAAWC,MAEjC,KAAEiC,EAAI,QAAEuW,GAAYC,aAAS+0C,GAAuB,CACxD/oD,UAAW,CACTowD,OAAQA,EACRn9B,WAAYglC,GAAMswC,GAASxxC,MAC3B7jC,SAAU+kC,GAAMswC,GAASvxC,IACzBzlC,UAAWjyB,GAEb4U,YAAa,aAGf,OAAIH,IAAYvW,EACPhE,cAAAZ,WAAA,IAGPY,cAAA,OAAKsH,UAAU,mDAAkDjI,SAC9D2E,EAAKisG,qBACJjwG,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAkC,qBAI/Cp1C,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,IACVq4C,gBAAiB,IAGrBx7D,MAAO,CACL/H,KAAM,mCACNo9B,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAKv2C,SAAS,GAAGgH,EAAKusG,qBAAqBL,iBAC3C18D,IAAKx2C,SAAS,GAAGgH,EAAKusG,qBAAqBlvB,eAC3CzsC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CAELt1B,MAAO,CACL/H,KAAM,UAGV6+B,QAAS,CACP6V,YAAa,MAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAQ/vC,EAAKusG,qBAAqBJ,UAClCn2B,WAAY,CACVC,cAAe,CACbp8E,SAAU,aAMhB,ECtFK,SAAS2yG,GAAa50F,GAAgB,IAAf,SAAE9V,GAAU8V,EAChD,MAAOphB,EAAOkI,GAAYrE,WAAe,KAMzC,OACE2B,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE1B,MAAO,OAAQ+rG,WAAY,QAAS1gG,aAAc,MAAOlK,SAClEF,eAAC+qG,KAAU,CAAC1vG,MAAOA,EAAM6E,SAAA,CACvBW,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEuqG,aAAc,EAAGtvC,YAAa,WAAYx7D,SACnDF,eAACirG,KAAO,CAAC9hG,SARIgV,CAAC5d,EAAOiwC,KAC3BjtC,EAASitC,EAAS,EAOqB,aAAW,uBAAsBtwC,SAAA,CAChEW,cAACqqG,KAAG,CAAC9sF,MAAM,QAAQ/iB,MAAM,MACzBwF,cAACqqG,KAAG,CAAC9sF,MAAM,UAAU/iB,MAAM,MAC3BwF,cAACqqG,KAAG,CAAC9sF,MAAM,WAAW/iB,MAAM,WAIhCwF,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACswG,GAAU,CAACxqG,SAAUA,MAExB9F,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACgwG,GAAY,CAAClqG,SAAUA,MAE1B9F,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACowG,GAAS,CAACtqG,SAAUA,UAK/B,CCrBA,MAAMwwC,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAEE3tC,GAAYC,cAAYoT,IAAK,CACjCshC,UAAW,CACTlhC,QAAS,OACTve,MAAO,MACPoL,WAAY,QAEdmnG,MAAO,CACLh0F,QAAS,OACTC,cAAe,MACfpT,WAAY,YAGVstC,GAAmBL,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEEG,GAAiBP,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAyGW05D,OAvGW90F,IAA6C,IAAD+0F,EAAAC,EAAAC,EAAA,IAA3C,OAAEj6C,EAAM,KAAEvyD,EAAI,qBAAEysG,GAAsBl1F,EAC/D,MAAMgvD,EAAkB,CACtBC,YAAQ,KACRC,aAAc,KACdC,QAAS,MAEXC,OAAOC,OAAOL,GACd,MAAM,WACJ13D,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,KACT0H,EAAUT,MACV,EAAE7C,GAAMC,eACR,KAAEpC,GAASwW,aAASo1C,GAAiB,CACzCgG,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACR71D,SAAU6pE,EAAgBvmE,IAASumE,EAAgBG,QACnDkmC,SAAU/0G,OAAOuiE,GAAMswC,GAASxxC,QAElC7iD,YAAa,aAKf,OAFAo2F,EAAqB9sG,GAGnBhE,cAAAZ,WAAA,CAAAC,SACEW,cAAC0+C,KAAK,CAACp3C,UAAWmC,EAAQk0C,UAAUt+C,SAClCW,cAACy+C,KAAc,CAACpL,MAAM,SAAQh0C,SAC5BF,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAC5B8G,EACC,kJAGJnG,cAACs2C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAC5B8G,EACC,6JAGJnG,cAACs2C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAC5B8G,EACC,2JAGJnG,cAACs2C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAC5B8G,EACC,mJAGJnG,cAACs2C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAC5B8G,EACC,8JAKRhH,eAAC0/C,KAAS,CAAAx/C,SAAA,CACH,OAAJ2E,QAAI,IAAJA,GAA2B,QAAvB2sG,EAAJ3sG,EAAMmtG,6BAAqB,IAAAR,GAAS,QAATC,EAA3BD,EAA6BS,eAAO,IAAAR,OAAhC,EAAJA,EAAsCS,aAAar1G,KAClD,CAACqS,EAAG7S,IACF2D,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAAAj3C,SAAG,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGimC,IACrBn1C,eAACm3C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAAA,CAC3B,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG+uE,aAAa,UAEnBj+E,eAACm3C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAAA,CAC3B,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG28F,WAAW,UAEjB7rG,eAACm3C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAAA,CAAG,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGE,EAAE,UACtCpP,eAACm3C,GAAe,CAAC46D,MAAM,SAAQ7xG,SAAA,CAC3B,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGw8F,YAAY,eAMxB1rG,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CAAAv3C,SAAC,UAClBW,cAAC42C,GAAgB,CAACjrC,UAAU,KAAKozC,MAAM,QACvC/+C,cAAC42C,GAAgB,CAACjrC,UAAU,KAAKozC,MAAM,QACvC5/C,eAACy3C,GAAgB,CAACjrC,UAAU,KAAKozC,MAAM,MAAK1/C,SAAA,CACrC,OAAJ2E,QAAI,IAAJA,GAA2B,QAAvB6sG,EAAJ7sG,EAAMmtG,6BAAqB,IAAAN,OAAvB,EAAJA,EAA6Blb,mBAAmB0b,aAAa,SAIhErxG,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,yBAOjB,ECrIMx2B,aAAO6hC,KAAP7hC,EAAcjB,IAAA,IAAC,MAAES,GAAOT,EAAA,MAAM,CACzCmB,gBAAwC,SAAvBV,EAAMY,QAAQ6hE,KAAkB,UAAY,UAC1DziE,EAAM4tF,WAAWqH,MACpBloG,QAASiT,EAAMwY,QAAQ,GACvBrY,UAAW,SACX5e,MAAOye,EAAMY,QAAQhH,KAAKigC,UAC3B,IAmGcq7D,OAjGSl0F,IAAsC,IAArC,UAAEg4E,EAAS,SAAEvvF,EAAQ,OAAE8wD,GAAQv5C,EACtD,MAAM,WAAEnK,EAAU,WAAEs+F,EAAU,cAAElc,GAAkBxzF,qBAAWC,MACtD4nD,EAAcC,GAAmB1nD,mBAASqT,GAAuBrC,EAAYpN,KAC7E+jD,EAAcC,GAAmB5nD,mBAASkT,GAAuBlC,EAAYpN,KAC7EtL,EAAOkI,GAAYR,sBACpB,KAAE8B,EAAI,QAAEuW,GAAYC,aAASg1C,GAAiC,CAClEhpD,UAAW,CAAEowD,UACbl8C,YAAa,aAMf,OAJA5X,qBAAU,KACRwyF,GAAc,EAAK,GAClB,IAEC/6E,IAAYvW,EACPhE,cAAC+b,GAAO,IAIf/b,cAACuoB,WAAQ,CAAAlpB,SACPW,cAACy/B,KAAG,CACF7/B,GAAI,CACF6xG,SAAU,EACVpoG,UAAW,EACX0T,gBAAiB,wBACjB1d,SAEFF,eAACu+C,KAAI,CACHC,WAAS,EACT9oB,QAAS,EACTj1B,GAAI,CAAE8xG,GAAI,KAAMC,GAAI,QAAStyG,SAAA,CAE7BW,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EAAEnqB,SAENW,cAAC4xG,GAAS,CAAC5tG,KAAMA,MAEnBhE,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EAAEnqB,SAENW,cAAC6xG,GAAe,CAAC7tG,KAAMA,MAEzBhE,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EAAEnqB,SAENW,cAAC8xG,GAAe,CAAC9tG,KAAMA,MAEzBhE,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EAAEnqB,SAENW,cAAC+xG,GAAe,CAAC/tG,KAAMA,MAEzBhE,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ5pB,GAAI,CAAEM,OAAQ,SAAUb,SAExBW,cAAC8vG,GAAU,CAAChqG,SAAUA,OAER,IAAf0rG,EACCxxG,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ5pB,GAAI,CAAEM,OAAQ,SAAUb,SAExBW,cAACwwG,GAAa,CAAC1qG,SAAUA,MAG3B9F,cAAAZ,WAAA,UAIG,ECrHf,MAAM4J,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,SAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,OAIJm1B,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OACEnI,cAAC0zD,KAAK,CACJ7N,UAAU,KACV19C,IAAKA,KACDxK,GAGV,IAsIes5E,OAlIEr7D,IAAwC,IAADrR,EAAA,IAAtC,OAAEqsD,EAAM,KAAEt7D,EAAI,SAAEwK,EAAQ,MAAE04C,GAAO5iC,EAEjD,MAAM,KAAE5X,EAAI,QAAEuW,GAAYC,aAASg1C,GAAiC,CAClEhpD,UAAW,CAAEowD,UACbl8C,YAAa,cAET,cAAEynD,EAAa,kBAAEnN,EAAiB,UAAED,EAAS,SAAEi9C,EAAQ,mBAAEC,EAAkB,sBAAEC,EAAqB,mBAAEC,EAAkB,oBAAEnoG,GAAwBlI,qBAAWC,MAC1JwqF,EAAcC,GAAmBtqF,oBAAS,IAC1CkwG,EAAiBC,GAAsBnwG,oBAAS,IAChDowG,EAAaC,GAAkBrwG,oBAAS,GACzCuH,EAAUT,KAEVzI,GADW83B,mBACG93B,KAClBisF,GAAgB,GAChBx3B,GAAkB,GAClBi9C,EAAmB,GACnBC,EAAsB,GACtBC,EAAmBhtG,KAAKwR,MAAM,IAAIxR,MAAQ,GAsC5C,OAAIoV,IAAYvW,EACPhE,cAAAZ,WAAA,IAGPD,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OACEM,UAA4B,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCioG,YApBtBhH,MAC7ByG,EAAmB,GACnBD,EAASlsG,GACTivD,EAAU6B,GACV41B,GAAgB,GAChBx3B,GAAkB,GAClBmN,EAAc,CACZ,CACE5vD,UAAW,IAAIpN,KACfsN,QAASwxD,mBAAQ,IAAI9+D,KAAQ,GAC7B3J,IAAK,cAEP,GASE8L,UAAU,uBAAsBjI,SAAA,CAEhCW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,OAAKsH,UAAU,oBAAmBjI,SAChCF,eAAA,QAAAE,SAAA,CAAM,kBAA0B,KAAVm/C,EAAuBoY,EAASpY,SAG1Dx+C,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCF,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCW,cAAA,QAAMsH,UAAU,yBAAwBjI,SAAE2E,EAAKkoG,4BAA4BqB,cAAcn5F,QAAQ,KACjGpU,cAAA,QAAMsH,UAAU,sBAAqBjI,SAAC,aAI1CW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAACyrG,KAAqB,CACpBC,SAAU,IACVW,YAAa,GACbV,OAAO,wBACP9jG,WAAW,0BACX+jG,WAAY,GA7DGpxG,GA8DZwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAU4lG,KAAK5xG,MAAQwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAUkmG,KAAKlyG,MAAQwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAUsmG,KAAKtyG,OAAO8B,WA7DlN9B,EAAMqU,OAAS,EACT7R,SAASxC,GAAS,GAAM,IACvBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAO,IACxBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAQ,IACzBA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAS,IAC1BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAU,IAC3BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAW,IAC5BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAY,IAC7BA,EAAMqU,OAAS,EAChB7R,SAASxC,GAAS,IAAa,SADlC,QAmDH2E,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,MACpCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,cAEtCF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACxC2E,EAAKkoG,4BAA4BC,YAAY3lG,UAAU4lG,KAAK5xG,MAAQwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAUkmG,KAAKlyG,MAAQwJ,EAAKkoG,4BAA4BC,YAAY3lG,UAAUsmG,KAAKtyG,MAAM,eAG/M2E,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAM+tF,EACNjsF,QAASC,EACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,EAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,EACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZhlB,eAAC8e,KAAU,CACT5c,QAAQ,KACRiG,UAAWmC,EAAQuU,MAAM3e,SAAA,CAC1B,gBACem/C,EAAM,eAAaoY,UAKvC52D,cAACuxG,GACC,CACAzrG,SAAUA,EACV8wD,OAAQA,UAtGSp8D,KAyGpB,ECzEQi4G,OAhFQ72F,IAAmC,IAAlC,KAAE5X,EAAI,QAAE+S,EAAO,UAAED,GAAW8E,EAClD,MAAM,EAAEzV,GAAMC,eACPwI,EAAYu6F,GAAgBjnG,mBAAS,KACrC8wC,EAASmG,GAAcj3C,sBACvB6wC,EAASmG,GAAch3C,qBAGxBwwG,EAAe37F,EAAU,KAG/B,OACE/W,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,UAERwV,MAAO,CACL/H,KAAM,SAERy+B,MAAO,CACLlsC,KAAM,WACN+qC,IAAKz8B,EACL08B,IAAKk/D,EACL/9D,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLC,IAAK,EACLv1B,MAAO,CACL/H,KAAM9P,EACJ,oHAIN8lD,OAAQ,CAAC,WACTnX,QAAS,CACPC,YAAa,iBACb4V,YAAa,SACbq/C,cAAe,EACf5yB,QAAQ,GAEV1jC,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,QAEZkV,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,IAGbsvB,OAAQ,CACNG,eAAgB,EAChBL,OAAQ,CACNpvB,SAAS,EACTqnC,OAAQ,GACRhY,OAAQ,YAIdmB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,OAAI,EAAJA,EAAM2uG,iBAAiBpI,eAG/B,ECAKqI,OA9Eah3F,IAAmC,IAADi3F,EAAAC,EAAA,IAAjC,KAAE9uG,EAAI,QAAE+S,EAAO,UAAED,GAAW8E,EACvD,MAAM82F,EAAe37F,EAAU,MAEzB,EAAE5Q,GAAMC,cACd,OACEpG,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLu+D,QAAS,CACPC,YAAY,GAEdxqG,KAAM,UAERyjD,OAAQ,CAAC,WAETjuC,MAAO,CACLq1B,MAAO,OACPp9B,KAAM,0BAGRs+B,SAAU,CACRlB,MAAO,OACPp9B,KAAM,IAER+uD,cAAe,CACb4wB,gBAAiB,CACfnxE,SAAS,IAGbiwB,MAAO,CACLlsC,KAAM,WACN+qC,IAAKz8B,EACL08B,IAAKk/D,EACL/9D,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLt1B,MAAO,CACL/H,KAAM,IAERs9B,IAAK,GAEPY,OAAQ,CACN1vB,SAAS,GAEXivB,YAAa,CACXK,OAAQ,CACN8hD,YAAa,EACblxB,WAAY,CACVlgD,SAAS,EACTowB,OAAQ,mBAKdC,QAAS,CACPE,aAAc,wDACdwvB,YAAa,wFAEfvvB,KAAM,CACJC,eAAgB,KAElBnB,OAAQ,CACN,CACEz4C,KAAM,gBACNw6F,cAAc,EACd9xF,KAAU,OAAJA,QAAI,IAAJA,GAAsB,QAAlB6uG,EAAJ7uG,EAAM2uG,wBAAgB,IAAAE,GAAa,QAAbC,EAAtBD,EAAwBhJ,SAAS,UAAE,IAAAiJ,OAA/B,EAAJA,EAAqC9uG,WAK/C,EC3EV,MAAMsyC,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAaEG,IAXmBP,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEmBJ,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,OAsEWi8D,OApEejvG,IAAU,IAADwT,EAAA07F,EAAAC,EAAAC,EAAAC,EACrC,MAAM,EAAEltG,GAAMC,cACd,OACEjH,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OAAKsH,UAAU,wCAAuCjI,SACpDF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,OAAMjI,SAAE8G,EAAE,wGACzBhH,eAACw/C,KAAK,CAAC,cAAY,mBAAkBt/C,SAAA,CACnCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,iHACnCnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,4HACnCnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,0HACnCnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,uHAGvCnG,cAAC6+C,KAAS,CAAAx/C,SACH,OAAJ2E,QAAI,IAAJA,GAAU,QAANwT,EAAJxT,EAAMA,YAAI,IAAAwT,GAAkB,QAAlB07F,EAAV17F,EAAYm7F,wBAAgB,IAAAO,OAAxB,EAAJA,EAA8B1I,OAAOxuG,KAAKqS,GACzClP,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,UAChCW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE,GAAI,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGw8F,YAAYrnC,QAAQpvD,QAAQ,WACnEpU,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE,GAAI,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAGw8F,YAAYpnC,MAAMrvD,QAAQ,WACjEpU,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE,GAAI,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG7T,MAAM4Z,QAAQ,0BAOjEjV,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDW,cAAA,QAAAX,SACEW,cAAA,WAEFA,cAAA,QAAAX,SAAO8G,EAAE,kHACTnG,cAAA,QAAAX,SACEW,cAAA,cAGJA,cAAA,OAAKsH,UAAU,wCAAuCjI,SACpDF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,iCAAgCjI,SAAE8G,EAAE,wHACnDhH,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,iHACnCnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,4HACnCnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,0HACnCnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,wHACnCnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE8G,EAAE,uHAGvCnG,cAAC6+C,KAAS,CAAAx/C,SACL,OAAJ2E,QAAI,IAAJA,GAAU,QAANmvG,EAAJnvG,EAAMA,YAAI,IAAAmvG,GAAkB,QAAlBC,EAAVD,EAAYR,wBAAgB,IAAAS,GAAU,QAAVC,EAA5BD,EAA8BrI,gBAAQ,IAAAsI,OAAlC,EAAJA,EAAwCr3G,KAAKqS,GAC1ClP,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAEnD,OAAOwZ,GAAarH,EAAEimC,MACvDt0C,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAE,GAAI,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG+uE,qBACvCj+E,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAAC,IAAE,GAAI,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG28F,oBACxC7rG,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAAC,IAAE,GAAI,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG48F,0BACxC9rG,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAAG,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG48F,iBAAiB,2BAOhE,ECkCQqI,OA7GW13F,IAA6B,IAA5B,SAAEstF,EAAQ,SAAEpjG,GAAU8V,EAC/C,MAAM,WACJ1I,EAAU,sBACVk2C,EAAqB,mBACrBD,EAAkB,kBAClBlF,GACEniD,qBAAWC,KACT+U,EAAY1B,GAAuB6uC,EAAmBn+C,GACtDiR,EAAUxB,GAAuB0uC,EAAmBn+C,GAAY,MAC/DytG,EAAWC,GAAgBtxG,mBAAS4U,IACpC28F,EAASC,GAAcxxG,mBAAS6U,GACjCvR,EAAW0jG,EAAS1jG,UAYnBmtG,GAAkB,KAAE3uG,EAAI,QAAEuW,EAAO,MAAE/V,IACxC8sC,aAAa6d,IAEfrsD,qBAAU,KACJmhD,GACF0vD,GACF,GACC,CAAC1vD,IAEJ,MAAM0vD,EAAeA,KACnBH,EAAavvD,EAAkB5+C,WAC/BquG,EAAWzvD,EAAkB5+C,UAAY,QACzCmkG,GAA8B,EAG1BA,EAA+BA,KACnCmJ,EAAiB,CACfnsG,UAAW,CACTV,SAAU5J,OAAOyJ,KAAKC,iBAAiBC,kBAAkBC,UACzDN,SAAUA,EACVsR,UAAWmtC,EAAkB5+C,UAC7B0R,QAASktC,EAAkB5+C,UAAY,QAEzCqV,YAAa,YACb,EAqBJ,OAAIH,EACKva,cAAC+b,GAAO,IAIf5c,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OAAKsH,UAAU,sBAAqBjI,SAalCW,cAACgoD,GAAoB,CACnB7D,gBAAgB,IAChB/C,YAAa,EACbC,YAAY,QAIhBrhD,cAAC4yG,GAAmB,CAClB5uG,KAAMA,EACN+S,QAASktC,EAAkB5+C,UAAY,OACvCyR,UAAWmtC,EAAkB5+C,YAE/BrF,cAACyyG,GAAc,CACbzuG,KAAMA,EACN+S,QAASktC,EAAkB5+C,UAAY,OACvCyR,UAAWmtC,EAAkB5+C,YAE/BrF,cAACizG,GAAoB,CAACjvG,KAAMA,MAC3B,EClGP,MAAMgF,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,SAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,EACNzgC,SAAU,UACV,CAACwe,EAAMyH,YAAYC,KAAK,OAAQ,CAAElmB,SAAU,aAI1C41D,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IA8Jes5E,OA1JEr7D,IAAkC,IAADg4F,EAAAC,EAAAtpG,EAAAupG,EAAAC,EAAAC,EAAAC,EAAAzpG,EAAA,IAAhC,KAAExG,EAAI,QAAE6nB,EAAO,SAAE/lB,GAAU8V,EAC3C,MAAM,EAAEzV,GAAMC,eACR,MACJ1G,EAAK,cACLyiE,EAAa,kBACbnN,EAAiB,WACjBC,EAAU,cACVpc,EAAa,oBACb7uC,EAAmB,qBACnBs9C,GACExlD,qBAAWC,MACRwqF,EAAcC,GAAmBtqF,oBAAS,GAC3CuH,EAAUT,KACV2sD,EAAWt9B,mBAEXjJ,EAAkB,OAAJprB,QAAI,IAAJA,GAAU,QAAN4vG,EAAJ5vG,EAAMkwG,YAAI,IAAAN,GAAY,QAAZC,EAAVD,EAAYvkF,kBAAU,IAAAwkF,OAAlB,EAAJA,EAAwBzkF,YAQtC7uB,EAAcA,KAClBisF,GAAgB,GAChBx3B,GAAkB,EAAM,EAS1B,OACE71D,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAAA,OACEM,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsC4pG,YAVf3I,MAC7Bhf,GAAgB,GAChBx3B,GAAkB,GAClB1N,EAAqB,IAAIniD,KAAO,GAW5BmC,UAAU,uBAAsBjI,SAAA,CAEhCW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,OAAKsH,UAAU,oBAAmBjI,SAChCW,cAAA,QAAAX,SAAW,OAAJ2E,QAAI,IAAJA,OAAI,EAAJA,EAAMw6C,YAGjBx+C,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCF,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCW,cAAA,QAAMsH,UAAU,yBAAwBjI,SACrCiP,OACC,IACM,OAAJtK,QAAI,IAAJA,OAAI,EAAJA,EAAMzE,KAAMG,EAAMs4D,WAA6B,OAAhBt4D,EAAMwd,OACjCxd,EAAM+N,OACF,OAAJzJ,QAAI,IAAJA,GAAe,QAAX8vG,EAAJ9vG,EAAMwC,iBAAS,IAAAstG,OAAX,EAAJA,EAAiBvI,OAEvBn3F,QAAQ,KAEZpU,cAAA,QAAMsH,UAAU,sBAAqBjI,SAAC,aAG1CW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAACyrG,KAAqB,CACpBC,SAAU,IACVC,OAAQ53F,GAA8B,OAAJ/P,QAAI,IAAJA,GAAe,QAAX+vG,EAAJ/vG,EAAMwC,iBAAS,IAAAutG,OAAX,EAAJA,EAAiB3I,OACnDQ,WAAY,GAAGh8F,GACb,IACM,OAAJ5L,QAAI,IAAJA,OAAI,EAAJA,EAAMzE,KAAMG,EAAMs4D,WAA6B,SAAhBt4D,EAAMwd,OACjCxd,EAAM+N,OACF,OAAJzJ,QAAI,IAAJA,GAAe,QAAXgwG,EAAJhwG,EAAMwC,iBAAS,IAAAwtG,OAAX,EAAJA,EAAiB5I,eAK7BjsG,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,MACpCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,aAEtCF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CAO1B,EANdiP,OACC,IACM,OAAJtK,QAAI,IAAJA,OAAI,EAAJA,EAAMzE,KAAMG,EAAMs4D,WAA6B,SAAhBt4D,EAAMwd,OACjCxd,EAAM+N,OACF,OAAJzJ,QAAI,IAAJA,GAAe,QAAXiwG,EAAJjwG,EAAMwC,iBAAS,IAAAytG,OAAX,EAAJA,EAAiB7I,SAEvBh3F,QAAQ,GAAQ,IAAI,cAI1BjV,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAM+tF,EACNjsF,QAASC,EACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,EAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,EACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC3W,UAAWmC,EAAQuU,MAAM3e,SAClC,IAAIR,aAAaC,QAAQ,oBAAoBqH,EAC5C,qHACO,OAAJnC,QAAI,IAAJA,OAAI,EAAJA,EAAMw6C,UAEO,OAAnBx0C,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsC4pG,UACrCj1G,eAACy6D,KAAM,CAACC,QAAM,EAAAx6D,SAAA,CACZW,cAAC85D,KAAa,CACZr6D,QAASA,IAAMk2D,EAAS96B,QAAQ+uE,kBAChCj5E,QAAS3wB,cAAC+5D,KAAY,IACtBC,gBAAgB,MAChBp8D,MAAM,UAASyB,SAEd8G,EACC,2GAGJnG,cAACi6D,KAAQ,CACPr6D,GAAI,CACFhC,MAAO,OACPmlC,OAAS1mB,GAAUA,EAAM0mB,OAAOo3B,OAAS,GAE3C37D,KAAMy2D,EACNx1D,QAASw1D,EAAW51D,SAEpBW,cAACwoB,KAAgB,CAAC5qB,MAAM,iBAG1B,UAGS,cAAhBwxB,EACCpvB,cAACszG,GAAiB,CAACpK,SAAUllG,EAAM8B,SAAUA,IAE7C9F,cAACuoG,GAAc,CAEXziG,WAEFojG,SAAUllG,EACVmE,IAAKwtD,SAIV,EClIP,MAAMrf,GAAkBC,cAAYl6B,IAAK,CACvCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,OANU04C,CAQpBI,MAEEC,GAAmBL,cAAYl6B,IAAK,CACxCm6B,KAAM,CACJz5B,gBAAiB,YACjBnf,MAAOye,EAAMY,QAAQw5B,OAAOC,OAE9BlqB,KAAM,CACJ3uB,SAAU,GACVkhB,WAAY,WAPSw3B,CASrBI,MAEEG,GAAiBP,cAAYl6B,IAAK,CACtCnT,KAAM,CACJ,qBAAsB,CACpB6T,gBAAiBV,EAAMY,QAAQC,OAAO65B,WAHrBR,CAMnBS,MAu4BWq9D,OAr4BSh8D,sBAAW,CAAC16C,EAAOwK,KAAS,IAADmsG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACjD,MAAM,EAAElwG,GAAMC,eACPmyC,GAAgB/1C,YAAY+yC,KAC7B,WACJriC,EAAU,kBACVkvD,EAAiB,eACjBC,EAAc,cACdF,EAAa,WACb6mC,EAAU,cACVC,EAAa,QACb7xD,EAAO,WACPwB,EAAU,cACVC,EAAa,OACb0pB,EAAM,IACND,EAAG,qBACHpe,EAAoB,wBACpBmD,IACEvlD,qBAAWC,MACRu0G,GAAeC,IAAmBr0G,mBAAS,KAC3CgY,GAASg0B,IAAchsC,oBAAU,IACjCs0G,GAAM5c,IAAW13F,oBAAS,GAC3Bg4C,GAAW77C,IAAMg6B,SACjB8qC,GAAY9kE,IAAMg6B,UAClB,UAAEg9D,GAAS,SAAEvvF,IAAanI,GACzBw8C,GAASC,IAAc/7C,IAAM6D,YAE7BynD,GAAcC,IAAmB1nD,mBACtCqT,GAAuBrC,EAAYpN,MAE9B+jD,GAAcC,IAAmB5nD,mBACtCkT,GAAuBlC,EAAYpN,MAE9B8I,GAAYu6F,IAAgBjnG,mBAAS,KACrCknG,GAAWC,IAAgBnnG,oBAAS,IAAIiD,MAAOE,YAC/C2tC,GAASmG,IAAcj3C,sBACvB6wC,GAASmG,IAAch3C,sBAEvBu0G,IAAoB,KAAEzyG,GAAI,QAAEuW,GAAO,MAAE/V,KAAW8sC,aACrDkB,IAGF1vC,qBAAU,KACJohD,GACF0G,IACF,GACC,CAAC1G,IAEJ,MAAM0G,GAA4BA,KAAO,IAADpG,EAAAG,EAAAqa,EAAAC,EAAAC,EAAAC,EAAA+E,EAAAC,EAAAuyC,EAAAzkG,EAAAG,EAAAgyC,EACtC,IAEIzI,GACqB,QAAvB6I,EAAAN,EAAqB,UAAE,IAAAM,GAAW,QAAXG,EAAvBH,EAAyBjyC,iBAAS,IAAAoyC,GAAY,QAAZqa,EAAlCra,EAAoCroD,kBAAU,IAAA0iE,OAAvB,EAAvBA,EAAgD9vD,UAAU,EAAG,KAC7D,eACApJ,GAEE2P,GACqB,QAAvBwpD,EAAA/a,EAAqB,UAAE,IAAA+a,GAAS,QAATC,EAAvBD,EAAyBxsD,eAAO,IAAAysD,GAAY,QAAZC,EAAhCD,EAAkC5iE,kBAAU,IAAA6iE,OAArB,EAAvBA,EAA8CjwD,UAAU,EAAG,KAC3D,eACApJ,GAEEwP,GACqB,QAAvB4uD,EAAAhgB,EAAqB,UAAE,IAAAggB,GAAW,QAAXC,EAAvBD,EAAyB3xD,iBAAS,IAAA4xD,GAAY,QAAZuyC,EAAlCvyC,EAAoC7nE,kBAAU,IAAAo6G,OAAvB,EAAvBA,EAAgDxnG,UAAU,EAAG,KAC7D,eAEEmsC,GACa,QAAfppC,EAAA,IAAI9M,KAAKmQ,UAAM,IAAArD,OAAA,EAAfA,EAAiB5M,WAjBO,KAiBKrI,SAAS8I,GAAU,IAE9Cw1C,EAAiC,QAA1BlpC,EAAG,IAAIjN,KAAKw2C,UAAc,IAAAvpC,OAAA,EAAvBA,EAAyB/M,UAEvC,MAAMkkG,EAAwC,QAA9BnlD,EAAG,IAAIj/C,KAAKsQ,UAAkB,IAAA2uC,OAAA,EAA3BA,EAA6B/+C,UAGhDykD,GAAgBzO,GAEhBnC,GAAWoC,GAEXsO,GAAgB2/C,GAEhBpwD,GAAWowD,GAIXoN,GAA6Bt7D,EAAUkuD,EAAW,EAG9CoN,GAA+BA,CAACt7D,EAAUkuD,KAC9CkN,GAAmB,CACjBjwG,UAAW,CACToI,WAAYkE,GAAUG,GAAgBixC,IACtCzpC,UAAWzd,SAASq4F,GAAW,IAC/B57D,WAAY4hB,EACZ3hB,SAAU6vE,EACVxxE,UAAW77B,OAAO4J,KAEpB4U,YAAa,YACb,EAyEJ5X,qBAAU,KACJkB,KACFuyG,GAAgBvyG,IAChB41F,IAAQ,GACV,GACC,CAAC51F,KAiLJlB,qBAAU,KACJs0C,KAEAtkC,GAAUG,GAAgBixC,IAAuBr1C,OAAS,GACC,GAA3DiE,GAAUG,GAAgBixC,IAAuBr1C,SAEjDu0D,KAEEtwD,GAAUG,GAAgBixC,IAAuBr1C,OAAS,GAC5DisC,KAEJ,GACC,CAAC1D,IAEJt0C,qBAAU,KACJw/D,GACFxnB,IACF,GACC,CAACwnB,IAEJx/D,qBAAU,KACJq3C,IACFY,IACF,GACC,CAACZ,KAEJ,MAAMY,GAAYA,KAChB,MAAMmC,EAAa,+BAA+B/C,KAC5CgD,EAAe7hB,SAASC,cAAc,KAE5C4hB,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAFI,qCAGjBD,EAAariB,QAOb+d,GAAc,GACdD,EAAW,IACX2pB,EAAO,IACPnoB,GAAW,GAAG,EAUVgpB,GAAW9oE,UACf,MAAMqpE,EAAaR,GAAUtoC,QAEvB72B,SADei5C,KAAY0mB,IACb9nC,UAAU,aAC9B0mC,EAAOv+D,EAAKzH,MAAM,IAAI,EASxBq/C,8BAAoBzzC,GAAK,MACvB,wBAAMyuG,GAEJ/9D,GAAc,QAvBGv+C,WACnB,MAAMs0B,EAAUsrB,GAASrf,QAEnB72B,SADei5C,KAAYruB,IACbiN,UAAU,aAC9B+c,EAAW50C,EAAKzH,MAAM,IAAI,EAoBlBu/C,EACR,MAGF,MAAMwF,IAAc,IAAIn8C,MAAO4J,UACzB+H,GAAmC,QAA1Bw9F,EAAGpwD,EAAqB,UAAE,IAAAowD,GAAW,QAAXC,EAAvBD,EAAyB/hG,iBAAS,IAAAgiG,OAAX,EAAvBA,EAAoClvG,UAChDq1C,GACJ4G,KAAsC,QAA3BkzD,EAAItwD,EAAqB,UAAE,IAAAswD,GAAS,QAATC,EAAvBD,EAAyB/hG,eAAO,IAAAgiG,OAAT,EAAvBA,EAAkC1lG,YACtB,QAAvB2lG,EAAAxwD,EAAqB,UAAE,IAAAwwD,GAAS,QAATC,EAAvBD,EAAyBjiG,eAAO,IAAAkiG,OAAT,EAAvBA,EAAkCtvG,WAAY,MACvB,QAD+BuvG,EACtD1wD,EAAqB,UAAE,IAAA0wD,GAAS,QAATC,EAAvBD,EAAyBniG,eAAO,IAAAoiG,OAAT,EAAvBA,EAAkCxvG,UAExC,SAASy1C,KACP,IACEvC,EAAa,CACX/xC,UAAW,CACT60B,MAAO,CAAC+b,EAASkrB,GACjBt+D,KAAU,OAAJA,SAAI,IAAJA,QAAI,EAAJA,GAAMyyG,mBACZ7nG,WAAYkE,GAAUG,GAAgBixC,IACtCptC,UAAW5a,OAAO4a,IAClB4jC,WAAYx+C,OAAOw+C,IACnB/V,YAAa9lC,aAAaC,QAAQ,eAClCklC,SAAUnlC,aAAaC,QAAQ,QAC/B67C,aAAc97C,aAAaC,QAAQ,cACnC87C,UAAW/7C,aAAaC,QAAQ,gBAGjC4H,MAAMC,IACLyzC,GAAWzzC,EAAM3C,KAAK6yG,kBAAkB,IAEzC5vG,OAAOC,IACNzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,CACF,CAEA,GAAIqT,KAAYvW,GACd,OAAOhE,cAAC+b,GAAO,KAIX,OAAJ/X,SAAI,IAAJA,IAAwB,QAApB8wG,EAAJ9wG,GAAMyyG,0BAAkB,IAAA3B,GAAU,QAAVC,EAAxBD,EAA0BjL,gBAAQ,IAAAkL,OAA9B,EAAJA,EAAoClmG,QAAS,IACzC,OAAJ7K,SAAI,IAAJA,IAAwB,QAApBgxG,EAAJhxG,GAAMyyG,0BAAkB,IAAAzB,GAAQ,QAARC,EAAxBD,EAA0BxK,cAAM,IAAAyK,GAAhCA,EAAkCpmG,QAEpC,OACE1P,eAAA,OAAKmI,UAAU,oCAAmCjI,SAAA,CAShDW,cAACgoD,GAAoB,CACnB7D,gBAAgB,IAChB/C,YAAa,EACbC,YAAY,MAIZliD,eAAAC,WAAA,CAAAC,SAAA,CACO,OAAJ2E,SAAI,IAAJA,OAAMyyG,oBAC0C,KAA3C,OAAJzyG,SAAI,IAAJA,IAAwB,QAApBkxG,EAAJlxG,GAAMyyG,0BAAkB,IAAAvB,GAAU,QAAVC,EAAxBD,EAA0BrL,gBAAQ,IAAAsL,OAA9B,EAAJA,EAAoCtmG,QACpC7O,cAAAZ,WAAA,CAAAC,SACG2zC,IACChzC,cAAA,OAAKmI,IAAK+xC,GAAS76C,SACjBW,cAAA,OACEsH,UAAU,uCACV7H,QAASA,IAAM2iE,GAAkB,GAAO/iE,SAExCW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLhsC,KAAM,UAERwV,MAAO,CACL/H,KAAM9P,EACJ,uJAGJuuC,OACkD,QAAhD0gE,EAAAtiG,GAAUG,GAAgBixC,WAAsB,IAAAkxD,OAAA,EAAhDA,EACIvmG,SAAU,EACV,CACErG,KAAM,WACN+qC,IAAKsW,GACLrW,IAAKmW,GAAe,KACpBhV,aAAc,KACdC,OAAQ,CACNC,OAAQ,kBAGZ,CACErsC,KAAM,WACNmsC,aAAc,OAEtBrB,MAAO,CACLC,IAAK,EACLC,IAAS,OAAJxvC,SAAI,IAAJA,IAAwB,QAApBqxG,EAAJrxG,GAAMyyG,0BAAkB,IAAApB,OAApB,EAAJA,EAA0BxmG,OAC/B4kC,YAAgB,OAAJzvC,SAAI,IAAJA,IAAwB,QAApBsxG,EAAJtxG,GAAMyyG,0BAAkB,IAAAnB,OAApB,EAAJA,EAA0BzmG,QAAS,EAC/CmP,MAAO,CACL/H,KAAM9P,EACJ,kJAGJm+D,YAAa,CACX7/C,SAAS,EACTqlF,UAAW,WAAa,IAADgN,EACrB,OAAiB,QAAjBA,EAAO/M,KAAK3kC,aAAK,IAAA0xC,OAAA,EAAVA,EAAY1iG,QAAQ,EAC7B,IAGJ63C,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,aAEFvY,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,SACVC,cAAe,KAGnBzvB,KAAM,CACJC,eAAgB7gC,GACdvB,GAAUG,GAAgBixC,IAC1Bp+C,KAGJgvC,QAAS,CACPE,aAAc,yBACdg1D,cAAe,EACfj1D,YAAaxgC,GACXzB,GAAUG,GAAgBixC,KAE5ByG,YAAa,SAEf5W,OAAY,OAAJ/vC,SAAI,IAAJA,IAAwB,QAApBuxG,EAAJvxG,GAAMyyG,0BAAkB,IAAAlB,OAApB,EAAJA,EAA0B1L,SAClC10D,QAAS,CACP1wB,SAAS,YASvBzkB,cAAAZ,WAAA,CAAAC,SACEW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGo1C,MAAM,gCAAmC,IAC3CjvC,EACC,mIAMVnG,cAAA,OAAKmI,IAAKg7D,GAAU9jE,SAClBW,cAAA,OAAKsH,UAAU,uCAAsCjI,SAC9C,OAAJ2E,SAAI,IAAJA,OAAMyyG,yBACmCj3G,IAApC,OAAJwE,SAAI,IAAJA,IAAwB,QAApBwxG,EAAJxxG,GAAMyyG,0BAAkB,IAAAjB,OAApB,EAAJA,EAA0BjL,YAC1BvqG,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,UAERwV,MAAO,CACL/H,KAAM,SAGRy+B,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAKsW,GACLrW,IAAKmW,GACL/U,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLC,IAAK,EACLv1B,MAAO,CACL/H,KAAM9P,EACJ,+IAIN8lD,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,aAEFnX,QAAS,CACPE,aAAc,2BACdwvB,YACE,gDAEFzvB,YAAa,iBACbi1D,cAAe,EACf5yB,QAAQ,EAER2/B,SAAS,GAEXrjE,YAAa,CACX7hB,OAAQ,CACN4yC,SAAU,QAEZ1wB,OAAQ,CACNG,eAAgB,EAChBL,OAAQ,CACNpvB,SAAS,EACTqnC,OAAQ,GACRhY,OAAQ,YAIdmB,KAAM,CACJC,eAAgB7gC,GACdvB,GAAUG,GAAgBixC,IAC1Bp+C,KAGJiuC,OAAY,OAAJ/vC,SAAI,IAAJA,IAAwB,QAApByxG,EAAJzxG,GAAMyyG,0BAAkB,IAAAhB,OAApB,EAAJA,EAA0BlL,WAClCp1D,QAAS,CACP1wB,SAAS,MAKfzkB,cAAAZ,WAAA,QAKNY,cAAA,OAAKsH,UAAU,qCAAoCjI,SACjDF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BF,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CACnD8G,EACC,kIACA,IACAqK,GAA6B0zC,GAAsB,OAEvD/kD,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,yIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,0IAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,wIAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,eAGpCF,eAAC0/C,KAAS,CAAAx/C,SAAA,GACH,OAAJ2E,SAAI,IAAJA,IAAwB,QAApB0xG,EAAJ1xG,GAAMyyG,0BAAkB,IAAAf,IAAxBA,EAA0BlL,UACnB,OAAJxmG,SAAI,IAAJA,IAAwB,QAApB2xG,EAAJ3xG,GAAMyyG,0BAAkB,IAAAd,GAAQ,QAARC,EAAxBD,EAA0BnL,cAAM,IAAAoL,OAA5B,EAAJA,EAAkC55G,KAAI,CAACqS,EAAG7S,KAAG,IAAAivG,EAAAE,EAAA,OAC3CxrG,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B7D,EAAM,IAETwE,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC3B,OAADgP,QAAC,IAADA,OAAC,EAADA,EAAG/S,OAEN0E,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC3B,OAADgP,QAAC,IAADA,KAAGw8F,YACA,GAAI,OAADx8F,QAAC,IAADA,GAAc,QAAbo8F,EAADp8F,EAAGw8F,mBAAW,IAAAJ,OAAb,EAADA,EAAgBjnC,QAAQpvD,QAAQ,UACnC,MAENpU,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BgP,EAAEw8F,YACC,GAAI,OAADx8F,QAAC,IAADA,GAAc,QAAbs8F,EAADt8F,EAAGw8F,mBAAW,IAAAF,OAAb,EAADA,EAAgBlnC,MAAMrvD,QAAQ,UACjC,MAENjV,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC5B6U,GAAc,OAAD7F,QAAC,IAADA,OAAC,EAADA,EAAG7T,OAAO,aAEX,KAGvB2E,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CAACjrC,UAAU,KAAKozC,MAAM,MAAM1L,MAAM,SAAQh0C,SAAC,UAG5DW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER/+C,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER/+C,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,QAER5/C,eAACy3C,GAAgB,CAACjrC,UAAU,KAAKozC,MAAM,MAAM1L,MAAM,SAAQh0C,SAAA,CACxD6U,GAAiB,OAAJlQ,SAAI,IAAJA,IAAwB,QAApB6xG,EAAJ7xG,GAAMyyG,0BAAkB,IAAAZ,OAApB,EAAJA,EAA0B/K,aAAa,yBAQjE3rG,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CACpDW,cAAA,QAAAX,SACEW,cAAA,WAEFA,cAAA,QAAAX,SACG8G,EACC,oJAGJnG,cAAA,QAAAX,SACEW,cAAA,cAIJb,eAAA,OAAKmI,UAAU,gCAA+BjI,SAAA,CACvC,OAAJ2E,SAAI,IAAJA,IAAwB,QAApB8xG,EAAJ9xG,GAAMyyG,0BAAkB,IAAAX,GAAxBA,EAA0BjM,SACrB,OAAJ7lG,SAAI,IAAJA,IAAwB,QAApB+xG,EAAJ/xG,GAAMyyG,0BAAkB,IAAAV,GAAU,QAAVC,EAAxBD,EAA0BlM,gBAAQ,IAAAmM,OAA9B,EAAJA,EAAoCh6G,KAAKsiB,IAAC,IAAA04F,EAAA,OACxCh3G,cAAA,OAAKsH,UAAU,4BAA2BjI,SACxCF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,8BAA6BjI,SAAG,OAADif,QAAC,IAADA,OAAC,EAADA,EAAGhjB,OACjD6D,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,eAKpCF,eAAC0/C,KAAS,CAAAx/C,SAAA,CACN,OAADif,QAAC,IAADA,GAAO,QAAN04F,EAAD14F,EAAGta,YAAI,IAAAgzG,OAAN,EAADA,EAASh7G,KAAI,CAACqS,EAAG7S,KAAG,IAAAy7G,EAAA,OACnB93G,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BqP,GACE,OAADL,QAAC,IAADA,OAAC,EAADA,EAAGimC,EACHxhC,GACEG,GAAgBixC,OAKtB/kD,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,CAC3B,OAADgP,QAAC,IAADA,GAAI,QAAH4oG,EAAD5oG,EAAGE,SAAC,IAAA0oG,OAAH,EAADA,EAAM7iG,QAAQ,GAAG,aAEL,IAEnBjV,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SACf,UAGDF,eAACy3C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SAAA,CAEb6U,GAAa9F,GAAgB,OAADkQ,QAAC,IAADA,OAAC,EAADA,EAAGta,OAAO,wBAM7C,IAGRhE,cAAAZ,WAAA,IAEG,OAAJ4E,SAAI,IAAJA,IAAwB,QAApBiyG,EAAJjyG,GAAMyyG,0BAAkB,IAAAR,GAAxBA,EAA0BlL,SACzB/qG,cAAA,OAAKsH,UAAU,4BAA2BjI,SACxCF,eAACs/C,KAAc,CAAC9yC,UAAW+yC,KAAMr/C,SAAA,CAC/BW,cAAA,OAAKsH,UAAU,8BAA6BjI,SACzC8G,EACC,qIAGJhH,eAACw/C,KAAK,CAAC,aAAW,mBAAkBt/C,SAAA,CAClCW,cAAC4+C,KAAS,CAAAv/C,SACRF,eAAC63C,KAAQ,CAAA33C,SAAA,CACPW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5B8G,EACC,2HAGJnG,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAAC,eAGpCF,eAAC0/C,KAAS,CAAAx/C,SAAA,CACH,OAAJ2E,SAAI,IAAJA,IAAwB,QAApBkyG,EAAJlyG,GAAMyyG,0BAAkB,IAAAP,GAAU,QAAVC,EAAxBD,EAA0BnL,gBAAQ,IAAAoL,OAA9B,EAAJA,EAAoCn6G,KAAKqS,IAAC,IAAA6oG,EAAA,OACzC/3G,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAACs2C,GAAe,CAACjD,MAAM,SAAQh0C,SAC5BqW,GAAc,OAADrH,QAAC,IAADA,OAAC,EAADA,EAAGimC,KAEnBn1C,eAACm3C,GAAe,CAACjD,MAAM,SAAQh0C,SAAA,MACtBG,IAAN6O,GAAiC,KAAb,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGQ,QACnB,QACA,GAAI,OAADR,QAAC,IAADA,GAAI,QAAH6oG,EAAD7oG,EAAGE,SAAC,IAAA2oG,OAAH,EAADA,EAAM9iG,QAAQ,KAAK,YAGb,IAEnBjV,eAAC23C,GAAc,CAAAz3C,SAAA,CACbW,cAAC42C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SACf,UAGDF,eAACy3C,GAAgB,CACfjrC,UAAU,KACVozC,MAAM,MACN1L,MAAM,SAAQh0C,SAAA,CAEiC,KAA1C,OAAJ2E,SAAI,IAAJA,IAAwB,QAApBoyG,EAAJpyG,GAAMyyG,0BAAkB,IAAAL,OAApB,EAAJA,EAA0BrL,SAASl8F,QAChC8G,GAAe,OAAJ3R,SAAI,IAAJA,IAAwB,QAApBqyG,EAAJryG,GAAMyyG,0BAAkB,IAAAJ,OAApB,EAAJA,EAA0BtL,UACrC,QAAS,IAAI,wBAS7B/qG,cAAAZ,WAAA,YAKJ,ICn9BH,MAAM+3G,GAAwBv7F,IAAqD,IAApD,KAACpd,EAAI,UAAE62F,EAAS,SAAEvvF,EAAQ,kBAAEsxG,GAAkBx7F,EAChF,MAAOy7F,EAAaC,GAAkBp1G,sBAC/Bq1G,EAAWC,GAAgBt1G,sBAC3Bu1G,EAAUC,GAAcx1G,sBACxBqY,EAASumB,GAAc5+B,oBAAS,IAChCy1G,GAAYn1G,YAAYkzC,IACzB/Q,EAAc9lC,aAAaC,QAAQ,eAGpCwmG,GAFSzmG,aAAaC,QAAQ,aAEfwmG,KACpB8R,GAAkB,EAAM,GAwBlBnsG,EAAe8U,IACnBA,EAAE8mB,iBACF9mB,EAAEpgB,cAAci4G,cAAc,SAASC,YAAY,EA6B/CC,EAAWA,KACf,MAAMC,EAAe,IAAI5yG,KAAKkyG,GAAahyG,UAEzC,OADmB,IAAIF,KAAKoyG,GAAWlyG,UACrB0yG,EACT,CAACV,EAAaE,GAEd,CAACA,EAAWF,EACrB,EAGEW,EAAc11F,IAEd,MAAM46B,EAAa,gCAAgC56B,IAC7C66B,EAAe7hB,SAASC,cAAc,KACtCmoC,EAAW,kCAA+B/+B,KAAemzE,WAC9D36D,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAAWsmB,EACxBvmB,EAAariB,QAjEpBgG,GAAW,GACXwkE,IACAgS,IACAE,IACAE,GA8D4B,EAItBp2D,EAAc,IAAIn8C,MAAK,IAAIA,MAAOE,UAAY,MAAUomD,cAAc5uD,MAAM,KAAK,GAQzF,OACEsC,eAACoiB,KAAM,CACP3hB,GAAI,CACA,qBAAsB,CACpB1B,MAAO,MACPwC,UAAW,IACXX,aAAc,QAGlBgiB,SAAS,KACTvjB,KAAMA,EAAKa,SAAA,CACRF,eAAC6kB,KAAW,CACbpkB,GAAI,CACFiI,WAAY,UACZjK,MAAO,QACPsmB,WAAY,yBACZzH,QAAS,OACTF,WAAY,SACZI,eAAgB,gBAChBs7F,aAAc,OACdp6G,SAAS,QACTwB,SAAA,CAGFW,cAAA,KAAGS,MAAO,CAAC6I,WAAW,QAAQjK,SAAC,6CAC3Bkb,EAC0F,KAA5Fva,cAACskB,KAAM,CAAC1kB,GAAI,CAAEhC,MAAO,QAASoe,YAAa,SAAYvc,QAAS6lG,EAAajmG,SAAC,UAIhFkb,EAyEApb,eAACilB,KAAa,CAAA/kB,SAAA,CAChBW,cAAA,KACES,MAAO,CACLyjB,WAAY,yBACZ1H,UAAW,UACX5e,MAAO,SACPyB,SACH,+FACCkb,GACDva,cAAA,OAAKS,MAAO,CAAEgc,QAAS,OAAQy7F,YAAa,SAAUz/C,UAAW,SAAUnvD,WAAY,OAAQpJ,OAAQ,QAAUhC,MAAO,SAASmB,SACjIW,cAACmxE,GAAe,SAlFjBhyE,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACilB,KAAa,CAAA/kB,SAAA,CACdW,cAAA,KACES,MAAO,CACLyjB,WAAY,yBACZ1H,UAAW,UACX5e,MAAO,SACPyB,SACH,yDACDF,eAAA,OAAKsB,MAAO,CAAEgc,QAAS,OAAQC,cAAe,SAAU5c,IAAK,QAAST,SAAA,CACpEW,cAACgiB,KAAS,CACR1Z,SAhHoByX,IACxB,MAAMhN,EAAMgN,EAAE3Y,OAAO5M,MACrB88G,EAAevkG,EAAK,EA+GhBzX,KAAK,cACL++D,WAAS,EACT7xD,KAAK,OACL4f,KAAK,QACLC,WAAY,CACVzoB,GAAI,CAAEG,aAAc,QAEtBwd,MAAM,gBACN46F,gBAAiB,CACjBC,QAAQ,GAERv4E,WAAY,CAAE2T,IAAK8N,GACnB7hD,QAAUsgB,GAAM9U,EAAY8U,KAE9B/f,cAACgiB,KAAS,CACR1Z,SA5HkByX,IACtB,MAAMs4F,EAAUt4F,EAAE3Y,OAAO5M,MACzBg9G,EAAaa,EAAQ,EA2HjBz2F,cAA0BpiB,IAAhB63G,GAA6C,KAAhBA,EACvC/7G,KAAK,YACL++D,WAAS,EACT98C,MAAM,cACN46F,gBAAiB,CACjBC,QAAQ,GAER5vG,KAAK,OACL4f,KAAK,QACLC,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,QAClC8/B,WAAY,CAAE2T,IAAK8N,GACnB7hD,QAAUsgB,GAAM9U,EAAY8U,WAK7B/f,cAACuoF,KAAa,CACd3oF,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBvT,QAAS,iBACT/J,SAGFW,cAACskB,KAAM,CACL+1C,WAAS,EACTz6D,GAAI,CACFG,aAAc,MACdwJ,aAAc,MACdwT,gBAAiB,UACjBnf,MAAO,QACPsmB,WAAY,0BACZ,UAAW,CACTnH,gBAAiB,YAGrBtd,QAxJQ64G,KACb,IACKX,EAAS,CACNnxG,UAAW,CACP6lB,UAAW/d,OAAO+mF,GAClBv+E,UAAW,IAAI3R,KAAKkyG,GAAahyG,UACjC0R,QAAS,IAAI5R,KAAKoyG,GAAWlyG,UAC7BkzG,UAAWT,IACXhyG,SAAU5J,OAAO4J,KAEvBg7B,GAAW,IAEZp6B,MAAMC,IAAW,IAAD6xG,EAAAC,EAECC,EAAAC,GADVjB,EAAsB,QAAXc,EAAC7xG,EAAM3C,YAAI,IAAAw0G,GAAqB,QAArBC,EAAVD,EAAYI,2BAAmB,IAAAH,OAArB,EAAVA,EAAiCI,WAC1ClyG,IACDqxG,EAAqB,QAAXU,EAAC/xG,EAAM3C,YAAI,IAAA00G,GAAqB,QAArBC,EAAVD,EAAYE,2BAAmB,IAAAD,OAArB,EAAVA,EAAiCE,WAE9C/3E,GAAW,EAAM,IAEtB75B,OAAOC,IACNzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,GAiIG0a,cAtGapiB,IAAhB63G,QACc73G,IAAd+3G,GACgB,KAAhBF,GACa,KAAdE,QAAH,EAmG2Cl4G,SAEpCW,cAAA,KAAAX,SAAG,8BAuBC,ECnOJy5G,GAAgBl9F,IAA6B,IAA5B,mBAAEm9F,GAAoBn9F,EAClD,MAAM,EAAEzV,GAAMC,cACRqI,EAAIzR,SAA2B,OAAlB+7G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBC,MACvC,OACE75G,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCF,eAAA,OAAKmI,UAAU,yDAAwDjI,SAAA,CACrEW,cAAA,OAAKsH,UAAU,8EAA6EjI,SAC1FW,cAAA,QAAMsH,UAAU,mEAAkEjI,SAC/E8G,EACC,kJAINhH,eAAA,OAAKmI,UAAU,+DAA8DjI,SAAA,CAC3EW,cAACyrG,KAAqB,CACpBG,WAAY,GAAG3yF,GAAiBxK,EAAEnS,cAClCuL,WAAW,WACXwkG,YAAa,GACbV,OAAO,YAGTxsG,eAAA,QAAMmI,UAAU,kBAAiBjI,SAAA,CAC/BW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBC,OAAc,kBAIjD75G,eAAA,OAAKmI,UAAU,uDAAsDjI,SAAA,CACnEF,eAAA,OAAKmI,UAAU,6EAA4EjI,SAAA,CACxF,IACDW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACtCW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBxM,MAE7BvsG,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,+IAMVnG,cAAA,OAAKsH,UAAU,4EAA2EjI,SACxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACrC,IACDW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBvM,MAC7BxsG,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,+IAMVhH,eAAA,OAAKmI,UAAU,4EAA2EjI,SAAA,CACvF,IAIDW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACtCF,eAAA,UAAAE,SAAA,CAAQ,IAAoB,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBE,QAC9Bj5G,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,qJAOR,ECvEG+yG,GAAgBt9F,IAA6B,IAA5B,mBAAEm9F,GAAoBn9F,EAClD,MAAM,EAAEzV,GAAMC,cACRqI,EAAIzR,SAA2B,OAAlB+7G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBI,MAEvC,OACEh6G,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCF,eAAA,OAAKmI,UAAU,yDAAwDjI,SAAA,CACrEW,cAAA,OAAKsH,UAAU,8EAA6EjI,SAC1FW,cAAA,QAAMsH,UAAU,mEAAkEjI,SAC/E8G,EACC,kJAINhH,eAAA,OAAKmI,UAAU,+DAA8DjI,SAAA,CAC3EW,cAACyrG,KAAqB,CACpBY,YAAa,GACbT,WAAY,GAAG3yF,GAAiBxK,EAAEnS,cAClCuL,WAAW,UAEX8jG,OAAO,YAETxsG,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACtCW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBI,OAC7Bn5G,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,mBAI1CF,eAAA,OAAKmI,UAAU,uDAAsDjI,SAAA,CACnEW,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACtCW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBpM,MAC7B3sG,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,8IAMVnG,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACrC,IACDW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBnM,MAC7B5sG,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,+IAMVnG,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACrC,IACDW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBK,OAC7Bp5G,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,oJAOR,EC7EGkzG,GAAgBz9F,IAA6B,IAA5B,mBAAEm9F,GAAoBn9F,EAClD,MAAM,EAAEzV,GAAMC,cACRqI,EAAIzR,SAA2B,OAAlB+7G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBO,MAEvC,OACEn6G,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCF,eAAA,OAAKmI,UAAU,yDAAwDjI,SAAA,CACrEW,cAAA,OAAKsH,UAAU,8EAA6EjI,SAC1FW,cAAA,QAAMsH,UAAU,mEAAkEjI,SAC/E8G,EACC,kJAINhH,eAAA,OAAKmI,UAAU,+DAA8DjI,SAAA,CAC3EW,cAACyrG,KAAqB,CACpBG,WAAY,GAAG3yF,GAAiBxK,EAAEnS,cAClC+vG,YAAa,GACbV,OAAO,UACP9jG,WAAW,YAEb1I,eAAA,QAAAE,SAAA,CACEW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBO,OAAc,kBAIjDn6G,eAAA,OAAKmI,UAAU,uDAAsDjI,SAAA,CACnEW,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACtCW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBhM,MAC7B/sG,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,8IAMVnG,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACrC,IACDW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoB/L,MAC7BhtG,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,+IAMVnG,cAAA,OAAKsH,UAAU,4EAA2EjI,SAIxFW,cAAA,OAAKsH,UAAU,iEAAgEjI,SAC7EF,eAAA,QAAMmI,UAAU,0BAAyBjI,SAAA,CACtC,IACDW,cAAA,UAAAX,SAA2B,OAAlB05G,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBQ,OAC7Bv5G,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EACC,oJAOR,E,yBCjFH,MAAMqzG,GAAa,CACxB,CAAEj8F,MAAO,eAAgBihC,MAAO,KAAMi7D,OAAQ,MAC9C,CAAEl8F,MAAO,aAAcihC,MAAO,MAAOi7D,OAAQ,MAC7C,CAAEl8F,MAAO,yBAA0BihC,MAAO,KAAMi7D,OAAQ,KACxD,CAAEl8F,MAAO,2BAA4BihC,MAAO,WAAYi7D,OAAQ,SAChE,CAAEl8F,MAAO,iBAAkBihC,MAAO,SAAUi7D,OAAQ,OACpD,CAAEl8F,MAAO,yBAA0BihC,MAAO,SAAUi7D,OAAQ,OAC5D,CAAEl8F,MAAO,2BAA4BihC,MAAO,WAAYi7D,OAAQ,SAChE,CAAEl8F,MAAO,sBAAuBihC,MAAO,KAAMi7D,OAAQ,KACrD,CAAEl8F,MAAO,eAAgBihC,MAAO,OAAQi7D,OAAQ,OAChD,CAAEl8F,MAAO,wBAAyBihC,MAAO,QAASi7D,OAAQ,KAC1D,CAAEl8F,MAAO,wBAAyBihC,MAAO,QAASi7D,OAAQ,KAC1D,CAAEl8F,MAAO,wBAAyBihC,MAAO,QAASi7D,OAAQ,KAC1D,CAAEl8F,MAAO,2BAAyBihC,MAAO,MAAOi7D,OAAQ,MCN3C,SAASC,GAAY99F,GAAkC,IAAD+9F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAAhC,aAAEC,EAAY,OAAErjD,EAAM,KAAEvyD,GAAMuX,EACjE,MAAM,EAAEzV,GAAMC,cACRwiB,EAASqxF,GACRC,EAAcC,GAAmBj4G,mBAAS,IAC1Ck4G,EAAeC,GAAoBn4G,mBACxC0mB,EAA+B,QAAzB+wF,EAACH,GAAWU,UAAa,IAAAP,OAAA,EAAxBA,EAA0Bn7D,SAE5B87D,EAAcC,GAAmBr4G,mBACd,QADsB03G,EAC9CJ,GAAWU,UAAa,IAAAN,OAAA,EAAxBA,EAA0Bp7D,QAErBg8D,EAAWC,GAAgBv4G,mBAAsB,QAAd23G,EAACL,GAAW,UAAE,IAAAK,OAAA,EAAbA,EAAer7D,QACnDk8D,EAAWC,GAAgBz4G,mBAAsB,QAAd43G,EAACN,GAAW,UAAE,IAAAM,OAAA,EAAbA,EAAet7D,QACnDo8D,EAAUC,GAAe34G,mBAAiC,QAAzB63G,EAACP,GAAWU,UAAa,IAAAH,OAAA,EAAxBA,EAA0Bx8F,QAC5Du9F,EAAcC,GAAmB74G,mBACd,QADsB83G,EAC9CR,GAAWU,UAAa,IAAAF,OAAA,EAAxBA,EAA0BP,QA8G5B,OACEt6G,eAAA,OAAKmI,UAAU,iBAAgBjI,SAAA,CAC7BW,cAAA,OAAKsH,UAAU,6EAA4EjI,SACzFF,eAAA,UAAAE,SAAA,CAAQ,KA5DK,iBAAbu7G,EACKz0G,EACL,wJAEoB,eAAby0G,EACFz0G,EACL,+IAEoB,2BAAby0G,EACFz0G,EACL,qJAEoB,6BAAby0G,EACFz0G,EACL,qJAEoB,mBAAby0G,EACFz0G,EACL,qJAEoB,2BAAby0G,EACFz0G,EACL,gKAEoB,6BAAby0G,EACFz0G,EACL,kKAEoB,wBAAby0G,EACFz0G,EACL,yJAEoB,iBAAby0G,EACFz0G,EACL,kJAEoB,0BAAby0G,EACFz0G,EACL,6JAEoB,0BAAby0G,EACFz0G,EACL,6JAEoB,0BAAby0G,EACFz0G,EACL,6JAEoB,6BAAby0G,EACFz0G,EACL,wJAGK,MAOkC6Z,mBAEzC7gB,eAAA,OAAKmI,UAAU,0DAAyDjI,SAAA,CACtEW,cAAA,QAAMsH,UAAU,yBAAwBjI,SAAE+6G,IAC1Cp6G,cAAA,QAAMsH,UAAU,gBAAejI,SAAEy7G,OAEnC37G,eAAA,OAAKmI,UAAU,0BAAyBjI,SAAA,CACtCW,cAACg7G,KAAuB,CACtBp7G,GAAI,CACFg/B,OAAQ,UACRniB,QAAS,OACTsvF,UAAW,gBACXnuG,MAAO,UACP,SAAU,CAAEA,MAAO,UAErB0J,UAAU,cACV7H,QA/HQouC,KAEW,IAADotE,EAAAC,EAUAC,EAAAC,EAAAC,EAAAC,EAKjBC,EAAAC,EAAAC,EAAAC,EAfP,GADAvB,GAAiBD,EAAe,EAAIV,GAAW3qG,QAAU2qG,GAAW3qG,QAC/C,IAAjBqrG,EACFO,EAA2B,QAAfQ,EAACzB,GAAW,WAAG,IAAAyB,OAAA,EAAdA,EAAgBz8D,OAC7Bm8D,EAAqC,QAAzBO,EAAC1B,GAAWU,UAAa,IAAAgB,OAAA,EAAxBA,EAA0B18D,YAClC,GAAqB,IAAjB07D,EAAoB,CAAC,IAADyB,EAAAC,EAC7BnB,EAA2B,QAAfkB,EAACnC,GAAW,WAAG,IAAAmC,OAAA,EAAdA,EAAgBn9D,OAC7Bm8D,EAAqC,QAAzBiB,EAACpC,GAAWU,UAAa,IAAA0B,OAAA,EAAxBA,EAA0Bp9D,MACzC,MAAO,GAAI07D,EAAe,EAAG,CAAC,IAAD2B,EAAAC,EAC3BrB,EAAyC,QAA7BoB,EAACrC,GAAWU,EAAe,UAAE,IAAA2B,OAAA,EAA5BA,EAA8Br9D,OAC3Cm8D,EAAqC,QAAzBmB,EAACtC,GAAWU,UAAa,IAAA4B,OAAA,EAAxBA,EAA0Bt9D,MACzC,CACqB,IAAjB07D,GACFG,EAAiBzxF,EAAqB,QAAfuyF,EAAC3B,GAAW,WAAG,IAAA2B,OAAA,EAAdA,EAAgB38D,QACxCu8D,EAA8B,QAAfK,EAAC5B,GAAW,WAAG,IAAA4B,OAAA,EAAdA,EAAgB3B,QAChCoB,EAA0B,QAAfQ,EAAC7B,GAAW,WAAG,IAAA6B,OAAA,EAAdA,EAAgB99F,OAC5Bg9F,EAA8B,QAAfe,EAAC9B,GAAW,WAAG,IAAA8B,OAAA,EAAdA,EAAgB98D,SAEhC67D,EAAiBzxF,EAAmC,QAA7B2yF,EAAC/B,GAAWU,EAAe,UAAE,IAAAqB,OAAA,EAA5BA,EAA8B/8D,QACtDu8D,EAA4C,QAA7BS,EAAChC,GAAWU,EAAe,UAAE,IAAAsB,OAAA,EAA5BA,EAA8B/B,QAC9CoB,EAAwC,QAA7BY,EAACjC,GAAWU,EAAe,UAAE,IAAAuB,OAAA,EAA5BA,EAA8Bl+F,OAC1Cg9F,EAA4C,QAA7BmB,EAAClC,GAAWU,EAAe,UAAE,IAAAwB,OAAA,EAA5BA,EAA8Bl9D,OAChD,IA4GIx+C,cAAA,OAAKsH,UAAU,eAAcjI,SAAEm7G,IAE/Bx6G,cAAA,OAAKsH,UAAW,0BAA+BjI,SAAEi7G,IAEjDt6G,cAAA,OAAKsH,UAAU,eAAcjI,SAAEq7G,IAE/B16G,cAACg7G,KAAuB,CACtBp7G,GAAI,CACFg/B,OAAQ,UACRniB,QAAS,OACTsvF,UAAW,iBACXnuG,MAAO,UACP,SAAU,CAAEA,MAAO,UAErB6B,QAvHSwpB,KAEW,IAAD8yF,EAAAC,EAUAC,EAAAC,EAAAC,EAAAC,EAKlBC,EAAAC,EAAAC,EAAAC,EAfP,GADArC,GAAiBD,EAAe,EAAIV,GAAW3qG,QAAU2qG,GAAW3qG,QAC/C,KAAjBqrG,EACFS,EAA0B,QAAdoB,EAACvC,GAAW,UAAE,IAAAuC,OAAA,EAAbA,EAAev9D,OAC5Bi8D,EAAqC,QAAzBuB,EAACxC,GAAWU,UAAa,IAAA8B,OAAA,EAAxBA,EAA0Bx9D,YAClC,GAAqB,KAAjB07D,EAAqB,CAAC,IAADuC,EAAAC,EAC9B/B,EAA0B,QAAd8B,EAACjD,GAAW,UAAE,IAAAiD,OAAA,EAAbA,EAAej+D,OAC5Bi8D,EAAqC,QAAzBiC,EAAClD,GAAWU,UAAa,IAAAwC,OAAA,EAAxBA,EAA0Bl+D,MACzC,MAAO,GAAI07D,EAAe,GAAI,CAAC,IAADyC,EAAAC,EAC5BjC,EAAyC,QAA7BgC,EAACnD,GAAWU,EAAe,UAAE,IAAAyC,OAAA,EAA5BA,EAA8Bn+D,OAC3Ci8D,EAAqC,QAAzBmC,EAACpD,GAAWU,UAAa,IAAA0C,OAAA,EAAxBA,EAA0Bp+D,MACzC,CACqB,KAAjB07D,GACFG,EAAiBzxF,EAAoB,QAAdqzF,EAACzC,GAAW,UAAE,IAAAyC,OAAA,EAAbA,EAAez9D,QACvCu8D,EAA6B,QAAdmB,EAAC1C,GAAW,UAAE,IAAA0C,OAAA,EAAbA,EAAezC,QAC/BoB,EAAyB,QAAdsB,EAAC3C,GAAW,UAAE,IAAA2C,OAAA,EAAbA,EAAe5+F,OAC3Bg9F,EAA6B,QAAd6B,EAAC5C,GAAW,UAAE,IAAA4C,OAAA,EAAbA,EAAe59D,SAE/B67D,EAAiBzxF,EAAmC,QAA7ByzF,EAAC7C,GAAWU,EAAe,UAAE,IAAAmC,OAAA,EAA5BA,EAA8B79D,QACtDu8D,EAA4C,QAA7BuB,EAAC9C,GAAWU,EAAe,UAAE,IAAAoC,OAAA,EAA5BA,EAA8B7C,QAC9CoB,EAAwC,QAA7B0B,EAAC/C,GAAWU,EAAe,UAAE,IAAAqC,OAAA,EAA5BA,EAA8Bh/F,OAC1Cg9F,EAA4C,QAA7BiC,EAAChD,GAAWU,EAAe,UAAE,IAAAsC,OAAA,EAA5BA,EAA8Bh+D,OAChD,SAsGJ,CC/JO,MAAMq+D,GAAkBjhG,IAAiB,IAAhB,OAAEg7C,GAAQh7C,EACxC,MAAM,EAAEzV,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,MACT,KAAEiC,GAASwW,aAASq1C,GAA6B,CACrD+F,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRq6C,SAAUj0G,SAASyhE,GAAMswC,GAASxxC,QAEpC7iD,YAAa,aAEf,OACE1a,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,IACVq4C,gBAAiB,IAGrBx7D,MAAO,CACL/H,KAAM9P,EACJ,qJAEFktC,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAS,OAAJvvC,QAAI,IAAJA,OAAI,EAAJA,EAAMisG,qBAAqB6M,UAChCtpE,IAAS,OAAJxvC,QAAI,IAAJA,OAAI,EAAJA,EAAMisG,qBAAqB8M,SAChCnoE,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CAELt1B,MAAO,CACL/H,KAAM,YAGV6+B,QAAS,CACP6V,YAAa,MAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,OAAI,EAAJA,EAAMisG,qBAAqB+M,SACnChjC,WAAY,CACVC,cAAe,CACbp8E,SAAU,SAGds3C,QAAS,CACP1wB,SAAS,OAIX,ECrFGw4F,GAAgBrhG,IAAiB,IAADshG,EAAAC,EAAAC,EAAA,IAAf,OAAExmD,GAAQh7C,EACtC,MAAM,EAAEzV,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,MACT,KAAEiC,GAASwW,aAASu1C,GAA2B,CACnD6F,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRq6C,SAAUj0G,SAASyhE,GAAMswC,GAASxxC,QAEpC7iD,YAAa,aAGf,OACE1a,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,IACVq4C,gBAAiB,IAGrBx7D,MAAO,CACL/H,KAAM9P,EACJ,mJAEFktC,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAS,OAAJvvC,QAAI,IAAJA,GAAuB,QAAnBk5G,EAAJl5G,EAAMq5G,yBAAiB,IAAAH,OAAnB,EAAJA,EAAyBJ,UAC9BtpE,IAAS,OAAJxvC,QAAI,IAAJA,GAAuB,QAAnBm5G,EAAJn5G,EAAMq5G,yBAAiB,IAAAF,OAAnB,EAAJA,EAAyBJ,SAC9BnoE,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CAELt1B,MAAO,CACL/H,KAAM,UAGV6+B,QAAS,CACP6V,YAAa,MAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,GAAuB,QAAnBo5G,EAAJp5G,EAAMq5G,yBAAiB,IAAAD,OAAnB,EAAJA,EAAyBJ,SACjChjC,WAAY,CACVC,cAAe,CACbp8E,SAAU,SAGds3C,QAAS,CACP1wB,SAAS,OAIX,ECtFG64F,GAAkB1hG,IAAiB,IAAD2hG,EAAAC,EAAAC,EAAA,IAAf,OAAE7mD,GAAQh7C,EACxC,MAAM,EAAEzV,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,MACT,KAAEiC,GAASwW,aAASs1C,GAAyB,CACjD8F,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRq6C,SAAUj0G,SAASyhE,GAAMswC,GAASxxC,QAEpC7iD,YAAa,aAGf,OACE1a,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,IACVq4C,gBAAiB,IAGrBx7D,MAAO,CACL/H,KAAM9P,EACJ,sJAEFktC,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAS,OAAJvvC,QAAI,IAAJA,GAA0B,QAAtBu5G,EAAJv5G,EAAM05G,4BAAoB,IAAAH,OAAtB,EAAJA,EAA4BT,UACjCtpE,IAAS,OAAJxvC,QAAI,IAAJA,GAA0B,QAAtBw5G,EAAJx5G,EAAM05G,4BAAoB,IAAAF,OAAtB,EAAJA,EAA4BT,SACjCnoE,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CAELt1B,MAAO,CACL/H,KAAM,aAGV6+B,QAAS,CACP6V,YAAa,MAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,GAA0B,QAAtBy5G,EAAJz5G,EAAM05G,4BAAoB,IAAAD,OAAtB,EAAJA,EAA4BT,SACpChjC,WAAY,CACVC,cAAe,CACbp8E,SAAU,SAGds3C,QAAS,CACP1wB,SAAS,OAIX,ECtFGk5F,GAAsB/hG,IAAiB,IAADgiG,EAAAC,EAAAC,EAAA,IAAf,OAAElnD,GAAQh7C,EAC5C,MAAM,EAAEzV,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,MACT,KAAEiC,GAASwW,aAASw1C,GAA8B,CACtD4F,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRq6C,SAAUj0G,SAASyhE,GAAMswC,GAASxxC,QAEpC7iD,YAAa,aAEf,OACE1a,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,MAIdnjB,MAAO,CACL/H,KAAM9P,EACJ,sJAEFktC,MAAO,QAETkB,SAAU,CACRt+B,KAAM,GACNo9B,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAS,OAAJvvC,QAAI,IAAJA,GAA8B,QAA1B45G,EAAJ55G,EAAM+5G,gCAAwB,IAAAH,OAA1B,EAAJA,EAAgCd,UACrCtpE,IAAS,OAAJxvC,QAAI,IAAJA,GAA8B,QAA1B65G,EAAJ75G,EAAM+5G,gCAAwB,IAAAF,OAA1B,EAAJA,EAAgCd,SACrCnoE,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CAELt1B,MAAO,CACL/H,KAAM,uBAGV6+B,QAAS,CACP6V,YAAa,OAEfjX,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,GAA8B,QAA1B85G,EAAJ95G,EAAM+5G,gCAAwB,IAAAD,OAA1B,EAAJA,EAAgCd,SACxChjC,WAAY,CACVC,cAAe,CACbp8E,SAAU,SAGds3C,QAAS,CACP1wB,SAAS,OAIX,ECEKu5F,OAxFWpiG,IAAiB,IAADqiG,EAAAC,EAAAC,EAAA,IAAf,OAAEvnD,GAAQh7C,EACnC,MAAM,EAAEzV,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,MAET,KAAEiC,GAASwW,aAAS21C,GAAoB,CAC5CyF,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRq6C,SAAUj0G,SAASyhE,GAAMswC,GAASxxC,QAEpC7iD,YAAa,aAGf,OACE1a,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,MAIdnjB,MAAO,CACL/H,KAAM9P,EACJ,uJAEFktC,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAS,OAAJvvC,QAAI,IAAJA,GAAwB,QAApBi6G,EAAJj6G,EAAMo6G,0BAAkB,IAAAH,OAApB,EAAJA,EAA0BnB,UAC/BtpE,IAAS,OAAJxvC,QAAI,IAAJA,GAAwB,QAApBk6G,EAAJl6G,EAAMo6G,0BAAkB,IAAAF,OAApB,EAAJA,EAA0BnB,SAC/BnoE,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLt1B,MAAO,CACL/H,KAAM9P,EACJ,4IAGJqtC,IAAK,KACLD,IAAK,MAGPG,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,GAAwB,QAApBm6G,EAAJn6G,EAAMo6G,0BAAkB,IAAAD,OAApB,EAAJA,EAA0BnB,SAClChjC,WAAY,CACVC,cAAe,CACbp8E,SAAU,SAGds3C,QAAS,CACP1wB,SAAS,OAIX,ECCK45F,OArFgBziG,IAAiB,IAAD0iG,EAAAC,EAAAC,EAAA,IAAf,OAAE5nD,GAAQh7C,EACxC,MAAM,EAAEzV,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,MAET,KAAEiC,GAASwW,aAAS41C,GAA0B,CAClDwF,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRq6C,SAAUj0G,SAASyhE,GAAMswC,GAASxxC,QAEpC7iD,YAAa,aAGf,OACE1a,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,MAIdnjB,MAAO,CACL/H,KAAM9P,EACJ,6JAEFktC,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAS,OAAJvvC,QAAI,IAAJA,GAA8B,QAA1Bs6G,EAAJt6G,EAAMy6G,gCAAwB,IAAAH,OAA1B,EAAJA,EAAgCxB,UACrCtpE,IAAS,OAAJxvC,QAAI,IAAJA,GAA8B,QAA1Bu6G,EAAJv6G,EAAMy6G,gCAAwB,IAAAF,OAA1B,EAAJA,EAAgCxB,SACrCnoE,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLt1B,MAAO,CACL/H,KAAM9P,EACJ,mJAINutC,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,GAA8B,QAA1Bw6G,EAAJx6G,EAAMy6G,gCAAwB,IAAAD,OAA1B,EAAJA,EAAgCxB,SACxChjC,WAAY,CACVC,cAAe,CACbp8E,SAAU,SAGds3C,QAAS,CACP1wB,SAAS,OAIX,ECIKi6F,OArFgB9iG,IAAiB,IAAD+iG,EAAAC,EAAAC,EAAA,IAAf,OAAEjoD,GAAQh7C,EACxC,MAAM,EAAEzV,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,cAClB1b,EAAa,QACbyZ,GACEjtG,qBAAWC,MAET,KAAEiC,GAASwW,aAAS61C,GAA0B,CAClDuF,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRq6C,SAAUj0G,SAASyhE,GAAMswC,GAASxxC,QAEpC7iD,YAAa,aAGf,OACE1a,cAAA,OAAAX,SACEW,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLC,SAAU,IACVjsC,KAAM,SACN+wE,mBAAoB,CAClBp4C,SAAU,MAIdnjB,MAAO,CACL/H,KAAM9P,EACJ,6JAEFktC,MAAO,QAETqB,MAAO,CACLlsC,KAAM,WACNmsC,aAAc,KACdpB,IAAS,OAAJvvC,QAAI,IAAJA,GAA8B,QAA1B26G,EAAJ36G,EAAM86G,gCAAwB,IAAAH,OAA1B,EAAJA,EAAgC7B,UACrCtpE,IAAS,OAAJxvC,QAAI,IAAJA,GAA8B,QAA1B46G,EAAJ56G,EAAM86G,gCAAwB,IAAAF,OAA1B,EAAJA,EAAgC7B,SACrCnoE,OAAQ,CACNC,OAAQ,kBAGZvB,MAAO,CACLt1B,MAAO,CACL/H,KAAM9P,EACJ,mJAINutC,YAAa,CACXimC,OAAQ,CACNC,UAAW,IACX5lC,OAAQ,CACN+C,MAAO,CACL6iC,UAAW,MAGf/lC,OAAQ,CACNpvB,SAAS,KAIfwwB,KAAM,CACJC,eAAgB,KAElBnB,OAAY,OAAJ/vC,QAAI,IAAJA,GAA8B,QAA1B66G,EAAJ76G,EAAM86G,gCAAwB,IAAAD,OAA1B,EAAJA,EAAgC7B,SACxChjC,WAAY,CACVC,cAAe,CACbp8E,SAAU,SAGds3C,QAAS,CACP1wB,SAAS,OAIX,EC5EK,SAASs6F,GAAgBnjG,GAAc,IAAb,OAAEg7C,GAAQh7C,EACjD,MAAM,EAAEzV,GAAMC,eACP5L,EAAOkI,GAAYrE,WAAe,KAOnC2gH,GAFa,IAAI75G,KAEL85G,IAAQ,CACxBpkD,YAAa,UACbqkD,oBAAqB,OACrBvgF,UAAW,oCACXqB,UAAW,yBAEPxlC,IAAUykH,GAAY,CACxBtgF,UAAW,oCACX9gC,SAAU,OACVg9D,YAAa,UACb76B,UAAW,sBACXk/E,oBAAqB,OACrBC,qBAAsB,OACtBpgG,WAAY,OACZnhB,MAAO,cAGX,OACEoC,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE1B,MAAO,OAAQ+rG,WAAY,QAAS1gG,aAAc,MAAOlK,SAClEF,eAAC+qG,KAAU,CAAC1vG,MAAOA,EAAM6E,SAAA,CACvBW,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEuqG,aAAc,EAAGtvC,YAAa,WAAYx7D,SACnDF,eAACirG,KAAO,CACN9hG,SA3BWgV,CAAC5d,EAAOiwC,KAC3BjtC,EAASitC,EAAS,EA2BV,aAAW,uBACX/vC,GAAI,CAAEhC,MAAO,WACbwhH,eAAe,OAAM//G,SAAA,CAErBW,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAM,QACN/iB,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EAAE,yIACT3L,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EAAE,0IACT3L,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EAAE,0IACT3L,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EAAE,2IACT3L,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EAAE,iJACT3L,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EAAE,iJACT3L,MAAM,WAIZwF,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACi9G,GAAa,CAACrmD,OAAQA,MAEzB52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAAC68G,GAAe,CAACjmD,OAAQA,MAE3B52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACs9G,GAAe,CAAC1mD,OAAQA,MAE3B52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAAC29G,GAAmB,CAAC/mD,OAAQA,MAE/B52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACg+G,GAAiB,CAACpnD,OAAQA,MAE7B52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACq+G,GAAsB,CAACznD,OAAQA,MAElC52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAAC0+G,GAAsB,CAAC9nD,OAAQA,UAK1C,CC3FO,MAAMyoD,GAA6B1hH,IAAW,IAADgzG,EAAAC,EAAAC,EAAAyO,EAAAC,EAAAC,EAAAC,EAClD,MAAM,OAAE7oD,EAAM,KAAEvyD,GAAS1G,EAEnBitE,EAAkB,CACtBC,YAAQ,KACRC,aAAc,KACdC,QAAS,MAEXC,OAAOC,OAAOL,GACd,MAAM,EAAEzkE,GAAMC,eACR,WACJ8M,EAAU,gBACV69F,EAAe,mBACfC,EAAkB,QAClBjC,EAAO,WACPn2D,EAAU,cACVC,EAAa,cACby8C,EAAa,gBACbx3B,EAAe,mBACfD,EAAkB,wBAClBG,GACEl8D,qBAAWC,MACRwzF,EAAOC,GAAYtzF,mBAAS,IAE7B,KAAE8B,GAASwW,aAASo1C,GAAiB,CACzCgG,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACR71D,SAAU6pE,EAAgBvmE,IAASumE,EAAgBG,QACnDkmC,SAAU/0G,OAAOuiE,GAAMswC,GAASxxC,QAElC7iD,YAAa,aAsBf,OAnBA5X,qBAAU,KAAO,IAADmP,EAAAG,EACdkjF,GAAc,GACdz3B,EAAmB,CACjB,IACKC,EAAgB3X,UACnB5zC,UAAW,IAAIpN,MAAe,QAAV8M,EAAA,IAAI9M,YAAM,IAAA8M,OAAA,EAAVA,EAAY5M,WAAY,QAC5CoN,QAAS,IAAItN,KACb3J,IAAK,eAGTwiE,EAAwB,CACtB,IACKF,EAAgB3X,UACnB5zC,UAAW,IAAIpN,MAAe,QAAViN,EAAA,IAAIjN,YAAM,IAAAiN,OAAA,EAAVA,EAAY/M,WAAY,QAC5CoN,QAAS,IAAItN,KACb3J,IAAK,cAEP,GACD,IAED2D,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDW,cAAA,OAAKsH,UAAU,mBAAkBjI,SAC/BW,cAAC8uG,GAAO,MAGuC,KAA5C,OAAJ9qG,QAAI,IAAJA,GAA2B,QAAvB2sG,EAAJ3sG,EAAMmtG,6BAAqB,IAAAR,GAAQ,QAARC,EAA3BD,EAA6B58D,cAAM,IAAA68D,OAA/B,EAAJA,EAAqC/hG,QACpC7O,cAAAZ,WAAA,IAGAY,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLu+D,QAAS,CACPC,YAAY,GAEdxqG,KAAM,UAERyjD,OAAQ,CAAC,WAETjuC,MAAO,CACLq1B,MAAO,OACPp9B,KAAM,GAAG9P,EACP,kJAEI,OAAJnC,QAAI,IAAJA,GAA2B,QAAvB6sG,EAAJ7sG,EAAMmtG,6BAAqB,IAAAN,GAAoB,QAApByO,EAA3BzO,EAA6Blb,0BAAkB,IAAA2pB,GAA/CA,EAAiDjO,aACzC,OAAJrtG,QAAI,IAAJA,GAA2B,QAAvBu7G,EAAJv7G,EAAMmtG,6BAAqB,IAAAoO,GAAoB,QAApBC,EAA3BD,EAA6B5pB,0BAAkB,IAAA6pB,OAA3C,EAAJA,EACInO,aACJ9b,UAIRhhD,SAAU,CACRlB,MAAO,QAEP5yC,MAAO,CACL7C,MAAO,OACPC,SAAU,QAEZ0Q,EAAG,IAELy2D,cAAe,CACb4wB,gBAAiB,CACfnxE,SAAS,IAGbiwB,MAAO,CACLlsC,KAAM,YAER8qC,MAAO,CACLt1B,MAAO,CACL/H,KAAM,KAIVy9B,YAAa,CACX7hB,OAAQ,CACN6tF,UAAU,EACVC,QAAQ,EACR5/G,aAAc,EACd81F,YAAa,EACbh7B,YAAa,SAEf9mB,OAAQ,CACN4wB,WAAY,CACVlgD,SAAS,EACTowB,OAAQ,mBAIdV,OAAQ,CACNwrE,QAAQ,GAEV7qE,QAAS,CACPsiC,QAAQ,EAER5S,YACE,0FAEJzwB,OAAY,OAAJ/vC,QAAI,IAAJA,GAA2B,QAAvBy7G,EAAJz7G,EAAMmtG,6BAAqB,IAAAsO,OAAvB,EAAJA,EAA6B1rE,OACrCoB,QAAS,CACP1wB,SAAS,QAMb,EC9IGm7F,GAAoChkG,IAAuB,IAAD+0F,EAAAC,EAAAC,EAAAyO,EAAAC,EAAAC,EAAA,IAArB,OAAE5oD,EAAM,KAAEvyD,GAAMuX,EAChE,MAAMgvD,EAAkB,CACtBC,YAAQ,KACRC,aAAc,KACdC,QAAS,MAEXC,OAAOC,OAAOL,GAEd,MAAM,EAAEzkE,GAAMC,eACPmvF,EAAOC,GAAYtzF,mBAAS,IAC7B,cACJozF,EAAa,gBACbx3B,EAAe,mBACfD,EAAkB,wBAClBG,EAAuB,qBACvB9Z,EAAoB,wBACpBmD,GACEvlD,qBAAWC,MAER89G,GAAe,KAAE77G,IAAUstC,aAAase,GAAiB,CAC9DgG,OAAQmY,gBACRrzD,YAAa,aAGTolG,EAAmBA,CAAClpD,EAAQ9/C,EAAWC,EAAShW,KACpD8+G,EAAc,CACZr5G,UAAW,CACTowD,OAAQA,EACRq6C,SAAUn6F,EACVC,QAASA,EACThW,SAAUA,IAEZ,EAGJ+B,qBAAU,KAAO,IAADmP,EAAAG,EAAAoyC,EAoBd6C,EAAwB,CACtB,CACE90C,UAAW,IAAIpN,MAAe,QAAV8M,EAAA,IAAI9M,YAAM,IAAA8M,OAAA,EAAVA,EAAY5M,WAAY,QAC5CoN,QAAS,IAAItN,KACb3J,IAAK,eAITskH,EACElpD,EACA,IAAIzxD,MAAe,QAAViN,EAAA,IAAIjN,YAAM,IAAAiN,OAAA,EAAVA,EAAY/M,WAAY,QACV,QADqBm/C,EAC5CN,EAAqB,UAAE,IAAAM,OAAA,EAAvBA,EAAyB/xC,QACzBm4D,EAAgBvmE,IAASumE,EAAgBG,QAC1C,GACA,IAqBH,OAVAjoE,qBAAU,KACJohD,GAVkB67D,MAAO,IAADp7D,EAAAqa,EAC5B8gD,EACElpD,EACuB,QADjBjS,EACNT,EAAqB,UAAE,IAAAS,OAAA,EAAvBA,EAAyBpyC,UACF,QADWysD,EAClC9a,EAAqB,UAAE,IAAA8a,OAAA,EAAvBA,EAAyBvsD,QACzBm4D,EAAgBvmE,IAASumE,EAAgBG,QAC1C,EAKCg1C,EACF,GACC,CAAC77D,IAEJphD,qBAAU,KACRwyF,GAAc,EAAM,GACnB,IAGDn2F,eAAAC,WAAA,CAAAC,SAAA,CAUEW,cAACgoD,GAAoB,CACnB7D,gBAAgB,IAChB/C,YAAa,EACbC,YAAY,IACZ+F,mBAAmB,IAGrBpnD,cAAA,OAAKsH,UAAU,2CAA0CjI,SACd,KAApC,OAAJ2E,QAAI,IAAJA,GAA2B,QAAvB2sG,EAAJ3sG,EAAMmtG,6BAAqB,IAAAR,OAAvB,EAAJA,EAA6B9hG,QAC5B7O,cAAAZ,WAAA,IAEAY,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLu+D,QAAS,CACPC,YAAY,GAEdxqG,KAAM,UAERyjD,OAAQ,CAAC,WACTA,OAAQ,CAAC,WAETjuC,MAAO,CACLq1B,MAAO,OACPp9B,KAAM,GAAG9P,EACP,kJAEI,OAAJnC,QAAI,IAAJA,GAA2B,QAAvB4sG,EAAJ5sG,EAAMmtG,6BAAqB,IAAAP,GAAoB,QAApBC,EAA3BD,EAA6Bjb,0BAAkB,IAAAkb,GAA/CA,EAAiDQ,aACzC,OAAJrtG,QAAI,IAAJA,GAA2B,QAAvBs7G,EAAJt7G,EAAMmtG,6BAAqB,IAAAmO,GAAoB,QAApBC,EAA3BD,EAA6B3pB,0BAAkB,IAAA4pB,OAA3C,EAAJA,EACIlO,aACJ9b,UAIRhhD,SAAU,CACRlB,MAAO,QAEP5yC,MAAO,CACL7C,MAAO,OACPC,SAAU,QAEZ0Q,EAAG,IAELy2D,cAAe,CACb4wB,gBAAiB,CACfnxE,SAAS,IAGbiwB,MAAO,CACLlsC,KAAM,WACNA,KAAM,YAER8qC,MAAO,CACLt1B,MAAO,CACL/H,KAAM,GACNA,KAAM,KAIVy9B,YAAa,CACX7hB,OAAQ,CACN6tF,UAAU,EACVC,QAAQ,EACR5/G,aAAc,EACd81F,YAAa,EACbh7B,YAAa,SAEf9mB,OAAQ,CACN4wB,WAAY,CACVlgD,SAAS,EACTowB,OAAQ,gBACRA,OAAQ,mBAIdV,OAAQ,CACNwrE,QAAQ,GAEV7qE,QAAS,CACPsiC,QAAQ,EAER5S,YACE,0FAEJzwB,OAAY,OAAJ/vC,QAAI,IAAJA,GAA2B,QAAvBw7G,EAAJx7G,EAAMmtG,6BAAqB,IAAAqO,OAAvB,EAAJA,EAA6BzrE,OACrCoB,QAAS,CACP1wB,SAAS,UAMlB,EC3MMu7F,GAAgCpkG,IAAuB,IAAD+0F,EAAAC,EAAAC,EAAA,IAArB,OAAEj6C,EAAM,KAAEvyD,GAAMuX,EAC5D,MAAM,EAAEzV,GAAMC,eACR,cACJkvF,EAAa,gBACbx3B,EAAe,mBACfD,EAAkB,wBAClBG,GACEl8D,qBAAWC,MACRzD,EAAgBC,GAAqB2D,mBAAS,KAC9CkU,EAAMu5F,GAAWztG,mBAASgU,KAA0BE,MACrDy5F,EAAc,GACdD,GAAc,IAAIzqG,MAAO8J,eACxBsmF,EAAOC,GAAYtzF,mBAAS,GAC7B0oE,EAAkB,CACtBC,YAAQ,KACRC,aAAc,KACdC,QAAS,OAEL,KAAE/mE,GAASwW,aAASo1C,GAAiB,CACzCgG,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQA,EACRxgD,KAAMpZ,SAASoZ,GACfrV,SAAU6pE,EAAgBvmE,IAASumE,EAAgBG,SAErDrwD,YAAa,aAEf5X,qBAAU,KAAO,IAADmP,EAAAG,EACdkjF,GAAc,GACdz3B,EAAmB,CACjB,IACKC,EAAgB3X,UACnB5zC,UAAW,IAAIpN,MAAe,QAAV8M,EAAA,IAAI9M,YAAM,IAAA8M,OAAA,EAAVA,EAAY5M,WAAY,QAC5CoN,QAAS,IAAItN,KACb3J,IAAK,eAGTwiE,EAAwB,CACtB,IACKF,EAAgB3X,UACnB5zC,UAAW,IAAIpN,MAAe,QAAViN,EAAA,IAAIjN,YAAM,IAAAiN,OAAA,EAAVA,EAAY/M,WAAY,QAC5CoN,QAAS,IAAItN,KACb3J,IAAK,cAEP,GACD,IAOH,IAAK,IAAI6S,EAAI,KAAMA,GAAKuhG,EAAavhG,IACxB,OAAXwhG,QAAW,IAAXA,KAAa7oG,KAAK,CAChBuW,MAAOrhB,OAAOmS,GACd7T,MAAO8T,OAAOD,KAIlB,OACElP,eAAA,OAAKmI,UAAU,2CAA0CjI,SAAA,CACvDW,cAAA,OAAKsH,UAAU,mBAAkBjI,SAC/BW,cAACmsB,GAAM,CACL1uB,QAAoB,OAAXoyG,QAAW,IAAXA,OAAW,EAAXA,EAAa92B,UACtBv+E,MAAO8D,EACPgK,SAlBoB5I,IAC1BnB,EAAkBmB,EAAM0H,OAAO5M,OAC/Bm1G,EAAQjwG,EAAM0H,OAAO5M,MAAM,MAmBe,KAAnC,OAAJwJ,QAAI,IAAJA,OAAI,EAAJA,EAAMmtG,sBAAsBtiG,QAC3B7O,cAAAZ,WAAA,IAEAY,cAACozC,KAAe,CACdwY,WAAYhW,KACZn4C,QAAS,CACP+2C,MAAO,CACLu+D,QAAS,CACPC,YAAY,GAEdxqG,KAAM,UAERyjD,OAAQ,CAAC,WAETjuC,MAAO,CACLq1B,MAAO,OACPp9B,KAAM,GAAG9P,EACP,kJAEI,OAAJnC,QAAI,IAAJA,GAA2B,QAAvB2sG,EAAJ3sG,EAAMmtG,6BAAqB,IAAAR,GAA3BA,EAA6Bhb,mBAAmB0b,aACxC,OAAJrtG,QAAI,IAAJA,GAA2B,QAAvB4sG,EAAJ5sG,EAAMmtG,6BAAqB,IAAAP,OAAvB,EAAJA,EAA6Bjb,mBAAmB0b,aAChD9b,UAIRhhD,SAAU,CACRlB,MAAO,OACPp9B,KAAM,GACNo9B,MAAO,OACPp9B,KAAM,IAER+uD,cAAe,CACb4wB,gBAAiB,CACfnxE,SAAS,IAGbiwB,MAAO,CACLlsC,KAAM,YAER8qC,MAAO,CACLt1B,MAAO,CACL/H,KAAM,KAGVk+B,OAAQ,CACN1vB,SAAS,GAEXivB,YAAa,CACX7hB,OAAQ,CACN6tF,UAAU,EACVC,QAAQ,EACR5/G,aAAc,EACd81F,YAAa,EACbh7B,YAAa,SAEf9mB,OAAQ,CACN4wB,WAAY,CACVlgD,SAAS,EACTowB,OAAQ,mBAKdC,QAAS,CACPE,aACE,wDACFwvB,YACE,uFACFxvB,aACE,wDACFwvB,YACE,wFAEJzwB,OAAY,OAAJ/vC,QAAI,IAAJA,GAA2B,QAAvB6sG,EAAJ7sG,EAAMmtG,6BAAqB,IAAAN,OAAvB,EAAJA,EAA6B98D,OACrCoB,QAAS,CACP1wB,SAAS,QAKb,ECrJJzb,GAAYC,cAAYoT,IAAK,CACjCnT,KAAM,CACJ,uBAAwB,CACtBrJ,OAAQwc,EAAMwY,QAAQ,KAG1BjM,OAAQ,CACN4lC,QAAS,WAIAyxD,GAAgBrkG,IAAuB,IAAtB,OAAEg7C,EAAM,KAAEvyD,GAAMuX,EAC5C,MAAM,EAAEzV,GAAMC,eACP5L,EAAOkI,GAAYrE,WAAe,KAMnC2gH,GALUh2G,KAIG,IAAI7D,KACL85G,IAAQ,CACxBpkD,YAAa,UACbqkD,oBAAqB,OACrBvgF,UAAW,oCACXqB,UAAW,yBACPxlC,IAAUykH,GAAY,CACxBtgF,UAAW,oCACX9gC,SAAU,OACVg9D,YAAa,UACb76B,UAAW,sBACXk/E,oBAAqB,OACrBC,qBAAsB,OACtBpgG,WAAY,OACZnhB,MAAO,cAIX,OACEoC,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE1B,MAAO,OAAQgC,OAAQ,OAAQ+pG,WAAY,SAAU5qG,SAC9DF,eAAC+qG,KAAU,CAAC1vG,MAAOA,EAAOoF,GAAI,CAAEhC,MAAO,WAAYyB,SAAA,CACjDW,cAACy/B,KAAG,CAAC7/B,GAAI,CAAC,EAAEP,SACVF,eAACirG,KAAO,CACNgV,eAAe,OACf92G,SA3BWgV,CAAC5d,EAAOiwC,KAC3BjtC,EAASitC,EAAS,EA2BV,aAAW,uBAAsBtwC,SAAA,CAEjCW,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EACL,2IAEF3L,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EACL,4IAEF3L,MAAM,MAERwF,cAACqqG,KAAG,CACF5pG,MAAOu+G,EAAS,KAChBzhG,MAAOpX,EACL,4IAEF3L,MAAM,WAIZwF,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACq/G,GAAyB,CAACh7G,KAAMA,EAAMuyD,OAAQA,MAEjD52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAAC4/G,GAAiC,CAACv7G,KAAMA,EAAMuyD,OAAQA,MAEzD52D,cAACsqG,KAAQ,CAAC9vG,MAAM,IAAG6E,SACjBW,cAACggH,GAA6B,CAAC37G,KAAMA,EAAMuyD,OAAQA,UAGnD,EC+PKspD,OA/SY7nE,sBAAW,CAAC16C,EAAOwK,KAAS,IAADg4G,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpD,MAAM,OAAExqD,EAAM,KAAEyqD,EAAI,KAAEh9G,EAAI,iBAAEi9G,GAAqB3jH,GAC3C,EAAEwI,GAAMC,eACR,KAAEpC,GAASwW,aAASk1C,GAAqB,CAC7CkG,OAAQmY,gBACRvnE,UAAW,CAAEowD,OAAQA,GACrBl8C,YAAa,cAGT,WACJ82F,EAAU,cACVlc,EAAa,QACbl+C,EAAO,WACPwB,EAAU,IACV0pB,EAAG,OACHC,EAAM,cACN1pB,EAAa,QACbk2D,EAAO,gBACPjxC,GACEh8D,qBAAWC,MACRuvB,EAAWiwF,GAAgBr/G,mBAAS,KACpCs/G,EAAuBC,GAA4Bv/G,mBAAS,KAC5Dw/G,GAAuBl/G,YAAYizC,IAEpCm1B,EAAkB,CACtBC,YAAQ,KACRC,aAAc,KACdC,QAAS,MAEXC,OAAOC,OAAOL,GAEd,MAAOzwB,EAASC,GAAcl4C,qBACxBg4C,EAAW7hB,mBACXspF,EAAYtpF,mBAEZupF,EAA4B3oG,GACQ,QADQknG,EAChDnjH,SAAa,OAAJgH,QAAI,IAAJA,GAAwB,QAApBo8G,EAAJp8G,EAAM69G,gBAAgB,UAAE,IAAAzB,OAApB,EAAJA,EAA0BpH,aAAK,IAAAmH,OAAA,EAAxCA,EAA0C7jH,YAEtCwlH,EAA4B7oG,GACQ,QADQonG,EAChDrjH,SAAa,OAAJgH,QAAI,IAAJA,GAAwB,QAApBs8G,EAAJt8G,EAAM69G,gBAAgB,UAAE,IAAAvB,OAApB,EAAJA,EAA0BnH,aAAK,IAAAkH,OAAA,EAAxCA,EAA0C/jH,YAEtCylH,EAA4B9oG,GACQ,QADQsnG,EAChDvjH,SAAa,OAAJgH,QAAI,IAAJA,GAAwB,QAApBw8G,EAAJx8G,EAAM69G,gBAAgB,UAAE,IAAArB,OAApB,EAAJA,EAA0BlH,aAAK,IAAAiH,OAAA,EAAxCA,EAA0CjkH,YAGtC0lH,EAAa,OAAJX,QAAI,IAAJA,OAAI,EAAJA,EAAMY,OAEfC,GAAwB,OAAJl+G,QAAI,IAAJA,GAAwB,QAApBy8G,EAAJz8G,EAAM69G,gBAAgB,UAAE,IAAApB,OAApB,EAAJA,EAA0BzH,KAC9CmJ,GAAwB,OAAJn+G,QAAI,IAAJA,GAAwB,QAApB08G,EAAJ18G,EAAM69G,gBAAgB,UAAE,IAAAnB,OAApB,EAAJA,EAA0BvH,KAC9CiJ,GAAwB,OAAJp+G,QAAI,IAAJA,GAAwB,QAApB28G,EAAJ38G,EAAM69G,gBAAgB,UAAE,IAAAlB,OAApB,EAAJA,EAA0BrH,KAE9C+I,GAA0B,OAAJr+G,QAAI,IAAJA,GAAwB,QAApB48G,EAAJ58G,EAAM69G,gBAAgB,UAAE,IAAAjB,OAApB,EAAJA,EAA0BrU,IAChD+V,GAA0B,OAAJt+G,QAAI,IAAJA,GAAwB,QAApB68G,EAAJ78G,EAAM69G,gBAAgB,UAAE,IAAAhB,OAApB,EAAJA,EAA0BlU,IAChD4V,GAA0B,OAAJv+G,QAAI,IAAJA,GAAwB,QAApB88G,EAAJ98G,EAAM69G,gBAAgB,UAAE,IAAAf,OAApB,EAAJA,EAA0B/T,IAEhDyV,GAA2B,OAAJx+G,QAAI,IAAJA,GAAwB,QAApB+8G,EAAJ/8G,EAAM69G,gBAAgB,UAAE,IAAAd,OAApB,EAAJA,EAA0BvU,IACjDiW,GAA2B,OAAJz+G,QAAI,IAAJA,GAAwB,QAApBg9G,EAAJh9G,EAAM69G,gBAAgB,UAAE,IAAAb,OAApB,EAAJA,EAA0BpU,IACjD8V,GAA2B,OAAJ1+G,QAAI,IAAJA,GAAwB,QAApBi9G,EAAJj9G,EAAM69G,gBAAgB,UAAE,IAAAZ,OAApB,EAAJA,EAA0BjU,IAEjD2V,GAA8B,OAAJ3+G,QAAI,IAAJA,GAAwB,QAApBk9G,EAAJl9G,EAAM69G,gBAAgB,UAAE,IAAAX,OAApB,EAAJA,EAA0BjI,KACpD2J,GAA8B,OAAJ5+G,QAAI,IAAJA,GAAwB,QAApBm9G,EAAJn9G,EAAM69G,gBAAgB,UAAE,IAAAV,OAApB,EAAJA,EAA0B/H,KACpDyJ,GAA8B,OAAJ7+G,QAAI,IAAJA,GAAwB,QAApBo9G,EAAJp9G,EAAM69G,gBAAgB,UAAE,IAAAT,OAApB,EAAJA,EAA0B7H,KAe1Dz2G,qBAAU,KACRwyF,GAAc,EAAK,GAClB,IAEHxyF,qBAAU,KACJs0C,GAmDN,WACE,IAAK,IAAD0rE,EAAAC,EACF,MAAMv8G,EAAY,CAChBowD,OAAQA,EACR71D,SAAU6pE,EAAgBvmE,IAASumE,EAAgBG,QACnD30D,MAAM,IAAIjR,MAAO8J,cAAgB,IACjC+zG,SAAUhmH,SAASkZ,KAA0BE,MAE7CpS,KAAM,CACJgoE,WAAY,CACVi3C,QAASjB,EACT1/C,IAAK,CACH,CACE4gD,KAAM,IACN1oH,MAAO0nH,GACPiB,QAASd,GACTe,SAAUZ,GACVa,QAASV,GACTW,gBAAiB1B,GAEnB,CACEsB,KAAM,IACN1oH,MAAO2nH,GACPgB,QAASb,GACTc,SAAUX,GACVY,QAAST,GACTU,gBAAiBxB,GAEnB,CACEoB,KAAM,IACN1oH,MAAO4nH,GACPe,QAASZ,GACTa,SAAUV,GACVW,QAASR,GACTS,gBAAiBvB,KAIvBzwF,UAAWA,EACX8zC,MAAOo8C,GAET1qG,UAA6B,QAApBgsG,EAAEhlD,EAAgB,UAAE,IAAAglD,OAAA,EAAlBA,EAAoBvwG,UAC/BgxG,eAAgBvmH,SAASyhE,GAAMswC,GAASxxC,OACxC7iB,WAA8B,QAApBqoE,EAAEjlD,EAAgB,UAAE,IAAAilD,OAAA,EAAlBA,EAAoBtwG,QAChC+wG,gBAAiBxmH,SAASyhE,GAAMswC,GAASvxC,KACzC74B,YAAa9lC,aAAaC,QAAQ,eAClCklC,SAAUnlC,aAAaC,QAAQ,QAC/B67C,aAAc97C,aAAaC,QAAQ,cACnC87C,UAAW/7C,aAAaC,QAAQ,cAExB,IAAD2kH,EAAT,GAAInhD,EACO,OAAT97D,QAAS,IAATA,GAAgB,QAAPi9G,EAATj9G,EAAW60B,aAAK,IAAAooF,GAAhBA,EAAkBz8G,KAAKs7D,GAEzBo/C,EAAoB,CAClBl7G,cAECE,MAAM1D,IACLo3C,EAAWp3C,EAAOgB,KAAK0/G,cAAc,IAEtCz8G,OAAOC,IACNzC,QAAQD,MAAM0C,EAAI,GAExB,CAAE,MAAOA,GACPzC,QAAQD,MAAM0C,EAChB,CACF,CAnHI4zC,EACF,GACC,CAAC1D,IAEJt0C,qBAAU,KACJq3C,GACFY,IACF,GACC,CAACZ,IAEJyB,8BAAoBzzC,GAAK,MACvB,mBAAMw7G,GACJ9qE,GAAc,SACRiD,IACR,MAGF,MAAMA,GAAexhD,UACnB,MAAMs0B,EAAUsrB,EAASrf,QACnB+oF,EAAWjC,EAAU9mF,QACrBW,QAAeyhB,KAAYruB,GAC3Bi1F,QAAgB5mE,KAAY2mE,GAC5B5/G,EAAOw3B,EAAOK,UAAU,aACxBioF,EAAQD,EAAQhoF,UAAU,aAChC+c,EAAW50C,EAAKzH,MAAM,KACtBgmE,EAAOuhD,EAAMvnH,MAAM,IAAI,EAGnBw+C,GAAYA,KAChB,MAAMmC,EAAa,+BAA+B/C,IAC5CgD,EAAe7hB,SAASC,cAAc,KAE5C4hB,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAFI,8BAGjBD,EAAariB,QACb+d,GAAc,GACduB,EAAW,IACXxB,EAAW,IACX2pB,EAAO,GAAG,EA+EZ,OACEpjE,eAACopB,WAAQ,CAAAlpB,SAAA,CACPW,cAACy/B,KAAG,CACF7/B,GAAI,CACF6xG,SAAU,EACVpoG,UAAW,EACX0T,gBAAiB,wBACjB1d,SAEFF,eAACu+C,KAAI,CAACC,WAAS,EAAC9oB,QAAS,EAAGj1B,GAAI,CAAE8xG,GAAI,KAAMC,GAAI,QAAStyG,SAAA,CACvDW,cAAC09C,KAAI,CAACt0B,GAAI,GAAIC,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAEnqB,SACxCW,cAAC05G,GAAY,CAAC9iD,OAAQA,EAAQqjD,aAAcoH,MAE9CrhH,cAAC09C,KAAI,CAACt0B,GAAI,GAAIC,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAEnqB,SACxCW,cAAC84G,GAAa,CACZC,mBAAwB,OAAJ/0G,QAAI,IAAJA,OAAI,EAAJA,EAAM69G,gBAAgB,GAC1CjrD,OAAQA,MAGZ52D,cAAC09C,KAAI,CAACt0B,GAAI,GAAIC,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAEnqB,SACxCW,cAACk5G,GAAa,CACZtiD,OAAQA,EACRmiD,mBAAwB,OAAJ/0G,QAAI,IAAJA,OAAI,EAAJA,EAAM69G,gBAAgB,OAG9C7hH,cAAC09C,KAAI,CAACt0B,GAAI,GAAIC,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAEnqB,SACxCW,cAACq5G,GAAa,CACZziD,OAAQA,EACRmiD,mBAAwB,OAAJ/0G,QAAI,IAAJA,OAAI,EAAJA,EAAM69G,gBAAgB,OAI9C1iH,eAAA,OACEsB,MAAO,CAAEgc,QAAS,OAAQC,cAAe,SAAUxe,MAAO,QAASmB,SAAA,CAEnEF,eAAA,OAAKgJ,IAAK+xC,EAAS76C,SAAA,CACjBW,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ5pB,GAAI,CAAEM,OAAQ,UAEhBF,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ5pB,GAAI,CAAEM,OAAQ,SAAUb,SAExBW,cAACigH,GAAa,CAACrpD,OAAQA,EAAQvyD,KAAMA,SAIzCrE,cAAA,OAAKmI,IAAKw5G,EAAUtiH,UACF,IAAfmyG,EACCxxG,cAAC09C,KAAI,CACHt0B,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ5pB,GAAI,CAAEM,OAAQ,SAAUb,SAExBW,cAAC++G,GAAgB,CAACnoD,OAAQA,MAG5B52D,cAAAZ,WAAA,SAKNY,cAAC09C,KAAI,CACHC,WAAS,EACTv0B,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ5pB,GAAI,CAAE1B,MAAO,OAAQmB,UAEL,IAAfmyG,EACCxxG,cAAC0wG,GAAiB,CAChB95C,OAAQA,EACRvyD,KAAMA,EACNysG,qBAnKgB9sG,IAAU,IAAD2sG,EAAAC,EAAAC,EAAAyO,EACrC,MAAMhuF,EAAgB,OAAJttB,QAAI,IAAJA,GAA2B,QAAvB2sG,EAAJ3sG,EAAMmtG,6BAAqB,IAAAR,GAAS,QAATC,EAA3BD,EAA6BS,eAAO,IAAAR,OAAhC,EAAJA,EAAsCS,aAClDjsC,EAAY,OAAJphE,QAAI,IAAJA,GAA2B,QAAvB6sG,EAAJ7sG,EAAMmtG,6BAAqB,IAAAN,GAAoB,QAApByO,EAA3BzO,EAA6Blb,0BAAkB,IAAA2pB,OAA3C,EAAJA,EAAiDjO,aAC/DkQ,EAAajwF,GACbmwF,EAAyBr8C,EAAM,IAkKrBplE,cAAAZ,WAAA,WAKRY,cAACk9D,GAAY,CACXC,YAAah3D,EACX,mHAGK,IChUR,MAAM49G,GAAuBnoG,IAAkD,IAAjD,KAACpd,EAAI,OAAEo4D,EAAM,SAAE9wD,EAAQ,kBAAEsxG,GAAkBx7F,EAC5E,MAAOy7F,EAAaC,GAAkBp1G,sBAC/Bq1G,EAAWC,GAAgBt1G,sBAC3Bu1G,EAAUC,GAAcx1G,sBACxB8hH,EAAaC,GAAkB/hH,oBAAS,IACzC,gBAAE47D,GAAmBh8D,qBAAWC,KAEhC4iC,EAAc9lC,aAAaC,QAAQ,eAGpCwmG,GAFSzmG,aAAaC,QAAQ,aAEfwmG,KACpB8R,GAAkB,EAAM,GAwBlBnsG,EAAe8U,IACnBA,EAAE8mB,iBACF9mB,EAAEpgB,cAAci4G,cAAc,SAASC,YAAY,GAI1CqM,GAAS,KAAClgH,EAAI,QAAEuW,EAAO,MAAC/V,IAAU8sC,aAAaqE,GAA2B,CAACigB,OAAQmY,kBAsDxF+pC,EAAWA,CAACT,EAAaE,KAC7B,MAAMQ,EAAe,IAAI5yG,KAAKkyG,GAAahyG,UAEzC,OADmB,IAAIF,KAAKoyG,GAAWlyG,UACrB0yG,EACT,CAACxlG,UAAY8kG,EAAa5kG,QAAQ8kG,GAElC,CAAChlG,UAAUglG,EAAW9kG,QAAS4kG,EACxC,EAGEW,EAAaA,CAAC11F,EAAM/P,EAAWE,KAE/B,MAAMyqC,EAAa,gCAAgC56B,IAC7C66B,EAAe7hB,SAASC,cAAc,KACtCmoC,EAAW,kCAA+B/+B,KAAepyB,OAAeE,SAC7E0qC,EAAav0C,KAAOs0C,EACpBC,EAAaC,SAAWsmB,EACxBvmB,EAAariB,QA7FpBwqE,IACAgS,IACAE,IACAE,GA2F4B,EAItBp2D,GAAc,IAAIn8C,MAAOsmD,cAAc5uD,MAAM,KAAK,GAQ1D,OACEsC,eAACoiB,KAAM,CACP3hB,GAAI,CACA,qBAAsB,CACpB1B,MAAO,MACPwC,UAAW,IACXX,aAAc,QAGlBgiB,SAAS,KACTvjB,KAAMA,EAAKa,SAAA,CACRF,eAAC6kB,KAAW,CACbpkB,GAAI,CACFiI,WAAY,UACZjK,MAAO,QACPsmB,WAAY,yBACZzH,QAAS,OACTF,WAAY,SACZI,eAAgB,gBAChBs7F,aAAc,OACdp6G,SAAS,QACTwB,SAAA,CAGFW,cAAA,KAAGS,MAAO,CAAC6I,WAAW,QAAQjK,SAAC,6CAC3B2kH,EAC0F,KAA5FhkH,cAACskB,KAAM,CAAC1kB,GAAI,CAAEhC,MAAO,QAASoe,YAAa,SAAYvc,QAAS6lG,EAAajmG,SAAC,UAIhF2kH,EAyEA7kH,eAACilB,KAAa,CAAA/kB,SAAA,CAChBW,cAAA,KACES,MAAO,CACLyjB,WAAY,yBACZ1H,UAAW,UACX5e,MAAO,SACPyB,SACH,+FACC2kH,GACDhkH,cAAA,OAAKS,MAAO,CAAEgc,QAAS,OAAQy7F,YAAa,SAAUz/C,UAAW,SAAUnvD,WAAY,OAAQpJ,OAAQ,QAAUhC,MAAO,SAASmB,SACjIW,cAACmxE,GAAe,SAlFjBhyE,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACilB,KAAa,CAAA/kB,SAAA,CACdW,cAAA,KACES,MAAO,CACLyjB,WAAY,yBACZ1H,UAAW,UACX5e,MAAO,SACPyB,SACH,yDACDF,eAAA,OAAKsB,MAAO,CAAEgc,QAAS,OAAQC,cAAe,SAAU5c,IAAK,QAAST,SAAA,CACpEW,cAACgiB,KAAS,CACR1Z,SA7IoByX,IACxB,MAAMhN,EAAMgN,EAAE3Y,OAAO5M,MACrB88G,EAAevkG,EAAK,EA4IhBzX,KAAK,cACL++D,WAAS,EACT7xD,KAAK,OACL4f,KAAK,QACLC,WAAY,CACVzoB,GAAI,CAAEG,aAAc,QAEtBwd,MAAM,gBACN46F,gBAAiB,CACjBC,QAAQ,GAERv4E,WAAY,CAAE2T,IAAK8N,GACnB7hD,QAAUsgB,GAAM9U,EAAY8U,KAE9B/f,cAACgiB,KAAS,CACR1Z,SAzJkByX,IACtB,MAAMs4F,EAAUt4F,EAAE3Y,OAAO5M,MACzBg9G,EAAaa,EAAQ,EAwJjBz2F,cAA0BpiB,IAAhB63G,GAA6C,KAAhBA,EACvC/7G,KAAK,YACL++D,WAAS,EACT98C,MAAM,cACN46F,gBAAiB,CACjBC,QAAQ,GAER5vG,KAAK,OACL4f,KAAK,QACLC,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,QAClC8/B,WAAY,CAAE2T,IAAK8N,GACnB7hD,QAAUsgB,GAAM9U,EAAY8U,WAK7B/f,cAACuoF,KAAa,CACd3oF,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBvT,QAAS,iBACT/J,SAGFW,cAACskB,KAAM,CACL+1C,WAAS,EACTz6D,GAAI,CACFG,aAAc,MACdwJ,aAAc,MACdwT,gBAAiB,UACjBnf,MAAO,QACPsmB,WAAY,0BACZ,UAAW,CACTnH,gBAAiB,YAGjBtd,QAlLQ64G,KACf,MAAMvoG,EAAQ+nG,EAAUT,EAAaE,GAErC,IACC2M,EAAQ,CACH19G,UAAU,CACNowD,OAAOA,EACP9/C,UAAU,IAAI3R,KAAK4K,EAAMwC,WACzBwE,QAAQ,IAAI5R,KAAK4K,EAAM0C,WAE7BwxG,GAAe,IAChBv9G,MAAMC,IAAW,IAAD6xG,EAAA2L,EAAAC,EAEC1L,EAAA2L,EAAAC,GADV5M,EAAsB,QAAXc,EAAC7xG,EAAM3C,YAAI,IAAAw0G,GAA0B,QAA1B2L,EAAV3L,EAAY+L,gCAAwB,IAAAJ,GAAM,QAANC,EAApCD,EAAsCK,YAAI,IAAAJ,OAAhC,EAAVA,EAA4CK,YACrD99G,IACDqxG,EAAqB,QAAXU,EAAC/xG,EAAM3C,YAAI,IAAA00G,GAA0B,QAA1B2L,EAAV3L,EAAY6L,gCAAwB,IAAAF,GAAM,QAANC,EAApCD,EAAsCG,YAAI,IAAAF,OAAhC,EAAVA,EAA4CG,WAAY10G,EAAMwC,UAAWxC,EAAM0C,SAE5FwxG,GAAe,EAAM,IAE1Bh9G,OAAOC,IACNzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,GA4JG0a,cAtGapiB,IAAhB63G,QACc73G,IAAd+3G,GACgB,KAAhBF,GACa,KAAdE,QAAH,EAmG2Cl4G,SAEpCW,cAAA,KAAAX,SAAG,8BAuBC,EC1NX2J,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,SAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,OAGJm1B,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAEa+mH,GAAoB9oG,IAO1B,IAADrR,EAAA,IAP4B,OAChCqsD,EAAM,MACN6W,EAAK,MACLjvB,EAAK,KACLn6C,EAAI,SACJkqE,EAAQ,iBACR+yC,GACD1lG,EACC,MAAM,EAAEzV,GAAMC,cACRqD,EAAUT,MACV,oBACJgB,EAAmB,WACnBirD,EAAU,mBACV4I,EAAkB,gBAClBC,EAAe,wBACfE,EAAuB,qBACvBD,EAAoB,WACpB7qD,GACEpR,qBAAWC,MACRqwG,EAAiBC,GAAsBnwG,oBAAS,IAChDyiH,EAAUC,GAAe1iH,oBAAS,IAClC2iH,EAAgBzN,GAAqBl1G,oBAAS,GAC/C1D,EAAOC,QAAQkmH,GACfhvD,EAAWt9B,mBAWXysF,IAVa,IAAI3/G,MAAOE,UAUAy/G,KAC5B1N,GAAmByN,EAAe,GAwB9B93B,EAAsBA,KAE1BslB,GAAmB,EAAM,EAG3B,OACEryG,cAAAZ,WAAA,CAAAC,SACGm/C,EACCr/C,eAAAC,WAAA,CAAAC,SAAA,CACG,IACDF,eAAA,OACEM,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCioG,YAjCvBuS,MAEvB1S,GAAmB,GACnBx0C,EAAmB,CACjB,IACKC,EAAgB3X,UACnB5zC,UAAW,IAAIpN,KACfsN,QAASwxD,mBAAQ,IAAI9+D,KAAQ,GAC7B3J,IAAK,eAGTwiE,EAAwB,CACtB,IACKD,EAAqB5X,UACxB5zC,UAAW,IAAIpN,KACfsN,QAASwxD,mBAAQ,IAAI9+D,KAAQ,GAC7B3J,IAAK,cAGX,GAkBQ8L,UAAU,uBAAsBjI,SAAA,CAEhCW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,OAAKsH,UAAU,oBAAmBjI,SAChCW,cAAA,QAAAX,SAAOm/C,GAAgBoY,QAI3B52D,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCF,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCW,cAAA,QAAMsH,UAAU,yBAAwBjI,SAC7B,OAARkvE,QAAQ,IAARA,OAAQ,EAARA,EAAU0zC,SAEbjiH,cAAA,QAAMsH,UAAU,sBAAqBjI,SAAC,aAG1CW,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAACyrG,KAAqB,CACpBC,SAAU,IACVW,YAAa,GACbV,OAAO,wBACP9jG,WAAW,0BACX+jG,WAAY,GAAG3yF,GAAyB,OAARs1D,QAAQ,IAARA,OAAQ,EAARA,EAAUs/B,UAG9C1uG,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,MACpCW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAAC,cAEtCF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CAChC,OAARkvE,QAAQ,IAARA,OAAQ,EAARA,EAAUs/B,GAAG,eAGlB1uG,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAM4zG,EACN9xG,QAASysF,EACTpzB,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,EAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASstF,EACT,aAAW,QAAO1tF,SAElBW,cAACmkB,KAAS,MAEZnkB,cAACie,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,EAAQuU,MAAM3e,SAC/C,IAAIR,aAAaC,QAAQ,oBAAoBqH,EAC5C,wIACGywD,OAEPz3D,eAAAC,WAAA,CAAAC,SAAA,CACEF,eAACmlB,KAAM,CACL/kB,GAAG,eACH,gBAAef,EAAO,kBAAegB,EACrC,gBAAc,OACd,gBAAehB,EAAO,YAASgB,EAC/BC,QA7GOsgB,IACvB6kG,EAAY7kG,EAAEpgB,cAAc,EA6GZC,GAAI,CAAEhC,MAAO,WAAYyB,SAAA,CASxB8G,EACC,wIAaFnG,cAAC+5D,KAAY,CACXn6D,GAAI,CAAEM,OAAQ,OAAQhC,MAAO,OAAQoL,WAAY,YAGrDnK,eAACiB,IAAI,CACHb,GAAG,aACHpB,SAAUwmH,EACVnmH,KAAMmmH,EACNrkH,QAzIO0kH,KACvBJ,EAAY,KAAK,EAyIDvkH,cAAe,CACb,kBAAmB,gBACnBhB,SAAA,CAEFF,eAAC0B,IAAQ,CAACpB,QAASA,IAAMk2D,EAAS96B,QAAQ8oF,gBAAgBtkH,SAAA,CAAC,MAEzDW,cAACi6D,KAAQ,CACPr6D,GAAI,CACFhC,MAAO,OACPmlC,OAAS1mB,GAAUA,EAAM0mB,OAAOo3B,OAAS,GAE3C37D,OAAMy2D,EACNx1D,QAASw1D,EAIT51D,SAEAW,cAACwoB,KAAgB,CAAC5qB,MAAM,iBAG5BoC,cAACa,IAAQ,CAACpB,QAASqlH,EAAsBzlH,SAAC,oBAMlDW,cAAC+jH,GAAoB,CACnBntD,OAAQA,EACRp4D,KAAMqmH,EACNzN,kBAAmB0N,IAGrB9kH,cAACkgH,GAAkB,CACjB77G,KAAMA,EACNg9G,KAAM9yC,EACN3X,OAAQA,EACR0qD,iBAAkBA,EAClBn5G,IAAKwtD,OAEC,OAEV,MACH,ECvNP,IAAIsvD,GAAS,KACb,MAAMj8G,GAAYC,cAAYoT,IAAK,CACjC46B,OAAQ,CACNl6B,gBAAiB,UACjBoF,SAAU,SAEZnE,MAAO,CACL1U,WAAY+S,EAAMwY,QAAQ,GAC1ByJ,KAAM,EACNzgC,SAAU,UACV,CAACwe,EAAMyH,YAAYC,KAAK,OAAQ,CAAElmB,SAAU,aAG1C41D,GAAap1D,IAAMg6C,YAAW,SAAoB16C,EAAOwK,GAC7D,OAAOnI,cAAC0zD,KAAK,CAAC7N,UAAU,KAAK19C,IAAKA,KAASxK,GAC7C,IAgeeunH,OAvdGA,KAAO,IAADjrG,EAAAkxD,EAAAypB,EAAAtpB,EAAA/gE,EAAA8gE,EAAA7gE,EAAA26G,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACtB,MAAM,EAAEt/G,GAAMC,eACR,SACJs/G,EAAQ,cACRvjD,EAAa,kBACbnN,EAAiB,WACjBC,EAAU,kBACV0gB,EAAiB,gBACjBvwB,EAAe,aACfuY,EAAY,OACZ/G,EAAM,UACN7B,EAAS,mBACTk9C,EAAkB,sBAClBC,EAAqB,mBACrBC,EAAkB,oBAClBnoG,EAAmB,mBACnB27G,EAAkB,sBAClBC,EAAqB,wBACrBx5C,EAAuB,2BACvBD,EAA0B,wBAC1B9kB,GACEvlD,qBAAWC,MACRwqF,EAAcC,GAAmBtqF,oBAAS,IAC1CkwG,EAAiBC,GAAsBnwG,oBAAS,IAChD2jH,EAAUC,GAAe5jH,oBAAS,IAClC6jH,EAAmBC,GAAwB9jH,mBAAS,KACpD+jH,EAASC,GAAchkH,mBAAS,KAChCikH,EAAUC,GAAelkH,mBAAS,IAEnCuH,EAAUT,MAET7K,GAAUC,KADUC,IAAMg6B,OAAO,MACRh6B,IAAM6D,SAAS,QACxC2iH,GAAgBzN,IAAqBl1G,oBAAS,GAC/C1D,GAAOC,QAAQN,IACfw3D,GAAWt9B,oBAEX,yBAAEo+B,GAAwB,4BAAEF,IAAgCrwD,4wBAC5D3F,GAAcA,KAClBisF,GAAgB,GAChBx3B,GAAkB,EAAM,EAkBpBqxD,GAAiBA,KACrBjoH,GAAY,KAAK,EAObwsE,GAAkB,CACtBC,YAAQ,KACRC,aAAc,KACdC,QAAS,MAEXC,OAAOC,OAAOL,IAEd,MAAM,KAAE5mE,GAAI,QAAEuW,GAAO,QAAEsR,IAAYrR,aAASy0C,GAA8B,CACxEzoD,UAAW,CAAEiU,UAAWzd,SAAS6B,aAAaC,QAAQ,MAAO,KAC7D4b,YAAa,iBAGT4rG,GAAc,OAAJtiH,SAAI,IAAJA,IAAyB,QAArBiW,EAAJjW,GAAM6W,2BAAmB,IAAAZ,OAArB,EAAJA,EAA2BssG,SAAQjkG,GACjDA,EAAKxH,QAAQ9e,KAAIwqH,GAAUA,EAAO5vD,WAG9B6vD,GAAe,OAAJziH,SAAI,IAAJA,IAA0B,QAAtBmnE,EAAJnnE,GAAMipE,4BAAoB,IAAA9B,OAAtB,EAAJA,EAA4B9mE,MAErCL,KAAM0iH,GAAensG,QAASosG,IAAkBnsG,aACtDm1C,GACA,CACEiG,OAAQmY,gBACRvnE,UAAW,CACTowD,OAAQ0vD,GACRvlH,SAAU6pE,GAAgB67C,KAAa77C,GAAgBG,SAEzDrwD,YAAa,aAIX4mG,GAAuB,OAAJt9G,SAAI,IAAJA,IAA0B,QAAtB4wF,EAAJ5wF,GAAMipE,4BAAoB,IAAA2nB,OAAtB,EAAJA,EAA4Bn7D,WAYtB1zB,KAAK4Q,MAClCwE,eAAerc,QAAQ,mBAGzB,MA4BM8nH,GA5BuBC,MAAO,IAADC,EAAAC,EACjC,MAAMC,EAAuB,CAAC,EACxBJ,EAAqB,OAAJ5iH,SAAI,IAAJA,IAAyB,QAArB8iH,EAAJ9iH,GAAM6W,2BAAmB,IAAAisG,OAArB,EAAJA,EAA2BP,SAASjkG,GACzDA,EAAKxH,QAAQ9e,KAAKqS,IAAC,CACjBuoD,OAAS,OAADvoD,QAAC,IAADA,OAAC,EAADA,EAAGuoD,OACXpY,MAAQ,OAADnwC,QAAC,IAADA,OAAC,EAADA,EAAGmwC,MACVgvB,OAAS,OAADn/D,QAAC,IAADA,OAAC,EAADA,EAAGo/D,YAUf,OANc,OAAdm5C,QAAc,IAAdA,KAAgBz4C,SAAS7rD,IACf,OAAJA,QAAI,IAAJA,KAAMs0C,SACRowD,EAAyB,OAAJ1kG,QAAI,IAAJA,OAAI,EAAJA,EAAMs0C,QAAUt0C,EACvC,IAGkB,OAAbokG,SAAa,IAAbA,IAAuC,QAA1BK,EAAbL,GAAer4C,gCAAwB,IAAA04C,OAA1B,EAAbA,EAAyC/qH,KAAKsmB,IACoB,IAAD2kG,EAAAC,EAAtE,OAAQ,OAAJ5kG,QAAI,IAAJA,KAAMgsD,eAAiB04C,EAAyB,OAAJ1kG,QAAI,IAAJA,OAAI,EAAJA,EAAMgsD,eAC7C,IACFhsD,EACHk8B,OAAgD,QAAzCyoE,EAAAD,EAAyB,OAAJ1kG,QAAI,IAAJA,OAAI,EAAJA,EAAMgsD,sBAAc,IAAA24C,OAAA,EAAzCA,EAA2CzoE,QAAS,KAC3DgvB,QAAiD,QAAzC05C,EAAAF,EAAyB,OAAJ1kG,QAAI,IAAJA,OAAI,EAAJA,EAAMgsD,sBAAc,IAAA44C,OAAA,EAAzCA,EAA2C15C,SAAU,MAG1DlrD,CAAI,GACX,EAGmBukG,GA0DvB,SAAS55B,GAAKjpF,EAAM+R,GACK,GAAnB/R,EAAKmjH,YACPlC,GAAOptD,KACL9xD,KAAKC,UAAU,CAGbuoE,SAAU,eACVrxD,OAAQ,SACR1iB,MAAOub,EAAQ,IAAM,MAI7B,CAkBA,OAtFAjT,qBAAU,KACJkB,KACFgiH,EAAqBhiH,GAAK+W,wBA9CbqsG,MACf,GAA+B,KAAb,OAAdR,SAAc,IAAdA,QAAc,EAAdA,GAAgB/3G,QAAc,CAAC,IAADu8D,EAChC,MAAMi8C,EAAyB,OAAdT,SAAc,IAAdA,QAAc,EAAdA,GAAgBp3G,QAAQnB,GAAkB,cAAZA,EAAEo/D,QACjDy4C,EAAWmB,GACX,MAAMC,EAAgB,OAAJtjH,SAAI,IAAJA,IAAyB,QAArBonE,EAAJpnE,GAAM6W,2BAAmB,IAAAuwD,OAArB,EAAJA,EAA2B57D,QAC1CnB,GAAkB,eAAZA,EAAEo/D,QAEX24C,EAAYkB,EACd,GAuCEF,GACF,GACC,CAACpjH,KACJlB,qBAAU,KACJmiH,KACFA,GAAO1tD,QAAU0tD,GAAOztD,OAASytD,GAAOxtD,QAAU,KAClDwtD,GAAOvtD,SAETutD,GAAS,IAAIrtD,gBAAa,GAAGrB,MAC7B0uD,GAAOztD,OAAS,KACV34D,aAAaC,QAAQ,OACvBmmH,GAAOptD,KACL9xD,KAAKC,UAAU,CAAE8xD,QAAS,UAAUj5D,aAAaC,QAAQ,UAC1D,EAELmmH,GAAOxtD,QAAU,KACfwtD,GAAS,IAAI,EAER,KACDA,IAAQA,GAAOvtD,OAAO,IAE3B,CAAC74D,aAAaC,QAAQ,QACzBgE,qBAAU,KACRmiH,GAAOltD,UAAav1C,IAClB,IAAIxe,EAAO+B,KAAK4Q,MAAM6L,EAAQxe,MAC1BA,EAAKwe,UACa,iBAAhBxe,EAAKwe,QAUfloB,eAA2ByzF,GACzBg4B,EAAkBv4E,WAAU,CAACwgD,EAAUC,KACrC,GAAID,EAASzuF,KAAOwuF,EAAI/1B,UAAW,CACjC,IAAIk3B,EAAa,IAAI62B,GACrB72B,EAAWjB,GAAU,IAAKiB,EAAWjB,IACrCiB,EAAWjB,GAAQznF,UAAY,IAAK0oF,EAAWjB,GAAQznF,WACrC,UAAdunF,EAAI7wE,OACNgyE,EAAWjB,GAAQznF,UAAU8Q,OAASy2E,EAAItgF,OACnB,OAAdsgF,EAAI7wE,OACbgyE,EAAWjB,GAAQznF,UAAU+kG,IAAMxd,EAAItgF,OAChB,SAAdsgF,EAAI7wE,SACbgyE,EAAWjB,GAAQznF,UAAU4kG,MAAQrd,EAAItgF,QAE3Cu4G,EAAqB92B,EACvB,IAEJ,CAzBQI,CAAYtrF,GACa,4CAAhBA,EAAKwe,SACdmzD,GAAkB,GAItB,CACD,GACA,CAACowC,IAyCJjjH,qBAAU,KACRmiH,GAAOltD,UAAav1C,IAClB,MAAM+kG,EAAQxhH,KAAK4Q,MAAM6L,EAAQxe,MACjC0hH,EAAS6B,EAAM,CAChB,GACA,CAAC1oH,aAAaC,QAAQ,QAEpB8nH,KAAmBrsG,KAAWosG,GAMjCxnH,eAAAC,WAAA,CAAAC,SAAA,CACG2E,IACC7E,eAAA,OAAKmI,UAAU,wBAAuBjI,SAAA,CACpCF,eAAA,OAAKmI,UAAU,+BAA8BjI,SAAA,CAC3CW,cAAA,OAAKsH,UAAU,4BAA2BjI,SACxCW,cAAA,OACE4H,IAAS,OAAJ5D,SAAI,IAAJA,IAA0B,QAAtBsnE,EAAJtnE,GAAMipE,4BAAoB,IAAA3B,OAAtB,EAAJA,EAA4Bt+C,IACjC1lB,UAAU,mBACVY,IAAI,OACJhK,MAAM,MACNgC,OAAO,UAGXf,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAA,OAAKsH,UAAU,oBAAmBjI,SAChCW,cAACqmE,GAAsB,CAACriE,KAAU,OAAJA,SAAI,IAAJA,QAAI,EAAJA,GAAMipE,yBAEtC9tE,eAAA,OAAKmI,UAAU,uBAAsBjI,SAAA,CACnCW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACpC8G,EACC,kEAIJnG,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCW,cAAA,OACEsH,UAAU,2BACV7H,UACqB,OAAnBuK,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,IAApCA,EAAsCioG,YAClC,MA5NtBhmB,GAAgB,GAChBs5B,GAAY,GACZ9wD,GAAkB,GAClB3N,EAAwB,CACtB,CACE90C,UAAW,IAAIpN,KACfsN,QAASwxD,mBAAQ,IAAI9+D,KAAQ,GAC7B3J,IAAK,cAsNyC,GAGjC6D,SAEDF,eAAA,QAAAE,SAAA,CACEW,cAAA,KAAGsH,UAAU,0BAA6B,IACzCnB,EACC,uFAQdnG,cAAA,OAAKsH,UAAU,iCAAgCjI,SAC7CW,cAAAZ,WAAA,CAAAC,SACiB,OAAdunH,SAAc,IAAdA,QAAc,EAAdA,GAAgB5qH,KAAI,CAACqS,EAAG7S,KAAG,IAAAgsH,EAAA,OAC1BxnH,cAAC0kH,GAAiB,CAEhBlmE,MAAQ,OAADnwC,QAAC,IAADA,OAAC,EAADA,EAAGmwC,MACVoY,OAAS,OAADvoD,QAAC,IAADA,OAAC,EAADA,EAAGigE,cACXC,SAAW,OAADlgE,QAAC,IAADA,OAAC,EAADA,EAAGkgE,SACblqE,KAAMoiH,GACNnF,iBAAkBA,GAClBx7G,SAAc,OAAJ9B,SAAI,IAAJA,IAA0B,QAAtBwjH,EAAJxjH,GAAMipE,4BAAoB,IAAAu6C,OAAtB,EAAJA,EAA4BzvF,WANjCv8B,EAOL,QAIRwE,cAAA,OAAKsH,UAAU,iCAAgCjI,SAC5C8mH,EAASnqH,KAAI,CAACqS,EAAG7S,IAChB6S,EAAEyM,QAAQ9e,KAAKsiB,IAAC,IAAAmpG,EAAAC,EAAA,OACd1nH,cAAC2nH,GAAc,CAEbnpE,MAAQ,OAADlgC,QAAC,IAADA,OAAC,EAADA,EAAGkgC,MACVoY,OAAS,OAADt4C,QAAC,IAADA,OAAC,EAADA,EAAGs4C,OACXt7D,KAAU,OAAJ0I,SAAI,IAAJA,IAA0B,QAAtByjH,EAAJzjH,GAAMipE,4BAAoB,IAAAw6C,OAAtB,EAAJA,EAA4BnsH,KAClCwK,SAAc,OAAJ9B,SAAI,IAAJA,IAA0B,QAAtB0jH,EAAJ1jH,GAAMipE,4BAAoB,IAAAy6C,OAAtB,EAAJA,EAA4B3vF,WAJjCv8B,EAKL,QAIRwE,cAAA,OAAKsH,UAAU,iCAAgCjI,SACxC,OAAJ2E,SAAI,IAAJA,IAA4B,QAAxBqnE,EAAJrnE,GAAM+W,8BAAsB,IAAAswD,OAAxB,EAAJA,EAA8BrvE,KAAKR,IAAG,IAAAosH,EAAAC,EAAA,OAClB,IAAnBrsH,EAAI2rH,WACFnnH,cAACkrG,GAAS,CACRlnG,KAAMxI,EACNq8D,KAAMo1B,GACNnnF,SAAc,OAAJ9B,SAAI,IAAJA,IAA0B,QAAtB4jH,EAAJ5jH,GAAMipE,4BAAoB,IAAA26C,OAAtB,EAAJA,EAA4B7vF,YAGxC/3B,cAACi3E,GAAQ,CAELprD,WAEF7nB,KAAMxI,EACNsK,SAAc,OAAJ9B,SAAI,IAAJA,IAA0B,QAAtB6jH,EAAJ7jH,GAAMipE,4BAAoB,IAAA46C,OAAtB,EAAJA,EAA4B9vF,WAEzC,MAGL/3B,cAAC42E,GAAW,IAEZ52E,cAAC82E,GAAc,IACK,OAAnB9sE,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCgoG,UACrCrzG,eAACoiB,KAAM,CACLC,YAAU,EACVhjB,KAAM+tF,EACNjsF,QAASC,GACTo5D,oBAAqBlG,GAAWp0D,SAAA,CAEhCW,cAACyhB,KAAM,CAACna,UAAWmC,EAAQwtC,OAAO53C,SAChCF,eAACk/B,KAAO,CAAAh/B,SAAA,CACNW,cAACV,IAAU,CACTi/B,KAAK,QACL3gC,MAAM,UACN6B,QAASc,GACT,aAAW,QAAOlB,SAElBW,cAACmkB,KAAS,MAEZhlB,eAAC8e,KAAU,CAAC5c,QAAQ,KAAKiG,UAAWmC,EAAQuU,MAAM3e,SAAA,CAC3C,OAAJ2E,SAAI,IAAJA,IAA0B,QAAtBmhH,EAAJnhH,GAAMipE,4BAAoB,IAAAk4C,OAAtB,EAAJA,EAA4B7pH,KAAK,KAAG,IAKjC6K,EAJF0/G,EAKI,2HAHA,2IAMNA,GACA7lH,cAAAZ,WAAA,CAAAC,SACEF,eAACy6D,KAAM,CAACC,QAAM,EAAAx6D,SAAA,CACZF,eAACmlB,KAAM,CACL/kB,GAAG,eACH,gBAAef,GAAO,kBAAegB,EACrC,gBAAc,OACd,gBAAehB,GAAO,YAASgB,EAC/BC,QAtTAC,IACtBtB,GAAYsB,EAAMC,cAAc,EAsTVC,GAAI,CAAEhC,MAAO,WAAYyB,SAAA,CAExB8G,EACC,6HAEFnG,cAAC+5D,KAAY,CACXn6D,GAAI,CACFM,OAAQ,OACRhC,MAAO,OACPoL,WAAY,YAIlBnK,eAACiB,IAAI,CACHb,GAAG,aACHpB,SAAUA,GACVK,KAAMA,GACN8B,QAAS+lH,GACThmH,cAAe,CACb,kBAAmB,gBACnBhB,SAAA,CAEFF,eAAC0B,IAAQ,CACPpB,QAASA,IACPk2D,GAAS96B,QAAQ+7E,qBAClBv3G,SAAA,CACF,MAECW,cAACi6D,KAAQ,CACPr6D,GAAI,CACFhC,MAAO,OACPmlC,OAAS1mB,GAAUA,EAAM0mB,OAAOo3B,OAAS,GAE3C37D,KAAMy2D,EACNx1D,QAASA,KACPw1D,IACAoxD,IAAgB,EAChBhnH,SAEFW,cAACwoB,KAAgB,CAAC5qB,MAAM,iBAG5BoC,cAACa,IAAQ,CAACpB,QA1VJqlH,KAC5B1N,IAAmByN,GAAe,EAyV6BxlH,SAAC,sBAiCrDwmH,EACC7lH,cAACuxG,GAAe,CACdlc,UAAe,OAAJrxF,SAAI,IAAJA,IAA0B,QAAtBohH,EAAJphH,GAAMipE,4BAAoB,IAAAm4C,OAAtB,EAAJA,EAA4B7lH,GACvCuG,SAAc,OAAJ9B,SAAI,IAAJA,IAA0B,QAAtBqhH,EAAJrhH,GAAMipE,4BAAoB,IAAAo4C,OAAtB,EAAJA,EAA4BttF,UACtC6+B,OAAQA,IAGV52D,cAACq0G,GAAe,CACdlsG,IAAKwtD,GACL0/B,UAAe,OAAJrxF,SAAI,IAAJA,IAA0B,QAAtBshH,EAAJthH,GAAMipE,4BAAoB,IAAAq4C,OAAtB,EAAJA,EAA4B/lH,GACvCuG,SAAc,OAAJ9B,SAAI,IAAJA,IAA0B,QAAtBuhH,EAAJvhH,GAAMipE,4BAAoB,IAAAs4C,OAAtB,EAAJA,EAA4BxtF,YAG1C/3B,cAACm3G,GAAqB,CACpB34G,KAAMqmH,GACNzN,kBAAmBA,GACnB/hB,UAAe,OAAJrxF,SAAI,IAAJA,IAA0B,QAAtBwhH,EAAJxhH,GAAMipE,4BAAoB,IAAAu4C,OAAtB,EAAJA,EAA4BjmH,GACvCuG,SAAc,OAAJ9B,SAAI,IAAJA,IAA0B,QAAtByhH,EAAJzhH,GAAMipE,4BAAoB,IAAAw4C,OAAtB,EAAJA,EAA4B1tF,eAGxC,QAGR/3B,cAACk9D,GAAY,CACXC,YAAah3D,EACX,uIA7OCnG,cAAC+b,GAAO,GAgPZ,ECtiBA,MAAM9hB,GAAQ,SCER6tH,GAAuBjrG,KAAOgI,GAAG;;;;;;;;;EAWjCkjG,GAASlrG,KAAOgI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;EA2BnBmjG,GAAkCnrG,KAAOgI,GAAG;;;;;;;;;EAW5CojG,GAAwBprG,KAAOgI,GAAG;;;;;;;;;;;EAalCqjG,GAAmBrrG,KAAOgI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2D7BsjG,GAAyBtrG,KAAOgI,GAAG;;;;;;;;EC1GjCujG,OAdFA,IAETpoH,cAAC8c,IAAM,CAAAzd,SACJgpH,GAAOrsH,KAAI,CAAComB,EAAM5mB,IACjBwE,cAACsoH,IAAK,CAEJC,KAAMnmG,EAAKmmG,KACXC,OAAQA,IAAMxoH,cAACoiB,EAAKzW,UAAS,CAAOyW,UAF/B5mB,OCNR,MAAMitH,GAAgB5rG,KAAOgI,GAAG;;;;;;;;EAU1B6jG,GAAgB7rG,KAAOgI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBCoDxB8jG,OA1DCA,KACd,MAAMtmH,EAAUC,cACVsmH,EAAQP,GAAO74G,QAAQof,GAAYA,EAAQi9B,QAC1Cg9D,EAAaC,GAAkB5mH,mBAASpH,OAAOiG,SAAS6K,WACzD,oBAAEm9G,EAAmB,qBAAEC,GAAyBlnH,qBAAWC,KAEjEe,qBAAU,KACJ+lH,GACFC,EAAehuH,OAAOiG,SAAS6K,SACjC,GACC,CAAC9Q,OAAOiG,SAAS6K,WAwBpB,OACE5L,cAACyoH,GAAa,CAAAppH,SACXupH,EAAM5sH,KAAI,CAACusH,EAAM72F,IAChB1xB,cAAC0oH,GAAa,CAAArpH,SACZF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACzCW,cAAC6I,KAAI,CACHvB,UAAU,QACVwB,GAAIy/G,EAAKA,KACT9oH,QAASA,IA9BK8oH,KACxB,MAAMU,EAAWnuH,OAAOiG,SAAS6K,UAE/B28G,IAASU,GAC4C,IAArDjsH,SAAS6B,aAAaC,QAAQ,qBACN,IAAxBiqH,GAMER,IAASU,GAC4C,IAArDjsH,SAAS6B,aAAaC,QAAQ,qBACN,IAAxBiqH,IACyB,IAAzBC,KAPF3mH,EAAQ2E,KAAKuhH,GACb1pH,aAAaK,QAAQ,cAAc,GAWrC,EAWyBgqH,CAAiBX,EAAKA,MAAMlpH,SAE1CkpH,EAAK18D,OAER7rD,cAAA,KACEsH,UAAW,IACTuhH,IAAgBN,EAAKA,KAAO,eAAiB,uBAXjC72F,MAiBR,E,0CCCLy3F,OA3DCA,KACd,MAAMC,EAAkBvqH,aAAaC,QAAQ,wBACzCiH,KAAK4Q,MAAM9X,aAAaC,QAAQ,yBAChCD,aAAaC,QAAQ,wBAEzB,OACEK,eAAA,OAAKmI,UAAU,UAASjI,SAAA,CACtBW,cAAA,QAAMsH,UAAU,gBAAejI,SAAC,YAChCF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,MACf5c,IAAK,OACLyc,WAAY,UACZld,SAAA,CAEFW,cAAA,QAAAX,SACEW,cAACqpH,KAAQ,CAACzpH,GAAI,CAAEM,OAAQ,OAAQhC,MAAO,YAExCW,aAAaC,QAAQ,kBAClBD,aAAaC,QAAQ,kBACrB,QAEkC,SAAvCD,aAAaC,QAAQ,cACH,OAAfsqH,QAAe,IAAfA,OAAe,EAAfA,EAAiBptH,KAAI,CAACstH,EAAO53F,IAC3B1xB,cAAAZ,WAAA,CAAAC,SACEF,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCF,eAAA,OAAKmI,UAAU,eAAcjI,SAAA,CAC3BW,cAAA,QAAAX,SACEW,cAACupH,KAAiB,CAAC3pH,GAAI,CAAEM,OAAQ,OAAQhC,MAAO,YAElD8B,cAAA,KAAGsH,UAAU,eAAcjI,SAAC,QAAO,IAAO,OAALiqH,QAAK,IAALA,OAAK,EAALA,EAAO1yD,UAE9Cz3D,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC9BW,cAAA,KAAAX,SAAG,WACH,KACK,OAALiqH,QAAK,IAALA,OAAK,EAALA,EAAO9qE,SAEVr/C,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC9BW,cAAA,KAAAX,SAAG,mBAAmB,IAAE,KACnB,OAALiqH,QAAK,IAALA,OAAK,EAALA,EAAOE,eAEVrqH,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC9BW,cAAA,KAAAX,SAAG,mBAAgB,IAAE,KAChB,OAALiqH,QAAK,IAALA,OAAK,EAALA,EAAOG,cAEVtqH,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC9BW,cAAA,KAAAX,SAAG,mBACH,KACK,OAALiqH,QAAK,IAALA,OAAK,EAALA,EAAOI,oBAvBiCh4F,OA4BjD,OACA,ECnBKi4F,OAzBMhsH,GAEjBqC,cAACsoH,IAAK,CACJE,OAAQ5sG,IAAA,IAAC,MAAE9e,GAAO8e,EAAA,OAChBzc,eAAC2oH,GAAoB,CAAAzoH,SAAA,CACnBW,cAAC+nH,GAAM,CAAA1oH,SACLW,cAAA,OAAKsH,UAAU,kBAEjBnI,eAAC6oH,GAA+B,CAAA3oH,SAAA,CAC9BW,cAACioH,GAAqB,CAAA5oH,SACpBW,cAACooH,GAAI,CAACtrH,MAAOA,MAEfkD,cAACkoH,GAAgB,CAAA7oH,SACfW,cAACmpH,GAAO,SAGZnpH,cAACmoH,GAAsB,CAAA9oH,SACrBW,cAAC2oH,GAAO,QAEW,ICvBhBiB,OANeA,IAE1B5pH,cAAC2pH,GAAW,ICHT,MAAME,GAAkB3vH,GAAG;;;;;;;;;;;;;;;;;;;;EAsBrB4vH,GAA2B5vH,GAAG;;;;;;;;;;;;;;;;;;EAoB9B6vH,GAAyB7vH,GAAG;;;OAK5B8vH,GAAkB9vH,GAAG;;;;;;;;;;;;;;;;;;;WAqBrB+vH,GAAgB/vH,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BC7DhC,MAAMgwH,GAAwB,CAC1BC,MAAO,CACH/oH,UAAW,EACXxB,GAAI,CACAwzB,SAAU,UACV5jB,OAAQ,4CACRmiG,GAAI,IACJ,oBAAqB,CACjBzzG,MAAO,GACPgC,OAAQ,GACRkqH,IAAK,GACL1qF,GAAI,GAER,YAAa,CACT2qF,QAAS,KACT5tG,QAAS,QACT0F,SAAU,WACVulB,IAAK,EACLL,MAAO,GACPnpC,MAAO,GACPgC,OAAQ,GACRsuD,QAAS,mBACTu9C,UAAW,iCACXhpE,OAAQ,MAMlBunF,GAAkB,CACpB7pF,WAAY,QACZC,SAAU,OAERF,GAAe,IACd8pF,GACH5pF,SAAU,UAYR6pF,GAAe3uG,IAAA,IAAC,MAAE6hE,GAAO7hE,EAAA,OAC3B6hE,EAAMzhF,KAAI,CAACsmB,EAAMoP,IACbvyB,eAAC0B,IAAQ,CAAoCpB,QAAS6iB,EAAK7iB,QAAQJ,SAAA,CAC/DW,cAAC2J,KAAY,CAAAtK,SAAEijB,EAAKkoG,eACnBloG,EAAKrM,OAFK,iBAAiByb,EAAQ,MAI1C,EAsBS,SAAS+4F,GAAiBptG,GAAoB,IAAnB,MAAEW,EAAK,MAAEy/D,GAAOpgE,EACtD,MAAOqtG,EAAeC,GAAoBzoH,mBAAS,MAC7C1D,EAAOC,QAAQisH,GAQfnqH,EAAcA,IAAMoqH,EAAiB,MAE3C,OACIxrH,eAACopB,WAAQ,CAAAlpB,SAAA,CACLW,cAAC+d,KAAO,CAACC,MAAOA,EAAM3e,SAClBW,cAACV,IAAU,CACPG,QAPKC,GAAUirH,EAAiBjrH,EAAMC,eAQtCyoB,KAAK,QACLxoB,GAAI,CAAE8xG,GAAI,KACV,gBAAelzG,EAAO,oBAAiBgB,EACvC,gBAAc,OACd,gBAAehB,EAAO,YAASgB,EAAUH,SAEzCW,cAAC86D,KAAY,CAACl7D,GAAI,CAAEhC,MAAO,cAGnCoC,cAACI,IAAI,CACDjC,SAAUusH,EACVnrH,GAAG,eACHf,KAAMA,EACN8B,QAASC,EACTd,QAASc,EACTqqH,UAAWV,GACXI,gBAAiBA,GACjB9pF,aAAcA,GAAanhC,SAE3BW,cAACuqH,GAAY,CAAC9sC,MAAOA,QAIrC,C,wFC5GA,MAAMroD,GAAuB,+BAEvBy1F,GAAiBjvG,IAAe,IAAd,KAAE5X,GAAM4X,EAE9B,MAAM,EAAEzV,GAAMC,cAER0kH,EAAU9mH,EAAK8E,GAAGjM,MAAM,KACxBkuH,EAAY/mH,EAAKjI,KAAKc,MAAM,KAC5BmuH,EAAYF,EAAQ,GACpBG,EAAcF,EAAU,GACxBG,EAAYJ,EAAQ,GAAGjuH,MAAM,KAAK,GAClCsuH,EAAWL,EAAQ,GAAGjuH,MAAM,KAAK,GACjCuuH,EAAaN,EAAQ,GAAGjuH,MAAM,KAAK,GACnCwuH,EAAcN,EAAU,GAAGluH,MAAM,KAAK,GACtCyuH,EAAaP,EAAU,GAAGluH,MAAM,KAAK,GACrC0uH,EAAeR,EAAU,GAAGluH,MAAM,KAAK,GAE7C,OACEsC,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CF,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,OAAKsH,UAAU,2BAA0BjI,SACtC8G,EAAE,GAAGivB,mBAERp1B,cAAA,OAAKsH,UAAU,0BAAyBjI,SAAE,GAAGisH,KAC3C/9G,GAAce,OAAOi9G,OACnBF,MACJrrH,cAAA,OAAKsH,UAAU,0BAAyBjI,SAAE4rH,OAE5C9rH,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,OAAKsH,UAAU,2BAA0BjI,SACtC8G,EAAE,GAAGivB,iBAERp1B,cAAA,OAAKsH,UAAU,0BAAyBjI,SAAE,GAAG8rH,KAC3C59G,GAAce,OAAO88G,OACnBF,MACJlrH,cAAA,OAAKsH,UAAU,0BAAyBjI,SAAE2rH,SAExC,EAIJQ,GAAoBnuG,IAAe,IAAd,KAAEouG,GAAMpuG,EACjC,MAAOu3B,EAAQ82E,GAAaxpH,mBAAS,CACnC,CAAE1G,IAAK,EAAG+hB,MAAO,KACjB,CAAE/hB,IAAK,EAAG+hB,MAAO,KACjB,CAAE/hB,IAAK,EAAG+hB,MAAO,KACjB,CAAE/hB,IAAK,EAAG+hB,MAAO,KACjB,CAAE/hB,IAAK,EAAG+hB,MAAO,KACjB,CAAE/hB,IAAK,EAAG+hB,MAAO,KACjB,CAAE/hB,IAAK,EAAG+hB,MAAO,OAenB,OAZAza,qBAAU,KACR2oH,EAAK5uH,MAAM,IAAIb,KAAKw4C,IAClBk3E,GAAWxuF,GACTA,EAAKlhC,KAAKuhB,GACJA,EAAM/hB,KAAOg5C,EACR,IAAKj3B,EAAO3f,MAAO,WAErB2f,KAEV,GACD,GACD,CAACkuG,IAEFzrH,cAAC8uD,KAAK,CAACjJ,UAAU,MAAMhxB,QAAS,EAAEx1B,SAC/Bu1C,EAAO54C,KAAK0/C,GACX17C,cAACgwC,KAAI,IAAK0L,EAAKtzB,KAAK,aAEhB,EAINujG,GAAmB,QAiRVC,OA/QQ7rF,IAMhB,IANiB,UACtB8rF,EAAS,gBACTC,EAAe,qBACfC,EAAoB,iCACpBC,EAAgC,2BAChCC,GACDlsF,EAEC,MAAM,EAAE55B,GAAMC,eAGP8lH,EAAYC,GAAiBjqH,mBAAS,KAGtCkqH,EAAcC,GAAmBnqH,mBAAS,UAE3CoqH,EAAaT,EAAUU,MAAK,CAAC99G,EAAGpS,IAAMA,EAAEkD,GAAKkP,EAAElP,KAE/CitH,EAAmB,CACvB/9G,EAAGtI,EAAE,GAAGivB,aACRjvB,EAAGA,EAAE,GAAGivB,YACRg+D,EAAGjtF,EAAE,GAAGivB,cAwDV,OACEj2B,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCF,eAAA,OAAKmI,UAAU,gCAA+BjI,SAAA,CAC5CF,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAAA,MAAAX,SAGI8G,EAAE,GAAGivB,wBAGTp1B,cAAA,QAAAX,SAGI8G,EAAE,GAAGivB,iCAIXj2B,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,OAAKsH,UAAU,qCAAoCjI,SACjDW,cAAA,QAAMsH,UAAU,kCAAiCjI,SAG7C8G,EAAE,GAAGivB,yBAIXp1B,cAAA,OAAKsH,UAAU,qCAAoCjI,SACjDW,cAAA,SACEwI,KAAK,OACLlB,UAAU,iCACVe,YACElC,EAAE,GAAGivB,iBAEP95B,KAAK,oBACLgN,SAvFUyX,IACpB,MAAM,MAAEvlB,GAAUulB,EAAE3Y,OACpB+kH,EAAc3xH,EAAM,SAyFhB2E,eAAA,OAAKmI,UAAU,kCAAiCjI,SAAA,CAC9CW,cAAA,OAAKsH,UAAU,4CAA2CjI,SACxDW,cAAA,QAAMsH,UAAU,wCAAuCjI,SAGnD8G,EAAE,GAAGivB,2BAIXp1B,cAAA,OAAKsH,UAAU,4CAA2CjI,SACxDF,eAAA,UACE7D,KAAK,gBACLgM,UAAU,wCACVgB,SAAWyX,GAnGKA,KAC1B,MAAM,MAAEvlB,GAAUulB,EAAE3Y,OACpBilH,EAAgB7xH,EAAM,EAiGKiyH,CAAmB1sG,GAEpC8pB,aAAa,SAAQxqC,SAAA,CAErBW,cAAA,UAAQxF,MAAM,MAAK6E,SAChB8G,EAAE,GAAGivB,YAERp1B,cAAA,UAAQxF,MAAM,SAAQ6E,SACnB8G,EAAE,GAAGivB,eAERp1B,cAAA,UAAQxF,MAAM,WAAU6E,SACrB8G,EAAE,GAAGivB,yBAKdp1B,cAAA,OAAKsH,UAAU,0BAAyBjI,SACtCF,eAAA,UAAQM,QAASA,IAAMqsH,IAAkBzsH,SAAA,CACvCW,cAAA,KAAGsH,UAAU,gBAAkB,IAC9BnB,EAAE,GAAGivB,uBAIZj2B,eAAA,OAAKmI,UAAU,sCAAqCjI,SAAA,CAClDW,cAAA,QAAAX,SAAO8G,EAAE,GAAGivB,WACZp1B,cAAA,QAAAX,SAAO8G,EAAE,GAAGivB,aACZp1B,cAAA,QAAAX,SACG8G,EAAE,GAAGivB,oBAERp1B,cAAA,QAAAX,SAAO8G,EAAE,GAAGivB,aACZp1B,cAAA,QAAAX,SAAO8G,EAAE,GAAGivB,eACZp1B,cAAA,QAAAX,SAAO8G,EAAE,GAAGivB,mBAEdp1B,cAAAZ,WAAA,CAAAC,UA/HyB2E,EAgIFsoH,EA/HP,IAAdJ,EACKloH,EAAKwL,QAAQnB,GAAMA,EAAE/S,KAAKgI,cAAcsjB,SAASslG,KAErC,QAAjBE,EACKpoH,EAEY,WAAjBooH,EACKpoH,EAAKwL,QAAQnB,GAAMA,EAAEoW,UAET,aAAjB2nG,EACKpoH,EAAKwL,QAAQnB,IAAOA,EAAEoW,UAExBzgB,GAmH8BhI,KAAI,CAACqS,EAAGqjB,KACvC,MAAMg7F,EAAgB,GAChBC,EAAgBhB,GAAiBvoH,KAAKiL,EAAEu+G,KAsB9C,OApBKD,IACHD,EAAc1lH,KAAK,CACjBiP,KAAM9P,EAAE,GAAGivB,2BACXo1F,WAAYA,IAAMxqH,cAAC6sH,KAAS,CAAChvH,SAAS,UACtC4B,QAASA,IAAMssH,EAAqB19G,KAElCA,EAAEoW,QACJioG,EAAc1lH,KAAK,CACjBiP,KAAM9P,EAAE,GAAGivB,0BACXo1F,WAAYA,IAAMxqH,cAAC8sH,KAAe,CAACjvH,SAAS,UAC5C4B,QAASA,IAAMwsH,EAA2B59G,KAG5Cq+G,EAAcK,QAAQ,CACpB92G,KAAM9P,EAAE,GAAGivB,mBACXo1F,WAAYA,IAAMxqH,cAACgtH,KAAW,CAACnvH,SAAS,UACxC4B,QAASA,IAAMusH,EAAiC39G,MAKpDlP,eAAA,OAEEmI,UAAW,wCACToqB,EAAQ,IAAM,EAAI,GAAK,0CACtBryB,SAAA,CAEHW,cAAA,OAAKsH,UAAU,UAASjI,SAAE,GAAGqyB,EAAQ,MACrCvyB,eAAA,OAAKmI,UAAU,4BAA2BjI,SAAA,CACxCW,cAAA,OAAKsH,UAAU,kBAAiBjI,SAAEgP,EAAE/S,OACpC0E,cAAA,OAAKsH,UAAU,iBAAgBjI,SAC5BstH,EACGxmH,EACE,GAAGivB,iBAEL/mB,EAAEu+G,SAGVztH,eAAA,OAAKmI,UAAU,iCAAgCjI,SAAA,CACjC,MAAXgP,EAAE7F,KACDxI,cAAA,OAAKsH,UAAU,sBAAqBjI,SAEjC8G,EAAE,GAAGivB,uBAGRp1B,cAAAZ,WAAA,IAEU,MAAXiP,EAAE7F,MAAgB6F,EAAEo9G,KACnBzrH,cAACwrH,GAAiB,CAACC,KAAMp9G,EAAEo9G,OAE3BzrH,cAAAZ,WAAA,IAEU,MAAXiP,EAAE7F,MAAgB6F,EAAEvF,IAAMuF,EAAEtS,KAC3BiE,cAAC6qH,GAAc,CAAC7mH,KAAMqK,IAEtBrO,cAAAZ,WAAA,OAGJY,cAAA,OAAKsH,UAAU,UAASjI,SAAEmtH,EAAiBn+G,EAAE7F,QAC7CxI,cAAA,OACEsH,UACE+G,EAAEoW,QACE,wBACA,0BACLplB,SAGCgP,EAAEoW,QACEte,EAAE,GAAGivB,kBACLjvB,EAAE,GAAGivB,sBAGbp1B,cAAA,OACEsH,UAAU,sBACVjI,SAECstH,EACC3sH,cAAC+d,KAAO,CACNC,MAEE7X,EAAE,GAAGivB,qBAEPx1B,GAAI,CAAE8xG,GAAI,KAAMryG,SAEhBW,cAACV,IAAU,CAAAD,SACTW,cAACitH,KAAS,QAIdjtH,cAACyqH,GAAiB,CAChBzsG,MACE7X,EAAE,GAAGivB,cAEPqoD,MAAOivC,QAvER,QAAQh7F,IA2ET,SArOa1tB,KAyOrB,E,uIC3UV,MAAMkpH,GAAe,GACf93F,GAAuB,qCAEvB+3F,GAAc,6BACdC,GAAiB,gIAwfRC,I,MAAAA,GAtff,SAAgBzxG,GAA4C,IAA3C,eAAE0xG,EAAc,QAAEC,EAAO,YAAEC,GAAa5xG,EAEvD,MAAM,EAAEzV,GAAMC,eAGR,YAAEqnH,GAAgB3rH,qBAAWC,MAG7B,GAAExC,EAAE,aAAEw8D,GAAiBiH,eAGtB0qD,EAAUC,GAAezrH,mBAASgrH,KAClCU,EAASC,GAAc3rH,mBAASgrH,KAGhClpF,EAAU8pF,GAAe5rH,mBAASgrH,KAClCa,EAAWC,GAAgB9rH,mBAASgrH,KACpCe,EAASC,GAAchsH,mBAASgrH,KAGhCiB,EAAWC,GAAgBlsH,oBAAS,IAGpCmsH,EAAaC,GAAkBpsH,oBAAS,IAGxCT,EAAQokG,GAAa3jG,mBAAS,CAAC,IAG/BqsH,GAAiB/rH,YAAYqnH,IAM9B2E,EAAgBC,GAAW,IAAMA,GAAQvxF,IAAUA,IAGnDwxF,EAAyBhvH,GAAUA,EAAMmnC,iBAKzC8nF,EAAmBF,GAAY/uH,IACnC,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MAAMynB,OAC7BznB,IAAUkF,EAAM0H,OAAO5M,OAAOi0H,EAAOj0H,EAAM,EAE3CqvB,EAAqB4kG,GAAY/uH,IACrC+uH,EAAO/uH,EAAM0H,OAAO5M,OACpBqrG,GAAW3oE,IAAI,IAAWA,EAAM,CAACx9B,EAAM0H,OAAO9L,MAAO4xH,MAAgB,EAEjE0B,EAAuBlvH,IAE3B,MAAMmvH,EAAUnvH,EAAMovH,OAASpvH,EAAMmvH,QAErB,IAAZA,IAAkBA,EAAU,IAAMA,EAAU,KAE9CnvH,EAAMmnC,gBAAgB,EA2CpBkoF,EAA4Bz0H,UAChC,IAAK,IAAD00H,EAEF,MAAMC,EAAsD,QAA5CD,EAAG9oH,qCAAyC8oH,EAAI,GAC1DE,QAAmB30H,EAAYqzH,EAASqB,GAE9C,IAAIzoH,EAAY,CACdlL,KAAMoyH,EACNd,IAAKsC,EACLzqG,SAAS,EACTjc,KAAM,IACNw0D,aAAchgE,SAAS++D,GACvBqc,SAAUp7E,SAASuC,IAErB,GAAI4uH,EAAW,CASb,MAAMgB,QAAmB50H,EAAY0zH,EAASgB,GAE9CzoH,EAAU7E,KAAO,CACfrG,KAAM0oC,EACNn9B,MAAOknH,EACP7pF,SAAUirF,EACVC,iBAAkBC,IAClBC,QAAQ,IAAInqH,MAAOG,oBACnBk4C,OACkB,qBAAT73C,KACH3G,UAAUuwH,WAAavwH,UAAUuwH,UAAU1gH,OACzC7P,UAAUuwH,UAAU,GACpBvwH,UAAUC,SACZ0G,KAAKC,iBAAiBC,kBAAkB23C,OAElD,CAMA,MACMx6C,SADoBurH,EAAc,CAAE/nH,eACfxC,KAAKuqH,cAC5BvrH,EAAOkgB,SAET1c,EAAUkrB,MAAQ1uB,EAAOgB,KAAK0tB,MAC9B7N,YAAW,KACTypG,EAAe,MACfE,EAAYhnH,GACZ+mH,EAAQ,OAAO,GACd,MAqBHD,EAAe,QAEnB,CAAE,MAAO9oH,GACPC,QAAQ+f,IAAI,wDAEd,CACE,EAqDEgrG,EAAeA,KACnB,IAAIC,GAAQ,EACZ,MAAMC,EAAY,CAAC,EAEdhC,EAAS7+G,SACZ6gH,EAAUhC,SAAWvnH,EAAE,GAAGivB,wBAC1Bq6F,GAAQ,GAGa,IAAnB7B,EAAQ/+G,SACV6gH,EAAU9B,QAAUznH,EAAE,GAAGivB,4BACzBq6F,GAAQ,GAGV,IAAK,MAAMvwF,KAAQuuF,EAAa,CAG9B,GAAIiC,EAAUhC,UAAYgC,EAAU9B,QAAS,MAGxC8B,EAAUhC,UAAYxuF,EAAK5jC,OAASoyH,IACvCgC,EAAUhC,SAAWvnH,EAAE,GAAGivB,yBAC1Bq6F,GAAQ,GAGLC,EAAU9B,SAAW1uF,EAAK0tF,MAAQgB,IACrC8B,EAAU9B,QAAUznH,EAAE,GAAGivB,wBACzBq6F,GAAQ,EAEZ,CAwBA,OAtBItB,IAEGnqF,GAAaopF,GAAehqH,KAAK4gC,GAG3BA,EAASn1B,OAAS,IAC3B6gH,EAAU1rF,SAAW79B,EAAE,GAAGivB,wBAC1Bq6F,GAAQ,IAJRC,EAAU1rF,SAAW79B,EAAE,GAAGivB,wBAC1Bq6F,GAAQ,GAML1B,GAAcZ,GAAY/pH,KAAK2qH,KAClC2B,EAAU3B,UAAY5nH,EAAE,GAAGivB,yBAC3Bq6F,GAAQ,GAGNxB,EAAQp/G,OAAS,IACnB6gH,EAAUzB,QAAU9nH,EAAE,GAAGivB,uBACzBq6F,GAAQ,IAIZ5pB,EAAU6pB,GACHD,CAAK,EAqBRJ,EAAyBA,IAC7BzB,EAAQ+B,WAAW1B,EAAQ/+G,UAAU,EAAG,KACxC0+G,EAAQgC,SAAS3B,EAAQ1xH,OAAO,IAC5B,EACAqxH,IAAYK,EAAQ1xH,OAAO,GAC3B,EACA,EAUN,OACE4C,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,OAAQmO,EAAG,GAAIvrB,SAAA,CACjCW,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,OAAQF,WAAY,UAAWld,SACjDW,cAACy/B,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZre,MAAO,QACPgC,OAAQ,QACR6c,gBAAiB,yBACjBhd,aAAc,OACdV,SAEFW,cAAC6vH,KAAY,CAACjyH,MAAM,UAAUgC,GAAI,CAAE/B,SAAU,cAGlDmC,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE1B,MAAO,QAAS4xH,GAAI,GAAIzwH,SACjCF,eAACu+C,KAAI,CAACC,WAAS,EAAC9oB,QAAS,EAAEx1B,SAAA,CACzBW,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBW,cAACgiB,KAAS,CACRoG,KAAK,QACL7K,MAAOpX,EAAE,GAAGivB,uBACZ/zB,QAAQ,WACR/F,KAAK,WACLd,MAAOkzH,EACPplH,SAAUuhB,EAAkB8jG,GAC5BoC,OAAQpB,EAAgBhB,GACxBtzD,WAAS,EACT71D,MAAO/F,QAAQgD,EAAOisH,UACtB1nF,WAAYvkC,EAAOisH,aAGtBS,GACChvH,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBW,cAACgiB,KAAS,CACRoG,KAAK,QACL7K,MAAOpX,EAAE,GAAGivB,2BACZ95B,KAAK,WACLd,MAAOwpC,EACP17B,SAAUuhB,EAAkBikG,GAC5BiC,OAAQpB,EAAgBb,GACxBtpH,MAAO/F,QAAQgD,EAAOuiC,UACtBgC,WAAYvkC,EAAOuiC,SACnBq2B,WAAS,MAGbr6D,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBW,cAACgiB,KAAS,CACRoG,KAAK,QACL7K,MAAOpX,EAAE,GAAGivB,wBACZ95B,KAAK,YACLd,MAAOuzH,EACPzlH,SAAUuhB,EAAkBmkG,GAC5B+B,OAAQpB,EAAgBX,GACxBxpH,MAAO/F,QAAQgD,EAAOssH,WACtB/nF,WAAYvkC,EAAOssH,UACnB1zD,WAAS,MAGbr6D,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBW,cAACgiB,KAAS,CACRoG,KAAK,QACL7K,MAAOpX,EAAE,GAAGivB,sBACZ95B,KAAK,UACLd,MAAOyzH,EACPpuF,WAAY,CAAEmwF,UAAW,KACzB1nH,SAAUuhB,EAAkBqkG,GAC5B6B,OAAQpB,EAAgBT,GACxB3lH,WAAYqmH,EACZpqH,MAAO/F,QAAQgD,EAAOwsH,SACtBjoF,WAAYvkC,EAAOwsH,QACnB5zD,WAAS,SAKjBr6D,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI+kG,EAAY,EAAI,EAAE9uH,SAC/BF,eAAC8sB,KAAW,CACV7D,KAAK,QACL/mB,QAAQ,WACRmD,MAAO/F,QAAQgD,EAAOmsH,SACtBvzD,WAAS,EAAAh7D,SAAA,CAETW,cAACksB,KAAU,CAACgU,QAAQ,gBAAe7gC,SAChC8G,EAAE,GAAGivB,wBAERp1B,cAACgwB,KAAa,CACZzwB,GAAG,gBACHjE,KAAK,UACLkN,KAAM6lH,EAAc,OAAS,WAC7BxuF,WAAY,CAAEowF,UAAW,KACzB3nG,aACEtoB,cAACmgC,KAAc,CAAChe,SAAS,MAAK9iB,SAC5BW,cAACV,IAAU,CACT,aAAW,6BACXG,QAAS+uH,EAAaF,GACtB1nF,YAAa8nF,EACbnwF,KAAK,MAAKl/B,SAETgvH,EAAcruH,cAACogC,IAAa,IAAMpgC,cAACqgC,IAAU,QAIpD7lC,MAAOozH,EACPtlH,SAAUuhB,EAAkBgkG,GAC5BkC,OAAQpB,EAAgBd,GACxBtlH,WAAYqmH,EACZsB,QAASxB,EACTnxG,MAAOpX,EAAE,GAAGivB,wBAEdp1B,cAACmwH,KAAc,CAAA9wH,SAAEoC,EAAOmsH,eAG5B5tH,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,EAAE/pB,SACfW,cAAC+d,KAAO,CACNC,MAAO7X,EAAE,GAAGivB,oCAAsD/1B,SAElEW,cAACskB,KAAM,CACL1mB,MAAM,UACNyD,QAAQ,YACR+uH,kBAAgB,EAChB3wH,QA5JoB4wH,IAChCxC,EAAWtnG,KAAK+pG,SAASh0H,WAAWC,MAAM,EAAG,IA2JE8C,SAEnCW,cAAC6vH,KAAY,UAIlB1B,GACCnuH,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,EAAE/pB,SACfW,cAAC+d,KAAO,CACNC,MAAO7X,EACL,GAAGivB,oCACH/1B,SAEFW,cAACskB,KAAM,CACL1mB,MAAM,UACNyD,QAAQ,YACR5B,QAnJe8wH,IAC7BtC,EAAQp/G,OAAS,EACbg3F,GAAW3oE,IAAI,IACVA,EACH+wF,QAAS9nH,EAAE,GAAGivB,2BAEhBy4F,EAlBJtnG,KAAK+pG,SAAW,GACZrC,EAAQ1xH,OAAO,GACf0xH,EAAQ/+G,UAAU,EAAG,GAAK++G,EAAQ1xH,OAAO,IA8J/B6zH,kBAAgB,EAAA/wH,SAEhBW,cAACwwH,KAAU,UAKnBxwH,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAI/f,WAAY,IAAIhK,SACjCW,cAACywH,KAAgB,CACfC,QACE1wH,cAAC8c,KAAM,CACLU,QAAS2wG,EACT7lH,SAAUkmH,EAAaJ,GACvBvuF,WAAY,CAAE,aAAc,gBAGhCtiB,MACEvd,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEqqG,WAAY,SAAU5qG,SAC9B8G,EAAE,GAAGivB,8BAKdp1B,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBW,cAACskB,KAAM,CACLjjB,QAAQ,YACR5B,QA/YUC,IAEhB8vH,MAEFlC,EAAe,WAEfyB,IACF,EAyYUqB,kBAAgB,EAChB/1D,WAAS,EAAAh7D,SAER8G,EAAE,GAAGivB,gCAOpB,E,mFCzfA,MAAMA,GAAuB,wCAEvBu7F,GAC4B,QADlBC,GACd/xH,aAAaC,QAAQ,mBAAW,IAAA8xH,OACZ,QAAnBC,GAAA7xH,UAAUuwH,iBAAS,IAAAsB,IAAnBA,GAAqBhiH,OAClB7P,UAAUuwH,UAAU,GACpBvwH,UAAUC,UACZpC,MAAM,KAAK,GAEf,SAASi0H,GAAgBl1G,GAMrB,IANsB,SACxBm1G,EAAQ,OACRC,EAAM,qBACNC,EAAoB,mBACpBC,EAAkB,OAClBzvH,GACDma,EAEC,MAAM,EAAEzV,GAAMC,cAEd,OACEjH,eAACsgC,KAAG,CAAApgC,SAAA,CACFF,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,OAAQF,WAAY,UAAWld,SAAA,CACjDW,cAACy/B,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZre,MAAO,OACPgC,OAAQ,OACR6c,gBAAiB,yBACjBhd,aAAc,MACdic,YAAa,GACb3c,SAEFW,cAACmxH,KAAa,CAACvzH,MAAM,UAAUC,SAAS,aAE1CmC,cAACie,KAAU,CAAC5c,QAAQ,KAAIhC,SACrB8G,EAAE,GAAGivB,iBAGVp1B,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE,qBAAsB,CAAEoc,YAAa,GAAKo1G,GAAI,GAAI/xH,SAC3DF,eAACkyH,KAAoB,CACnBC,YAAaC,KACbC,cAA8B,OAAfb,GAAsBc,KAAWC,WAASryH,SAAA,CAEzDW,cAACisB,KAAW,CAAA5sB,SACVW,cAAC2xH,KAAoB,CACnBzpG,YAAcvqB,GAAUqC,cAACgiB,KAAS,IAAKrkB,IACvC4f,MAAOpX,EAAE,GAAGivB,WACZ56B,MAAOu2H,EACPzoH,SAAWyK,GAASk+G,EAAqBl+G,GACzC6+G,YAAY,sBACZC,YAAa,IAAI1sH,KACjB2sH,aAAa,EACbC,MAAM,MAGV5yH,eAAC8sB,KAAW,CAACznB,QAAa,OAAN/C,QAAM,IAANA,MAAQuvH,QAAsB3xH,SAAA,CAChDW,cAAC2xH,KAAoB,CACnBzpG,YAAcvqB,GAAUqC,cAACgiB,KAAS,IAAKrkB,IACvC4f,MAAOpX,EAAE,GAAGivB,SACZ56B,MAAOw2H,EACP1oH,SAAWyK,GAASm+G,EAAmBn+G,GACvC6+G,YAAY,sBACZC,YAAad,EACbe,aAAa,EACbC,MAAM,IAER/xH,cAACmwH,KAAc,CAAA9wH,SAAQ,OAANoC,QAAM,IAANA,OAAM,EAANA,EAAQuvH,mBAMrC,CAEA,SAASgB,GAAiB30G,GAQtB,IARuB,SACzB0zG,EAAQ,OACRC,EAAM,KACNvF,EAAI,iBACJwG,EAAgB,qBAChBhB,EAAoB,mBACpBC,EAAkB,OAClBzvH,GACD4b,EACC,MAAM,EAAElX,GAAMC,cAEd,OACEjH,eAACsgC,KAAG,CAAApgC,SAAA,CACFF,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,OAAQF,WAAY,UAAWld,SAAA,CACjDW,cAACy/B,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZre,MAAO,OACPgC,OAAQ,OACR6c,gBAAiB,yBACjBhd,aAAc,MACdic,YAAa,GACb3c,SAEFW,cAACkyH,KAAe,CAACt0H,MAAM,UAAUC,SAAS,aAE5CmC,cAACie,KAAU,CAAC5c,QAAQ,KAAIhC,SACrB8G,EAAE,GAAGivB,kBAIVp1B,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE,qBAAsB,CAAEoc,YAAa,GAAKo1G,GAAI,GAAI/xH,SAC3DF,eAACkyH,KAAoB,CACnBC,YAAaC,KACbC,cAAeC,KAASpyH,SAAA,CAExBW,cAACisB,KAAW,CAAA5sB,SACVW,cAACmyH,KAAgB,CACf50G,MAAOpX,EAAE,GAAGivB,WACZ56B,MAAOu2H,EACPzoH,SAAWyK,GAASk+G,EAAqBl+G,GACzCmV,YAAcC,GAAWnoB,cAACgiB,KAAS,IAAKmG,IACxC4pG,MAAM,MAGV5yH,eAAC8sB,KAAW,CAACznB,QAAa,OAAN/C,QAAM,IAANA,MAAQuvH,QAAsB3xH,SAAA,CAChDW,cAACmyH,KAAgB,CACf50G,MAAOpX,EAAE,GAAGivB,SACZ56B,MAAOw2H,EACP1oH,SAAWyK,GAASm+G,EAAmBn+G,GACvCmV,YAAcC,GAAWnoB,cAACgiB,KAAS,IAAKmG,IACxC4pG,MAAM,EACNK,QAAS,IAAIjtH,KAAK,IAAIA,KAAK4rH,GAAU1rH,UAAY,OAEnDrF,cAACmwH,KAAc,CAAA9wH,SAAQ,OAANoC,QAAM,IAANA,OAAM,EAANA,EAAQuvH,iBAI/B7xH,eAACsgC,KAAG,CAAC7/B,GAAI,CAAEyyH,GAAI,GAAIhzH,SAAA,CACjBF,eAAC8e,KAAU,CAAC5c,QAAQ,IAAIzB,GAAI,CAAEoc,YAAa,GAAI3c,SAAA,CAC5C8G,EAAE,GAAGivB,WAAyC,OAEjDj2B,eAAC8sB,KAAW,CAACznB,QAAa,OAAN/C,QAAM,IAANA,MAAQgqH,MAAoBpsH,SAAA,CAC9CF,eAACmzH,KAAiB,CAAC93H,MAAOixH,EAAMnjH,SAAU2pH,EAAiB5yH,SAAA,CACzDW,cAACuyH,KAAY,CAAC/3H,MAAM,IAAG6E,SACpB8G,EAAE,GAAGivB,YAERp1B,cAACuyH,KAAY,CAAC/3H,MAAM,IAAG6E,SACpB8G,EAAE,GAAGivB,YAERp1B,cAACuyH,KAAY,CAAC/3H,MAAM,IAAG6E,SACpB8G,EAAE,GAAGivB,YAERp1B,cAACuyH,KAAY,CAAC/3H,MAAM,IAAG6E,SACpB8G,EAAE,GAAGivB,YAERp1B,cAACuyH,KAAY,CAAC/3H,MAAM,IAAG6E,SACpB8G,EAAE,GAAGivB,YAERp1B,cAACuyH,KAAY,CAAC/3H,MAAM,IAAG6E,SACpB8G,EAAE,GAAGivB,YAERp1B,cAACuyH,KAAY,CAAC/3H,MAAM,IAAG6E,SACpB8G,EAAE,GAAGivB,eAGVp1B,cAACmwH,KAAc,CAAA9wH,SAAQ,OAANoC,QAAM,IAANA,OAAM,EAANA,EAAQgqH,eAKnC,CAEA,SAAS+G,GAAUzyF,GAAuB,IAAtB,gBAAE0yF,GAAiB1yF,EACrC,MAAM,EAAE55B,GAAMC,cAEd,OACEpG,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEgrB,EAAG,GAAIvrB,SAChBF,eAACu+C,KAAI,CAACC,WAAS,EAAC9oB,QAAS,EAAEx1B,SAAA,CACzBW,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAIxpB,GAAI,CAAE4c,UAAW,SAAUk2G,cAAe,GAAIrzH,SAC/DW,cAACie,KAAU,CAAC5c,QAAQ,IAAGhC,SAGnB8G,EAAE,GAAGivB,sBAIXp1B,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,IAAE,EAAA/pB,SACXF,eAACsgC,KAAG,CAAC7/B,GAAI,CAAEgrB,EAAG,EAAGpO,UAAW,UAAWnd,SAAA,CACrCW,cAACy/B,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZre,MAAO,OACPgC,OAAQ,OACR6c,gBAAiB,yBACjBhd,aAAc,MACdF,OAAQ,kBACRR,SAEFW,cAACmxH,KAAa,CAACvzH,MAAM,UAAUC,SAAS,YAE1CmC,cAACie,KAAU,CAAC5c,QAAQ,KAAIhC,SACrB8G,EAAE,GAAGivB,cAERp1B,cAACie,KAAU,CAAC5c,QAAQ,IAAGhC,SAGnB8G,EAAE,GAAGivB,0BAGTp1B,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEyJ,UAAW,QAAShK,SAC7BW,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,UACNwyH,kBAAgB,EAChB3wH,QAASA,IAAMgzH,EAAgB,KAAKpzH,SAEnC8G,EAAE,GAAGivB,sBAKdp1B,cAAC2yH,KAAO,CAACC,YAAY,WAAWC,UAAQ,IACxC7yH,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,IAAE,EAAA/pB,SACXF,eAACsgC,KAAG,CAAC7/B,GAAI,CAAEgrB,EAAG,EAAGpO,UAAW,SAAUzc,aAAc,QAASV,SAAA,CAC3DW,cAACy/B,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBJ,WAAY,SACZre,MAAO,OACPgC,OAAQ,OACR6c,gBAAiB,yBACjBhd,aAAc,MACdF,OAAQ,kBACRR,SAEFW,cAACkyH,KAAe,CAACt0H,MAAM,UAAUC,SAAS,YAE5CmC,cAACie,KAAU,CAAC5c,QAAQ,KAAIhC,SACrB8G,EAAE,GAAGivB,eAERp1B,cAACie,KAAU,CAAC5c,QAAQ,IAAGhC,SAGnB8G,EAAE,GAAGivB,2BAGTp1B,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEyJ,UAAW,QAAShK,SAC7BW,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,UACNwyH,kBAAgB,EAChB3wH,QAASA,IAAMgzH,EAAgB,KAAKpzH,SAEnC8G,EAAE,GAAGivB,0BAQtB,CAkJe09F,OAhJf,SAAoB9vB,GAAiD,IAAhD,SAAE+vB,EAAQ,eAAEzF,EAAc,gBAAE0F,GAAiBhwB,EAChE,MAAM,EAAE78F,GAAMC,eAEPoC,EAAMyqH,GAAW/wH,mBAAS,OAC1B6uH,EAAUmC,GAAehxH,mBAAS,IAAIiD,MAAK,IAAIA,MAAOE,aACtD2rH,EAAQmC,GAAajxH,mBAC1B,IAAIiD,MAAK,IAAIA,MAAOE,UAAY,SAE3BomH,EAAM2H,GAAWlxH,mBAAS,KAC1BT,EAAQokG,GAAa3jG,mBAAS,CAAC,IAChC,aAAE65D,GAAiBiH,eAElBqwD,GAAkB7wH,YAAYwnH,IAErClnH,qBAAU,KACRkwH,GAAiB,GAChB,IAEH,MAAM/B,EAAwBl+G,GAASmgH,EAAYngH,GAC7Cm+G,EAAsBn+G,GAASogH,EAAUpgH,GACzCk/G,EAAmBA,CAACvyH,EAAO4zH,KAC/BF,EAAQE,EAAO,EAGXb,EAAmBjqH,IACvByqH,EAAQzqH,EAAK,EA6DT+qH,EAAaA,KAEjB,GADWvC,EAAO3rH,UAAY0rH,EAAS1rH,UAC5B,EAAG,CACZ,GAAa,MAATmD,EAKF,OAJAq9F,GAAW3oE,IAAI,IACVA,EACH8zF,OAAQ7qH,EAAE,GAAGivB,6BAER,EACF,GAAa,MAAT5sB,EAKT,OAJAq9F,GAAW3oE,IAAI,IACVA,EACH8zF,OAAQ7qH,EAAE,GAAGivB,6BAER,CAEX,CAEA,MAAa,MAAT5sB,GAAgC,IAAhBijH,EAAK58G,QACvBg3F,GAAW3oE,IAAI,IACVA,EACHuuF,KAAMtlH,EAAE,GAAGivB,mCAEN,IAETywE,EAAU,CAAC,IACJ,EAAI,EAGb,OACE1mG,eAACsgC,KAAG,CAAC7/B,GAAI,CAAEgrB,EAAG,GAAIvrB,SAAA,CA3DHm0H,MACf,OAAQhrH,GACN,IAAK,IACH,OACExI,cAAC8wH,GAAgB,CACfC,SAAUA,EACVC,OAAQA,EACRC,qBAAsBA,EACtBC,mBAAoBA,EACpBzvH,OAAQA,IAGd,IAAK,IACH,OACEzB,cAACgyH,GAAiB,CAChBjB,SAAUA,EACVC,OAAQA,EACRC,qBAAsBA,EACtBC,mBAAoBA,EACpBe,iBAAkBA,EAClBxG,KAAMA,EACNhqH,OAAQA,IAGd,QACE,OAAOzB,cAACwyH,GAAU,CAACC,gBAAiBA,IACxC,EAkCGe,GACAhrH,GACCxI,cAACy/B,KAAG,CAAApgC,SACFF,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE4c,UAAW,QAAS61G,GAAI,GAAIhzH,SAAA,CACrCW,cAACskB,KAAM,CACL1mB,MAAM,UACNwyH,kBAAgB,EAChB3wH,QA3EGg0H,KACbR,EAAQ,MACRG,EAAQ,IACRF,EAAY,IAAI/tH,MAAK,IAAIA,MAAOE,YAChC8tH,EAAU,IAAIhuH,MAAK,IAAIA,MAAOE,UAAY,QAC1CwgG,EAAU,CAAC,EAAE,EAuEHjmG,GAAI,CAAEoc,YAAa,GAAI3c,SAEtB8G,EAAE,GAAGivB,aAERp1B,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,UACN6B,QAxGSnF,UAEnB,GADAoF,EAAMmnC,iBACF0sF,IAAc,CAChBjG,EAAe,WACf,IAAI9mH,EAAY,IACXusH,EACHh3H,KAAMg1H,EACNjoH,GAAIkoH,EACJvF,KAAMA,EAAKnvH,WAAW4lB,QAAQ,KAAM,IACpC1Z,OACAw0D,aAAchgE,SAAS++D,WAECs3D,EAAe,CAAE7sH,eAC3BxC,KAAKqvH,eAAenwG,QAClCoqG,EAAe,WAEfA,EAAe,QAEnB,GAuFU8C,kBAAgB,EAAA/wH,SAEf8G,EAAE,GAAGivB,oBAOpB,EClbe,SAASs+F,KACtB,OACE1zH,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLub,YAAa,OACb1S,WAAY,OACZpL,MAAO,OAEToJ,UAAU,QACVM,IAAI,2EACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,KAIhB,C,kECWA,MAAMklH,GAAe,GAEfC,GAAc,6BACdC,GAAiB,gIAEjBh4F,GAAuB,gDAEvBu+F,GAAkB,CACtBr4H,KAAM4xH,GACNrmH,MAAOqmH,GACPhpF,SAAUgpF,IA0BG,SAAS0G,GAAgBh4G,GAMpC,IANqC,SACvCm3G,EAAQ,YACRvF,EAAW,eACXF,EAAc,QACdC,EAAO,YACPhtH,GACDqb,EAIC,MAAM,EAAEzV,GAAMC,eAGP/D,EAASwxH,GAAc3xH,mBAAS,KAGhC4xH,EAAUC,GAAe7xH,mBAASyxH,KAGlCK,EAAcC,GAAmB/xH,oBAAS,IAE1CT,EAAQokG,GAAa3jG,mBAAS,CAAC,IAGhC,KAAE8B,EAAI,QAAEuW,EAAO,QAAEsR,GAAYrR,aAASsvG,GAA0B,CACpEtjH,UAAW,CAAEomH,IAAKmG,EAASnG,KAC3BlyG,YAAa,kBAIRyzG,GAAa3rH,YAAYunH,IAEhCjnH,qBAAU,KACR,GAAIkB,EAAM,CACR,MAAMkwH,EAzDmB,eAACC,EAAUptG,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,GAAE,OAE7CikD,OAAO7hD,OAELgrG,EAAW3lH,QAAO,CAAC4lH,EAAK9xG,KACtB,MAAM,KAAE3gB,EAAI,KAAEu9B,EAAI,KAAEnsB,GAASuP,EAC7B,OAAK3gB,GAASA,EAAKuiC,UACdkwF,EAAIzyH,EAAKuiC,YACZkwF,EAAIzyH,EAAKuiC,UAAY,CACnB3kC,GAAIoC,EAAKuiC,SACT5oC,KAAMqG,EAAKrG,KACXuL,MAAOlF,EAAKkF,MACZq9B,SAAUviC,EAAKuiC,SACfmwF,YAAa,KAEjBD,EAAIzyH,EAAKuiC,UAAUmwF,YAAYrtH,KAAK,CAClCk4B,OACAnsB,KAAM,IAAI5N,KAAK4N,GAAMy6F,mBAEhB4mB,GAb6BA,CAa1B,GACT,CAAC,GACL,CAoC0BE,CAAuBtwH,EAAKuwH,sBACnDV,EAAWK,EACb,IACC,CAAClwH,IASJ,MAAM6lB,EAAqBnqB,IACzB,MAAM,KAAEpE,EAAI,MAAEd,GAAUkF,EAAM0H,OAC9B2sH,GAAa72F,IAAI,IAAWA,EAAM,CAAC5hC,GAAOd,MAC1CqrG,GAAW3oE,IAAI,IAAWA,EAAM,CAAC5hC,GAAO4xH,MAAgB,EAqBpDyB,EAAmBjvH,IACvB,MAAMlF,EAAQkF,EAAM0H,OAAO5M,MAAMynB,OAC7BznB,IAAUkF,EAAM0H,OAAO5M,OACzBu5H,GAAa72F,IAAI,IAAWA,EAAM,CAACx9B,EAAM0H,OAAO9L,MAAOd,KAAS,EAqD9Dg1H,EAAeA,KACnB,MAAME,EAAY,CAAC,EAEb8E,EAlD6BC,MACnC,MAAMC,EAAWZ,EAASx4H,KAQ1B,OAPqBo5H,EACjBA,EAAS7lH,OAAS,EAChB1I,EAAE,GAAGivB,wBACLg4F,GAAehqH,KAAKsxH,GACpBxH,GACA/mH,EAAE,GAAGivB,wBACPjvB,EAAE,GAAGivB,4BACU,EAyCWq/F,GACxBE,EAtC0BC,MAChC,MAAMC,EAAef,EAASjtH,MAM9B,OALqBguH,EACjB1H,GAAY/pH,KAAKyxH,GACf3H,GACA/mH,EAAE,GAAGivB,yBACPjvB,EAAE,GAAGivB,4BACU,EA+BYw/F,GACzBE,EA5B6BC,MACnC,MAAMC,EAA+BlB,EAAS5vF,SAM9C,OALqB8wF,EACjBA,EAA6BnmH,OAAS,EACpC1I,EAAE,GAAGivB,uBACL83F,GACF/mH,EAAE,GAAGivB,4BACU,EAqBe2/F,GASlC,OAPIP,IAAuB9E,EAAUp0H,KAAOk5H,GACxCG,IAAwBjF,EAAU7oH,MAAQ8tH,GAC1CG,IACFpF,EAAUxrF,SAAW4wF,GAEvBjvB,EAAU6pB,IAEF1kD,OAAOvkD,KAAKipG,GAAW7gH,MAAM,EAgBjComH,EAAsB36H,MAAOsyH,EAAKsI,KAEtC,IAAK,IAADlG,EACF,MAAMC,EAAsD,QAA5CD,EAAG9oH,qCAAyC8oH,EAAI,GAC1DmG,QAAsB56H,EAAYqyH,EAAKqC,GACvCmG,QAAuB76H,EAAY26H,EAAOhxF,SAAU+qF,GACpDoG,EAA0B,CAC9B7uH,UAAW,CACTomH,IAAKuI,EACLxzH,KAAM,CACJrG,KAAM45H,EAAO55H,KACbuL,MAAOquH,EAAOruH,MACdq9B,SAAUkxF,EACV9F,QAAQ,IAAInqH,MAAOG,oBACnBk4C,OACkB,qBAAT73C,KACH3G,UAAUuwH,WAAavwH,UAAUuwH,UAAU1gH,OACzC7P,UAAUuwH,UAAU,GACpBvwH,UAAUC,SACZ0G,KAAKC,iBAAiBC,kBAAkB23C,UAIpDy2E,GAAgB,SAEY9F,EAAUkH,EAExC,CAAE,MAAO7wH,GAMRC,QAAQ+f,IAAI,gDACb,GAaIZ,EAAmBA,CAAClkB,EAAO+H,KAChB,cAAXA,GACJwsH,GAAgB,EAAM,EAGxB,OAAO15G,EACLva,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE+xG,IAAK,IAAKtyG,SACnBW,cAAC+b,GAAO,MAGV5c,eAACu/C,KAAK,CAACt9C,UAAW,EAAGxB,GAAI,CAAEwJ,QAAS,EAAG2Y,SAAU,KAAM1iB,SAAA,CAErDF,eAAC8e,KAAU,CAACc,WAAY,IAAK1d,QAAQ,KAAIhC,SAAA,CACtC8G,EAAE,GAAGivB,kBAAoC,KAAG29F,EAASnG,OAGxD5sH,cAACie,KAAU,CAAC5c,QAAQ,KAAKgI,UAAU,OAAOisH,cAAY,EAAAj2H,SACnD8G,EAAE,GAAGivB,uBAERj2B,eAACu+C,KAAI,CAACC,WAAS,EAAC9oB,QAAS,EAAEx1B,SAAA,CACzBW,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBW,cAACgiB,KAAS,CACRoG,KAAK,QACL7K,MAAOpX,EAAE,GAAGivB,2BACZ95B,KAAK,OACLd,MAAOs5H,EAASx4H,KAChBgN,SAAUuhB,EACVkmG,OAAQpB,EACRnqH,MAAO/F,QAAQgD,EAAOnG,MACtB0qC,WAAYvkC,EAAOnG,KACnB++D,WAAS,MAGbr6D,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,EAAE/pB,SACfW,cAACgiB,KAAS,CACRoG,KAAK,QACL7K,MAAOpX,EAAE,GAAGivB,wBACZ95B,KAAK,QACLd,MAAOs5H,EAASjtH,MAChByB,SAAUuhB,EACVkmG,OAAQpB,EACRnqH,MAAO/F,QAAQgD,EAAOoF,OACtBm/B,WAAYvkC,EAAOoF,MACnBwzD,WAAS,MAGbr6D,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,EAAE/pB,SACfW,cAACgiB,KAAS,CACRoG,KAAK,QACL7K,MAAOpX,EAAE,GAAGivB,sBACZ95B,KAAK,WACLd,MAAOs5H,EAAS5vF,SAChB57B,SAAUuhB,EACVkmG,OAAQpB,EACRpmH,WAtMkB7I,IAC1B,MAAMmvH,EAAUnvH,EAAMovH,OAASpvH,EAAMmvH,QAErB,IAAZA,IAAkBA,EAAU,IAAMA,EAAU,KAAKnvH,EAAMmnC,gBAAgB,EAoMnEriC,MAAO/F,QAAQgD,EAAOyiC,UACtB8B,WAAYvkC,EAAOyiC,SACnBm2B,WAAS,SAIfl7D,eAAC2vD,KAAK,CAACjJ,UAAU,MAAMhxB,QAAS,EAAGlY,eAAe,WAAWg1F,GAAI,EAAEtyG,SAAA,CACjEW,cAACskB,KAAM,CAAC7kB,QAASc,EAAa3C,MAAM,UAAUyD,QAAQ,WAAUhC,SAC7D8G,EAAE,GAAGivB,uBAERp1B,cAACskB,KAAM,CAAC7kB,QA5HOnF,UACnB,GAAIk1H,IAAgB,OAESyF,EAAoBlC,EAASnG,IAAKkH,KAE3DG,GAAgB,GAChBpoG,IAGJ,GAmHmCjuB,MAAM,UAAUyD,QAAQ,YAAWhC,SAC/D8G,EAAE,GAAGivB,6BAGVp1B,cAAC2yH,KAAO,CAAC/yH,GAAI,CAAE+xG,GAAI,EAAG4jB,YAAa,YAEnCv1H,cAACie,KAAU,CAAC5c,QAAQ,KAAKswG,GAAI,EAAG6jB,GAAI,EAAEn2H,SACnC8G,EAAE,GAAGivB,6BAERp1B,cAAC09C,KAAI,CACHC,WAAS,EACT9oB,QAASxyB,EAAQwM,QAAU,EAC3BnO,UAAW,IACX0yB,SAAS,OAAM/zB,SAEdgD,EAAQwM,OACPxM,EAAQrG,KAAK2F,GACX3B,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBF,eAACu/C,KAAK,CACJr9C,QAAQ,YACRzB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACftT,QAAS,EACTtJ,IAAK,GACLT,SAAA,CAEFF,eAAC8e,KAAU,CAAC5c,QAAQ,KAAK0d,WAAY,IAAI1f,SAAA,CACtCsC,EAAKrG,KACN0E,cAAC+d,KAAO,CACNC,MAAO7X,EAAE,GAAGivB,4BAA8C/1B,SAE1DW,cAACV,IAAU,CACTG,QAASA,IA5GHnF,WACxB25H,GAAgB,SAEWgB,EAAoBlC,EAASnG,IAAKpgF,KAE3DynF,GAAgB,GAChBpoG,IACF,EAsGoB4pG,CAAkB,CAChBn6H,KAAMqG,EAAKrG,KACXuL,MAAOlF,EAAKkF,MACZq9B,SAAUviC,EAAKuiC,WAElB7kC,SAEDW,cAAC01H,KAAS,QAGd11H,cAACuH,KAAQ,CACP/I,KAAMw1H,EACNxsH,iBAAkB,IAClBlH,QAASsjB,EACTpB,QAASrc,EAAE,GAAGivB,+BAGlBj2B,eAAC8e,KAAU,CAAC5c,QAAQ,QAAOhC,SAAA,CACxB8G,EAAE,GAAGivB,wBAA0C,KAAGzzB,EAAKkF,SAE1D1H,eAAC8e,KAAU,CAAC5c,QAAQ,QAAOhC,SAAA,CACxB8G,EAAE,GAAGivB,sBAAwC,KAAGzzB,EAAKuiC,YAExD/kC,eAAC8e,KAAU,CAAC5c,QAAQ,YAAWhC,SAAA,CAC5B8G,EAAE,GAAGivB,wBAA0C,KAAGzzB,EAAK0yH,YAAYxlH,UAEtE1P,eAAC8e,KAAU,CAAC5c,QAAQ,YAAWhC,SAAA,CAC5B8G,EAAE,GAAGivB,6BAA+C,OAEvDp1B,cAAC0L,KAAI,CAACiqH,OAAK,EAAAt2H,SACRsC,EAAK0yH,YAAYr4H,KAAI,CAAC6lE,EAAQnwC,IAC7BvyB,eAACuK,KAAQ,CAAArK,SAAA,CACPW,cAAC2J,KAAY,CAAAtK,SACXW,cAAC41H,KAAiB,MAEpB51H,cAAC6J,KAAY,CAACC,QAAS+3D,EAAO9uD,SAJjB,OAAO2e,QAAYA,aAhDlB/vB,EAAKpC,MA4D/BS,cAACkB,KAAK,CACJtD,MAAM,UACNyD,QAAQ,WACRqG,SAAS,UACT9H,GAAI,CAAE1B,MAAO,QAASmB,SAErB8G,EAAE,GAAGivB,2BAMlB,CCrZA,MAAMA,GAAuB,gDAyBd,SAASygG,GAAsBj6G,GAK1C,IAL2C,SAC7Cm3G,EAAQ,eACRzF,EAAc,QACdC,EAAO,YACPC,GACD5xG,EAEC,MAAM,EAAEzV,GAAMC,eAEP/D,EAASwxH,GAAc3xH,mBAAS,KAEjC,KAAE8B,EAAI,QAAEuW,EAAO,QAAEsR,GAAYrR,aAASsvG,GAA0B,CACpEtjH,UAAW,CAAEomH,IAAKmG,EAASnG,KAC3BlyG,YAAa,iBAUf,OAPA5X,qBAAU,KACR,GAAIkB,EAAM,CACR,MAAMkwH,EAzCmB,eAACC,EAAUptG,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,GAAE,OAE7CikD,OAAO7hD,OAELgrG,EAAW3lH,QAAO,CAAC4lH,EAAK9xG,KACtB,MAAM,KAAE3gB,EAAI,KAAEu9B,EAAI,KAAEnsB,GAASuP,EAC7B,OAAK3gB,GAASA,EAAKuiC,UACdkwF,EAAIzyH,EAAKuiC,YACZkwF,EAAIzyH,EAAKuiC,UAAY,CACnB3kC,GAAIoC,EAAKuiC,SACT5oC,KAAMqG,EAAKrG,KACXuL,MAAOlF,EAAKkF,MACZq9B,SAAUviC,EAAKuiC,SACfmwF,YAAa,KAEjBD,EAAIzyH,EAAKuiC,UAAUmwF,YAAYrtH,KAAK,CAClCk4B,OACAnsB,KAAM,IAAI5N,KAAK4N,GAAMy6F,mBAEhB4mB,GAb6BA,CAa1B,GACT,CAAC,GACL,CAoB0BE,CAAuBtwH,EAAKuwH,sBACnDV,EAAWK,EACb,IACC,CAAClwH,IAEGuW,EACLva,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE+xG,IAAK,IAAKtyG,SACnBW,cAAC+b,GAAO,MAGV5c,eAACu/C,KAAK,CAACt9C,UAAW,EAAGxB,GAAI,CAAEwJ,QAAS,EAAG2Y,SAAU,IAAK7jB,MAAO,QAASmB,SAAA,CAEpEF,eAAC8e,KAAU,CAACc,WAAY,IAAK1d,QAAQ,KAAIhC,SAAA,CACtC8G,EAAE,GAAGivB,kBAAoC,KAAG29F,EAASnG,OAGxD5sH,cAACie,KAAU,CAAC5c,QAAQ,KAAKswG,GAAI,EAAG6jB,GAAI,EAAEn2H,SACnC8G,EAAE,GAAGivB,6BAERp1B,cAAC09C,KAAI,CACHC,WAAS,EACT9oB,QAASxyB,EAAQwM,QAAU,EAC3BnO,UAAW,IACX0yB,SAAS,OAAM/zB,SAEdgD,EAAQwM,OACPxM,EAAQrG,KAAK2F,GACX3B,cAAC09C,KAAI,CAACp7B,MAAI,EAAC8G,GAAI,GAAG/pB,SAChBF,eAACu/C,KAAK,CACJr9C,QAAQ,YACRzB,GAAI,CACF6c,QAAS,OACTC,cAAe,SACftT,QAAS,EACTtJ,IAAK,GACLT,SAAA,CAEFW,cAACie,KAAU,CAAC5c,QAAQ,KAAK0d,WAAY,IAAI1f,SACtCsC,EAAKrG,OAER6D,eAAC8e,KAAU,CAAC5c,QAAQ,QAAOhC,SAAA,CACxB8G,EAAE,GAAGivB,wBAA0C,KAAGzzB,EAAKkF,SAE1D1H,eAAC8e,KAAU,CAAC5c,QAAQ,QAAOhC,SAAA,CACxB8G,EAAE,GAAGivB,sBAAwC,KAAGzzB,EAAKuiC,YAExD/kC,eAAC8e,KAAU,CAAC5c,QAAQ,YAAWhC,SAAA,CAC5B8G,EAAE,GAAGivB,wBAA0C,KAAGzzB,EAAK0yH,YAAYxlH,UAEtE1P,eAAC8e,KAAU,CAAC5c,QAAQ,YAAWhC,SAAA,CAC5B8G,EAAE,GAAGivB,6BAA+C,OAEvDp1B,cAAC0L,KAAI,CAACiqH,OAAK,EAAAt2H,SACRsC,EAAK0yH,YAAYr4H,KAAI,CAAC6lE,EAAQnwC,IAC7BvyB,eAACuK,KAAQ,CAAArK,SAAA,CACPW,cAAC2J,KAAY,CAAAtK,SACXW,cAAC41H,KAAiB,MAEpB51H,cAAC6J,KAAY,CAACC,QAAS+3D,EAAO9uD,SAJjB,OAAO2e,QAAYA,aA3BlB/vB,EAAKpC,MAuC/BS,cAACkB,KAAK,CACJtD,MAAM,UACNyD,QAAQ,WACRqG,SAAS,UACT9H,GAAI,CAAE1B,MAAO,QAASmB,SAErB8G,EAAE,GAAGivB,2BAMlB,CCrHA,MAAM/Y,GAAQ4G,aAAY,CACxBhG,QAAS,CACPnT,QAAS,CACPqZ,KAAM8yB,KAAM,OAGhBh3B,WAAY,CACV62G,gBAAiB,CACfC,eAAgB,CACd7sH,KAAM,CACJ,IAAK,CACH8sH,cAAe,QAEjB,iBAAkB,CAChBj5G,gBAAiB,yBACjBnf,MAAOq4C,KAAM,KACb,UAAW,CACTl5B,gBAAiB,4BAGrB,UAAW,CACTA,gBAAiBk5B,KAAM,YAQ7BggF,GAAY,CAChB,gCACA,iCACA,wCACA,0BAGF,SAASl6G,KACP,MAAOm6G,EAAcC,GAAmBj0H,mBAAS,GAQjD,OANA2hB,YAAW,KACWsyG,EAAJ,GAAhBD,EAAoC,EAAqBA,EAAe,EAAE,GACzE,MAEH90C,eAGEphF,cAACy/B,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChBze,MAAO,OACPgC,OAAQ,OACRiiB,SAAU,WACVpF,gBAAiB,UACjBgmB,OAAQ,KACR1jC,SAEFF,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAAA,OAAKsH,UAAU,sCAAqCjI,SAClDW,cAAC0zH,GAAe,MAElB1zH,cAAA,OAAKsH,UAAU,sCAAqCjI,SAClDW,cAAA,QAAMsH,UAAU,+BAA8BjI,SAC3C42H,GAAUC,WAMvB,CAEA,SAASE,KACP,OACEj3H,eAACsgC,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChBze,MAAO,OACPgC,OAAQ,OACRiiB,SAAU,WACVpF,gBAAiB,UACjBgmB,OAAQ,KACR1jC,SAAA,CAEFW,cAACq2H,KAAe,CAACx4H,SAAS,QAAQD,MAAM,YACxCoC,cAAA,QAAMsH,UAAU,uBAAsBjI,SAAC,+CAK7C,CAEA,SAASi3H,KACP,OACEn3H,eAACsgC,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTC,cAAe,SACfH,WAAY,SACZI,eAAgB,SAChBze,MAAO,OACPgC,OAAQ,OACRiiB,SAAU,WACVpF,gBAAiB,UACjBgmB,OAAQ,KACR1jC,SAAA,CAEFW,cAACu2H,KAAU,CAAC14H,SAAS,QAAQD,MAAM,UACnCoC,cAAA,QAAMsH,UAAU,uBAAsBjI,SAAC,sDAK7C,CAEe,SAASm3H,GAAa56G,GASjC,IATkC,KACpCpd,EAAI,YACJ+B,EAAW,MACXyd,EAAK,KACLy4G,EAAI,QACJlJ,EAAO,SACPwF,EAAQ,YACRvF,EAAW,gBACXwF,GACDp3G,EACC,MAAO86G,EAAapJ,GAAkBprH,mBAAS,MAEzCo7B,EAAmBA,KACvB/8B,IACAgtH,EAAQ,OACRD,EAAe,MACf0F,GAAiB,EAmEnB,OACEhzH,cAACqkB,KAAa,CAAChI,MAAOA,GAAMhd,SAC1BF,eAACoiB,KAAM,CAAC/iB,KAAMA,EAAM8B,QAASg9B,EAAkB+8B,WAAS,EAAAh7D,SAAA,CACtDF,eAAC6kB,KAAW,CAACzkB,GAAG,qBAAqB+H,UAAU,eAAcjI,SAAA,CAC3DW,cAAA,QAAAX,SAAO2e,IACPhe,cAAA,QAAMsH,UAAU,wBAAwB7H,QAAS69B,EAAiBj+B,SAChEW,cAAA,KAAGsH,UAAU,mBACP,OAEVtH,cAAC2yH,KAAO,IACRxzH,eAACilB,KAAa,CAACxkB,GAAI,CAAEuiB,SAAU,WAAYyI,EAAG,GAAIvrB,SAAA,CAC/Cq3H,GA3EaC,MACpB,OAAQD,GACN,IAAK,UACH,OAAO12H,cAAC+b,GAAO,IACjB,IAAK,UACH,OAAO/b,cAACo2H,GAAc,IACxB,IAAK,QACH,OAAOp2H,cAACs2H,GAAY,IAIxB,EAgEsBK,GAChB32H,cAACy/B,KAAG,CACF7/B,GAAI,CACF6c,QAAS,OACTF,WAAY,SACZI,eAAgB,UAChBtd,SAxDe,WAA+B,IAA9Bu3H,EAAQ7vG,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,cACrC,MAAM8vG,EAAsB,CAC1BC,IAAKA,IACH92H,cAACqtH,GAAO,CACNC,eAAgBA,EAChBC,QAASA,EACTC,YAAaA,IAGjBuJ,YAAaA,IACX/2H,cAAC8yH,GAAW,CACVC,SAAUA,EACVzF,eAAgBA,EAChB0F,gBAAiBA,IAGrB3wH,QAASA,IACPrC,cAAC61H,GAAsB,CACrB9C,SAAUA,EACVzF,eAAgBA,EAChBC,QAASA,EACTC,YAAaA,IAGjB31D,KAAMA,IACJ73D,cAAC4zH,GAAgB,CACfb,SAAUA,EACVvF,YAAaA,EACbF,eAAgBA,EAChBC,QAASA,EACThtH,YAAa+8B,KAInB,OAAOu5F,EAAoBD,GACvBC,EAAoBD,KACpBC,EAAoBE,aAC1B,CAqBWC,CAAmBP,YAOhC,CCxPO,MAAMQ,GAAuBp6G,KAAOgI,GAAG;;;;;;;;EAUjCqyG,GAAoBr6G,KAAOgI,GAAG;;;;;;;EAS9BsyG,GAAkBt6G,KAAOgI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;ECnB5BuyG,GAAsBv6G,KAAOgI,GAAG;;;;;;;EAShCsqF,GAAOtyF,KAAOgI,GAAG;;;;;;;;;;;;;;;EAiBjBwqF,GAAOxyF,KAAOgI,GAAG;;;;;;;;;;;;;gDCf9B,MAEMxI,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KALc,WAOhBk0G,QAAS,CACPl0G,KAPY,cAsJHm0G,OA1II17G,IAQZ,IARa,KAClB27G,EAAI,KACJr6F,EAAI,oBACJs6F,EAAmB,gBACnBC,EAAe,oBACfC,EAAmB,gBACnBC,EAAe,QACflzG,GACD7I,EACC,MAAMvZ,EAAUC,eACTs1H,GAAoBp1H,YAAY0tD,KAChChf,GAAS,KAAEltC,EAAI,QAAEuW,IAAa+2B,aAAa2e,GAA2B,CAC3Ev1C,YAAa,iBAGTm9G,EAAiBh5H,aAAaC,QAAQ,wBACxCiH,KAAK4Q,MAAM9X,aAAaC,QAAQ,yBAChCD,aAAaC,QAAQ,wBAuBnBg5H,EAAkBA,KACM,UAAxBN,GAAuD,cAApBC,IACrC54H,aAAaK,QAAQ,iBAAkB,KACQ,MAA3CL,aAAaC,QAAQ,mBACvBD,aAAaK,QAAQ,cAAc,GAErCL,aAAaK,QAAQ,iBAAkB,IACvCL,aAAaK,QAAQ,uBAAwB,IAC/C,EAsBF,OACEC,eAACi4H,GAAmB,CAAC,cAAY,aAAY/3H,SAAA,CAC1Ckb,EAAU,GArBKw9G,MAAO,IAADC,EACxB,MAAMC,EAAkB,OAAJj0H,QAAI,IAAJA,GAAkB,QAAdg0H,EAAJh0H,EAAMk0H,oBAAY,IAAAF,OAAd,EAAJA,EAAoBG,OAAOtpH,OAC/C,IAAK7K,EAAM,OAAO,KACI,IAADo0H,EAAjBH,EAAc,GAChBp5H,aAAaK,QAAQ,cAAc,GACnCL,aAAaK,QAAQ,iBAAkB+4H,GACvCp5H,aAAaK,QACX,iBACA6G,KAAKC,UAAc,OAAJhC,QAAI,IAAJA,GAAkB,QAAdo0H,EAAJp0H,EAAMk0H,oBAAY,IAAAE,OAAd,EAAJA,EAAoBD,SAErC91H,EAAQ2E,KAAKuwH,KAEb14H,aAAaK,QAAQ,cAAc,GACnCmD,EAAQ2E,KACN,sEAEJ,EAKkB+wH,GACf76F,EACCl9B,cAACmvG,GAAI,CAAA9vG,SACHW,cAAC6I,IAAI,CAACC,GAAIo0B,EAAK79B,SACbW,cAACqkB,KAAa,CAAChI,MAAOA,GAAMhd,SAC1BW,cAACskB,KAAM,CACL7kB,QAASq4H,EACTz2H,QAAQ,YACRg3H,UACEr4H,cAACs4H,KAAyB,CACxB14H,GAAI,CACFM,OAAQ,OACRhC,MAAO,OACP8d,YAAa,MACb1S,WAAY,SAIlB1L,MAAO85H,EACP93H,GAAI,CACFhC,MAAO,QACPmC,aAAc,OACdV,SAEDm4H,UAMTx3H,cAACmvG,GAAI,IAGNooB,EACCv3H,cAACqvG,GAAI,CAAAhwG,SACHW,cAACqkB,KAAa,CAAChI,MAAOA,GAAMhd,SAC1BW,cAACskB,KAAM,CACL1C,SAAU6C,EACVhlB,QA3FYnF,UACtB,UACQ42C,EAAQ,CACZ1qC,UAAW,CACT6lB,UAAWrvB,SAAS6B,aAAaC,QAAQ,SAG/C,CAAE,MAAOoI,GAAM,CAEf,GAAwB,cAApBuwH,EAAiC,CACnC,IACEG,EAAiB,CACfpxH,UAAW,CACT2xH,OAAQN,KAET5wH,OAAOC,OACZ,CAAE,MAAOA,GAAM,CACf4wH,GACF,GA0EUz2H,QAAQ,YACRsvB,QACE3wB,cAACu4H,KAAuB,CACtB34H,GAAI,CACFM,OAAQ,OACRhC,MAAO,OACP8d,YAAa,MACb1S,WAAY,SAIlB1L,MAAO+5H,EACP/3H,GAAI,CACFhC,MAAO,QACPmC,aAAc,OACdV,SAEDo4H,QAKPz3H,cAACqvG,GAAI,MAEa,EClHX1kF,OAvCK/O,IAAe,IAAd,KAAEwG,GAAMxG,EAC3B,MAAM,iBAAE48G,GAAqB12H,qBAAWC,KACxC,OACE/B,cAAAZ,WAAA,CAAAC,SACEF,eAAC83H,GAAoB,CAAA53H,SAAA,CACnBW,cAACk3H,GAAiB,CAAA73H,SAAC,kBACnBF,eAACg4H,GAAe,CAAA93H,SAAA,CACdW,cAAA,OAAKsH,UAAU,SAAQjI,SAAE+iB,EAAKq2G,cAC9Bt5H,eAAA,OAAKmI,UAAU,SAAQjI,SAAA,CACrBF,eAAA,KAAGmI,UAAU,YAAWjI,SAAA,CAAC,4CACgB,IACtCR,aAAaC,QAAQ,SACpB,8GAKRK,eAACg4H,GAAe,CAAA93H,SAAA,CACdW,cAAA,QAAMsH,UAAU,WAAUjI,SAAC,mDAG3BW,cAAA,OAAKsH,UAAU,SAAQjI,SAAC,8FAK1BW,cAACs3H,GAAU,CACTI,oBAAqB,UACrBF,oBAAqB,QACrBG,gBAAiB,UACjBF,gBAAiB,YACjBv6F,KAAM9a,EAAK8a,KACXq6F,KAAMn1G,EAAKm1G,WAGd,ECrBQmB,OAfqB98G,IAAe,IAAd,KAAEwG,GAAMxG,EAC3C,OACEzc,eAAC83H,GAAoB,CAAA53H,SAAA,CACnBW,cAACk3H,GAAiB,CAAA73H,SAAC,iCACnBW,cAACm3H,GAAe,CAAA93H,SAAE+iB,EAAKq2G,cACvBz4H,cAACs3H,GAAU,CACTI,oBAAqB,UACrBF,oBAAqB,YACrBt6F,KAAM9a,EAAK8a,KACXq6F,KAAMn1G,EAAKm1G,SAEQ,EChBpB,MAAMoB,GAAmC97G,KAAOgI,GAAG;;;;;;;;EAU7C+zG,GAAoC/7G,KAAOgI,GAAG;;;;;EAO9Cg0G,GAA2Bh8G,KAAOgI,GAAG;;;;;;;;;;EAYrCi0G,GAAwCj8G,KAAOgI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0DCRhDk0G,OAjBkBA,KAC/B,MAAM,0BAAEC,GAA8Bl3H,qBAAWC,KAKjD,OACE/B,cAAC44H,GAAiC,CAAAv5H,SAChCW,cAAC+d,KAAO,CAACC,MAAO,0BAAuB3e,SACrCW,cAACV,IAAU,CAAC1B,MAAM,UAAU6B,QAASA,KANzCu5H,GAA0B,EAM+C,EAAA35H,SACnEW,cAACi5H,KAAkB,SAGW,ECXxC,MAGM58G,GAAQ4G,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KANc,WAQhB3e,MAAO,CACL2e,KARY,cAuIH+1G,OA1HiBA,KAC9B,MAAM72H,EAAUC,eACV,uBAAE62H,EAAsB,0BAAEH,GAC9Bl3H,qBAAWC,KAEPxB,EAAcA,KAClBy4H,GAA0B,EAAM,EAalC,OACEh5H,cAAAZ,WAAA,CAAAC,SACEF,eAACoiB,KAAM,CACL/iB,KAAM26H,EACN74H,QAASC,EACTC,WAAY,CACVZ,GAAI,CACFG,aAAc,MACd7B,MAAO,MACPgC,OAAQ,QAEVb,SAAA,CAEFW,cAACgkB,KAAW,CACVpkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBuH,WAAY,yBACZnH,gBAAiB,UACjBnf,MAAO,UACPC,SAAU,OACV0L,aAAc,OACd0a,WAAY,MACZ7a,QAAS,OACT/J,SAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,eAChBze,MAAO,OACPgmB,WAAY,yBACZrmB,SAAU,OACVkhB,WAAY,QACZ1f,SACH,uCAKHW,cAACokB,KAAa,CACZxkB,GAAI,CACF6c,QAAS,OACTE,eAAgB,UAChBtd,SAEFF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,SACfC,eAAgB,SAChBJ,WAAY,SACZzc,IAAK,QACLT,SAAA,CAEFW,cAAA,QACES,MAAO,CACLgc,QAAS,OACTE,eAAgB,SAChBze,MAAO,MACPgmB,WAAY,yBACZrmB,SAAU,QACVwB,SACH,yEAGDW,cAAA,OAAKS,MAAO,CAAEgc,QAAS,OAAQ3c,IAAK,QAAST,SAC3CF,eAACklB,KAAa,CAAChI,MAAOA,GAAMhd,SAAA,CAC1BW,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,QACN6B,QAASc,EACTX,GAAI,CACFhC,MAAO,OACPmC,aAAc,MACd9B,OAAQ,iBACR,UAAW,CAAE8e,gBAAiB,YAC9B1d,SACH,aAGDW,cAACskB,KAAM,CACLjjB,QAAQ,YACRzD,MAAM,UACN6B,QA9FiB25H,KAC/B/2H,EAAQ2E,KAAK,0BACbgyH,GAA0B,GAC1Bn6H,aAAaK,QAAQ,iBAAkB,KACvCL,aAAaK,QAAQ,KAAM,IAC3BL,aAAaK,QAAQ,iBAAkB,IACvCL,aAAaK,QAAQ,uBAAwB,IAC7CL,aAAaK,QAAQ,cAAc,EAAM,EAwF3BU,GAAI,CACFhC,MAAO,OACPmC,aAAc,MACd9B,OAAQ,gBACR,UAAW,CAAE8e,gBAAiB,YAC9B1d,SACH,0BAQV,EC1HO4jB,aAAY,CACxBhG,QAAS,CACPiG,QAAS,CACPC,KAJiB,cAAvB,MASMk2G,GAAkB17H,IACtB,MAAM,SAAE0B,EAAQ,MAAE7E,EAAK,MAAEk3B,KAAUo6E,GAAUnuG,EAE7C,OACEqC,cAAA,OACE2mB,KAAK,WACL2yG,OAAQ9+H,IAAUk3B,EAClBnyB,GAAI,mBAAmBmyB,IACvB,kBAAiB,cAAcA,OAC3Bo6E,EAAKzsG,SAER7E,IAAUk3B,GACT1xB,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEgrB,EAAG,GAAIvrB,SAChBW,cAACie,KAAU,CAAA5e,SAAEA,OAGb,EAUJk6H,GAAa7nG,IACV,CACLnyB,GAAI,cAAcmyB,IAClB,gBAAiB,mBAAmBA,MC9BjC,MAAM22F,GAAS,CACpB,CACEE,KAAM,mGACNjtH,KAAM,mGACNk+H,UAAW,eACX7tH,UCrBiBiQ,IAAe,IAAd,KAAEwG,GAAMxG,EAC5B,OACEzc,eAAC83H,GAAoB,CAAA53H,SAAA,CACnBF,eAAC+3H,GAAiB,CAAA73H,SAAA,CAAC,YAEjBW,cAAC+4H,GAAwB,OAE3B/4H,cAACm3H,GAAe,CAAA93H,SAAE+iB,EAAKq2G,cACvBz4H,cAACs3H,GAAU,CACTG,gBAAiB,YACjBE,gBAAiB,UACjBJ,KAAMn1G,EAAKm1G,OAEbv3H,cAACk5H,GAAuB,MACH,EDQvB7kF,OAAQ,OACRnV,KAAM,QACNu5F,YAAa,iLACb9oH,SAAS,EACT4nH,KAAM,yBACN1rE,KAAM,kBACN3uB,KAAM,MAER,CACEqrF,KAAM,sFACNjtH,KAAM,sFACNk+H,UAAW,iBACX7tH,UElCmBiQ,IAAe,IAAd,KAAEwG,GAAMxG,EAC9B,OACEzc,eAAC83H,GAAoB,CAAA53H,SAAA,CACnBF,eAAC+3H,GAAiB,CAAA73H,SAAA,CAAC,yBAEjBW,cAAC+4H,GAAwB,OAG3B/4H,cAACm3H,GAAe,CAAA93H,SAAE+iB,EAAKq2G,cACvBt5H,eAACg4H,GAAe,CAAA93H,SAAA,CACdW,cAAA,QAAMsH,UAAU,WAAUjI,SAAC,qCAC3BW,cAAA,OAAKsH,UAAU,SAAQjI,SAAC,mGAK1BW,cAACs3H,GAAU,CACTE,oBAAqB,WACrBE,oBAAqB,UACrBC,gBAAiB,UACjBF,gBAAiB,YACjBv6F,KAAM9a,EAAK8a,KACXq6F,KAAMn1G,EAAKm1G,OAEbv3H,cAACk5H,GAAuB,MACH,EFUvB7kF,OAAQ,OACRnV,KAAM,aACNu5F,YACE,yTACF9oH,SAAS,EACT4nH,KAAM,mGACN1rE,KAAM,yBACN3uB,KAAM,8DAER,CACEqrF,KAAM,6DACNjtH,KAAM,6DACNk+H,UAAW,sBACX7tH,UDEwBiQ,IAAe,IAAd,KAAEwG,GAAMxG,EACnC,MAAM69G,EAAqB1zH,KAAK4Q,MAAM9X,aAAaC,QAAQ,mBACrD46H,EAAc18H,SAAS6B,aAAaC,QAAQ,mBAC5Cud,EAAQ6a,gBACP18B,EAAOkI,GAAYrE,IAAM6D,SAAS,IAClCsE,EAAWmzH,GAAez3H,mBAASu3H,IACnCG,EAAgBC,GAAqB33H,oBAAS,GACrDrD,aAAaK,QAAQ,uBAAwB6G,KAAKC,UAAUQ,IAoE5D,OApBA1D,qBAAU,KACR,GAAI0D,EAAW,CACb3H,aAAaK,QAAQ,uBAAwB6G,KAAKC,UAAUQ,IAC5D,MAAMszH,EAA4B,OAATtzH,QAAS,IAATA,OAAS,EAATA,EAAWyR,MACjCqxG,IAAK,IAAAyQ,EAAAC,EAAA,OACC,OAAL1Q,QAAK,IAALA,GAAY,QAAPyQ,EAALzQ,EAAO9qE,aAAK,IAAAu7E,OAAP,EAALA,EAAclrH,QAAS,KACjB,OAALy6G,QAAK,IAALA,GAAiB,QAAZ0Q,EAAL1Q,EAAOG,kBAAU,IAAAuQ,GAAjBA,EAAmBpzG,SAAS,SACtB,OAANtY,aAAM,IAANA,eAAQ2rH,UAAe,OAAL3Q,QAAK,IAALA,OAAK,EAALA,EAAOE,gBACzBxsH,SAAc,OAALssH,QAAK,IAALA,OAAK,EAALA,EAAOI,iBACjB1sH,SAAc,OAALssH,QAAK,IAALA,OAAK,EAALA,EAAOI,gBAAkB,KAClC1sH,SAAc,OAALssH,QAAK,IAALA,OAAK,EAALA,EAAOI,gBAAkB,GAAI,IAGxCmQ,IADEC,EAKN,IACC,CAACtzH,IAGFrH,eAACw5H,GAAgC,CAAAt5H,SAAA,CAC/BF,eAAC05H,GAAwB,CAAAx5H,SAAA,CACvBW,cAAA,QAAMsH,UAAU,kBAAiBjI,SAC9B,iCAEHW,cAAC+4H,GAAwB,OAE3B/4H,cAAC84H,GAAqC,CAAAz5H,SACpCW,cAAA,OAAKsH,UAAU,mBAAkBjI,SAAM,OAAJ+iB,QAAI,IAAJA,OAAI,EAAJA,EAAMq2G,gBAE3Cz4H,cAAC84H,GAAqC,CAAAz5H,SACpCF,eAACsgC,KAAG,CAAC7/B,GAAI,CAAE1B,MAAO,QAASmB,SAAA,CACzBW,cAACy/B,KAAG,CAAC7/B,GAAI,CAAEuqG,aAAc,EAAGtvC,YAAa,WAAYx7D,SACnDW,cAACk6H,KAAI,CACH1/H,MAAOA,EACP8N,SAnFSgV,CAAC5d,EAAOiwC,KAC3BjtC,EAASitC,EAAS,EAmFRtuC,QAAQ,aACR,aAAW,qBAAoBhC,SAE9Bo6H,EAAmBz9H,KAAI,CAACstH,EAAO53F,IAC9B1xB,cAACqqG,KAAG,CACF9sF,MAAO,iBAAmBmU,EAAQ,MAC9B6nG,GAAU7nG,WAMtB1xB,cAACm6H,KAAc,CACbC,KAA0B,QAApB/9G,EAAMwpC,UAAsB,YAAc,IAChDn0B,MAAOl3B,EACP6/H,cAhGiB3oG,IACzBhvB,EAASgvB,EAAM,EA+F0BryB,SAEd,OAAlBo6H,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBz9H,KAAI,CAACstH,EAAO53F,KAAK,IAAA4oG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OACpC97H,eAACk6H,GAAc,CAAC7+H,MAAOA,EAAOk3B,MAAOA,EAAOwpG,IAAK7+G,EAAMwpC,UAAUxmD,SAAA,CAC/DW,cAAA,OAAKsH,UAAU,oBAAmBjI,SAChCF,eAACklB,KAAa,CAAChI,MAAOA,EAAMhd,SAAA,CAC1BW,cAACgiB,KAAS,CACRpiB,GAAI,CAAC,EACLwoB,KAAK,QACL/mB,QAAQ,WACRkc,MAAO,iBACP8K,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAClCnC,OACkB,QAAhB08H,EAAA9zH,EAAUkrB,UAAM,IAAA4oG,GAAO,QAAPC,EAAhBD,EAAkB97E,aAAK,IAAA+7E,OAAP,EAAhBA,EAAyB1rH,SAAU,EAC/B,UACA,QAEN+S,WAAU83G,EAAc,GACxBl/H,MAAuB,QAAlBggI,EAAEh0H,EAAUkrB,UAAM,IAAA8oG,OAAA,EAAhBA,EAAkBh8E,MACzBl2C,SAAW5I,GA/GLy7H,EAACz7H,EAAOgyB,KAChC,MAAMl3B,EAAQkF,EAAM0H,OAAO5M,MACb,oEACJ4I,KAAK5I,IACbm/H,GAAayB,GACXA,EAAcp/H,KAAI,CAACsmB,EAAM+4G,IACvBA,IAAQ3pG,EAAQ,IAAKpP,EAAMk8B,MAAOhkD,GAAU8nB,KAGlD,EAsGuC64G,CAAkBz7H,EAAOgyB,KAEhD1xB,cAACgiB,KAAS,CACRpiB,GAAI,CAAC,EACLwoB,KAAK,QACL/mB,QAAQ,WACRkc,MAAM,iBACN8K,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAClCnC,MACkB,QAAhB68H,EAAAj0H,EAAUkrB,UAAM,IAAA+oG,GAAY,QAAZC,EAAhBD,EAAkBhR,kBAAU,IAAAiR,GAA5BA,EAA8B9zG,SAAS,MACvCtY,OAAO2rH,UAA0B,QAAjBU,EAACn0H,EAAUkrB,UAAM,IAAAipG,OAAA,EAAhBA,EAAkBnR,aAC/B,UACA,QAEN5nG,WAAU83G,EAAc,GACxBl/H,MAAuB,QAAlBogI,EAAEp0H,EAAUkrB,UAAM,IAAAkpG,OAAA,EAAhBA,EAAkBnR,WACzBnhH,SAAW5I,GAnHA47H,EAAC57H,EAAOgyB,KACrC,MAAMl3B,EAAQkF,EAAM0H,OAAO5M,MAE3B,GADc,cACJ4I,KAAK5I,GAAQ,CACrB,MAAM+gI,EAAqB/gI,EAAMqC,MAAM,KACjC2+H,EAAUD,EAAmB,GAAKA,EAAmB,GAC3D5B,GAAayB,GACXA,EAAcp/H,KAAI,CAACsmB,EAAM+4G,IACvBA,IAAQ3pG,EACJ,IAAKpP,EAAMmnG,WAAYjvH,EAAOgvH,YAAagS,GAC3Cl5G,KAGV,GAsGuCg5G,CAAuB57H,EAAOgyB,UAIzD1xB,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCF,eAACklB,KAAa,CAAChI,MAAOA,EAAMhd,SAAA,CAC1BW,cAACgiB,KAAS,CACRpiB,GAAI,CAAC,EACLwoB,KAAK,QACLqzG,SAAO,EACPp6H,QAAQ,WACRkc,MAAO,qBACP8K,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,GAAK27H,UAAU,GACjD99H,MACE0Q,OAAO2rH,UAA0B,QAAjBY,EAACr0H,EAAUkrB,UAAM,IAAAmpG,OAAA,EAAhBA,EAAkBrR,aAC/B,UACA,QAENhvH,MAAuB,QAAlBsgI,EAAEt0H,EAAUkrB,UAAM,IAAAopG,OAAA,EAAhBA,EAAkBtR,cAE3BxpH,cAACgiB,KAAS,CACRpiB,GAAI,CAAC,EACLwoB,KAAK,QACL/mB,QAAQ,WACRkc,MAAM,mBACN8K,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,IAClCnC,MACEZ,SAAyB,QAAjB+9H,EAACv0H,EAAUkrB,UAAM,IAAAqpG,OAAA,EAAhBA,EAAkBrR,iBAAmB,KAC9C1sH,SAAyB,QAAjBg+H,EAACx0H,EAAUkrB,UAAM,IAAAspG,OAAA,EAAhBA,EAAkBtR,iBAAmB,IAC1C,UACA,QAEN9nG,WAAU83G,EAAc,GACxBl/H,MAAuB,QAAlBygI,EAAEz0H,EAAUkrB,UAAM,IAAAupG,OAAA,EAAhBA,EAAkBvR,eACzBphH,SAAW5I,GArIAi8H,EAACj8H,EAAOgyB,KACrC,MAAMl3B,EAAQkF,EAAM0H,OAAO5M,MACb,cACJ4I,KAAK5I,IACbm/H,GAAayB,GACE,OAAbA,QAAa,IAAbA,OAAa,EAAbA,EAAep/H,KAAI,CAACsmB,EAAM+4G,IACxBA,IAAQ3pG,EAAQ,IAAKpP,EAAMonG,eAAgBlvH,GAAU8nB,KAG3D,EA4HuCq5G,CAAuBj8H,EAAOgyB,YAI1C,WAKzB1xB,cAACs3H,GAAU,CACTE,oBAAqB,WACrBE,oBAAqB,UACrBC,gBAAiB,UACjBF,gBAAiB,YACjBhzG,QAASm1G,EACT18F,KAAM9a,EAAK8a,KACXq6F,KAAMn1G,EAAKm1G,OAEbv3H,cAACk5H,GAAuB,MACS,ECpMnC7kF,OAAQ,OACRnV,KAAM,YACNu5F,YAAa,2JACb9oH,SAAS,EACT4nH,KAAM,sFACN1rE,KAAM,+BACN3uB,KAAM,yCACNk6B,KAAMmyD,MAER,CACEhB,KAAM,qEACNjtH,KAAM,qEACNk+H,UAAW,mBACX7tH,UAAW+sH,GACXrkF,OAAQ,OACRnV,KAAM,QACNu5F,YAAa,mJACb9oH,SAAS,EACT4nH,KAAM,KACNr6F,KAAM,0BAER,CACEqrF,KAAM,yCACNjtH,KAAM,yCACNk+H,UAAW,YACX7tH,UAAWgf,GACX0pB,OAAQ,OACRnV,KAAM,GACNu5F,YAAa,gMACb9oH,SAAS,EACT4nH,KAAM,6DACN1rE,KAAM,kBACN3uB,KAAM,0BAER,CACEqrF,KAAM,yBACNjtH,KAAM,yBACNqQ,UAAWi+G,GACXv1E,OAAQ,QAEV,CACEk0E,KAAM,qBACNjtH,KAAM,qBACNqQ,UAAWonB,GACXshB,OAAQ,QAGV,CACEk0E,KAAM,eACNjtH,KAAM,eACNqQ,UGlGW,WAAwB,IAADpB,EACpC,MAAOqxH,EAASC,GAAcx9H,WAAe,KACtCuqB,EAAQkzG,GAAaz9H,YAAe,IAErC,MAAEolB,EAAK,SAAE4B,EAAQ,oBAAErb,GACvB3L,aAAiB0D,MACb,KAAEiC,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aAASyB,GAAsB,CACvEvB,YAAa,iBAiBf,OAVArc,aAAgB,KACV2F,GACFqhB,EAASrhB,EAAKqiC,YAChB,GACC,CAACriC,IAEJ3F,aAAgB,KACdw9H,EAAWp4G,EAAMznB,KAAKoyE,GAAQA,EAAI7uE,KAAI,GACrC,CAACkkB,IAEAjf,EAEAxE,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEf1U,UAAU,QACVM,IAAI,iEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAMZuS,IAAYkJ,EAEZzjB,cAAA,OACES,MAAO,CACLkc,eAAgB,SAChBJ,WAAY,UACZld,SAEFW,cAAC+b,GAAO,MAMZ/b,cAACuoB,WAAQ,CAAAlpB,SACa,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCyB,OACrChM,cAAColB,GAAU,CACTphB,KAAMA,EAAKqiC,YACXzjB,QAASg5G,EACTn7G,QAASoL,IAET,MAGV,EH+BIwoB,OAAQ,QAEV,CACEk0E,KAAM,qBACNjtH,KAAM,qBACNqQ,UzLrEW,WAA8B,IAADmgB,EAAAvhB,EAAAC,EAC1C,MAAM,EAAErE,GAAMC,eAER,eAAE86B,GAAmBP,MAEpB3M,EAAYU,IADH1rB,KACoB3K,IAAM6D,SAAS,MAC7C,SACJiY,EAAQ,YACRkR,EAAW,oBACXrhB,EAAmB,yBACnBmtB,EAAwB,4BACxBC,EAA2B,6BAC3BnD,EAA4B,gCAC5BC,GACE71B,IAAMyD,WAAWC,MACdyuB,EAAiB7G,GAAsBznB,mBAAS,OAChDujB,EAAcC,GAAmBxjB,oBAAS,IAC1CyjB,EAAYC,GAAiBvnB,IAAM6D,SAAS,KAC5C65H,EAAgBC,GAAoB95H,mBAAS,IAC7C+5H,EAAoBC,GAAyB79H,IAAM6D,SAAS,IAC7D,KAAE8B,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,aAASgZ,GAAsB,CACvE9Y,YAAa,iBAEToW,EAAmB,OAAJ9sB,QAAI,IAAJA,GAA0B,QAAtB8nB,EAAJ9nB,EAAM+nB,4BAAoB,IAAAD,OAAtB,EAAJA,EAA4BE,SAEjDlpB,qBAAU,KACR,GAAIkB,EAAM,CACI,OAAZ8sB,QAAY,IAAZA,KAAc90B,KAAKqS,GAAM2tH,EAAiB3tH,KAC1C,MAAM8tH,EAAmBrrG,EAAathB,QAAQ0K,IAAO,IAAAkiH,EAAAC,EAAA,OAC5C,OAAPniH,QAAO,IAAPA,GAAa,QAANkiH,EAAPliH,EAAS5e,YAAI,IAAA8gI,GAAe,QAAfC,EAAbD,EAAe94H,qBAAa,IAAA+4H,OAArB,EAAPA,EAA8Bz1G,SAAmB,OAAVjB,QAAU,IAAVA,OAAU,EAAVA,EAAYriB,cAAc,IAEnE+nB,EAAY8wG,GACZD,EAAsB,EACxB,IACC,CAACl4H,EAAM2hB,IAEV,MAAOnnB,EAAMmE,GAAWtE,IAAM6D,UAAS,IAChCzE,EAASsoB,GAAc1nB,IAAM6D,SAAS,IACvC8jB,EAAcxnB,GAA2B,IAAnBf,EAAQoR,OAC9BuX,EArCiB,EAqCL61G,EACZ91G,EAAaC,EAtCI,EAuCjBC,EAAUlM,EAAS5d,MAAM4pB,EAAYC,GACrCk2G,EAA2B,OAAdp7F,QAAc,IAAdA,OAAc,EAAdA,EAAgBllC,KAAKke,GAAmB,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAAS3a,KACvDg9H,EAAoBh2G,KAAKC,KAAKrM,EAAStL,OAzCtB,IA0ChBgnB,EAAmBC,GAAwB5zB,oBAAS,IACpD6zB,EAAqBymG,GAA0Bt6H,oBAAS,IACxDg0B,EAAiBC,GAAyBj0B,oBAAS,IACnD8zB,EAAmBC,GAA2B/zB,oBAAS,IACvDk0B,EAAeC,GAAuBn0B,oBAAS,IAC/Cs0B,GAAkBC,IAA0Bv0B,oBAAS,IACrDw0B,GAAgBC,IAAwBz0B,oBAAS,IACjDo0B,GAAcC,IAAsBr0B,oBAAS,IAC7C40B,GAA0BC,IAAkC70B,oBAAS,IACrE80B,GAA0BC,IAAkC/0B,oBAAS,GAiC5E7D,IAAMyE,WAAU,KACd,IAAI+jB,GAAS,EACb,GAAKb,EAYL,MATA,WAEE,SAnGN,WAA2B,IAAZc,EAAKC,UAAAlY,OAAA,QAAArP,IAAAunB,UAAA,GAAAA,UAAA,GAAG,EACrB,OAAO,IAAIC,SAASC,IAClBpD,WAAWoD,EAASH,EAAM,GAE9B,CA8FYI,CAAM,KACRL,EAAQ,CACV,MAAMM,EAA8B,OAAZ2J,QAAY,IAAZA,OAAY,EAAZA,EAActhB,QAAQ0K,IAAO,IAAAuiH,EAAAC,EAAA,OAC5C,OAAPxiH,QAAO,IAAPA,GAAa,QAANuiH,EAAPviH,EAAS5e,YAAI,IAAAmhI,GAAe,QAAfC,EAAbD,EAAen5H,qBAAa,IAAAo5H,OAArB,EAAPA,EAA8B91G,SAAmB,OAAVjB,QAAU,IAAVA,OAAU,EAAVA,EAAYriB,cAAc,IAEnEyiB,EAAW,IAAIoB,GACjB,CACD,EARD,GASO,KACLN,GAAS,CAAK,CACf,GACA,CAACb,EAAaL,IACjBtnB,IAAMyE,WAAU,KACTtE,GACHunB,EAAW,GACb,GACC,CAACvnB,IAEJ,MAAMm+H,GAAiBA,KACM,IAAvBV,GACyB,IAAvBA,GACFC,EAAsBD,EAAqB,EAE/C,EAMIhzG,GAAWA,KACXgzG,IAAuBM,GACzBL,EAAsBD,EAAqB,EAC7C,EAyBF,OAAIz3H,EAEAxE,cAAA,OAAAX,SACEW,cAAA,iBACES,MAAO,CACLvC,MAAO,MACPoL,WAAY,MACZ0S,YAAa,QAEf1U,UAAU,QACVM,IAAI,iEACJC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,MAKZuS,EAEAva,cAAA,OACES,MAAO,CACLkc,eAAgB,SAChBJ,WAAY,UACZld,SAEFW,cAAC+b,GAAO,MAKZ5c,eAACopB,WAAQ,CAAAlpB,SAAA,CACa,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBO,EAAnBP,EAAqBc,uBAAe,IAAAP,GAApCA,EAAsCqyH,cACrCz9H,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CF,eAAA,OAAKmI,UAAU,2BAA0BjI,SAAA,CACvCW,cAAA,OAAKsH,UAAU,wBAAuBjI,SACpCW,cAAA,MAAIsH,UAAU,cAAajI,SACxB8G,EACC,qEAINhH,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAAA,OAAKsH,UAAU,gCAA+BjI,SACxB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBQ,EAAnBR,EAAqBc,uBAAe,IAAAN,GAApCA,EAAsCqyH,gBACrC78H,cAAC+d,KAAO,CAACC,MAAM,mBAAkB3e,SAC/BW,cAAA,UACEsH,UAAU,yBACV7H,QA/IKq9H,KACvBhnG,GAAqB,GACrB0mG,GAAuB,GACvBplG,GAA6BD,GAC7BlB,GAAwB,GACxBE,GAAsB,GACtBE,GAAoB,GACpBE,IAAmB,GACnBE,IAAuB,GACvBE,IAAqB,GACrBI,IAA+B,GAC/BE,IAA+B,EAAM,EAoIO53B,SAE1BW,cAAA,KAAGsH,UAAU,oBAGf,OAENtH,cAAA,OAAKsH,UAAU,2BAA0BjI,SACvCW,cAACwnB,KAAY,CACXjoB,GAAG,iBACH/E,MAAOiD,EACPgqB,WAAYhC,EAAe,GAAKE,EAChC+B,kBAAkB,EAClBpf,SA1EiBqf,CAACjoB,EAAOlF,KACnCA,GACFmvB,EAAmBnvB,GACnBorB,EAAmB,OAALprB,QAAK,IAALA,OAAK,EAALA,EAAOc,QAErBquB,EAAmB,MACnB/D,EAAc,IACdF,GAAgB,GAChBw2G,EAAsB,GACxB,EAkEc19H,KAAMA,EACNopB,QAtFWloB,IACzB,MAAMmoB,EAAYnoB,EAAM0H,OAAO5M,MACzBuiI,EAA+B,OAAZjsG,QAAY,IAAZA,OAAY,EAAZA,EAActhB,QAAQ0K,IAAO,IAAA8iH,EAAAC,EAAA,OAC7C,OAAP/iH,QAAO,IAAPA,GAAa,QAAN8iH,EAAP9iH,EAAS5e,YAAI,IAAA0hI,GAAe,QAAfC,EAAbD,EAAe15H,qBAAa,IAAA25H,OAArB,EAAPA,EAA8Br2G,SAAkB,OAATiB,QAAS,IAATA,OAAS,EAATA,EAAWvkB,cAAc,IAElEyiB,EAAW,IAAIg3G,IACfn3G,EAAciC,GACdnC,GAAgB,EAAM,EAgFRqC,OAAQA,KACNplB,GAAQ,EAAK,EAEfrC,QAASA,KACPqC,GAAQ,EAAM,EAEhBqlB,qBAAsBA,CAACpnB,EAAQpG,IAC7BoG,EAAOtF,OAASd,EAAMc,KAExB2sB,eAAiBrnB,GAAWA,EAAOtF,KACnCmC,QAASA,EACT8c,QAASyL,EACTkC,YAAcC,GACZnoB,cAACgiB,KAAS,IACJmG,EACJ5K,MAAOpX,EACL,kEAEFiiB,KAAK,QACL5tB,MAAOmrB,EACP0C,WAAY,IACPF,EAAOE,WACVC,aACEnpB,eAACd,IAAMkqB,SAAQ,CAAAlpB,SAAA,CACZ2mB,EACChmB,cAACwoB,KAAgB,CAAC5qB,MAAM,UAAUwqB,KAAM,KACtC,KACHD,EAAOE,WAAWC,gBAGvB1oB,GAAI,CAAEG,aAAc,gBAQlCC,cAAA,OAAKsH,UAAU,kBAAiBjI,SAC9BF,eAAA,SAAOmI,UAAU,oBAAmBjI,SAAA,CAClCW,cAAA,SAAOsH,UAAU,gCAA+BjI,SAC9CF,eAAA,MAAAE,SAAA,CACEW,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,cAAajI,SACxB8G,EACC,8DAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,eAAcjI,SACzB8G,EACC,8DAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,kBAAiBjI,SAC5B8G,EACC,iEAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,gBAAejI,SAC1B8G,EACC,+DAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,eAAcjI,SACzB8G,EACC,8DAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,iBAAgBjI,SAC3B8G,EACC,gEAINnG,cAAA,MAAAX,SACEW,cAAA,MAAIsH,UAAU,eAAcjI,SACzB8G,EACC,4EAMF,OAAPkgB,QAAO,IAAPA,OAAO,EAAPA,EAASrqB,KAAI,CAACsmB,EAAM9mB,KAAG,IAAAiP,EAAAC,EAAA,OACtB1K,cAAA,SAAiBsH,UAAU,+BAA8BjI,SACvDW,cAAAZ,WAAA,CAAAC,SACEF,eAAA,MAAAE,SAAA,CACEW,cAAA,MAAIsH,UAAU,wBAAuBjI,SACnCW,cAAA,OACEsH,UAAU,eACVY,IAAI,OACJN,IAAS,OAAJ0a,QAAI,IAAJA,OAAI,EAAJA,EAAM0K,QAGfhtB,cAAA,MAAIsH,UAAU,yBAAwBjI,SAAM,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMhnB,OAC9C0E,cAAA,MAAIsH,UAAU,4BAA2BjI,SACpB,QAAd,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMne,SAAuB,OAAJme,QAAI,IAAJA,OAAI,EAAJA,EAAM46G,QAAc,OAAJ56G,QAAI,IAAJA,OAAI,EAAJA,EAAMne,UAElDnE,cAAA,MAAIsH,UAAU,0BAAyBjI,SACpB,QAAZ,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMvM,OAAqB,OAAJuM,QAAI,IAAJA,OAAI,EAAJA,EAAM66G,MAAY,OAAJ76G,QAAI,IAAJA,OAAI,EAAJA,EAAMvM,QAE9C/V,cAAA,MAAIsH,UAAU,yBAAwBjI,SACpB,QAAX,OAAJijB,QAAI,IAAJA,OAAI,EAAJA,EAAMje,MAAoB,OAAJie,QAAI,IAAJA,OAAI,EAAJA,EAAM86G,KAAW,OAAJ96G,QAAI,IAAJA,OAAI,EAAJA,EAAMje,OAE5CrE,cAAA,MAAIsH,UAAU,gCAA+BjI,SAC3CW,cAAA,QACEsH,UAAW,IACL,OAAJgb,QAAI,IAAJA,KAAMmC,QACF,kCACA,qCACHplB,SAEFnD,QACmB,KAAd,OAAJomB,QAAI,IAAJA,OAAI,EAAJA,EAAMmC,SACFte,EACE,8DAEFA,EACE,iEAKZnG,cAAA,MAAAX,SACEF,eAAA,OAAKmI,UAAU,6BAA4BjI,SAAA,CACrB,OAAnB2K,QAAmB,IAAnBA,GAAoC,QAAjBS,EAAnBT,EAAqBc,uBAAe,IAAAL,GAApCA,EACGge,aACFzoB,cAAC+d,KAAO,CACNC,MAAO7X,EACL,wEACA9G,SAEFW,cAAC0oB,KAAY,CACXphB,UAAU,sBACV7H,QAASA,KAAM49H,OAlSrB99H,EAkSwC,OAAJ+iB,QAAI,IAAJA,OAAI,EAAJA,EAAM/iB,GAjShEm1B,EAAcn1B,GACdu2B,GAAqB,GACrB0mG,GAAuB,GACvBplG,GAA4B,GAC5BnB,GAAwB,GACxBE,GAAsB,GACtBE,GAAoB,GACpBE,IAAmB,GACnBE,IAAuB,GACvBE,IAAqB,GACrBI,IAA+B,QAC/BE,IAA+B,GAZT13B,KAkS8C,MAG1C,KACgC,QAAnCmL,EAAAV,EAAoBc,uBAAe,IAAAJ,GAAnCA,EACG4yH,cACFt9H,cAACu0B,GAAY,CACXV,cAAehI,EACf1R,SAAU2W,EACV0D,iBAAsB,OAAJlS,QAAI,IAAJA,OAAI,EAAJA,EAAM/iB,GACxBk1B,qBAA0B,OAAJnS,QAAI,IAAJA,OAAI,EAAJA,EAAMmC,UAE5B,gBA9DFjpB,EAmEJ,YAKd,KACJ2D,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCW,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,OACX9gB,UAAU,6BACV7H,QAASk9H,GACT/6G,SAAUq6G,GAAsB,EAAE58H,SAElCW,cAACgpB,KAAe,CAACvpB,QAASk9H,OAE5Bx9H,eAAA,QAAAE,SAAA,CACG48H,EAAmB,MAAIM,KAE1Bv8H,cAAC8oB,KAAG,CACFV,KAAK,QACL,aAAW,QACX9gB,UAAU,6BACV7H,QAASwpB,GACTrH,SACEq6G,IAAuBM,GAA0C,GAArBA,EAC7Cl9H,SAEDW,cAACkpB,KAAgB,CAACzpB,QAASwpB,UAG/BjpB,cAACq1B,GAAwB,CACvBrB,WAAYA,EACZ6B,kBAAmBA,EACnBC,qBAAsBA,EACtBC,oBAAqBA,EACrBymG,uBAAwBA,EACxBxmG,kBAAmBA,EACnBC,wBAAyBA,EACzBC,gBAAiBA,EACjBC,sBAAuBA,EACvBC,cAAeA,EACfC,oBAAqBA,EACrBC,aAAcA,GACdC,mBAAoBA,GACpBC,iBAAkBA,GAClBC,uBAAwBA,GACxBC,eAAgBA,GAChBC,qBAAsBA,GACtBC,uBAAwB/K,EACxBgL,UAAW/F,EACXgG,yBAA0BA,GAC1BC,+BAAgCA,GAChCC,yBAA0BA,GAC1BC,+BAAgCA,KAElCj3B,cAAC4zB,GAA6B,CAC5B0oG,WAAYA,EACZiB,aAAc1xG,MAItB,EyL/WIwoB,OAAQ,QAEV,CACEk0E,KAAM,oBACNjtH,KAAM,oBACNqQ,UAAW6xH,GACXnpF,OAAQ,QAEV,CACEk0E,KAAM,YACNjtH,KAAM,WACNqQ,UAAWqgB,GACXqoB,OAAQ,QAEV,CACEk0E,KAAM,aACNjtH,KAAM,QACNqQ,UAAWu/D,GACX72B,OAAQ,QAEV,CACEk0E,KAAM,eACNjtH,KAAM,UACNqQ,UAAWwzC,GACX9K,OAAQ,QAEV,CACEk0E,KAAM,kBACNjtH,KAAM,aACNqQ,UAAWu4F,GACX7vD,OAAQ,QAEV,CACEk0E,KAAM,mBACNjtH,KAAM,cACNqQ,UAAWw8F,GACX9zD,OAAQ,QAEV,CACEk0E,KAAM,iBACNjtH,KAAM,YACNqQ,UAAWu5G,GACX7wE,OAAQ,QAEV,CACEk0E,KAAM,8BACNjtH,KAAM,SACNqQ,UIxJW,WACb,MAAM,GAAEpM,GAAOyjE,eACT,eAAEy6D,GAAmB37H,qBAAWC,MAE/B27H,EAAOC,GAAYz7H,mBAAS,KAC5B6wH,EAAUvF,GAAetrH,mBAAS,CAAC,IAEnC1D,EAAMmE,GAAWT,oBAAS,IAC1Bu0H,EAAMlJ,GAAWrrH,mBAAS,QAE3B,KAAE8B,EAAI,QAAE6nB,GAAYrR,aAASyvG,GAAe,CAChDzjH,UAAW,CAAE4xE,SAAUp7E,SAASuC,IAChCmb,YAAa,iBAsCf,OAnCA5X,qBAAU,KACR,GAAIkB,EAAM,CACR,MAAM+lE,EAAU,IAAI/lE,EAAK45H,aACzBD,EAAS5zD,EAAQwiD,MAAK,CAAC99G,EAAGpS,IAAMoS,EAAEijB,MAAQr1B,EAAEq1B,SAC5C+rG,EAAe1zD,EACjB,IACC,CAAC/lE,IAEJS,QAAQ+f,IAAIxgB,GA4BV7E,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAC4rH,GAAc,CACbC,UAAW6R,EACX5R,gBA7BkBA,KACtBnpH,GAAQ,EAAK,EA6BTopH,qBAvBwB/nH,IAC5BupH,EAAQ,eACR5qH,GAAQ,GACR6qH,EAAYxpH,EAAK,EAqBbgoH,iCAlBoChoH,IACxCupH,EAAQ,WACR5qH,GAAQ,GACR6qH,EAAYxpH,EAAK,EAgBbioH,2BAb8BjoH,IAClCupH,EAAQ,QACR5qH,GAAQ,GACR6qH,EAAYxpH,EAAK,IAafhE,cAACw2H,GAAa,CACZx4G,MAAM,kBACNxf,KAAMA,EACN+B,YAnCmB+8B,KACvB36B,GAAQ,EAAM,EAmCV8zH,KAAMA,EACNlJ,QAASA,EACTwF,SAAUA,EACVvF,YAAaA,EACbwF,gBAAiBnnG,MAIzB,EJiFIwoB,OAAQ,SA6BGwpF,OAzBeA,IACrBxV,GAAOrsH,KAAI,CAAC8hI,EAAMtiI,IACH,SAAhBsiI,EAAKzpF,OAELr0C,cAACsoH,IAAK,CACJC,KAAMuV,EAAKzpF,OAASypF,EAAKvV,KACzB58G,UACE9M,aAAaC,QAAQ,SACnBg/H,EAAKnyH,UAEL3L,cAAC+9H,IAAQ,CACPhiI,KAAK,IACL+M,GAAI7O,MAILuB,GAIF,O,qBKpLb,MAAMwiI,GAAcnhH,KAAOgI,GAAG;;;;;;;;;;;;;;EAexBo5G,GAAephH,KAAOqhH,EAAE;;;;;;EAQxBC,GAActhH,KAAO7R,MAAM;;;;;;;;;;EAY3BozH,GAASz5G,IAAS;;;;;;;EASlB05G,GAAU15G,IAAS;;;;;;;EASnB25G,GAAU35G,IAAS;;;;;;;;;EAWnB45G,GAAW55G,IAAS;;;;;;;;;EAWpB65G,GAAkB3hH,KAAOgI,GAAG;;;;;;;;;;;eAWnBjJ,IAAA,IAAC,OAAE4sG,GAAQ5sG,EAAA,OAAM4sG,EAAS4V,GAASC,EAAO;EAGnDI,GAAe5hH,KAAOgI,GAAG;;gBAEfxH,IAAA,IAAC,OAAEnd,GAAQmd,EAAA,OAAKnd,GAAU,OAAO;;;;;;;;;;;eAWlC6/B,IAAA,IAAC,OAAEyoF,GAAQzoF,EAAA,OAAMyoF,EAAS8V,GAAUC,EAAQ;EAwD5C9gE,OArDDulC,IAAoD,IAAnD,OAAE07B,EAAM,QAAEp+H,EAAO,SAAEjB,EAAQ,OAAEijC,EAAM,OAAEpiC,GAAQ8iG,EAC1D,MAAOwlB,EAAQmW,GAAaz8H,oBAAS,GAErCY,qBAAU,KACJ47H,EACFC,GAAU,GAEV96G,YAAW,KACT86G,GAAU,EAAM,GACf,IACL,GACC,CAACD,IAQJ,OAAKlW,GAAWkW,EAGd1+H,cAACw+H,GAAe,CACdhW,OAAQkW,EACRj/H,QAASa,EACTs+H,eAZmBA,KAChBF,GACHC,GAAU,EACZ,EASiCt/H,SAE/BF,eAACs/H,GAAY,CACXv+H,OAAQA,EACRsoH,OAAQkW,EACRj/H,QAAUsgB,GAAMA,EAAE44C,kBAAkBt5D,SAAA,CAEpCF,eAAC6+H,GAAW,CAAA3+H,SAAA,CACVW,cAACi+H,GAAY,CAAA5+H,SAAEijC,IACftiC,cAACm+H,GAAW,CAAA9+H,SACVW,cAACV,IAAU,CACT1B,MAAM,UACN6B,QAASa,EACTV,GAAI,CACF6c,QAAS,OACT0F,SAAU,YACV9iB,SAEFW,cAACmkB,KAAS,WAIf9kB,OA5BwB,IA8BX,EC1JtB,MAAM2+H,GAAcnhH,KAAOgI,GAAG;;;;;;;;;;;;;;EAexBo5G,GAAephH,KAAOqhH,EAAE;;;;;;;;;;EAYxBC,GAActhH,KAAO7R,MAAM;;;;;;;;;;EAY3BozH,GAASz5G,IAAS;;;;;;;EASlB05G,GAAU15G,IAAS;;;;;;;EASnB25G,GAAU35G,IAAS;;;;;;;;;EAWnB45G,GAAW55G,IAAS;;;;;;;;;EAWpB65G,GAAkB3hH,KAAOgI,GAAG;;;;;;;;;;;eAWnBjJ,IAAA,IAAC,OAAE4sG,GAAQ5sG,EAAA,OAAM4sG,EAAS4V,GAASC,EAAO;EAGnDQ,GAAehiH,KAAOgI,GAAG;;gBAEfxH,IAAA,IAAC,OAAEnd,GAAQmd,EAAA,OAAKnd,GAAU,OAAO;;;;;;;;;eASlC6/B,IAAA,IAAC,OAAEyoF,GAAQzoF,EAAA,OAAMyoF,EAAS8V,GAAUC,EAAQ;;;;;;EAOrDE,GAAe5hH,KAAOgI,GAAG;;EAyDhBi6G,OArDa97B,IAAoD,IAAnD,OAAE07B,EAAM,QAAEp+H,EAAO,SAAEjB,EAAQ,OAAEijC,EAAM,OAAEpiC,GAAQ8iG,EACxE,MAAOwlB,EAAQmW,GAAaz8H,oBAAS,GAErCY,qBAAU,KACJ47H,EACFC,GAAU,GAEV96G,YAAW,KACT86G,GAAU,EAAM,GACf,IACL,GACC,CAACD,IAQJ,OAAKlW,GAAWkW,EAGd1+H,cAACw+H,GAAe,CACdhW,OAAQkW,EACRj/H,QAASa,EACTs+H,eAZmBA,KAChBF,GACHC,GAAU,EACZ,EASiCt/H,SAE/BF,eAAC0/H,GAAY,CACX3+H,OAAQA,EACRsoH,OAAQkW,EACRj/H,QAAUsgB,GAAMA,EAAE44C,kBAAkBt5D,SAAA,CAEpCF,eAAC6+H,GAAW,CAAA3+H,SAAA,CACVW,cAACi+H,GAAY,CAAA5+H,SAAEijC,IACftiC,cAACm+H,GAAW,CAAA9+H,SACVW,cAACV,IAAU,CACT1B,MAAM,UACN6B,QAASa,EACTV,GAAI,CACF6c,QAAS,OACT0F,SAAU,YACV9iB,SAEFW,cAACmkB,KAAS,WAIhBhlB,eAACs/H,GAAY,CAAAp/H,SAAA,CAAC,IAAEA,UA5BS,IA8BX,E,qBC1KtB,MAAM0/H,GAAgBp6G,IAAS;;;;;;;;;;;;;;;;EAkBlBkG,GAAchO,KAAOgI,GAAG;;;;;;;;;;;;;EAexBm6G,GAAoBniH,KAAOgI,GAAG;;;;;;;;;;;EAa9Bo6G,GAAcpiH,KAAOgI,GAAG;;;;;;;;;;;;;;0BAcXjJ,IAAA,IAAC,WAAE/T,GAAY+T,EAAA,OAAK/T,GAAc,SAAS;;;;;;;;;;;EAaxDq3H,GAAsBriH,KAAOgI,GAAG;;;;EAMhCP,GAASzH,KAAO7R,MAAM;;;;sBAIZrN,GAAWA,EAAM6G,MAAQ,UAAY;YAC/C7G,GAAWA,EAAM6G,MAAQ,gBAAkB;;;;;;;;;wBAS/B7G,IAAWA,EAAM6G,MAAQ;;;;iBAIjCu6H;;;;eAIDphI,GACZA,EAAMwhI,QACF,GAAGJ,wDACH;ECnGFK,IDsGsBviH,KAAOgI,GAAG;;;ECtGnBhI,KAAOgI,GAAG;;GAGvBw6G,GAAQxiH,KAAOkT,KAAK;;;;;;;;;;;;;;;;;;EAmBpBuvG,GAAQziH,KAAOs/D,IAAI;;;;;;;;;;IAUrBkjD;MACEA;;;;;EAOAvjD,GAAcj/D,KAAOgI,GAAG;;;;;EAuDf06G,OAjDI3jH,IAA4B,IAA3B,MAAE2B,EAAK,KAAE/U,EAAI,KAAElN,GAAMsgB,EACvC,IAAKtgB,EACH,MAAM,IAAIoxB,MAAM,+BAGlB,MAAO1qB,EAAcC,GAAmB5D,IAAM6D,UAAS,IACjD,WAAEs9H,EAAU,cAAEC,GAAkBphI,IAAMyD,WAAWC,MAChDvH,EAAOkI,GAAYrE,IAAM6D,WAgBhC,OANAY,qBAAU,UACmBtD,KAAb,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAalkI,KACfoH,EAAS88H,EAAWlkI,GACtB,GACC,CAAW,OAAVkkI,QAAU,IAAVA,OAAU,EAAVA,EAAalkI,KAGf6D,eAACigI,GAAU,CAAA//H,SAAA,CACTW,cAACq/H,GAAK,CACJ72H,KAAMxG,EAAe,OAAS,GAAGwG,IACjCJ,UAAQ,EACR3H,MAAO,CAAE5C,SAAU,QACnB4gC,aAAa,eACbn2B,SArBN,SAAsB5I,GACpB,MAAMlE,EAAMkE,EAAM0H,OAAO9L,KACnBd,EAAQkF,EAAM0H,OAAO5M,MAC3BilI,GAAeC,IAAc,IACxBA,EACH,CAAClkI,GAAMhB,KAEX,EAeMc,KAAMA,EACNd,MAAOA,IAETwF,cAACs/H,GAAK,CAAAjgI,SAAEke,IACE,aAAT/U,EACCxI,cAAC87E,GAAW,CAAAz8E,SACVW,cAACV,IAAU,CACT8oB,KAAK,SACL3oB,QAASA,IAAMwC,GAAiBD,GAAc3C,SAE7C2C,EAAehC,cAACyI,IAAiB,IAAMzI,cAAC0I,IAAc,QAGzD,OACO,EC0LFi3H,OAvQf,WACE,MAAMllI,EAAWyL,qCACX,EAAEC,GAAMC,eACR,WAAEo5H,EAAU,cAAEC,GAAkBphI,IAAMyD,WAAWC,MAChD69H,EAAaC,GAAkBxhI,IAAM6D,UAAS,IAC9C49H,EAAeC,GAAoB1hI,IAAM6D,YACzC89H,GAAkBx9H,YAAYonC,OAC9Bq2F,EAAaC,GAAkBh+H,mBAAS,CAC7Ci+H,iBAAiB,EACjBtxH,QAAQ,EACRuxH,WAAW,EACXC,QAAQ,EACRC,aAAa,EACbC,gBAAgB,IAEZC,EAAqB,CACzBr6H,EAAE,qDACFA,EAAE,qDACFA,EAAE,qDACFA,EAAE,qDACFA,EAAE,qDACFA,EAAE,sDAEEghF,EAAY9uD,iBAAO,MAqBzB,SAASooG,EAAqBC,GAC5B,IAAK,MAAMC,KAAaD,EACtB,GAAIA,EAAOE,eAAeD,KAAoC,IAAtBD,EAAOC,GAC7C,OAAO,EAGX,OAAO,CACT,CAEA,MAmBME,EAAa1+G,IACjB,MAAM3d,EAAQ,UACR0e,EAAU,UAGhB,QAA4B1jB,KAAd,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,SAgBd,MAlBa,UAGb,OAAQ3+G,GACN,KAAK,EACH,OAAO89G,EAAYE,gBAAkBj9G,EAAU1e,EACjD,KAAK,EACH,OAAOy7H,EAAYpxH,OAASqU,EAAU1e,EACxC,KAAK,EACH,OAAOy7H,EAAYG,UAAYl9G,EAAU1e,EAC3C,KAAK,EACH,OAAOy7H,EAAYI,OAASn9G,EAAU1e,EACxC,KAAK,EACH,OAAOy7H,EAAYK,YAAcp9G,EAAU1e,EAC7C,KAAK,EACH,OAAOy7H,EAAYM,eAAiBr9G,EAAU1e,EAIpD,EAqDFlK,eAAeymI,EAAShhH,GACtB,GAAIonE,EAAUtsD,UAAYssD,EAAUtsD,QAAQjZ,SAAU,CACpDulE,EAAUtsD,QAAQjZ,UAAW,EAC7B,MAAMu+G,QAAwB5lI,EAClB,OAAVilI,QAAU,IAAVA,OAAU,EAAVA,EAAYwB,YACZvmI,GAEIwmI,QAAoB1mI,EAAsB,OAAVilI,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,QAASrmI,GACrDymI,QAAwB3mI,EAClB,OAAVilI,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,YACZ1mI,GAGF,GAAIgmI,EAAqBR,GACvB,IACED,EAAe,CACbx5H,UAAW,CACTjH,GAAIvC,SAAS6B,aAAaC,QAAQ,OAClCqhI,gBAAiBA,EACjBc,YAAaA,EACbx8F,gBAAiBy8F,KAGlBx6H,MAAM5C,IACL+7H,GAAe,GACfE,IAtHVl8G,YAAW,KACTq8G,EAAe,CACbC,iBAAiB,EACjBtxH,QAAQ,EACRuxH,WAAW,EACXC,QAAQ,EACRC,aAAa,EACbC,gBAAgB,IAElBV,GAAe,GACfE,GAAiB,GACjBN,EAAc,CACZ0B,YAAa,GACbH,YAAa,GACbF,QAAS,IACT,GACD,QAwGOj9G,YAAW,KACTsjE,EAAUtsD,QAAQjZ,UAAW,CAAK,GACjC,IAAK,IAET3a,OAAOC,IACN24H,GAAe,GACfE,GAAiB,GACjBl8G,YAAW,KACTsjE,EAAUtsD,QAAQjZ,UAAW,CAAK,GACjC,IAAK,GAEd,CAAE,MAAO1a,GAAM,MAEf6Y,EAAE8mB,iBACFq5F,GAAgBkB,IAAe,IAC1BA,EACHxB,aAAa,MAEf/7G,YAAW,KACTsjE,EAAUtsD,QAAQjZ,UAAW,CAAK,GACjC,IAEP,CACF,CAEA,OAzFA9e,qBAAU,UACwBtD,KAAlB,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAYwB,eACdnB,GAAe,GACfE,IACAG,GAAgBkB,IAAe,IAC1BA,EACHjB,gBAA6C,MAAlB,OAAVX,QAAU,IAAVA,OAAU,EAAVA,EAAYwB,iBAEjC,GACC,CAAW,OAAVxB,QAAU,IAAVA,OAAU,EAAVA,EAAYwB,cAEhBl+H,qBAAU,UACoBtD,KAAd,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,UAjGQrmI,KACxBolI,GAAe,GACfE,IACAG,GAAgBkB,IAAe,IAC1BA,EACHjB,gBAA6C,MAAlB,OAAVX,QAAU,IAAVA,OAAU,EAAVA,EAAYwB,aAC7BnyH,QAAgB,OAARpU,QAAQ,IAARA,OAAQ,EAARA,EAAUoU,SAAU,EAC5BuxH,UAAW,QAAQh9H,KAAK3I,GACxB4lI,OAAQ,QAAQj9H,KAAK3I,GACrB6lI,YAAa,mBAAmBl9H,KAAK3I,GACrC8lI,oBAC0B/gI,KAAd,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,UACY,MAAd,OAAVtB,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,eACgBthI,KAAlB,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,cACgB,MAAlB,OAAV3B,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,eACF,OAAV3B,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,YAAsB,OAAVtB,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,gBACrC,EAkFDE,CAAiB7B,EAAWsB,QAC9B,GACC,CAAW,OAAVtB,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,UAEhBh+H,qBAAU,UACwBtD,KAAlB,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,eACC3B,EAAW2B,YAhC5BtB,GAAe,GACfE,IACAG,GAAgBkB,IAAe,IAC1BA,EACHb,oBAC0B/gI,KAAd,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,UACY,MAAd,OAAVtB,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,eACgBthI,KAAlB,OAAVggI,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,cACgB,MAAlB,OAAV3B,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,eACF,OAAV3B,QAAU,IAAVA,OAAU,EAAVA,EAAYsB,YAAsB,OAAVtB,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,iBAwBxC,GACC,CAAW,OAAV3B,QAAU,IAAVA,OAAU,EAAVA,EAAY2B,cAqEdnhI,cAAC3B,IAAMkqB,SAAQ,CAAAlpB,SACbF,eAAC0rB,GAAW,CAAAxrB,SAAA,CACVF,eAAC6/H,GAAiB,CAAA3/H,SAAA,CAChBW,cAAA,KAAAX,SACG8G,EAAE,kEAGc,OAAlBq6H,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBxkI,KAAI,CAACsmB,EAAM9mB,IAC9BwE,cAACi/H,GAAW,CAACp3H,WAAYg5H,EAAUrlI,GAAK6D,SACtCF,eAAA,OAAAE,SAAA,CACEW,cAAA,QAAAX,SAAM,WACLijB,YAKTnjB,eAAC+/H,GAAmB,CAAA7/H,SAAA,CAClBW,cAACu/H,GAAU,CACThiH,MAAOpX,EACL,gEAEFqC,KAAK,WACLlN,KAAK,cACLmjC,aAAa,iBAEfz+B,cAACu/H,GAAU,CACThiH,MAAOpX,EACL,4DAEFqC,KAAK,WACLlN,KAAK,UACLmjC,aAAa,iBAEfz+B,cAACu/H,GAAU,CACThiH,MAAOpX,EACL,gEAEFqC,KAAK,WACLlN,KAAK,cACLmjC,aAAa,iBAEfz+B,cAACskB,GAAM,CACL9f,MAAOo7H,EACPngI,QAAUsgB,IACRghH,EAAShhH,EAAE,EAEb5X,IAAKg/E,EACLvgD,YAAc7mB,IACP0gH,EAAqBR,KACxBlgH,EAAEpgB,cAAc2hI,UAAUxK,IAAI,SAC9B+I,GAAe,GACjB,EAEF0B,UAAYxhH,GAAMA,EAAEpgB,cAAc2hI,UAAUE,OAAO,SAASniI,SAvHhEugI,QAAgCpgI,GAAjBsgI,EACV35H,EACL,0EAEQy5H,QAAgCpgI,GAAjBsgI,EAEfF,GAAgBE,EAEjBF,GAAeE,EACjB35H,EAAE,mEADJ,EADEA,EAAE,iEAFFA,EAAE,wEA2Hf,EC7Pe,SAASs7H,GAAYC,GAClC,MAAM,EAAEv7H,GAAMC,eACPu7H,EAAaC,GAAkB1/H,oBAAS,IACxC2/H,EAAgBC,GAAqB5/H,oBAAS,GAC/CG,EAAUC,eACTnE,EAAUC,GAAeC,IAAM6D,SAAS,OACxC6/H,EAAuBC,GAA4B9/H,oBAAS,IAC7D,UAAEunC,EAAS,aAAEC,EAAY,cAAE+1F,GAAkB39H,qBAAWC,MAEvDkgI,GAAiBz/H,YAAYnI,GAC9BmE,EAAOC,QAAQN,GACf+jI,EAAmBA,KACvBr+G,YAAW,KACT+9G,GAAe,GACfl4F,GAAa,EAAM,GAClB,IAAI,EAcHnpC,EAAcA,KAClBnC,EAAY,KAAK,EAsBnB,OACEe,eAACd,IAAMkqB,SAAQ,CAAAlpB,SAAA,CACbW,cAACy/B,KAAG,CAAC7/B,GAAI,CAAE6c,QAAS,OAAQF,WAAY,SAAUC,UAAW,UAAWnd,SACtEW,cAAC+d,KAAO,CAACC,MAAM,mBAAkB3e,SAC/BW,cAACV,IAAU,CACTG,QA/BWC,IACnBtB,EAAYsB,EAAMC,cAAc,EA+BxByoB,KAAK,QACLxoB,GAAI,CAAEwqH,GAAI,GACV,gBAAe5rH,EAAO,oBAAiBgB,EACvC,gBAAc,OACd,gBAAehB,EAAO,YAASgB,EAAUH,SAEzCW,cAAC0+B,KAAM,CACL9+B,GAAI,CACF1B,MAAO,GACPgC,OAAQ,GACRjC,OAAQ,SACR48D,YAAa,SACbx7D,SAEDR,aAAaC,QAAQ,QAAQvC,MAAM,EAAG,GAAGyjB,sBAKlD7gB,eAACiB,IAAI,CACHjC,SAAUA,EACVoB,GAAG,eACHf,KAAMA,EACN8B,QAASC,EACTd,QAASc,EACTC,WAAY,CACVY,UAAW,EACXxB,GAAI,CACFG,aAAc,MACdqzB,SAAU,UACV5jB,OAAQ,4CACRmiG,GAAI,IACJ,oBAAqB,CACnBzzG,MAAO,GACPgC,OAAQ,GACRkqH,IAAK,GACL1qF,GAAI,GAEN,WAAY,CACV2qF,QAAS,KACT5tG,QAAS,QACT0F,SAAU,WACVulB,IAAK,EACLL,MAAO,GACPnpC,MAAO,GACPgC,OAAQ,GACRsuD,QAAS,mBACTu9C,UAAW,iCACXhpE,OAAQ,KAIdunF,gBAAiB,CAAE7pF,WAAY,QAASC,SAAU,OAClDF,aAAc,CAAEC,WAAY,QAASC,SAAU,UAAWrhC,SAAA,CAE1DF,eAAC0B,IAAQ,CAACpB,QAASA,IAAMmiI,GAAe,GAAMviI,SAAA,CAC5CW,cAAC0+B,KAAM,IAAG,IAAEv4B,EAAE,4CAEhBhH,eAAC0B,IAAQ,CAACpB,QAASA,IAAMqiI,GAAkB,GAAMziI,SAAA,CAC/CW,cAAC2J,KAAY,CAAAtK,SACXW,cAACmiI,KAAY,CAACtkI,SAAS,aAExBsI,EAAE,sDAELnG,cAAC2yH,KAAO,IAAI,IACZxzH,eAAC0B,IAAQ,CAACpB,QA1FD2iI,KACb,IACEH,IACGv7H,MAAM5C,IACLW,QAAQ+f,IAAI,UAAW1gB,GACvBoV,GAAwB,YACxB7W,EAAQ2E,KAAK,KACblM,OAAOiG,SAASC,QAAQ,IAEzBiG,OAAOC,IACNzC,QAAQ+f,IAAI,kBAAmBtd,GAC/BgS,GAAwB,YACxB7W,EAAQ2E,KAAK,KACblM,OAAOiG,SAASC,QAAQ,GAE9B,CAAE,MAAOkG,GACPzC,QAAQD,MAAM,gBAAc0C,EAC9B,GAyE8B7H,SAAA,CACxBW,cAAC2J,KAAY,CAAAtK,SACXW,cAACqiI,KAAM,CAACxkI,SAAS,aAElBsI,EAAE,8CAIPnG,cAAA,OAAAX,SACEW,cAACuH,KAAQ,CACP/I,KAAMirC,EACNjiC,iBAAkB,KAClBlH,QAAS4hI,EACT1hG,aAAc,CAAEC,WAAY,SAAUC,SAAU,UAAWrhC,SAE3DW,cAACkB,KAAK,CAACwG,SAAS,UAASrI,SACtB8G,EACC,mGAKRnG,cAACsiI,GAAY,CACXhgG,OAAQn8B,EAAE,oDACVu4H,OAAQiD,EACRrhI,QAAS4hI,EAAiB7iI,SAE1BW,cAAC6nC,GAAQ,CACPU,SAAS,EACTD,QAAStrC,SAAS6B,aAAaC,QAAQ,WAG3CkB,cAACuiI,GAAwB,CACvBriI,OAAO,QACPoiC,OAAQn8B,EAAE,qDACVu4H,OAAQmD,EACRvhI,QA7I4BkiI,KAChC3+G,YAAW,KACTi+G,GAAkB,GAClBp4F,GAAa,GACb+1F,GAAe,GACd,IAAI,EAwIgCpgI,SAEnCW,cAAC2/H,GAAmB,QAI5B,CClLe,SAAS8C,GAAmB9kI,GACzC,MAAM0E,EAAUC,eACTogI,GAAUlgI,YAAYonC,OACvB,QAAEtpC,EAAS9F,MAAOmoI,KAA0B72B,GAAUnuG,GACrDnD,EAAOkI,GAAYrE,IAAM6D,SAASygI,GACnCC,EAAgBvkI,IAAMg6B,OAAO,OAC5B75B,EAAMmE,GAAWT,oBAAS,IAC1B2gI,EAAWC,GAAgB5gI,oBAAS,IACpC6gI,EAAUC,GAAe9gI,sBAEzB+gI,EAAWC,GAAgBhhI,mBAAS,KACpCtE,EAAOulI,GAAYjhI,mBAAS,YAE5BkhI,EAAeC,GAAoBnhI,mBAAS,KAC5CohI,EAAcC,GAAmBrhI,mBAAS,YAE1CpF,EAAO0mI,GAAYthI,oBAAS,IAE5B4hC,EAAUC,GAAe1lC,IAAM6D,SAAS,CAC7C2E,MAAO,GACP48H,UAAW,KAGbplI,IAAMyE,WAAU,KACwB,KAAlCjE,aAAaC,QAAQ,UACvB6D,GAAQ,EAEV,GACC,IAyGH,OACExD,eAACoiB,KAAM,CACL3hB,GAAI,CACF,qBAAsB,CACpB1B,MAAO,MACPwC,UAAW,IACXX,aAAc,QAGlBgiB,SAAS,KACT2hH,gBAAiB,CAAEC,WAzGAC,KACQ,MAAzBhB,EAAc/nG,SAChB+nG,EAAc/nG,QAAQgpG,OACxB,GAuGErlI,KAAMA,KACFstG,EAAKzsG,SAAA,CAETW,cAACgkB,KAAW,CACVpkB,GAAI,CACFiI,WAAY,UACZjK,MAAO,QACP4e,UAAW,SACX0H,WAAY,0BACZ7kB,SAEFW,cAAA,KAAAX,SAAG,+BAELF,eAACilB,KAAa,CAAA/kB,SAAA,CACZF,eAAA,KACEsB,MAAO,CACLyjB,WAAY,yBACZ1H,UAAW,UACX5e,MAAO,SACPyB,SAAA,CAED,IAAI,iLAKPF,eAAA,OAAKsB,MAAO,CAAEgc,QAAS,OAAQC,cAAe,SAAU5c,IAAK,QAAST,SAAA,CACpEW,cAACgiB,KAAS,CACRgkB,WAAYi9F,EACZ36H,SAxGY5I,KAxBwB,IAAxCokC,EAASj9B,MAAM+f,SAAgB,MACjCu8G,EAAS,WACTD,EAAa,MACoC,IAAxCp/F,EAASj9B,MAAM+f,SAAgB,OACxCu8G,EAAS,SACTD,EAAa,uBAqBf,MAAM1oI,EAAQkF,EAAM0H,OAAO5M,MACrBc,EAAOoE,EAAM0H,OAAO9L,KAC1ByoC,EAAY,IACPD,EACH,CAACxoC,GAAOd,GACR,EAkGMc,KAAK,QACLsC,MAAOA,EACPy8D,WAAS,EACT98C,MAAM,wBACN/U,KAAK,QACL4f,KAAK,QACLC,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,UAEpCC,cAACgiB,KAAS,CACRgkB,WAAYo9F,EACZ96H,SAzGmB5I,KAzBqB,IAA5CokC,EAAS2/F,UAAU78G,SAAgB,MACrC28G,EAAgB,WAChBF,EAAiB,MACoC,IAA5Cv/F,EAAS2/F,UAAU78G,SAAgB,OAC5C28G,EAAgB,SAChBF,EAAiB,uBAEfv/F,EAAS2/F,YAAc3/F,EAASj9B,OAClC28H,GAAS,GAEP1/F,EAAS2/F,YAAc3/F,EAASj9B,OAClC28H,GAAS,GAgBX,MAAMhpI,EAAQkF,EAAM0H,OAAO5M,MACrBc,EAAOoE,EAAM0H,OAAO9L,KAC1ByoC,EAAY,IACPD,EACH,CAACxoC,GAAOd,GACR,EAmGMc,KAAK,YACLsC,MAAO0lI,EACPjpE,WAAS,EACT98C,MAAM,kCACN/U,KAAK,QACL4f,KAAK,QACLC,WAAY,CAAEzoB,GAAI,CAAEG,aAAc,gBAIxCC,cAACuoF,KAAa,CACZ3oF,GAAI,CACF6c,QAAS,OACTE,eAAgB,SAChBvT,QAAS,iBACT/J,SAEFW,cAACskB,KAAM,CACL1C,SACqB,KAAnBkiB,EAASj9B,OAAuC,KAAvBi9B,EAAS2/F,WAC9B3/F,EAASj9B,QAAUi9B,EAAS2/F,UAKlCppE,WAAS,EACTz6D,GAAI,CACFG,aAAc,MACdwJ,aAAc,MACdwT,gBAAiB,UACjBnf,MAAO,QACPsmB,WAAY,0BACZ,UAAW,CACTnH,gBAAiB,YAGrBtd,QA1HWnF,UACjB,MAAME,QAAcD,EAAYupC,EAASj9B,MAtG5BX,qCAuGb,IACE,MAAMd,EAAY,IAAID,KAChB2+H,EACY,qBAATn+H,KACH3G,UAAUuwH,WAAavwH,UAAUuwH,UAAU1gH,OACzC7P,UAAUuwH,UAAU,GACpBvwH,UAAUC,SACZ0G,KAAKC,iBAAiBC,kBAAkB23C,OAC9CklF,EAAO,CACLl8H,UAAW,CACTjH,GAAIvC,SAAS6B,aAAaC,QAAQ,OAClC+H,MAAOrM,EAEPuwD,UAAW3lD,EAAUC,UACrBiqH,OAAQlqH,EAAUE,oBAClBk4C,OAAQsmF,KAGTp9H,MAAMC,IACLm8H,GAAa,GA9BnB/+F,EAAY,CAAEl9B,MAAO,GAAI48H,UAAW,KACpC5/G,YAAW,WACThlB,aAAagM,WAAW,SACxB/P,OAAOiG,SAASC,SAChBqB,EAAQ2E,KAAK,KACbrE,GAAQ,EACV,GAAG,IAyBqB,IAGnBsE,OAAOC,IAENzC,QAAQ+f,IAAItd,EAAI,GAEtB,CAAE,MAAOA,GACPzC,QAAQ+f,IAAItd,EACd,GA2F0B7H,SAEpBW,cAAA,KAAAX,SAAG,wBAIPW,cAACuH,IAAQ,CAAC/I,KAAMqkI,EAAWr7H,iBAAkB,IAAMlH,QArMnCC,CAACb,EAAO+H,KACX,cAAXA,GAIJo7H,GAAU,EAAM,EAgM0DxjI,SACtEW,cAACkB,KAAK,CAACwG,SAAS,UAASrI,SAAC,4FAOlC,CCvOO,MAAM0kI,GAA8BA,KACzC,MAAMtpI,EAAWyL,oCACX7D,EAAUC,eACV,EAAE6D,GAAMC,eACP5H,EAAMmE,GAAWT,oBAAS,IAC1B89H,GAAkBx9H,YAAYpI,IAC9ByoI,EAAWC,GAAgB5gI,oBAAS,IACpC8hI,EAAcC,GAAmB/hI,oBAAS,IAC1CgiI,EAAiBC,GAAsBjiI,oBAAS,IAEhD++H,EAAamD,GAAkBliI,mBAAS,CAC7CmiI,KAAM,GACNvD,QAAS,MAEJb,EAAaC,GAAkBh+H,mBAAS,CAC7C2M,QAAQ,EACRuxH,WAAW,EACXC,QAAQ,EACRC,aAAa,EACbC,gBAAgB,IAYZC,EAAqB,CACzBr6H,EAAE,qDACFA,EAAE,qDACFA,EAAE,qDACFA,EAAE,qDACFA,EAAE,sDAIJrD,qBAAU,KACR,MAAMwhI,EAAczlI,aAAaC,QAAQ,qBAET,IAA5BiH,KAAK4Q,MAAM2tH,IACb3hI,GAAQ,EACV,GACC,IAEH,MAAM4hI,EAA2BA,KAC/BN,GAAiBD,EAAa,EAG1BQ,EAA8BA,KAClCL,GAAoBD,EAAgB,EAGtC,SAASzD,EAAqBC,GAC5B,IAAK,MAAMC,KAAaD,EACtB,GAAIA,EAAOE,eAAeD,KAAoC,IAAtBD,EAAOC,GAC7C,OAAO,EAGX,OAAO,CACT,CAEA,MA2BME,EAAa1+G,IACjB,MAAM3d,EAAQ,UACR0e,EAAU,UAEhB,QAA0B1jB,KAAX,OAAXyhI,QAAW,IAAXA,OAAW,EAAXA,EAAaoD,MAcf,MAfa,UAEb,OAAQliH,GACN,KAAK,EACH,OAAO89G,EAAYpxH,OAASqU,EAAU1e,EACxC,KAAK,EACH,OAAOy7H,EAAYG,UAAYl9G,EAAU1e,EAC3C,KAAK,EACH,OAAOy7H,EAAYI,OAASn9G,EAAU1e,EACxC,KAAK,EACH,OAAOy7H,EAAYK,YAAcp9G,EAAU1e,EAC7C,KAAK,EACH,OAAOy7H,EAAYM,eAAiBr9G,EAAU1e,EAIpD,EAGI8Y,EAAgB5d,IACpB,MAAM,KAAEpE,EAAI,MAAEd,GAAUkF,EAAM0H,OACxBq9H,EAAgB,IAAKxD,EAAa,CAAC3lI,GAAOd,GAC1CkqI,EA/FC,CACL71H,QAFsBsa,EAgGoBs7G,GA9F3BJ,KAAKx1H,QAAU,EAC9BuxH,UAAW,QAAQh9H,KAAK+lB,EAAOk7G,MAC/BhE,OAAQ,QAAQj9H,KAAK+lB,EAAOk7G,MAC5B/D,YAAa,yCAAyCl9H,KAAK+lB,EAAOk7G,MAClE9D,eAAgBp3G,EAAOk7G,OAASl7G,EAAO23G,SANjB33G,MAiGxBi7G,EAAeK,GACfvE,EAAewE,EAAmB,EAG9BC,EAAkBA,KACoB,IAAtClE,EAAqBR,GAChB,QAEA,UAIX3lI,eAAeymI,EAAShhH,GACtB,MAAM+gH,QAAgBvmI,EAAY0mI,EAAYoD,KAAM5pI,GAC9CmqI,QAAuBrqI,EAAY0mI,EAAYH,QAASrmI,GAC9D,GAAIgmI,EAAqBR,GACvB,IACE,MAAM76H,EAAY,IAAID,KAChB2+H,EACY,qBAATn+H,KACH3G,UAAUuwH,WAAavwH,UAAUuwH,UAAU1gH,OACzC7P,UAAUuwH,UAAU,GACpBvwH,UAAUC,SACZ0G,KAAKC,iBAAiBC,kBAAkB23C,OAC9CwiF,EAAe,CACbx5H,UAAW,CACTI,MAAO/H,aAAaC,QAAQ,SAC5BrE,SAAUqmI,EACVr8F,gBAAiBmgG,EAEjB75E,UAAW3lD,EAAUC,UACrBiqH,OAAQlqH,EAAUE,oBAClBk4C,OAAQsmF,KAGTp9H,MAAM5C,IACLg/H,GAAa,GAjFrBj/G,YAAW,KACTq8G,EAAe,CACbrxH,QAAQ,EACRuxH,WAAW,EACXC,QAAQ,EACRC,aAAa,EACbC,gBAAgB,IAGlB6D,EAAe,CACbC,KAAM,GACNvD,QAAS,KAEXjiI,aAAawa,QACbve,OAAOiG,SAASC,SAChBqB,EAAQ2E,KAAK,KACbrE,GAAQ,EAAM,GACb,OAiEmB,IAEfsE,OAAOC,OACZ,CAAE,MAAOA,GAAM,CAEnB,CAEA,OACE/H,eAACoiB,KAAM,CACL3hB,GAAI,CACF,qBAAsB,CACpB1B,MAAO,MACPwC,UAAW,IACXX,aAAc,QAGlBgiB,SAAS,KACTvjB,KAAMA,EAAKa,SAAA,CAEXW,cAACgkB,KAAW,CACVpkB,GAAI,CACFiI,WAAY,UACZ3H,OAAQ,OACRtC,MAAO,QACP4e,UAAW,SACX0H,WAAY,0BACZ7kB,SAEFW,cAAA,KAAAX,SAAI8G,EAAE,yDAERhH,eAACilB,KAAa,CAAA/kB,SAAA,CACZF,eAAA,KACEsB,MAAO,CACLyjB,WAAY,yBACZ1H,UAAW,UACX5e,MAAO,SACPyB,SAAA,CAEFW,cAAA,QACCmG,EACC,2EAGJhH,eAAA,KAAAE,SAAA,CACG,IACA8G,EAAE,mEAELhH,eAAA,OAAAE,SAAA,CACEF,eAAA,OACEsB,MAAO,CACLgc,QAAS,OACTC,cAAe,MACf5c,IAAK,OACL+kI,iBAAkB,iBAClBxlI,SAAA,CAEFW,cAAA,OACES,MAAO,CAAEgc,QAAS,OAAQC,cAAe,SAAU5c,IAAK,OAAQT,SAE7C,OAAlBmhI,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBxkI,KAAI,CAACsmB,EAAM9mB,IAC9BwE,cAACi/H,GAAW,CAACp3H,WAAYg5H,EAAUrlI,GAAK6D,SACtCF,eAAA,OAAAE,SAAA,CACEW,cAAA,QAAAX,SAAM,WACLijB,WAKTnjB,eAAA,OACEsB,MAAO,CAAEgc,QAAS,OAAQC,cAAe,SAAU5c,IAAK,QAAST,SAAA,CAEjEW,cAACgiB,KACC,CACA1Z,SAAUgV,EACVhiB,KAAK,OACLsC,MAAO+mI,IACPtqE,WAAS,EACT98C,MAAOpX,EACL,4DAEFkiB,WAAY,CACVC,aACEtoB,cAACmgC,KAAc,CAAChe,SAAS,MAAK9iB,SAC3B2kI,EACChkI,cAAC0I,IAAc,CACb9I,GAAI,CACF,UAAW,CAAEhC,MAAO,UAAWghC,OAAQ,YAEzCn/B,QAAS8kI,IAGXvkI,cAACyI,IAAiB,CAChBhJ,QAAS8kI,EACT3kI,GAAI,CACF,UAAW,CAAEhC,MAAO,UAAWghC,OAAQ,gBAMjDh/B,GAAI,CAAEG,aAAc,QAEtByI,KAAMw7H,EAAe,OAAS,WAC9B57G,KAAK,UAEPpoB,cAACgiB,KACC,CACA1Z,SAAUgV,EACVhiB,KAAK,UACLsC,MAAO+mI,IACPtqE,WAAS,EACT98C,MAAOpX,EACL,gEAEFkiB,WAAY,CACVC,aACEtoB,cAACmgC,KAAc,CAAChe,SAAS,MAAK9iB,SAC3B6kI,EACClkI,cAAC0I,IAAc,CACb9I,GAAI,CACF,UAAW,CAAEhC,MAAO,UAAWghC,OAAQ,YAEzCn/B,QAAS+kI,IAGXxkI,cAACyI,IAAiB,CAChBhJ,QAAS+kI,EACT5kI,GAAI,CACF,UAAW,CAAEhC,MAAO,UAAWghC,OAAQ,gBAMjDh/B,GAAI,CAAEG,aAAc,QAEtByI,KAAM07H,EAAkB,OAAS,WACjC97G,KAAK,gBAIXpoB,cAACskB,KAAM,CACL+1C,WAAS,EACTz4C,UAAW6+G,EAAqBR,GAChCxgI,QAAUsgB,IACRghH,GAAW,EAEbnhI,GAAI,CACFG,aAAc,MACdG,OAAQ,OACRmJ,UAAW,OACXE,aAAc,MACdwT,gBAAiB,UACjBnf,MAAO,QACPsmB,WAAY,0BACZ,UAAW,CACTnH,gBAAiB,WAEnBlf,SAAU,QACVwB,SAEFW,cAAA,KAAAX,SACG8G,EAAE,yEAKXnG,cAACuH,IAAQ,CAAC/I,KAAMqkI,EAAWr7H,iBAAkB,IAAMlH,QAjQnCC,CAACb,EAAO+H,KACX,cAAXA,GAIJo7H,GAAU,EAAM,EA4P0DxjI,SACtEW,cAACkB,KAAK,CAACwG,SAAS,UAASrI,SACtB8G,EACC,gFAIC,ECxUb,SAASjF,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CAEA,MAAMqL,GAAYC,cAAYoT,IAAK,CACjCnT,KAAM,CACJhL,MAAO,OACP,YAAa,CACXmL,UAAWgT,EAAMwY,QAAQ,SA0JhBiwG,OAtJGA,KAChB,MAAOpuD,EAAOquD,GAAY7iI,oBAAS,IAC5BlB,EAAQgkI,GAAa9iI,oBAAS,IAE9B+iI,EAAaC,IADJl8H,KACsB9G,oBAAS,IAE/C,MAAM,oBAAE8H,GAAwBlI,qBAAWC,KACrCM,EAAUC,cAEhBQ,qBAAU,KACRqiI,GAAW,GACV,IAwCH,MAIMtpH,EAAaA,KACjBqpH,GAAe,EAAM,EAGjB3kI,EAAcA,CAACb,EAAO+H,KACX,cAAXA,GAIJs9H,GAAS,EAAM,EAGXI,EAAYA,KAChB,IAAIpyH,EAAO,IAAI5N,KACftG,aAAaK,QAAQ,YAAa6T,EAAKqyH,qBAAqB,EAG9D,OACEjmI,eAAA,OAAKmI,UAAU,sBAAqBjI,SAAA,CAClCW,cAAA,OAAKsH,UAAU,8BAA6BjI,SAC1CW,cAAC2b,GAAO,CAAOE,iBAEjB1c,eAAA,OAAKmI,UAAU,8BAA6BjI,SAAA,CAC1CW,cAACuH,IAAQ,CAAC/I,KAAMk4E,EAAOlvE,iBAAkB,IAAMlH,QAASC,EAAYlB,SAClEF,eAAC+B,GAAK,CAACZ,QAASC,EAAamH,SAAS,UAASrI,SAAA,CAAC,+CACP,SAG3CF,eAAA,OAAKmI,UAAU,mBAAkBjI,SAAA,CAC/BF,eAAA,QAAMmI,UAAU,eAAcjI,SAAA,CAC5BW,cAAA,QAAMsH,UAAU,cAAc7H,QAASA,IAAMylI,GAAe,GAAM7lI,SAChEW,cAAA,KAAGsH,UAAU,kBAEd29H,EACC9lI,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAAA,QACEsH,UAAU,eACV7H,QAASA,IAAMylI,GAAe,GAAO7lI,SAErCW,cAAA,KAAGsH,UAAU,kCAEftH,cAAC2b,GAAO,CAAOE,kBAGjB7b,cAAAZ,WAAA,IAE4B,kBAA7BtE,OAAOiG,SAAS6K,UAEf,2CADF9Q,OAAOiG,SAAS6K,UAGd,+DADF9Q,OAAOiG,SAAS6K,UAGd,wFADF9Q,OAAOiG,SAAS6K,UAGd,qGADF9Q,OAAOiG,SAAS6K,SAEd5L,cAAA,UACEsH,UAAU,cACV7H,QAASA,KA5DrB4C,EAAQoxH,SA6DOt4G,eAAetQ,WAAW,kBAC3BsQ,eAAetQ,WAAW,kBAAkB,EAAExL,SAEhDW,cAAA,KAAGsH,UAAU,gCAGftH,cAAAZ,WAAA,OAIJD,eAAA,OAAKmI,UAAU,oBAAmBjI,SAAA,CAChCW,cAACtC,EAAc,CACbE,MAAO,QACPC,SAAU,OACVC,WAAY,OACZC,UAAW,OACXC,cAAe,OACfC,OAAQ,SAEV+B,cAACyhI,GAAW,UAGhBzhI,cAAA,OACEsH,WACE29H,EAAc,cAAgB,IADrB,6BAEkB5lI,SAE7BW,cAAC8c,IAAM,CAAAzd,SAAEw+H,YAIb79H,cAACyiI,GAAkB,IACnBziI,cAAC+jI,GAA2B,MACxB,E,qBClKKsB,OAZQA,IAEflmI,eAACuK,IAAQ,CAACsB,QAAM,EAAA3L,SAAA,CACZW,cAAC2J,IAAY,CAAAtK,SACTW,cAACslI,KAAa,MAElBtlI,cAAC6J,IAAY,CACTC,QAAQ,sB,qBCUxB,SAAS5I,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CCEA,SAASuD,GAAMvD,GACb,OAAOqC,cAACmB,IAAQ,CAACC,UAAW,EAAGC,QAAQ,YAAa1D,GACtD,CC3Be,SAAS4nI,GAAgB3pH,GAAW,IAAV,IAAEhU,GAAKgU,EAC9C,OACE5b,cAAA,iBACES,MAAO,CACLvC,MAAO,KAEToJ,UAAU,QACVM,IAAKA,EACLC,WAAW,cACXC,MAAM,IACNC,MAAI,EACJC,UAAQ,GAGd,CCGO,MAAMw9H,GAAQ,CACnBlkI,QACAmkI,aACAz5G,YACAk/C,SACA9yB,cACA+vD,eACAhpD,WACA+lE,aACAmgB,WACAK,eHFqBA,KACrB,MAAOC,EAAQC,GAAavnI,IAAM6D,SAAS,UACpC6T,EAAOwhE,GAAYl5E,IAAM6D,SAAS,KAClC2E,EAAOskB,GAAY9sB,IAAM6D,SAAS,KAClCsC,EAAOu8B,GAAY1iC,IAAM6D,SAAS,OAClC2jI,EAAYC,GAAiBznI,IAAM6D,SAAS,OAC5CisH,GAAa3rH,YAAYrI,IACzBqE,EAAMmE,GAAWtE,IAAM6D,UAAS,GACjCG,EAAUC,eAEV,EAAE6D,GAAMC,cAsEd,OATA/H,IAAMyE,WAAU,KACA,KAAViT,GACFgrB,GAAS,GAEG,KAAVl6B,GACFi/H,GAAc,EAChB,GACC,CAAC/vH,IAGF/V,cAAA,OAAKsH,UAAU,iBAAgBjI,SAC7BF,eAAA,OAAKmI,UAAU,uBAAsBjI,SAAA,CACnCW,cAACuH,IAAQ,CAAC/I,KAAMA,EAAMgJ,iBAAkB,IAAMlH,QA7DhCC,CAACb,EAAO+H,KACX,cAAXA,GAGJ9E,GAAQ,EAAM,EAyDyDtD,SACjEW,cAACkB,GAAK,CAACwG,SAAS,QAAOrI,SAEjB8G,EADQ,SAAXw/H,EACK,wCACA,8CAGV3lI,cAAA,OAAKsH,UAAU,6BAA4BjI,SACzCW,cAAA,OAAKsH,UAAU,mBAAmBM,IAAKm+H,EAAY79H,IAAI,UAEzDlI,cAAA,OAAKsH,UAAU,8BAA6BjI,SAC1CW,cAAA,QAAMsH,UAAU,oBAAmBjI,SAChC8G,EAAE,kCAGPnG,cAAA,OAAKsH,UAAU,iCAAgCjI,SAC7CW,cAAA,QAAMsH,UAAU,uBAAsBjI,SACnC8G,EAAE,sCAGPnG,cAAA,OAAKsH,UAAU,8BAA6BjI,SAC1CF,eAAA,OAAKmI,UAAU,wCAAuCjI,SAAA,CACxC,SAAXsmI,EACCxmI,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OAAKsH,UAAU,oCAAmCjI,SAC/C8G,EAAE,2CAELnG,cAAA,SACEsH,UAAU,oBACVkB,KAAK,OACLhO,MAAOub,EACP1N,YAAalC,EAAE,+CACfmC,SAvGKyX,IACnB,MAAM,MAAEvlB,GAAUulB,EAAE3Y,OACpBmwE,EAAS/8E,EAAM,OAyGL2E,eAAAC,WAAA,CAAAC,SAAA,CACEW,cAAA,OAAKsH,UAAU,oCAAmCjI,SAC/C8G,EAAE,4CAELnG,cAAA,SACEsH,UAAU,oBACVkB,KAAK,QACLhO,MAAOqM,EACPwB,YAAalC,EACX,gDAEFmC,SAjHUyX,IACxB,MAAM,MAAEvlB,GAAUulB,EAAE3Y,OACpB+jB,EAAS3wB,EAAM,QAmHLgK,GAASqhI,IACT7lI,cAAA,OAAKsH,UAAU,kCAAiCjI,SAC7C8G,EAAE,sCAGK,SAAXw/H,EACC3lI,cAAA,MACEsH,UAAU,qBACV7H,QAASA,KACPmmI,EAAU,SACVruD,EAAS,GAAG,EACZl4E,SAED8G,EAAE,4CAGLnG,cAAA,MACEsH,UAAU,qBACV7H,QAASA,KACPmmI,EAAU,QACVz6G,EAAS,GAAG,EACZ9rB,SAED8G,EAAE,gDAKXnG,cAAA,OAAKsH,UAAU,+BAA8BjI,SAC3CW,cAAA,UAAQsH,UAAU,qBAAqB7H,QAtI3BumI,KAOlB,GANe,SAAXL,GAA+B,KAAV5vH,EACvBgrB,GAAS,GACW,UAAX4kG,GAAgC,KAAV9+H,GAC/Bi/H,GAAc,GAGZ/vH,GAASlP,EACX,IACE,MAAMzB,EAAY,IAAID,KAChB2+H,EACY,qBAATn+H,KACH3G,UAAUuwH,WAAavwH,UAAUuwH,UAAU1gH,OACzC7P,UAAUuwH,UAAU,GACpBvwH,UAAUC,SACZ0G,KAAKC,iBAAiBC,kBAAkB23C,OAC9C2wE,EAAU,CACR3nH,UAAW,CACT7E,KAAMoU,EACNlP,MAAOA,EAEPkkD,UAAW3lD,EAAUC,UACrBiqH,OAAQlqH,EAAUE,oBAClBk4C,OAAQsmF,KAGTp9H,MAAM1D,IACDA,EAAOgB,KAAKiiI,WAAWjiI,KAAKygB,QAC9BpiB,EAAQ2E,KAAK,iBAEbrE,GAAQ,EACV,IAEDsE,OAAOC,IACNvE,GAAQ,EAAK,GAEnB,CAAE,MAAOuE,GAAM,MAEfzC,QAAQD,MAAM,GAChB,EA+FkEnF,SACzD8G,EAAE,qDAGPnG,cAAA,OAAKsH,UAAU,mCAAkCjI,SAC/CF,eAAA,QAAMmI,UAAU,yBAAwBjI,SAAA,CACtCF,eAAA,QAAMsB,MAAO,CAAEgc,QAAS,OAAQ3c,IAAK,OAAQT,SAAA,CAC3CW,cAAC6I,IAAI,CAACC,GAAG,IAAGzJ,SACVW,cAACkmI,KAAkB,CAACtmI,GAAI,CAAEyJ,UAAW,WAEvCrJ,cAAC6I,IAAI,CAACC,GAAG,IAAGzJ,SAAE8G,EAAE,4CAGlBnG,cAACtC,EAAc,CACbE,MAAO,QACPC,SAAU,OACVK,MAAO,QACPJ,WAAY,OACZC,UAAW,OACXC,cAAe,OACfC,OAAQ,kBAKZ,EGzLRkoI,cFCa,WACb,MAAM1rI,EAAWyL,qCACX,EAAEC,GAAMC,eACR,MAAEQ,GAAUo8D,eACXojE,EAAWC,GAAgBnkI,mBAAS,CAAEmiI,KAAM,GAAIlD,YAAa,MAC7D3iI,EAAMmE,GAAWT,oBAAS,IAC1BokI,EAAkBC,GAAwBrkI,oBAAS,IACnD4B,EAAU0iI,GAAetkI,mBAAS,OAClCsC,EAAOu8B,GAAY7+B,mBAAS,OAC5BukI,EAAQC,GAAaxkI,mBAAS,OAC9BykI,GAAuBnkI,YAAYpI,GACpCiI,EAAUC,eACT29H,EAAaC,GAAkBh+H,mBAAS,CAC7C2M,QAAQ,EACRuxH,WAAW,EACXC,QAAQ,EACRC,aAAa,EACbC,gBAAgB,IAiBZqG,EAAoB7mH,IACxB,MAAM,KAAEzkB,EAAI,MAAEd,GAAUulB,EAAE3Y,OACpBq9H,EAAgB,IAAK2B,EAAW,CAAC9qI,GAAOd,GACxCkqI,EAAqBrD,EAAiBoD,GAC5C4B,EAAa5B,GACbvE,EAAewE,EAAmB,EAG9BrD,EAAoBl4G,IACjB,CACLta,OAAQsa,EAAOk7G,KAAKx1H,QAAU,EAC9BuxH,UAAW,QAAQh9H,KAAK+lB,EAAOk7G,MAC/BhE,OAAQ,QAAQj9H,KAAK+lB,EAAOk7G,MAC5B/D,YAAa,yCAAyCl9H,KAAK+lB,EAAOk7G,MAClE9D,eACkB,KAAhBp3G,EAAOk7G,MACoB,KAA3Bl7G,EAAOsb,iBACPtb,EAAOk7G,OAASl7G,EAAOg4G,cAIvBX,EAAqB,CACzBr6H,EAAE,qDACFA,EAAE,qDACFA,EAAE,qDACFA,EAAE,qDACFA,EAAE,sDAGE06H,EAAa1+G,IACjB,MAAM3d,EAAQ,UACR0e,EAAU,UAEhB,QAAwB1jB,KAAX,OAAT4mI,QAAS,IAATA,OAAS,EAATA,EAAW/B,MAcb,MAfa,UAEb,OAAQliH,GACN,KAAK,EACH,OAAO89G,EAAYpxH,OAASqU,EAAU1e,EACxC,KAAK,EACH,OAAOy7H,EAAYG,UAAYl9G,EAAU1e,EAC3C,KAAK,EACH,OAAOy7H,EAAYI,OAASn9G,EAAU1e,EACxC,KAAK,EACH,OAAOy7H,EAAYK,YAAcp9G,EAAU1e,EAC7C,KAAK,EACH,OAAOy7H,EAAYM,eAAiBr9G,EAAU1e,EAIpD,EAkEF,OANAnG,IAAMyE,WAAU,KACd,MAAM,SAAErI,EAAQ,aAAEosI,GAAiBT,EAClB,KAAb3rI,GAAiBsmC,GAAS,GACT,KAAjB8lG,GAAqBH,GAAU,EAAM,GACxC,CAACN,IAGFjnI,eAAA,OAAKmI,UAAU,0BAAyBjI,SAAA,CACtCW,cAACuH,IAAQ,CACP/I,KAAMA,IAASgG,IAAUiiI,EACzBj/H,iBAAkB,IAClBlH,QArIcC,CAACb,EAAO+H,KACX,cAAXA,GAGJ9E,GAAQ,EAAM,EAiIWtD,SAErBW,cAACkB,GAAK,CAACwG,SAAS,QAAOrI,SACpB8G,EAAE,iDAGPnG,cAACuH,IAAQ,CACP/I,KAAM8nI,EACN9+H,iBAAkB,IAClBlH,QAvIsBwmI,CAACpnI,EAAO+H,KACnB,cAAXA,GAGJ9E,GAAQ,EAAM,EAmImBtD,SAE7BW,cAACkB,GAAK,CAACwG,SAAU5D,EAASzE,SACvB8G,EAAE,+CAGPnG,cAAA,OAAKsH,UAAU,qBAAoBjI,SACjCW,cAAA,OAAKsH,UAAU,sBAAsBM,IAAKm/H,EAAgB7+H,IAAI,UAEhElI,cAAA,OACES,MAAO,CACLvC,MAAO,OACP8oI,WAAY,SACZ39H,UAAW,QACXE,aAAc,QACdlK,SAEiB,OAAlBmhI,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBxkI,KAAI,CAACsmB,EAAM9mB,IAC9BwE,cAACi/H,GAAW,CAACp3H,WAAYg5H,EAAUrlI,GAAK6D,SACtCF,eAAA,OAAKsB,MAAO,CAAEvC,MAAO,SAAUmB,SAAA,CAC7BW,cAAA,QACES,MAAO,CAAEkc,eAAgB,gBAAiBX,YAAa,QAAS3c,SACjE,WAGAijB,WAKTtiB,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC5CF,eAAA,OAAKmI,UAAU,0CAAyCjI,SAAA,CACtDW,cAAA,OAAKsH,UAAU,sCAAqCjI,SACjD8G,EAAE,4CAELnG,cAAA,SACEsH,UAAU,sBACVkB,KAAK,WACLH,YAAalC,EAAE,0CACf7K,KAAK,OACLgN,SAAUs+H,IAEXpiI,GACCxE,cAAA,OAAKsH,UAAU,oCAAmCjI,SAC/C8G,EAAE,6CAKXnG,cAAA,OAAKsH,UAAU,gCAA+BjI,SAC5CF,eAAA,OAAKmI,UAAU,0CAAyCjI,SAAA,CACtDW,cAAA,OAAKsH,UAAU,sCAAqCjI,SACjD8G,EAAE,6CAELnG,cAAA,SACEsH,UAAU,sBACVkB,KAAK,WACLlN,KAAK,cACL+M,YAAalC,EAAE,2CACfmC,SAAUs+H,IAEXH,GACCzmI,cAAA,OAAKsH,UAAU,oCAAmCjI,SAC/C8G,EAAE,6CAKXnG,cAAA,OAAKsH,UAAU,iCAAgCjI,SAC7CW,cAAA,UAAQsH,UAAU,uBAAuB7H,QAzI1BnF,UACnB,MAAM,KAAE+pI,EAAI,YAAElD,GAAgBiF,EACxBnF,QAAoB1mI,EAAY8pI,EAAM5pI,GACtCwsI,QAA2B1sI,EAAY4mI,EAAa1mI,GAC1D,GAbF,SAA8BimI,GAC5B,IAAK,MAAMC,KAAaD,EACtB,GAAIA,EAAOE,eAAeD,KAAoC,IAAtBD,EAAOC,GAC7C,OAAO,EAGX,OAAO,CACT,CAMMF,CAAqBR,GACvB,IACE,MAAM76H,EAAY,IAAID,KAChB2+H,EACY,qBAATn+H,KACH3G,UAAUuwH,WAAavwH,UAAUuwH,UAAU1gH,OACzC7P,UAAUuwH,UAAU,GACpBvwH,UAAUC,SACZ0G,KAAKC,iBAAiBC,kBAAkB23C,OAC9CmpF,EAAoB,CAClBngI,UAAW,CACTI,MAAOA,EACPnM,SAAUwmI,EACVx8F,gBAAiBwiG,EAEjBl8E,UAAW3lD,EAAUC,UACrBiqH,OAAQlqH,EAAUE,oBAClBk4C,OAAQsmF,KAGTp9H,MAAM1D,IAAY,IAADkkI,EAAAC,EAAAC,EAAAC,EAGZ,sBADI,OAANrkI,QAAM,IAANA,GAAY,QAANkkI,EAANlkI,EAAQgB,YAAI,IAAAkjI,GAAqB,QAArBC,EAAZD,EAAcP,2BAAmB,IAAAQ,OAA3B,EAANA,EAAmC3kH,UAE7B,OAANxf,QAAM,IAANA,GAAY,QAANokI,EAANpkI,EAAQgB,YAAI,IAAAojI,GAAqB,QAArBC,EAAZD,EAAcT,2BAAmB,IAAAU,GAAjCA,EAAmCnkH,QAEnC7gB,EAAQ2E,KAAK,sBAEbw/H,EAAY,SACZD,GAAqB,GACvB,IAEDt/H,OAAOC,IACFA,IACFs/H,EAAY,SACZD,GAAqB,GACvB,GAEN,CAAE,MAAOr/H,GAAM,MAEfzC,QAAQD,MAAM,GAChB,EA4FmEnF,SAC5D8G,EAAE,kCAKb,EE7OEmhI,aC3Ba,WACb,OACEnoI,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QAAAX,SACEW,cAACulI,GAAgB,CAAC39H,IAAI,oEAG1B5H,cAAA,OAAKsH,UAAU,mCAAkCjI,SAC/CW,cAAA,QAAAX,SAAM,+EAERW,cAAA,OAAKsH,UAAU,oCAAmCjI,SAChDW,cAAA,QAAMsH,UAAU,0BAAyBjI,SACvCW,cAAC6I,IAAI,CAACC,GAAG,IAAGzJ,SAAC,yCAKvB,EDUEkoI,gBEpBa,WACb,MAAM,EAAEphI,GAAMC,cACd,OACEjH,eAAA,OAAKmI,UAAU,yBAAwBjI,SAAA,CACrCW,cAAA,OAAKsH,UAAU,yBAAwBjI,SACrCW,cAAA,QAAAX,SACEW,cAACulI,GAAgB,CAAC39H,IAAI,oEAG1B5H,cAAA,OAAKsH,UAAU,mCAAkCjI,SAC/CW,cAAA,QAAAX,SACG8G,EACC,wEAINnG,cAAA,OAAKsH,UAAU,oCAAmCjI,SAChDW,cAAA,QAAMsH,UAAU,0BAAyBjI,SACvCW,cAAC6I,IAAI,CAACC,GAAG,IAAGzJ,SACT8G,EAAE,8DAMf,GCqEeqhI,OA3FSA,IAEpBxnI,cAACynI,IAAa,CAAApoI,SACZF,eAAC2d,IAAM,CAAAzd,SAAA,CACLW,cAACsoH,IAAK,CACJC,KAAMtuH,GACNuuH,OAAS7qH,GACNkB,aAAaC,QAAQ,SAGpBkB,cAAC+9H,IAAQ,CACPhiI,KAAK,gBACL+M,G/CpBO,kB+CgBT9I,cAACwlI,GAAMlkI,MAAK,IAAK3D,MASvBqC,cAACsoH,IAAK,CACJC,K/C/Be,O+CgCfC,OAAS7qH,GACPkB,aAAaC,QAAQ,SACnBkB,cAACwlI,GAAMC,UAAS,IAAK9nI,IAErBqC,cAAC+9H,IAAQ,CACPhiI,KAAK,IACL+M,GAAI7O,OAKZ+F,cAACsoH,IAAK,CACJC,K/C3CY,mB+C4CZC,OAAS7qH,GACNkB,aAAaC,QAAQ,SAGpBkB,cAAC+9H,IAAQ,CACPhiI,KAAK,IACL+M,GAAI7O,KAJN+F,cAACwlI,GAAME,eAAc,IAAK/nI,MAShCqC,cAACsoH,IAAK,CACJC,K/CvD6B,gB+CwD7BC,OAAS7qH,GACNkB,aAAaC,QAAQ,SAGpBkB,cAAC+9H,IAAQ,CACPhiI,KAAK,IACL+M,GAAI7O,KAJN+F,cAACwlI,GAAM8B,aAAY,IAAK3pI,MAS9BqC,cAACsoH,IAAK,CACJC,K/CnEsB,oB+CoEtBC,OAAS7qH,GACNkB,aAAaC,QAAQ,SAGpBkB,cAAC+9H,IAAQ,CACPhiI,KAAK,IACL+M,GAAI7O,KAJN+F,cAACwlI,GAAM+B,gBAAe,IAAK5pI,MASjCqC,cAACsoH,IAAK,CACJC,K/C/EoB,yB+CgFpBC,OAAS7qH,GACNkB,aAAaC,QAAQ,SAGpBkB,cAAC+9H,IAAQ,CACPhiI,KAAK,IACL+M,GAAI7O,KAJN+F,cAACwlI,GAAMW,cAAa,IAAKxoI,MAS/BqC,cAAC+9H,IAAQ,CACPhiI,KAAK,IACL+M,GAAI7O,UC7FCytI,IAJHA,IACH1nI,cAACwnI,GAAe,G,kCCHzB,wPAuBAG,IAAQC,IAAIC,KAAkBC,KAAK,CACjCh+D,SACuCtqE,IAArCX,aAAaC,QAAQ,aACgB,OAArCD,aAAaC,QAAQ,YACjBD,aAAaC,QAAQ,YACrBE,UAAUC,SAASpC,MAAM,KAAK,GACpCitE,SACuCtqE,IAArCX,aAAaC,QAAQ,aACgB,OAArCD,aAAaC,QAAQ,YACjBD,aAAaC,QAAQ,YACrBE,UAAUC,SAASpC,MAAM,KAAK,GACpCkrI,cAAe,CACbC,aAAa,GAEfC,UAAW,CACTC,GAAI,CACFC,YAAaD,GAEfE,GAAI,CACFD,YAAaC,MAInB,MAAMC,EAAWC,aAAWhuI,MAAOiuI,EAAC3sH,KAAmB,IAAjB,QAAE2Q,GAAS3Q,EAE/C,MAAMhV,EAAQ/H,aAAaC,QAAQ,SAEnC,MAAO,CACLytB,QAAS,IACJA,EACHi8G,cAAe5hI,GAAgB,IAElC,KAEG,sBACJ6hI,EAAqB,yBACrBC,EAAwB,sBACxBC,EAAqB,6BACrBC,GACE1iI,4wBAIE2iI,EAAeC,IAAiB,CACpCC,IAAK,GAAGL,MAMVM,EAAOpzE,OAAS,IAAIqzE,IAAa,CAC/BC,KAAM7+F,YAAOg+F,EAAUQ,GACvBM,MAAO,IAAIC,MAGN,MAAMr7D,EAAe,IAAIk7D,IAAa,CAC3CF,IAhB4B7iI,wDAkB5BijI,MAAO,IAAIC,MAGbC,IAAS7gB,OACPxoH,cAAC3B,IAAMirI,WAAU,CAAAjqI,SACfW,cAACupI,IAAc,CAAC3zE,OAAQozE,EAAOpzE,OAAOv2D,SACpCW,cAACwpI,IAAS,QAGdluG,SAASmuG,eAAe,SAAWnuG,SAASC,cAAc,O,oDCxF5D,kIAMO,MAAMx5B,EAAc2+C,wBAAc,CAAC,GAE7BgpF,EAAe9tH,IAAmB,IAADsiD,EAAA,IAAjB,SAAE7+D,GAAUuc,EACvC,MACM8E,EAAoB,CACxB3V,QAAQ,EACRmQ,MAAM,EACN7P,SAAS,EACTs+H,YAAY,EACZC,cAAc,EACdC,eAAe,EACfC,YAAY,EACZ99H,QAAQ,EACRqb,WAAW,EACXC,aAAa,EACbmB,cAAc,EACdI,WAAW,EACX/c,YAAY,EACZ8wH,eAAe,EACfC,iBAAiB,EACjBkN,gBAAgB,EAChBzM,eAAe,EACf0M,YAAY,EACZC,eAAe,EACfxuH,KAAK,EACLyuH,QAAQ,EACR/1B,WAAW,EACXC,WAAW,EACX+1B,QAAQ,EACRC,WAAW,EACXC,WAAW,EACXC,KAAK,EACL93B,WAAW,EACXn3F,MAAM,EACN20D,aAAa,EACbhV,YAAY,EACZC,UAAU,EACVsvE,SAAS,EACTC,SAAS,EACTv6D,YAAY,EACZwkB,YAAY,EACZg2C,UAAU,EACVC,aAAa,EACb1mD,UAAU,EACVD,aAAa,EACblR,aAAa,EACb6gB,cAAc,EACdxjB,UAAU,EACVy6D,aAAa,EACbC,aAAa,EACbC,SAAS,EACTC,YAAY,EACZ36D,UAAU,EACV46D,aAAa,EACbxvH,KAAK,EACL8sF,QAAQ,EACRL,kBAAkB,EAClBf,SAAS,IAGL,KAAEjjG,EAAI,QAAEuW,EAAO,MAAE/V,EAAK,QAAEqnB,GAAYrR,YAAS8qB,IAAe,CAChE5qB,YAAa,oBACblU,UAAW,CACTjH,GAAIvC,SAAS6B,aAAaC,QAAQ,WAK/BJ,EAAcC,GAAmBuD,sBAGjC4I,EAAiB8S,GAAuB1b,mBAASwe,IACjDO,EAAoBC,GAAyBhf,mBAAS4I,IACtDd,EAAqBghI,GAA0B9oI,sBAG/Cs9H,EAAYC,GAAiBv9H,sBAC7B6sG,EAASC,GAAc9sG,mBAASiD,KAAKwR,MAAM,IAAIxR,OAEtDrC,qBAAU,KAAO,IAAD0nC,EACJhH,EAANx/B,GACFgnI,EAA2B,OAAJhnI,QAAI,IAAJA,GAAoB,QAAhBw/B,EAAJx/B,EAAMwiC,YAAY,UAAE,IAAAhD,OAAhB,EAAJA,EAAsB8C,KAAKrnB,WAAW,IAE/D+rH,EAA2B,OAAJhnI,QAAI,IAAJA,GAAoB,QAAhBwmC,EAAJxmC,EAAMwiC,YAAY,UAAE,IAAAgE,OAAhB,EAAJA,EAAsBlE,KAAKrnB,WAAW,GAAG,GAC/D,CAACjb,IAEJlB,qBAAU,KAER,MAAMlE,EAAiBC,aAAaC,QAAQ,YAE5C,GAAIF,EACFD,EAAgBC,OACX,CAEL,MAAMG,EAAeC,UAAUC,SAASpC,MAAM,KAAK,GAE9B,OAAjBkC,GACFJ,EAAgBI,GAChBF,aAAaK,QAAQ,WAAYH,KAEjCJ,EAAgB,MAChBE,aAAaK,QAAQ,WAAY,MAErC,IACC,IAEH,MAAOyC,EAAMC,GAAWM,mBAAS,KAC1BmjC,EAAIxjC,GAASK,sBAGbmrB,EAAOC,GAAYprB,mBAAS,KAC5ByxC,EAAM6E,GAAWt2C,sBACjBw2C,EAAQD,GAAav2C,sBACrB+rB,EAAQ0qB,GAAaz2C,mBAAS,KAC9BgzD,EAAoB5U,GAAyBp+C,mBAAS,KAGtDk1C,EAASwB,GAAc12C,mBAAS,KAChCogE,EAAKC,GAAUrgE,mBAAS,KACxB07D,EAAS4E,GAActgE,mBAAS,CAAE2hE,MAAO,MACzCpB,EAAYC,GAAiBxgE,mBAAS,KACtCygE,EAAaC,GAAkB1gE,mBAAS,KACxC04C,EAAWqwF,GAAgB/oI,mBAAS,KACpC+yD,EAAYpc,IAAiB32C,oBAAS,IACtC+/D,GAA0BC,IAA+BhgE,sBAGzD+nB,GAAW0zC,IAAgBz7D,oBAAS,IACpCgpI,GAAeC,IAAoBjpI,oBAAS,IAC5CqlC,GAAqBC,IAA0BtlC,oBAAS,IACxD0pC,GAAmBC,IAAwB3pC,oBAAS,IACpDy/B,GAA2BC,IAChC1/B,oBAAS,IACJ+xB,GAA8BC,IACnChyB,oBAAS,IAGJunC,GAAWC,IAAgBxnC,oBAAS,IACpCkpI,GAAiBC,IAAsBnpI,oBAAS,IAGhD2iC,GAAaC,IAAkB5iC,oBAAS,IACxCopI,GAAcC,IAAmBrpI,oBAAS,IAG1CuzE,GAAaC,IAAkBxzE,oBAAS,IACxC6vE,GAAgB4D,IAAqBzzE,oBAAS,IAC9Ck7D,GAAchY,IAAmBljD,oBAAS,IAC1C0zE,GAAgBoB,IAAqB90E,oBAAS,IAC9CqnE,GAAkBC,IAAuBtnE,mBAAS,IAGlD2tB,GAAgB1F,IAAqBjoB,mBAAS,IAC9CsuB,GAAiB7G,IAAsBznB,mBAAS,OAChDs2H,GAAkB5uG,IAAuB1nB,mBAAS,OAClDquB,GAAoBrG,IAAyBhoB,oBAAS,IACtDi3H,GAAwBH,IAA6B92H,oBAAS,IAC9D6mH,GAAqByiB,IAA0BtpI,oBAAS,IACxD8mH,GAAsByiB,IAA2BvpI,oBAAS,IAC1DwpI,GAAsBC,IAA2BzpI,mBAAS,IAE1D8oB,GAAUC,IAAe/oB,qBAChCY,qBAAU,KACR,MAAM8oI,EAAW/sI,aAAaC,QAAQ,iBACrBU,IAAbosI,GAAuC,OAAbA,GAAkC,KAAbA,GACjD3gH,GAAY2gH,EACd,GACC,IAEH,MAAOzxH,GAAUkR,IAAenpB,mBAAS,KAClCgY,GAASg0B,IAAchsC,mBAAS,KAChC2pI,GAASC,IAAc5pI,mBAAS,IAChCkuC,GAAMC,IAAWnuC,mBAAS,IAC1BouC,GAAcC,IAAmBruC,mBAAS,IAC1C65D,GAAcC,IAAmB95D,mBAAS,OAC1C6pI,GAAW59F,IAAgBjsC,sBAC3Bi1B,GAA0BC,IAC/Bl1B,oBAAS,IAGJo0G,GAAeC,IAAmBr0G,mBAAS,KAC3CxC,GAAOgmH,IAAYxjH,mBAAS,IAG5Bod,GAAYyB,IAAiB7e,oBAAS,IACtCqd,GAAUysH,IAAe9pI,oBAAS,IAClCshB,GAAuBxC,IAA4B9e,oBAAS,IAC5DuhB,GAAO4B,IAAYnjB,mBAAS,KAC5B2e,GAASC,IAAcziB,IAAM6D,SAAS,KACtC0e,GAAkB0E,IAAuBpjB,mBAAS,KAClDye,GAAQuE,IAAahjB,sBACrBwhB,GAAWC,IAAgBzhB,sBAC3B+pI,GAAuBC,IAA4BhqI,oBAAS,IAG5D6mD,GAAcC,IAAmB9mD,mBAAS,IAAIiD,OAC9CgnI,GAAsBljF,IAA2B/mD,oBAAS,IAC1DgR,GAAYivD,IAAiBjgE,mBAAS,CAC3C,CACEqQ,UAAW,IAAIpN,KACfsN,QAASwxD,kBAAQ,IAAI9+D,KAAQ,GAC7B3J,IAAK,gBAGF0tD,GAAkBiM,IAAuBjzD,mBAAS,IAAIiD,OACtDinI,GAAcC,IAAmBnqI,sBACjCoqI,GAAcC,IAAmBrqI,sBAGjCurH,GAAagQ,IAAkBv7H,mBAAS,KACxCsqI,GAAUC,IAAevqI,mBAAS,KAClCwqI,GAAcC,IAAmBzqI,mBAAS,KAC1C2E,GAAOskB,IAAYjpB,mBAAS,KAC5BgkC,GAAO0mG,IAAY1qI,mBAAS,KAC5B2qI,GAAUC,IAAe5qI,mBAAS,KAClC6qI,GAAgBC,IAAqB9qI,mBAAS,KAC9CoiC,GAAW2oG,IAAgB/qI,mBAAS,KACpCgrI,GAAMC,IAAWjrI,mBAAS,KAC1BzH,GAAU2wB,IAAelpB,mBAAS,KAClCsiC,GAAa4oG,IAAkBlrI,mBAAS,KACxCw/B,GAAO4K,IAAYpqC,mBAAS,KAG5B00D,GAAQ7B,IAAa7yD,mBAAS,KAC9BmrI,GAAOr7B,IAAY9vG,sBACnB6uG,GAAiBkB,IAAsB/vG,mBAAS,IAChD8pE,GAAY59B,IAAiBlsC,mBAAS,CAAC,IACvCgqE,GAAiBD,IAAqB/pE,sBACtCkqE,GAAyBD,IAA8BjqE,sBACvD8uG,GAAoBkB,IAAyBhwG,mBAAS,IACtDorI,GAAiBn7B,IAAsBjwG,mBAC5CiD,KAAKwR,MAAM,IAAIxR,QAEVqsG,GAAYlc,IAAiBpzF,oBAAS,IACtCqrI,GAAYC,IAAiBtrI,mBAAS,IAAIiD,OAI1C6jG,GAAYC,IAAiB/mG,mBAAS,CAC3C,CACEqQ,UAAW,IAAIpN,KACfsN,QAASwxD,kBAAQ,IAAI9+D,KAAQ,GAC7B3J,IAAK,gBAGF6mE,GAAgBD,IAAqBlgE,oBAAS,IAC9CurI,GAAgBz4E,IAAqB9yD,oBAAS,IAG9C6pE,GAAeD,IAAoB5pE,mBAAS,CACjD,MAAO,KACP,MAAO,KACP,MAAO,OAIHi8D,GAAe,IAAIh5D,KACnBi5D,GAA0B,OAAZD,SAAY,IAAZA,IAAwB,QAAZD,EAAZC,GAAc7hE,kBAAU,IAAA4hE,OAAZ,EAAZA,EAA0BhvD,UAAU,EAAG,IACrDmvD,GAAa,IAAIl5D,KAAKi5D,IAAa/4D,UAAY,OAC9Cy4D,GAAiBD,IAAsB37D,mBAAS,CACrD,CACEqQ,UAAW,IAAIpN,KAAKk5D,IACpB5rD,QAAS,IAAItN,KAAKk5D,IAClB7iE,IAAK,gBAIFuiE,GAAsBC,IAA2B97D,mBAAS,CAC/D,CACEqQ,UAAW,IAAIpN,KAAKk5D,IACpB5rD,QAAS,IAAItN,KAAKk5D,IAClB7iE,IAAK,gBAGF8tD,GAAyBD,IAA8BnnD,mBAC5D,IAAIiD,OAIC++C,GAAsBmD,IAA2BnlD,mBAAS,CAC/D,CACEqQ,UAAW,IAAIpN,KACfsN,QAAS,IAAItN,KACb3J,IAAK,gBAIFyoD,GAAmBqD,IAAwBplD,mBAAS,IAAIiD,OACxDgkD,GAAoBC,IAAyBlnD,mBAAS,IAAIiD,OAC1DiwD,GAAqB/U,IAA0Bn+C,mBAAS,KACxDk+C,GAAmBmJ,IAAwBrnD,mBAAS,OAEpDggF,GAAiBkgB,IAAsBlgG,oBAAS,GAEvD,OACElC,cAAC+B,EAAYm/C,SAAQ,CACnB1mD,MAAO,CACLmH,OACAC,UACAyjC,KACAxjC,QACA+0D,UACA7B,aACA1nC,QACAC,WACAqmB,OACA6E,UACAE,SACAD,YACAxqB,SACA0qB,YACA88B,eACAC,kBACA3D,kBACA4D,qBACAvY,gBACAhY,mBACAjrC,YACAkR,eACAnY,cACAivD,iBACAziE,SACAgmH,YACApP,iBACAC,mBACAl0C,kBACAD,qBACAoqE,YACAC,eACAC,gBACAC,mBACA9lI,SACAskB,YACA+a,SACA0mG,YACAC,YACAC,eACAC,kBACAC,qBACA1oG,aACA2oG,gBACAC,QACAC,WACA1yI,YACA2wB,eACAoZ,eACA4oG,kBACA1rG,SACA4K,YACA7oB,SACA4B,YACAooH,kBACAz4E,qBACAg0C,cACAC,iBACAlgD,gBACAC,mBACAmjF,wBACAljF,2BACAgZ,4BACAC,+BACA9qB,UACAwB,aACA0pB,MACAC,SACA3E,UACA4E,aACAC,aACAC,gBACAC,cACAC,iBACAhoB,YACAqwF,eACAhhH,aACA0zC,gBACA1I,aACApc,iBACA3+B,WACAg0B,cACAkC,QACAC,WACAC,gBACAC,mBACA26F,iBACAC,oBACApvE,gBACAC,mBACAuN,oBACAC,uBACAqiE,WACAC,cACAjnG,eACAC,kBACAwmG,gBACAC,mBACA9d,eACAgQ,kBACA4P,SACAr7B,YACAjB,mBACAkB,sBACAjB,sBACAkB,yBACAo7B,mBACAn7B,sBACArnG,kBACA8S,sBACAgD,oBACA0E,uBACAymH,aACA59F,gBACAqjE,cACAlc,iBACAz0E,WACAC,cACAxB,cACAyB,iBACAxB,YACAysH,eACAxoH,yBACAxC,4BACAL,UACAuE,aACAxB,aACAC,gBACAjD,oBACAyW,4BACAC,+BACAnW,qBACAC,wBACA6qD,iBACAD,oBACA9hE,sBACAy/B,aACAC,gBACA0hG,mBACAC,sBACA9jG,uBACAC,0BACAoE,qBACAC,wBACAogG,yBACAC,4BACAvqG,6BACAC,gCACA3N,gCACAC,mCACArE,kBACA1F,qBACAqG,mBACA7G,sBACA6uG,oBACA5uG,uBACA41G,aACAC,gBACAtqE,uBACAjM,oBACAkjF,gBACAC,mBACAC,gBACAC,mBACAgB,cACAC,iBACAj9G,sBACArG,yBACA6+F,uBACAyiB,0BACAxiB,wBACAyiB,2BACAtS,0BACAH,6BACA0S,wBACAC,2BACA58B,UACAC,aACAlxC,mBACAD,sBACA1U,sBACAC,yBACA8L,qBACA5U,wBACA4hC,mBACAkgB,sBACAp2B,cACA59B,iBACA89B,mBACAD,qBACA79B,iBACAg+B,2BACAD,8BACA/W,uBACA/U,0BACAD,qBACAmJ,wBACAv+B,YACAC,eACA8yC,wBACAC,2BACA1U,2BACAD,8BACAusB,kBACAoB,qBACA9yB,wBACAmD,2BACApD,qBACAqD,yBACAjoD,SAEDA,GACoB,C,mCCrgB3B,kEAGe,SAASmqI,IACtB,OACExpI,cAAC0pI,IAAY,CAAArqI,SACXW,cAAC0nI,IAAG,KAGV,C,4/xCCTA,oBAGO,MAAMgG,EAHb,OAG8BrvI,EAAMqiD,gBACjBitF,YAAoBD,EAAeE,S,wDCJtD,0PAEO,MAAM/pG,EAAc3pC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDjBorC,GAVWprC,GAAG;;;;;;;;EAUEA,GAAG;;;;;;;;;;;;;;;;;;GAmBnB6nC,EAAe7nC,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAiClB4nC,GARsB5nC,GAAG;;;;;;EAQLA,GAAG;;;;GAMvB6vC,EAAY7vC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Bf0vC,EAAc1vC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCjB24B,EAAmC34B,GAAG","file":"static/js/main.8fdba06b.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/logo.54350e39.svg\";","import gql from \"graphql-tag\";\n\nexport const LOGIN = gql`\n  mutation ($user: String, $password: String, $device: String) {\n    Login(user: $user, password: $password, device: $device) {\n      id\n      name\n      last_name\n      token\n      email\n      security\n    }\n  }\n`;\n\nexport const FORGOT_PASSWORD = gql`\n  mutation ($user: String, $email: String, $epochTime: Float, $offset: Int, $locale: String) {\n    send_Email(user: $user, email: $email, epochTime: $epochTime, offset: $offset, locale: $locale)\n  }\n`;\n\nexport const RESET_PASSWORD = gql`\n  mutation ($token: String!, $password: String!, $confirmPassword:String!, $epochTime: Float, $offset: Int, $locale: String) {\n    create_Reg_Password(token: $token, password: $password, confirmPassword: $confirmPassword, epochTime: $epochTime, offset: $offset, locale: $locale)\n  }\n`;\n\nexport const LOGOUT = gql`\n  mutation Mutation {\n    logout\n}`\n","export async function encryptData(value, password) {\n  const pwUtf8 = new TextEncoder().encode(password);\n  const pwHash = await window.crypto.subtle.digest(\"SHA-256\", pwUtf8);\n  const iv = window.crypto.getRandomValues(new Uint8Array(12));\n  const alg = { name: \"AES-GCM\", iv: iv, tagLength: 128 };\n  const key = await window.crypto.subtle.importKey(\n    \"raw\",\n    pwHash,\n    alg,\n    false,\n    [\"encrypt\"]\n  );\n  const ptUint8 = new TextEncoder().encode(value);\n  const ctBuffer = await window.crypto.subtle.encrypt(alg, key, ptUint8);\n  const ctArray = Array.from(new Uint8Array(ctBuffer));\n  const ctStr = ctArray.map((byte) => String.fromCharCode(byte)).join(\"\");\n  const ivHex = Array.from(iv)\n    .map((b) => (\"00\" + b.toString(16)).slice(-2))\n    .join(\"\");\n  const ctBase64 = btoa(ctStr);\n  return ivHex + \",\" + ctBase64;\n}\n\nexport async function decryptData(encryptedData, password) {\n  const pwUtf8 = new TextEncoder().encode(password);\n  const pwHash = await window.crypto.subtle.digest(\"SHA-256\", pwUtf8);\n\n  const [ivHex, ctBase64] = encryptedData.split(\",\");\n  const iv = new Uint8Array(\n    ivHex.match(/[\\da-f]{2}/gi).map(function (h) {\n      return parseInt(h, 16);\n    })\n  );\n\n  const alg = { name: \"AES-GCM\", iv: iv, tagLength: 128 };\n  const key = await window.crypto.subtle.importKey(\n    \"raw\",\n    pwHash,\n    alg,\n    false,\n    [\"decrypt\"]\n  );\n\n  const ctStr = atob(ctBase64);\n  const ctUint8 = new Uint8Array(\n    ctStr.match(/[\\s\\S]/g).map(function (ch) {\n      return ch.charCodeAt(0);\n    })\n  );\n\n  const decryptedBuffer = await window.crypto.subtle.decrypt(\n    alg,\n    key,\n    ctUint8\n  );\n  const decryptedValue = new TextDecoder().decode(decryptedBuffer);\n\n  return decryptedValue;\n}","import * as React from \"react\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport GTranslateOutlinedIcon from \"@mui/icons-material/GTranslateOutlined\";\nimport LanguageIcon from \"@mui/icons-material/Language\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nconst options = [\"Español\", \"English\"];\n\nconst ITEM_HEIGHT = 48;\n\nexport default function LanguageSelect(props) {\n  const { color, fontSize, iconHeight, iconWidth, borderRadious, border, width } =\n    props;\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [selectedOption, setSelectedOption] = React.useState(null);\n  const open = Boolean(anchorEl);\n  const [userLanguaje, setUserLanguage] = React.useState();\n\n  React.useEffect(() => {\n    // comprueba si ya existe un idioma en el localStorage\n    const storedLanguage = localStorage.getItem(\"language\");\n\n    if (storedLanguage) {\n      setUserLanguage(storedLanguage);\n    } else {\n      // Si no hay un idioma almacenado, utiliza la lógica del navegador\n      const languageCode = navigator.language.split(\"-\")[0];\n      if (languageCode === \"es\") {\n        setUserLanguage(languageCode);\n        localStorage.setItem(\"language\", languageCode);\n      } else {\n        setUserLanguage(\"en\");\n        localStorage.setItem(\"language\", \"en\");\n      }\n    }\n  }, []);\n\n  const handleClick = (event) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handleOptionClick = (option) => {\n    setSelectedOption(option);\n\n    // Mapea la opción seleccionada a los códigos de idioma 'en' o 'es'\n    const languageCode = option === \"Español\" ? \"es\" : \"en\";\n\n    // Guarda el nuevo idioma en el localStorage\n    localStorage.setItem(\"language\", languageCode);\n\n    // Recarga la página para aplicar el cambio de idioma\n    window.location.reload();\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  const showLanguage = (localLanguage) => {\n    if (localLanguage === \"en\") {\n      return \"English\";\n    } else if (localLanguage === \"es\") {\n      return \"Español\";\n    }\n  };\n\n  return (\n    <>\n      <IconButton\n        aria-label=\"more\"\n        id=\"long-button\"\n        aria-controls={open ? \"long-menu\" : undefined}\n        aria-expanded={open ? \"true\" : undefined}\n        aria-haspopup=\"true\"\n        onClick={handleClick}\n        sx={{\n          margin: \"10px\",\n          fontSize: \"20px\",\n          color: color,\n          fontSize: fontSize,\n          gap: \"2px\",\n          borderRadius: borderRadious,\n          border: border,\n          width: width,\n        }}\n      >\n        <PublicIcon sx={{ height: iconHeight, width: iconWidth }} />\n        {selectedOption || showLanguage(localStorage.getItem(\"language\"))}{\" \"}\n        {/* Muestra la opción seleccionada o \"Seleccionar\" */}\n      </IconButton>\n      <Menu\n        id=\"long-menu\"\n        MenuListProps={{\n          \"aria-labelledby\": \"long-button\",\n        }}\n        anchorEl={anchorEl}\n        open={open}\n        onClose={handleClose}\n        PaperProps={{\n          style: {\n            maxHeight: ITEM_HEIGHT * 4.5,\n            width: \"20ch\",\n          },\n        }}\n      >\n        {options.map((option) => (\n          <MenuItem\n            key={option}\n            selected={option === selectedOption}\n            onClick={() => handleOptionClick(option)}\n          >\n            {option}\n          </MenuItem>\n        ))}\n      </Menu>\n    </>\n  );\n}\n","import React, { useState, useContext } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport Logo from \"../../assets/logo.svg\";\nimport { LOGIN } from \"../../controllers/authenticationController\";\nimport { useMutation } from \"@apollo/client\";\nimport { useHistory } from \"react-router-dom\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport { Link } from \"react-router-dom\";\nimport { encryptData } from \"../../utils/encryptDecrypt\";\n\n//multilenguage\nimport { useTranslation } from \"react-i18next\";\nimport LanguageSelect from \"../../components/languageSelect/LanguageSelect\";\n\n//infoUser\nimport UAParser from \"ua-parser-js\";\nimport FingerprintJS from '@fingerprintjs/fingerprintjs'\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\nconst Login = (props) => {\n  const { register, handleSubmit, errors } = useForm();\n  const { user, setUser, setNp } = useContext(AuthContext);\n  const [showPassword, setShowPassword] = useState(false);\n  const [userInfo, setUserInfo] = useState();\n  const history = useHistory();\n  const [login] = useMutation(LOGIN);\n  const [auth, setValue] = useState({\n    user: \"\",\n    password: \"\",\n  });\n  const [open, setOpen] = React.useState(false);\n  const [open2, setOpen2] = React.useState(false);\n\n  function getDeviceDetails() {\n    const parser = new UAParser();\n    const result = parser.getResult();\n    \n    // Determinar si es móvil o web\n    const isMobile = /mobile|tablet|android|ipad|iphone/i.test(navigator.userAgent.toLowerCase());\n    \n    return {\n        deviceType: isMobile ? 'mobile' : 'web',\n        os: result.os.name || 'unknown', // Windows, iOS, Android, Mac OS, Linux, etc.\n        osVersion: result.os.version || 'unknown',\n        browser: result.browser.name,\n        browserVersion: result.browser.version,\n    };\n  }\n\n  async function fetchIPInfo() {\n    try {\n        const response = await fetch(\"https://ipinfo.io/json?token=b86b7eaa35adf2\");\n        const data = await response.json();\n        return {\n            ip: data.ip,\n            location: {\n                country: data.country,\n                region: data.region,\n                city: data.city,\n                coordinates: data.loc // formato: \"latitud,longitud\"\n            }\n        };\n    } catch (error) {\n        console.error(\"Error obteniendo la información de IP:\", error);\n        return null;\n    }\n  }\n\n  async function getDeviceFingerprint() {\n    try {\n        const fp = await FingerprintJS.load();\n        const result = await fp.get();\n        return result.visitorId;\n    } catch (error) {\n        console.error(\"Error al obtener fingerprint:\", error);\n        return null;\n    }\n  }\n\n  React.useEffect(() => {\n    async function fetchData() {\n        const deviceInfo = getDeviceDetails();\n        const ipInfo = await fetchIPInfo();\n        const fingerprint = await getDeviceFingerprint();\n        \n        const now = new Date();\n        const localDate = new Date(now.getTime() - (now.getTimezoneOffset() * 60000));\n        \n        const sessionInfo = {\n            deviceId: fingerprint,\n            deviceType: deviceInfo.deviceType,\n            os: deviceInfo.os,\n            osVersion: deviceInfo.osVersion,\n            browser: deviceInfo.browser,\n            browserVersion: deviceInfo.browserVersion,\n            ip: ipInfo?.ip || 'unknown',\n            location: ipInfo?.location || {},\n            sessionStart: localDate, \n            timezone: Intl.DateTimeFormat().resolvedOptions().timeZone \n        };\n        \n        setUserInfo(sessionInfo);\n        \n        if (fingerprint) {\n            localStorage.setItem('deviceFingerprint', fingerprint);\n        }\n        \n        localStorage.setItem(\"sessionInfo\", JSON.stringify(sessionInfo));\n    }\n\n    fetchData();\n  }, []);\n\n  const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\n  const { t } = useTranslation();\n\n  const handleClick = () => {\n    setOpen(true);\n  };\n  const handleClick2 = () => {\n    setOpen2(true);\n  };\n\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n\n    setOpen(false);\n  };\n\n  const handleClose2 = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setOpen2(false);\n  };\n\n  const __handleSubmit = async () => {\n    const encryptedpass = await encryptData(auth.password, password);\n    const encryptInfo = await encryptData(JSON.stringify(userInfo), password);\n    \n    if (auth.user && auth.password) {\n        try {\n            login({\n                variables: {\n                    user: auth.user,\n                    password: encryptedpass,\n                    device: encryptInfo  // Aquí se envía toda la información recopilada\n                },\n            })\n            .then((resul) => {\n                if (resul) {\n                    // Guardar información relevante en localStorage\n                    localStorage.setItem(\"token\", resul.data.Login.token);\n                    localStorage.setItem(\"np\", resul.data.Login.id);\n                    localStorage.setItem(\"email\", resul.data.Login.email);\n                    localStorage.setItem(\"SecurityPassword\", resul.data.Login.security);\n                    localStorage.setItem(\"name\", `${resul.data.Login.name} ${resul.data.Login.last_name}`);\n                    \n                    // También podemos guardar información de la sesión si es necesario\n                    localStorage.setItem(\"sessionInfo\", JSON.stringify(userInfo));\n                    \n                    setUser(resul.data.Login.name);\n                    history.push(\"/app/projects\");\n                }\n            })\n            .catch((err) => {\n                handleClick();\n            });\n        } catch (err) {\n            console.error(\"Error en el inicio de sesión:\", err);\n        }\n    } else {\n        handleClick2();\n    }\n  };\n\n  const handleInput = (event) => {\n    const value = event.target.value;\n    const name = event.target.name;\n    const password = event.target.password;\n    setValue({\n      ...auth,\n      [name]: value,\n      [password]: value,\n    });\n  };\n\n  const handleKeyPress = (event) => {\n    if (event.key === 'Enter') {\n      __handleSubmit();\n    }\n  };\n\n  return (\n    <div className=\"_login_container_principal\">\n      <div className=\"principal\">\n        <Snackbar open={open} autoHideDuration={6000} onClose={handleClose}>\n          <Alert severity=\"error\">{t(\"VIEW_LOGIN.ERROR_ALERT\")}</Alert>\n        </Snackbar>\n        <Snackbar open={open2} autoHideDuration={6000} onClose={handleClose2}>\n          <Alert severity=\"warning\">{t(\"VIEW_LOGIN.WARNING_ALERT\")}</Alert>\n        </Snackbar>\n        <div className=\"_hero\">\n          <lottie-player\n            className=\"_logo\"\n            src=\"https://assets10.lottiefiles.com/private_files/lf30_psn7xxju.json\"\n            background=\"transparent\"\n            speed=\"1\"\n            loop\n            autoplay\n          ></lottie-player>\n        </div>\n        <div className=\"_form\">\n          <div className=\"_container__logo\">\n            <img\n              className=\"_logo\"\n              src={Logo}\n              alt=\"Horus Smart Energy\"\n              width=\"130\"\n              height=\"130\"\n            />\n          </div>\n          <div className=\"_container__title\">\n            <span className=\"_title\">{t(\"VIEW_LOGIN.WELCOME\")}</span>\n          </div>\n          <form\n            className=\"_container_inputs\"\n          >\n            <input\n              className=\"_btn_input\"\n              name=\"user\"\n              ref={register({ required: true })}\n              placeholder={t(\"VIEW_LOGIN.INPUT_USER\")}\n              onChange={handleInput}\n              onKeyPress={handleKeyPress}\n            />\n            {errors.name && <span className=\"\">* usuario es requerido</span>}\n            <br />\n            <div className=\"_container_password\">\n              <input\n                className=\"_input_password\"\n                name=\"password\"\n                ref={register({ required: true })}\n                placeholder={t(\"VIEW_LOGIN.INPUT_PASSWORD\")}\n                type={showPassword ? \"text\" : \"password\"}\n                onChange={handleInput}\n                onKeyPress={handleKeyPress}\n              />\n              {auth.password !== \"\" ? (\n                <div className=\"_container_icon\">\n                  <IconButton onClick={() => setShowPassword(!showPassword)}>\n                    {showPassword ? <VisibilityOffIcon /> : <VisibilityIcon />}\n                  </IconButton>\n                </div>\n              ) : (\n                <></>\n              )}\n            </div>\n\n            {errors.name && <span className=\"\">* usuario es requerido</span>}\n            <br />\n            <input\n              onClick={__handleSubmit}\n              className=\"_btn_submit\"\n              type=\"button\"\n              value={t(\"VIEW_LOGIN.SIGN_IN_BUTTON\")}\n            />\n          </form>\n\n          <div className=\"_container_info_contact\">\n            <a\n              className=\"_info_contact\"\n              TARGET=\"_blank\"\n              href=\"https://www.horus-smartenergy.com/\"\n            >\n              {\" \"}\n              {t(\"VIEW_LOGIN.CONTACT_US\")}\n            </a>\n          </div>\n\n          <div className=\"forgot_password\">\n            <Link to=\"/forgot_password\">{t(\"VIEW_LOGIN.FORGOT_PASSWORD\")}</Link>\n          </div>\n          <div className=\"language_select\">\n            <LanguageSelect\n              color={\"black\"}\n              fontSize={\"15px\"}\n              iconHeight={\"22px\"}\n              iconWidth={\"22px\"}\n              border={\"none\"}\n              borderRadious={\"20px\"}\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Login;\n","export default __webpack_public_path__ + \"static/media/logo_lr.8d925b3a.svg\";","import React from 'react'\nimport { Link } from \"react-router-dom\"\nimport { ListItemIcon, ListItem, ListItemText } from \"@material-ui/core\";\nimport HomeWorkIcon from \"@material-ui/icons/HomeWork\";\nimport ListIcon from \"@material-ui/icons/List\";\n\nexport default function DirectAccess() {\n    return (\n        <div className='__directaccess_container__'>\n            {/* <div className=\"sidebar_menu\">\n                <span className=\"__menu\">Acceso rápido</span>\n            </div> */}\n            {/* <ListItem>\n              <ListItemIcon className=\"_listitem_icon\">\n                <ListIcon />\n              </ListItemIcon>\n              <ListItemText\n                primary={`Posada guadalajara 1970`}\n                className=\"_listitem_name_projects\"\n              />\n            </ListItem> */}\n            <div>\n                {/* <Link to={\"/app/areas/\" + 15} className=\"_sidebar_item\">\n                  <ListItem\n                    button\n                    // onClick={() => change_project_id(15)}\n                    className={`${\n                      window.location.pathname == \"/app/areas/\" + 15 ||\n                      window.location.pathname.substring(0, 13) +\n                        localStorage.getItem(\"id\") ==\n                        `/app/devices/${15}`\n                        ? \"__on_item\"\n                        : \"__off_item\"\n                    }`}\n                  >\n                    <ListItemIcon className=\"__icon_hab_and_control\">\n                      <HomeWorkIcon />\n                    </ListItemIcon>\n                    <ListItemText primary=\"Áreas\" className=\"_sidebar_text\" />\n                  </ListItem>\n                </Link> */}\n            </div>\n        </div>\n    )\n}\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport SettingsRemoteOutlinedIcon from '@mui/icons-material/SettingsRemoteOutlined';\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n  root: {\n    margin: \"0\",\n  },\n  listItem: {\n    padding: \"0px\",\n    marginTop: \"0%\",\n    marginLeft: \"25px\",\n    marginBottom: \"0%\",\n  },\n});\n\nexport const DeviceManagement = () => {\n  const { t } = useTranslation();\n  const classes = useStyles();\n  return (\n    <ListItem className={classes.listItem}>\n      <ListItemIcon>\n        <SettingsRemoteOutlinedIcon />\n      </ListItemIcon>\n      <ListItemText primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.DEVICE_MANAGEMENT\")} />\n    </ListItem>\n  );\n};\n","import React, { useContext } from 'react';\nimport { ListItemIcon, ListItem, ListItemText } from '@material-ui/core';\nimport { AuthContext } from '../../context/AuthProvider';\nimport ManageAccountsIcon from '@mui/icons-material/ManageAccounts';\nimport { makeStyles } from '@material-ui/core/styles';\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n  root: {\n    margin: '0',\n  },\n  listItem: {\n    padding: '0px',\n    marginTop: '0%',\n    marginLeft: '25px',\n    marginBottom: '0%',\n  },\n});\n\nexport const Managements = () => {\n  const classes = useStyles();\n  const { t } = useTranslation();\n  const { permissionsRoleUser } = useContext(AuthContext);\n  return (\n    <ListItem className={classes.listItem}>\n      <ListItemIcon>\n        <ManageAccountsIcon />\n      </ListItemIcon>\n      <ListItemText primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.USER_MANAGEMENT\")} />\n    </ListItem>\n  );\n};\nexport default Managements;\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport AdminPanelSettingsIcon from \"@mui/icons-material/AdminPanelSettings\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n  root: {\n    margin: \"0\",\n  },\n  listItem: {\n    padding: \"0px\",\n    marginTop: \"0%\",\n    marginLeft: \"25px\",\n    marginBottom: \"0%\",\n  },\n});\n\nexport const ManagementRole = () => {\n  const { t } = useTranslation();\n  const classes = useStyles();\n  return (\n    <ListItem className={classes.listItem}>\n      <ListItemIcon>\n        <AdminPanelSettingsIcon />\n      </ListItemIcon>\n      <ListItemText primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.ROL_MANAGEMENT\")}/>\n    </ListItem>\n  );\n};\nexport default ManagementRole;\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { useQuery } from \"@apollo/client\";\nimport PeopleIcon from \"@material-ui/icons/People\";\nimport DashboardIcon from \"@mui/icons-material/Dashboard\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n  root: {\n    margin: \"0\",\n  },\n  listItem: {\n    padding: \"0px\",\n    marginTop: \"0%\",\n    marginLeft: \"25px\",\n    marginBottom: \"0%\",\n  },\n});\n\nexport const ManagementProject = () => {\n  const { t } = useTranslation();\n  const classes = useStyles();\n  return (\n    <ListItem className={classes.listItem}>\n      <ListItemIcon>\n        <DashboardIcon />\n      </ListItemIcon>\n      <ListItemText\n        primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.PROJECT_MANAGEMENT\")}\n      />\n    </ListItem>\n  );\n};\nexport default ManagementProject;\n","import React, { useContext } from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { Link } from \"react-router-dom\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport Collapse from \"@material-ui/core/Collapse\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\n\n//components\nimport { DeviceManagement } from \"../deviceManagement/DeviceManagement\";\nimport Management from \"../userManagement/managements\";\nimport ManagementRole from \"../roleManager/managementRole\";\nimport ManagementProjets from \"../projectsManagements/managementProject\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n  root: {\n    margin: \"0\",\n  },\n  listItem: {\n    padding: \"0px\",\n    marginTop: \"0%\",\n    marginLeft: \"0px\",\n    marginBottom: \"0%\",\n  },\n});\n\nconst Settings = () => {\n  const { t } = useTranslation();\n\n  const [open, setOpen] = React.useState(false);\n  const { permissionsRoleUser } = useContext(AuthContext);\n  const classes = useStyles();\n\n  const handleClick = () => {\n    setOpen(!open);\n  };\n  const handleRemove = () => {\n    localStorage.removeItem(\"id\");\n  };\n\n  return (\n    <div>\n      {permissionsRoleUser?.permissionsRole?.config ? (\n        <>\n          <ListItem button onClick={handleClick}>\n            <ListItemIcon>\n              <SettingsIcon />\n            </ListItemIcon>\n            <ListItemText\n              className=\"nameText\"\n              primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.SETTINGS\")}\n            />\n            {open ? <ExpandLess /> : <ExpandMore />}\n          </ListItem>\n          {permissionsRoleUser?.permissionsRole?.GesUser ? (\n            <Collapse in={open} timeout=\"auto\" unmountOnExit>\n              <List component=\"div\" className={classes.listItem}>\n                <Link to={\"/app/usersmanagements\"} className=\"_sidebar_item\">\n                  <ListItem\n                    button\n                    onClick={handleRemove}\n                    className={`${\n                      window.location.pathname === \"/app/usersmanagements\"\n                        ? \"__on_item\"\n                        : \"__off_item\"\n                    }`}\n                  >\n                    <Management />\n                  </ListItem>\n                </Link>\n              </List>\n            </Collapse>\n          ) : null}\n\n          {permissionsRoleUser?.permissionsRole?.GesProject ? (\n            <Collapse in={open} timeout=\"auto\" unmountOnExit>\n              <List component=\"div\" className={classes.listItem}>\n                <Link to={\"/app/projectmanagement\"} className=\"_sidebar_item\">\n                  <ListItem\n                    button\n                    onClick={handleRemove}\n                    className={`${\n                      window.location.pathname === \"/app/projectmanagement\"\n                        ? \"__on_item\"\n                        : \"__off_item\"\n                    }`}\n                  >\n                    <ManagementProjets />\n                  </ListItem>\n                </Link>\n              </List>\n            </Collapse>\n          ) : null}\n\n          {permissionsRoleUser?.permissionsRole?.GesRol ? (\n            <Collapse in={open} timeout=\"auto\" unmountOnExit>\n              <List component=\"div\" className={classes.listItem}>\n                <Link to={\"/app/rolemanager\"} className=\"_sidebar_item\">\n                  <ListItem\n                    button\n                    onClick={handleRemove}\n                    className={`${\n                      window.location.pathname === \"/app/rolemanager\"\n                        ? \"__on_item\"\n                        : \"__off_item\"\n                    }`}\n                  >\n                    <ManagementRole />\n                  </ListItem>\n                </Link>\n              </List>\n            </Collapse>\n          ) : null}\n\n          {permissionsRoleUser?.permissionsRole?.GesDisp ? (\n            <Collapse in={open} timeout=\"auto\" unmountOnExit>\n              <List component=\"div\" className={classes.listItem}>\n                <Link to={\"/app/devicesmanagement\"} className=\"_sidebar_item\">\n                  <ListItem\n                    button\n                    onClick={handleRemove}\n                    className={`${\n                      window.location.pathname === \"/app/devicesmanagement\"\n                        ? \"__on_item\"\n                        : \"__off_item\"\n                    }`}\n                  >\n                    <DeviceManagement />\n                  </ListItem>\n                </Link>\n              </List>\n            </Collapse>\n          ) : null}\n        </>\n      ) : null}\n    </div>\n  );\n};\nexport default Settings;\n","//import\nimport { useLocation } from \"react-router-dom\";\n/**   */\n//Constants\nconst DAYS = {\n  Mon: \"Lun\",\n  Tue: \"Mar\",\n  Wed: \"Mie\",\n  Thu: \"Jue\",\n  Fri: \"Vie\",\n  Sat: \"Sab\",\n  Sun: \"Dom\",\n};\n\nconst MONTHS = {\n  Jan: \"Ene\",\n  Feb: \"Feb\",\n  Mar: \"Mar\",\n  Apr: \"Abr\",\n  May: \"May\",\n  Jun: \"Jun\",\n  Jul: \"Jul\",\n  Aug: \"Ago\",\n  Sep: \"Sep\",\n  Oct: \"Oct\",\n  Nov: \"Nov\",\n  Dec: \"Dic\",\n};\n\nexport const MONTHS_NUMBER = {\n  1: \"Ene\",\n  2: \"Feb\",\n  3: \"Mar\",\n  4: \"Abr\",\n  5: \"May\",\n  6: \"Jun\",\n  7: \"Jul\",\n  8: \"Ago\",\n  9: \"Sep\",\n  10: \"Oct\",\n  11: \"Nov\",\n  12: \"Dic\",\n};\n\nexport const rename_area = (name) => {\n  return `${name.replace(/Habitacion|Habitación|Hab/g, \"\")}`;\n};\n\nexport const last_conection = (status, t) => {\n  return !status ? t(\"VIEW_CONTROLLERS.OFFLINE\") : t(\"VIEW_CONTROLLERS.ONLINE\");\n};\n\nexport const change_status_area = (statu, pluggin) => {\n  const status_motel = {\n    0: \"libre_motel_plugin\",\n    25: \"sucia_motel_plugin\",\n    50: \"vendida_motel_plugin\",\n    75: \"aseo_motel_plugin\",\n    100: \"bloqueada_motel_plugin\",\n    125: \"reservada_motel_plugin\",\n  };\n  const status_pluggin_motel = status_motel[pluggin?.variables.Estado];\n  if (Boolean(pluggin)) return status_pluggin_motel ?? \"__status_null_area\";\n  if (statu == \"Libre\") {\n    return \"__status_libre_area\";\n  } else if (statu == \"Ocupado\") {\n    return \"__status_ocupado_area\";\n  } else {\n    return \"__status_null_area\";\n  }\n};\n\nexport const change_color_title_plugin = (pluggin) => {\n  if (!Boolean(pluggin)) return \"color_standar_pluggin\";\n  const status_pluggin_motel = pluggin?.variables.Estado;\n  if (status_pluggin_motel == \"0\") {\n    return \"color_title_pluggin\";\n  } else {\n    return \"color_standar_pluggin\";\n  }\n};\n\nexport const calc_controler_on_off = (controller_on, controller_off) => {\n  return (100 - (controller_off / controller_on) * 100) | 0;\n};\n\nexport const color_status_project = (on, off) => {\n  const percent = 100 - (off / on) * 100;\n  if (percent == 0 || !percent) return \"color_percent_0\";\n  else if (percent > 0 && percent <= 25) return \"color_percent_25\";\n  else if (percent > 25 && percent <= 50) return \"color_percent_50\";\n  else if (percent > 50 && percent <= 75) return \"color_percent_75\";\n  else if (percent > 75 && percent <= 100) return \"color_percent_100\";\n};\n\nexport const weather_convert = (temp) => {\n  return (temp - 273.15).toFixed(1);\n};\n\nexport const getTimeGlobal = (utc) => {\n  const handleminutes = (minute) => (minute < 10 ? `0${minute}` : minute);\n  const handleAmAndPm = (hour, minute) => {\n    if (hour >= 13) {\n      return `${hour - 12}:${handleminutes(minute)} PM`;\n    } else if (hour == 12) {\n      return `${hour}:${handleminutes(minute)} PM`;\n    } else if (hour == 0) {\n      return `${hour + 12}:${handleminutes(minute)} AM`;\n    } else {\n      return `${hour}:${handleminutes(minute)} AM`;\n    }\n  };\n\n  const handleMeridian = (time) => {\n    const getTime = time.split(\":\");\n    const hours = Number(getTime[0]);\n    const minutes = Number(getTime[1]);\n    if (hours >= 24) {\n      const new_hours = hours - 24;\n      return handleAmAndPm(new_hours, minutes);\n    } else {\n      return handleAmAndPm(hours, minutes);\n    }\n  };\n\n  const handleHoursAndMinutes = (time) => {\n    const getTime = time.split(\":\");\n    const hours = Number(getTime[0]);\n    const minutes = Number(getTime[1]);\n    if (minutes >= 60) {\n      const new_minutes = minutes - 60;\n      const new_hours = hours + 1;\n      return `${new_hours}:${new_minutes}`;\n    } else {\n      return `${hours}:${minutes}`;\n    }\n  };\n\n  const handleTimeWithFloat = (time_global, utc) => {\n    const hours = time_global.substring(17, 19);\n    const minutes = time_global.substring(20, 22);\n    if (utc > 0) {\n      const part_int_plus = Math.floor(utc);\n      const new_hours = Number(hours) + part_int_plus;\n      const new_minutes = Number(minutes) + 30;\n      return `${new_hours}:${new_minutes}`;\n    } else {\n      const part_int_neg = Math.ceil(utc);\n      if (minutes < 31) {\n        const new_hours = Number(hours) + part_int_neg - 1;\n        const new_minutes = Number(minutes) + 30;\n        return `${new_hours}:${new_minutes}`;\n      } else {\n        const new_hours = Number(hours) + part_int_neg;\n        const new_minutes = Number(minutes) - 30;\n        return `${new_hours}:${new_minutes}`;\n      }\n    }\n  };\n\n  // If float or not\n  if (utc) {\n    const time_global = new Date().toUTCString();\n    if (utc % 1 != 0) {\n      return handleMeridian(\n        handleHoursAndMinutes(handleTimeWithFloat(time_global, utc))\n      );\n    } else {\n      const hours = time_global.substring(17, 19);\n      const minutes = time_global.substring(20, 22);\n      const time = `${(hours == 0 ? 24 : Number(hours) + 24) + utc}:${minutes}`;\n      return handleMeridian(handleHoursAndMinutes(time));\n    }\n  } else {\n    return `00:00`;\n  }\n};\n\nexport const handleSortAlphabet = (data) => {\n  if (data.length == 0)\n    return [JSON.parse(localStorage.getItem(\"project_selected\"))];\n  const new_array = [];\n  const names = data.map((i) => i.name).sort();\n  names.map((j) => {\n    const x = data.filter((i) => i.name == j);\n    new_array.push(x[0]);\n  });\n  return new_array;\n};\n\nexport const data_fake = (data) => {\n  return data;\n};\n\nexport const sum_of_the_kwh = (data) => {\n  return data.map((i) => Number(i.y)).reduce((a, b) => a + b, 0);\n};\n\nexport const date_of_the_kwh = (dt, date_range) => {\n  if (date_range.length > 1) {\n    const aux = new Date(dt);\n    return `${aux.getDate() + 1} ${\n      MONTHS_NUMBER[aux.getMonth() + 1]\n    } ${aux.getFullYear()}`;\n  } else {\n    return new Date(Number(dt)).toString().substring(16, 24);\n  }\n};\n\nexport const total_of_the_kwh = (data) => {\n  return data\n    ?.map((i) => i?.data?.map((i) => i?.y)?.reduce((a, b) => a + b, 0))\n    ?.reduce((a, b) => a + b, 0);\n};\n\nexport const calc_device_fails = (data) => {\n  return data?.filter((i) => i.visible).length;\n};\n\nexport const devices_fails = (data) => {\n  return data.filter((i) => i?.variables?.CommFailure == \"1\" && i?.visible)\n    .length;\n};\n\nexport const device_all = (device) => {\n  return device.filter((i) => i.visible).length;\n};\n\nexport const areas_with_device_fails = (data) => {\n  return data?.Device?.filter(\n    (i) => i.variables.CommFailure == \"1\" && i.visible\n  ).length;\n};\n\n// Count controllers offline\nexport const controller_err = (controller) => {\n  return controller.filter((item) => !item.online).length;\n};\n\n// Count rooms offline\nexport const room_err = (room) => {\n  return room.filter((item) => !item.Controller.online).length;\n};\n\nexport const room_all = (room) => {\n  return room.filter((i) => i.visible).length;\n};\n\n// Count devices offline\nexport const device_err = (device) => {\n  return device.filter(\n    (i) =>\n      i.variables != null &&\n      i.variables.CommFailure != null &&\n      i.variables.CommFailure != undefined &&\n      i.variables.CommFailure == \"1\" &&\n      i.visible\n  ).length;\n};\n\nexport const project_card_info = (data) => {\n  let {\n    img,\n    name,\n    time_zone,\n    City,\n    Controller,\n    Device,\n    Room,\n    id,\n    currency,\n    end_time,\n    kwh_cost,\n    prefix_currency,\n    start_time,\n  } = data[0];\n\n  return {\n    img,\n    name,\n    time_zone,\n    currency,\n    end_time,\n    kwh_cost,\n    prefix_currency,\n    city: City.name,\n    start_time,\n    country: City.State.Country.name,\n    id,\n    controllers_online: Controller.length,\n    controllers_offline: controller_err(Controller),\n    room_online: Room.length,\n    room_offline: room_err(Room),\n    device_error: device_err(Device),\n    device_error_free: Device.length,\n  };\n};\n\nexport const calc_percent_watts = (watts) => {\n  const value_max = 15000;\n  const watt = Number(watts);\n  return (watt * 100) / value_max;\n};\n\nexport const convert_time_calendarCustom = (date) => {\n  if (!date) {\n    const dateActual = new Date();\n    const day_week_start = dateActual.toString().substring(0, 3);\n    const key_month_start = dateActual.toString().substring(4, 7);\n    const day_start = dateActual.toString().substring(8, 10);\n    const year_start = dateActual.toString().substring(11, 15);\n    return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n  }\n  const day_week_start = date.toString().substring(0, 3);\n  const key_month_start = date.toString().substring(4, 7);\n  const day_start = date.toString().substring(8, 10);\n  const year_start = date.toString().substring(11, 15);\n  return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n};\n\nexport const handlerConvertTimeMeasurePhases = (dates) => {\n  const day_week_start = dates?.toString()?.substring(0, 3);\n  const key_month_start = dates?.toString()?.substring(4, 7);\n  const day_start = dates?.toString()?.substring(8, 10);\n  const year_start = dates?.toString()?.substring(11, 15);\n\n  return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n};\n\nexport const convert_time_measurergeneral = (dates) => {\n  const day_week_start = dates[0]?.startDate?.toString()?.substring(0, 3);\n  const key_month_start = dates[0]?.startDate?.toString()?.substring(4, 7);\n  const day_start = dates[0]?.startDate?.toString()?.substring(8, 10);\n  const year_start = dates[0]?.startDate?.toString()?.substring(11, 15);\n  const day_week_end = dates[0]?.endDate?.toString()?.substring(0, 3);\n  const key_month_end = dates[0]?.endDate?.toString()?.substring(4, 7);\n  const day_end = dates[0]?.endDate?.toString()?.substring(8, 10);\n  const year_end = dates[0]?.endDate?.toString()?.substring(11, 15);\n  const end_range =\n    new Date(dates[0]?.startDate?.toString())?.getTime() ==\n    new Date(dates[0]?.endDate?.toString())?.getTime()\n      ? \"\"\n      : `-  ${DAYS[day_week_end]} ${day_end}, ${MONTHS[key_month_end]} ${year_end}`;\n  return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start} ${end_range}`;\n};\n\nexport const depuration_data_measurergeneral_report = (data) => {\n  return data.filter((i) => i.data.length != 0);\n};\n\nexport const date_last = (dates) => {\n  const date = new Date();\n  const date_now = `${date.getFullYear()}-${\n    date.getMonth() + 1\n  }-${date.getDate()}`;\n  if (date_now === dates[dates.length - 1]) {\n    dates.pop();\n    return dates;\n  } else {\n    return dates;\n  }\n};\n\nexport const calc_date_range = (dateReport) => {\n  const date_start = new Date(\n    dateReport[0]?.startDate\n      ? dateReport[0]?.startDate.toString()?.substring(0, 16)\n      : dateReport?.toString()?.substring(0, 16)\n  );\n  const date_end = new Date(\n    dateReport[0]?.endDate\n      ? dateReport[0]?.endDate?.toString()?.substring(0, 16)\n      : dateReport?.toString()?.substring(0, 16)\n  );\n  const result = [];\n  while (date_end.getTime() > date_start.getTime()) {\n    result.push(\n      `${date_start.getFullYear()}-${\n        date_start.getMonth() + 1\n      }-${date_start.getDate()}`\n    );\n    date_start.setDate(date_start.getDate() + 1);\n  }\n  result.push(\n    `${date_end.getFullYear()}-${date_end.getMonth() + 1}-${date_end.getDate()}`\n  );\n  return result;\n};\n\nexport const handleTime = (state) => {\n  const start_time = `${state[0].startDate\n    .toString()\n    .substring(0, 16)} 00:00:00 GMT`;\n  const end_time = `${state[0].endDate\n    .toString()\n    .substring(0, 16)} 23:59:59 GMT`;\n  return {\n    start_time: new Date(start_time).getTime(),\n    end_time: new Date(end_time).getTime(),\n  };\n};\n\nexport const cacl_color_graph_measurer = (watts) => {\n  const value = parseInt((100 * parseFloat(watts)) / 15000);\n  if (value == NaN) return \"#3f9948\";\n  if (value > 0 && value <= 25) {\n    return \"#3f9948\";\n  } else if (value > 25 && value <= 50) {\n    return \"#FFAF0E\";\n  } else if (value > 50 && value <= 75) {\n    return \"#ff660e\";\n  } else if (value > 75 && value <= 90) {\n    return \"#bf2626\";\n  } else {\n    return \"#ff320e\";\n  }\n};\n\nexport const round_digits = (num) => {\n  return num?.toFixed(1);\n};\n\nexport const define_time_zone = (range, timezone) => {\n  return range.length > 1 ? 0 : -(timezone * 60);\n};\n\nexport const defice_toolTip_date = (range) => {\n  return range.length > 1 ? \"%e %b %Y\" : \"%H:%M:%S\";\n};\n\nexport const disabledNextDay = (date) => {\n  if (date.length) {\n    var date_start = new Date(date[0].startDate.toString().substring(0, 16));\n    var date_end = new Date(date[0].endDate.toString().substring(0, 16));\n  } else {\n    var date_start = new Date(date.toString().substring(0, 16));\n    var date_end = new Date(date.toString().substring(0, 16));\n  }\n  const dayNow = `${date_start.getFullYear()}-${\n    date_start.getMonth() + 1\n  }-${date_start.getDate()}`;\n  const dayEnd = `${date_end.getFullYear()}-${\n    date_end.getMonth() + 1\n  }-${date_end.getDate()}`;\n  const dayCompare = `${new Date().getFullYear()}-${\n    new Date().getMonth() + 1\n  }-${new Date().getDate()}`;\n  return dayNow != dayCompare && dayEnd != dayCompare;\n};\n\nexport const dateRangeButton = (date) => {\n  const dayCompare = `${new Date().getFullYear()}-${\n    new Date().getMonth() + 1\n  }-${new Date().getDate()}`;\n  const date_start = new Date(date.toString().substring(0, 16));\n  const dayNow = `${date_start.getFullYear()}-${\n    date_start.getMonth() + 1\n  }-${date_start.getDate()}`;\n  if (dayNow != dayCompare) {\n    return [dayNow];\n  } else {\n    return [];\n  }\n};\n\nexport const changeNamePluggin = (id, t) => {\n  if (id == 4) return \"Dormir\";\n  else return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\");\n};\n\nexport const nameFilterAreas = (filters, func, t) => {\n  if (filters.all)\n    return `${t(\n      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.ALL\"\n    )} (${func.all})`;\n  if (filters.any_status)\n    return `${t(\n      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.UNKNOW_STATUS\"\n    )} (${func.any_state})`;\n  if (filters.busy)\n    return `${t(\n      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.BUSY\"\n    )} (${func.busy})`;\n  if (filters.off_line)\n    return `${t(\n      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.OFFLINE\"\n    )} (${func.offline})`;\n  if (filters.on_line)\n    return `${t(\n      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.AVAILABLE\"\n    )} (${func.free})`;\n};\n\nexport const handleYaxisTempReport = (data) => {\n  if (data.length == 1 && data[0].name === \"ocupacion\") {\n    return {\n      title: {\n        text: \"Temperatura(C°) \",\n      },\n      min: 0,\n      max: 1,\n      visible: true,\n    };\n  } else {\n    return {\n      min: 0,\n      max: 60,\n      title: {\n        text: \"Temperatura(C°) \",\n      },\n    };\n  }\n};\n\nexport const calculatedMinParameter = (dateReport, timeZone) => {\n  let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  let param = dateReport?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n  return (\n    new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO\n  );\n};\n\nexport const calculatedMaxParameter = (dateReport, timeZone) => {\n  let day_time_end_zone =\n    dateReport?.toString()?.substring(0, 16) + \"23:59:59 GMT\" + timeZone;\n  return new Date(day_time_end_zone).getTime();\n};\n\nexport const roundTotalBy = (key) => {\n  if (typeof key != \"number\") {\n    const a = key.split(\"-\");\n    return `${Number(a[2])} ${MONTHS_NUMBER[Number(a[1])]} ${a[0]}`;\n  } else {\n    return new Date(Number(key)).toString().substring(16, 24);\n  }\n};\n\nexport const sumTotalBy = (data) => {\n  return data\n    .map((i) => i.y)\n    .reduce((a, b) => a + b)\n    .toFixed(1);\n};\n\nexport const formatDateLocal = (dt) => {\n  const aux = new Date(dt);\n  const month = MONTHS_NUMBER[aux.getMonth() + 1];\n  if (!month) {\n    return;\n  }\n  return `${aux.getDate()} ${month} ${aux.getFullYear()}`;\n};\n\nexport const changeColorIconBatteryLevel = (lv) => {\n  if (lv <= 100 && lv > 30) {\n    return \"color_battery_100\";\n  } else if (lv <= 30 && lv > 10) {\n    return \"color_battery_30-10\";\n  } else {\n    return \"color_battery_10-0\";\n  }\n};\n\nexport const getDataContry = async () => {\n  const count_sa = \"http://www.geonames.org/childrenJSON?geonameId=6255149\";\n  const count_na = \"http://www.geonames.org/childrenJSON?geonameId=6255150\";\n  const countries_sa = await fetch(count_sa);\n  const countries_na = await fetch(count_na);\n  const result_sa = await countries_sa.json();\n  const result_na = await countries_na.json();\n  const countries = result_na.geonames.concat(result_sa.geonames);\n  return countries;\n};\n\nexport const getStates = async (country) => {\n  const url = `http://www.geonames.org/childrenJSON?geonameId=${country}`;\n  const result = await fetch(url);\n  const department = await result.json();\n  return department;\n};\n\nexport const getCities = async (department) => {\n  const url = `http://www.geonames.org/childrenJSON?geonameId=${department}`;\n  const result = await fetch(url);\n  const city = await result.json();\n  return city;\n};\n\nexport const getUTC = async (lat, lng) => {\n  const url = `https://timezone.abstractapi.com/v1/current_time/?api_key=b75b7ed833ca43bfaf616f0938ccd86a&location=${lat},${lng}`;\n  const utf = await fetch(url);\n  const resultuft = await utf.json();\n  return resultuft;\n};\n\nexport const testdeviseFails = () => {\n  const names = [\n    \"sensor_de_movimiento\",\n    \"interruptor\",\n    \"termostato\",\n    \"sensor_puerta\",\n    \"bloqueo_de_puerta\",\n    \"medidor_de_energia\",\n  ];\n\n  const handleDevices = () => {\n    const x = [];\n    const randomNum = Number(Math.random() * 3).toFixed(0);\n    for (let index = 0; index <= randomNum; index++) {\n      const randomNamesDesc = Number(Math.random() * 5).toFixed(0);\n      const randomNamesDate = Number(Math.random() * 20).toFixed(0);\n      x.push({\n        alias: names[randomNamesDesc],\n        name: names[randomNamesDesc].replace(/_/g, \" \"),\n        date: Number(randomNamesDate),\n      });\n    }\n    return x;\n  };\n\n  const resutl = [];\n  for (let index = 0; index < 10; index++) {\n    const randomName = Number(Math.random() * 10000).toFixed(0);\n    resutl.push({\n      hab: Number(randomName),\n      devices: handleDevices(),\n    });\n  }\n  return resutl;\n};\n\nexport const convertDateInFailsDevices = (dt) => {\n  return formatDateLocal(Number(dt));\n};\n\nexport const statePluginMotelConvert = (state, t) => {\n  if (state === \"\" || state === \"-2\")\n    return {\n      bg: \"#FFFFFF\",\n      text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.NO_AVAILABLE\"),\n      border: \"#000000\",\n      color: \"#000000\",\n    };\n  const states = {\n    0: {\n      bg: \"#00FF00\",\n      text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.AVAILABLE\"),\n      border: \"#85A2AA\",\n      color: \"#000000\",\n    },\n    25: {\n      bg: \"#FF00FF\",\n      text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.DIRTY\"),\n      border: \"\",\n      color: \"#FFF\",\n    },\n    50: {\n      bg: \"#0000FF\",\n      text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.SOLD\"),\n      border: \"\",\n      color: \"#FFF\",\n    },\n    75: {\n      bg: \"#FF00FF\",\n      text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.CLEANING\"),\n      border: \"\",\n      color: \"#FFF\",\n    },\n    100: {\n      bg: \"#FF0000\",\n      text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BLOCKED\"),\n      border: \"\",\n      color: \"#FFF\",\n    },\n    125: {\n      bg: \"#00FFFF\",\n      text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BOOKED\"),\n      border: \"\",\n      color: \"#FFF\",\n    },\n  };\n\n  return states[Number(state)];\n};\n\nexport const timeConvertMacromedidor = () => {\n  const fechaHoy = new Date();\n  const year = fechaHoy.getFullYear().toString();\n  const dia = fechaHoy.getDate().toString();\n  const nDia = (fechaHoy.getDate() + 1).toString();\n  const mesActual = fechaHoy.getMonth() + 1;\n  const fechaI = `${year}-${mesActual}-${dia} 00:00:00`;\n  const fechaIF = `${year}-${mesActual}-${nDia} 00:01:00`;\n  const fI = Date.parse(fechaI);\n  const fIF = Date.parse(fechaIF);\n  const start_date = parseInt(fI.toString().substring(0, 10));\n  const end_date = start_date + 86460;\n  const end_date_new = start_date + 86399;\n  return {\n    startTime: start_date,\n    endTime: end_date,\n    year: parseInt(year),\n    endTimeNew: end_date_new,\n    month: mesActual,\n  };\n};\n\nexport const convertedTimeEditProject = () => {\n  const currentDate = new Date();\n  const year = currentDate.getFullYear().toString();\n  const day = currentDate.getDate().toString();\n  const currentMonth = currentDate.getMonth() + 1;\n  const dateI = `${year}-${currentMonth}-${day}`;\n  return dateI;\n};\n\nexport const actualDatezero = () => {\n  const fechaHoy = new Date();\n  const year = fechaHoy.getFullYear().toString();\n  const mesActual = fechaHoy.getMonth() + 1;\n  const dia = fechaHoy.getDate().toString();\n  const hora = fechaHoy.getHours();\n  const minute = fechaHoy.getMinutes();\n  const seg = fechaHoy.getSeconds();\n  const fechaI = `${year}-${mesActual}-${dia} ${hora}:${minute}:${seg}`;\n  const fI = Date.parse(fechaI);\n  const fit = parseInt(fI.toString().substring(0, 10));\n\n  return {\n    startTime: fit,\n    startTimetwo: fI,\n    endTime: fI - 3600000,\n    month: mesActual,\n    year: year,\n    actual: fI,\n  };\n};\n\nexport const statePluginMotel = (state, t) => {\n  const STATES = [\n    {\n      key: 0,\n      name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.AVAILABLE\"),\n      style: \"libre_motel_plugin\",\n    },\n    {\n      key: 25,\n      name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.DIRTY\"),\n      style: \"sucia_motel_plugin\",\n    },\n    {\n      key: 50,\n      name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.SOLD\"),\n      style: \"vendida_motel_plugin\",\n    },\n    {\n      key: 75,\n      name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.CLEANING\"),\n      style: \"aseo_motel_plugin\",\n    },\n    {\n      key: 100,\n      name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BLOCKED\"),\n      style: \"bloqueada_motel_plugin\",\n    },\n    {\n      key: 125,\n      name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BOOKED\"),\n      style: \"reservada_motel_plugin\",\n    },\n  ];\n  if (state == 25 || state == 75) {\n    return STATES.filter((i) => i.key != 75).filter((i) => i.key != 25);\n  }\n\n  return STATES.filter((i) => i.key != state).filter((i) => i.key != 75);\n};\n\nexport const statePluginbathroom = () => {\n  const STATES = [\n    { id_device: 26126, name: \"PAPEL\" },\n    { id_device: 26128, name: \"JABÓN\" },\n    { id_device: 26127, name: \"BAÑ0\" },\n  ];\n\n  return STATES;\n};\n\nexport const FindSerialPluginbathroom = (data) => {\n  if (\n    !data ||\n    !data.data ||\n    !data.data.Device ||\n    !data.data.Controller ||\n    !data.data.Controller.serial\n  ) {\n    return null;\n  }\n  let foundCategory = false;\n  for (let device of data.data.Device) {\n    if (\n      device.Category &&\n      device.Category.sub_category === 6 &&\n      device.Category.category === 600\n    ) {\n      foundCategory = true;\n      break;\n    }\n  }\n  if (!foundCategory) {\n    return null;\n  }\n  let statePlugin = data.data.Device.filter(\n    (device) =>\n      device.visible === true &&\n      device.name !== \"Plugin Baños\" &&\n      device.name !== \"Plugin Baños IBM\"\n  );\n\n  return {\n    serial: data.data.Controller.serial,\n    statePlugin: statePlugin,\n  };\n};\n\nexport const CheckStatusPluginBathroom = (dataArray) => {\n  if (!dataArray) {\n    return false;\n  }\n  return dataArray.some((device) => device.variables.Status === \"1\");\n};\n\nexport const filterByPluggin = (data) => {\n  const pluggin = data?.data?.Device?.find(\n    (i) =>\n      (i?.Category?.category == 600 &&\n        i?.visible &&\n        (i?.Category?.sub_category == 1 ||\n          i?.Category?.sub_category == 6 ||\n          i?.Category?.sub_category == 3 ||\n          i?.Category?.sub_category == 9)) ||\n      (i?.Category?.category == \"generic_io\" &&\n        i?.visible &&\n        i?.Category?.sub_category == \"generic_io\")\n  );\n\n  if (!pluggin) return \"__status_null_area\";\n  if (\n    (pluggin?.Category?.category == 600 ||\n      pluggin?.Category?.category == \"generic_io\") &&\n    pluggin?.visible &&\n    (pluggin?.Category?.sub_category == 1 ||\n      pluggin?.Category?.sub_category == \"generic_io\")\n  ) {\n    if (pluggin?.variables?.EstadoTexto == \"Libre\") {\n      return \"__status_libre_area\";\n    } else if (pluggin?.variables?.EstadoTexto == \"Ocupado\") {\n      return \"__status_ocupado_area\";\n    } else {\n      return \"__status_null_area\";\n    }\n  } else if (\n    pluggin.Category.category == 600 &&\n    pluggin.visible &&\n    (pluggin.Category.sub_category == 6 || pluggin.Category.sub_category == 3)\n  ) {\n    if (pluggin?.variables.Estado == \"\" || pluggin?.variables.Estado === \"-2\")\n      return \"sin_estado_motel_plugin\";\n    const status_motel = {\n      0: \"libre_motel_plugin\",\n      25: \"sucia_motel_plugin\",\n      50: \"vendida_motel_plugin\",\n      75: \"aseo_motel_plugin\",\n      100: \"bloqueada_motel_plugin\",\n      125: \"reservada_motel_plugin\",\n    };\n    return status_motel[pluggin?.variables.Estado];\n  }\n  if (\n    pluggin?.Category?.category == 600 &&\n    pluggin?.visible &&\n    pluggin?.Category?.sub_category == 9\n  ) {\n    if (pluggin?.variables?.EstadoTexto == \"Libre\") {\n      return \"__status_libre_area\";\n    } else if (pluggin?.variables?.EstadoTexto == \"Ocupado\") {\n      return \"__status_ocupado_area\";\n    } else {\n      return \"__status_null_area\";\n    }\n  }\n};\n\nexport function percentage_total(value) {\n  let result;\n  if (value) {\n    if (value?.length < 2) {\n      result = (parseInt(value) / 10) * 100;\n    } else if (value.length < 3) {\n      result = (parseInt(value) / 100) * 100;\n    } else if (value.length < 4) {\n      result = (parseInt(value) / 1000) * 100;\n    } else if (value.length < 5) {\n      result = (parseInt(value) / 10000) * 100;\n    } else if (value.length < 6) {\n      result = (parseInt(value) / 100000) * 100;\n    } else if (value.length < 7) {\n      result = (parseInt(value) / 1000000) * 100;\n    } else if (value.length < 8) {\n      result = (parseInt(value) / 10000000) * 100;\n    } else if (value.length < 9) {\n      result = (parseInt(value) / 100000000) * 100;\n    } else if (value.length < 10) {\n      result = (parseInt(value) / 1000000000) * 100;\n    }\n    return result;\n  } else {\n    return (result = 0);\n  }\n}\n\nexport const fncDatePerDay = (date = null) => {\n  if (!date) {\n    const equalNow = new Date().toString().substring(0, 16) + \"00:00:00 GMT\";\n    const equalDate =\n      new Date(date).toString().substring(0, 16) + \"00:00:00 GMT\";\n    const dateStartNow =\n      new Date().toString().substring(0, 16) + \"00:00:00 GMT\";\n    const dateEndNow = new Date().toString().substring(0, 16) + \"23:59:59 GMT\";\n    const start = new Date(dateStartNow).getTime();\n    const end = new Date(dateEndNow).getTime();\n    const equal = new Date(equalNow).getTime() != new Date(equalDate).getTime();\n    return {\n      start,\n      end,\n      equal,\n    };\n  } else {\n    const equalNow = new Date().toString().substring(0, 16) + \"00:00:00 GMT\";\n    const equalDate =\n      new Date(date).toString().substring(0, 16) + \"00:00:00 GMT\";\n    const dateStartNow =\n      new Date(date).toString().substring(0, 16) + \"00:00:00 GMT\";\n    const dateEndNow =\n      new Date(date).toString().substring(0, 16) + \"23:59:59 GMT\";\n    const start = new Date(dateStartNow).getTime();\n    const end = new Date(dateEndNow).getTime();\n    const equal = new Date(equalNow).getTime() != new Date(equalDate).getTime();\n    return {\n      start,\n      end,\n      equal,\n    };\n  }\n};\n\n/**\n * @param {string} localStorageKey - La clave del localStorage que se va a preservar.\n */\nexport const ClearLocalStorageExcept = (localStorageKey) => {\n  var valorAEvitar = localStorage.getItem(localStorageKey);\n  localStorage.clear();\n  localStorage.setItem(localStorageKey, valorAEvitar);\n};\n\nexport const ExtractTypeGateway = () => {\n  const location = useLocation();\n  if (location) {\n    const numbersplit = location.pathname.indexOf(\"-\");\n    const typeGateway = location.pathname.substring(numbersplit + 1);\n    return typeGateway;\n  }\n};\n","import gql from \"graphql-tag\";\r\n\r\nexport const GET_ALL_ROOMS_BY_PROJECT = gql`\r\n  query ($ProjectId: Int!, $id: Int) {\r\n    getMettersInProjets(ProjectId: $ProjectId)\r\n    getInfoMetersByProject(ProjectId: $ProjectId)\r\n    getProjectByIdHeader(ProjectId: $ProjectId)\r\n    getAllProjects(id: $id)\r\n    getAllRoomsByProject(project_id: $ProjectId) {\r\n      id\r\n      name\r\n      floor\r\n      status\r\n      alias\r\n      NewRoomId\r\n      visible\r\n      Device {\r\n        variables\r\n        visible\r\n        name\r\n        id\r\n        alias\r\n        Category {\r\n          id\r\n          name\r\n          category\r\n          sub_category\r\n        }\r\n      }\r\n      Controller {\r\n        id\r\n        serial\r\n        online\r\n        typeGateway\r\n      }\r\n    }\r\n  }\r\n`;\r\n\r\nexport const GET_NEW_ALL_ROOMS_BY_PROJECT = gql`\r\n  query ($ProjectId: Int!, $id: Int) {\r\n    getAllProjects(id: $id)\r\n    getProjectByIdHeader(ProjectId: $ProjectId)\r\n    getAllNewRoomsByProject(ProjectId: $ProjectId) {\r\n      New_Controller {\r\n        id\r\n        serial\r\n        typeGateway\r\n      }\r\n      name\r\n      floor\r\n      id\r\n      status\r\n      alias\r\n      visible\r\n      New_Devices {\r\n        id\r\n        name\r\n        alias\r\n        reachable\r\n        visible\r\n        New_Items {\r\n          id\r\n          item_id\r\n          value\r\n          enum\r\n          show\r\n        }\r\n        New_Category {\r\n          category\r\n          sub_category\r\n        }\r\n      }\r\n    }\r\n  }\r\n`;\r\n\r\nexport const GET_ALL_CONTROLLERS = gql`\r\n  query Query($projectId: Int) {\r\n    getAllControllers(ProjectId: $projectId)\r\n  }\r\n`;\r\n\r\nexport const VIRTUAL_CONTROLLER_CREATE_ROOM = gql`\r\n  mutation Mutation($data: [NewRoomsInput]) {\r\n    CreateNewRooms(data: $data)\r\n  }\r\n`;\r\n\r\nexport const UPDATE_CONTROLLER = gql`\r\n  mutation UpdateController(\r\n    $updateControllerId: Int!\r\n    $typeGateway: String!\r\n    $data: RequestController\r\n  ) {\r\n    UpdateController(\r\n      id: $updateControllerId\r\n      typeGateway: $typeGateway\r\n      data: $data\r\n    )\r\n  }\r\n`;\r\n\r\nexport const UPDATE_ROOM = gql`\r\n  mutation UpdateRoom(\r\n    $updateRoomId: Int!\r\n    $typeGateway: String!\r\n    $data: RoomRequest\r\n  ) {\r\n    UpdateRoom(id: $updateRoomId, typeGateway: $typeGateway, data: $data) {\r\n      id\r\n      name\r\n      status\r\n      alias\r\n    }\r\n  }\r\n`;\r\n\r\nexport const UPDATE_DEVICES = gql`\r\n  mutation UpdateDevice(\r\n    $updateDeviceId: Int!\r\n    $typeGateway: String!\r\n    $name: String\r\n    $alias: String\r\n    $visible: Boolean\r\n    $reportEnergy: Boolean\r\n    $reportOccupation: Boolean\r\n    $reportTemp: Boolean\r\n    $watts: String\r\n    $setpointTemp: String\r\n    $roomId: Int\r\n    $newRoomId: String\r\n  ) {\r\n    UpdateDevice(\r\n      id: $updateDeviceId\r\n      typeGateway: $typeGateway\r\n      name: $name\r\n      alias: $alias\r\n      visible: $visible\r\n      report_energy: $reportEnergy\r\n      report_occupation: $reportOccupation\r\n      report_temp: $reportTemp\r\n      watts: $watts\r\n      setpoint_temp: $setpointTemp\r\n      RoomId: $roomId\r\n      NewRoomId: $newRoomId\r\n    ) {\r\n      alias\r\n      id\r\n      name\r\n      report_energy\r\n      physic_id\r\n      report_occupation\r\n      report_temp\r\n      setpoint_temp\r\n      version\r\n      visible\r\n      watts\r\n      watts_min\r\n      watts_off\r\n    }\r\n  }\r\n`;\r\n","import React, { useContext, useState } from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport DashboardIcon from \"@material-ui/icons/Dashboard\";\nimport HomeWorkIcon from \"@material-ui/icons/HomeWork\";\nimport ControlCameraIcon from \"@material-ui/icons/ControlCamera\";\nimport SpeedIcon from \"@material-ui/icons/Speed\";\nimport Collapse from \"@material-ui/core/Collapse\";\nimport { handleSortAlphabet } from \"../../utils/helpers\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//query and mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_ALL_ROOMS_BY_PROJECT } from \"../../controllers/roomControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const ListItemsAreas = () => {\n  const { t } = useTranslation();\n\n  const { project, projects, permissionsRoleUser } = useContext(AuthContext);\n  const [openProjects, setOpenProjects] = React.useState(false);\n  const project__id = Number(localStorage.getItem(\"id\"));\n\n  const { data, loading, error } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n    variables: { ProjectId: project__id, id: project__id },\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: false,\n  });\n\n  const listMacromeasureOption =\n    data?.getMettersInProjets[0]?.Metters.length > 0 ||\n    data?.getInfoMetersByProject.length > 0;\n\n  const change_project_id = (id) => {\n    localStorage.setItem(\"id\", id);\n  };\n  let probando = localStorage.getItem(\"id\");\n  let location = useLocation();\n  const imgProject = localStorage.getItem(\"imgProject\");\n  return (\n    <>\n      {permissionsRoleUser?.permissionsRole?.proy ? (\n        <div>\n          <Link to={\"/app/projects\"} className=\"_sidebar_item\">\n            <ListItem\n              button\n              onClick={() => {\n                setOpenProjects(!openProjects)\n                sessionStorage.removeItem(\"resultadoFinal\")\n                sessionStorage.removeItem(\"macrometerArgos\")\n              }}\n              className={`${\n                location.pathname === \"/app/projects\"\n                  ? \"__on_item\"\n                  : \"__off_item\"\n              }`}\n            >\n              {\" \"}\n              <ListItemIcon className=\"_dashboard_icon\">\n                <DashboardIcon />\n              </ListItemIcon>\n              <ListItemText\n                primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.PROJECTS\")}\n              />\n            </ListItem>\n          </Link>\n          {location.pathname !== \"/app/projects\" && probando !== null ? (\n            <div>\n              <Link to={\"/app/areas/\" + probando} className=\"_sidebar_item\">\n                <ListItem button onClick={() => change_project_id(probando)}>\n                  <ListItemIcon className=\"_listitem_icon\">\n                    <img src={imgProject} alt=\"Img\" width={50} height={50} />\n                  </ListItemIcon>\n                  <ListItemText\n                    primary={`${localStorage.getItem(\"nameProject\")}`}\n                    className=\"_listitem_name_projects\"\n                  />\n                </ListItem>\n              </Link>\n              <Collapse in={true} timeout=\"auto\" unmountOnExit>\n                <List component=\"div\" disablePadding>\n                  {permissionsRoleUser?.permissionsRole?.Area &&\n                  localStorage.getItem(\"id\") ? (\n                    <Link\n                      to={\"/app/areas/\" + probando}\n                      className=\"_sidebar_item\"\n                    >\n                      <ListItem\n                        button\n                        onClick={() => change_project_id(probando)}\n                        className={`${\n                          location.pathname === \"/app/areas/\" + probando\n                            ? \"__on_item\"\n                            : \"__off_item\"\n                        }`}\n                      >\n                        <ListItemIcon className=\"__icon_hab_and_control\">\n                          <HomeWorkIcon />\n                        </ListItemIcon>\n                        <ListItemText\n                          primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.AREAS\")}\n                          className=\"_sidebar_text\"\n                        />\n                      </ListItem>\n                    </Link>\n                  ) : null}\n                  {permissionsRoleUser?.permissionsRole?.Ctl ? (\n                    <Link\n                      to={\"/app/controllers/\" + probando}\n                      className=\"_sidebar_item\"\n                    >\n                      <ListItem\n                        button\n                        onClick={() => change_project_id(probando)}\n                        className={`${\n                          location.pathname === \"/app/controllers/\" + probando\n                            ? \"__on_item\"\n                            : \"__off_item\"\n                        }`}\n                      >\n                        <ListItemIcon className=\"__icon_hab_and_control\">\n                          <ControlCameraIcon />\n                        </ListItemIcon>\n                        <ListItemText\n                          primary={t(\n                            \"VIEW_PROJECT.COMPONENT_SIDEBAR.CONTROLLERS\"\n                          )}\n                        />\n                      </ListItem>\n                    </Link>\n                  ) : null}\n                  {permissionsRoleUser?.permissionsRole.Med ? (\n                    <Link\n                      to={\"/app/measurers/\" + probando}\n                      className=\"_sidebar_item\"\n                    >\n                      <ListItem\n                        button\n                        onClick={() => change_project_id(probando)}\n                        className={`${\n                          location.pathname === \"/app/measurers/\" + probando\n                            ? \"__on_item\"\n                            : \"__off_item\"\n                        }`}\n                      >\n                        <ListItemIcon className=\"__icon_hab_and_control\">\n                          <SpeedIcon />\n                        </ListItemIcon>\n                        <ListItemText\n                          primary={t(\n                            \"VIEW_PROJECT.COMPONENT_SIDEBAR.MEASURERS\"\n                          )}\n                        />\n                      </ListItem>\n                    </Link>\n                  ) : null}\n                </List>\n              </Collapse>\n            </div>\n          ) : (\n            <></>\n          )}\n        </div>\n      ) : null}\n    </>\n  );\n};\n","import React from \"react\";\nimport logo from \"../../assets/logo_lr.svg\";\nimport { Link } from \"react-router-dom\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport AdminPanelSettingsIcon from \"@mui/icons-material/AdminPanelSettings\";\n//components\nimport ListItems from \"../../components/listItems/listItems\";\nimport DirectAccess from \"../access/DirectAccess\";\nimport ListItemAdmin from \"../listItemsAdmin/listItemsAdmin\";\nimport Settings from \"../../components/settings/Settings\";\nimport { ListItemsAreas } from \"../listItems/ListItemsAreas\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst SideBar = ({ handleOpen }) => {\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"sidebar_container\">\n      <div className=\"sidebar_logo\">\n        <img className=\"sidebar_img_logo\" src={logo} alt=\"Horus\" />\n      </div>\n      <div>\n        {window.location.pathname !== \"/app/projects\" ? (\n          <DirectAccess />\n        ) : (\n          <></>\n        )}\n      </div>\n      <div className=\"sidebar_menu\">\n        <span className=\"__menu\">\n          {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.MENU\")}\n        </span>\n      </div>\n\n      <ListItemsAreas {...{ handleOpen }} />\n\n      <Settings />\n    </div>\n  );\n};\nexport default SideBar;\n","import React, {useEffect} from \"react\";\nimport \"@lottiefiles/lottie-player\";\n\nexport default function Loading() {\n\n  // useEffect(() => {\n  //   window.scroll({\n  //     top: 0,\n  //   });\n  // }, []);\n\n  return (\n    <div>\n      <lottie-player\n        style={{\n          marginRight: \"auto\",\n          marginLeft: \"auto\",\n          marginTop: \"250px\",\n          width: \"250px\"\n        }}\n        className=\"_logo\"\n        src=\"https://lottie.host/75ed1eab-8061-456e-aa4b-a8fec1db6dbb/DyHOsxKydD.json\"\n        background=\"transparent\"\n        speed=\"1\"\n        loop\n        autoplay\n      ></lottie-player>\n    </div>\n  );\n}\n","import gql from \"graphql-tag\";\n\nexport const GET_ROLE_PERMISSIONS = gql`\n  query getRoleAndPermission {\n    getAllRoles {\n      id\n      name\n      components\n      enabled\n    }\n  }\n`;\n\nexport const DELETE_ROLES = gql`\n  mutation DeleteRole($id: [Int!]) {\n    DeleteRole(id: $id)\n  }\n`;\n\nexport const CREATE_ROLE_PERMISSION = gql`\n  mutation CreateRoleAndPerm($nameRole: String!, $components: [JSON]) {\n    CreateRoleAndPermission(nameRole: $nameRole, components: $components)\n  }\n`;\n\nexport const EDIT_ROLE_PERMISSION = gql`\n  mutation updateRoleAndPermission(\n    $name: String!\n    $id: Int!\n    $components: [JSON]\n    $enabled: Boolean\n  ) {\n    updateRoleAndPermission(\n      name: $name\n      id: $id\n      enabled: $enabled\n      components: $components\n    )\n  }\n`;\n\nexport const DISABLE_ROLE_PERMISSION = gql`\n  mutation updateRoleAndPermission($id: Int!, $enabled: Boolean) {\n    updateRoleAndPermission(id: $id, enabled: $enabled)\n  }\n`;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Switch from \"@mui/material/Switch\";\nimport { alpha, styled } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n  positions: {\n    alignItems: \"center\",\n    textAlign: \"center\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n  },\n}));\n\nexport const BlueSkySwitch = styled(Switch)(({ theme }) => ({\n  \"& .MuiSwitch-switchBase.Mui-checked\": {\n    color: \"#6fa8dc\",\n    \"&:hover\": {\n      backgroundColor: alpha(\"#6fa8dc\", theme.palette.action.hoverOpacity),\n    },\n  },\n  \"& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track\": {\n    backgroundColor: \"#6fa8dc\",\n  },\n}));\n\nexport default function GestionPermissions({ data, state, handleChange }) {\n  const { permissionsRole } = useContext(AuthContext);\n  const classes = useStyles();\n\n  return (\n    <div className={classes.positions}>\n      {data.label}\n      <BlueSkySwitch\n        onClick={() => handleChange(data.name)} /* Switches hijos de configuración */\n        checked={permissionsRole[data.name]}\n      >\n        {\" \"}\n      </BlueSkySwitch>\n    </div>\n  );\n}\n","import React, { useContext } from \"react\";\nimport Switch from \"@mui/material/Switch\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Tooltip } from \"@material-ui/core\";\nimport { Typography } from \"@mui/material\";\nimport { BlueSkySwitch } from \"./GestionPermissions\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nconst useStyles = makeStyles((teme) => ({}));\n\nexport default function ComponentsProject({ data, state, handleChange }) {\n  const classes = useStyles();\n\n  const {\n    permissionsRole,\n    setPermissionsRoles,\n    permissionsCheck,\n    setPermissionsCheck,\n  } = useContext(AuthContext);\n\n  return (\n    <>\n      <Tooltip title={data.label}>\n        <div className=\"container_area\">\n          <Typography variant=\"inherit\" noWrap>\n            {data.label}\n          </Typography>\n          <BlueSkySwitch\n            onClick={() => handleChange(data.name)} /*Switches hijos de Área*/\n            checked={permissionsRole[data.name]}\n          ></BlueSkySwitch>\n        </div>\n      </Tooltip>\n      {state[data.name] &&\n        data.action?.map((i, key) => (\n          <Tooltip title={i.label}>\n            <div className=\"container_area_actions\">\n              <Typography variant=\"inherit\" noWrap>\n                {i.label}\n              </Typography>\n\n              <BlueSkySwitch\n                onClick={() => handleChange(i.name)} /*Switches hijos de Área*/\n                checked={permissionsRole[i.name]}\n              ></BlueSkySwitch> \n            </div>\n          </Tooltip>\n        ))}\n    </>\n  );\n}\n","import React, { useContext, useEffect } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ComponentsProject from \"./ComponentsProject\";\nimport { Collapse, FormControlLabel, Switch } from \"@mui/material\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { Tooltip, Typography } from \"@material-ui/core\";\nimport { BlueSkySwitch } from \"./GestionPermissions\";\n\nexport default function ProjectPermissions({ data, handleChange, state }) {\n  const { permissionsRole } = useContext(AuthContext);\n\n  return (\n    <>\n      <div className=\"wrapped\">\n        <Tooltip title={data.label}> \n          <div className=\"column_positions\">\n            <Typography variant=\"inherit\" noWrap>\n              {data.label} \n            </Typography>\n\n            <Switch\n              onClick={() =>\n                handleChange(data.name)\n              } /* Switches padres de medidores y área */\n              checked={permissionsRole[data.name]}\n            ></Switch>\n          </div>\n        </Tooltip>\n        {state[data.name] &&\n          data.action?.map((m) => (\n            <div className=\"container_projects\">\n              <ComponentsProject\n                data={m}\n                handleChange={handleChange}\n                state={state}\n              />\n            </div>\n          ))}\n        {state[data.name] &&\n          data.component?.map((j) => (\n            <div className=\"container_projects\">\n              <ComponentsProject\n                data={j}\n                handleChange={handleChange}\n                state={state}\n              />\n            </div>\n          ))}\n      </div>\n    </>\n  );\n}\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Collapse, FormControlLabel, Switch } from \"@mui/material\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport GestionPermissions from \"./GestionPermissions\";\nimport ProjectPermissions from \"./ProjectPermissions\";\n\nconst BlueSwitch = styled(Switch)(({ theme }) => ({\n  \"& .MuiSwitch-switchBase.Mui-checked\": {\n    color: \"rgba(88, 84, 219, 0.93)\",\n    \"&:hover\": {\n      backgroundColor: alpha(\"rgba(88, 84, 219, 0.93)\", theme.palette.action.hoverOpacity),\n    },\n  },\n  \"& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track\": {\n    backgroundColor: \"rgba(88, 84, 219, 0.93)\",\n  },\n}));\n\nconst PrincipalConfigAndGestionRol = ({ label, name, action, component }) => {\n  const { permissionsRole, setPermissionsRoles } = useContext(AuthContext);\n\n  const handleChange = (name) => {\n    setPermissionsRoles({\n      ...permissionsRole,\n      [name]: !permissionsRole[name],\n    });\n  };\n\n  return (\n    <>\n      <div className=\"prueba\">\n        {label}\n        <BlueSwitch\n          onClick={() => handleChange(name)} /* Switches padre */\n          checked={permissionsRole[name]}\n        ></BlueSwitch>\n      </div>\n\n      <div className=\"container_gestion\">\n        {permissionsRole[name] &&\n          action?.map((i) => (\n            <GestionPermissions\n              data={i}\n              handleChange={handleChange}\n              state={permissionsRole}\n            />\n          ))}\n\n        {permissionsRole[name] &&\n          component?.map((j) => (\n            <ProjectPermissions\n              data={j}\n              handleChange={handleChange}\n              state={permissionsRole}\n            />\n          ))}\n      </div>\n    </>\n  );\n};\nexport default PrincipalConfigAndGestionRol;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport Switch from \"@mui/material/Switch\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Accordion from \"@mui/material/Accordion\";\nimport PrincipalConfigAndGestionRol from \"./PrincipalConfigAndGestionRol\";\nimport AccordionDetails from \"@mui/material/AccordionDetails\";\nimport AccordionSummary from \"@mui/material/AccordionSummary\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport FormGroup from \"@mui/material/FormGroup\";\nimport { FormControlLabel } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme) => ({\n  nameRole: {\n    display: \"flex\",\n    width: \"100%\",\n    marginBottom: \"10px\",\n  },\n  compPaper: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    margin: \"2em\",\n    width: \"100%\",\n  },\n  compPer: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    width: \"100%\",\n  },\n  accord: {\n    elevation: 5,\n    width: \"90%\",\n    borderRadius: \".4em\",\n  },\n  detailsRown: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n  },\n  cards: {\n    display: \"flex\",\n    backgroundColor: \"#EBEBEB\",\n    padding: \".5em\",\n    borderRadius: \".5em\",\n    margin: \"1em\",\n  },\n  title: {\n    display: \"flex\",\n    fontWeight: 700,\n    alignItems: \"center\",\n  },\n}));\n\nconst AccordionsPrincipal = ({\n  components,\n  name,\n  label,\n  action,\n  component,\n  data,\n}) => {\n  const classes = useStyles();\n  const [checkedArea, setCheckedArea] = React.useState(false);\n  const [expanded, setExpanded] = React.useState(true);\n  const { permissionsRole, setPermissionsRoles, createRole, editRole } =\n    useContext(AuthContext);\n  const handleChange = () => {\n    setExpanded(!expanded);\n  };\n\n  const handleChangePrueba = (e) => {\n    const value = e.target.checked;\n    setPermissionsRoles({\n      ...permissionsRole,\n      [name]: value,\n    });\n  };\n\n  return (\n    <>\n      <div className={classes.compPaper}>\n        <div className={classes.compPer}>\n          <Accordion\n            onChange={handleChange}\n            className={classes.accord}\n            expanded={true}\n          >\n            <AccordionSummary\n              color=\"succes\"\n              expandIcon={<ExpandMoreIcon />}\n              aria-controls=\"panel1bh-content\"\n              id=\"panel1bh-header\"\n              sx={{\n                backgroundColor: \"rgba(31, 137, 229, 0.2)\",\n                height: \"2em\",\n                marginBottom: \"0.5em\",\n                borderStartEndRadius: \"0.5em\",\n                borderStartStartRadius: \"0.5em\",\n              }}\n            >\n              <div className={classes.title}>\n                <Checkbox\n                  onChange={handleChangePrueba}\n                  name={name}\n                  checked={permissionsRole[data.name]}\n                ></Checkbox>\n                {label.toUpperCase()}\n              </div>\n            </AccordionSummary>\n\n            <AccordionDetails>\n              {permissionsRole[name] ? (\n                component.map((i, key) => (\n                  <div className={classes.cards}>\n                    <PrincipalConfigAndGestionRol key={key} {...i} state />\n                  </div>\n                ))\n              ) : (\n                <></>\n              )}\n            </AccordionDetails>\n          </Accordion>\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default AccordionsPrincipal;\n","import React, { useState, useContext } from \"react\";\nimport AccordionsPrincipal from \"./AccordionsPrincipal\";\nimport info from \"../../context/schema/permission.json\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport {\n  Dialog,\n  AppBar,\n  IconButton,\n  Typography,\n  TextField,\n  Container,\n} from \"@mui/material\";\nimport SaveOutlinedIcon from \"@mui/icons-material/SaveOutlined\";\nimport CloseOutlinedIcon from \"@mui/icons-material/CloseOutlined\";\nimport { stringify } from \"querystring\";\n\nconst useStyles = makeStyles((theme) => ({\n  containerIcons: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n  },\n  contentCreate: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignContent: \"center\",\n  },\n  nameRole: {\n    marginTop: \"7em\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  },\n  nameField: {\n    width: \"100%\",\n  },\n  center: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"100%\",\n  },\n}));\n\nexport const ModalRole = ({ refresh, data }) => {\n  const {\n    PermissionsConfig,\n    roleId,\n    permissionsRole,\n    setPermissionsRoles,\n    createOrEditRole,\n    nameRol,\n    setNameRol,\n    createRole,\n    setCreateRole,\n    setEnabledOrDisabledRole,\n    newPermissionsRole,\n    setNewPermissionsRole,\n  } = useContext(AuthContext);\n\n  const [open, setOpen] = useState(false);\n\n  const classes = useStyles();\n\n  // Función para manejar el cambio en el campo de entrada del TexField\n  const handleChange = (e) => {\n    const name = e.target.value.trim();\n    const regex = /[^a-zA-Z0-9]/g;\n    const filteredValue = name.replace(regex, \"\");\n    if (filteredValue !== name && name !== nameRol) {\n    } else {\n      setNameRol(name);\n    }\n  };\n\n  const handleChangeClose = () => {\n    setCreateRole(false);\n    setPermissionsRoles(PermissionsConfig);\n    setOpen(false);\n  };\n\n  const handleCloseAlert = () => {\n    setTimeout(function () {\n      setOpen(false);\n    }, 3000);\n  };\n\n  const handleModalAlertChangeRoles = () => {\n    setEnabledOrDisabledRole(true);\n  };\n\n  function Equeal() {\n    const newRole = data?.find((i) => i.id === roleId);\n    const nameNewRole = newRole?.name;\n\n    if (nameNewRole !== nameRol) {\n      return false;\n    } else {\n      const areEqual =\n        JSON.stringify(permissionsRole) === JSON.stringify(newPermissionsRole);\n      return areEqual;\n    }\n  }\n\n  return (\n    <>\n      <Dialog fullScreen open={createRole} onClose={() => handleChangeClose()}>\n        <AppBar sx={{ backgroundColor: \"#3f9948\", height: \"4em\" }}>\n          <div className={classes.containerIcons}>\n            <IconButton\n              sx={{\n                width: \"60px\",\n                height: \"60px\",\n                display: \"flex\",\n\n                justifyContent: \"center\",\n                color: \"#fff\",\n              }}\n            >\n              <CloseOutlinedIcon\n                onClick={() => handleChangeClose()}\n                sx={{ width: \"100%\" }}\n              />\n            </IconButton>\n            <Typography\n              className={classes.textTitle}\n              variant={\"h4\"}\n              sx={{ marginTop: \"0.3em\" }}\n            >\n              {createOrEditRole}\n            </Typography>\n\n            <IconButton\n              sx={{ width: \"60px\", height: \"60px\" }}\n              disabled={Equeal()}\n              onClick={handleModalAlertChangeRoles}\n            >\n              <SaveOutlinedIcon\n                className={\n                  Equeal() === true\n                    ? \"__color_button_disabled\"\n                    : \"__color_button_save\"\n                }\n                sx={{ width: \"100%\", height: \"80%\" }}\n                onClick={handleModalAlertChangeRoles}\n              />\n            </IconButton>\n          </div>\n        </AppBar>\n\n        <Container\n          maxWidth=\"lg\"\n          className={classes.contentCreate}\n          onClose={() => handleChangeClose()}\n        >\n          <div className={classes.nameRole}>\n            <TextField\n              className={classes.nameField}\n              color=\"success\"\n              variant=\"outlined\"\n              label=\"Nombre rol\"\n              name=\"nameRol\"\n              id=\"nameRol\"\n              onChange={(e) => handleChange(e)}\n              value={nameRol}\n            ></TextField>\n          </div>\n\n          <div className={classes.position}>\n            <h3>Accesos y permisos</h3>\n          </div>\n          {info.permissions?.map((item) => (\n            <AccordionsPrincipal key={item.id} {...item} data={item} />\n          ))}\n        </Container>\n      </Dialog>\n    </>\n  );\n};\n","import { Alert, AlertTitle, Snackbar } from \"@mui/material\";\n\nexport const AlertComponent = ({ open, message, styleMessage }) => {\n  return (\n    <>\n      <Snackbar open={open} autoHideDuration={open}>\n        <Alert severity={styleMessage}>\n          <AlertTitle> {message}</AlertTitle>\n        </Alert>\n      </Snackbar>\n    </>\n  );\n};\n","//React hooks\nimport React, { useContext, useState } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport CloseOutlinedIcon from \"@mui/icons-material/CloseOutlined\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport { useTheme } from \"@mui/material/styles\";\n// import { makeStyles } from \"@material-ui/core/styles\";\n// import { AppBar } from \"@mui/material\";\n//Apollo hooks and Queries\nimport {\n  DISABLE_ROLE_PERMISSION,\n  CREATE_ROLE_PERMISSION,\n  EDIT_ROLE_PERMISSION,\n} from \"../../controllers/rolesControllers\";\nimport { useMutation } from \"@apollo/client\";\n\n//Components\nimport { AlertComponent } from \"./AlertComponent\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n// const useStyles = makeStyles((theme) => ({\n//   title: {\n//     display: \"flex\",\n//     // backgroundColor: \"#DD9233\",\n//     height: \"3em\",\n//   },\n//   button: {\n//     backgroundColor: \"#fff\",\n//   },\n// }));\n\nexport const ModalAlertChangesRoles = ({\n  refresh,\n  data,\n  roleIdd,\n  openChangeRoleStatusFromToggle,\n  setOpenChangeRoleStatusFromToggle,\n  checkedToggle,\n  setCheckedToggle,\n}) => {\n  const { t } = useTranslation();\n  const customGreen = \"#acf6ac\";\n  const theme = createTheme({\n    palette: {\n      success: {\n        main: customGreen,\n      },\n    },\n  });\n  const [disabled] = useMutation(DISABLE_ROLE_PERMISSION);\n  const [creations] = useMutation(CREATE_ROLE_PERMISSION);\n  const [edits] = useMutation(EDIT_ROLE_PERMISSION);\n  const [open, setOpen] = useState(false);\n  const [message, setMessage] = useState();\n  const [styleMessage, setStyleMessage] = useState({});\n  // const classes = useStyles();\n  // const theme = useTheme();\n  const {\n    enabledOrDisabledRole,\n    setEnabledOrDisabledRole,\n    PermissionsConfig,\n    permissionsRole,\n    setPermissionsRoles,\n    createOrEditRole,\n    nameRol,\n    setNameRol,\n    createRole,\n    setCreateRole,\n    roleId,\n    roles,\n    roleState,\n    setRoleState,\n  } = useContext(AuthContext);\n\n  const handleCloseAlert = () => {\n    setTimeout(function () {\n      setOpen(false);\n    }, 3000);\n  };\n\n  function createEditAndDisabledRole() {\n    if (nameRol !== \"\" || null || undefined) {\n      if (\n        createOrEditRole ===\n        t(\n          \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CREATE_TOOLTIP\"\n        )\n      ) {\n        try {\n          creations({\n            variables: {\n              nameRole: nameRol,\n              components: [{ permissionsRole }],\n            },\n          })\n            .then((resul) => {\n              if (resul.data.CreateRoleAndPermission === false) {\n                setMessage(\n                  t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ERROR_CREATE_MESSAGE\"\n                  )\n                );\n                setStyleMessage(\"error\");\n                setOpen(true);\n              } else {\n                setMessage(\n                  t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.SUCCESS_CREATE_MESSAGE\"\n                  )\n                );\n                setStyleMessage(\"success\");\n                setOpen(true);\n                handleCloseAlert();\n                setTimeout(function () {\n                  setCreateRole(false);\n                  refresh();\n                }, 3000);\n              }\n            })\n            .catch((err) => {\n              setOpen(true);\n            });\n        } catch (err) {\n          setOpen(true);\n        }\n      }\n    }\n    if (\n      createOrEditRole ===\n      t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_EDIT_TOOLTIP\")\n    ) {\n      try {\n        edits({\n          variables: {\n            id: roleId,\n            name: nameRol,\n            components: [{ permissionsRole }],\n          },\n        })\n          .then((resul) => {\n            setMessage(\n              t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.SUCCESS_EDIT_MESSAGE\"\n              )\n            );\n            setStyleMessage(\"success\");\n            setOpen(true);\n            handleCloseAlert();\n            setTimeout(function () {\n              setEnabledOrDisabledRole(false);\n              setCreateRole(false);\n              refresh();\n            }, 3000);\n          })\n          .catch((err) => {\n            console.log(err);\n            setMessage(\n              t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ERROR_EDIT_MESSAGE\"\n              )\n            );\n            setStyleMessage(\"error\");\n            setOpen(true);\n          });\n      } catch (err) {\n        setOpen(true);\n      }\n    } else {\n      setMessage(\n        t(\n          \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.EMPTY_ROL_NAME_MESSAGE\"\n        )\n      );\n      setStyleMessage(\"error\");\n      setOpen(true);\n      handleCloseAlert();\n    }\n    try {\n      disabled({\n        variables: {\n          id: roleIdd,\n          enabled: Boolean(!checkedToggle),\n        },\n      })\n        .then((result) => {\n          setEnabledOrDisabledRole(false);\n          setCheckedToggle(!checkedToggle);\n          window.location.reload();\n          refresh();\n        })\n        .catch((err) => {\n          console.log(err);\n        });\n    } catch (err) {\n      console.log(err);\n    }\n  }\n\n  const handleClose = () => {\n    setEnabledOrDisabledRole(false);\n    setOpenChangeRoleStatusFromToggle(false);\n  };\n\n  return (\n    <>\n      <Dialog\n        open={enabledOrDisabledRole || openChangeRoleStatusFromToggle}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"35%\",\n            height: \"auto\",\n            [theme.breakpoints.down(\"md\")]: {\n              width: \"45%\",\n            },\n            [theme.breakpoints.down(\"sm\")]: {\n              width: \"90%\",\n            },\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            lineHeight: \"2.6\",\n            padding: \"5px 5px 5px 40px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"auto\",\n              fontWeight: \"bold\",\n            }}\n          >\n            {t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CHANGE_STATUS.TITLE\"\n            )}\n          </span>\n          <IconButton onClick={handleClose}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              gap: \"25px\",\n              width: \"90%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"18px\",\n              marginTop: \"20px\",\n            }}\n          >\n            <span style={{ textAlign: \"center\" }}>\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CHANGE_STATUS.DESCRIPTION\"\n              )}\n            </span>\n            <ThemeProvider theme={theme}>\n              <Button\n                sx={{\n                  width: \"100%\",\n                  padding: \"7px\",\n                  color: \"#000\",\n                  borderRadius: \"8px\",\n                  lineHeight: \"18px\",\n                }}\n                variant=\"contained\"\n                color=\"success\"\n                onClick={() => createEditAndDisabledRole()}\n              >\n                {t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CHANGE_STATUS.BUTTON_LABEL\"\n                )}\n              </Button>\n            </ThemeProvider>\n          </div>\n        </DialogContent>\n      </Dialog>\n\n      <AlertComponent\n        open={open}\n        message={message}\n        styleMessage={styleMessage}\n      />\n    </>\n  );\n};\n","import styled, { keyframes } from \"styled-components\";\n\nconst fadeIn = keyframes`\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n`;\n\nexport const WrapperSwitch = styled.div`\n  color: rgb(109, 105, 112);\n  display: flex;\n  align-items: center;\n  font-size: 1.2rem;\n  gap: 0.5rem;\n`;\nexport const StyledSwitch = styled.div`\n  .switch {\n    display: flex;\n    height: 24px;\n    position: relative;\n    width: 40px;\n  }\n\n  .switch input {\n    display: none;\n  }\n\n  .slider {\n    background-color: #ccc;\n    bottom: 0;\n    cursor: pointer;\n    left: 0;\n    position: absolute;\n    right: 0;\n    top: 0;\n    transition: 0.4s;\n  }\n\n  .slider:before {\n    background-color: #fff;\n    bottom: 3px;\n    content: \"\";\n    height: 18px;\n    left: 3px;\n    position: absolute;\n    transition: 0.4s;\n    width: 18px;\n  }\n\n  input:checked + .slider {\n    background-color: #66bb6a;\n  }\n\n  input:checked + .slider:before {\n    transform: translateX(16px);\n  }\n\n  .slider.round {\n    border-radius: 24px;\n  }\n\n  .slider.round:before {\n    border-radius: 50%;\n  }\n`;\n","import React from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\n//components\nimport { WrapperSwitch, StyledSwitch } from \"./style/ToggleSwitch.style\";\nimport { ModalAlertChangesRoles } from \"../../components/roleManager/ModalAlertChangesRoles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction RolesToggleSwitch({ currentIdRole, currentRoleStatus }) {\n  const { t } = useTranslation();\n  const [openChangeRoleStatusFromToggle, setOpenChangeRoleStatusFromToggle] =\n    React.useState(false);\n  const [roleId, setRoleId] = React.useState(\"\");\n  const [checkedToggle, setCheckedToggle] = React.useState(currentRoleStatus);\n\n  const handleOpenChangeRoleStatusModal = () => {\n    setRoleId(currentIdRole);\n    setOpenChangeRoleStatusFromToggle(true);\n  };\n\n  return (\n    <WrapperSwitch>\n      <StyledSwitch>\n        <Tooltip\n          title={\n            currentRoleStatus === true\n              ? t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ROLE_TOGGLE_TOOLTIP_DISABLE\"\n                )\n              : t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ROLE_TOGGLE_TOOLTIP_ENABLE\"\n                )\n          }\n        >\n          <label className=\"switch\">\n            <input\n              type=\"checkbox\"\n              onClick={handleOpenChangeRoleStatusModal}\n              checked={currentRoleStatus === true}\n            />\n            <div className=\"slider round\"></div>\n          </label>\n        </Tooltip>\n      </StyledSwitch>\n      <ModalAlertChangesRoles\n        openChangeRoleStatusFromToggle={openChangeRoleStatusFromToggle}\n        setOpenChangeRoleStatusFromToggle={setOpenChangeRoleStatusFromToggle}\n        checkedToggle={checkedToggle}\n        setCheckedToggle={setCheckedToggle}\n        roleIdd={roleId}\n      />\n    </WrapperSwitch>\n  );\n}\n\nexport default RolesToggleSwitch;\n","import { useEffect, useState, useContext, Fragment } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Fab } from \"@material-ui/core\";\nimport { ModalRole } from \"./ModalRole\";\nimport { ModalAlertChangesRoles } from \"./ModalAlertChangesRoles\";\nimport { Tooltip } from \"@mui/material\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport ModeEditIcon from \"@mui/icons-material/ModeEdit\";\nimport PersonOffOutlinedIcon from \"@mui/icons-material/PersonOffOutlined\";\nimport RolesToggleSwitch from \"../../../src/components/toggleSwitch/RolesToggleSwitch\";\nimport HowToRegIcon from \"@mui/icons-material/HowToReg\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const TableRoles = ({ data, refresh }) => {\n  const { t } = useTranslation();\n  const randomColor = () => {\n    let style = [\n      \"avatar_color1\",\n      \"avatar_color2\",\n      \"avatar_color3\",\n      \"avatar_color4\",\n    ];\n    let random = Math.floor(Math.random() * style.length);\n    let value = style[random];\n    return { styles: value };\n  };\n\n  function sleep(delay = 0) {\n    return new Promise((resolve) => {\n      setTimeout(resolve, delay);\n    });\n  }\n\n  const {\n    setRoleId,\n    setRoles,\n    roles,\n    setCreateRole,\n    setCreateOrEditRole,\n    setNameRol,\n    setPermissionsRoles,\n    setEnabledOrDisabledRole,\n    setRoleState,\n    setNewPermissionsRole,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n\n  const [selectedRole, setSelectedRole] = useState(null);\n  const [inputCleared, setInputCleared] = useState(false);\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [filterRole, setFilterRole] = useState();\n\n  const [open, setOpen] = useState(false);\n  const [options, setOptions] = useState([]);\n  const loadingText = open && options.length === 0;\n\n  const [currentRolesPage, setCurrentRolesPage] = useState(1);\n  const recordsPerPage = 10;\n  const firstIndex = (currentRolesPage - 1) * recordsPerPage;\n  const lastIndex = firstIndex + recordsPerPage;\n  const records = roles.slice(firstIndex, lastIndex);\n  const recordsIds = roles.map((roles) => roles.id);\n  const totalRolesPages = Math.ceil(roles.length / recordsPerPage);\n  const numbers = [...Array(totalRolesPages + 1).keys()].slice(1);\n\n  useEffect(() => {\n    if (data) {\n      const filteredRoles = data.filter((role) =>\n        role.name.toLowerCase().includes(searchTerm.toLowerCase())\n      );\n      setFilterRole(filteredRoles);\n      setCurrentRolesPage(1);\n    }\n  }, [data, searchTerm]);\n\n  const openCreation = () => {\n    setCreateRole(true);\n    setCreateOrEditRole(t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CREATE_TOOLTIP\"));\n    setNameRol(\"\");\n  };\n\n  const handleOpen = (id) => {\n    setCreateRole(true);\n    setCreateOrEditRole(\n      t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_EDIT_TOOLTIP\")\n    );\n    setRoleId(id);\n    const auxiliar = data.find((i) => i.id === id).components[0]\n      .permissionsRole;\n    setPermissionsRoles(auxiliar);\n    setNewPermissionsRole(auxiliar);\n    const prueba = data.find((i) => i.id === id);\n    setNameRol(prueba.name);\n  };\n\n  const handleEnabled = (id) => {\n    setEnabledOrDisabledRole(true);\n    setRoleId(id);\n    const aux = data.find((i) => i.id === id);\n    setRoleState(aux.enabled);\n  };\n\n  useEffect(() => {\n    let active = true;\n\n    if (!loadingText) {\n      return undefined;\n    }\n\n    (async () => {\n      await sleep(1e3);\n      if (active) {\n        const filteredOptions = data.filter((role) =>\n          role.name.toLowerCase().includes(searchTerm.toLowerCase())\n        );\n        setOptions([...filteredOptions]);\n      }\n    })();\n\n    return () => {\n      active = false;\n    };\n  }, [loadingText, searchTerm]);\n\n  useEffect(() => {\n    if (!open) {\n      setOptions([]);\n    }\n  }, [open]);\n\n  const preRolesPage = () => {\n    if (currentRolesPage !== 1) {\n      setCurrentRolesPage(currentRolesPage - 1);\n    }\n  };\n\n  const changeCurrentRolesPage = (id, name) => {\n    setCurrentRolesPage(id);\n    setSearchTerm(name);\n  };\n\n  const nextPage = () => {\n    if (currentRolesPage !== totalRolesPages) {\n      setCurrentRolesPage(currentRolesPage + 1);\n    }\n  };\n\n  const handleInputChange = (event) => {\n    const inputName = event.target.value;\n    const matchingRole = data.find(\n      (role) => role.name.toLowerCase() === inputName.toLowerCase()\n    );\n    if (matchingRole) {\n      setSelectedRole(matchingRole);\n    } else {\n      setSelectedRole(null);\n    }\n    setSearchTerm(inputName);\n    setInputCleared(false);\n  };\n\n  const filterRoled = records.filter((role) =>\n    role.name.toLowerCase().includes(searchTerm.toLowerCase())\n  );\n\n  const handleAutocompleteChange = (event, value) => {\n    if (value) {\n      setSelectedRole(value);\n      setSearchTerm(value.name);\n    } else {\n      setSelectedRole(null);\n      setSearchTerm(\"\");\n      setInputCleared(true);\n      setCurrentRolesPage(1);\n    }\n  };\n\n  return (\n    <>\n      {permissionsRoleUser?.permissionsRole?.GesRolVer ? (\n        <>\n          <div className=\"roles_datatable_container\">\n            <div className=\"roles_container_header\">\n              <div className=\"roles_title_container\">\n                <h1 className=\"table_title\">\n                  {t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.TABLE_TITLE\"\n                  )}\n                </h1>\n              </div>\n              <div className=\"container_button_and_filter\">\n                <div className=\"content_header_button\">\n                  {permissionsRoleUser?.permissionsRole?.GesRolCrear ? (\n                    <Tooltip\n                      title={t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ADD_ROLE_BUTTON_TOOLIP\"\n                      )}\n                    >\n                      <button className=\"button_agreger\" onClick={openCreation}>\n                        <i className=\"fas fa-plus\"></i>\n                      </button>\n                    </Tooltip>\n                  ) : null}\n                </div>\n\n                <div className=\"role_filter_container\">\n                  <Autocomplete\n                    id=\"role_filter\"\n                    value={selectedRole}\n                    inputValue={inputCleared ? \"\" : searchTerm}\n                    disableClearable={true}\n                    onChange={handleAutocompleteChange}\n                    open={open}\n                    onInput={handleInputChange}\n                    onOpen={() => {\n                      setOpen(true);\n                    }}\n                    onClose={() => {\n                      setOpen(false);\n                    }}\n                    isOptionEqualToValue={(option, value) =>\n                      option.name === value.name\n                    }\n                    getOptionLabel={(option) => option.name}\n                    options={options}\n                    loading={loadingText}\n                    renderInput={(params) => (\n                      <TextField\n                        {...params}\n                        label={t(\n                          \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.SEARCH_INPUT\"\n                        )}\n                        size=\"small\"\n                        value={searchTerm}\n                        InputProps={{\n                          ...params.InputProps,\n                          endAdornment: (\n                            <Fragment>\n                              {loadingText ? (\n                                <CircularProgress color=\"inherit\" size={20} />\n                              ) : null}\n                              {params.InputProps.endAdornment}\n                            </Fragment>\n                          ),\n                          sx: { borderRadius: 2 },\n                        }}\n                      />\n                    )}\n                  />\n                </div>\n              </div>\n            </div>\n            <div className=\"roles_container_table\">\n              <table className=\"roles_datatable\">\n                <thead className=\"roles_table_header\">\n                  <tr>\n                    <th>\n                      <h3 className=\"number_rol\">No:</h3>\n                    </th>\n                    <th>\n                      <h3 className=\"name_rol_title\">\n                        {t(\n                          \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ROLE\"\n                        )}\n                      </h3>\n                    </th>\n                    <th>\n                      <h3 className=\"state_rol\">\n                        {t(\n                          \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.STATUS\"\n                        )}\n                      </h3>\n                    </th>\n                    <th>\n                      <h3 className=\"action_rol\">\n                        {t(\n                          \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.EDIT\"\n                        )}\n                      </h3>\n                    </th>\n                  </tr>\n                </thead>\n                {filterRoled.map((item, key) => (\n                  <tbody className=\"roles_container_table_body\">\n                    <>\n                      <tr>\n                        <td className=\"container_number_rol\">{`${key + 1}`}</td>\n                        <td className=\"container_avatar_rol\">{item.name}</td>\n                        <td className=\"main_role_status_container\">\n                          <span\n                            className={`${\n                              item.enabled\n                                ? \"container_estado\"\n                                : \"container_state_inactive\"\n                            }`}\n                          >\n                            {String(\n                              item.enabled === false\n                                ? t(\n                                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.INACTIVE\"\n                                  )\n                                : t(\n                                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ACTIVE\"\n                                  )\n                            )}\n                          </span>\n                        </td>\n                        <td className=\"main_container_roles\">\n                          <div className=\"roles_container_acctions\">\n                            {permissionsRoleUser?.permissionsRole\n                              ?.GesRolEditar ? (\n                              <Tooltip\n                                title={t(\n                                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_EDIT_TOOLTIP\"\n                                )}\n                              >\n                                <ModeEditIcon\n                                  className=\"edit_button\"\n                                  onClick={() => handleOpen(item.id)}\n                                />\n                              </Tooltip>\n                            ) : null}\n\n                            {permissionsRoleUser?.permissionsRole?.GesRolDes ? (\n                              <RolesToggleSwitch\n                                currentIdRole={item.id}\n                                currentRoleStatus={item.enabled}\n                              />\n                            ) : null}\n                          </div>\n                        </td>\n                      </tr>\n                    </>\n                  </tbody>\n                ))}\n              </table>\n            </div>\n          </div>\n          <ModalRole refresh={refresh} data={data} />\n          <ModalAlertChangesRoles refresh={refresh} data={data} />\n        </>\n      ) : null}\n\n      <div className=\"roles_pagination\">\n        <Fab\n          size=\"small\"\n          aria-label=\"left\"\n          className=\"roles_pagination_button\"\n          onClick={preRolesPage}\n          disabled={currentRolesPage <= 1}\n        >\n          <ChevronLeftIcon />\n        </Fab>\n        <span>\n          {currentRolesPage} / {totalRolesPages}\n        </span>\n        <Fab\n          size=\"small\"\n          aria-label=\"right\"\n          className=\"roles_pagination_button\"\n          onClick={nextPage}\n          disabled={\n            currentRolesPage === totalRolesPages || totalRolesPages === 0\n          }\n        >\n          <ChevronRightIcon />\n        </Fab>\n      </div>\n    </>\n  );\n};\n","import React from \"react\";\nimport { useState, useEffect, useContext } from \"react\";\nimport { createTheme } from \"@material-ui/core/styles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst theme = createTheme({\n  breakpoints: {\n    values: {\n      xs: 0,\n      sm: 600,\n      md: 900,\n      lg: 1200,\n      xl: 1536,\n    },\n  },\n});\n\nfunction sleep(delay = 0) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, delay);\n  });\n}\n\nconst AutoComplete = (props) => {\n  const { dataFilter, enabled } = props;\n  const { setSelectedProject, setProjectIdStepper } = useContext(AuthContext);\n  const [options, setOptions] = React.useState([]);\n  const [open, setOpen] = useState(false);\n  const loadingText = open && options.length === 0;\n\n  useEffect(() => {\n    let active = true;\n\n    if (!loadingText) {\n      return undefined;\n    }\n\n    (async () => {\n      await sleep(1e3);\n\n      if (active) {\n        setOptions([...dataFilter]);\n      }\n    })();\n\n    return () => {\n      active = false;\n    };\n  }, [loadingText]);\n\n  useEffect(() => {\n    if (!open) {\n      setOptions([]);\n    }\n  }, [open]);\n\n  const handleInputChange = (event, value) => {\n    const inputSelection = value?.name;\n    const idSelection = value?.id;\n    if (inputSelection) {\n      setSelectedProject(inputSelection);\n      localStorage.setItem(\"inputSelection\", String(inputSelection));\n    } else {\n      setSelectedProject(null);\n      localStorage.setItem(\"inputSelection\", String(\"\"));\n    }\n    if (idSelection) {\n      setProjectIdStepper(idSelection);\n      localStorage.setItem(\"id\", idSelection);\n    } else {\n      setProjectIdStepper(null);\n      localStorage.setItem(\"id\", null);\n    }\n  };\n\n  return (\n    <>\n      <div className=\"filter_projects_container\">\n        <Autocomplete\n          id=\"filter\"\n          onChange={handleInputChange}\n          sx={{\n            m: 0,\n            width: 335,\n            [theme.breakpoints.down(\"md\")]: { width: 250 },\n            [theme.breakpoints.down(\"xs\")]: { width: 340 },\n          }}\n          disabled={enabled > 0 ? false : true}\n          open={open}\n          onOpen={() => {\n            setOpen(true);\n          }}\n          onClose={() => {\n            setOpen(false);\n          }}\n          isOptionEqualToValue={(option, value) => option.name === value.name}\n          getOptionLabel={(option) => option.name}\n          options={options}\n          loading={loadingText}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label={\"Proyectos\"}\n              size=\"small\"\n              InputProps={{\n                ...params.InputProps,\n                endAdornment: (\n                  <React.Fragment>\n                    {loadingText ? (\n                      <CircularProgress color=\"inherit\" size={20} />\n                    ) : null}\n                    {params.InputProps.endAdornment}\n                  </React.Fragment>\n                ),\n                sx: { borderRadius: 2 },\n              }}\n            />\n          )}\n        />\n      </div>\n    </>\n  );\n};\n\nexport default AutoComplete;\n","import React, { useContext, useState } from \"react\";\nimport { Tooltip } from \"@mui/material\";\nimport { useHistory } from \"react-router-dom\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\nconst AddingDeviceProject = (props) => {\n  const { enabled, openModal } = props;\n  const { setSelectedProject, setOpenNewMetersModal, setSelectedDevice } =\n    useContext(AuthContext);\n  const history = useHistory();\n\n  const handleNavegate = () => {\n    history.push(\"/app/stepperviewmacrometer/description\");\n    setSelectedProject(null);\n    setSelectedDevice(0);\n  };\n\n  const handleOpenAddNewMetersModal = () => {\n    setOpenNewMetersModal(true);\n  };\n\n  return (\n    <div className=\"add_device_button_container\">\n      <Tooltip title=\"Agregar Nuevo Dispositivo\">\n        <button\n          className=\"add_device_button_project\"\n          onClick={\n            openModal ? handleOpenAddNewMetersModal : () => handleNavegate()\n          }\n          disabled={enabled}\n        >\n          <i className=\"fas fa-plus\"></i>\n        </button>\n      </Tooltip>\n    </div>\n  );\n};\n\nexport default AddingDeviceProject;\n","import * as React from 'react';\n\nimport Slide from '@mui/material/Slide';\nimport { WarningAmberRounded } from '@mui/icons-material';\n\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nconst softGreen = '#67A46D';\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: softGreen,\n    },\n  },\n  breakpoints: {\n    values: {\n      xs: 0,\n      sm: 600,\n      md: 900,\n      lg: 1200,\n      xl: 1536,\n    },\n  },\n});\n\nconst Denied = () => {\n  return (\n    <div className=\"devices_datatable_container\">\n      <div className=\"devices_header_container\">\n        <div className=\"devices_title_container\"></div>\n      </div>\n\n      <div className=\"warnings_container\">\n        <div className=\"no_selected_filter\">\n          <WarningAmberRounded sx={{ height: '88px', width: '98.29px' }} />\n\n          <span>Usted no posee permisos para gestionar los dispositivos</span>\n          <div className=\"add_device_button\">\n            <ThemeProvider theme={theme}></ThemeProvider>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\nexport default Denied;\n","import styled from \"styled-components\";\nexport const LoginWrapper = styled.div`\n    width: 100%;\n    display: flex;\n    justify-content: center;\n    margin-top: 30px;\n`;\n\nexport const FisrtCardWrapper = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    height: 400px;\n    width: 930px;\n    background-color: #f5f3f3;\n    border-radius: 18px;\n`\nexport const TittleLogin = styled.h2`\nmargin-bottom: 0;\n`\nexport const Description = styled.p`\n    text-align: center;\n`\nexport const WrapperForm = styled.div`\n    display: flex;\n    flex-direction:column;\n    justify-content: center;\n    gap:20px;\n`\n","import gql from \"graphql-tag\";\n\nexport const GET_PROJECT_BY_USER = gql`\n  query {\n    getAllProjectsByUser \n  }\n`;","import React, { useState, useContext } from \"react\";\nimport {\n  LoginWrapper,\n  FisrtCardWrapper,\n  TittleLogin,\n  Description,\n  WrapperForm,\n} from \"./loginVrf.style\";\nimport Button from \"@mui/material/Button\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport TextField from \"@mui/material/TextField\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_PROJECT_BY_USER } from \"./controllerLogin\";\nimport { signUpVRF } from \"./helper\";\nimport { AuthContext } from \"../../../../../../context/AuthProvider\";\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction LoginVrf() {\n  const { tokenvrf, setTokenvrf } = useContext(AuthContext);\n  const [id, setId] = React.useState(\"\");\n  const [email, setEmail] = React.useState();\n  const [password, setPassword] = React.useState();\n  const [projects, setProjects] = React.useState([]);\n  const [loadingvrf, setLoadingvrf] = useState(false);\n  const [errorvrf, setErrorvrf] = useState(null);\n  const [result, setResult] = useState(null);\n  const [open, setOpen] = React.useState(false);\n  const [message, setMessage] = useState();\n  const [severityAlert, setSeverityAlert] = useState();\n  const { data, loading, error, refetch } = useQuery(GET_PROJECT_BY_USER, {\n    fetchPolicy: \"cache-and-network\",\n  });\n  React.useEffect(() => {\n    setProjects(data?.getAllProjectsByUser?.Projects);\n  }, [data]);\n\n  const handleChange = (event) => {\n    setId(event.target.value);\n  };\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n\n    setOpen(false);\n  };\n  const handleSignUpVRF = async () => {\n    setLoadingvrf(true);\n    setErrorvrf(null);\n    setResult(null);\n\n    const data = {\n      email: email,\n      password: password,\n      projectId: id,\n    };\n\n    try {\n      const response = await signUpVRF(data);\n      setResult(response);\n      localStorage.setItem(\"tokenvrf\", response.token);\n      localStorage.setItem(\"projectIdVRF\", id);\n      setTokenvrf(response.token);\n    } catch (error) {\n      setOpen(true);\n      setSeverityAlert(\"error\");\n      setErrorvrf(\"Error al realizar la petición\");\n      setMessage(\"Datos incorrectos\");\n      console.log(error);\n    } finally {\n      setLoadingvrf(false);\n    }\n  };\n\n  return (\n    <LoginWrapper>\n      <Snackbar open={open} autoHideDuration={4500} onClose={handleClose}>\n        <Alert severity={severityAlert}>{message}</Alert>\n      </Snackbar>\n      <FisrtCardWrapper>\n        <TittleLogin>Iniciar Sesion</TittleLogin>\n        <Description>\n          ingresa con tus datos <br></br>de la aplicacion IOC Controller\n        </Description>\n        <WrapperForm>\n          <TextField\n            onChange={(event) => setEmail(event.target.value)}\n            InputProps={{ sx: { borderRadius: 2 } }}\n            id=\"outlined-basic\"\n            label=\"Correo electronico\"\n            variant=\"outlined\"\n            size=\"small\"\n          />\n          <TextField\n            onChange={(event) => setPassword(event.target.value)}\n            InputProps={{ sx: { borderRadius: 2 } }}\n            id=\"outlined-basic\"\n            size=\"small\"\n            label=\"Contrasena\"\n            variant=\"outlined\"\n            type=\"password\"\n          />\n          <FormControl sx={{ width: \"-webkit-fill-available\" }} size=\"small\">\n            <InputLabel\n              id=\"demo-select-small-label\"\n              InputProps={{ sx: { borderRadius: 2 } }}\n            >\n              Proyectos\n            </InputLabel>\n            <Select\n              sx={{ borderRadius: 2 }}\n              labelId=\"demo-select-small-label\"\n              id=\"demo-select-small\"\n              value={id}\n              label=\"Proyectos\"\n              onChange={handleChange}\n            >\n              {projects?.map((item) => (\n                <MenuItem key={item.id} value={item.id}>\n                  {item?.name}\n                </MenuItem>\n              ))}\n            </Select>\n          </FormControl>\n          <Button\n            variant=\"contained\"\n            sx={{ borderRadius: 3, height: \"45px\" }}\n            onClick={handleSignUpVRF}\n          >\n            Inciar Sesion\n          </Button>\n        </WrapperForm>\n      </FisrtCardWrapper>\n    </LoginWrapper>\n  );\n}\n\nexport default LoginVrf;\n","// helpers/api.js\nexport async function signUpVRF(data) {\n    // const url = 'http://10.0.5.101:3301/api/v1/customerCoolMaster/sign-up';\n    const url = \"https://www.cool-master-vrf-test.horussmartenergyapp.com/api/v1/customerCoolMaster/sign-up\"\n    try {\n        const response = await fetch(url, {\n            method: 'POST',\n            headers: {\n                \"Authorization\": `Bearer ${localStorage.getItem(\"token\")}`,\n                'Content-Type': 'application/json',\n                \"apikey\": \"integrationVrf\"\n            },\n            body: JSON.stringify(data),\n        });\n\n        if (!response.ok) {\n            throw new Error(`HTTP error! Status: ${response.status}`);\n        }\n\n        const result = await response.json();\n        return result;\n    } catch (error) {\n        console.error('Error al realizar la petición:', error);\n        throw error;\n    }\n}\n","export default __webpack_public_path__ + \"static/media/vrf.97ad9ca5.png\";","import styled from \"styled-components\";\nexport const VRFWrapper = styled.div`\n    width: 95%;\n    display: flex;\n    flex-direction: column;\n    justify-self: center;\n    padding: 1rem;\n    border-radius: 20px;\n    margin-top: 30px;\n    background-color: #f5f3f3;\n    justify-content: center;\n    margin-bottom: 30px;\n\n`;\nexport const Header = styled.div`\n    margin-top: 20px;\n    width: 95%;\n    display: flex;\n\n`\nexport const IconWrapper = styled.div`\n    height: 200px;\n    width: 200px;\n    border-radius: 50%;\n    border: solid 4px #ffffff;\n    background-color: #e6ecef;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n`\nexport const Icon = styled.img`\n    height: 130px;\n    width: 130px;\n    background-size: cover;\n    background-position: center;\n    background-repeat: no-repeat;\n`\nexport const TittlesWrapper = styled.div`\n    align-self: center;\n    margin-left: 15px;\n    font-family: \"Montserrat\", sans-serif;\n    p{\n        color: grey;\n    }\n`\n\nexport const Button = styled.button`\n    position: absolute;\n    color: red;\n    margin-left: 68%;\n    height: 30px;\n    width: 100px;\n    border-radius: 8px;\n    background-color: #ffffff;\n    font-family: \"Montserrat\", sans-serif;\n    border: none;\n    cursor: pointer;\n    :hover{\n        border: solid 1px red;\n    }\n    \n`\nexport const WrapperUnits = styled.div`\n\n    display: grid;\n    gap: 1rem;\n    grid-auto-rows: auto;\n    grid-template-columns: repeat(auto-fit, minmax(375px, 1fr));\n    margin-top: 30px;\n    justify-items: center; \n    align-items: center; \n\n`\nexport const UnitCard = styled.div`\n    background-color: #ffffff;\n    width: 390px;\n    border-radius: 20px;\n    padding: 1rem;\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n    p{\n        font-family: \"Montserrat\", sans-serif;\n    }\n    .name-unit{\n        font-family: \"Montserrat\", sans-serif;\n    }\n    .unit-id-content{\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n        justify-content: space-between;\n    }\n    .wrapper-area{\n        display: flex;\n        flex-direction: row;\n        align-items: flex-start;\n        justify-content: space-between;\n    }\n    .save-button{\n        height: 30px;\n        border-radius: 8px;\n        background-color: #f5f3f3;\n        font-family: \"Montserrat\", sans-serif;\n        border: none;\n        cursor: pointer;\n    }\n    .save-button:hover{\n        border: solid 1px #000000;\n    }\n\n\n`\n\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_ROOMS_BY_PROJECT = gql`\n query Query($projectId: Int!) {\n\ngetAllRoomsByProject(project_id: $projectId) {\n  name\n  id\n  Controller {\n      typeGateway\n      id\n    }\n}\n}\n`;\n\n/*  {\n      id\n      name\n      floor\n      status\n      alias\n      NewRoomId\n      visible\n      Device {\n        variables\n        visible\n        name\n        id\n        alias\n        Category {\n          id\n          name\n          category\n          sub_category\n        }\n      }\n      Controller {\n        id\n        serial\n        online\n        typeGateway\n      }\n    }  */","import React, { useContext, useState, useEffect } from \"react\";\nimport IconVrf from \"../../../../../../assets/vrf.png\";\nimport { AuthContext } from \"../../../../../../context/AuthProvider\";\nimport {\n  VRFWrapper,\n  Header,\n  IconWrapper,\n  Icon,\n  TittlesWrapper,\n  Button,\n  WrapperUnits,\n  UnitCard,\n} from \"./VRFConfigurations.style\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport { getVRF, updateVRF } from \"./helper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { GET_ALL_ROOMS_BY_PROJECT } from \"./controllerRooms\";\nimport { useQuery } from \"@apollo/client\";\nfunction VRFConfigurations() {\n  const { data, loading, error, refetch } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n    variables: { projectId: 127 },\n    fetchPolicy: \"cache-and-network\",\n  });\n  const { tokenvrf, setTokenvrf } = useContext(AuthContext);\n  const [id, setId] = React.useState(\"\");\n  const [areas, setAreas] = React.useState([]);\n  const [unit, setUnit] = React.useState([]);\n  const [initialUnit, setInitialUnit] = React.useState([]);\n  const [dataQuery, setDataQuery] = React.useState([]);\n  const getUnit = async () => {\n    try {\n      const response = await getVRF();\n      if (response) {\n        setUnit(\n          response?.body.map((unit) => ({\n            name: unit.name,\n            unitId: unit.unitId,\n            roomId: unit.roomId,\n          }))\n        );\n        setInitialUnit(\n          response?.body.map((unit) => ({\n            name: unit.name,\n            unitId: unit.unitId,\n            roomId: unit.roomId,\n          }))\n        );\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n    }\n  };\n  const updateUnit = async (data) => {\n    try {\n      const response = await updateVRF(data);\n      if (response) {\n        getUnit()\n        console.log(\"update responde\", response);\n      }\n    } catch (error) {\n      console.log(\"error update\", error);\n    } finally {\n    }\n  };\n  const getRoomIdByUnitId = (unitId) => {\n    const foundUnit = unit.find((unitItem) => unitItem.unitId === unitId);\n    return foundUnit ? foundUnit.roomId : null;\n  };\n\n  useEffect(() => {\n    getUnit();\n  }, []);\n  React.useEffect(() => {\n    setAreas(\n      data?.getAllRoomsByProject.map((areas) => ({\n        name: areas.name,\n        id: areas.id,\n      }))\n    );\n    setDataQuery(data?.getAllRoomsByProject);\n  }, [data]);\n\n  function logout() {\n    localStorage.removeItem(\"tokenvrf\");\n    localStorage.removeItem(\"projectIdVRF\");\n    setTokenvrf();\n  }\n  const updateRoomIdByUnitId = (unitId, newRoomId) => {\n    setUnit((prevUnits) =>\n      prevUnits.map((unitItem) =>\n        unitItem.unitId === unitId\n          ? { ...unitItem, roomId: newRoomId }\n          : unitItem\n      )\n    );\n  };\n  const UpdateUnit = (unitId) => {\n    // encuentra la unidad en el array 'unit'\n    const foundUnit = unit.find((unitItem) => unitItem.unitId === unitId);\n\n    if (foundUnit) {\n      // Encuentra el objeto en dataQuery que tenga el mismo id que el roomId de foundUnit\n      const matchedRoom = dataQuery?.find(\n        (room) => room.id === foundUnit.roomId\n      );\n\n      // Agrega el typeGateway, si no se encuentra, agrega una cadena vacía\n      foundUnit.typeGateway = matchedRoom?.Controller?.typeGateway || \"\";\n      foundUnit.projectId = parseInt(localStorage.getItem(\"projectIdVRF\"));\n\n      // Aquí puedes hacer lo que necesites con foundUnit, como enviarlo al servidor\n      console.log(\"Unidad actualizada:\", foundUnit);\n\n      updateUnit([foundUnit])\n    }\n  };\n\n  const hasUnitChanged = (unitId) => {\n    const currentUnit = unit.find((unitItem) => unitItem.unitId === unitId);\n    const initialUnitItem = initialUnit.find(\n      (unitItem) => unitItem.unitId === unitId\n    );\n\n    if (!currentUnit || !initialUnitItem) {\n      return false; // Si no se encuentra el unitId, consideramos que no hubo cambios\n    }\n\n    return currentUnit.roomId !== initialUnitItem.roomId;\n  };\n\n  return (\n    <VRFWrapper>\n      <Header>\n        <IconWrapper>\n          <Icon src={IconVrf} />\n        </IconWrapper>\n        <TittlesWrapper>\n          <h1>Flujo de Refrigerante Variable VRF</h1>\n          <p>\n            Podrás editar información de las unidades, vincular\n            <br />a una área en específico del proyecto seleccionado.\n          </p>\n        </TittlesWrapper>\n        <Button onClick={logout}>Salir</Button>\n      </Header>\n      <WrapperUnits>\n        {unit?.map((element, key) => (\n          <UnitCard>\n            <h3 className=\"name-unit\">{element.name}</h3>\n            <div className=\"unit-id-content\">\n              <p>\n                <strong>Id de la unidad:</strong>{\" \"}\n              </p>\n              <p>{element.unitId}</p>\n            </div>\n            <div className=\"wrapper-area\">\n              <div>\n                <p>\n                  <strong>Asociada al area:</strong>\n                </p>\n              </div>\n\n              <FormControl sx={{ width: \"200px\" }} size=\"small\">\n                <InputLabel\n                  id=\"demo-select-small-label\"\n                  InputProps={{ sx: { borderRadius: 2 } }}\n                >\n                  Proyectos\n                </InputLabel>\n                <Select\n                  sx={{ borderRadius: 2 }}\n                  labelId=\"demo-select-small-label\"\n                  id=\"demo-select-small\"\n                  value={getRoomIdByUnitId(element?.unitId)}\n                  label=\"Proyectos\"\n                  onChange={(event) =>\n                    updateRoomIdByUnitId(element.unitId, event.target.value)\n                  }\n                >\n                  {areas?.map((item) => (\n                    <MenuItem key={item.id} value={item.id}>\n                      {item?.name}\n                    </MenuItem>\n                  ))}\n                </Select>\n              </FormControl>\n            </div>\n\n            <Tooltip\n              title={\n                !hasUnitChanged(element.unitId)\n                  ? \"La unidad no presenta cambios\"\n                  : \"\"\n              }\n              placement=\"bottom\"\n            >\n              <button\n                className=\"save-button\"\n                disabled={!hasUnitChanged(element.unitId)}\n                onClick={() => UpdateUnit(element.unitId)}\n              >\n                Guardar cambios\n              </button>\n            </Tooltip>\n          </UnitCard>\n        ))}\n      </WrapperUnits>\n    </VRFWrapper>\n  );\n}\n\nexport default VRFConfigurations;\n","export async function getVRF() {\n    // const url = \"http://10.0.5.101:3301/api/v1/unit/customer/2\";\n    const url = `https://www.cool-master-vrf-test.horussmartenergyapp.com/api/v1/unit/customer/${localStorage.getItem(\"projectIdVRF\")}`;\n    try {\n        const response = await fetch(url, {\n            method: 'GET',\n            headers: {\n                \"Authorization\": `Bearer ${localStorage.getItem(\"tokenvrf\")}`,\n                'Content-Type': 'application/json',\n                \"apikey\": \"integrationVrf\"\n            },\n            body: JSON.stringify(),\n        });\n\n        if (!response.ok) {\n            throw new Error(`HTTP error! Status: ${response.status}`);\n        }\n\n        const result = await response.json();\n        return result;\n    } catch (error) {\n        console.error('Error al realizar la petición:', error);\n        throw error;\n    }\n}\nexport async function updateVRF(data) {\n    // const url = \"http://10.0.5.101:3301/api/v1/unit/customer/2\";\n    const url = \"https://www.cool-master-vrf-test.horussmartenergyapp.com/api/v1/customerCoolMaster\";\n    try {\n        const response = await fetch(url, {\n            method: 'PUT',\n            headers: {\n                \"Authorization\": `Bearer ${localStorage.getItem(\"tokenvrf\")}`,\n                'Content-Type': 'application/json',\n                \"apikey\": \"integrationVrf\"\n            },\n            body: JSON.stringify(data),\n        });\n\n        if (!response.ok) {\n            throw new Error(`HTTP error! Status: ${response.status}`);\n        }\n\n        const result = await response.json();\n        return result;\n    } catch (error) {\n        console.error('Error al realizar la petición:', error);\n        throw error;\n    }\n}","import React, { useContext, useState, useEffect } from \"react\";\nimport LoginVrf from \"./loginVrf/LoginVrf\"\nimport VRFConfigurations from \"./vrfConfigurations/VRFConfigurations\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\nexport const RenderContent = () => {\n    const {\n        tokenvrf\n    } = useContext(AuthContext);\n\n\n    if (tokenvrf) {\n        return (<VRFConfigurations />)\n\n    } else {\n        return <LoginVrf />\n    }\n}\n\n\n","import { RenderContent } from './helperVRFmanagemnt'\n\n\nfunction indexVRF() {\n  return (\n    <>{RenderContent()}</>\n    \n  )\n}\n\nexport default indexVRF","import React from \"react\";\n\nconst Status = (enabled) => {\n  return (\n    <span className={`${enabled.data ? \"enabled\" : \"disabled\"}`}>\n      {String(enabled.data === false ? \"Inactivo\" : \"Activo\")}\n    </span>\n  );\n}\n\nexport default Status;","import React, { useContext, useEffect } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { createTheme } from \"@material-ui/core/styles\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\n\nconst theme = createTheme({\n  breakpoints: {\n    values: {\n      xs: 0,\n      sm: 600,\n      md: 900,\n      lg: 1200,\n      xl: 1536,\n    },\n  },\n});\n\nconst SelectInfo = (props) => {\n  const { dataSelect } = props;\n  const [selectItem, setSelectItem] = React.useState(0);\n  const { selectedDevice, setSelectedDevice } = useContext(AuthContext);\n\n  const ITEM_HEIGHT = 48;\n  const ITEM_PADDING_TOP = 8;\n  const MenuProps = {\n    PaperProps: {\n      style: {\n        maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\n        width: \"auto\",\n      },\n    },\n  };\n\n  const handleChange = (event) => {\n    const {\n      target: { value },\n    } = event;\n    setSelectItem(typeof value === \"string\" ? value.split(\",\") : value);\n    setSelectedDevice(event.target.value);\n   \n  };\n\n  return (\n    <>\n      <div className=\"select_container\">\n        <FormControl\n          sx={{\n            m: 0,\n            width: 320,\n            [theme.breakpoints.down(\"md\")]: { width: 250 },\n            [theme.breakpoints.down(\"xs\")]: { width: 340 },\n          }}\n          size=\"small\"\n        >\n          <InputLabel id=\"demo-multiple-checkbox-label\">\n            Dispositivos\n          </InputLabel>\n          <Select\n            labelId=\"demo-multiple-checkbox-label\"\n            id=\"demo-multiple-checkbox\"\n            sx={{ borderRadius: 2, height: \"40px\" }}\n            value={selectItem}\n            onChange={handleChange}\n            input={<OutlinedInput label=\"Dispositivos...\" />}\n            MenuProps={MenuProps}\n          >\n            {dataSelect.map((select) => (\n              <MenuItem key={select.id} value={select.id}>\n                <ListItemText primary={select.name} />\n              </MenuItem>\n            ))}\n          </Select>\n        </FormControl>\n      </div>\n    </>\n  );\n};\n\nexport default SelectInfo;\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ControlPointIcon from \"@mui/icons-material/ControlPoint\";\nimport { Tooltip } from \"@mui/material\";\nimport { useHistory } from \"react-router-dom\";\n\n//components\n\nconst AddDeviceButton = () => {\n  const history = useHistory();\n  const [projectId, setProjectId] = useState(localStorage.getItem(\"id\"));\n  const handleMacrometerInstalation = () => {\n    history.push(\"/app/stepperviewmacrometer/description\");\n  };\n\n  return (\n    <>\n      <div>\n        <Tooltip title={\"Agregar Dispositivo\"}>\n          <IconButton\n            sx={{\n              width: \"35px\",\n              height: \"35px\",\n            }}\n            onClick={handleMacrometerInstalation}\n            disabled={true}\n          >\n            <ControlPointIcon\n              sx={{\n                width: \"35px\",\n                height: \"35px\",\n                \":hover\": { color: \"#000000\" },\n              }}\n            />\n          </IconButton>\n        </Tooltip>\n      </div>\n    </>\n  );\n};\n\nexport default AddDeviceButton;\n","import React, { useState, useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\nimport AutoComplete from \"../../../../components/tableInformation/components/AutoComplete\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n  },\n});\n\nconst AddNewMetersModal = ({ data }) => {\n  const {\n    openNewMetersModal,\n    setOpenNewMetersModal,\n    selectedProject,\n    setSelectedProject,\n  } = useContext(AuthContext);\n  const history = useHistory();\n  const selectedDevice = parseInt(localStorage.getItem(\"id\"));\n\n  const handleNavegateStepper = () => {\n    history.push(\"/app/stepperviewmacrometer/description\");\n    setOpenNewMetersModal(false);\n    setSelectedProject(null);\n  };\n\n  const handleClose = () => {\n    setOpenNewMetersModal(false);\n    setSelectedProject(null);\n  };\n\n  return (\n    <>\n      <Dialog\n        open={openNewMetersModal}\n        onClose={handleClose}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"30%\",\n            height: \"38%\",\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            fontFamily: \"Montserrat, sans-serif\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            fontSize: \"20px\",\n            marginBottom: \"15px\",\n            lineHeight: \"2.6\",\n            padding: \"0px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"space-evenly\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"22px\",\n              fontWeight: \"bold\",\n              paddingLeft: \"45px\",\n            }}\n          >\n            Selección de proyecto\n          </span>\n          <IconButton onClick={handleClose}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"80%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"17px\",\n            }}\n          >\n            Seleccione el proyecto a vincular con los dispositivos previamente\n            instalados.\n          </span>\n          <AutoComplete enabled={true} dataFilter={data} />\n          <ThemeProvider theme={theme}>\n            <Button\n              variant=\"contained\"\n              color=\"success\"\n              disabled={selectedProject !== null ? false : true}\n              onClick={() => handleNavegateStepper()}\n              sx={{\n                width: \"340px\",\n                padding: \"7px\",\n                color: \"#000\",\n                borderRadius: \"8px\",\n                lineHeight: \"18px\",\n              }}\n            >\n              Aceptar\n            </Button>\n          </ThemeProvider>\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n\nexport default AddNewMetersModal;\n","import * as React from \"react\";\nimport Button from \"@mui/material/Button\";\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { useHistory } from \"react-router-dom\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n  },\n});\n\nconst ManagementButton = () => {\n  return (\n    <ThemeProvider theme={theme}>\n      <Button\n        variant=\"contained\"\n        endIcon={<LoginIcon />}\n        color=\"success\"\n        disabled={true}\n        sx={{\n          color: \"black\",\n          borderRadius: \"8px\",\n        }}\n      >\n        Ingresar\n      </Button>\n    </ThemeProvider>\n  );\n};\n\nexport default ManagementButton;\n","import React, { useContext } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n//Material UI components\nimport WarningAmberRoundedIcon from \"@mui/icons-material/WarningAmberRounded\";\n\n//Components\nimport AddingDeviceProject from \"./AddingDeviceProject\";\nimport AutoComplete from \"../../../../components/tableInformation/components/AutoComplete\";\nimport AddNewMetersModal from \"./AddNewMetersModal\";\n\nconst NoDeviceInProject = (props) => {\n  const { data, dataProjects } = props;\n  const { selectedProject } = useContext(AuthContext);\n  const projectsForStepper = data?.getAllProjectsByUser?.Projects;\n\n  return (\n    <div className=\"warnings_container\">\n      <div className=\"no_selected_filter\">\n        <WarningAmberRoundedIcon sx={{ height: \"88px\", width: \"98.29px\" }} />\n        <span>\n          Usted no posee ningún proyecto con ese dispositivo. ¿Desea agregar\n          uno?\n        </span>\n        <div className=\"add_device_filter_and_button\">\n          <div className=\"filter_project_to_add_device\">\n            <AutoComplete dataFilter={projectsForStepper} enabled={true} />\n          </div>\n          <AddingDeviceProject\n            enabled={selectedProject === null ? true : false}\n            openModal={false}\n          />\n        </div>\n        <AddNewMetersModal data={dataProjects} />\n      </div>\n    </div>\n  );\n};\n\nexport default NoDeviceInProject;\n","import React from \"react\";\nimport WarningAmberRoundedIcon from \"@mui/icons-material/WarningAmberRounded\";\n\nconst NoSelectedDevice = () => {\n  return (\n    <div className=\"warnings_container\">\n      <div className=\"no_selected_filter\">\n        <WarningAmberRoundedIcon sx={{ height: \"88px\", width: \"98.29px\" }} />\n        <span>\n          No se ha seleccionado ningún elemento del filtro, por favor seleccione\n          un tipo de dispositivo.\n        </span>\n      </div>\n    </div>\n  );\n};\n\nexport default NoSelectedDevice;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const MainTableContainer = styled.div`\n  @media (width: 100vw) {\n    overflow: auto;\n    font-size: 15px;\n    width: -webkit-fill-available;\n  }\n\n  .data_table {\n    border-collapse: collapse;\n    margin: 0 1.5%;\n    height: auto;\n    border-radius: 10px 10px 0 0;\n    width: ${(props) => (props.columnLength >= 8 ? \"max-content\" : \"auto\")};\n    overflow: hidden;\n\n    .container_title_table {\n      background: rgba(31, 137, 229, 0.2);\n      color: #000;\n      width: 94.7%;\n      height: 5em;\n    }\n    .container_table_body {\n      align-items: center;\n      border: 2px;\n      background: rgba(113, 113, 113, 0.091);\n      color: black;\n      height: 4.5em;\n    }\n    .rows {\n      &:nth-child(even) {\n        background-color: rgb(255, 255, 255);\n      }\n      .td {\n        width: 1%;\n        height: 65px;\n        font-weight: 600;\n        text-align: center;\n        font-family: \"Montserrat\", sans-serif;\n        font-size: 15px;\n        color: #474747;\n      }\n\n      .enabled {\n        border: 0.2px solid #5cb85c;\n        width: auto;\n        padding: 2px 3px 5px;\n        border-radius: 4px;\n        background-color: rgba(34, 169, 92, 0.15);\n        border: 1px solid #22a95c;\n        color: #22a95c;\n        span {\n          display: flex;\n          align-items: center;\n          width: 100%;\n          font-weight: 500;\n        }\n        p {\n          font-size: 12px;\n          margin: 0px auto;\n          color: white;\n          display: flex;\n          justify-self: center;\n          justify-content: center;\n        }\n      }\n      .disabled {\n        width: auto;\n        padding: 2px 3px 5px;\n        border-radius: 4px;\n        background-color: rgba(191, 38, 38, 0.15);\n        border: 1px solid #bf2626;\n        color: #bf2626;\n        span {\n          display: flex;\n          align-items: center;\n          font-weight: 500;\n        }\n        p {\n          font-size: 12px;\n          margin: 0px auto;\n          color: white;\n          display: flex;\n          justify-self: center;\n          justify-content: center;\n        }\n      }\n    }\n  }\n`;\n","import * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\n//styled components\nimport { MainTableContainer } from \"./style/TableInfo.style\";\n\nconst TableInfo = (props) => {\n  const { amountColumns, dataTable } = props;\n\n  const [currentPage, setCurrentPage] = useState(1);\n  const recordsPerPage = 10;\n  const lastIndex = currentPage * recordsPerPage;\n  const firstIndex = lastIndex - recordsPerPage;\n  // const records = users.slice(firstIndex, lastIndex);\n\n  return (\n    <>\n      <MainTableContainer\n        amountColumns={amountColumns}\n        columnLength={amountColumns.length}\n      >\n        <table className=\"data_table\">\n          <thead className=\"container_title_table\">\n            <tr className=\"tr\">\n              {amountColumns?.map((columnName, index) => (\n                <th key={index}>\n                  <h3>{columnName.label}</h3>\n                </th>\n              ))}\n            </tr>\n          </thead>\n          <tbody className=\"container_table_body\">\n            {dataTable?.map((rowData, rowIndex) => (\n              <tr className=\"rows\" key={rowIndex}>\n                {amountColumns?.map((column, colIndex) => (\n                  <td className=\"td\" key={colIndex}>\n                    {column.component ? (\n                      <column.component data={rowData[column.dataKey]} />\n                    ) : (\n                      `${rowData[column.dataKey]}`\n                    )}\n                  </td>\n                ))}\n              </tr>\n            ))}\n          </tbody>\n        </table>\n      </MainTableContainer>\n    </>\n  );\n};\nexport default TableInfo;\n","import { useQuery } from \"@apollo/client\";\nimport {\n  GET_METTERS_PROJECTS_LOGGED_USER,\n  GET_PROJECTS_BY_USERS,\n} from \"../../../controllers/usersControllers\";\n\n//Components\nimport AddDeviceButton from \"./components/AddDeviceButton\";\nimport AddNewMetersModal from \"./components/AddNewMetersModal\";\nimport ManagementButton from \"./components/ManagementButton\";\nimport NoDeviceInProject from \"./components/NoDeviceInProject\";\nimport NoSelectedDevice from \"./components/NoSelectedDevice\";\nimport Status from \"../../../components/tableInformation/components/Status\";\nimport TableInfo from \"../../../components/tableInformation/TableInfo\";\nimport RenderVRF from \"./components/vrfManagement/indexVRF\"\n\n\nexport const RenderInformationCases = (props) => {\n  const { selectedDevice } = props;\n  const { data, loading, error, refetch } = useHandleQuery(selectedDevice);\n  const dataProjects = data?.getAllProjectsByUser?.Projects;\n  const dataTable = data?.getMettersProjectsUsers?.data;\n  const newMettersExists = data?.getMettersProjectsUsers?.data?.length;\n\n  switch (selectedDevice) {\n    case 0:\n      if (newMettersExists <= 0 || newMettersExists == undefined) {\n        return <NoSelectedDevice />;\n      }\n\n    case 1:\n      if (newMettersExists <= 0) {\n        return <NoDeviceInProject data={data} dataProjects={dataProjects} />;\n      } else if (newMettersExists > 0) {\n        return (\n          <TableInfo\n            dataTable={dataTable}\n            amountColumns={tableDataBuilder({\n              Status,\n              AddDeviceButton,\n              ManagementButton,\n            })}\n          />\n        );\n      }\n    case 2:\n      return <RenderVRF />\n    default:\n      return null;\n  }\n};\n\nexport const dataSelector = [\n  { id: 1, name: \"Macromedidor\" },\n  { id: 2, name: \"Flujo de Refrigerante Variable(VRF)\" },\n];\n\nexport const tableDataBuilder = (dataBuilder) => {\n  const { Status, AddDeviceButton, ManagementButton } = dataBuilder;\n  return [\n    { label: \"Nombre\", dataKey: \"name\" },\n    {\n      label: \"Estado del Proyecto\",\n      dataKey: \"enabled\",\n      component: Status,\n    },\n    { label: \"País\", dataKey: \"country\" },\n    { label: \"Ciudad\", dataKey: \"city\" },\n    { label: \"Agregar\", component: AddDeviceButton },\n    { label: \"Gestionar\", component: ManagementButton },\n  ];\n};\n\nexport const enabledoRDesibaledAddButton = (data) => {\n  if (data.length > 0) {\n    return false;\n  } else {\n    return true;\n  }\n};\n\nexport const useHandleQuery = (device) => {\n  const id = parseInt(localStorage.getItem(\"np\"));\n  let query = null;\n  let skipCondition = false;\n\n  switch (device) {\n    case 1:\n      query = GET_METTERS_PROJECTS_LOGGED_USER;\n      skipCondition = false;\n      break;\n\n    default:\n      skipCondition = true;\n  }\n\n  const { data, loading, error, refetch } = useQuery(\n    GET_METTERS_PROJECTS_LOGGED_USER,\n    {\n      fetchPolicy: \"network-only\",\n      variables: { id },\n      skip: skipCondition,\n    }\n  );\n\n  return { data, loading, error, refetch };\n};\n","import { useContext, useEffect } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_METTERS_PROJECTS_LOGGED_USER } from \"../../../controllers/usersControllers\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//Components\nimport AutoComplete from \"../../../components/tableInformation/components/AutoComplete\";\nimport AddingDeviceProject from \"./components/AddingDeviceProject\";\nimport Denied from \"../../../components/alert/Denied\";\nimport RenderVRF from \"./components/vrfManagement/indexVRF\";\nimport Status from \"../../../components/tableInformation/components/Status\";\nimport SelectInfo from \"../../../components/tableInformation/components/SelectInfo\";\n\n//helper\nimport { dataSelector, RenderInformationCases } from \"./helper\";\n\nconst softGreen = \"#67A46D\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: softGreen,\n    },\n  },\n  breakpoints: {\n    values: {\n      xs: 0,\n      sm: 600,\n      md: 900,\n      lg: 1200,\n      xl: 1536,\n    },\n  },\n});\n\nconst DevicesManagement = () => {\n  const { data, loading, error, refetch } = useQuery(\n    GET_METTERS_PROJECTS_LOGGED_USER,\n    {\n      fetchPolicy: \"network-only\",\n      variables: {\n        id: parseInt(localStorage.getItem(\"np\")),\n      },\n    }\n  );\n\n  const { selectedDevice, selectedProject, permissionsRoleUser, tokenvrf } =\n    useContext(AuthContext);\n\n  const enabled = data?.getMettersProjectsUsers?.data?.map(\n    (element) => element.enabled\n  );\n\n  const userProject = data?.getAllProjectsByUser?.Projects;\n  const allNewMettersExists = data?.getMettersProjectsUsers?.data?.length;\n\n  useEffect(() => {\n    if (selectedDevice !== 0) {\n      refetch();\n    }\n  }, [selectedDevice, refetch]);\n\n  <Status enabled={enabled} />;\n\n  return (\n    <>\n      {permissionsRoleUser?.permissionsRole?.GesDispVer ? (\n        <div className=\"devices_datatable_container\">\n          <div className=\"devices_header_container\">\n            <div className=\"devices_title_container\">\n              <h1 className=\"table_title\">Gestión de Dispositivos</h1>\n              <span className=\"title_description\">\n                Aquí podras gestionar tus dispositivos por proyecto\n              </span>\n            </div>\n            <div className=\"select_input_container\">\n              <AddingDeviceProject\n                enabled={selectedProject === null ? true : false}\n                openModal={false}\n              />\n\n              <SelectInfo dataSelect={dataSelector} />\n              {allNewMettersExists > 0 && selectedDevice > 0 ? (\n                <>\n                  <AutoComplete\n                    dataFilter={userProject}\n                    enabled={selectedDevice}\n                  />\n                </>\n              ) : null}\n            </div>\n          </div>\n\n          <div\n            style={{ display: \"flex\", overflow: \"auto\" }}\n            name=\"renderViewBySelect\"\n          >\n            <RenderInformationCases selectedDevice={selectedDevice} />\n          </div>\n        </div>\n      ) : (\n        <Denied />\n      )}\n    </>\n  );\n};\nexport default DevicesManagement;\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_PROJECTS = gql`\n  query {\n    getAllProjects\n  }\n`;\n\nexport const GET_PROJECT_BY_ID = gql`\n  query ($id: Int) {\n    getAllProjects(id: $id)\n  }\n`;\n\nexport const GET_INFO_USER_LOGGED = gql`\n  query ($page: Int, $id: Int) {\n    getAllProjectsName\n    getInfoUserLogged(id: $id, page: $page, records: 5)\n  }\n`;\n\nexport const FILTER_PROJECT = gql`\n  query ($page: Int, $id: Int, $records: Int) {\n    projectManagement(id: $id, page: $page, records: $records)\n  }\n`;\n\nexport const GET_ALL_LOGGED_USER_PROJECT = gql`\n  query ($projectManagementId: Int, $records: Int, $page: Int) {\n    projectManagement(id: $projectManagementId, records: $records, page: $page)\n  }\n`;\n\nexport const GET_ALL_USER_PROJECT = gql`\n  query getAllProjectsByUser {\n    getAllProjectsByUser\n  }\n`;\n\nexport const CREATE_PROJECT = gql`\n  mutation CreateProject(\n    $name: String!\n    $start_time: String\n    $end_time: String\n    $time_zone: Float\n    $img: String\n    $image: String\n    $country: String\n    $city: String\n    $state: String\n    $currency: String\n    $prefix_currency: String\n    $CityId: Int\n    $UserId: [Int]\n    $controllersCredentials: ControllerCredentials\n  ) {\n    CreateProject(\n      name: $name\n      start_time: $start_time\n      end_time: $end_time\n      time_zone: $time_zone\n      img: $img\n      image: $image\n      country: $country\n      city: $city\n      state: $state\n      currency: $currency\n      prefix_currency: $prefix_currency\n      CityId: $CityId\n      UserId: $UserId\n      controllersCredentials: $controllersCredentials\n    ) {\n      name\n    }\n  }\n`;\n\nexport const UPDATE_PROJECT = gql`\n  mutation UpdateProject(\n    $id: Int!\n    $name: String\n    $start_time: String\n    $end_time: String\n    $img: String\n    $enabled: Boolean\n    $country: String\n    $city: String\n    $state: String\n    $currency: String\n    $prefix_currency: String\n    $time_zone: Float\n    $controllersCredentials: ControllerCredentials\n  ) {\n    UpdateProject(\n      id: $id\n      name: $name\n      start_time: $start_time\n      end_time: $end_time\n      img: $img\n      enabled: $enabled\n      country: $country\n      city: $city\n      state: $state\n      currency: $currency\n      prefix_currency: $prefix_currency\n      time_zone: $time_zone\n      controllersCredentials: $controllersCredentials\n    )\n  }\n`;\n\nexport const DELETE_PROJECT = gql`\n  mutation DeleteProject($id: Int!) {\n    DeleteProject(id: $id)\n  }\n`;\nexport const GET_ASSOCIATES = gql`\n  query getAssociates {\n    getAllAssociates {\n      id\n      name\n    }\n  }\n`;\n\nexport const CREATE_COUNTRY = gql`\n  mutation createCountry($name: Str!) {\n    CreateCountry(name: $name) {\n      id\n    }\n  }\n`;\n\nexport const CREATE_STATE = gql`\n  mutation createState($name: Str, $countryId: id) {\n    createState(name: Str, idCountry: int) {\n      id\n    }\n  }\n`;\n\nexport const CREATE_CITY = gql`\n  mutation createCity($name: Str, $stateId: id) {\n    createCity(name: Str, stateId: int) {\n      id\n    }\n  }\n`;\n","import React, { useContext, useState } from 'react';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nimport { AuthContext } from '../../../context/AuthProvider';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@material-ui/core/IconButton';\nimport { AlertComponent } from '../../../components/roleManager/AlertComponent';\n\n//query\nimport { useQuery, useMutation } from '@apollo/client';\nimport { UPDATE_PROJECT } from '../../../controllers/projectController';\nimport { GET_ALL_LOGGED_USER_PROJECT } from '../../../controllers/projectController';\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nconst customGreen = '#acf6ac';\nconst customRed = '#f19393';\n\nconst colorThemes = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n    error: {\n      main: customRed,\n    },\n  },\n});\n\nexport const ModalAlertChangeProjectStatus = ({ projects, statusRefetch, openChangeProjectStatusFromToggle, setOpenChangeProjectStatusFromToggle, projectIdd, checkedToggle, setCheckedToggle }) => {\n  const { t } = useTranslation();\n  const [open, setOpen] = useState(false);\n  const [message, setMessage] = useState();\n  const [styleMessage, setStyleMessage] = useState({});\n  const { openChangeProjectStatusModal, setOpenChangeProjectStatusModal } = useContext(AuthContext);\n\n  const [editProjectStatus] = useMutation(UPDATE_PROJECT);\n\n  const dataProjects = projects?.map((item) => {\n    if (parseInt(projectIdd) === parseInt(item?.id)) {\n      return {\n        id: parseInt(item?.id),\n        enabled: item?.enabled,\n      };\n    }\n  });\n \n\n  const filteredProject = dataProjects?.filter((i) => i !== undefined);\n  filteredProject?.map((item, key) => {\n    if (item.enabled) {\n      item.enabled = false;\n    } else {\n      item.enabled = true;\n    }\n    return item.enabled;\n  });\n\n  function updateEnableProjects() {\n    try {\n      setCheckedToggle(!checkedToggle);\n      editProjectStatus({\n        variables: {\n          id: parseInt(projectIdd),\n          enabled: filteredProject[0]?.enabled,\n        },\n      })\n        .then((resul) => {})\n        .catch((err) => {});\n    } catch (err) {}\n    statusRefetch();\n    setOpenChangeProjectStatusFromToggle(false);\n  }\n\n  const handleClose = () => {\n    setOpenChangeProjectStatusFromToggle(false);\n    setOpenChangeProjectStatusModal(false);\n  };\n  return (\n    <>\n      <Dialog\n        open={openChangeProjectStatusModal || openChangeProjectStatusFromToggle}\n        PaperProps={{\n          sx: {\n            borderRadius: '8px',\n            width: 'auto',\n            height: 'auto',\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: 'flex',\n            justifyContent: 'center',\n            fontFamily: 'Montserrat, sans-serif',\n            backgroundColor: '#2EB142',\n            color: '#FFFFFF',\n            fontSize: '20px',\n            marginBottom: '15px',\n            lineHeight: '2.6',\n            padding: '0px',\n          }}\n        >\n          <span\n            style={{\n              display: 'flex',\n              justifyContent: 'space-evenly',\n              width: '100%',\n              fontFamily: 'Montserrat, sans-serif',\n              fontSize: '22px',\n              fontWeight: 'bold',\n              paddingLeft: '45px',\n            }}\n          >\n            {t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CHANGE_PROJECT_STATUS.TITLE_MODAL')}\n          </span>\n          <IconButton onClick={handleClose}>\n            <CloseIcon sx={{ color: '#ffff' }} />\n          </IconButton>\n        </DialogTitle>\n\n        <DialogContent\n          sx={{\n            display: 'flex',\n            justifyContent: 'center',\n          }}\n        >\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'column',\n              justifyContent: 'center',\n              alignItems: 'center',\n              gap: '35px',\n            }}\n          >\n            <span\n              style={{\n                display: 'flex',\n                justifyContent: 'center',\n                width: '100%',\n                fontFamily: 'Montserrat, sans-serif',\n                fontSize: '17px',\n              }}\n            >\n              {t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CHANGE_PROJECT_STATUS.DESCRIPTION')}\n            </span>\n            <div style={{ display: 'flex', gap: '40px' }}>\n              <ThemeProvider theme={colorThemes}>\n                <Button\n                  variant=\"contained\"\n                  color=\"success\"\n                  size=\"small\"\n                  sx={{\n                    color: '#000',\n                    borderRadius: '8px',\n                    border: 'solid #89cf90',\n                    width: 200,\n                    '&:hover': { backgroundColor: '#8ae38a' },\n                  }}\n                  onClick={() => updateEnableProjects()}\n                >\n                  {t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CHANGE_PROJECT_STATUS.BUTTON_TEXT')}\n                </Button>\n              </ThemeProvider>\n            </div>\n          </div>\n        </DialogContent>\n      </Dialog>\n      <AlertComponent\n        open={open}\n        message={message}\n        styleMessage={styleMessage}\n      />\n    </>\n  );\n};","import React from 'react';\nimport { Tooltip } from '@mui/material';\n\n//componets\nimport { WrapperSwitch, StyledSwitch } from './style/ToggleSwitch.style';\nimport { ModalAlertChangeProjectStatus } from '../../views/private/projectsManagement/ChangeProjectStatusModal';\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nfunction ToggleSwitch({ projects, currentIdProject, currentProjectStatus, statusRefetch }) {\n  const { t } = useTranslation();\n  const [openChangeProjectStatusFromToggle, setOpenChangeProjectStatusFromToggle] = React.useState(false);\n\n  const [projectIdd, setProjectIdd] = React.useState('');\n  const [checkedToggle, setCheckedToggle] = React.useState(currentProjectStatus);\n  \n\n  const handleOpenChangeProjectStatusModal = () => {\n    setProjectIdd(currentIdProject);\n    setOpenChangeProjectStatusFromToggle(true);\n  };\n  return (\n    <WrapperSwitch>\n      <StyledSwitch className=\"StyledSwitch\">\n        <Tooltip title={currentProjectStatus === true ? t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.PROJECT_TOGGLE_TOOLTIP_DISABLE') : t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.PROJECT_TOGGLE_TOOLTIP_ENABLE')}>\n          <label className=\"switch\">\n            <input\n              type=\"checkbox\"\n              onChange={handleOpenChangeProjectStatusModal}\n              checked={currentProjectStatus === true}\n            />\n            <div className=\"slider round\"></div>\n          </label>\n        </Tooltip>\n      </StyledSwitch>\n      <ModalAlertChangeProjectStatus\n        statusRefetch={statusRefetch}\n        projects={projects}\n        openChangeProjectStatusFromToggle={openChangeProjectStatusFromToggle}\n        setOpenChangeProjectStatusFromToggle={setOpenChangeProjectStatusFromToggle}\n        checkedToggle={checkedToggle}\n        setCheckedToggle={setCheckedToggle}\n        projectIdd={projectIdd}\n      />\n    </WrapperSwitch>\n  );\n}\nexport default ToggleSwitch;","//React Hooks\nimport React, { useEffect, useState, useRef } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components\nimport Alert from \"@mui/material/Alert\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport AppBar from \"@mui/material/AppBar\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Button from \"@mui/material/Button\";\nimport Box from \"@mui/material/Box\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport PhotoCamera from \"@mui/icons-material/PhotoCamera\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport TextField from \"@mui/material/TextField\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport Typography from \"@mui/material/Typography\";\nimport Select from \"@mui/material/Select\";\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\n\n//Material UI Functions for Components\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport { getHours, getMinutes } from \"date-fns\";\nimport { MobileTimePicker } from \"@mui/x-date-pickers/MobileTimePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\n\n//Material UI Styles\nimport { makeStyles, createTheme } from \"@material-ui/core/styles\";\nimport { useTheme } from \"@mui/material/styles\";\n\n//Data Json Files\nimport { partnerCountries } from \"../../utils/dataCountries.json\";\n\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  CREATE_PROJECT,\n  UPDATE_PROJECT,\n  GET_PROJECT_BY_ID,\n} from \"../../controllers/projectController\";\n\n// custom components\nimport Loading from \"../loading/Loading\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//credential management\nimport { encryptData, decryptData } from \"../../utils/encryptDecrypt\";\n\nconst useStyle = makeStyles((theme) => ({\n  root: {\n    \"& .MuiTextField-root\": {\n      margin: theme.spacing(1),\n    },\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    gap: \"15px\",\n    padding: \"15px\",\n  },\n  forms: {\n    display: \"flex\",\n    height: \"60px\",\n    [theme.breakpoints.down(\"xs\")]: {\n      display: \"flex\",\n      flexDirection: \"column\",\n      height: \"120px\",\n      width: \"235px\",\n    },\n  },\n  appbarTitle: {\n    backgroundColor: \"#3F9948\",\n    color: \"#fff\",\n    textAlign: \"center\",\n    justifyContent: \"center\",\n  },\n  photoContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"38%\",\n    p: {},\n  },\n  textFieldsContainer: {\n    display: \"flex\",\n    height: \"60%\",\n    width: \"100%\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  },\n  gridForButtons: {\n    width: \"100%\",\n  },\n  buttonContainer: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    width: \"-webkit-fill-available\",\n  },\n}));\n\nconst TRANSLATION_SHORTCUT =\n  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CREATE_EDIT_MODAL_PROJECT.\";\n\nexport const ModalCreateOrEditProject = ({\n  projectIdd,\n  pressedEditButton,\n  setPressedEditButton,\n  pressedCreateButton,\n  filledNameProject,\n  setNewFilledNameProject,\n  selectedCountry,\n  setNewSelectedCountry,\n  selectedState,\n  setNewSelectedState,\n  selectedCity,\n  setNewSelectedCity,\n  filledStart_Time,\n  setNewFilledStart_Time,\n  filledEnd_Time,\n  setNewFilledEnd_Time,\n  setRefetchProjectTable,\n  imgFilter,\n  filledControlAppUsername,\n  setNewFilledControlAppUsername,\n  filledControlAppPassword,\n  setNewFilledControlAppPassword,\n}) => {\n  const { t } = useTranslation();\n  const theme = useTheme();\n  const classes = useStyle();\n\n  const {\n    modalCreateOrEditProject,\n    setModalCreateorEditProject,\n    permissionsRoleUser,\n  } = React.useContext(AuthContext);\n\n  const [dataProjects, setDataProjects] = useState({\n    countryCode: \"\",\n    countryLabel: \"\",\n    currency: \"\",\n    enabled: false,\n    projectName: \"\",\n    projectState: \"\",\n    projectCity: \"\",\n    projectStart_time: \"\",\n    projectEnd_time: \"\",\n    projectImg: \"\",\n    time_zone: \"\",\n    projectControlAppUsername: \"\",\n    projectControlAppPassword: \"\",\n    userMios: \"\",\n    passwordMios: \"\",\n  });\n\n  const imgRef = useRef(null);\n  const [openEditAlert, setNewOpenEditAlert] = useState(false);\n  const [openCreateAlert, setOpenCreateAlert] = useState(false);\n  const [enableG150Credentials, setEnableG150Credentials] = useState(false);\n  const [enableH700Credentials, setEnableH700Credentials] = useState(false);\n  const [createProject] = useMutation(CREATE_PROJECT);\n  const [editProject] = useMutation(UPDATE_PROJECT);\n  const [showControlPassword, setShowControlPassword] = useState(false);\n  const [showMiosPassword, setShowMiosPassword] = useState(false);\n\n  const { data, loading, error, refetch } = useQuery(GET_PROJECT_BY_ID, {\n    variables: { id: parseInt(projectIdd) },\n  });\n\n  const loadSelectedProject = async () => {\n    const project = data?.getAllProjects?.[0];\n\n    if (project) {\n      const getTimeHours = (timeString) =>\n        Number.parseInt(timeString?.substring(0, 2));\n      const getTimeMinutes = (timeString) =>\n        Number.parseInt(timeString?.substring(3, 5));\n\n      const startTime = project?.start_time;\n      const startTimeHour = getTimeHours(startTime);\n      const startTimeMinute = getTimeMinutes(startTime);\n\n      const endTime = project?.end_time;\n      const endTimeHour = getTimeHours(endTime);\n      const endTimeMinute = getTimeMinutes(endTime);\n\n      const credentials = project?.controllersCredentials;\n      const encryptedUsername = credentials?.user;\n      const encryptedPassword = credentials?.password;\n      const encryptedUserMios = credentials?.user_mios;\n      const encryptedPasswordMios = credentials?.password_mios;\n\n      const ENCRYPT_DECRYPT_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\n      let controlAppUsername = \"\",\n        controlAppPassword = \"\",\n        userMios = \"\",\n        passwordMios = \"\";\n\n      try {\n        if (encryptedUsername) {\n          controlAppUsername = await decryptData(\n            encryptedUsername,\n            ENCRYPT_DECRYPT_KEY\n          );\n        }\n        if (encryptedPassword) {\n          controlAppPassword = await decryptData(\n            encryptedPassword,\n            ENCRYPT_DECRYPT_KEY\n          );\n        }\n        if (encryptedUserMios) {\n          userMios = await decryptData(encryptedUserMios, ENCRYPT_DECRYPT_KEY);\n        }\n        if (encryptedPasswordMios) {\n          passwordMios = await decryptData(\n            encryptedPasswordMios,\n            ENCRYPT_DECRYPT_KEY\n          );\n        }\n\n        setDataProjects({\n          ...dataProjects,\n          projectName: project?.name,\n          countryLabel: project?.country,\n          projectState: project?.state,\n          projectCity: project?.city,\n          time_zone: project?.time_zone,\n          // projectStart_time: new Date().setHours(\n          //   startTimeHour,\n          //   startTimeMinute,\n          //   0,\n          //   0\n          // ),\n          // projectEnd_time: new Date().setHours(\n          //   endTimeHour,\n          //   endTimeMinute,\n          //   0,\n          //   0\n          // ),\n          projectStart_time: project?.start_time,\n          projectEnd_time: project?.end_time,\n          projectImg: project?.img,\n          projectControlAppUsername: controlAppUsername,\n          projectControlAppPassword: controlAppPassword,\n          userMios: userMios,\n          passwordMios: passwordMios,\n        });\n      } catch (exceptionError) {\n        console.log(\"Error al descifrar datos:\", exceptionError);\n        // Set empty values if decryption fails\n        setDataProjects({\n          ...dataProjects,\n          projectName: project?.name,\n          countryLabel: project?.country,\n          projectState: project?.state,\n          projectCity: project?.city,\n          time_zone: project?.time_zone,\n          projectStart_time: project?.start_time,\n          projectEnd_time: project?.end_time,\n          projectImg: project?.img,\n          projectControlAppUsername: \"\",\n          projectControlAppPassword: \"\",\n          userMios: \"\",\n          passwordMios: \"\",\n        });\n      }\n    }\n  };\n\n  useEffect(() => {\n    if (data && pressedEditButton) {\n      loadSelectedProject();\n    }\n  }, [data, pressedEditButton]);\n\n  useEffect(() => {\n    if (pressedCreateButton) {\n      resetInputs();\n    }\n  }, [pressedCreateButton]);\n\n  const resetInputs = () => {\n    setDataProjects({\n      ...dataProjects,\n      projectName: \"\",\n      countryCode: \"\",\n      countryLabel: \"\",\n      currency: \"\",\n      prefix_currency: \"\",\n      projectState: \"\",\n      projectCity: \"\",\n      // projectStart_time: new Date().setHours(0, 0, 0, 0),\n      // projectEnd_time: new Date().setHours(23, 59, 0, 0),\n      projectStart_time: \"0:00\",\n      projectEnd_time: \"23:59\",\n      time_zone: \"\",\n      projectImg: \"\",\n      projectControlAppUsername: \"\",\n      projectControlAppPassword: \"\",\n      userMios: \"\",\n      passwordMios: \"\",\n      enabled: false,\n    });\n  };\n\n  const handleNameChange = (event) => {\n    const value = event.target.value;\n    const regex = /^[a-zA-ZñÑáÁéÉíÍóÓúÚ.0-9\\s]*$/;\n    if (!regex.test(value)) {\n      setNewFilledNameProject(false);\n      return;\n    }\n    setDataProjects({\n      ...dataProjects,\n      projectName: value,\n    });\n    setNewFilledNameProject(value.length >= 3);\n  };\n\n  const handleSelectCountry = (name) => {\n    const selectedCode = partnerCountries?.find((i) => i?.name === name);\n    if (name === \"\" || name === null) {\n      setDataProjects({\n        ...dataProjects,\n        countryLabel: \"\",\n        currency: \"\",\n        prefix_currency: \"\",\n        countryCode: \"\",\n        projectState: \"\",\n        projectCity: \"\",\n      });\n      setNewSelectedCountry(false);\n      setNewSelectedState(false);\n      setNewSelectedCity(false);\n    } else {\n      setDataProjects({\n        ...dataProjects,\n        countryCode: selectedCode?.code,\n        countryLabel: selectedCode?.name,\n        currency: selectedCode?.currencyInfo?.currency,\n        prefix_currency: selectedCode?.currencyInfo?.currencyPrefix,\n      });\n      setNewSelectedCountry(true);\n    }\n  };\n\n  const handleClickImg = () => {\n    imgRef?.current?.click();\n  };\n\n  const handleImageChange = (event) => {\n    const file = event.target.files[0];\n    if (file) {\n      const reader = new FileReader();\n      reader.onload = (e) => {\n        const image = document.createElement(\"img\");\n        image.src = e.target.result;\n\n        image.onload = (e) => {\n          const canvas = document.createElement(\"canvas\");\n          canvas.width = 400;\n          canvas.height = 400;\n          const context = canvas.getContext(\"2d\");\n          context.drawImage(image, 0, 0, canvas.width, canvas.height);\n          const cutImg = context.canvas.toDataURL(\"image/jpeg\", 90);\n          setDataProjects({\n            ...dataProjects,\n            projectImg: cutImg,\n          });\n        };\n      };\n      reader.readAsDataURL(file);\n    } else {\n      setDataProjects({ ...dataProjects, projectImg: \"\" });\n    }\n  };\n\n  const selectExistingImg = (evento) => {\n    const img = evento.target.value;\n    setDataProjects({ ...dataProjects, projectImg: img });\n  };\n\n  const handleSelectState = (event, value) => {\n    if (!value || !selectedCountry || dataProjects.countryLabel === \"\") {\n      setDataProjects({\n        ...dataProjects,\n        projectState: \"\",\n        projectCity: \"\",\n      });\n      setNewSelectedState(false);\n      setNewSelectedCity(false);\n    } else {\n      setDataProjects({\n        ...dataProjects,\n        projectState: value.name,\n      });\n      setNewSelectedState(true);\n    }\n  };\n\n  const statesOptions = partnerCountries\n    ?.filter((element) => element?.name === dataProjects?.countryLabel)\n    ?.map((list) => list?.departmentState);\n\n  const citiesOptions = partnerCountries\n    ?.filter((element) => element?.name === dataProjects?.countryLabel)\n    ?.map((list) =>\n      list?.departmentState\n        ?.filter((stateName) => stateName?.name === dataProjects?.projectState)\n        ?.map((city) => city?.citiesDistrictMunicipalities)\n    );\n\n  const associatedCountry = [\n    {\n      name: dataProjects?.countryLabel,\n    },\n  ];\n\n  const associatedState = [\n    {\n      name: statesOptions[0]?.find(\n        (item) => item?.name == dataProjects?.projectState\n      )?.name,\n    },\n  ];\n\n  const associatedCity = [\n    {\n      name: citiesOptions\n        ?.flat()\n        ?.flat()\n        ?.find((item) => item?.name == dataProjects?.projectCity)?.name,\n    },\n  ];\n\n  const handleSelectCity = (event, value) => {\n    if (!value || dataProjects?.projectState === \"\" || !selectedState) {\n      setDataProjects({\n        ...dataProjects,\n        projectCity: \"\",\n      });\n      setNewSelectedCity(false);\n    } else {\n      setDataProjects({\n        ...dataProjects,\n        projectCity: value.name,\n        time_zone: parseFloat(value.timezone.substring(3)),\n      });\n      setNewSelectedCity(true);\n    }\n  };\n\n  // const handleSelect_StartTime = (convertedStart_Time) => {\n  //   if (convertedStart_Time == null || convertedStart_Time == \"\") {\n  //     setNewFilledStart_Time(false);\n  //   } else {\n  //     setDataProjects({\n  //       ...dataProjects,\n  //       projectStart_time: convertedStart_Time.$d,\n  //     });\n  //     setNewFilledStart_Time(true);\n  //   }\n  // };\n\n  const handleSelect_StartTime_EndTime = (event) => {\n    const startTime = event.target.value.substring(0, 5).trim();\n    const endTime = event.target.value.substring(7, 13).trim();\n    if (startTime === null || startTime === \"\") {\n      setNewFilledStart_Time(false);\n    } else {\n      setDataProjects({\n        ...dataProjects,\n        projectStart_time: startTime,\n        projectEnd_time: endTime,\n      });\n      setNewFilledStart_Time(true);\n    }\n  };\n\n  // const handleSelect_EndTime = (convertedEnd_Time) => {\n  //   if (convertedEnd_Time == null || convertedEnd_Time == \"\") {\n  //     setNewFilledEnd_Time(false);\n  //   } else {\n  //     setDataProjects({\n  //       ...dataProjects,\n  //       projectEnd_time: convertedEnd_Time.$d,\n  //     });\n  //     setNewFilledEnd_Time(true);\n  //   }\n  // };\n\n  const handleControlAppCredentials = (event) => {\n    const { name = \"\", value = \"\" } = event.target;\n    setDataProjects((prev) => ({ ...prev, [name]: value }));\n  };\n\n  const handlerMiosUser = (event) => {\n    const { value = \"\" } = event.target;\n    setDataProjects((prev) => ({ ...prev, userMios: value }));\n  };\n\n  const handlerMiosPassword = (event) => {\n    const { value = \"\" } = event.target;\n    setDataProjects((prev) => ({ ...prev, passwordMios: value }));\n  };\n\n  const handlerMiosPasswords = () => setShowMiosPassword((show) => !show);\n  const handlerControlPasswords = () => setShowControlPassword((show) => !show);\n\n  const handleCloseModal = () => {\n    setModalCreateorEditProject(false);\n    setPressedEditButton(false);\n    if (pressedCreateButton && !pressedEditButton) {\n      resetInputs();\n    }\n  };\n\n  const handleCloseAlert = () => {\n    setNewOpenEditAlert(false);\n    setOpenCreateAlert(false);\n  };\n\n  const handlerEnableG150Credentials = () => {\n    setEnableG150Credentials(true);\n  };\n\n  const handlerEnableH700Credentials = () => {\n    setEnableH700Credentials(true);\n  };\n\n  if (error) {\n    return (\n      <div>\n        <lottie-player\n          style={{\n            width: \"70%\",\n            marginLeft: \"30%\",\n            marginRight: \"auto\",\n          }}\n          className=\"_logo\"\n          src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n          background=\"transparent\"\n          speed=\"1\"\n          loop\n          autoplay\n        ></lottie-player>\n      </div>\n    );\n  }\n  if (loading) {\n    return (\n      <div\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        }}\n      >\n        <Loading />\n      </div>\n    );\n  }\n\n  const refetchProjectDataTable = () => {\n    setRefetchProjectTable();\n  };\n\n  const editProjects = async () => {\n    if (\n      filledNameProject &&\n      filledStart_Time &&\n      filledEnd_Time &&\n      selectedCountry &&\n      selectedCity &&\n      selectedState\n      // filledControlAppUsername &&\n      // filledControlAppPassword\n    ) {\n      try {\n        // const startHour = getHours(dataProjects?.projectStart_time);\n        // const startMinute = getMinutes(dataProjects?.projectStart_time);\n\n        // const endHour = getHours(dataProjects?.projectEnd_time);\n        // const endMinute = getMinutes(dataProjects?.projectEnd_time);\n\n        // const formattedStartTime =\n        //   isNaN(startHour) || isNaN(startMinute)\n        //     ? data?.getAllProjects[0]?.start_time || \"\"\n        //     : `${startHour}:${startMinute?.toString()?.padStart(2, \"0\")}`;\n\n        // const formattedEndTime =\n        //   isNaN(endHour) || isNaN(endMinute)\n        //     ? data?.getAllProjects[0]?.end_time || \"\"\n        //     : `${endHour}:${endMinute?.toString()?.padStart(2, \"0\")}`;\n\n        const ENCRYPT_DECRYPT_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n        const encryptedControlAppUsername = await encryptData(\n          dataProjects?.projectControlAppUsername,\n          ENCRYPT_DECRYPT_KEY\n        );\n        const encryptedControlAppPassword = await encryptData(\n          dataProjects?.projectControlAppPassword,\n          ENCRYPT_DECRYPT_KEY\n        );\n        const encryptedMiosUser = await encryptData(\n          dataProjects?.userMios,\n          ENCRYPT_DECRYPT_KEY\n        );\n        const encryptedMiosPassword = await encryptData(\n          dataProjects?.passwordMios,\n          ENCRYPT_DECRYPT_KEY\n        );\n\n        const projectEditionConfig = {\n          variables: {\n            id: projectIdd,\n            name: dataProjects?.projectName,\n            country: dataProjects?.countryLabel,\n            state: dataProjects?.projectState,\n            city: dataProjects?.projectCity,\n            currency: dataProjects?.currency,\n            prefix_currency: dataProjects?.prefix_currency,\n            // start_time: formattedStartTime,\n            // end_time: formattedEndTime,\n            start_time: dataProjects?.projectStart_time,\n            end_time: dataProjects?.projectEnd_time,\n            time_zone: dataProjects?.time_zone,\n            img: dataProjects?.projectImg,\n            controllersCredentials: {\n              user: encryptedControlAppUsername,\n              password: encryptedControlAppPassword,\n              user_mios: encryptedMiosUser,\n              password_mios: encryptedMiosPassword,\n            },\n          },\n        };\n\n        await editProject(projectEditionConfig).catch((rejectedReason) => {\n          console.log(\"Error edition:\", rejectedReason);\n        });\n\n        refetchProjectDataTable();\n        refetch();\n\n        setTimeout(() => {\n          setNewOpenEditAlert(true);\n          setModalCreateorEditProject(false);\n        }, 500);\n      } catch (exceptionError) {\n        console.log(exceptionError);\n      }\n    }\n  };\n\n  const creatingProject = async () => {\n    if (\n      filledNameProject &&\n      filledStart_Time &&\n      filledEnd_Time &&\n      selectedCountry &&\n      selectedCity &&\n      selectedState\n      // filledControlAppUsername &&\n      // filledControlAppPassword\n    ) {\n      try {\n        const ENCRYPT_DECRYPT_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\n        // const startHour = getHours(dataProjects?.projectStart_time);\n        // const startMinute = getMinutes(dataProjects?.projectStart_time);\n\n        // const endHour = getHours(dataProjects?.projectEnd_time);\n        // const endMinute = getMinutes(dataProjects?.projectEnd_time);\n\n        // const formattedStartTime = `${startHour}:${startMinute\n        //   ?.toString()\n        //   ?.padStart(2, \"0\")}`;\n        // const formattedEndTime = `${endHour}:${endMinute\n        //   ?.toString()\n        //   ?.padStart(2, \"0\")}`;\n\n        const userId = [parseInt(localStorage.getItem(\"np\"))];\n        const encryptedControlAppUsername = await encryptData(\n          dataProjects?.projectControlAppUsername,\n          ENCRYPT_DECRYPT_KEY\n        );\n        const encryptedControlAppPassword = await encryptData(\n          dataProjects?.projectControlAppPassword,\n          ENCRYPT_DECRYPT_KEY\n        );\n        const encryptedMiosUser = await encryptData(\n          dataProjects?.userMios,\n          ENCRYPT_DECRYPT_KEY\n        );\n        const encryptedMiosPassword = await encryptData(\n          dataProjects?.passwordMios,\n          ENCRYPT_DECRYPT_KEY\n        );\n\n        const projectCreationConfig = {\n          variables: {\n            name: dataProjects?.projectName,\n            // start_time: formattedStartTime,\n            // end_time: formattedEndTime,\n            start_time: dataProjects?.projectStart_time,\n            end_time: dataProjects?.projectEnd_time,\n            country: dataProjects?.countryLabel,\n            state: dataProjects?.projectState,\n            city: dataProjects?.projectCity,\n            currency: dataProjects?.currency,\n            prefix_currency: dataProjects?.prefix_currency,\n            time_zone: dataProjects?.time_zone,\n            // img: dataProjects.projectImg,\n            image: dataProjects?.projectImg,\n            CityId: 1,\n            UserId: userId,\n            controllersCredentials: {\n              user: encryptedControlAppUsername,\n              password: encryptedControlAppPassword,\n              user_mios: encryptedMiosUser,\n              password_mios: encryptedMiosPassword,\n            },\n          },\n        };\n\n        await createProject(projectCreationConfig).catch((rejectedReason) => {\n          console.log(\"Error creation:\", rejectedReason);\n        });\n\n        refetchProjectDataTable();\n        setOpenCreateAlert(true);\n\n        setTimeout(() => {\n          setModalCreateorEditProject(false);\n          resetInputs();\n        }, 1000);\n      } catch (exceptionError) {\n        console.log(exceptionError);\n      }\n    }\n  };\n\n  if (data) {\n    return (\n      <>\n        <Dialog\n          className=\"user_creation_modal\"\n          aria-labelledby=\"responsive-dialog-title\"\n          PaperProps={{\n            sx: {\n              width: \"500px\",\n              height: \"auto\",\n              borderRadius: \"8px\",\n              [theme.breakpoints.down(\"sm\")]: { height: \"auto\" },\n              [theme.breakpoints.down(\"md\")]: { height: \"auto\" },\n              [theme.breakpoints.down(\"lg\")]: { height: \"auto\" },\n            },\n          }}\n          open={modalCreateOrEditProject}\n          onClose={() => handleCloseModal()}\n        >\n          <AppBar sx={{ position: \"relative\", backgroundColor: \"#2EB142\" }}>\n            <Toolbar>\n              <Typography\n                sx={{\n                  flex: \"2px\",\n                  textAlign: \"center\",\n                }}\n                variant=\"h6\"\n                component=\"div\"\n              >\n                <span>\n                  {String(\n                    t(\n                      `${TRANSLATION_SHORTCUT}${\n                        pressedEditButton ? \"EDIT\" : \"CREATE\"\n                      }_TITLE`\n                    )\n                  )}\n                </span>\n              </Typography>\n              <IconButton\n                color=\"inherit\"\n                onClick={handleCloseModal}\n                sx={{\n                  display: \"flex\",\n                  position: \"absolute\",\n                }}\n                edge=\"end\"\n              >\n                <CloseIcon />\n              </IconButton>\n            </Toolbar>\n          </AppBar>\n          <form className={classes.root} noValidate autoComplete=\"off\">\n            <div className={classes.photoContainer} onClick={handleClickImg}>\n              <input\n                type=\"file\"\n                ref={imgRef}\n                onChange={handleImageChange}\n                style={{ display: \"none\" }}\n              />\n              <Avatar\n                variant=\"rounded\"\n                src={dataProjects?.projectImg}\n                sx={{\n                  width: 180,\n                  height: 180,\n                  boxShadow: \"1px 1px 4px 4px rgb(146 158 158 / 30%)\",\n                  cursor: \"pointer\",\n                  \":hover\": { opacity: \"0.5\" },\n\n                  [theme.breakpoints.down(\"sm\")]: {\n                    width: 150,\n                    height: 150,\n                  },\n                }}\n              >\n                <PhotoCamera />\n              </Avatar>\n            </div>\n\n            <div className={classes.textFieldsContainer}>\n              <FormControl\n                size=\"small\"\n                sx={{\n                  display: \"flex\",\n                  height: 45,\n                  width: 364,\n                  [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n                }}\n              >\n                <InputLabel id=\"demo-select-small-label\">\n                  {t(`${TRANSLATION_SHORTCUT}IMAGE_SELECT_HELPER_TEXT`)}\n                </InputLabel>\n                <Select\n                  labelId=\"demo-select-small-label\"\n                  id=\"demo-select-small\"\n                  value={dataProjects?.projectImg}\n                  label=\"Imagenes Disponibles\"\n                  onChange={selectExistingImg}\n                >\n                  {imgFilter?.map((name) => (\n                    <MenuItem key={name?.name} value={name?.img}>\n                      {name?.name}\n                    </MenuItem>\n                  ))}\n                </Select>\n              </FormControl>\n              <TextField\n                className=\"name_project\"\n                InputProps={{ sx: { borderRadius: 2 } }}\n                sx={{\n                  display: \"flex\",\n                  height: 45,\n                  width: 364,\n                  [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n                }}\n                placeholder=\"Nombre proyecto\"\n                value={dataProjects?.projectName}\n                onChange={handleNameChange}\n                color={filledNameProject ? \"success\" : \"error\"}\n                id=\"project_name_field\"\n                spacing={1}\n                name=\"project_name\"\n                variant=\"outlined\"\n                size=\"small\"\n                autoComplete=\"off\"\n              />\n              <Autocomplete\n                id=\"size-small-outlined\"\n                size=\"small\"\n                options={partnerCountries}\n                value={associatedCountry[0]}\n                onChange={(e) => handleSelectCountry(e.target.textContent)}\n                autoHighlight\n                getOptionLabel={(option) => option?.name || \"\"}\n                renderOption={(props, option) => (\n                  <Box\n                    component=\"li\"\n                    sx={{ \"& > img\": { mr: 2, flexShrink: 0 } }}\n                    {...props}\n                  >\n                    <img\n                      loading=\"lazy\"\n                      width=\"20\"\n                      src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n                      srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n                      alt=\"\"\n                    />\n                    {option.name}\n                  </Box>\n                )}\n                renderInput={(params) => (\n                  <TextField\n                    sx={{\n                      height: 45,\n                      width: 364,\n                      borderRadius: 2,\n                      [theme.breakpoints.down(\"sm\")]: { width: \"220px\" },\n                    }}\n                    {...params}\n                    label={t(`${TRANSLATION_SHORTCUT}COUNTRY`)}\n                    color={selectedCountry ? \"success\" : \"error\"}\n                    inputProps={{\n                      ...params.inputProps,\n                      autoComplete: \"new-password\",\n                    }}\n                  >\n                    {partnerCountries?.map((countryInitial) => (\n                      <MenuItem\n                        key={countryInitial?.code}\n                        value={countryInitial?.code}\n                      >\n                        {countryInitial?.name}\n                      </MenuItem>\n                    ))}\n                  </TextField>\n                )}\n              />\n              <div className={classes.forms}>\n                <FormControl sx={{ height: 100, width: 190 }}>\n                  <Autocomplete\n                    id=\"size-small-outlined\"\n                    size=\"small\"\n                    sx={{ width: \"126.17px\" }}\n                    disabled={\n                      dataProjects?.countryLabel === \"\" ||\n                      ![\n                        \"Colombia\",\n                        \"Mexico\",\n                        \"Puerto Rico\",\n                        \"Ecuador\",\n                        \"Republica Dominicana\",\n                      ]?.includes(dataProjects?.countryLabel)\n                    }\n                    options={statesOptions?.flat()}\n                    getOptionLabel={(option) => option?.name || \"\"}\n                    onChange={handleSelectState}\n                    value={associatedState[0]}\n                    renderInput={(params) => (\n                      <TextField\n                        {...params}\n                        sx={{\n                          width: \"174.10px\",\n                          [theme.breakpoints.down(\"sm\")]: {\n                            display: \"flex\",\n                            width: \"220px\",\n                          },\n                        }}\n                        color={selectedState ? \"success\" : \"error\"}\n                        label={t(`${TRANSLATION_SHORTCUT}STATE`)}\n                        disabled={\n                          dataProjects?.countryLabel === \"\" ||\n                          ![\n                            \"Colombia\",\n                            \"Mexico\",\n                            \"Puerto Rico\",\n                            \"Ecuador\",\n                            \"Republica Dominicana\",\n                          ]?.includes(dataProjects?.countryLabel)\n                        }\n                      />\n                    )}\n                  />\n                </FormControl>\n                <FormControl sx={{ height: 100, width: 190 }}>\n                  <Autocomplete\n                    id=\"size-small-outlined\"\n                    sx={{ width: \"126.17px\" }}\n                    disabled={dataProjects?.projectState === \"\"}\n                    size=\"small\"\n                    options={citiesOptions?.flat()?.flat()}\n                    getOptionLabel={(option) => option?.name || \"\"}\n                    onChange={handleSelectCity}\n                    value={associatedCity[0]}\n                    renderInput={(params) => (\n                      <TextField\n                        sx={{\n                          width: \"174.10px\",\n                          [theme.breakpoints.down(\"sm\")]: {\n                            display: \"flex\",\n                            width: \"220px\",\n                          },\n                        }}\n                        {...params}\n                        color={selectedCity ? \"success\" : \"error\"}\n                        label={t(`${TRANSLATION_SHORTCUT}CITY`)}\n                        disabled={dataProjects?.projectState === \"\"}\n                      />\n                    )}\n                  />\n                </FormControl>\n              </div>\n              <div style={{ display: \"flex\", gap: \"20px\" }}>\n                <FormControl\n                  size=\"small\"\n                  color={filledStart_Time ? \"success\" : \"error\"}\n                  sx={{\n                    width: 365,\n                    height: 50,\n                    [theme.breakpoints.down(\"sm\")]: {\n                      display: \"flex\",\n                      width: \"220px\",\n                    },\n                  }}\n                >\n                  <InputLabel id=\"demo-select-small-label\">\n                    {t(`${TRANSLATION_SHORTCUT}CLOSING_TIME`)}\n                  </InputLabel>\n                  <Select\n                    labelId=\"demo-select-small-label\"\n                    id=\"demo-select-small\"\n                    label={t(`${TRANSLATION_SHORTCUT}CLOSING_TIME`)}\n                    value={`${dataProjects?.projectStart_time} - ${dataProjects?.projectEnd_time}`}\n                    onChange={handleSelect_StartTime_EndTime}\n                  >\n                    <MenuItem\n                      style={{ display: \"flex\", justifyContent: \"center\" }}\n                      value={\"0:00 - 23:59\"}\n                    >\n                      12:00 AM - 11:59 PM\n                    </MenuItem>\n                    <MenuItem\n                      style={{ display: \"flex\", justifyContent: \"center\" }}\n                      value={\"15:00 - 14:59\"}\n                    >\n                      3:00 PM - 2:59 PM\n                    </MenuItem>\n                  </Select>\n                </FormControl>\n\n                {/* <LocalizationProvider dateAdapter={AdapterDayjs}>\n                  <MobileTimePicker\n                    color={filledStart_Time ? \"success\" : \"error\"}\n                    InputProps={{ sx: { borderRadius: 2 } }}\n                    label={t(`${TRANSLATION_SHORTCUT}START_TIME`)}\n                    value={dataProjects?.projectStart_time}\n                    onChange={handleSelect_StartTime}\n                    renderInput={(params) => (\n                      <TextField\n                        sx={{\n                          width: 170,\n                          height: 80,\n                          [theme.breakpoints.down(\"sm\")]: {\n                            display: \"flex\",\n                            width: \"220px\",\n                          },\n                        }}\n                        size={\"small\"}\n                        name=\"start_time\"\n                        disabled={true}\n                        {...params}\n                      />\n                    )}\n                  />\n\n                  <MobileTimePicker\n                    color={filledEnd_Time ? \"success\" : \"error\"}\n                    InputProps={{ sx: { borderRadius: 2 } }}\n                    label={t(`${TRANSLATION_SHORTCUT}END_TIME`)}\n                    value={dataProjects?.projectEnd_time}\n                    onChange={handleSelect_EndTime}\n                    renderInput={(params) => (\n                      <TextField\n                        sx={{\n                          width: 175,\n                          height: 80,\n                          [theme.breakpoints.down(\"sm\")]: {\n                            display: \"flex\",\n                            width: \"220px\",\n                          },\n                        }}\n                        size={\"small\"}\n                        name=\"start_time\"\n                        disabled={true}\n                        {...params}\n                      />\n                    )}\n                  />\n                </LocalizationProvider> */}\n              </div>\n              <span\n                style={{\n                  display: \"flex\",\n                  justifyContent: \"center\",\n                  margin: \"5px 0px 10px 0px\",\n                  padding: \"15px 0px 0px 0px\",\n                  width: \"77%\",\n                  fontSize: \"17px\",\n                  fontWeight: \"500\",\n                  borderTop: \"1px dashed\",\n                }}\n              >\n                {t(`${TRANSLATION_SHORTCUT}EZLO_CREDENTIALS`)}\n              </span>\n              <Box sx={{ display: \"flex\", flexDirection: \"column\" }}>\n                <span\n                  style={{\n                    textAlign: \"center\",\n                    margin: \"5px 0px 10px 0px\",\n                  }}\n                >\n                  -----------------\n                  <b>{t(`${TRANSLATION_SHORTCUT}G150_CREDENTIALS`)}</b>\n                  -----------------\n                </span>\n                <Box sx={{ display: \"flex\" }}>\n                  <TextField\n                    id=\"g150_username_field\"\n                    name=\"projectControlAppUsername\"\n                    className=\"name_project\"\n                    size=\"small\"\n                    variant=\"outlined\"\n                    endAd\n                    placeholder={t(\n                      `${TRANSLATION_SHORTCUT}CONTROL_APP_USERNAME_G150`\n                    )}\n                    spacing={1}\n                    value={dataProjects?.projectControlAppUsername}\n                    onChange={(event) =>\n                      handleControlAppCredentials(\n                        event,\n                        setNewFilledControlAppUsername\n                      )\n                    }\n                    sx={{\n                      display: \"flex\",\n                      height: 45,\n                      width: 174,\n                      [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n                    }}\n                    InputProps={{\n                      sx: { borderRadius: 2 },\n                      autoComplete: \"off\",\n                    }}\n                  />\n                  <FormControl\n                    size=\"small\"\n                    sx={{\n                      display: \"flex\",\n                      width: 174,\n                      [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n                      m: 1,\n                    }}\n                    variant=\"outlined\"\n                  >\n                    <InputLabel htmlFor=\"outlined-adornment-password\">\n                      {t(`${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_G150`)}\n                    </InputLabel>\n                    <OutlinedInput\n                      id=\"g150_password_field\"\n                      name=\"projectControlAppPassword\"\n                      label={t(\n                        `${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_G150`\n                      )}\n                      size=\"small\"\n                      sx={{ borderRadius: \"8px\" }}\n                      type={showControlPassword ? \"text\" : \"password\"}\n                      value={dataProjects?.projectControlAppPassword}\n                      onChange={(event) => handleControlAppCredentials(event)}\n                      autoComplete=\"new-password\"\n                      endAdornment={\n                        <InputAdornment position=\"end\">\n                          <IconButton\n                            aria-label=\"toggle password visibility\"\n                            onClick={handlerControlPasswords}\n                            edge=\"end\"\n                          >\n                            {showControlPassword ? (\n                              <VisibilityOff />\n                            ) : (\n                              <Visibility />\n                            )}\n                          </IconButton>\n                        </InputAdornment>\n                      }\n                    />\n                  </FormControl>\n                </Box>\n                <span\n                  style={{\n                    textAlign: \"center\",\n                    margin: \"5px 0px 10px 0px\",\n                  }}\n                >\n                  -----------------\n                  <b>{t(`${TRANSLATION_SHORTCUT}H700_CREDENTIALS`)}</b>\n                  -----------------\n                </span>\n                <Box sx={{ display: \"flex\" }}>\n                  <TextField\n                    id=\"h700_username_field\"\n                    name=\"userMios\"\n                    className=\"name_project\"\n                    size=\"small\"\n                    variant=\"outlined\"\n                    placeholder={t(\n                      `${TRANSLATION_SHORTCUT}CONTROL_APP_USERNAME_H700`\n                    )}\n                    spacing={1}\n                    value={dataProjects?.userMios}\n                    onChange={(event) => handlerMiosUser(event)}\n                    sx={{\n                      display: \"flex\",\n                      height: 45,\n                      width: 174,\n                      [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n                    }}\n                    InputProps={{\n                      sx: { borderRadius: 2 },\n                      autoComplete: \"off\",\n                    }}\n                  />\n\n                  <FormControl\n                    size=\"small\"\n                    sx={{\n                      display: \"flex\",\n                      width: 174,\n                      [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n                      m: 1,\n                    }}\n                    variant=\"outlined\"\n                  >\n                    <InputLabel htmlFor=\"outlined-adornment-password\">\n                      {t(`${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_H700`)}\n                    </InputLabel>\n                    <OutlinedInput\n                      id=\"h700_password_field\"\n                      name=\"passwordMios\"\n                      label={t(\n                        `${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_H700`\n                      )}\n                      size=\"small\"\n                      sx={{ borderRadius: \"8px\" }}\n                      type={showMiosPassword ? \"text\" : \"password\"}\n                      value={dataProjects?.passwordMios}\n                      onChange={(event) => handlerMiosPassword(event)}\n                      autoComplete=\"new-password\"\n                      endAdornment={\n                        <InputAdornment position=\"end\">\n                          <IconButton\n                            aria-label=\"toggle password visibility\"\n                            onClick={handlerMiosPasswords}\n                            edge=\"end\"\n                          >\n                            {showMiosPassword ? (\n                              <VisibilityOff />\n                            ) : (\n                              <Visibility />\n                            )}\n                          </IconButton>\n                        </InputAdornment>\n                      }\n                    />\n                  </FormControl>\n\n                  {/* <TextField\n                    id=\"filled-basic\"\n                    className=\"name_project\"\n                    size=\"small\"\n                    variant=\"outlined\"\n                    type=\"password\"\n                    placeholder={t(\n                      `${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_H700`\n                    )}\n                    spacing={1}\n                    value={dataProjects?.passwordMios}\n                    onChange={(event) => handlerMiosPassword(event)}\n                    sx={{\n                      display: \"flex\",\n                      height: 45,\n                      width: 174,\n                      [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n                    }}\n                    InputProps={{ sx: { borderRadius: 2 } }}\n                  /> */}\n                </Box>\n              </Box>\n            </div>\n\n            <div className={classes.buttonContainer}>\n              <Button\n                sx={{\n                  borderRadius: 2,\n                  boxShadow: \"1px 1px 4px 4px rgb(146 158 158 / 30%)\",\n                  width: \"77%\",\n                  [theme.breakpoints.down(\"sm\")]: {\n                    display: \"flex\",\n                    width: \"220px\",\n                  },\n                }}\n                disabled={\n                  !selectedCountry ||\n                  !selectedCity ||\n                  !selectedState ||\n                  !filledNameProject ||\n                  !filledStart_Time ||\n                  !filledEnd_Time\n                  // !filledControlAppUsername ||\n                  // !filledControlAppPassword\n                }\n                variant=\"contained\"\n                color=\"success\"\n                size=\"medium\"\n                onClick={pressedEditButton ? editProjects : creatingProject}\n              >\n                {t(`${TRANSLATION_SHORTCUT}BUTTON_TEXT`)}\n              </Button>\n            </div>\n          </form>\n        </Dialog>\n\n        <div>\n          <Snackbar\n            open={openCreateAlert}\n            autoHideDuration={2000}\n            onClose={handleCloseAlert}\n            anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n          >\n            <Alert severity=\"success\">\n              {t(`${TRANSLATION_SHORTCUT}SUCCESSFUL_CREATION`)}\n            </Alert>\n          </Snackbar>\n\n          <Snackbar\n            open={openEditAlert}\n            autoHideDuration={2000}\n            onClose={handleCloseAlert}\n            anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n          >\n            <Alert severity=\"success\">\n              {t(`${TRANSLATION_SHORTCUT}SUCCESSFUL_EDIT`)}\n            </Alert>\n          </Snackbar>\n        </div>\n      </>\n    );\n  }\n};\n","import { useQuery } from \"@apollo/client\";\nimport { GET_ALL_USER_PROJECT } from \"../../../../../controllers/projectController\";\nimport { useState } from \"react\";\n\nexport const useProjectUser = () => {\n \n  const [dataProject, setData] = useState(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n\n\n  useQuery(GET_ALL_USER_PROJECT, {\n    fetchPolicy: 'network-only',\n    onCompleted: (data) => {\n      setData(data?.getAllProjectsByUser?.Projects);\n    },\n    onError: (error) => {\n      setLoading(false);\n      setError(error);\n    }\n  });\n  \n\n  const projectsNameId = dataProject?.map(i => ({\n    id: String(i.id),\n    name: i.name,\n    img : i.img,\n    country : i.country,\n    state : i.state,\n    city : i.city, \n    enabled: i.enabled\n  }))\n\n  return { projectsNameId };\n};","import React, { useEffect, useState } from \"react\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Fragment } from \"react\";\nimport { Tooltip } from \"@mui/material\";\nimport ModeEditIcon from \"@mui/icons-material/ModeEdit\";\nimport { Fab } from \"@material-ui/core\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport ToggleSwitch from \"../../../components/toggleSwitch/ToggleSwitch\";\n//Components\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { ModalCreateOrEditProject } from \"../../../components/projectsManagements/ModalCreateOrEditProject\";\nimport { ModalAlertChangeProjectStatus } from \"../projectsManagement/ChangeProjectStatusModal\";\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_ALL_USER_PROJECT } from \"../../../controllers/projectController\";\nimport { dividirArray, imgfilter } from \"./helpers/helperNameAndImg\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { projcetUser, useProjectUser } from \"./helpers/hooks/useProject\";\nconst useStyles = makeStyles({\n  root: {\n    minWidth: 275,\n    margin: 25,\n  },\n  contents: {\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  options: {\n    marginBottom: \"2%\",\n    marginTop: \"2%\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  },\n});\nfunction sleep(delay = 0) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, delay);\n  });\n}\n\nexport default function ProjectManagement() {\n  const { t } = useTranslation();\n  const recordsPerPage = 6;\n  const { projectsNameId } = useProjectUser();\n  const classes = useStyles();\n  const [projectIdd, setProjectIdd] = React.useState(\"\");\n  const {\n    projects,\n    setProjects,\n    permissionsRoleUser,\n    modalCreateOrEditProject,\n    setModalCreateorEditProject,\n    openChangeProjectStatusModal,\n    setOpenChangeProjectStatusModal,\n  } = React.useContext(AuthContext);\n  const [selectedProject, setSelectedProject] = useState(null);\n  const [inputCleared, setInputCleared] = useState(false);\n  const [searchTerm, setSearchTerm] = React.useState(\"\");\n  const [totalsProjects, setTotalProjects] = useState(0);\n  const [currentProjectPage, setCurrentProjectPage] = React.useState(0);\n  const { data, loading, error, refetch } = useQuery(GET_ALL_USER_PROJECT, {\n    fetchPolicy: \"network-only\",\n  });\n  const dataProjects = data?.getAllProjectsByUser?.Projects;\n\n  useEffect(() => {\n    if (data) {\n      dataProjects?.map((i) => setTotalProjects(i));\n      const filteredProjects = dataProjects.filter((project) =>\n        project?.name?.toLowerCase()?.includes(searchTerm?.toLowerCase())\n      );\n      setProjects(filteredProjects);\n      setCurrentProjectPage(1);\n    }\n  }, [data, searchTerm]);\n\n  const [open, setOpen] = React.useState(false);\n  const [options, setOptions] = React.useState([]);\n  const loadingText = open && options.length === 0;\n  const lastIndex = currentProjectPage * recordsPerPage;\n  const firstIndex = lastIndex - recordsPerPage;\n  const records = projects.slice(firstIndex, lastIndex);\n  const recordsIds = projectsNameId?.map((project) => project?.id);\n  const totalProjectPages = Math.ceil(projects.length / recordsPerPage);\n  const [pressedEditButton, setPressedEditButton] = useState(false);\n  const [pressedCreateButton, setPressedCreateButton] = useState(false);\n  const [selectedCountry, setNewSelectedCountry] = useState(true);\n  const [filledNameProject, setNewFilledNameProject] = useState(true);\n  const [selectedState, setNewSelectedState] = useState(true);\n  const [filledStart_Time, setNewFilledStart_Time] = useState(true);\n  const [filledEnd_Time, setNewFilledEnd_Time] = useState(true);\n  const [selectedCity, setNewSelectedCity] = useState(true);\n  const [filledControlAppUsername, setNewFilledControlAppUsername] = useState(true);\n  const [filledControlAppPassword, setNewFilledControlAppPassword] = useState(true);\n\n  const handleOpenCreate = () => {\n    setPressedEditButton(false);\n    setPressedCreateButton(true);\n    setModalCreateorEditProject(!modalCreateOrEditProject);\n    setNewFilledNameProject(false);\n    setNewSelectedCountry(false);\n    setNewSelectedState(false);\n    setNewSelectedCity(false);\n    setNewFilledStart_Time(true);\n    setNewFilledEnd_Time(true);\n    setNewFilledControlAppUsername(false);\n    setNewFilledControlAppPassword(false);\n  };\n  const handleOpenEdit = (id) => {\n    setProjectIdd(id);\n    setPressedEditButton(true);\n    setPressedCreateButton(false);\n    setModalCreateorEditProject(true);\n    setNewFilledNameProject(true);\n    setNewSelectedCountry(true);\n    setNewSelectedState(true);\n    setNewSelectedCity(true);\n    setNewFilledStart_Time(true);\n    setNewFilledEnd_Time(true);\n    setNewFilledControlAppUsername(true);\n    setNewFilledControlAppPassword(true);\n  };\n  const handleOpenChangeProjectStatus = () => {\n    setOpenChangeProjectStatusModal(true);\n  };\n\n  React.useEffect(() => {\n    let active = true;\n    if (!loadingText) {\n      return undefined;\n    }\n    (async () => {\n      await sleep(1e3);\n      if (active) {\n        const filteredOptions = dataProjects?.filter((project) =>\n          project?.name?.toLowerCase()?.includes(searchTerm?.toLowerCase())\n        );\n        setOptions([...filteredOptions]);\n      }\n    })();\n    return () => {\n      active = false;\n    };\n  }, [loadingText, searchTerm]);\n  React.useEffect(() => {\n    if (!open) {\n      setOptions([]);\n    }\n  }, [open]);\n\n  const preProjectPage = () => {\n    if (currentProjectPage !== 0) {\n      if (currentProjectPage !== 0) {\n        setCurrentProjectPage(currentProjectPage - 1);\n      }\n    }\n  };\n  const changeCurrentProjectPage = (id, projectName) => {\n    setCurrentProjectPage(id);\n    setSearchTerm(projectName);\n  };\n  const nextPage = () => {\n    if (currentProjectPage !== totalProjectPages) {\n      setCurrentProjectPage(currentProjectPage + 1);\n    }\n  };\n\n  const handleInputChange = (event) => {\n    const inputName = event.target.value;\n    const matchingProjects = dataProjects?.filter((project) =>\n      project?.name?.toLowerCase()?.includes(inputName?.toLowerCase())\n    );\n    setOptions([...matchingProjects]);\n    setSearchTerm(inputName);\n    setInputCleared(false);\n  };\n\n  const handleAutocompleteChange = (event, value) => {\n    if (value) {\n      setSelectedProject(value);\n      setSearchTerm(value?.name);\n    } else {\n      setSelectedProject(null);\n      setSearchTerm(\"\");\n      setInputCleared(true);\n      setCurrentProjectPage(1);\n    }\n  };\n\n  if (error) {\n    return (\n      <div>\n        <lottie-player\n          style={{\n            width: \"70%\",\n            marginLeft: \"30%\",\n            marginRight: \"auto\",\n          }}\n          className=\"_logo\"\n          src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n          background=\"transparent\"\n          speed=\"1\"\n          loop\n          autoplay\n        ></lottie-player>\n      </div>\n    );\n  }\n  if (loading) {\n    return (\n      <div\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        }}\n      >\n        <Loading />\n      </div>\n    );\n  }\n  return (\n    <Fragment>\n      {permissionsRoleUser?.permissionsRole?.GesProjectVer ? (\n        <div className=\"project_datatable_container\">\n          <div className=\"project_container_header\">\n            <div className=\"table_title_container\">\n              <h1 className=\"table_title\">\n                {t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.TABLE_TITLE\"\n                )}\n              </h1>\n            </div>\n            <div className=\"container_button_and_filter\">\n              <div className=\"content_header_project_button\">\n                {permissionsRoleUser?.permissionsRole?.GesProjectCrear ? (\n                  <Tooltip title=\"Agregar Proyecto\">\n                    <button\n                      className=\"project_button_agreger\"\n                      onClick={handleOpenCreate}\n                    >\n                      <i className=\"fas fa-plus\"></i>\n                    </button>\n                  </Tooltip>\n                ) : null}\n              </div>\n              <div className=\"project_filter_container\">\n                <Autocomplete\n                  id=\"project_filter\"\n                  value={options}\n                  inputValue={inputCleared ? \"\" : searchTerm}\n                  disableClearable={true}\n                  onChange={handleAutocompleteChange}\n                  open={open}\n                  onInput={handleInputChange}\n                  onOpen={() => {\n                    setOpen(true);\n                  }}\n                  onClose={() => {\n                    setOpen(false);\n                  }}\n                  isOptionEqualToValue={(option, value) =>\n                    option.name === value.name\n                  }\n                  getOptionLabel={(option) => option.name}\n                  options={options}\n                  loading={loadingText}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label={t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.SEARCH_INPUT\"\n                      )}\n                      size=\"small\"\n                      value={searchTerm}\n                      InputProps={{\n                        ...params.InputProps,\n                        endAdornment: (\n                          <React.Fragment>\n                            {loadingText ? (\n                              <CircularProgress color=\"inherit\" size={20} />\n                            ) : null}\n                            {params.InputProps.endAdornment}\n                          </React.Fragment>\n                        ),\n                        sx: { borderRadius: 2 },\n                      }}\n                    />\n                  )}\n                />\n              </div>\n            </div>\n          </div>\n          <div className=\"table_container\">\n            <table className=\"project_datatable\">\n              <thead className=\"project_container_title_table\">\n                <tr>\n                  <th>\n                    <h3 className=\"project_img\">\n                      {t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.LOGO\"\n                      )}\n                    </h3>\n                  </th>\n                  <th>\n                    <h3 className=\"project_name\">\n                      {t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.NAME\"\n                      )}\n                    </h3>\n                  </th>\n                  <th>\n                    <h3 className=\"project_country\">\n                      {t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COUNTRY\"\n                      )}\n                    </h3>\n                  </th>\n                  <th>\n                    <h3 className=\"project_state\">\n                      {t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.STATE\"\n                      )}\n                    </h3>\n                  </th>\n                  <th>\n                    <h3 className=\"project_city\">\n                      {t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.CITY\"\n                      )}\n                    </h3>\n                  </th>\n                  <th>\n                    <h3 className=\"project_status\">\n                      {t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.STATUS\"\n                      )}\n                    </h3>\n                  </th>\n                  <th>\n                    <h3 className=\"project_edit\">\n                      {t(\n                        \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.MODIFICATIONS\"\n                      )}\n                    </h3>\n                  </th>\n                </tr>\n              </thead>\n              {records?.map((item, key) => (\n                <tbody key={key} className=\"project_container_table_body\">\n                  <>\n                    <tr>\n                      <td className=\"project_container_img\">\n                        <img\n                          className=\"project_logo\"\n                          alt=\"logo\"\n                          src={item?.img}\n                        />\n                      </td>\n                      <td className=\"project_container_name\">{item?.name}</td>\n                      <td className=\"project_container_country\">\n                        {item?.country === null ? item?.Country : item?.country}\n                      </td>\n                      <td className=\"project_container_state\">\n                        {item?.state === null ? item?.State : item?.state}\n                      </td>\n                      <td className=\"project_container_city\">\n                        {item?.city === null ? item?.City : item?.city}\n                      </td>\n                      <td className=\"main_project_status_container\">\n                        <span\n                          className={`${\n                            item?.enabled\n                              ? \"container_status_active_project\"\n                              : \"container_status_inactive_project\"\n                          }`}\n                        >\n                          {String(\n                            item?.enabled === false\n                              ? t(\n                                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.INACTIVE\"\n                                )\n                              : t(\n                                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.ACTIVE\"\n                                )\n                          )}\n                        </span>\n                      </td>\n                      <td>\n                        <div className=\"project_container_acctions\">\n                          {permissionsRoleUser?.permissionsRole\n                            ?.GesRolEditar ? (\n                            <Tooltip\n                              title={t(\n                                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.MODAL_EDIT_TOOLTIP\"\n                              )}\n                            >\n                              <ModeEditIcon\n                                className=\"project_edit_button\"\n                                onClick={() => handleOpenEdit(item?.id)}\n                              />\n                            </Tooltip>\n                          ) : null}\n                          {permissionsRoleUser.permissionsRole\n                            ?.GesProjectDes ? (\n                            <ToggleSwitch\n                              statusRefetch={refetch}\n                              projects={dataProjects}\n                              currentIdProject={item?.id}\n                              currentProjectStatus={item?.enabled}\n                            />\n                          ) : null}\n                        </div>\n                      </td>\n                    </tr>\n                  </>\n                </tbody>\n              ))}\n            </table>\n          </div>\n        </div>\n      ) : null}\n      <div className=\"projects_pagination\">\n        <Fab\n          size=\"small\"\n          aria-label=\"left\"\n          className=\"projects_pagination_button\"\n          onClick={preProjectPage}\n          disabled={currentProjectPage <= 1}\n        >\n          <ChevronLeftIcon onClick={preProjectPage} />\n        </Fab>\n        <span>\n          {currentProjectPage} / {totalProjectPages}\n        </span>\n        <Fab\n          size=\"small\"\n          aria-label=\"right\"\n          className=\"projects_pagination_button\"\n          onClick={nextPage}\n          disabled={\n            currentProjectPage === totalProjectPages || totalProjectPages == 0\n          }\n        >\n          <ChevronRightIcon onClick={nextPage} />\n        </Fab>\n      </div>\n      <ModalCreateOrEditProject\n        projectIdd={projectIdd}\n        pressedEditButton={pressedEditButton}\n        setPressedEditButton={setPressedEditButton}\n        pressedCreateButton={pressedCreateButton}\n        setPressedCreateButton={setPressedCreateButton}\n        filledNameProject={filledNameProject}\n        setNewFilledNameProject={setNewFilledNameProject}\n        selectedCountry={selectedCountry}\n        setNewSelectedCountry={setNewSelectedCountry}\n        selectedState={selectedState}\n        setNewSelectedState={setNewSelectedState}\n        selectedCity={selectedCity}\n        setNewSelectedCity={setNewSelectedCity}\n        filledStart_Time={filledStart_Time}\n        setNewFilledStart_Time={setNewFilledStart_Time}\n        filledEnd_Time={filledEnd_Time}\n        setNewFilledEnd_Time={setNewFilledEnd_Time}\n        setRefetchProjectTable={refetch}\n        imgFilter={dataProjects}\n        filledControlAppUsername={filledControlAppUsername}\n        setNewFilledControlAppUsername={setNewFilledControlAppUsername}\n        filledControlAppPassword={filledControlAppPassword}\n        setNewFilledControlAppPassword={setNewFilledControlAppPassword}\n      />\n      <ModalAlertChangeProjectStatus\n        recordsIds={recordsIds}\n        refetchTable={refetch}\n      />\n    </Fragment>\n  );\n}\n","import React, { useContext, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport { useTheme, createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Button from \"@mui/material/Button\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport { AlertComponent } from \"./AlertComponent\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\n//query\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  UPDATE_MANY_USERS,\n  GET_ALL_USER,\n} from \"../../controllers/usersControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\nconst customRed = \"#f19393\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n    error: {\n      main: customRed,\n    },\n  },\n});\n\nexport const ModalAlertUserStatusChange = ({\n  roleId,\n  setCheckedUserToggle,\n  checkedUserToggle,\n  openChangeUserStatusFromToggle,\n  setOpenChangeUserStatusFromToggle,\n}) => {\n  const { t } = useTranslation();\n  const [open, setOpen] = useState(false);\n  const [message, setMessage] = useState();\n  const [styleMessage, setStyleMessage] = useState({});\n  const { users, openChangeUserStatusModal, setOpenChangeUserStatusModal } =\n    useContext(AuthContext);\n\n  const [activateOrDesactivateUser] = useMutation(UPDATE_MANY_USERS);\n  const { refetch } = useQuery(GET_ALL_USER, {\n    fetchPolicy: \"network-only\",\n  });\n\n  const dataUsers = users?.map((item) => {\n    if (roleId === item.id) {\n      return { id: item.id, enabled: item.enabled };\n    }\n  });\n\n  const filteredUser = dataUsers?.filter((i) => i !== undefined);\n  filteredUser?.map((item, key) => {\n    if (item.enabled === true) {\n      item.enabled = false;\n    } else {\n      item.enabled = true;\n    }\n    return item.enabled;\n  });\n\n  function updateEnableUsers() {\n    try {\n      setCheckedUserToggle(!checkedUserToggle);\n      activateOrDesactivateUser({\n        variables: { input: filteredUser },\n      })\n        .then((resul) => {})\n        .catch((err) => {});\n    } catch (err) {}\n    setOpenChangeUserStatusFromToggle(false);\n    refetch();\n  }\n\n  const handleClose = () => {\n    setOpenChangeUserStatusModal(false);\n    setOpenChangeUserStatusFromToggle(false);\n  };\n\n  return (\n    <>\n      <Dialog\n        open={openChangeUserStatusModal || openChangeUserStatusFromToggle}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"35%\",\n            height: \"auto\",\n            [theme.breakpoints.down(\"md\")]: {\n              width: \"45%\",\n            },\n            [theme.breakpoints.down(\"sm\")]: {\n              width: \"90%\",\n            },\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            lineHeight: \"2.6\",\n            padding: \"5px 5px 5px 40px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"18px\",\n              fontWeight: \"bold\",\n            }}\n          >\n            {t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CHANGE_USER_STATUS.TITLE_MODAL\"\n            )}\n          </span>\n          <IconButton onClick={handleClose}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              alignItems: \"center\",\n              gap: \"25px\",\n              width: \"90%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"18px\",\n              marginTop: \"20px\",\n            }}\n          >\n            <span\n              style={{\n                display: \"flex\",\n                textAlign: \"center\",\n                width: \"100%\",\n                fontFamily: \"Montserrat, sans-serif\",\n                fontSize: \"17px\",\n              }}\n            >\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CHANGE_USER_STATUS.DESCRIPTION\"\n              )}\n            </span>\n            <div style={{ display: \"flex\", gap: \"40px\" }}>\n              <ThemeProvider theme={theme}>\n                <Button\n                  variant=\"contained\"\n                  color=\"success\"\n                  size=\"small\"\n                  sx={{\n                    color: \"#000\",\n                    borderRadius: \"8px\",\n                    border: \"solid #89cf90\",\n                    width: 200,\n                    \"&:hover\": { backgroundColor: \"#8ae38a\" },\n                  }}\n                  onClick={() => {\n                    updateEnableUsers();\n                    handleClose();\n                  }}\n                >\n                  {t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CHANGE_USER_STATUS.BUTTON_TEXT\"\n                  )}\n                </Button>\n              </ThemeProvider>\n            </div>\n          </div>\n        </DialogContent>\n      </Dialog>\n\n      <AlertComponent\n        open={open}\n        message={message}\n        styleMessage={styleMessage}\n      />\n    </>\n  );\n};\n","import React, { useState } from \"react\";\nimport { Tooltip } from \"@mui/material\";\nimport { ModalAlertUserStatusChange } from \"../roleManager/ModalAlertUserStatusChange\";\n\n//components\nimport { WrapperSwitch, StyledSwitch } from \"./style/ToggleSwitch.style\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction UserToggleSwitch({ currentIdUser, currentUserStatus }) {\n  const { t } = useTranslation();\n  const [openChangeUserStatusFromToggle, setOpenChangeUserStatusFromToggle] =\n    useState(false);\n\n  const [roleId, setRoleId] = useState(\"\");\n  const [checkedUserToggle, setCheckedUserToggle] = useState(currentUserStatus);\n\n  const handleOpenChangeRoleStatusModal = () => {\n    setRoleId(currentIdUser);\n    setOpenChangeUserStatusFromToggle(true);\n  };\n\n  return (\n    <WrapperSwitch>\n      <StyledSwitch className=\"StyledSwitch\">\n        <Tooltip\n          title={\n            currentUserStatus === true\n              ? t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.USER_TOGGLE_TOOLTIP_DISABLE\"\n                )\n              : t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.USER_TOGGLE_TOOLTIP_ENABLE\"\n                )\n          }\n        >\n          <label className=\"switch\">\n            <input\n              type=\"checkbox\"\n              onChange={handleOpenChangeRoleStatusModal}\n              checked={currentUserStatus === true}\n            />\n            <div className=\"slider round\"></div>\n          </label>\n        </Tooltip>\n      </StyledSwitch>\n      <ModalAlertUserStatusChange\n        openChangeUserStatusFromToggle={openChangeUserStatusFromToggle}\n        setOpenChangeUserStatusFromToggle={setOpenChangeUserStatusFromToggle}\n        checkedUserToggle={checkedUserToggle}\n        setCheckedUserToggle={setCheckedUserToggle}\n        roleId={roleId}\n      />\n    </WrapperSwitch>\n  );\n}\n\nexport default UserToggleSwitch;\n","import React, { useState, useContext, useEffect, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Visibility from \"@material-ui/icons/Visibility\";\nimport VisibilityOff from \"@material-ui/icons/VisibilityOff\";\nimport VisibilityTwo from \"@material-ui/icons/Visibility\";\nimport VisibilityOffTwo from \"@material-ui/icons/VisibilityOff\";\nimport Button from \"@material-ui/core/Button\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Alert from \"@mui/material/Alert\";\nimport { AlertTitle } from \"@mui/material\";\nimport Stack from \"@mui/material/Stack\";\nimport { Fragment } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport { partnerCountries } from \"../../../utils/dataCountries.json\";\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\n\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  GET_USER_ROLE,\n  CREATE_USER,\n} from \"../../../controllers/usersControllers\";\n\n//components\nimport Loading from \"../../loading/Loading\";\nimport { Box } from \"@material-ui/core\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    \"& .MuiTextField-root\": {\n      margin: theme.spacing(1),\n    },\n    padding: \"15px\",\n  },\n  forms: {\n    display: \"flex\",\n    [theme.breakpoints.down(\"xs\")]: {\n      display: \"flex\",\n      flexDirection: \"column\",\n    },\n  },\n  tittle: {\n    padding: \"0px\",\n    marginLeft: \"10px\",\n    marginTop: \"-4rem\",\n    marginBottom: \"10px\",\n  },\n  input: {\n    marginLeft: \"10px\",\n    marginTop: \"10px\",\n  },\n  tittleTwo: {\n    marginBottom: \"0px\",\n    marginTop: \"0px\",\n  },\n  tittleThree: {\n    marginTop: \"16px\",\n    marginLeft: \"10px\",\n    marginBottom: \"15px\",\n  },\n  rolesProjectsContainer: {\n    display: \"grid\",\n    gridTemplateColumns: \"50% 50%\",\n\n    [theme.breakpoints.down(\"xs\")]: { gridTemplateColumns: \"100%\" },\n  },\n  inputPassword: {\n    width: \"416px\",\n    marginLeft: \"7.7px\",\n    marginTop: \"5px\",\n  },\n  inputPasswordTwo: {\n    width: \"23.2ch\",\n    marginLeft: \"15px\",\n    marginTop: \"5px\",\n  },\n\n  butreg: {\n    width: \"-webkit-fill-available\",\n    backgroundColor: \"#2EB142\",\n    marginTop: \"10px\",\n    marginLeft: \"7px\",\n    marginBottom: \"6px\",\n    height: \"35px\",\n    color: \"white\",\n    borderRadius: \"7px\",\n    \"&:hover\": {\n      backgroundColor: \"#336535\",\n    },\n  },\n  formsUserLogin: {\n    display: \"flex\",\n    width: \"100%\",\n  },\n  error: {\n    backgroundColor: \"#FC2121\",\n    fontSize: \"16px\",\n    borderRadius: \"5px\",\n    zIndex: \"2\",\n    position: \"relative\",\n    with: \"100px\",\n  },\n  userlog: {\n    width: \"100ch\",\n    userlog: {\n      width: \"100ch\",\n    },\n    formsUserLogin: {\n      display: \"flex\",\n      width: \"100px\",\n    },\n  },\n}));\n\nexport const RegisterForm = ({ modal, theme, refetch }) => {\n  const { t } = useTranslation();\n  const [register] = useMutation(CREATE_USER);\n  const [datauser, setDatauser] = React.useState({\n    userName: \"\",\n    lastName: \"\",\n    idNumber: \"\",\n    cellPhone: \"\",\n    countryCode: \"\",\n    email: \"\",\n    isValidEmail: false,\n    isValidPassword: false,\n    userLogin: \"\",\n    allRoles: \"\",\n    password: \"\",\n    passwordTwo: \"\",\n    confirmPassword: false,\n    ProjectId: [],\n    projectIdLength: true,\n  });\n\n  // useEffect(() => {\n  //   setNewDataCountries(partnerCountries);\n  // }, [partnerCountries]);\n\n  const [nameProject, setProjectName] = React.useState([]);\n  const [openMessage, setOpenMessage] = useState(false);\n  const [noFilledTextfield, setNoFilledTextfield] = useState(\"error\");\n  const [colorTextFields, setColorTextFields] = useState(\"success\");\n  const [showAlertTitle, setShowAlertTitle] = useState(false);\n  // const [newDataCountries, setNewDataCountries] = useState([]);\n  const { np } = useContext(AuthContext);\n\n  const { data, loading, error } = useQuery(GET_USER_ROLE, {\n    fetchPolicy: \"cache-and-network\",\n    variables: {\n      id: parseInt(localStorage.getItem(\"np\")),\n    },\n  });\n\n  const keyPassword = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n  //activar válidación de idNumber, countryCode y cellPhone cuando sea el momento oportuno, no eliminar.\n\n  const classes = useStyles();\n  const isDisabledSubmit =\n    datauser.userName.length < 3 ||\n    datauser.lastName.length < 3 ||\n    // datauser.idNumber === \"\" ||\n    // datauser.cellPhone === \"\" ||\n    // datauser.cellPhone.length < 10 ||\n    // datauser.cellPhone.length > 11 ||\n    // datauser.countryCode === \"\" ||\n    datauser.email === \"\" ||\n    datauser.userLogin.length < 5 ||\n    (datauser.email && !datauser.isValidEmail) ||\n    !datauser.allRoles ||\n    datauser.projectIdLength === true ||\n    datauser.password.length < 8 ||\n    !datauser.isValidPassword ||\n    datauser.passwordTwo.length < 8 ||\n    datauser.passwordTwo !== datauser.password;\n\n  const [values, setValues] = React.useState({\n    password: \"\",\n    showPassword: false,\n  });\n  const [valuesTwo, setValuesTwo] = React.useState({\n    passwordTwo: \"\",\n    showPasswordTwo: false,\n  });\n  const handleClickShowPassword = () => {\n    setValues({ ...values, showPassword: !values.showPassword });\n  };\n  const handleClickShowPasswordTwo = () => {\n    setValuesTwo({ ...valuesTwo, showPasswordTwo: !valuesTwo.showPasswordTwo });\n  };\n  const handleMouseDownPassword = (event) => {\n    event.preventDefault();\n  };\n  const handleMouseDownPasswordTwo = (event) => {\n    event.preventDefault();\n  };\n\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setOpenMessage(false);\n    setShowAlertTitle(false);\n  };\n\n  if (error) {\n    return (\n      <div>\n        <lottie-player\n          style={{\n            width: \"70%\",\n            marginLeft: \"30%\",\n            marginRight: \"auto\",\n          }}\n          className=\"_logo\"\n          src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n          background=\"transparent\"\n          speed=\"1\"\n          loop\n          autoplay\n        ></lottie-player>\n      </div>\n    );\n  }\n\n  const handleReg = (event) => {\n    const value = event.target.value;\n    const name = event.target.name;\n    const regex = /[^a-zA-ZÑñ ]+/g;\n    const filteredValue = value.replace(regex, \"\");\n    if (filteredValue !== value) {\n    } else {\n      setDatauser({\n        ...datauser,\n        [name]: value,\n      });\n    }\n  };\n\n  const handleRegSelect = (event) => {\n    const value = event.target.value;\n    const name = event.target.name;\n    setDatauser({\n      ...datauser,\n      [name]: value,\n    });\n  };\n\n  const handleselectCountry = (code) => {\n    const aux = code.replace(/\\D/g, \"\");\n    setDatauser({\n      ...datauser,\n      countryCode: aux,\n    });\n  };\n\n  const handleInputChange = (event) => {\n    const value = event.target.value;\n    const name = event.target.name;\n    const regex = /[^0-9]/g;\n    const numericValue = value.replace(regex, \"\");\n    if (numericValue !== value) {\n    } else {\n      setDatauser({\n        ...datauser,\n        [name]: value,\n      });\n    }\n  };\n\n  const validateEmail = (email) => {\n    const regex = /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/;\n    return regex.test(email);\n  };\n\n  const handleEmailChange = (event) => {\n    const email = event.target.value;\n    const isValidEmail = validateEmail(email);\n    setDatauser({\n      ...datauser,\n      email: email,\n      isValidEmail: isValidEmail,\n    });\n  };\n\n  const validatePassword = (event) => {\n    const regex =\n      /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&.\\s#^+\\-])[A-Za-z\\d@$!%*?&.\\s#^+\\-]{8,}$/;\n    const password = event.target.value;\n    setDatauser({\n      ...datauser,\n      password: password,\n      isValidPassword: regex.test(password),\n    });\n  };\n\n  const validatePassword2 = (event) => {\n    const regex =\n      /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&.\\s#^+\\-])[A-Za-z\\d@$!%*?&.\\s#^+\\-]{8,}$/;\n    const password = event.target.value;\n    setDatauser({\n      ...datauser,\n      passwordTwo: password,\n      isValidPassword: regex.test(password),\n    });\n  };\n\n  const handleChange = (e) => {\n    const value = e.target.value;\n    setProjectName(typeof value === \"string\" ? value.split(\",\") : value);\n    setDatauser({\n      ...datauser,\n      ProjectId: nameProject,\n    });\n    if (value.length === 0) {\n      setDatauser({\n        ...datauser,\n        projectIdLength: true,\n      });\n    } else {\n      if (value.length > 0) {\n        setDatauser({\n          ...datauser,\n          projectIdLength: false,\n        });\n      }\n    }\n  };\n\n  const handleCloseModal = () => {\n    setTimeout(() => {\n      modal(false);\n    }, 2000);\n  };\n\n  // const handleClick2 = () => {\n  //   setOpenMessage2(true);\n  // };\n\n  //activar válidación de idNumber, countryCode y cellPhone cuando sea el momento oportuno, no eliminar.\n\n  const userRegister = async () => {\n    if (\n      datauser.userName === \"\" ||\n      datauser.userName.length < 3 ||\n      datauser.lastName === \"\" ||\n      datauser.lastName.length < 3 ||\n      // datauser.idNumber === \"\" ||\n      // datauser.idNumber.length < 5 ||\n      // datauser.idNumber.length > 11 ||\n      // datauser.countryCode === \"\" ||\n      // datauser.cellPhone === \"\" ||\n      // datauser.cellPhone.length < 10 ||\n      // datauser.cellPhone.length > 11 ||\n      datauser.userLogin === \"\" ||\n      datauser.userLogin.length < 5 ||\n      datauser.email === \"\" ||\n      (datauser.email && !datauser.isValidEmail) ||\n      !datauser.allRoles ||\n      datauser.projectIdLength === true ||\n      datauser.password === \"\" ||\n      datauser.password.length < 8 ||\n      !datauser.isValidPassword ||\n      datauser.passwordTwo === \"\" ||\n      datauser.passwordTwo.length < 8 ||\n      datauser.passwordTwo !== datauser.password\n    ) {\n      setShowAlertTitle(true);\n    } else {\n      try {\n        register({\n          variables: {\n            name: datauser.userName,\n            last_name: datauser.lastName,\n            identification_number: await encryptData(\n              datauser.idNumber,\n              keyPassword\n            ),\n            email: await encryptData(datauser.email, keyPassword),\n            cellPhone: await encryptData(datauser.cellPhone, keyPassword),\n            countryCode: datauser.countryCode,\n            user: datauser.userLogin,\n            password: await encryptData(datauser.password, keyPassword),\n            passwordTwo: await encryptData(datauser.password, keyPassword),\n            ProjectId: nameProject,\n            RoleId: parseInt(datauser.allRoles),\n          },\n        })\n          .then((response) => {\n            if (response.data && response.data.error === \"Validation error\") {\n              console.log(\"Error de validación\", response.data.message);\n            } else {\n              setOpenMessage(true);\n              refetch();\n              handleCloseModal();\n            }\n          })\n          .catch((error) => {\n            console.log(\"Error\", error);\n            setShowAlertTitle(true);\n          });\n      } catch (err) {\n        console.error(\"Excepción:\", err);\n      }\n    }\n  };\n\n  return (\n    <Fragment>\n      <form className={classes.root} noValidate autoComplete=\"off\">\n        <div className={classes.forms}>\n          <TextField\n            InputProps={{\n              sx: {\n                borderRadius: \"8px\",\n              },\n              autoComplete: \"off\",\n            }}\n            sx={{\n              width: \"226.17px\",\n              [theme?.breakpoints?.down(\"xs\")]: { width: \"auto\" },\n            }}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.NAME\"\n            )}\n            type=\"text\"\n            id=\"userName\"\n            name=\"userName\"\n            variant=\"outlined\"\n            size=\"small\"\n            required\n            value={datauser.userName}\n            onChange={handleReg}\n            color={\n              datauser.userName === \"\" || datauser.userName.length < 3\n                ? noFilledTextfield\n                : colorTextFields\n            }\n          />\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.LAST_NAME\"\n            )}\n            id=\"lastName\"\n            name=\"lastName\"\n            variant=\"outlined\"\n            size=\"small\"\n            required\n            value={datauser.lastName}\n            onChange={handleReg}\n            color={\n              datauser.lastName === \"\" || datauser.lastName.length < 3\n                ? noFilledTextfield\n                : colorTextFields\n            }\n          />\n        </div>\n        <div className={classes.forms}>\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            sx={{\n              width: \"226.17px\",\n              [theme?.breakpoints?.down(\"xs\")]: { width: \"auto\" },\n            }}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.IDENTIFICATON_NUMBER\"\n            )}\n            id=\"idNumber\"\n            name=\"idNumber\"\n            variant=\"outlined\"\n            size=\"small\"\n            value={datauser.idNumber}\n            onChange={handleInputChange}\n            // color={\n            //   datauser.idNumber === \"\" ||\n            //   datauser.idNumber.length < 5 ||\n            //   datauser.idNumber.length > 11\n            //     ? noFilledTextfield\n            //     : colorTextFields\n            // }\n          />\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            className={classes.textField}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.EMAIL\"\n            )}\n            type=\"email\"\n            id=\"email\"\n            name=\"email\"\n            variant=\"outlined\"\n            size=\"small\"\n            required\n            value={datauser.email}\n            onChange={handleEmailChange}\n            color={\n              datauser.email === \"\" ||\n              (datauser.email && !datauser.isValidEmail)\n                ? noFilledTextfield\n                : colorTextFields\n            }\n            helperText={\n              datauser.email === \"\" ||\n              (datauser.email && !datauser.isValidEmail)\n                ? t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.EMAIL_HELPER_TEXT\"\n                  )\n                : \"\"\n            }\n          />\n        </div>\n        <div className={classes.forms}>\n          <Autocomplete\n            id=\"country-select-demo\"\n            size=\"small\"\n            options={partnerCountries}\n            onChange={(e) => handleselectCountry(e.target.textContent)}\n            autoHighlight\n            getOptionLabel={(option) => `+${option.phone} (${option.name})`}\n            renderOption={(props, option) => (\n              <Box\n                component=\"li\"\n                sx={{ \"& > img\": { mr: 2, flexShrink: 0 } }}\n                {...props}\n              >\n                <img\n                  loading=\"lazy\"\n                  width=\"20\"\n                  src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n                  srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n                  alt=\"\"\n                />\n                {option.name} ({option.code}) +{option.phone}\n              </Box>\n            )}\n            renderInput={(params) => (\n              <TextField\n                sx={{\n                  width: \"226.17px\",\n                  [theme?.breakpoints?.down(\"xs\")]: {\n                    width: \"-webkit-fill-available\",\n                  },\n                }}\n                {...params}\n                label={t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.COUNTRY\"\n                )}\n                // color={\n                //   datauser.countryCode === \"\"\n                //     ? noFilledTextfield\n                //     : colorTextFields\n                // }\n                inputProps={{\n                  ...params.inputProps,\n                  autoComplete: \"new-password\",\n                }}\n              >\n                {partnerCountries.map((countryInitial) => (\n                  <MenuItem\n                    key={countryInitial.code}\n                    value={countryInitial.code}\n                  >\n                    {countryInitial.label}\n                  </MenuItem>\n                ))}\n              </TextField>\n            )}\n          />\n\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CELLPHONE\"\n            )}\n            id=\"cellPhone\"\n            name=\"cellPhone\"\n            variant=\"outlined\"\n            size=\"small\"\n            inputProps=\"object.number\"\n            value={datauser.cellPhone}\n            onChange={handleInputChange}\n            // color={\n            //   datauser.cellPhone === \"\" ||\n            //   datauser.cellPhone.length < 10 ||\n            //   datauser.cellPhone.length > 11\n            //     ? noFilledTextfield\n            //     : colorTextFields\n            // }\n          />\n        </div>\n\n        <div>\n          <h4 className={classes.tittleThree}>\n            {t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.DATA_ACCESS_LABEL\"\n            )}\n          </h4>\n        </div>\n        <div className={classes.forms}>\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            sx={{\n              width: 465,\n              [theme?.breakpoints?.down(\"xs\")]: { width: \"auto\" },\n            }}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.USER\"\n            )}\n            id=\"userLogin\"\n            name=\"userLogin\"\n            placeholder=\"Nombre de Usuario\"\n            variant=\"outlined\"\n            size=\"small\"\n            value={datauser.userLogin}\n            className={classes.userlog}\n            onChange={handleReg}\n            color={\n              datauser.userLogin === \"\" || datauser.userLogin.length < 5\n                ? noFilledTextfield\n                : colorTextFields\n            }\n            helperText={\n              datauser.userLogin === \"\" || datauser.userLogin.length < 5\n                ? t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.USER_HELPER_TEXT\"\n                  )\n                : \"\"\n            }\n            required\n          />\n        </div>\n        <div className={classes.rolesProjectsContainer}>\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            id=\"rol\"\n            name=\"allRoles\"\n            select={<multiple />}\n            size=\"small\"\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.ROLE\"\n            )}\n            variant=\"outlined\"\n            color={!datauser.allRoles ? noFilledTextfield : colorTextFields}\n            onChange={(e) => handleRegSelect(e)}\n          >\n            {data?.getAllRoles?.map((Role) => (\n              <MenuItem key={Role.id} value={Role.id}>\n                {Role.name}\n              </MenuItem>\n            ))}\n          </TextField>\n\n          <FormControl sx={{ marginTop: \"8px\", marginLeft: \"7px\" }}>\n            <InputLabel\n              sx={{\n                marginTop: -1,\n              }}\n              id=\"ProjectId\"\n            >\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PROJECTS\"\n              )}\n            </InputLabel>\n            <Select\n              value={nameProject}\n              sx={{\n                borderRadius: \"8px\",\n                width: \"226.16px\",\n                [theme?.breakpoints?.down(\"xs\")]: {\n                  width: \"auto\",\n                  marginBottom: \"8px\",\n                  marginRight: \"7px\",\n                },\n              }}\n              id=\"ProjectId\"\n              name=\"ProjectId\"\n              input={<OutlinedInput label=\"Proyectos\" />}\n              multiple\n              onChange={(e) => handleChange(e)}\n              size=\"small\"\n              variant=\"outlined\"\n              color={\n                datauser.projectIdLength === true\n                  ? noFilledTextfield\n                  : colorTextFields\n              }\n              MenuProps={{ sx: { width: \"150px\" } }}\n            >\n              {data?.getAllUsers[0]?.Project?.map((project) => (\n                <MenuItem key={project.id} value={project.id}>\n                  {project.name}\n                </MenuItem>\n              ))}\n            </Select>\n          </FormControl>\n        </div>\n        <div className={classes.form}>\n          <TextField\n            sx={{\n              width: \"226.16px\",\n              [theme?.breakpoints?.down(\"xs\")]: {\n                display: \"flex\",\n                width: \"auto\",\n              },\n            }}\n            id=\"password\"\n            size=\"small\"\n            name=\"password\"\n            type={values.showPassword ? \"text\" : \"password\"}\n            error={!datauser.isValidPassword ? true : false}\n            placeholder=\"password\"\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PASSWORD\"\n            )}\n            value={datauser.password}\n            onChange={validatePassword}\n            helperText={\n              datauser.password === \"\" ||\n              datauser.password.length < 8 ||\n              !datauser.isValidPassword\n                ? t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PASSWORD_HELPER_TEXT\"\n                  )\n                : \"\"\n            }\n            required\n            color={\n              datauser.password === \"\" ||\n              datauser.password.length < 8 ||\n              !datauser.isValidPassword\n                ? noFilledTextfield\n                : colorTextFields\n            }\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"new-password\",\n              endAdornment: (\n                <InputAdornment position=\"end\">\n                  <IconButton\n                    aria-label=\"toggle password visibility\"\n                    onClick={handleClickShowPassword}\n                    onMouseDown={handleMouseDownPassword}\n                    edge=\"end\"\n                  >\n                    {values.showPassword ? <Visibility /> : <VisibilityOff />}\n                  </IconButton>\n                </InputAdornment>\n              ),\n            }}\n          />\n          <TextField\n            sx={{\n              width: \"226.16px\",\n              [theme?.breakpoints?.down(\"xs\")]: {\n                display: \"flex\",\n                width: \"auto\",\n              },\n            }}\n            id=\"passwordTwo\"\n            size=\"small\"\n            name=\"passwordTwo\"\n            type={valuesTwo.showPasswordTwo ? \"text\" : \"password\"}\n            error={datauser.passwordTwo !== datauser.password ? true : false}\n            placeholder={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CONFIRM_PASSWORD_HELPER_TEXT\"\n            )}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CONFIRM_PASSWORD\"\n            )}\n            value={datauser.passwordTwo}\n            onChange={validatePassword2}\n            helperText={\n              datauser.passwordTwo === \"\" || datauser.passwordTwo.length < 8\n                ? t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CONFIRM_PASSWORD_HELPER_TEXT\"\n                  )\n                : \"\"\n            }\n            required\n            color={\n              datauser.passwordTwo === \"\" ||\n              datauser.passwordTwo.length < 8 ||\n              datauser.passwordTwo !== datauser.password ||\n              !datauser.isValidPassword\n                ? noFilledTextfield\n                : colorTextFields\n            }\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"new-password\",\n              endAdornment: (\n                <InputAdornment position=\"end\">\n                  <IconButton\n                    aria-label=\"toggle password visibility\"\n                    onClick={handleClickShowPasswordTwo}\n                    onMouseDown={handleMouseDownPasswordTwo}\n                    edge=\"end\"\n                  >\n                    {valuesTwo.showPasswordTwo ? (\n                      <VisibilityTwo />\n                    ) : (\n                      <VisibilityOffTwo />\n                    )}\n                  </IconButton>\n                </InputAdornment>\n              ),\n            }}\n          />\n        </div>\n        <div>\n          <Snackbar\n            open={datauser.password !== datauser.passwordTwo}\n            autoHideDuration={200}\n            anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n          >\n            <Alert color=\"warning\">\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PASSWORDS_DONOT_MATCH\"\n              )}\n            </Alert>\n          </Snackbar>\n        </div>\n        <div>\n          <Button\n            className={classes.butreg}\n            onClick={userRegister}\n            disabled={isDisabledSubmit}\n          >\n            <h3>\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.BUTTON_TEXT\"\n              )}\n            </h3>\n          </Button>\n        </div>\n      </form>\n      <div>\n        <Snackbar\n          open={openMessage}\n          autoHideDuration={4000}\n          onClose={handleClose}\n          anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n        >\n          <Alert severity=\"success\">\n            {t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.SUCCESSFUL_ALERT\"\n            )}\n          </Alert>\n        </Snackbar>\n\n        <Snackbar\n          open={showAlertTitle}\n          autoHideDuration={4000}\n          onClose={handleClose}\n          anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n        >\n          <Alert severity=\"error\">\n            {t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.ERROR_ALERT\"\n            )}\n          </Alert>\n        </Snackbar>\n      </div>\n    </Fragment>\n  );\n};\nexport default RegisterForm;\n","import React, { useContext } from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Fab from \"@material-ui/core/Fab\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport AppBar from \"@mui/material/AppBar\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport Typography from \"@mui/material/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport RegisterForm from \"../createUser/registerForm\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport DataTable from \"../../../views/private/userManagement/usersManagements\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n  headerRegister: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    margin: \"5px\",\n  },\n  logo: {\n    height: \"80px\",\n  },\n  icons: {\n    display: \"flex\",\n    position: \"absolute\",\n    color: \"#929292\",\n    right: \"2px\",\n  },\n}));\n\nexport default function ResponsiveDialog({ refetch }) {\n  const { t } = useTranslation();\n  const classes = useStyles();\n  const theme = useTheme();\n  const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n  const { permissionsRoleUser, openCreateUserModal, setOpenCreateUserModal } =\n    useContext(AuthContext);\n\n  const handleClose = () => {\n    setOpenCreateUserModal(false);\n  };\n\n  const modals = (state) => {\n    setOpenCreateUserModal(state);\n  };\n\n  return (\n    <React.Fragment>\n      <Dialog\n        // fullScreen={fullScreen}\n        open={openCreateUserModal}\n        onClose={handleClose}\n        aria-labelledby=\"responsive-dialog-title\"\n        PaperProps={{\n          sx: { width: \"auto\", height: \"auto\", borderRadius: \"8px\" },\n        }}\n      >\n        <AppBar sx={{ position: \"relative\", backgroundColor: \"#2EB142\" }}>\n          <Toolbar>\n            <Typography\n              sx={{ flex: \"2px\", textAlign: \"center\" }}\n              variant=\"h6\"\n              component=\"div\"\n            >\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.TITLE_MODAL\"\n              )}\n            </Typography>\n            <IconButton\n              color=\"inherit\"\n              onClick={handleClose}\n              sx={{\n                display: \"flex\",\n                position: \"absolute\",\n              }}\n              edge=\"end\"\n            >\n              <CloseIcon />\n            </IconButton>\n          </Toolbar>\n        </AppBar>\n        <br />\n\n        <DialogContent>\n          <RegisterForm modal={modals} refetch={refetch} theme={theme} />\n        </DialogContent>\n      </Dialog>\n    </React.Fragment>\n  );\n}\n","import React, { useEffect, useState, useRef, useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport TextField from \"@mui/material/TextField\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@material-ui/core/Button\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { Fragment } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { partnerCountries } from \"../../../utils/dataCountries.json\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport { useForm } from \"react-hook-form\";\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  UPDATE_USER,\n  EDIT_USER,\n  GET_USER_ROLE,\n} from \"../../../controllers/usersControllers\";\n//components\nimport Loading from \"../../loading/Loading\";\nimport { decryptData, encryptData } from \"../../../utils/encryptDecrypt\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    \"& .MuiTextField-root\": {\n      margin: theme.spacing(1),\n      width: \"-webkit-fill-available\",\n    },\n  },\n  forms: {\n    display: \"flex\",\n    [theme.breakpoints.down(\"xs\")]: {\n      display: \"flex\",\n      flexDirection: \"column\",\n      alignItems: \"center\",\n    },\n  },\n  tittle: {\n    padding: \"0px\",\n    marginLeft: \"10px\",\n    marginTop: \"-4rem\",\n    marginBottom: \"10px\",\n  },\n  input: {\n    marginLeft: \"10px\",\n    marginTop: \"10px\",\n  },\n  tittleTwo: {\n    marginBottom: \"0px\",\n    marginTop: \"0px\",\n  },\n  tittleThree: {\n    color: \"black\",\n    marginTop: \"17px\",\n    marginLeft: \"10px\",\n    marginBottom: \"10px\",\n  },\n  butreg: {\n    width: \"-webkit-fill-available\",\n    backgroundColor: \"#2EB142\",\n    display: \"flex\",\n    top: \"35px\",\n    left: \"7px\",\n    height: \"35px\",\n    color: \"white\",\n    borderRadius: \"7px\",\n    \"&:hover\": {\n      backgroundColor: \"#336535\",\n    },\n  },\n  formsUserLogin: {\n    display: \"flex\",\n    width: \"100%\",\n  },\n  error: {\n    backgroundColor: \"#FC2121\",\n    fontSize: \"16px\",\n    borderRadius: \"5px\",\n    zIndex: \"2\",\n    position: \"relative\",\n    with: \"100px\",\n  },\n  userlog: {\n    width: \"100ch\",\n    userlog: {\n      width: \"100ch\",\n    },\n    formsUserLogin: {\n      display: \"flex\",\n      width: \"100px\",\n    },\n  },\n  formProjects: {\n    width: \"20px\",\n    height: \"60px\",\n  },\n}));\n\nconst EditForm = ({ closeModal, iddUser, editing, setEditError }) => {\n  const { t } = useTranslation();\n  const { setOpenModalEditForm } = React.useContext(AuthContext);\n  const [open, setOpen] = React.useState(false);\n  const [noFilledTextfield, setNoFilledTextfield] = useState(\"error\");\n  const [colorTextFields, setColorTextFields] = useState(\"success\");\n  const [validateName, setValidateName] = useState(true);\n  const [validateLastName, setValidateLastName] = useState(true);\n  const [validatePhoneNumber, setValidatePhoneNumber] = useState(true);\n  const [validateEmail, setValidateEmail] = useState(true);\n  const [validateUser, setValidateUser] = useState(true);\n  const [validateSelectedRole, setValidateSelectedRole] = useState(true);\n  const [validateSelectedProject, setValidateSelectedProject] = useState(true);\n  const [validateCountryCode, setValidateCountryCode] = useState(true);\n  const { alertEdit, setAlertEdit, np } = useContext(AuthContext);\n\n  const [edit] = useMutation(UPDATE_USER);\n  const [datauser, setDatauser] = useState({\n    userName: \"\",\n    lastName: \"\",\n    cellPhone: \"\",\n    countryCode: \"\",\n    email: \"\",\n    userLogin: \"\",\n    allRoles: \"\",\n    ProjectId: [],\n  });\n  const [defaultValue, setDefaultValue] = useState(true);\n  const { data, loading, error, refetch } = useQuery(EDIT_USER, {\n    variables: {\n      id: iddUser,\n    },\n    // onCompleted: (data) => {},\n  });\n\n  const editingProject = data?.getAllUsers[0]?.Project;\n\n  const loggedProjects = data?.getAllProjects?.map((element) => element);\n\n  const hasId = (array, id) => array.some((element) => element.id === id);\n\n  const mergedProjects = loggedProjects?.filter(\n    (project) => !hasId(editingProject, project.id)\n  );\n\n  const result = editingProject?.concat(mergedProjects);\n\n  const {\n    register: userData,\n    handleSubmit,\n    formState: { errors },\n  } = useForm();\n\n  useEffect(() => {\n    refetch();\n  }, []);\n  useEffect(() => {\n    const fetchDefaultValue = async () => {\n      try {\n        const resultCellphone = await decryptData(\n          data?.getAllUsers[0]?.cellPhone,\n          password\n        );\n        const resultEmail = await decryptData(\n          data?.getAllUsers[0]?.email,\n          password\n        );\n        setDefaultValue(false);\n        setTimeout(() => {\n          setDatauser({\n            ...datauser,\n            userName: data?.getAllUsers[0]?.name,\n            lastName: data?.getAllUsers[0]?.last_name,\n            countryCode: data?.getAllUsers[0]?.countryCode,\n            cellPhone:\n              resultCellphone === \"null\" || resultCellphone === \"String\"\n                ? \"\"\n                : resultCellphone,\n            email: resultEmail,\n            userLogin: data?.getAllUsers[0]?.user,\n            ProjectId: data?.getAllUsers[0]?.Project.map((i) => i.id),\n            allRoles: data?.getAllUsers[0]?.Role?.id,\n          });\n        }, 50);\n      } catch (error) {\n        console.error(\"Error fetching default value:\", error);\n      }\n    };\n    fetchDefaultValue();\n  }, [data]);\n\n  const classes = useStyles();\n\n  if (error) {\n    return (\n      <div>\n        <lottie-player\n          style={{\n            width: \"70%\",\n            marginLeft: \"30%\",\n            marginRight: \"auto\",\n          }}\n          className=\"_logo\"\n          src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n          background=\"transparent\"\n          speed=\"1\"\n          loop\n          autoplay\n        ></lottie-player>\n      </div>\n    );\n  }\n  if (loading) {\n    return (\n      <div\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        }}\n      >\n        <Loading />\n      </div>\n    );\n  }\n  if (defaultValue) {\n    return (\n      <div\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        }}\n      >\n        <Loading />\n      </div>\n    );\n  }\n  const handleRegName = (event) => {\n    const fieldName = event.target.name;\n    const value = event.target.value;\n    const regex = /^[a-zA-Z ]+$/;\n    if (value === \"\" || !regex.test(value)) {\n      setValidateName(false);\n      event.target.value = \"\";\n    } else {\n      setDatauser({\n        ...datauser,\n        userName: value,\n      });\n    }\n    if (value.length < 3) {\n      setValidateName(false);\n    } else {\n      setValidateName(true);\n    }\n  };\n\n  const handleRegLastName = (event) => {\n    const fieldName = event.target.name;\n    const value = event.target.value;\n    const regex = /^[a-zA-Z ]+$/;\n    if (value === \"\" || !regex.test(value)) {\n      setValidateLastName(false);\n      event.target.value = \"\";\n    } else {\n      setDatauser({\n        ...datauser,\n        lastName: value,\n      });\n    }\n    if (value.length < 3) {\n      setValidateLastName(false);\n    } else {\n      setValidateLastName(true);\n    }\n  };\n\n  const handleRegPhoneNumber = (event) => {\n    const value = event.target.value;\n    const regex = /[^0-9]/g;\n    const numericValue = value.replace(regex, \"\");\n\n    if (numericValue !== value) {\n      setValidatePhoneNumber(false);\n    } else {\n      setDatauser({\n        ...datauser,\n        cellPhone: value,\n      });\n    }\n    if (value.length < 9 || value.length > 11) {\n      setValidatePhoneNumber(false);\n    } else {\n      setValidatePhoneNumber(true);\n    }\n  };\n\n  const validateUpdatedEmail = (email) => {\n    const regex = /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/;\n    return regex.test(email);\n  };\n\n  const handleEmailChange = (event) => {\n    const fieldName = event.target.name;\n    const email = event.target.value;\n    const isValidEmail = validateUpdatedEmail(email);\n    setDatauser({\n      ...datauser,\n      email: email,\n    });\n    setValidateEmail(isValidEmail);\n  };\n\n  const handleRegUserName = (event) => {\n    const fieldName = event.target.name;\n    const value = event.target.value;\n    const regex = /^[a-zA-Z]+$/;\n    if (value === \"\" || !regex.test(value)) {\n      setValidateUser(false);\n      event.target.value = \"\";\n    } else {\n      setDatauser({\n        ...datauser,\n        userLogin: value,\n      });\n    }\n    if (value.length < 3) {\n      setValidateUser(false);\n    } else {\n      setValidateUser(true);\n    }\n  };\n\n  const handleRegRoleSelect = (event) => {\n    const value = event.target.value;\n    if (value === \"\") {\n      setValidateSelectedRole(false);\n    } else {\n      setDatauser({\n        ...datauser,\n        allRoles: value,\n      });\n      setValidateSelectedRole(true);\n    }\n  };\n\n  const handleChange = (e) => {\n    const { value } = e.target;\n\n    setDatauser((prevState) => ({\n      ...prevState,\n      ProjectId: value,\n    }));\n\n    if (value.length === 0) {\n      setValidateSelectedProject(false);\n    } else {\n      if (value.length > 0) {\n        setValidateSelectedProject(true);\n      }\n    }\n  };\n\n  const handleselectCountry = (code) => {\n    const aux = code.replace(/\\D/g, \"\");\n\n    if (aux === \"\" || aux === null) {\n      setValidateCountryCode(false);\n    } else {\n      setDatauser({\n        ...datauser,\n        countryCode: aux,\n      });\n      setValidateCountryCode(true);\n    }\n  };\n\n  const closeDialog = () => {\n    setTimeout(() => {\n      setOpenModalEditForm(false);\n    }, 3000);\n  };\n\n  async function userEdit() {\n    if (\n      validateName === false ||\n      validateLastName === false ||\n      validatePhoneNumber === false ||\n      validateEmail === false ||\n      validateUser === false ||\n      validateSelectedRole === false ||\n      validateSelectedProject === false ||\n      validateCountryCode === false\n    ) {\n    } else {\n      try {\n        edit({\n          variables: {\n            id: iddUser,\n            name: datauser.userName,\n            last_name: datauser.lastName,\n            email: await encryptData(datauser.email, password),\n            cellPhone: await encryptData(datauser.cellPhone, password),\n            countryCode: datauser.countryCode,\n            user: datauser.userLogin,\n            ProjectId: datauser.ProjectId,\n            RoleId: parseInt(datauser.allRoles),\n          },\n        })\n          .then((response) => {\n            if (response.data && response.data.error === \"Validation error\") {\n              console.error(\"Error de validación:\", response.data.message);\n            } else {\n              setAlertEdit(true);\n              refetch();\n            }\n          })\n          .catch((err) => {\n            console.log(\"Error\", error);\n            setEditError(true);\n          });\n      } catch (err) {\n        console.error(\"Excepción:\", err);\n      }\n    }\n  }\n\n  return (\n    <Fragment>\n      <form\n        className={classes.root}\n        noValidate\n        autoComplete=\"off\"\n        onSubmit={handleSubmit(userEdit)}\n      >\n        <div className={classes.forms}>\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            sx={{ width: \"226.17px\" }}\n            placeholder=\"Nombre(s)\"\n            defaultValue={data?.getAllUsers[0]?.name}\n            id=\"userName\"\n            name=\"name\"\n            type=\"text\"\n            variant=\"outlined\"\n            size=\"small\"\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.NAME\"\n            )}\n            onChange={handleRegName}\n            color={validateName === false ? noFilledTextfield : colorTextFields}\n          />\n          <TextField\n            sx={{ width: \"226.17px\" }}\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            placeholder=\"Apellido(s)\"\n            id=\"last_name\"\n            defaultValue={data?.getAllUsers[0]?.last_name}\n            name=\"last_name\"\n            variant=\"outlined\"\n            size=\"small\"\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.LAST_NAME\"\n            )}\n            onChange={handleRegLastName}\n            color={\n              validateLastName === false ? noFilledTextfield : colorTextFields\n            }\n          />\n        </div>\n        <div className={classes.forms}>\n          <Autocomplete\n            sx={{ width: \"-webkit-fill-available\" }}\n            id=\"country-select-demo\"\n            size=\"small\"\n            options={partnerCountries}\n            onChange={(e) => handleselectCountry(e.target.textContent)}\n            value={datauser.countryCode}\n            autoHighlight\n            renderOption={(props, option) => (\n              <Box\n                component=\"li\"\n                sx={{\n                  borderRadius: \"50px\",\n                  \"& > img\": { mr: 2, flexShrink: 0 },\n                }}\n                {...props}\n              >\n                <img\n                  loading=\"lazy\"\n                  width=\"20\"\n                  src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n                  srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n                  alt=\"\"\n                />\n                ({option.name}) +{option.phone}\n              </Box>\n            )}\n            renderInput={(params) => (\n              <TextField\n                sx={{ width: \"-webkit-fill-available\" }}\n                {...params}\n                label={t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.COUNTRY\"\n                )}\n                color={\n                  validateCountryCode === false\n                    ? noFilledTextfield\n                    : colorTextFields\n                }\n                inputProps={{\n                  ...params.inputProps,\n                  autoComplete: \"new-password\",\n                }}\n              >\n                {partnerCountries.map((countryInitial) => (\n                  <MenuItem\n                    key={countryInitial.code}\n                    value={countryInitial.code}\n                  >\n                    {countryInitial.name}\n                  </MenuItem>\n                ))}\n              </TextField>\n            )}\n          />\n          <TextField\n            sx={{ width: \"-webkit-fill-available\" }}\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.CELLPHONE\"\n            )}\n            id=\"cellPhone\"\n            value={datauser.cellPhone}\n            variant=\"outlined\"\n            size=\"small\"\n            onChange={handleRegPhoneNumber}\n            color={\n              validatePhoneNumber === false\n                ? noFilledTextfield\n                : colorTextFields\n            }\n          />\n        </div>\n        <div className={classes.forms}>\n          <TextField\n            InputProps={{\n              sx: { borderRadius: \"8px\", width: \"100%\" },\n              autoComplete: \"off\",\n            }}\n            sx={{\n              width: 470,\n              maxWidth: \"100%\",\n            }}\n            className={classes.textField}\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.EMAIL\"\n            )}\n            type=\"email\"\n            id=\"email\"\n            value={datauser.email}\n            name=\"email\"\n            variant=\"outlined\"\n            size=\"small\"\n            onChange={handleEmailChange}\n            color={\n              validateEmail === false ? noFilledTextfield : colorTextFields\n            }\n          />\n        </div>\n        <div>\n          <h4 className={classes.tittleThree}>\n            {t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.DATA_ACCESS_LABEL\"\n            )}\n          </h4>\n        </div>\n        <div className={classes.formsUserLogin}>\n          <TextField\n            sx={{ width: \"226.17px\", display: \"flex\", top: \"24px\" }}\n            InputProps={{\n              sx: { borderRadius: \"8px\" },\n              autoComplete: \"off\",\n            }}\n            placeholder=\"User\"\n            id=\"user\"\n            name=\"user\"\n            defaultValue={data?.getAllUsers[0]?.user}\n            variant=\"outlined\"\n            size=\"small\"\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.USER\"\n            )}\n            onChange={handleRegUserName}\n            className={classes.userlog}\n            color={validateUser === false ? noFilledTextfield : colorTextFields}\n          />\n          {editing ? null : (\n            <TextField\n              sx={{ width: \"226.17px\", display: \"flex\", top: \"24px\" }}\n              InputProps={{\n                sx: { borderRadius: \"8px\" },\n                autoComplete: \"off\",\n              }}\n              id=\"RoleId\"\n              name=\"RoleId\"\n              select={<multiple />}\n              size=\"small\"\n              label={t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.ROLE\"\n              )}\n              defaultValue={data?.getAllUsers[0]?.Role?.id}\n              onChange={(e) => handleRegRoleSelect(e)}\n              variant=\"outlined\"\n              color={\n                validateSelectedRole === false\n                  ? noFilledTextfield\n                  : colorTextFields\n              }\n            >\n              {data?.getAllRoles.map((option) => (\n                <MenuItem key={option.id} value={option.id}>\n                  {option.name}\n                </MenuItem>\n              ))}\n            </TextField>\n          )}\n        </div>\n        {editing ? null : (\n          <div>\n            <FormControl\n              sx={{\n                width: \"-webkit-fill-available\",\n                position: \"relative\",\n                marginLeft: \"0.5rem\",\n                marginTop: \"3.5rem\",\n              }}\n            >\n              <InputLabel\n                sx={{\n                  marginTop: -1,\n                }}\n                id=\"ProjectId\"\n              >\n                {t(\n                  \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.PROJECTS\"\n                )}\n              </InputLabel>\n              <Select\n                defaultValue={data?.getAllUsers[0]?.Project?.map((i) => i.id)}\n                multiple\n                sx={{ borderRadius: \"8px\" }}\n                id=\"ProjectId\"\n                name=\"ProjectId\"\n                input={<OutlinedInput label=\"Proyectos\" />}\n                onChange={(e) => handleChange(e)}\n                size=\"small\"\n                variant=\"outlined\"\n                color={\n                  validateSelectedProject === false\n                    ? noFilledTextfield\n                    : colorTextFields\n                }\n                MenuProps={{ sx: { width: \"350px\" } }}\n              >\n                {result.map((element) => (\n                  <MenuItem key={element.id} value={element.id}>\n                    {element.name}\n                  </MenuItem>\n                ))}\n              </Select>\n            </FormControl>\n          </div>\n        )}\n        <div>\n          <Button\n            className={classes.butreg}\n            disabled={\n              validateName === false ||\n              validateLastName === false ||\n              validatePhoneNumber === false ||\n              validateEmail === false ||\n              validateUser === false ||\n              validateSelectedRole === false ||\n              validateSelectedProject === false ||\n              validateCountryCode === false\n            }\n            type=\"submit\"\n          >\n            <h3>\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.BUTTON_TEXT\"\n              )}\n            </h3>\n          </Button>\n        </div>\n      </form>\n    </Fragment>\n  );\n};\nexport default EditForm;\n","import React, { useContext, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Slide from \"@mui/material/Slide\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport AppBar from \"@mui/material/AppBar\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport Typography from \"@mui/material/Typography\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport EditForm from \"./editForm\";\n//multilanguage\n\nimport { useTranslation } from \"react-i18next\";\nconst useStyles = makeStyles({\n  root: {\n    backgroundColor: \"#3F9948\",\n  },\n  headerRegister: {\n    display: 'flex',\n    justifyContent: 'center',\n    alignItems: 'center',\n    margin: '5px',\n    marginTop: '10px',\n  },\n  logo: {\n    height: '80px',\n    margin: '5px',\n    marginTop: '10px',\n  },\n});\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return (\n    <Slide\n      direction=\"up\"\n      ref={ref}\n      {...props}\n    />\n  );\n});\nexport default function FullScreenDialog({\n  openMod,\n  setOpenSet,\n  iddUser,\n  dataUsers,\n  refetch,\n}) {\n  const { t } = useTranslation();\n  const getUsers = dataUsers;\n  const theme = useTheme();\n  const fullScreen = useMediaQuery(theme.breakpoints.down('xs'));\n  const { alertEdit, openEditUserModal, setOpenEditUserModal } = useContext(AuthContext);\n  const [editError, setEditError] = useState(false);\n  const handleCloseEditModal = () => {\n    setOpenEditUserModal(false);\n  };\n  const handleCloseAlert = () => {\n    setEditError(false);\n  };\n  \n  return (\n    <div>\n      <Dialog\n        fullScreen={fullScreen}\n        open={openEditUserModal ? true : false}\n        onClose={handleCloseEditModal}\n        aria-labelledby=\"responsive-dialog-title\"\n        PaperProps={{\n          sx: { width: '534px', height: '590px', borderRadius: '8px' },\n        }}\n      >\n        <AppBar sx={{ position: 'relative', backgroundColor: '#2EB142' }}>\n          <Toolbar>\n            <Typography\n              sx={{ display: \"flex\", justifyContent: \"center\", flex: 2 }}\n              variant=\"h6\"\n              component=\"div\"\n            >\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.TITLE_MODAL\"\n              )}\n            </Typography>\n            <IconButton\n              color=\"inherit\"\n              onClick={handleCloseEditModal}\n              edge=\"end\"\n            >\n              <CloseIcon />\n            </IconButton>\n          </Toolbar>\n        </AppBar>\n        <br />\n        <br />\n        <DialogContent>\n          <EditForm\n            iddUser={iddUser}\n            setEditError={setEditError}\n            dataUsers={getUsers}\n            refetchFromUser={refetch}\n          />\n        </DialogContent>\n        <div style={{ display: 'flex', width: '100%', justifyContent: 'center' }}>\n          <Snackbar\n            open={alertEdit}\n            autoHideDuration={2000}\n            onClose={handleCloseAlert}\n            anchorOrigin={{ horizontal: 'center', vertical: 'bottom' }}\n          >\n            <Alert severity=\"success\">\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.SUCCESSFUL_ALERT\"\n              )}\n            </Alert>\n          </Snackbar>\n          <Snackbar\n            open={editError}\n            autoHideDuration={2000}\n            onClose={handleCloseAlert}\n            anchorOrigin={{ horizontal: 'center', vertical: 'bottom' }}\n          >\n            <Alert severity=\"error\">\n              {t(\n                \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.ERROR_ALERT\"\n              )}\n            </Alert>\n          </Snackbar>\n        </div>\n      </Dialog>\n    </div>\n  );\n}\n","import * as React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Tooltip } from \"@mui/material\";\nimport ModeEditIcon from \"@mui/icons-material/ModeEdit\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport UserToggleSwitch from \"../../../components/toggleSwitch/UserToggleSwitch\";\nimport ResponsiveDialog from \"../../../components/userManagement/optionsUsers/addUserButton\";\nimport FullScreenDialog from \"../../../components/userManagement/editUsers/EditUser\";\nimport EditUser from \"../../../components/userManagement/editUsers/EditUser\";\nimport { Fab } from \"@material-ui/core\";\nimport { ModalAlertUserStatusChange } from \"../../../components/roleManager/ModalAlertUserStatusChange\";\nimport { decryptData } from \"../../../utils/encryptDecrypt\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  GET_ALL_USER,\n  UPDATE_MANY_USERS,\n} from \"../../../controllers/usersControllers\";\nimport { type } from \"os\";\n\nconst useStyles = makeStyles({\n  root: {\n    minWidth: 275,\n    margin: 25,\n  },\n  contents: {\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  options: {\n    marginBottom: \"2%\",\n    marginTop: \"2%\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  },\n});\n\nfunction RowMenuCell() {\n  return (\n    <div>\n      <IconButton>\n        <VisibilityIcon />\n      </IconButton>\n    </div>\n  );\n}\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction sleep(delay = 0) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, delay);\n  });\n}\n\nconst DataTable = (iddUser) => {\n  const { t } = useTranslation();\n  const [idd, setIdd] = React.useState(\"\");\n  const [worker, setWorker] = React.useState(null);\n\n  const classes = useStyles();\n  const {\n    users,\n    setUsers,\n    openModalEditForm,\n    setOpenModalEditForm,\n    permissionsRoleUser,\n    openCreateUserModal,\n    setOpenCreateUserModal,\n    openEditUserModal,\n    setOpenEditUserModal,\n    openChangeUserStatusModal,\n    setOpenChangeUserStatusModal,\n    alertEdit,\n  } = React.useContext(AuthContext);\n\n  const [selectedUser, setSelectedUser] = React.useState(null);\n  const [searchUser, setSearchUser] = React.useState(\"\");\n  const [inputCleared, setInputCleared] = React.useState(false);\n  const { data, loading, error, refetch } = useQuery(GET_ALL_USER, {\n    fetchPolicy: \"network-only\",\n  });\n\n\n  React.useEffect(() => {\n    if (data) {\n      const filteredUsers = data?.getAllUsers?.filter((user) =>\n        user?.user?.toLowerCase().includes(searchUser.toLowerCase())\n      );\n      setUsers(filteredUsers);\n      setCurrentPage(1);\n    }\n  }, [data, searchUser]);\n\n  const [open, setOpen] = React.useState(false);\n  const [options, setOptions] = React.useState([]);\n  const loadingText = open && options.length === 0;\n  const [decryptedUsers, setDecryptedUsers] = React.useState([]);\n\n  const [currentPage, setCurrentPage] = React.useState(1);\n  const recordsPerPage = 10;\n  const lastIndex = currentPage * recordsPerPage;\n  const firstIndex = lastIndex - recordsPerPage;\n  const records = users.slice(firstIndex, lastIndex);\n  const totalPages = Math.ceil(users.length / recordsPerPage);\n  const numbers = [...Array(totalPages + 1).keys()].slice(1);\n\n  // const decryptRecords = async () => {\n  //   let decrypted = [...data.getAllUsers]; // Copia el array original\n  //   for (let i = firstIndex; i < lastIndex; i++) {\n  //     decrypted[i].cellPhone = await decryptData(\n  //       decrypted[i].cellPhone,\n  //       password\n  //     );\n  //     decrypted[i].email = await decryptData(decrypted[i].email, password);\n  //     decrypted[i].identification_number = await decryptData(\n  //       decrypted[i].identification_number,\n  //       password\n  //     );\n  //   }\n  //   setDecryptedUsers(decrypted);\n  // };\n\n  const [DecryptDataUsers, setDecryptDataUsers] = React.useState([]);\n  const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n  const dataUsers = users?.map((e) => {\n    if (users?.includes(e.id)) {\n      return { id: e.id, enabled: e.enabled };\n    }\n  });\n\n  const filterUser = dataUsers?.filter((i) => i !== undefined);\n  filterUser?.map((e) => {\n    if (e.enabled == true) {\n      e.enabled = false;\n    } else {\n      e.enabled = true;\n    }\n  });\n\n  React.useEffect(() => {\n    let active = true;\n\n    if (!loadingText) {\n      return undefined;\n    }\n\n    (async () => {\n      await sleep(1e3);\n\n      if (active) {\n        const filteredOptions = users?.filter((users) =>\n          users?.user?.toLowerCase().includes(searchUser.toLowerCase())\n        );\n        setOptions([...filteredOptions]);\n      }\n    })();\n    return () => {\n      active = false;\n    };\n  }, [loadingText, searchUser]);\n\n  React.useEffect(() => {\n    if (!open) {\n      setOptions([]);\n    }\n  }, [open]);\n\n  /*  React.useEffect(() => {\n    if (records) {\n      decryptRecords();\n    }\n  }, [records]); */\n\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setOpenModalEditForm(false);\n    // refetch();\n  };\n\n  const handleOpenCreateUserModal = () => {\n    setOpenCreateUserModal(!openCreateUserModal);\n  };\n\n  const handleOpenEditUserModal = (id) => {\n    setIdd(id);\n    setOpenEditUserModal(!openEditUserModal);\n    const auxiliar = users.find((i) => i.id === id);\n  };\n\n  // function UpdateEnabledUsers() {\n  //   try {\n  //     UpdateManyUsers({\n  //       variables: { input: filterUser },\n  //     })\n  //       .then((resul) => {\n  //         // refetch();\n  //       })\n  //       .catch((err) => {});\n  //   } catch (err) {}\n  // }\n\n  // const handleEnabledOrDisabledUserButton = (id) => {\n  //   setOpenChangeUserStatusModal(!openChangeUserStatusModal);\n  //   setIdd(id);\n  // };\n\n  const prePage = () => {\n    if (currentPage !== 1) {\n      setCurrentPage(currentPage - 1);\n    }\n  };\n\n  const changeCurrentPage = (id, searchUser) => {\n    setCurrentPage(id);\n    setSelectedUser(searchUser);\n  };\n\n  const nextPage = () => {\n    if (currentPage !== totalPages) {\n      setCurrentPage(currentPage + 1);\n    }\n  };\n\n  const handleInputChange = (event) => {\n    const inputUser = event.target.value;\n    const matchingUser = users.find(\n      (user) => user?.name?.toLowerCase() === inputUser.toLowerCase()\n    );\n    if (matchingUser) {\n      setSelectedUser(matchingUser);\n    } else {\n      setSelectedUser(null);\n    }\n    setSearchUser(inputUser);\n    setInputCleared(false);\n  };\n\n  const handleAutocompleteChange = (event, value) => {\n    if (value) {\n      setSelectedUser(value);\n      setSearchUser(value.name);\n      const pageIndex = Math.ceil(\n        users.findIndex((users) => users?.name === value?.name + 1) /\n          recordsPerPage\n      );\n      setCurrentPage(pageIndex);\n    } else {\n      setSelectedUser(null);\n      setSearchUser(\"\");\n      setInputCleared(true);\n      setCurrentPage(1);\n    }\n  };\n\n  if (error) {\n    return (\n      <div>\n        <lottie-player\n          style={{\n            width: \"70%\",\n            marginLeft: \"30%\",\n            marginRight: \"auto\",\n          }}\n          className=\"_logo\"\n          src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n          background=\"transparent\"\n          speed=\"1\"\n          loop\n          autoplay\n        ></lottie-player>\n      </div>\n    );\n  }\n\n  if (loading || alertEdit) {\n    return (\n      <div\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        }}\n      >\n        <Loading />\n      </div>\n    );\n  }\n\n  return (\n    <>\n      <div className=\"user_datatable_container\">\n        <div className=\"user_container_header\">\n          <div className=\"user_table_title_container\">\n            <h1 className=\"user_table_title\">\n              {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.TABLE_TITLE\")}\n            </h1>\n          </div>\n          <div className=\"container_button_agreger_and_filter\">\n            <div className=\"content_header_user_button\">\n              {permissionsRoleUser?.permissionsRole?.GesRolCrear ? (\n                <Tooltip\n                  title={t(\n                    \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.ADD_USER_BUTTON_TOOLIP\"\n                  )}\n                >\n                  <button\n                    className=\"user_button_agreger\"\n                    onClick={handleOpenCreateUserModal}\n                  >\n                    <i className=\"fas fa-plus\"></i>\n                  </button>\n                </Tooltip>\n              ) : null}\n            </div>\n            <div className=\"user_filter_container\">\n              <Autocomplete\n                id=\"user_filter\"\n                sx={{ width: 250 }}\n                value={selectedUser}\n                inputValue={inputCleared ? \"\" : searchUser}\n                disableClearable={true}\n                onChange={handleAutocompleteChange}\n                open={open}\n                onInput={handleInputChange}\n                onOpen={() => {\n                  setOpen(true);\n                }}\n                onClose={() => {\n                  setOpen(false);\n                }}\n                isOptionEqualToValue={(option, value) =>\n                  option.name === value.name\n                }\n                getOptionLabel={(option) => option.name}\n                options={options}\n                loading={loadingText}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label={t(\n                      \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.SEARCH_INPUT\"\n                    )}\n                    size=\"small\"\n                    value={searchUser}\n                    InputProps={{\n                      endAdornment: (\n                        <React.Fragment>\n                          {loadingText ? (\n                            <CircularProgress color=\"inherit\" size={20} />\n                          ) : null}\n                          {params.InputProps.endAdornment}\n                        </React.Fragment>\n                      ),\n                      sx: { borderRadius: 2 },\n                    }}\n                  />\n                )}\n              />\n            </div>\n          </div>\n        </div>\n        <div className=\"user_table_container\">\n          <table className=\"user_datatable\">\n            <thead className=\"user_container_title_table\">\n              <tr>\n                <th>\n                  <h3 className=\"user_name\">\n                    {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.NAME\")}\n                  </h3>\n                </th>\n                <th>\n                  <h3 className=\"user_lastname\">\n                    {t(\n                      \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.LAST_NAME\"\n                    )}\n                  </h3>\n                </th>\n                <th>\n                  <h3 className=\"user_username\">\n                    {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.USER\")}\n                  </h3>\n                </th>\n                <th>\n                  <h3 className=\"user_countrycode\">\n                    {t(\n                      \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COUNTRY\"\n                    )}\n                  </h3>\n                </th>\n                <th>\n                  <h3 className=\"user_cellphone\">\n                    {t(\n                      \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.CELLPHONE\"\n                    )}\n                  </h3>\n                </th>\n                <th>\n                  <h3 className=\"user_email\">\n                    {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.EMAIL\")}\n                  </h3>\n                </th>\n                <th>\n                  <h3 className=\"user_enabled_disabled\">\n                    {t(\n                      \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.MODIFICATIONS\"\n                    )}\n                  </h3>\n                </th>\n              </tr>\n            </thead>\n            {records?.map((item, key) => (\n              <tbody key={key} className=\"user_container_table_body\">\n                <>\n                  <tr>\n                    <td className=\"user_container_name_column\">{item.name}</td>\n                    <td className=\"user_container_lastname\">\n                      {item.last_name}\n                    </td>\n                    <td className=\"user_container_username\">{item.user}</td>\n                    <td className=\"user_container_countrycode\">\n                      {item.countryCode === null ? \"\" : `+${item.countryCode}`}\n                    </td>\n                    <td className=\"user_container_cellphone\">\n                      ************* {/* {item.cellPhone} */}\n                    </td>\n                    <td className=\"user_container_email\">\n                      {\" \"}\n                      ************* {/* {item.email} */}\n                    </td>\n                    <td className=\"user_container_acctions\">\n                      {permissionsRoleUser?.permissionsRole?.GesRolEditar ? (\n                        <Tooltip\n                          title={t(\n                            \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.MODAL_EDIT_TOOLTIP\"\n                          )}\n                        >\n                          <ModeEditIcon\n                            className=\"user_edit_button\"\n                            onClick={() => handleOpenEditUserModal(item.id)}\n                          />\n                        </Tooltip>\n                      ) : null}\n\n                      {permissionsRoleUser?.permissionsRole?.GesRolDes ? (\n                        <UserToggleSwitch\n                          currentIdUser={item.id}\n                          currentUserStatus={item.enabled}\n                        />\n                      ) : null}\n                    </td>\n                  </tr>\n                </>\n              </tbody>\n            ))}\n          </table>\n        </div>\n      </div>\n\n      <div className=\"users_pagination\">\n        <Fab\n          size=\"small\"\n          aria-label=\"left\"\n          className=\"user_pagination_button\"\n          onClick={prePage}\n          disabled={currentPage <= 1}\n        >\n          <ChevronLeftIcon />\n        </Fab>\n        <span>\n          {currentPage} / {totalPages}\n        </span>\n        <Fab\n          size=\"small\"\n          aria-label=\"right\"\n          className=\"user_pagination_button\"\n          onClick={nextPage}\n          disabled={currentPage === totalPages || totalPages === 0}\n        >\n          <ChevronRightIcon />\n        </Fab>\n      </div>\n      <ResponsiveDialog refetch={refetch} />\n      <FullScreenDialog />\n      <EditUser iddUser={idd} dataUsers={users} refetch={refetch} />\n      <ModalAlertUserStatusChange iddUser={idd} setIdd={setIdd} />\n    </>\n  );\n};\n\nexport default DataTable;\n","export default __webpack_public_path__ + \"static/media/location.1636acf4.png\";","// import React from 'react'\nimport location from '../../assets/location.png';\nimport React, { useEffect, useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { calc_controler_on_off, color_status_project, weather_convert, getTimeGlobal } from '../../utils/helpers';\nimport waather_icon from '../../assets/3d.png';\nimport { AuthContext } from '../../context/AuthProvider';\n\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nconst ProjectCard = (props) => {\n  const { t } = useTranslation();\n  const [wea, setWea] = React.useState(false);\n  const { setProject, setProjectID, setMacrometer } = useContext(AuthContext);\n\n  const history = useHistory();\n  const { item } = props;\n  let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  let f = new Date();\n\n\n  var day0 = f.toUTCString().substring(0, 25) + ' GMT';\n  var temp0 = new Date(day0).getTime() + item.time_zone * HORA_EN_MILISEGUNDO;\n  var dayAct = new Date(temp0);\n  // // Set the date to \"2018-09-01T16:01:36.386Z\"\n  // // const utcDate = zonedTimeToUtc(\"2018-09-01 18:01:36.386\", \"Europe/Berlin\");\n\n  // // Obtain a Date instance that will render the equivalent Berlin time for the UTC date\n  // const date = new Date(\"2018-09-01T16:01:36.386Z\");\n  // const timeZone = \"Europe/Berlin\";\n  // const zonedDate = utcToZonedTime(date, timeZone);\n  // // zonedDate could be used to initialize a date picker or display the formatted local date/time\n\n  // // Set the output to \"1.9.2018 18:01:36.386 GMT+02:00 (CEST)\"\n  // const pattern = \"d.M.yyyy HH:mm:ss.SSS 'GMT' XXX (z)\";\n  // const output = format(zonedDate, pattern, { timeZone: \"Europe/Berlin\" });\n  // console.log(\"output\", output);\n\n  // useEffect(async () => {\n  //   return await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${item.city}&appid=47cf75287a5f38a1f022bd34d73f0987`)\n  //     .then(response => response.json())\n  //     .then(data => setWea(data));\n  // }, [item])\n\n  function openProject() {\n    setProjectID(item.id);\n    localStorage.setItem('id', item.id);\n    localStorage.setItem('imgProject', item.img);\n    localStorage.setItem('nameProject', item.name);\n    localStorage.setItem('startTime', item.start_time);\n    localStorage.setItem('endtTime', item.end_time);\n    localStorage.setItem('prefix', item.prefix_currency);\n    localStorage.setItem('kwhCost', item.kwh_cost);\n    localStorage.setItem('project_selected', JSON.stringify(props.item));\n    \n    let arrayProj = [];\n    arrayProj.push(item);\n    setProject(arrayProj);\n    history.push('/app/areas/' + item.id);\n  }\n  // useEffect(() => {\n  //   const { data, loading, refetch } = useQuery(GET_MACROMETER_IN_PROJECT, {\n  //     variables: { ProjectId: parseInt(item?.id) },\n  //     fetchPolicy: 'network-only',\n  //   });\n  //   console.log(data)\n  // }, [])\n  \n  return (\n    <div\n      className=\"_pro_car_container\"\n      onClick={openProject}\n    >\n      <div className=\"_pro_car_container_img\">\n        <div className=\"_pro_car_img_container\">\n          <img\n            className=\"_pro_car_img\"\n            alt=\"Logo\"\n            src={item.img ? item.img : 'https://horuspro.s3.amazonaws.com/Private/default/Hotel/hotel_default.png'}\n          />\n        </div>\n      </div>\n      <div className=\"_pro_car_container_info\">\n        <div className=\"_pro_car_info_name\">\n          <span>{item.name}</span>\n        </div>\n        <div className=\"_pro_car_info_state\">\n          <span className={`_pro_car_info_state_color ${color_status_project(item.numControllers, item.controllers_offline)}`}>\n            <span>{`${calc_controler_on_off(item.numControllers, item.controllers_offline)}${t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.ONLINE')}`}</span>\n          </span>\n        </div>\n        <div className=\"_pro_car_info_city_contry\">\n          <span>\n            <span>\n              <img\n                src={location}\n                width=\"20\"\n                height=\"20\"\n                alt=\"Icon\"\n              />\n            </span>{' '}\n            {item.city} - {item.country}\n          </span>\n        </div>\n      </div>\n      <div className=\"_pro_car_container_cad\">\n        <div className=\"_pro_car_info_count_titles\">\n          <span>{t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.CONTROLLERS')}</span>\n        </div>\n        <div className=\"_pro_car_info_count_titles\">\n          <span>{t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.AREAS')}</span>\n        </div>\n        <div className=\"_pro_car_info_count_titles\">\n          <span>{t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.DEVICES')}</span>\n        </div>\n        <div className=\"_pro_car_info_num_count\">\n          <span>\n            <span>{item.numControllers}</span> / <span className={`${item.controllers_offline > 0 ? '_pro_car_info_num_count_off' : false}`}>{item.controllers_offline}</span>\n          </span>\n        </div>\n        <div className=\"_pro_car_info_num_count\">\n          <span>\n            <span>{item.room_online}</span> / <span className={`${item.room_offline > 0 ? '_pro_car_info_num_count_off' : false}`}>{item.room_offline}</span>\n          </span>\n        </div>\n        <div className=\"_pro_car_info_num_count\">\n          <span>\n            <span>{item.device_error_free}</span> / <span className={`${item.device_error > 0 ? '_pro_car_info_num_count_off' : false}`}>{item.device_error}</span>\n          </span>\n        </div>\n      </div>\n      <div className=\"_pro_car_container_weather\">\n        <div className=\"_pro_car_info_weather_and_clocl\">\n          <div className=\"_pro_car_info_weather_\">\n            {true ? (\n              <>\n                <div className=\"_pro_car_info_weather_icon_\">\n                  {/* <img src={`http://openweathermap.org/img/wn/${wea.weather[0].icon}.png`} alt=\"Logo\" width=\"60\" height=\"60\"/> */}\n                  <img\n                    src={waather_icon}\n                    alt=\"Logo\"\n                    width=\"60\"\n                    height=\"60\"\n                  />\n                </div>\n                <div className=\"_pro_car_info_weather_temp_\">\n                  {/* <span>{weather_convert(wea.main.temp)}<small><sup>°C</sup></small></span> */}\n                  <span>\n                    23.6\n                    <small>\n                      <sup>°C</sup>\n                    </small>\n                  </span>\n                </div>\n              </>\n            ) : (\n              <></>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default ProjectCard;\n","export default \"data:image/png;base64,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\"","import React, { useContext, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport Chip from \"@material-ui/core/Chip\";\nimport { TextField } from \"@material-ui/core\";\nimport { ListItemsAreas } from \"../listItems/ListItemsAreas\";\n\n//GraphQL Hooks & Queries\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport { GET_ALL_LOGGED_USER_PROJECT } from \"../../controllers/projectController\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst FilterProject = ({\n  user,\n  projects,\n  showPagination,\n  // refetch,\n  dataProjects,\n}) => {\n  const { t } = useTranslation();\n  const history = useHistory();\n  const { setProject, setProjectID, permissionsRoleUser } = useContext(AuthContext);\n  const { data, loading, error, refetch } = useQuery(\n    GET_ALL_LOGGED_USER_PROJECT,\n    {\n      fetchPolicy: \"no-cache\",\n      variables: {\n        projectManagementId: parseInt(localStorage.getItem(\"np\")),\n      },\n    }\n  );\n  const [value, setValue] = React.useState();\n  const proyectos = projects;\n  const [found, setFound] = React.useState();\n  const imgProject = data?.projectManagement.find((element) => element.id == found?.id)?.img;\n  localStorage.setItem(\"nameProject\", found?.name);\n  localStorage.setItem(\"imgProject\", imgProject);\n\n  useEffect(() => {\n    if (value) {\n      DatasProjects();\n    }\n  }, [value]);\n\n  useEffect(() => {\n    if (found) {\n      navigateProject();\n    }\n  }, [found]);\n\n  const DatasProjects = () => {\n    const resultado = proyectos.find((element) => element.id == value.id);\n    setFound(resultado);\n  };\n  const navigateProject = () => {\n    setProjectID(found.id);\n    history.push(\"/app/areas/\" + found.id);\n  };\n\n  const handleDeleteProject = () => {\n    localStorage.setItem(\"nameProject\", \"\");\n    sessionStorage.removeItem(\"resultadoFinal\");\n    sessionStorage.removeItem(\"macrometerArgos\");\n    window.location.reload();\n  };\n\n  return (\n    <div className=\"filterproject_container\">\n      <div className=\"filterproject_title\">\n        <span>\n          {t(\"VIEW_PROJECT.COMPONENT_PROJECT_FILTER.WELCOME\")}, {user}\n        </span>\n      </div>\n      <div className=\"filterproject_filter_search_container\">\n        {permissionsRoleUser?.permissionsRole?.proy ? (\n          <Autocomplete\n            size=\"small\"\n            value={value}\n            onChange={(event, newValue) => {\n              setValue(newValue);\n              localStorage.setItem(\"id\", newValue.id);\n              localStorage.setItem(\n                \"project_selected\",\n                JSON.stringify(\n                  dataProjects?.getAllProjectsName?.find(\n                    (i) => i.id === newValue.id\n                  )\n                )\n              );\n              setProject([\n                dataProjects?.getAllProjectsName?.find(\n                  (i) => i.id === newValue.id\n                ),\n              ]);\n            }}\n            id=\"combo-box-demo\"\n            options={projects}\n            getOptionLabel={(option) => option.name}\n            style={{ width: 300 }}\n            renderInput={(params) => (\n              <React.Fragment>\n                <TextField\n                  sx={{ margiButton: \"15px\", border: \"#21A11D\" }}\n                  {...params}\n                  style={{ height: 30 }}\n                  label={t(\n                    \"VIEW_PROJECT.COMPONENT_PROJECT_FILTER.PROJECT_FILTER_PLACEHOLDER\"\n                  )}\n                  variant=\"outlined\"\n                />\n              </React.Fragment>\n            )}\n          />\n        ) : null}\n\n        {!showPagination && (\n          <Chip\n            style={{ backgroundColor: \"#21A11D\", color: \"white\" }}\n            label={localStorage.getItem(\"nameProject\")}\n            onDelete={handleDeleteProject}\n          />\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default FilterProject;\n","import React from 'react'\n\nexport default function Construction() {\n    return (\n        <lottie-player\n            style={{\n            width: \"70%\",\n            marginLeft: \"25%\",\n            marginRight: \"auto\",\n            }}\n            className=\"_logo\"\n            src=\"https://assets7.lottiefiles.com/packages/lf20_8uHQ7s.json\"\n            background=\"transparent\"\n            speed=\"1\"\n            loop\n            autoplay\n        ></lottie-player>\n    )\n}\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport { GET_INFO_USER_LOGGED } from \"../../../controllers/projectController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { useHistory } from \"react-router-dom\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport { Fab } from \"@material-ui/core\";\n\n//components\nimport ProjectCard from \"../../../components/projects/ProjectCard\";\nimport FilterProject from \"../../../components/filterProject/FilterProject\";\nimport {\n  controller_err,\n  room_err,\n  room_all,\n  device_all,\n  device_err,\n} from \"../../../utils/helpers\";\nimport Construction from \"../../../components/loading/Construction\";\n\nconst Projects = () => {\n  const {\n    user,\n    setUser,\n    projects,\n    setProjects,\n    page,\n    setPage,\n    variablePage,\n    setVariablePage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n  const history = useHistory();\n  const [letterMatch, setletterMatch] = useState(\"\");\n  const [inputProject, setInputProject] = useState([]);\n  const [cantPage, setCantPage] = useState(0);\n  const [showPagination, setShowPagination] = useState(true);\n  const {\n    data: Datacache,\n    loading: loadingCache,\n    error: errorCache,\n    refetch,\n  } = useQuery(GET_INFO_USER_LOGGED, {\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: false,\n\n    variables: {\n      records: 5,\n      page: variablePage,\n    },\n  });\n\n  const [getData, { data: queryData, loading: loadingData, error: errorData }] =\n    useLazyQuery(GET_INFO_USER_LOGGED, {\n      fetchPolicy: \"no-cache\",\n    });\n\n  const data = queryData || Datacache;\n  const loading = loadingData || loadingCache;\n  const error = errorCache || errorData;\n\n  const handleRight = () => {\n    if (page <= cantPage) {\n      setVariablePage(variablePage + 1);\n      setPage(page + 1);\n    }\n  };\n\n  const handleLeft = () => {\n    if (page > 1) {\n      setVariablePage(variablePage - 1);\n      setPage(page - 1);\n    }\n  };\n\n  const handleProjectFilter = (match) => {\n    const filter__project = projects.filter((key) =>\n      key.name.toLowerCase().includes(match.toLowerCase())\n    );\n    setletterMatch(match);\n    setInputProject(filter__project);\n  };\n\n  const _project = () => {\n    if (inputProject.length == 0 && letterMatch == \"\") return projects;\n    if (inputProject) {\n      return inputProject;\n    } else {\n      return projects;\n    }\n  };\n\n  useEffect(() => {\n    window.scroll({\n      top: 0,\n    });\n  }, []);\n\n  useEffect(() => {\n    if (page) {\n      refetch();\n    }\n  }, [page, refetch]);\n\n  useEffect(() => {\n    if (data) {\n      if (data.getInfoUserLogged.projects) {\n        setProjects([]);\n        let cantProy = Math.ceil(data.getInfoUserLogged.allProjects / 5);\n        setCantPage(cantProy);\n        for (let i = 0; i < data.getInfoUserLogged.projects.length; i++) {\n          setProjects((proj) => [\n            ...proj,\n            {\n              id: data.getInfoUserLogged.projects[i].id,\n              name: data.getInfoUserLogged.projects[i].name,\n              city: data.getInfoUserLogged.projects[i].city,\n              img: data.getInfoUserLogged.projects[i].img,\n              country: data.getInfoUserLogged.projects[i].country,\n              controllers_offline:\n                data.getInfoUserLogged.projects[i].offlineControllers,\n              controllers_online:\n                data.getInfoUserLogged.projects[i].onlineControllers,\n              numControllers: data.getInfoUserLogged.projects[i].numControllers,\n              device_error: data.getInfoUserLogged.projects[i].offlineDevices,\n              device_error_free: data.getInfoUserLogged.projects[i].numDevices,\n              room_offline: data.getInfoUserLogged.projects[i].offlineRooms,\n              room_online: data.getInfoUserLogged.projects[i].numRooms,\n              start_time: data.getInfoUserLogged.projects[i].start_time,\n              /* start_time:\n                data.getInfoUserLogged[0].ProjectUsers[i].Project.start_time,\n              end_time:\n                data.ggetInfoUserLogged[0].ProjectUsers[i].Project.end_time,\n              time_zone:\n                data.ggetInfoUserLogged[0].ProjectUsers[i].Project.time_zone,\n              kwh_cost:\n                data.ggetInfoUserLogged[0].ProjectUsers[i].Project.kwh_cost,\n              prefix_currency:\n                data.ggetInfoUserLogged[0].ProjectUsers[i].Project\n                  ?.prefix_currency,\n              currency:\n                data.ggetInfoUserLogged[0].ProjectUsers[i].Project?.currency,*/\n            },\n          ]);\n        }\n      }\n    }\n  }, [data]);\n\n  useEffect(() => {\n    localStorage.setItem(\"project\", JSON.stringify(projects));\n    setUser(localStorage.getItem(\"name\"));\n  });\n\n  if (error) {\n    if (error == \"Error: Session expired due to inactivity\") {\n      localStorage.removeItem(\"Token\");\n      history.push(\"/\");\n    }\n    return (\n      <div>\n        <Construction />\n      </div>\n    );\n  }\n\n  if (loading) {\n    return (\n      <div\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        }}\n      >\n        <Loading />\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"projects_container\">\n      <FilterProject\n        user={user}\n        dataProjects={data}\n        projects={data.getAllProjectsName}\n        showPagination={showPagination}\n        refetch={refetch}\n      />\n      {permissionsRoleUser?.permissionsRole?.proy\n        ? _project().map((item, key) => (\n            <ProjectCard data={Datacache} key={key} item={item} />\n          ))\n        : null}\n\n      {permissionsRoleUser?.permissionsRole?.proy && showPagination ? (\n        <div className=\"projects_pagination\">\n          <Fab\n            size=\"small\"\n            aria-label=\"left\"\n            className=\"projects_pagination_button\"\n            onClick={handleLeft}\n            disabled={page <= 1}\n          >\n            <ChevronLeftIcon />\n          </Fab>\n\n          <span>\n            {page} / {cantPage}\n          </span>\n\n          <Fab\n            size=\"small\"\n            aria-label=\"right\"\n            className=\"projects_pagination_button\"\n            onClick={handleRight}\n            disabled={page === cantPage}\n          >\n            <ChevronRightIcon />\n          </Fab>\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\nexport default Projects;\n","import gql from \"graphql-tag\";\n\nexport const GET_DATA_REPORT = gql`\n  query (\n    $project_id: Int!\n    $RoomId: Int!\n    $event_date: Date!\n    $start_time: Date!\n    $end_time: Date!\n  ) {\n    getDataReport(\n      project_id: $project_id\n      RoomId: $RoomId\n      event_date: $event_date\n      start_time: $start_time\n      end_time: $end_time\n    )\n  }\n`;\n\nexport const GET_NEW_DATA_OCCUPANCY = gql`\n  query (\n    $ProjectId: Int\n    $NewRoomId: String!\n    $event_date: Date!\n    $start_time: Date\n    $end_time: Date\n  ) {\n    getNewDataOccupancy(\n      ProjectId: $ProjectId\n      NewRoomId: $NewRoomId\n      event_date: $event_date\n      start_time: $start_time\n      end_time: $end_time\n    )\n  }\n`;\n\nexport const GET_DATA_MEASURER_REPORT = gql`\n  query ($RoomId: Int!, $start_time: Date!, $end_time: Date!) {\n    getReportMeterZWave(\n      RoomId: $RoomId\n      start_time: $start_time\n      end_time: $end_time\n    )\n  }\n`;\n\nexport const GET_DATA_MEASURER_BY_PROJECT = gql`\n  query (\n    $ProjectId: Int!\n    $start_time: Date!\n    $end_time: Date!\n    $date_range: [Date]\n    $time_zone: String\n  ) {\n    getMetersByProject(\n      date_range: $date_range\n      ProjectId: $ProjectId\n      start_time: $start_time\n      end_time: $end_time\n      time_zone: $time_zone\n    )\n  }\n`;\n\nexport const GET_GENERAL_OCCUPATION_REPORT = gql`\n  query ($ProjectId: Int!, $start_time: String!, $end_time: String!) {\n    getGeneralOccupationReport(\n      ProjectId: $ProjectId\n      start_time: $start_time\n      end_time: $end_time\n    )\n  }\n`;\n\nexport const GET_DEVICE_BY_TEMPERATURE = gql`\n  query Query(\n    $typeGateway: String!\n    $RoomId: Int\n    $NewRoomId: String\n    $hourStart: Date\n    $hourEnd: Date\n  ) {\n    getDeviceByTemperature(\n      typeGateway: $typeGateway\n      RoomId: $RoomId\n      NewRoomId: $NewRoomId\n      hourStart: $hourStart\n      hourEnd: $hourEnd\n    )\n  }\n`;\n\nexport const GET_DASHBOARD_BY_TEMPERATURE = gql`\n  query getDataDashboard($serial: String!) {\n    getDataDashboard(serial: $serial)\n  }\n`;\n\nexport const GET_BATTERY_DEVICES = gql`\n  query ($DeviceId: Int) {\n    getDeviceByBatteryLevel(DeviceId: $DeviceId)\n  }\n`;\n\nexport const GET_METTER_HISTORY_BY_HOUR = gql`\n  query {\n    getMetterHistoriesByHour(serial: \"004000006585\")\n  }\n`;\n\nexport const GET_REPORT_FAILS_BY_PROJECT = gql`\n  query ($ProjectId: Int!) {\n    getFailuresReport(ProjectId: $ProjectId)\n  }\n`;\n\nexport const GET_BATTERY_NEW_DEVICES = gql`\n  query ($itemId: String!) {\n    getAllNewDeviceByBatteryLevel(itemId: $itemId)\n  }\n`;\n","export default __webpack_public_path__ + \"static/media/grafica_vacia.dcb71867.svg\";","import React, { useState, useEffect } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction OccupancyChart({ data, dateMin, dateMax, timeZone }) {\n  const { t } = useTranslation();\n  const [innerWidth, setInnerWidth] = useState(window.innerWidth);\n\n  return (\n    <>\n      {!data?.graph_data ? (\n        <div className=\"date_vacio_report_measurer\">\n          <span>\n            <i class=\"fas fa-exclamation-triangle\"></i>{\" \"}\n            {t(\n              \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.NO_DATA\"\n            )}\n          </span>\n        </div>\n      ) : (\n        <HighchartsReact\n          options={{\n            title: {\n              text: \"\",\n              align: \"left\",\n            },\n            yAxis: {\n              min: 0,\n              max: data?.graph_data.length,\n              tickAmount: data?.graph_data.length + 1,\n              title: {\n                enabled: false,\n              },\n            },\n            plotOptions: {\n              area: {\n                fillOpacity: 0.4,\n                marker: {\n                  enabled: true,\n                  symbol: \"circle\",\n                },\n              },\n              series: {\n                states: {\n                  inactive: {\n                    enabled: false,\n                  },\n                },\n                turboThreshold: 0,\n                marker: {\n                  enabled: true,\n                  symbol: \"circle\",\n                },\n                label: {\n                  enabled: false,\n                },\n              },\n            },\n            legend: {\n              align: innerWidth <= 980 ? \"center\" : \"right\",\n              verticalAlign: innerWidth <= 980 ? \"bottom\" : \"top\",\n              layout: innerWidth <= 980 ? \"horizontal\" : \"vertical\",\n              x: 0,\n              y: 0,\n            },\n            subtitle: {\n              text: \"\",\n              align: \"left\",\n            },\n            chart: {\n              zoomType: \"x\",\n            },\n            xAxis: {\n              type: \"datetime\",\n              tickInterval: 3600000,\n              min: dateMin,\n              max: dateMax,\n              labels: {\n                format: \"{value:%H:%M}\",\n              },\n            },\n            tooltip: {\n              xDateFormat: \"%H:%M:%S\",\n              headerFormat: \"<b>{point.key}</b><br>\",\n            },\n            time: {\n              timezoneOffset: timeZone,\n            },\n            series: data?.graph_data,\n            credits: {\n              enabled: false,\n            },\n          }}\n        />\n      )}\n    </>\n  );\n}\n\nexport default OccupancyChart;\n","import gql from \"graphql-tag\";\n\nexport const PDF_GENERAL_OCUPATION_REPORT = gql`\n  mutation pdfGeneralOcupationReport(\n    $image: [String]\n    $data: JSON\n    $startTime: String\n    $finishTime: String\n    $nameProject: String\n    $userName: String\n    $imageProject: String\n    $datePrint: String\n  ) {\n    pdfGeneralOcupationReport(\n      image: $image\n      data: $data\n      startTime: $startTime\n      finishTime: $finishTime\n      nameProject: $nameProject\n      userName: $userName\n      imageProject: $imageProject\n      datePrint: $datePrint\n    )\n  }\n`;\n\nexport const PDF_OCUPATION_BY_ROOM = gql`\n  mutation pdfOcupationByRoom(\n    $image: [String]\n    $data: JSON\n    $prefix_currency: String\n    $kwh_cost: Float\n    $startTime: String\n    $finishTime: String\n    $nameProject: String\n    $userName: String\n    $imageProject: String\n    $datePrint: String\n  ) {\n    pdfOcupationByRoom(\n      image: $image\n      data: $data\n      prefix_currency: $prefix_currency\n      kwh_cost: $kwh_cost\n      startTime: $startTime\n      finishTime: $finishTime\n      nameProject: $nameProject\n      userName: $userName\n      imageProject: $imageProject\n      datePrint: $datePrint\n    )\n  }\n`;\n\nexport const PDF_MEASURE_GENERAL = gql`\n  mutation pdfMeasureGeneral(\n    $image: [String]\n    $data: JSON\n    $startTime: String\n    $date_range: [String]\n    $finishTime: String\n    $nameProject: String\n    $userName: String\n    $imageProject: String\n    $datePrint: String\n  ) {\n    pdfMeasureGeneral(\n      image: $image\n      data: $data\n      startTime: $startTime\n      date_range: $date_range\n      finishTime: $finishTime\n      nameProject: $nameProject\n      userName: $userName\n      imageProject: $imageProject\n      datePrint: $datePrint\n    )\n  }\n`;\n\nexport const PDF_MEASURE_PHASES = gql`\n  mutation pdfMeasurePhases(\n    $image: [String]\n    $data: JSON\n    $date_range: [String]\n    $startTime: String\n    $finishTime: String\n    $nameProject: String\n    $userName: String\n    $imageProject: String\n    $datePrint: String\n  ) {\n    pdfMeasurePhases(\n      image: $image\n      data: $data\n      startTime: $startTime\n      date_range: $date_range\n      finishTime: $finishTime\n      nameProject: $nameProject\n      userName: $userName\n      imageProject: $imageProject\n      datePrint: $datePrint\n    )\n  }\n`;\n\nexport const PDF_MACROMETER = gql`\n  mutation pdfMacrometer(\n    $serial: String\n    $location: String\n    $year: Int\n    $fullYear: Int\n    $month: Int\n    $data: JSON\n    $startTime: String\n    $startTimeEpoch: Int\n    $finishTime: String\n    $finishTimeEpoch: Int\n    $nameProject: String\n    $userName: String\n    $imageProject: String\n    $datePrint: String\n  ) {\n    pdfMacrometer(\n      serial: $serial\n      location: $location\n      year: $year\n      fullYear: $fullYear\n      month: $month\n      data: $data\n      startTime: $startTime\n      startTimeEpoch: $startTimeEpoch\n      finishTime: $finishTime\n      finishTimeEpoch: $finishTimeEpoch\n      nameProject: $nameProject\n      userName: $userName\n      imageProject: $imageProject\n      datePrint: $datePrint\n    )\n  }\n`;\n\nexport const EXCEL_GENERAL_OCUPATION_REPORT = gql `\nmutation Mutation($projectId: Int!, $startTime: Date!, $endTime: Date!, $dateRange: [Date], $timeZone: String) {\n  generateExcelReport(ProjectId: $projectId, start_time: $startTime, end_time: $endTime, date_range: $dateRange, time_zone: $timeZone)\n}\n`;\n\nexport const EXCEL_MACROMETER_REPORT = gql `\nquery Query($serial: String!, $startTime: String!, $endTime: String!) {\n  getConsumptionReportFile(serial: $serial, startTime: $startTime, endTime: $endTime)\n    }\n`;  ","import React, {\n  useState,\n  useEffect,\n  useContext,\n  forwardRef,\n  useRef,\n  useImperativeHandle,\n} from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { useQuery, useLazyQuery, useMutation } from \"@apollo/client\";\nimport { GET_DATA_REPORT } from \"../../controllers/reportController\";\nimport Grid from \"@material-ui/core/Grid\";\nimport DateFnsUtils from \"@date-io/date-fns\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport frLocale from \"date-fns/locale/es\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\nimport Loading from \"../loading/Loading\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport grafica from \"../../assets/grafica_vacia.svg\";\nimport Construction from \"../loading/Construction\";\nimport html2canvas from \"html2canvas\";\nimport OccupancyChart from \"./OccupancyChart\";\n\n//Functions\nimport { formatDateLocal } from \"../../utils/helpers\";\n\n//query and mutation\nimport { PDF_OCUPATION_BY_ROOM } from \"../../controllers/pdfControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n// Map(Highcharts);\nHighcharts.setOptions({\n  lang: {\n    resetZoom: \"Quitar zoom\",\n    resetZoomTitle: \"Quita todo el zoom aplicado\",\n  },\n});\n\nconst innerTheme = createTheme({\n  palette: {\n    primary: {\n      main: green[500],\n    },\n    secondary: {\n      light: \"#ff7961\",\n      main: \"#f44336\",\n      dark: \"#ba000d\",\n      contrastText: \"#000\",\n    },\n  },\n});\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\nconst StyledTableCell3 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    color: \"red\",\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#22a374\",\n    position: \"relative\",\n  },\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n  formControl: {\n    minWidth: 120,\n  },\n  selectEmpty: {\n    marginTop: theme.spacing(1),\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: \"relative\",\n    height: 200,\n    [theme.breakpoints.down(\"xs\")]: {\n      width: \"100% !important\", // Overrides inline-style\n      height: 100,\n    },\n    \"&:hover, &$focusVisible\": {\n      zIndex: 1,\n      \"& $imageBackdrop\": {\n        opacity: 0.15,\n      },\n      \"& $imageMarked\": {\n        opacity: 0,\n      },\n      \"& $imageTitle\": {\n        border: \"4px solid currentColor\",\n      },\n    },\n    formControl: {\n      margin: theme.spacing(1),\n      minWidth: 120,\n    },\n    selectEmpty: {\n      marginTop: theme.spacing(2),\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center 40%\",\n  },\n  imageBackdrop: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  imageTitle: {\n    position: \"relative\",\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n      theme.spacing(1) + 6\n    }px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: \"absolute\",\n    bottom: -2,\n    left: \"calc(50% - 9px)\",\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  table: {\n    minWidth: 700,\n  },\n\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\n\nconst Occupation = forwardRef((props, ref) => {\n  const { t } = useTranslation();\n  const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n  const {\n    areas,\n    setArea,\n    area,\n    setIdArea,\n    idArea,\n    roomId,\n    setRoomId,\n    graphic,\n    setGraphic,\n    setLoadingPdf,\n  } = useContext(AuthContext);\n  const { project, RoomId, generalPdf, open, setOpen } = props;\n  const [reportData, setReportData] = useState([]);\n  const [dateMin, setDateMin] = useState();\n  const [dateMax, setDateMax] = useState();\n  const [parametroMin, setParametroMin] = useState();\n  const [parametroMax, setParametroMax] = useState();\n  const [nextDay, setNextDay] = useState(true);\n  const [paramDate, setParamDate] = useState(\"\");\n  const [dayMilisegundos, setDayMilisegundos] = useState(0);\n  const [time, setTime] = useState(project.time_zone * 60);\n  const classes = useStyles();\n  const [room, setRoom] = React.useState(localStorage.getItem(\"RoomName\"));\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [changeDay, setChangeDay] = React.useState(false);\n  const printRef = React.useRef();\n  const [basePdf, setBasePdf] = React.useState();\n\n  const handleClick = (event) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handleChange = (event) => {\n    // setRoom(event.target.value);\n    //setArea(event.target.value.alias);\n    setReportData([]);\n\n    setIdArea(event.target.value);\n    getDataReport({\n      variables: {\n        project_id: parseInt(project.id, 10),\n        RoomId: parseInt(event.target.value, 10),\n        event_date: paramDate,\n        start_time: parametroMin,\n        end_time: parametroMax,\n      },\n      fetchPolicy: \"cache-and-network\",\n    });\n    // setRoomId(event.target.value);\n  };\n  const [selectedDate, setSelectedDate] = React.useState();\n\n  const [getDataReport, { data, loading, error, networkStatus, refetch }] =\n    useLazyQuery(GET_DATA_REPORT, {\n      fetchPolicy: \"no-cache\",\n    });\n\n  // const _projects = () => {\n  //   const project = localStorage.getItem(\"project\");\n  //   const id_project = localStorage.getItem(\"id\");\n  //   return JSON.parse(project).filter((key) => key.id == id_project);\n  // };\n\n  useEffect(() => {\n    if (graphic) {\n      dataPdf();\n    }\n  }, [graphic]);\n\n  useEffect(() => {\n    if (basePdf) {\n      decodePdf();\n    }\n  }, [basePdf]);\n\n  useEffect(() => {\n    if (data) {\n      setReportData(data);\n      setChangeDay(true);\n    }\n  }, [data]);\n\n  useEffect(() => {\n    //  Si el proyecto no tiene zona horaria\n    if (!project.start_time || !project.end_time) {\n      let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n      //Obtenemos la fecha actual\n      var f = new Date();\n      //La configuramos para mostrarla en el calendario\n      setSelectedDate(\n        new Date(f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate())\n      );\n      setParamDate(\n        f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate()\n      );\n      //Guardamos el dia actual en milisegundos\n      setDayMilisegundos(\n        new Date(\n          f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate()\n        ).getTime()\n      );\n      var day = new Date();\n      // Armamos la hora inicial del proyecto + time zone con el que está configurado\n      var day_time_zone =\n        day.toString().substring(0, 16) + \" 00:00:00 GMT\" + project.time_zone;\n      // Configuramos el parametro que le enviaremos a la query del backend, en formato GMT 0 con la hora inicial\n      var param = day.toString().substring(0, 16) + \" 00:00:00 GMT\";\n      //Parámetro en milisegundos\n      var tempPara =\n        new Date(param).getTime() -\n        parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      //fecha en milisegundos\n      var tmpDate = new Date(day_time_zone).getTime();\n      //Parámetro inicial\n      setParametroMin(tempPara);\n      //Fecha inicial\n      setDateMin(tmpDate);\n      //parámetro final\n      setParametroMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n      //Fecha final\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n      getDataReport({\n        variables: {\n          project_id: parseInt(project.id, 10),\n          RoomId: parseInt(idArea, 10),\n          event_date:\n            f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate(),\n          start_time: tempPara,\n          end_time: parseInt(tmpDate, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: \"cache-and-network\",\n      });\n    } else {\n      var f = new Date();\n      //Valor de un día en milisegundos.\n      let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n      //Valor de una hora en milisegundos\n      let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n      var date = new Date();\n      //Fecha y hora teniendo en cuenta el time_zone del proyecto\n      var day2 =\n        date.toString().substring(0, 16) +\n        \" \" +\n        project.start_time +\n        \" GMT \" +\n        project.time_zone;\n\n      //Fecha y hora inicial del proyecto en GMT\n      var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n      //Fecha y hora inicial en GMT a milisegundos.\n      var tempPara =\n        new Date(param2).getTime() -\n        parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      //Fecha y hora inicial en GMT -time_zone a milisegundos.\n      var tmpDate = new Date(day2).getTime();\n      //Verificar si el día hotelero no ha terminado\n      if (f.getTime() < tmpDate) {\n        setParametroMin(parseInt(tempPara) - DIA_EN_MILISEGUNDOS);\n        setDateMin(parseInt(tmpDate) - DIA_EN_MILISEGUNDOS);\n        setParametroMax(\n          parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS\n        );\n        setDateMax(\n          parseInt(tmpDate, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS\n        );\n\n        var paramteroDate = new Date(f.getTime() - DIA_EN_MILISEGUNDOS);\n        setParamDate(\n          paramteroDate.getFullYear() +\n            \"-\" +\n            (paramteroDate.getMonth() + 1) +\n            \"-\" +\n            paramteroDate.getDate()\n        );\n        setSelectedDate(new Date(f.getTime() - DIA_EN_MILISEGUNDOS));\n\n        setDayMilisegundos(f.getTime() - DIA_EN_MILISEGUNDOS);\n        getDataReport({\n          variables: {\n            project_id: parseInt(project.id, 10),\n            RoomId: parseInt(idArea, 10),\n            event_date:\n              paramteroDate.getFullYear() +\n              \"-\" +\n              (paramteroDate.getMonth() + 1) +\n              \"-\" +\n              paramteroDate.getDate(),\n            start_time: parseInt(tempPara) - DIA_EN_MILISEGUNDOS,\n            end_time:\n              parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS,\n          },\n          fetchPolicy: \"cache-and-network\",\n        });\n      } else {\n        setParametroMin(parseInt(tempPara));\n        setDateMin(parseInt(tmpDate));\n        setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n        setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n        setSelectedDate(new Date(f.getTime()));\n        var paramteroDate = new Date(f.getTime());\n        setParamDate(\n          paramteroDate.getFullYear() +\n            \"-\" +\n            (paramteroDate.getMonth() + 1) +\n            \"-\" +\n            paramteroDate.getDate()\n        );\n        setDayMilisegundos(f.getTime());\n        getDataReport({\n          variables: {\n            project_id: parseInt(project.id, 10),\n            RoomId: parseInt(idArea, 10),\n            event_date:\n              paramteroDate.getFullYear() +\n              \"-\" +\n              (paramteroDate.getMonth() + 1) +\n              \"-\" +\n              paramteroDate.getDate(),\n            start_time: parseInt(tempPara),\n            end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n          },\n          fetchPolicy: \"cache-and-network\",\n        });\n      }\n    }\n  }, []);\n\n  useImperativeHandle(ref, () => ({\n    async occupationPdf() {\n      setLoadingPdf(true);\n      await imageGraphic();\n    },\n  }));\n\n  /* const { data, loading, error, networkStatus, refetch } = useQuery(\n    GET_DATA_REPORT,\n    {\n      variables: {\n        project_id: parseInt(project.id, 10),\n        RoomId: parseInt(idArea, 10),\n        event_date: paramDate,\n        start_time: parametroMin,\n        end_time: parametroMax,\n      },\n      fetchPolicy: \"cache-and-network\",\n      notifyOnNetworkStatusChange: true,\n    }\n  );*/\n\n  const before = (date) => {\n    setChangeDay(false);\n    setReportData([]);\n    setNextDay(false);\n    let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n    let date2 = date.getTime();\n    setSelectedDate(new Date(date2 - DIA_EN_MILISEGUNDOS));\n    var paramteroDate = new Date(date2 - DIA_EN_MILISEGUNDOS);\n    setParamDate(\n      paramteroDate.getFullYear() +\n        \"-\" +\n        (paramteroDate.getMonth() + 1) +\n        \"-\" +\n        paramteroDate.getDate()\n    );\n    if (!project.start_time || !project.end_time) {\n      var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n      var day2 =\n        dayTemp.toString().substring(0, 16) +\n        \" 00:00:00 GMT \" +\n        project.time_zone;\n      var param2 = day2.substring(0, 16) + \" 00:00:00 GMT\";\n\n      var tempPara =\n        new Date(param2).getTime() -\n        parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n      getDataReport({\n        variables: {\n          project_id: parseInt(project.id, 10),\n          RoomId: parseInt(idArea, 10),\n          event_date:\n            paramteroDate.getFullYear() +\n            \"-\" +\n            (paramteroDate.getMonth() + 1) +\n            \"-\" +\n            paramteroDate.getDate(),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: \"cache-and-network\",\n      });\n    } else {\n      var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n      var day2 =\n        dayTemp.toString().substring(0, 16) +\n        \" \" +\n        project.start_time +\n        \" GMT \" +\n        project.time_zone;\n      var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n\n      var tempPara =\n        new Date(param2).getTime() -\n        parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n      getDataReport({\n        variables: {\n          project_id: parseInt(project.id, 10),\n          RoomId: parseInt(idArea, 10),\n          event_date:\n            paramteroDate.getFullYear() +\n            \"-\" +\n            (paramteroDate.getMonth() + 1) +\n            \"-\" +\n            paramteroDate.getDate(),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: \"cache-and-network\",\n      });\n    }\n  };\n\n  const after = (date) => {\n    setChangeDay(false);\n    setReportData([]);\n    let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n    let date2 = date.getTime() + DIA_EN_MILISEGUNDOS;\n\n    if (date2 <= dayMilisegundos) {\n      setSelectedDate(new Date(date2));\n      var paramteroDate = new Date(date2);\n      setParamDate(\n        paramteroDate.getFullYear() +\n          \"-\" +\n          (paramteroDate.getMonth() + 1) +\n          \"-\" +\n          paramteroDate.getDate()\n      );\n      let dateNext = date2 + DIA_EN_MILISEGUNDOS;\n      if (dateNext > dayMilisegundos) {\n        setNextDay(true);\n      }\n\n      if (!project.start_time || !project.end_time) {\n        var dayTemp = new Date(date2);\n        var day2 =\n          dayTemp.toString().substring(0, 16) +\n          \" 00:00:00 GMT \" +\n          project.time_zone;\n        var param2 = day2.substring(0, 16) + \" 00:00:00 GMT\";\n\n        var tempPara =\n          new Date(param2).getTime() -\n          parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n        var tmpDate = new Date(day2).getTime();\n\n        setParametroMin(parseInt(tempPara));\n        setDateMin(parseInt(tmpDate));\n        setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n        setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n        getDataReport({\n          variables: {\n            project_id: parseInt(project.id, 10),\n            RoomId: parseInt(idArea, 10),\n            event_date:\n              paramteroDate.getFullYear() +\n              \"-\" +\n              (paramteroDate.getMonth() + 1) +\n              \"-\" +\n              paramteroDate.getDate(),\n            start_time: parseInt(tempPara),\n            end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n          },\n          fetchPolicy: \"cache-and-network\",\n        });\n      } else {\n        var dayTemp = new Date(date2);\n        var day2 =\n          dayTemp.toString().substring(0, 16) +\n          \" \" +\n          project.start_time +\n          \" GMT \" +\n          project.time_zone;\n        var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n\n        var tempPara =\n          new Date(param2).getTime() -\n          parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n        var tmpDate = new Date(day2).getTime();\n\n        setParametroMin(parseInt(tempPara));\n        setDateMin(parseInt(tmpDate));\n        setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n        setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n        getDataReport({\n          variables: {\n            project_id: parseInt(project.id, 10),\n            RoomId: parseInt(idArea, 10),\n            event_date:\n              paramteroDate.getFullYear() +\n              \"-\" +\n              (paramteroDate.getMonth() + 1) +\n              \"-\" +\n              paramteroDate.getDate(),\n            start_time: parseInt(tempPara),\n            end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n          },\n          fetchPolicy: \"cache-and-network\",\n        });\n      }\n    } else {\n      setNextDay(true);\n    }\n  };\n\n  const handleDateChange = (date) => {\n    setChangeDay(false);\n    setReportData([]);\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n    setSelectedDate(date);\n\n    if (!project.start_time || !project.end_time) {\n      var day2 =\n        date.toString().substring(0, 16) + \" 00:00:00 GMT \" + project.time_zone;\n      var param2 = day2.substring(0, 16) + \" 00:00:00 GMT\";\n      var tempPara =\n        new Date(param2).getTime() -\n        parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n\n      if (tmpDate > dayMilisegundos) {\n        setNextDay(true);\n      } else {\n        setNextDay(false);\n      }\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n      getDataReport({\n        variables: {\n          project_id: parseInt(project.id, 10),\n          RoomId: parseInt(idArea, 10),\n          event_date:\n            date.getFullYear() +\n            \"-\" +\n            (date.getMonth() + 1) +\n            \"-\" +\n            date.getDate(),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: \"cache-and-network\",\n      });\n    } else {\n      var day2 =\n        date.toString().substring(0, 16) +\n        \" \" +\n        project.start_time +\n        \" GMT \" +\n        project.time_zone;\n      var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n\n      var tempPara =\n        new Date(param2).getTime() -\n        parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n      if (tmpDate > dayMilisegundos) {\n        setNextDay(true);\n      } else {\n        setNextDay(false);\n      }\n\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n      getDataReport({\n        variables: {\n          project_id: parseInt(project.id, 10),\n          RoomId: parseInt(idArea, 10),\n          event_date:\n            date.getFullYear() +\n            \"-\" +\n            (date.getMonth() + 1) +\n            \"-\" +\n            date.getDate(),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: \"cache-and-network\",\n      });\n    }\n    //refetch();\n  };\n\n  function msToTime(duration) {\n    var seconds = parseInt((duration / 1000) % 60),\n      minutes = parseInt((duration / (1000 * 60)) % 60),\n      hours = parseInt((duration / (1000 * 60 * 60)) % 24);\n\n    hours = hours < 10 ? \"0\" + hours : hours;\n    minutes = minutes < 10 ? \"0\" + minutes : minutes;\n    seconds = seconds < 10 ? \"0\" + seconds : seconds;\n\n    return hours + \":\" + minutes;\n  }\n\n  function round(num, decimales = 1) {\n    var signo = num >= 0 ? 1 : -1;\n    num = num * signo;\n    if (decimales === 0)\n      //con 0 decimales\n      return signo * Math.round(num);\n    // round(x * 10 ^ decimales)\n    num = num.toString().split(\"e\");\n    num = Math.round(\n      +(num[0] + \"e\" + (num[1] ? +num[1] + decimales : decimales))\n    );\n    // x * 10 ^ (-decimales)\n    num = num.toString().split(\"e\");\n    return signo * (num[0] + \"e\" + (num[1] ? +num[1] - decimales : -decimales));\n  }\n\n  function consumoTotal() {\n    var Totales = {\n        consumoTotal: 0,\n        consumoEficiente: 0,\n        consumoIneficiente: 0,\n      },\n      i = 0;\n    for (i = 0; i < data.getDataReport.report_data.length; i++) {\n      Totales.consumoTotal += round(\n        data.getDataReport.report_data[i].total_consumption\n      );\n      Totales.consumoEficiente += round(\n        data.getDataReport.report_data[i].efficient_consumption\n      );\n      Totales.consumoIneficiente += round(\n        data.getDataReport.report_data[i].inefficient_consumption\n      );\n    }\n\n    return Totales;\n  }\n\n  function porcentaje(valor, valorTotal) {\n    if (valorTotal == 0) {\n      return 0;\n    }\n    return Number.parseFloat((valor / valorTotal) * 100).toFixed(1);\n  }\n\n  const options = {\n    orientation: \"landscape\",\n    unit: \"in\",\n    format: [4, 2],\n  };\n\n  if (error) {\n    return (\n      <div style={{}}>\n        <Construction />\n      </div>\n    );\n  }\n\n  if (loading || !reportData || !changeDay) {\n    return <Loading />;\n  }\n\n  const imageGraphic = async () => {\n    const element = printRef.current;\n    const canvas = await html2canvas(element);\n    const data = canvas.toDataURL(\"image/jpg\");\n\n    setGraphic(data.slice(22));\n    //var cadena = data.slice(22);\n    /* if (typeof link.download === \"string\") {\n      link.href = data;\n      link.download = \"imgGraph.jpg\";\n      \n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }  */\n    /* imagePie() */\n  };\n\n  const decodePdf = () => {\n    const linkSource = `data:application/pdf;base64,${basePdf}`;\n    const downloadLink = document.createElement(\"a\");\n    const fileName = \"Informe de reporte por ocupación.pdf\";\n    downloadLink.href = linkSource;\n    downloadLink.download = fileName;\n    downloadLink.click();\n    /* let pdfWindow = window.open(\"\");\n    pdfWindow.document.write(\n      \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n        encodeURI(basePdf) +\n        \"'></iframe>\"\n    ); */\n    setLoadingPdf(false);\n    setGraphic(\"\");\n    setBasePdf(\"\");\n  };\n\n  function dataPdf() {\n    try {\n      pdfGenerator({\n        variables: {\n          image: [graphic],\n          data: { report_data: data.getDataReport.report_data },\n          prefix_currency: localStorage.getItem(\"prefix\"),\n          kwh_cost: 0,\n          startTime: formatDateLocal(parametroMin - 86400000),\n          finishTime: \"\",\n          nameProject: localStorage.getItem(\"nameProject\"),\n          userName: localStorage.getItem(\"name\"),\n          imageProject: localStorage.getItem(\"imgProject\"),\n          datePrint: localStorage.getItem(\"localTime\"),\n        },\n      })\n        .then((resul) => {\n          setBasePdf(resul.data.pdfOcupationByRoom);\n        })\n        .catch((err) => {\n          console.error(err);\n        });\n    } catch (err) {\n      console.error(err);\n    }\n  }\n\n  return (\n    <div>\n      <div className=\"_container_graphic\">\n        <div className=\"date_picker_and_graph_container\">\n          <div\n            style={{\n              marginBottom: 15,\n            }}\n          >\n            {\" \"}\n            <MuiPickersUtilsProvider utils={DateFnsUtils} locale={frLocale}>\n              <Grid container justify=\"center\" style={{ width: \"max-content\" }}>\n                <IconButton\n                  color=\"grey\"\n                  onClick={() => {\n                    before(selectedDate);\n                  }}\n                > \n                  <ChevronLeft />\n                </IconButton>\n                <ThemeProvider theme={innerTheme}>\n                  <DatePicker\n                    okLabel=\"seleccionar\"\n                    showTodayButton={true}\n                    todayLabel=\"hoy\"\n                    id=\"date-picker-dialog\"\n                    label={t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.DATE\"\n                    )}\n                    format=\"eeee, dd MMMM\"\n                    value={selectedDate}\n                    onChange={handleDateChange}\n                    disableFuture\n                    color=\"primary\"\n                    KeyboardButtonProps={{\n                      \"aria-label\": \"change date\",\n                    }}\n                  />\n                </ThemeProvider>\n                <IconButton\n                  color=\"grey\"\n                  disabled={nextDay}\n                  onClick={() => {\n                    after(selectedDate);\n                  }}\n                >\n                  <ChevronRight />\n                </IconButton>\n                <FormControl className={classes.formControl}>\n                  <InputLabel id=\"demo-simple-select-helper-label\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.AREA\"\n                    )}\n                  </InputLabel>\n                  <Select\n                    labelId=\"demo-simple-select-helper-label\"\n                    id=\"demo-simple-select-helper\"\n                    value={idArea}\n                    onChange={handleChange}\n                  >\n                    {areas.map((item, key) => (\n                      <MenuItem key={key} value={item.id}>\n                        {item.alias} ({item.status})\n                      </MenuItem>\n                    ))}\n                  </Select>\n                </FormControl>\n              </Grid>\n            </MuiPickersUtilsProvider>\n          </div>\n          <div className=\"occupation_report_graph_container\" ref={printRef}>\n            <OccupancyChart\n              data={reportData.getDataReport}\n              dateMin={dateMin}\n              dateMax={dateMax}\n              timeZone={-(project.time_zone * 60)}\n            />\n          </div>\n        </div>\n\n        {/*  borrar el componente de abajo si ha pasado el 15 de febrero del 2024 y no ha suscedido ningun error */}\n        {/*  {reportData.getDataReport ? (\n          <>\n            {dateMax && (\n              <div ref={printRef}>\n                <OccupancyChart\n                  data={reportData.getDataReport}\n                  dateMin={dateMin}\n                  dateMax={dateMax}\n                  timeZone={-(project.time_zone * 60)}\n                />\n                 <HighchartsReact\n                  // constructorType=\"stockChart\"\n                  highcharts={Highcharts}\n                  options={{\n                    title: {\n                      text: \" \",\n                    },\n                    yAxis: {\n                      min: 0,\n                      max: reportData.getDataReport.graph_data.length,\n                      tickAmount:\n                        reportData.getDataReport.graph_data.length + 1,\n                      title: {\n                        enabled: false,\n                      },\n                    },\n                    plotOptions: {\n                      area: {\n                        fillOpacity: 0.4,\n                        marker: {\n                          enabled: true,\n                          symbol: \"circle\",\n                        },\n                      },\n                      series: {\n                        states: {\n                          inactive: {\n                            enabled: false,\n                          },\n                        },\n                        turboThreshold: 0,\n                        marker: {\n                          enabled: true,\n                          symbol: \"circle\",\n                        },\n                        label: {\n                          enabled: false,\n                        },\n                      },\n                    },\n                    legend: {\n                      align: \"right\",\n                      verticalAlign: \"top\",\n                      layout: \"vertical\",\n                      x: 0,\n                      y: 0,\n                    },\n                    xAxis: {\n                      type: \"datetime\",\n                      min: dateMin,\n                      max: dateMax,\n                      tickInterval: 3600000,\n                      labels: {\n                        format: \"{value:%H:%M}\",\n                      },\n                    },\n                    time: {\n                      timezoneOffset: -(project.time_zone * 60),\n                    },\n                    chart: {\n                      zoomType: \"x\",\n                    },\n\n                    // mapNavigation: {\n                    //   enableMouseWheelZoom: true,\n                    // },\n                    series: data?.getDataReport?.graph_data,\n                    tooltip: {\n                      xDateFormat: \"%H:%M:%S\",\n                      headerFormat: \"<b>{point.key}</b><br>\",\n                    },\n                  }}\n                />\n              </div>\n            )}\n          </>\n        ) : (\n          <>\n            <div className=\"__data_empty__\">\n              <img\n                src={grafica}\n                alt=\"Grafica vacía\"\n                className=\"__text_data_empty__\"\n              />\n            </div>\n          </>\n        )} */}\n\n        <div className=\"_report_energy\">\n          <div className=\"_container_energy\">\n            <div className=\"__title_energy\">\n              <span className=\"__icon_report\">\n                <i className=\"fas fa-chart-bar\"></i>\n              </span>{\" \"}\n              {t(\n                \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.GRAPH_TITLE\"\n              )}\n            </div>\n            {reportData.getDataReport ? (\n              <>\n                <TableContainer component={Paper} className=\"_container_table\">\n                  <Table\n                    className={classes.table}\n                    aria-label=\"customized table\"\n                  >\n                    <TableHead>\n                      <TableRow>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">% </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n                          )}\n                        </StyledTableCell>\n                      </TableRow>\n                    </TableHead>\n                    <TableBody>\n                      {reportData?.getDataReport?.report_data.map((row) => (\n                        <StyledTableRow key={row.name}>\n                          <StyledTableCell\n                            align=\"center\"\n                            component=\"th\"\n                            scope=\"row\"\n                          >\n                            {row?.name}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {row?.watts}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {msToTime(row?.total_time_on)}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {round(row?.total_consumption)} kWh\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {porcentaje(\n                              round(row?.total_consumption),\n                              round(consumoTotal().consumoTotal)\n                            )}\n                            %\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {msToTime(row?.efficient_time)}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {round(row?.efficient_consumption)} kWh\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {project?.prefix_currency}{\" \"}\n                            {project?.kwh_cost *\n                              round(row?.efficient_consumption)}{\" \"}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {msToTime(row?.inefficient_time)}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {round(row?.inefficient_consumption)} kWh\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {project?.prefix_currency}{\" \"}\n                            {project?.kwh_cost *\n                              round(row?.inefficient_consumption)}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {porcentaje(\n                              round(row?.inefficient_consumption),\n                              round(row?.total_consumption)\n                            )}\n                            %\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {porcentaje(\n                              round(row?.inefficient_consumption),\n                              round(consumoTotal().consumoIneficiente)\n                            )}\n                            %\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {project?.prefix_currency}{\" \"}\n                            {project?.kwh_cost * round(row?.total_consumption)}\n                          </StyledTableCell>\n                        </StyledTableRow>\n                      ))}\n                      <StyledTableRow>\n                        <StyledTableCell2 align=\"center\">\n                          {t(\n                            \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n                          )}\n                        </StyledTableCell2>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell2 align=\"center\">\n                          {round(consumoTotal().consumoTotal)} kWh\n                        </StyledTableCell2>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell2 align=\"center\">\n                          {round(consumoTotal().consumoEficiente)} kWh\n                          <br></br>{\" \"}\n                          {round(\n                            porcentaje(\n                              round(consumoTotal().consumoEficiente),\n                              round(consumoTotal().consumoTotal)\n                            )\n                          )}{\" \"}\n                          %\n                        </StyledTableCell2>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell3 align=\"center\">\n                          {round(consumoTotal().consumoIneficiente)} kWh\n                          <br></br>\n                          {porcentaje(\n                            round(consumoTotal().consumoIneficiente),\n                            round(consumoTotal().consumoTotal)\n                          )}{\" \"}\n                          %\n                        </StyledTableCell3>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                        <StyledTableCell align=\"center\"></StyledTableCell>\n                      </StyledTableRow>\n                    </TableBody>\n                  </Table>\n                </TableContainer>\n              </>\n            ) : (\n              <>\n                <TableHead>\n                  <TableRow>\n                    <StyledTableCell>\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">% </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n                      )}\n                    </StyledTableCell>\n                  </TableRow>\n                </TableHead>\n              </>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n});\n\nexport default Occupation;\n","export const Devices = {\n  BINARY_LIGHT_OFF: \"https://horuspro.s3.amazonaws.com/Public/binary_light_off.png\",\n  BINARY_LIGHT_ON: \"https://horuspro.s3.amazonaws.com/Public/binary_light_on.png\",\n  BUTTON_HOME_SELECTED:\n    \"https://horuspro.s3.amazonaws.com/Public/button_home_selected.png\",\n  BUTTON_HOME: \"https://horuspro.s3.amazonaws.com/Public/button_home.png\",\n  DESOCUPADA: \"https://horuspro.s3.amazonaws.com/Public/desocupada.png\",\n  DIMMABLE_LIGHT_10: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_10.png\",\n  DIMMABLE_LIGHT_20: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_20.png\",\n  DIMMABLE_LIGHT_30: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_30.png\",\n  DIMMABLE_LIGHT_40: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_40.png\",\n  DIMMABLE_LIGHT_50: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_50.png\",\n  DIMMABLE_LIGHT_60: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_60.png\",\n  DIMMABLE_LIGHT_70: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_70.png\",\n  DIMMABLE_LIGHT_80: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_80.png\",\n  DIMMABLE_LIGHT_90: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_90.png\",\n  DIMMABLE_LIGHT_100: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_100.png\",\n  DIMMABLE_LIGHT_OFF: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_off.png\",\n  DOOR_WINDOW_TRIPPED: \"https://horuspro.s3.amazonaws.com/Public/door_window_tripped.png\",\n  DOOR_WINDOW: \"https://horuspro.s3.amazonaws.com/Public/door_window.png\",\n  METER_DEFAULT: \"https://horuspro.s3.amazonaws.com/Public/meter_default.png\",\n  MOTION_SENSOR_TRIPPED:\n    \"https://horuspro.s3.amazonaws.com/Public/motion_sensor_tripped.png\",\n  MOTION_SENSOR: \"https://horuspro.s3.amazonaws.com/Public/motion_sensor.png\",\n  OCUPADA: \"https://horuspro.s3.amazonaws.com/Public/ocupada.png\",\n  SIREN_OFF: \"https://horuspro.s3.amazonaws.com/Public/siren_off.png\",\n  SIREN_ON: \"https://horuspro.s3.amazonaws.com/Public/siren_on.png\",\n  TEMPERATURE_AMBIENT: \"https://horuspro.s3.amazonaws.com/Public/temperature_ambient.png\",\n  TEMPERATURE_COOL: \"https://horuspro.s3.amazonaws.com/Public/temperature_cool.png\",\n  TEMPERATURE_DEFAULT: \"https://horuspro.s3.amazonaws.com/Public/temperature_default.png\",\n  TEMPERATURE_HEAT: \"https://horuspro.s3.amazonaws.com/Public/temperature_heat.png\",\n  TEMPERATURE_ICON: \"https://horuspro.s3.amazonaws.com/Public/Temperature_icon.png\",\n  TEMPERATURE_SENSOR_DEFAULT:\n    \"https://horuspro.s3.amazonaws.com/Public/temperature_sensor_default.png\",\n  TERMOMETRO: \"https://horuspro.s3.amazonaws.com/Public/termometro3.png\",\n  THERMOSTAT_DEVICE_DEFAULT:\n    \"https://horuspro.s3.amazonaws.com/Public/thermostat_device_default.png\",\n  THERMOSTAT_MODE_AUTO:\n    \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_auto.png\",\n  THERMOSTAT_MODE_COOLING:\n    \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_cooling.png\",\n  THERMOSTAT_MODE_HEATING:\n    \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_heating.png\",\n  THERMOSTAT_MODE_OFF: \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_off.png\",\n  WINDOW_COVERING_10: \"https://horuspro.s3.amazonaws.com/Public/window_covering_10.png\",\n  WINDOW_COVERING_20: \"https://horuspro.s3.amazonaws.com/Public/window_covering_20.png\",\n  WINDOW_COVERING_30: \"https://horuspro.s3.amazonaws.com/Public/window_covering_30.png\",\n  WINDOW_COVERING_40: \"https://horuspro.s3.amazonaws.com/Public/window_covering_40.png\",\n  WINDOW_COVERING_50: \"https://horuspro.s3.amazonaws.com/Public/window_covering_50.png\",\n  WINDOW_COVERING_60: \"https://horuspro.s3.amazonaws.com/Public/window_covering_60.png\",\n  WINDOW_COVERING_70: \"https://horuspro.s3.amazonaws.com/Public/window_covering_70.png\",\n  WINDOW_COVERING_80: \"https://horuspro.s3.amazonaws.com/Public/window_covering_80.png\",\n  WINDOW_COVERING_90: \"https://horuspro.s3.amazonaws.com/Public/window_covering_90.png\",\n  WINDOW_COVERING_100: \"https://horuspro.s3.amazonaws.com/Public/window_covering_100.png\",\n  WINDOW_COVERING_CLOSE:\n    \"https://horuspro.s3.amazonaws.com/Public/window_covering_close.png\",\n  WINDOW_COVERING_OPEN:\n    \"https://horuspro.s3.amazonaws.com/Public/window_covering_open.png\",\n  ZWAVE_DEFAULT: \"https://horuspro.s3.amazonaws.com/Public/zwave_default.png\",\n  CO_SENSOR_TRIPPED: \"https://horuspro.s3.amazonaws.com/Public/co_sensor_tripped.png\",\n  CO_SENSOR_UNTRIPPED: \"https://horuspro.s3.amazonaws.com/Public/co_sensor_untripped.png\",\n  SMOKE_SENSOR_DEFAULT:\n    \"https://horuspro.s3.amazonaws.com/Public/smoke_sensor_default.png\",\n  SMOKE_SENSOR_TRIPPED:\n    \"https://horuspro.s3.amazonaws.com/Public/smoke_sensor_tripped.png\",\n  HUMADITY_SENSOR_DEFAULT:\n    \"https://horuspro.s3.amazonaws.com/Public/humidity_sensor_default.png\",\n  LIGHT_SENSOR_DEFAULT:\n    \"https://horuspro.s3.amazonaws.com/Public/light_sensor_default.png\",\n  DOORBELL_STATIC: \"https://horuspro.s3.amazonaws.com/Public/doorbell_static.png\",\n  SIREN_OFF: \"https://horuspro.s3.amazonaws.com/Public/siren_off.png\",\n  SIREN_ON: \"https://horuspro.s3.amazonaws.com/Public/siren_on.png\",\n  DOOR_BLOQUEADO: \"https://horuspro.s3.amazonaws.com/Public/door_lock_locked.png\",\n  DOOR_DESBLOQUEADO: \"https://horuspro.s3.amazonaws.com/Public/door_lock_unlocked.png\",\n  CURTAIN: \"https://horuspro.s3.amazonaws.com/Private/iconos/cortinas.png\"\n};\n","import React from 'react'\nimport { Devices } from '../../constants/devices_types'\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst DevicesFails = ({ device }) => {\n    const { t } = useTranslation();\n    const img_devices_fails = {\n        \"sensor_de_movimiento\": Devices.MOTION_SENSOR,\n        \"interruptor\": Devices.BINARY_LIGHT_OFF,\n        \"termostato\": Devices.THERMOSTAT_DEVICE_DEFAULT,\n        \"sensor_de_puerta\": Devices.DOOR_WINDOW,\n        \"bloqueo_de_puerta\": Devices.DOOR_DESBLOQUEADO,\n        \"medidor_de_energia\": Devices.METER_DEFAULT,\n        \"ventana\": Devices.CURTAIN\n    }\n\n    const __img__ = device.Category.name.toLowerCase().replace(/\\s/g, \"_\")\n\n    // console.log(device.Category.name)\n\n    const result_img = img_devices_fails[__img__]\n\n    const translatingDevicesCategories = () => {\n        if(device.Category.name === \"Sensor De Puerta\"){\n            return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.DOOR_SENSOR\")\n        }else if (device.Category.name === \"Termostato\"){\n            return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.THERMOSTAT\")\n        }else if (device.Category.name === \"Interruptor\"){\n            return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.SWITCH\")\n        }else if(device.Category.name === \"Sensor De Movimiento\"){\n            return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.MOVEMENT_SENSOR\")\n        }else if (device.Category.name === \"Bloqueo De Puerta\"){\n            return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.LOCK_DOOR\")\n        }else if (device.Category.name === \"Medidor De Energia\"){\n            return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.ENERGY_MEASURER\")\n        }else{\n            return null\n        }\n    }\n    \n    return (\n        <div className=\"__device_fails__\">\n            <div className=\"__img_device_fails__\">\n                <img\n                    src={`${result_img}`}\n                    alt=\"clasification\"\n                    width=\"60\"\n                    height=\"60\"\n                />\n            </div>\n            <div className=\"__device_fails_names_container__\">\n                <div className=\"__device_fails_name__\">{translatingDevicesCategories()}</div>\n                <div className=\"__description_device_fails\">{device.alias}</div>\n            </div>\n        </div>\n    )\n}\n\nexport default DevicesFails\n","import React from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\n\nconst IBMFails = ({ stateinitial, stateClone }) => {\n  const img_devices_fails = {\n    interruptor: Devices.BINARY_LIGHT_OFF,\n  };\n\n  const dataSocket = stateinitial.filter((i) => i?.variables?.Status == \"1\");\n  const result_img = img_devices_fails.interruptor;\n\n  return dataSocket.map((i) => (\n    <div className='__device_fails__'>\n      <div className='__img_device_fails__'>\n        <img src={`${result_img}`} alt='clasification' width='60' height='60' />\n      </div>\n      <div className='__device_fails_names_container__'>\n        <div className='__device_fails_name__'>{i.name}</div>\n        <div className='__description_device_fails'>Esta zona presenta una novedad</div>\n      </div>\n    </div>\n  ));\n};\n\nexport default IBMFails;\n","export const handle_status = (status) => {\n  if (!status) return \"VIEW_DATE_PICKER.STATUS_STATELESS\";\n  const values = {\n    0: \"VIEW_DATE_PICKER.STATUS_FREE\",\n    25: \"VIEW_DATE_PICKER.STATUS_DIRTY\",\n    50: \"VIEW_DATE_PICKER.STATUS_SOLD\",\n    75: \"VIEW_DATE_PICKER.STATUS_CLEANING\",\n    100: \"VIEW_DATE_PICKER.STATUS_BLOCKED\",\n    125: \"VIEW_DATE_PICKER.STATUS_BOOKED\",\n    Libre: \"VIEW_DATE_PICKER.STATUS_FREE\",\n    Ocupado: \"VIEW_DATE_PICKER.STATUS_BUSY\",\n  };\n  return values[status] ?? \"VIEW_DATE_PICKER.STATUS_STATELESS\";\n};\n","import React, { useContext } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Helper Functions\nimport { handle_status } from \"./helper\";\n\n//Language\nimport { useTranslation } from \"react-i18next\";\n\nconst AreaSelector = (props) => {\n  const { changeRoomId } = props;\n  const { idHeaderOcupation, setNameHeaderOcupation, setOccupationAreaName } =\n    useContext(AuthContext);\n  const { t } = useTranslation();\n\n  const filteredSelectedArea = JSON.parse(localStorage.getItem(\"areas\"))?.filter(\n    (i) => i.id !== Number(idHeaderOcupation)\n  );\n\n  return (\n    <div className=\"area_selector_container\">\n      <select\n        className=\"selector\"\n        onChange={(i) => changeRoomId(i.target.value)}\n      >\n        {JSON.parse(localStorage.getItem(\"areas\"))\n          ?.filter((i) => i?.id == idHeaderOcupation)\n          .map((i, key) => (\n            <option\n              className=\"option\"\n              selected\n              disabled\n              value={i?.id}\n              key={key}\n            >\n              {i.name} - {t(`${handle_status(i?.status)}`)}\n              {localStorage.setItem(\"selectedAreaName\", i?.realname)}\n              {setNameHeaderOcupation(i?.realname)}\n              {setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"))}\n            </option>\n          ))}\n        {filteredSelectedArea.map((i, key) => (\n          <option value={i?.id} key={key}>\n            {i?.name} - {t(`${handle_status(i?.status)}`)}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n};\n\nexport default AreaSelector;\n","import React, { createContext, useState } from \"react\";\n\nexport const DateRangeContext = createContext({});\n\nexport const DateRangeProvider = ({ children }) => {\n  const [reactDateRange, setReactDateRange] = useState([\n    {\n      startDate: new Date(),\n      endDate: new Date(),\n      key: \"selection\",\n    },\n  ]);\n  const [calendarDay, setCalendarDay] = useState(new Date());\n  const [acceptButton, setAcceptButton] = useState(false);\n\n  return (\n    <DateRangeContext.Provider\n      value={{\n        reactDateRange,\n        setReactDateRange,\n        calendarDay,\n        setCalendarDay,\n        acceptButton,\n        setAcceptButton,\n      }}\n    >\n      {children}\n    </DateRangeContext.Provider>\n  );\n};\n","import { differenceInDays } from \"date-fns\";\n\n//Determinar el ùltimo día seleccionable\nexport const lastSelectableDay = (closingTime, closingType) => {\n  //Funcion para determinar la hora del día actual\n  const currentDate = new Date();\n  const currentTime = currentDate?.getHours();\n  //Se determina la hora de inicio del proyecto\n  const findIndex = closingTime;\n  const projectTime = Number(findIndex);\n\n  //Determina el último día seleccionable del DatePicker\n  if (closingType?.toLocaleLowerCase() === \"n\") {\n    if (currentTime < projectTime) {\n      const currentDay = currentDate.getTime() - 86400000;\n      return new Date(currentDay);\n    } else if (currentTime >= projectTime) {\n      const currentDay = currentDate.getTime();\n      return new Date(currentDay);\n    }\n  } else if (closingType?.toLocaleLowerCase() === \"l\") {\n    if (currentTime < projectTime) {\n      const currentDay = currentDate.getTime() - 172800000;\n      return new Date(currentDay);\n    } else if (currentTime >= projectTime) {\n      const currentDay = currentDate.getTime() - 86400000;\n      return new Date(currentDay);\n    }\n  }\n};\n\nexport const handlerCurrentDateDay = (currentDay, setReactDateRange) => {\n  return setReactDateRange([\n    {\n      startDate: new Date(currentDay),\n      endDate: new Date(currentDay),\n      key: \"selection\",\n    },\n  ]);\n};\n\nexport const handleErrorMessageDatePicker = (\n  selectTypeRange,\n  closingTime,\n  closingType,\n  renderNextAndBack\n) => {\n  if (\n    !selectTypeRange ||\n    ![\"d\", \"w\", \"m\", \"ll\"].includes(selectTypeRange?.toLocaleLowerCase())\n  ) {\n    throw new Error(\n      \"selectTypeRange is a required property for the component: <ReactDateRange/>\\nalso check if the property values are correct. d (day), w (week), m (month), ll (limitless)\"\n    );\n  } else if (!closingTime && closingTime !== 0) {\n    throw new Error(\n      \"closingTime is a required property for the component: <ReactDateRange/>\"\n    );\n  } else if (\n    !closingType ||\n    ![\"n\", \"l\"].includes(closingType?.toLocaleLowerCase())\n  ) {\n    throw new Error(\n      \"closingType is a required property for the component: <ReactDateRange/> \\nalso, check if the property values are correct.\\nn (normal) or l (lambdas)\"\n    );\n  } else if (typeof renderNextAndBack !== \"boolean\") {\n    if (typeof renderNextAndBack === \"undefined\") {\n    } else {\n      throw new Error(\n        \"renderNextAndBack is a boolean property for the component: <ReactDateRange/> \\n, check if the property values are correct. \\nTrue or False\"\n      );\n    }\n  }\n};\n\nexport const handlerCalendarDay = (item, setCalendarDay, selectTypeRange) => {\n  if (selectTypeRange === \"d\") {\n    return setCalendarDay(item);\n  }\n};\nexport const handlerRangesCalendar = (\n  item,\n  setReactDateRange,\n  selectTypeRange,\n  setErrorMessage\n) => {\n  if (\n    !selectTypeRange ||\n    ![\"d\", \"w\", \"m\", \"ll\"].includes(selectTypeRange?.toLocaleLowerCase())\n  ) {\n    throw new Error(\n      \"selectTypeRange is a required property for the component: <ReactDateRange/>\\nalso check if the property values are correct. d (day), w (week), m (month), ll (limitless)\"\n    );\n  } else if (selectTypeRange === \"w\") {\n    const starDate = item?.selection?.startDate;\n    const endDate = item?.selection?.endDate;\n    const diffDays = differenceInDays(endDate, starDate) + 1;\n\n    if (diffDays > 7) {\n      console.log(\"Solo se pueden escoger 7 dias\");\n      setErrorMessage(true);\n    } else {\n      return setReactDateRange([\n        {\n          startDate: starDate,\n          endDate: endDate,\n          key: \"selection\",\n        },\n      ]);\n    }\n  } else if (selectTypeRange === \"m\") {\n    const starDate = item?.selection?.startDate;\n    const endDate = item?.selection?.endDate;\n    const diffDays = differenceInDays(endDate, starDate) + 1;\n\n    if (diffDays > 31) {\n      console.log(\"Solo se pueden elegir 31 dias\");\n      setErrorMessage(true);\n    } else {\n      return setReactDateRange([\n        {\n          startDate: starDate,\n          endDate: endDate,\n          key: \"selection\",\n        },\n      ]);\n    }\n  } else if (selectTypeRange === \"ll\") {\n    const starDate = item?.selection?.startDate;\n    const endDate = item?.selection?.endDate;\n    return setReactDateRange([\n      {\n        startDate: starDate,\n        endDate: endDate,\n        key: \"selection\",\n      },\n    ]);\n  }\n};\n\n// Constants\nconst DAYS = {\n  Mon: \"Lun\",\n  Tue: \"Mar\",\n  Wed: \"Mie\",\n  Thu: \"Jue\",\n  Fri: \"Vie\",\n  Sat: \"Sab\",\n  Sun: \"Dom\",\n};\n\nconst MONTHS = {\n  Jan: \"Ene\",\n  Feb: \"Feb\",\n  Mar: \"Mar\",\n  Apr: \"Abr\",\n  May: \"May\",\n  Jun: \"Jun\",\n  Jul: \"Jul\",\n  Aug: \"Ago\",\n  Sep: \"Sep\",\n  Oct: \"Oct\",\n  Nov: \"Nov\",\n  Dec: \"Dic\",\n};\n\n// retorna el dato de la fecha actual\nexport const handlerFormatDate = (item) => {\n  const day_week_start = item[0]?.startDate?.toString()?.substring(0, 3);\n  const day_week_s = item[0]?.startDate?.toString()?.substring(8, 10);\n  const month = item[0]?.startDate?.toString()?.substring(4, 7);\n  const year = item[0]?.startDate?.getFullYear()?.toString();\n  const day_week_end = item[0]?.endDate?.toString()?.substring(0, 3);\n  const day_week_e = item[0]?.endDate?.getDate()?.toString();\n  const key_month_end = item[0]?.endDate?.toString()?.substring(4, 7);\n  const year_end = item[0]?.endDate?.getFullYear()?.toString();\n  const end_range =\n    new Date(item[0]?.startDate?.toString())?.getTime() ===\n    new Date(item[0]?.endDate?.toString())?.getTime()\n      ? \"\"\n      : `${DAYS[day_week_end]} ${day_week_e}, ${MONTHS[key_month_end]} ${year_end}  `;\n  return `${DAYS[day_week_start]} ${day_week_s}, ${MONTHS[month]} ${year}  ${end_range}`;\n};\n\nexport const handlerFormatCalendarDay = (item) => {\n  if (!item) return \"\";\n  const day_week_start = item?.toString()?.substring(0, 3);\n  const key_month_start = item?.toString()?.substring(4, 7);\n  const day_start = item?.toString()?.substring(8, 10);\n  const year_start = item?.toString()?.substring(11, 15);\n  return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n};\n\nexport const handlerPreviousDay = (\n  globalCalendarDay,\n  setGlobalCalendarDay,\n  globalReactDateRange,\n  setGlobalReactDateRange,\n  selectTypeRange\n) => {\n  if (selectTypeRange === \"d\") {\n    const selectedGlobalDay = new Date(globalCalendarDay).getTime();\n    const epochDay = 86400000;\n    const previousGlobalDay = selectedGlobalDay - epochDay;\n    setGlobalCalendarDay(new Date(previousGlobalDay));\n  } else {\n    const selectedGlobalDay = new Date(\n      globalReactDateRange[0].startDate\n    ).getTime();\n    const epochDay = 86400000;\n    const previousGlobalDay = selectedGlobalDay - epochDay;\n    setGlobalReactDateRange([\n      {\n        startDate: new Date(previousGlobalDay),\n        endDate: new Date(previousGlobalDay),\n        key: \"selection\",\n      },\n    ]);\n  }\n};\n\nexport const handlerNextDay = (\n  globalCalendarDay,\n  setGlobalCalendarDay,\n  globalReactDateRange,\n  setGlobalReactDateRange,\n  selectTypeRange\n) => {\n  if (selectTypeRange === \"d\") {\n    const selectedGlobalDay = new Date(globalCalendarDay).getTime();\n    const epochDay = 86400000;\n    const nextGlobalDay = selectedGlobalDay + epochDay;\n    setGlobalCalendarDay(new Date(nextGlobalDay));\n  } else {\n    const selectedGlobalDay = new Date(\n      globalReactDateRange[0].endDate\n    ).getTime();\n    const epochDay = 86400000;\n    const nextGlobalDay = selectedGlobalDay + epochDay;\n    setGlobalReactDateRange([\n      {\n        startDate: new Date(nextGlobalDay),\n        endDate: new Date(nextGlobalDay),\n        key: \"selection\",\n      },\n    ]);\n  }\n};\n\nexport const allowNextDayButton = (\n  globalCalendarDay,\n  globalReactDateRange,\n  closingTime,\n  selectTypeRange,\n  closingType\n) => {\n  const selectedDay = new Date(globalCalendarDay)?.toString()?.substring(0, 16);\n  const selectedStartDate = new Date(globalReactDateRange[0]?.startDate)\n    ?.toString()\n    ?.substring(0, 16);\n  const selectedEndDate = new Date(globalReactDateRange[0]?.endDate)\n    ?.toString()\n    ?.substring(0, 16);\n  const allowDay = lastSelectableDay(closingTime, closingType)\n    ?.toString()\n    ?.substring(0, 16);\n\n  if (selectTypeRange === \"d\") {\n    if (selectedDay === allowDay) {\n      return false;\n    } else {\n      return true;\n    }\n  } else {\n    if (selectedStartDate === allowDay || selectedEndDate === allowDay) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n};\n\nexport const handlerCancelButton = (\n  setDropDownCalendar,\n  globalReactDateRange,\n  globalCalendarDay,\n  setCalendarDay,\n  setReactDateRange\n) => {\n  setCalendarDay(globalCalendarDay);\n  setReactDateRange(globalReactDateRange);\n  setDropDownCalendar(false);\n};\n","import React, { useEffect, useContext } from \"react\";\nimport { DateRange, Calendar } from \"react-date-range\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport {\n  handlerRangesCalendar,\n  handlerCancelButton,\n  handlerCalendarDay,\n  lastSelectableDay,\n} from \"../helper\";\n\nimport PropTypes from \"prop-types\";\n\nconst Calendars = (props) => {\n  const {\n    selectTypeRange,\n    closingTime,\n    closingType,\n    setDropDownCalendar,\n    setAcceptButton,\n    calendarDay,\n    setCalendarDay,\n    reactDateRange,\n    setReactDateRange,\n  } = props;\n\n  const { globalReactDateRange, globalCalendarDay, setErrorMessage } =\n    useContext(AuthContext);\n\n  //Hace un set a la variable del contexto ReactDatePicker, dependiendo de como cambie la variable global, con el fin de que funcione el boton del día anterior y siguiente\n  useEffect(() => {\n    if (globalCalendarDay) {\n      setCalendarDay(globalCalendarDay);\n    }\n  }, [globalCalendarDay]);\n\n  useEffect(() => {\n    if (globalReactDateRange) {\n      setReactDateRange(globalReactDateRange);\n    }\n  }, [globalReactDateRange]);\n\n  return (\n    <div className=\"DropDownButtonsAndCalendars\">\n      {selectTypeRange === \"d\" ? ( //Calendario para escoger un solo dia\n        <Calendar\n          onChange={(item) => {\n            handlerCalendarDay(item, setCalendarDay, selectTypeRange);\n          }}\n          showPreview={false}\n          moveRangeOnFirstSelection={false}\n          showDateDisplay={false}\n          date={calendarDay}\n          maxDate={lastSelectableDay(closingTime, closingType)}\n          rangeColors={[\"#4caf50e6\"]}\n          preventSnapRefocus={false}\n          direction={\"horizontal\"}\n        />\n      ) : (\n        //Calendario para escoger varios dias\n        <DateRange\n          onChange={(item) => {\n            handlerRangesCalendar(\n              item,\n              setReactDateRange,\n              selectTypeRange,\n              setErrorMessage\n            );\n          }}\n          showPreview={false}\n          moveRangeOnFirstSelection={false}\n          showDateDisplay={false}\n          ranges={reactDateRange}\n          maxDate={lastSelectableDay(closingTime, closingType)}\n          months={1}\n          rangeColors={[\"#4caf50e6\"]}\n          preventSnapRefocus={false}\n          direction={\"horizontal\"}\n        />\n      )}\n      <div className=\"DropDownButtonsContainer\">\n        <button\n          className=\"DropDownCancelButton\"\n          onClick={() =>\n            handlerCancelButton(\n              setDropDownCalendar,\n              globalReactDateRange,\n              globalCalendarDay,\n              setCalendarDay,\n              setReactDateRange\n            )\n          }\n        >\n          Cancelar\n        </button>\n        <button\n          className=\"DropDownAcceptButton\"\n          onClick={() => {\n            setAcceptButton(true);\n            setDropDownCalendar(false);\n          }}\n        >\n          Aceptar\n        </button>\n      </div>\n    </div>\n  );\n};\n\nCalendars.propTypes = {\n  selectTypeRange: PropTypes.string.isRequired,\n  closingTime: PropTypes.number.isRequired,\n  closingType: PropTypes.bool.isRequired,\n};\n\nexport default Calendars;\n","import React from \"react\";\nimport { useState, useContext, useEffect } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { DateRangeContext } from \"./context/ReactDateRangeContext\";\n\nimport PropTypes from \"prop-types\";\n\n//Helper functions\nimport {\n  handleErrorMessageDatePicker,\n  handlerFormatDate,\n  handlerFormatCalendarDay,\n  handlerPreviousDay,\n  handlerNextDay,\n  allowNextDayButton,\n} from \"./helper\";\n\n//Components\nimport Calendars from \"./components/Calendars\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n// NOTA IMPORTANTE\n// Este componente funciona cuando todas sus props son definidas (selectTypeRange:      string, closingTime: number, closingType: boolean) y tienen el tipo de dato correcto.\n\nconst ButtonDays = (props) => {\n  const { buttonText, buttonIcon, selectTypeRange, onClick, renderButtons } =\n    props;\n  const showButtons = renderButtons !== undefined ? renderButtons : true;\n  const { t } = useTranslation();\n  return (\n    <>\n      {selectTypeRange === \"d\" || showButtons ? (\n        <button className=\"DateRangeButtonContainer\" onClick={onClick}>\n          {buttonText === t(\"VIEW_DATE_PICKER.BTN_BACK_DAY\") ? (\n            <>\n              <i className={buttonIcon}></i>\n              <span className=\"DateRangeButtonContent-Text\">{buttonText}</span>\n            </>\n          ) : (\n            <>\n              <span className=\"DateRangeButtonContent-Text\">{buttonText}</span>\n              <i className={buttonIcon}></i>\n            </>\n          )}\n        </button>\n      ) : null}\n    </>\n  );\n};\n\nconst CalendarInput = (props) => {\n  const { date, inputIcon, onClick } = props;\n  return (\n    <>\n      <div className=\"DateRangeInputContainer\" onClick={onClick}>\n        <i className={inputIcon}></i>\n        {date}\n      </div>\n    </>\n  );\n};\n\nexport const WrapperReactDateRange = (props) => {\n  const { selectTypeRange, closingTime, closingType, renderNextAndBack } =\n    props;\n  const { t } = useTranslation();\n  const {\n    calendarDay,\n    setCalendarDay,\n    acceptButton,\n    setAcceptButton,\n    reactDateRange,\n    setReactDateRange,\n  } = useContext(DateRangeContext);\n\n  const {\n    globalReactDateRange,\n    setGlobalReactDateRange,\n    globalCalendarDay,\n    setGlobalCalendarDay,\n  } = useContext(AuthContext);\n\n  const [dropDownCalendar, setDropDownCalendar] = useState(false);\n  handleErrorMessageDatePicker(\n    selectTypeRange,\n    closingTime,\n    closingType,\n    renderNextAndBack\n  );\n\n  //Hace un set al la vairable global globalCalendarDay cuando presional el boton aceptar\n  useEffect(() => {\n    if (calendarDay && acceptButton) {\n      setGlobalCalendarDay(calendarDay);\n      setAcceptButton(false);\n    }\n  }, [calendarDay, acceptButton]);\n\n  //Hace un set a la vairable global globalReactDateRange cuando presional el boton aceptar\n  useEffect(() => {\n    if (reactDateRange && acceptButton) {\n      setGlobalReactDateRange([\n        {\n          startDate: reactDateRange[0]?.startDate,\n          endDate: reactDateRange[0]?.endDate,\n          key: \"selection\",\n        },\n      ]);\n      setAcceptButton(false);\n    }\n  }, [reactDateRange, acceptButton]);\n\n  return (\n    <>\n      <div className=\"DateRangeAndCalendarContainer\">\n        <div className=\"ReactDateRangeContainer\">\n          <div className=\"ButtonsAndCalendar\">\n            <ButtonDays\n              buttonText={t(\"VIEW_DATE_PICKER.BTN_BACK_DAY\")}\n              buttonIcon=\"fas fa-backward\"\n              renderButtons={renderNextAndBack}\n              selectTypeRange={selectTypeRange}\n              onClick={() =>\n                handlerPreviousDay(\n                  globalCalendarDay,\n                  setGlobalCalendarDay,\n                  globalReactDateRange,\n                  setGlobalReactDateRange,\n                  selectTypeRange\n                )\n              }\n            />\n            <div className=\"DescriptionAndCalendar\">\n              <CalendarInput\n                inputIcon=\"far fa-calendar-alt\"\n                date={\n                  selectTypeRange === \"d\"\n                    ? handlerFormatCalendarDay(globalCalendarDay)\n                    : handlerFormatDate(globalReactDateRange)\n                }\n                onClick={() => setDropDownCalendar(!dropDownCalendar)}\n              />\n              <span className=\"Description\">\n                {selectTypeRange === \"w\" ? (\n                  <>{t(\"VIEW_DATE_PICKER.MAX_DAYS_7\")}</>\n                ) : null}\n                {selectTypeRange === \"m\" ? (\n                  <>{t(\"VIEW_DATE_PICKER.MAX_DAYS\")}</>\n                ) : null}\n              </span>\n            </div>\n\n            {allowNextDayButton(\n              globalCalendarDay,\n              globalReactDateRange,\n              closingTime,\n              selectTypeRange,\n              closingType\n            ) ? (\n              <ButtonDays\n                buttonText={t(\"VIEW_DATE_PICKER.BTN_NEXT_DAY\")}\n                buttonIcon=\"fas fa-forward\"\n                renderButtons={renderNextAndBack}\n                selectTypeRange={selectTypeRange}\n                onClick={() =>\n                  handlerNextDay(\n                    globalCalendarDay,\n                    setGlobalCalendarDay,\n                    globalReactDateRange,\n                    setGlobalReactDateRange,\n                    selectTypeRange\n                  )\n                }\n              />\n            ) : null}\n          </div>\n        </div>\n\n        {dropDownCalendar && (\n          <div className=\"Calendar\">\n            <Calendars\n              selectTypeRange={selectTypeRange}\n              closingTime={closingTime}\n              closingType={closingType}\n              setDropDownCalendar={setDropDownCalendar}\n              calendarDay={calendarDay}\n              setCalendarDay={setCalendarDay}\n              setAcceptButton={setAcceptButton}\n              reactDateRange={reactDateRange}\n              setReactDateRange={setReactDateRange}\n            />\n          </div>\n        )}\n      </div>\n    </>\n  );\n};\n\nWrapperReactDateRange.propTypes = {\n  selectTypeRange: PropTypes.string.isRequired,\n  closingTime: PropTypes.number.isRequired,\n  closingType: PropTypes.bool.isRequired,\n};\n","import { DateRangeProvider } from \"./context/ReactDateRangeContext\";\nimport { WrapperReactDateRange } from \"./WrapperReactDateRange\";\n\nexport const ReactDateRangePicker = (props) => {\n  return (\n    <DateRangeProvider>\n      <WrapperReactDateRange {...props} />\n    </DateRangeProvider>\n  );\n}; ","//React Hooks\nimport { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Apollo and Queries\nimport { GET_DEVICE_BY_TEMPERATURE } from \"../../controllers/reportController\";\nimport { useLazyQuery } from \"@apollo/client\";\n\n//Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Material UI\nimport { withStyles } from \"@material-ui/core/styles\";\nimport {\n  TableContainer,\n  Table,\n  TableHead,\n  TableRow,\n  TableBody,\n  Paper,\n  TableCell,\n} from \"@material-ui/core\";\n\n//Components\nimport AreaSelector from \"../areaSelector/AreaSelector\";\nimport Loading from \"../loading/Loading\";\nimport { ReactDateRangePicker } from \"../reactDateRange\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst Temperature = ({ RoomId, project, typeGateway, NewRoomId }) => {\n  const [innerWidth, setInnerWidth] = useState(window.innerWidth);\n  const { t } = useTranslation();\n  const {\n    dateCalendar,\n    setDateCalendar,\n    setIsOpenCalendarCustom,\n    dateCalendarTemp,\n    calendarDatePicker, // calendar\n    setCalendarDatePicker, // setCalendar\n    setCalendarDatePickerToday,\n    calendarDatePickerToday,\n    globalCalendarDay,\n    setIdHeaderOcupation,\n    idHeaderOcupation,\n  } = useContext(AuthContext);\n\n  const init_time = (time) => {\n    const time_now = new Date().getHours();\n    if (time_now === 15 && time === \"15:00\") {\n      const time_actual = new Date().getTime() - 86400000;\n      return new Date(time_actual);\n    }\n    return new Date();\n  };\n\n  const [roomId, setRoomId] = useState(RoomId);\n  const [newRoomId, setNewRoomId] = useState(NewRoomId);\n  const [TypeGateway, setTypeGateway] = useState(typeGateway);\n  const [parameterMax, setParameterMax] = useState(new Date());\n  const [parameterMin, setParameterMin] = useState(\n    init_time(project?.start_time)\n  );\n\n  const [funcCalendarAction, { data: funcCalendar, loading: isCalendar }] =\n    useLazyQuery(GET_DEVICE_BY_TEMPERATURE);\n\n  const averageTemperature = funcCalendar?.getDeviceByTemperature?.data?.filter(\n    (element) => element?.temperatureAvarage != undefined\n  );\n\n  const tempScale = funcCalendar?.getDeviceByTemperature?.data?.find(\n    (i) =>\n      i?.tooltip?.valueSuffix === \"°F\" ||\n      (i?.tooltip?.valueSuffix === \"°C\" && !i?.name?.includes(\"Set Point Heat\"))\n  );\n\n  useEffect(() => {\n    if (globalCalendarDay) {\n      handlerEpochTimeConverter();\n    }\n  }, [globalCalendarDay]);\n\n  useEffect(() => {\n    handlerEpochTimeConverter();\n  }, [idHeaderOcupation, roomId, newRoomId]);\n\n  const handlerEpochTimeConverter = () => {\n    if (project?.start_time) {\n      let epochTime = 60 * 60 * 1000;\n\n      let startTimeZone =\n        globalCalendarDay?.toString()?.substring(0, 16) +\n        `${project?.start_time}:00 GMT` +\n        project?.time_zone;\n\n      let endTimeZone = new Date(startTimeZone)?.getTime() + (86400000 - 60000);\n\n      let param =\n        globalCalendarDay.toString()?.substring(0, 16) +\n        `${project?.start_time}:00 GMT`;\n\n      const parameter_min =\n        new Date(param).getTime() -\n        parseInt(project?.time_zone, 10) * epochTime;\n\n      const parameter_max = new Date(endTimeZone).getTime();\n\n      setParameterMax(parameter_max);\n      setParameterMin(parameter_min);\n\n      handlerTemperatureQuery(parameter_min, parameter_max);\n    }\n  };\n\n  const handlerTemperatureQuery = (parameter_min, parameter_max) => {\n    funcCalendarAction({\n      variables: {\n        RoomId: parseInt(roomId),\n        NewRoomId: newRoomId,\n        hourStart: `${new Date(parameter_min).getTime()}`,\n        hourEnd: `${new Date(parameter_max).getTime()}`,\n        typeGateway: TypeGateway,\n      },\n      fetchPolicy: \"no-cache\",\n    });\n  };\n\n  // // With start time\n  // const with_start_time = () => {\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let hour_actual = new Date(calendarDatePicker).getHours();\n  //   let time_use = new Date(calendarDatePicker).getTime();\n  //   let data_calendar = new Date(time_use);\n  //   let time;\n\n  //   if (hour_actual < 15 && project?.start_time === \"15:00\") {\n  //     time = new Date(data_calendar.getTime() - 86400000);\n  //     setCalendarDatePicker(time);\n  //     setCalendarDatePickerToday(time);\n  //   } else {\n  //     time = calendarDatePickerToday;\n  //     setCalendarDatePicker(time);\n  //     setCalendarDatePickerToday(time);\n  //   }\n\n  //   let day_time_zone =\n  //     time.toString().substring(0, 16) +\n  //     `${project.start_time}:00 GMT` +\n  //     project.time_zone;\n  //   let day_time_end_zone =\n  //     new Date(day_time_zone).getTime() + (86400000 - 60000);\n  //   let param =\n  //     time.toString().substring(0, 16) + `${project.start_time}:00 GMT`;\n\n  //   const parameter_min =\n  //     new Date(param).getTime() -\n  //     parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //   const parameter_max = new Date(day_time_end_zone).getTime();\n\n  //   //Parameter StartDate\n  //   setParameterMin(parameter_min);\n  //   //Parameter EndDate\n  //   setParameterMax(parameter_max);\n\n  //   funcCalendarAction({\n  //     variables: {\n  //       RoomId: parseInt(RoomId),\n  //       NewRoomId: NewRoomId,\n  //       hourStart: `${new Date(parameter_min).getTime()}`,\n  //       hourEnd: `${new Date(parameter_max).getTime()}`,\n  //       typeGateway: typeGateway,\n  //     },\n  //     fetchPolicy: \"no-cache\",\n  //   });\n  // };\n\n  // // Without start time\n  // const without_start_time = () => {\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let day_time_end_zone =\n  //     dateCalendar?.toString()?.substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     project?.time_zone;\n  //   let param = dateCalendar?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let parameter_min =\n  //     new Date(param)?.getTime() -\n  //     parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //   const parameter_max = new Date(day_time_end_zone)?.getTime();\n\n  //   //Parameter StartDate\n  //   setParameterMin(parameter_min);\n  //   //Parameter EndDate\n  //   setParameterMax(parameter_max);\n  // };\n\n  // const handleQueryReport = () => {\n  //   if (project?.start_time) {\n  //     with_start_time();\n  //   } else {\n  //     without_start_time();\n  //   }\n  // };\n\n  // const back = () => {\n  //   if (project?.start_time) {\n  //     const backday = calendarDatePicker; // Obtenemos el dia\n\n  //     let day_time_zone =\n  //       new Date(backday)?.toString()?.substring(0, 16) +\n  //       `${project?.start_time}:00 GMT` +\n  //       project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n  //     let day_time_end_zone =\n  //       new Date(day_time_zone)?.getTime() - (86400000 - 60000); // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n  //     //Parámetro inicial\n  //     setParameterMin(day_time_end_zone);\n  //     //parámetro final\n  //     setParameterMax(day_time_end_zone + (86400000 - 60000));\n\n  //     // set el nuevo valor de calendar\n  //     setCalendarDatePicker(new Date(day_time_end_zone));\n  //     setCalendarDatePickerToday(new Date(day_time_end_zone));\n\n  //     funcCalendarAction({\n  //       variables: {\n  //         RoomId: parseInt(RoomId),\n  //         NewRoomId: NewRoomId,\n  //         hourStart: `${day_time_end_zone - 60000}`,\n  //         hourEnd: `${day_time_end_zone + (86400000 - 120000)}`,\n  //         typeGateway: typeGateway,\n  //       },\n  //       fetchPolicy: \"no-cache\",\n  //     });\n  //   } else {\n  //     const backday = dateCalendarTemp;\n  //     let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //     const new_backday = new Date(backday);\n\n  //     let day_time_end_zone =\n  //       new Date(new_backday).toString().substring(0, 16) +\n  //       \"23:59:59 GMT\" +\n  //       project?.time_zone;\n  //     let param =\n  //       new Date(new_backday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //     let tempPara =\n  //       new Date(param).getTime() -\n  //       parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //     const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //     setDateCalendar(new_backday);\n  //     //openDateCusom\n  //     setIsOpenCalendarCustom(false);\n  //     //Parámetro inicial\n  //     setParameterMin(tempPara);\n  //     //parámetro final\n  //     setParameterMax(temEndDate);\n  //   }\n  // };\n\n  // const next = () => {\n  //   if (project?.start_time) {\n  //     const nextday = calendarDatePicker; // Obtenemos el dia\n\n  //     let day_time_zone =\n  //       new Date(nextday).toString().substring(0, 16) +\n  //       `${project?.start_time}:00 GMT` +\n  //       project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n  //     let day_time_end_zone = new Date(day_time_zone).getTime() + 86400000; // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n  //     //Parámetro inicial\n  //     setParameterMin(day_time_end_zone);\n  //     //parámetro final\n  //     setParameterMax(day_time_end_zone + (86400000 - 60000));\n\n  //     // set el nuevo valor de calendar\n  //     setCalendarDatePicker(new Date(day_time_end_zone));\n  //     setCalendarDatePickerToday(new Date(day_time_end_zone));\n\n  //     funcCalendarAction({\n  //       variables: {\n  //         RoomId: parseInt(RoomId),\n  //         NewRoomId: NewRoomId,\n  //         hourStart: `${day_time_end_zone}`,\n  //         hourEnd: `${day_time_end_zone + (86400000 - 60000)}`,\n  //         typeGateway: typeGateway,\n  //       },\n  //       fetchPolicy: \"no-cache\",\n  //     });\n  //   } else {\n  //     const nextday = dateCalendarTemp;\n  //     let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //     const new_nextday = new Date(nextday);\n\n  //     let day_time_end_zone =\n  //       new Date(new_nextday).toString().substring(0, 16) +\n  //       \"23:59:59 GMT\" +\n  //       project?.time_zone;\n  //     let param =\n  //       new Date(new_nextday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //     let tempPara =\n  //       new Date(param).getTime() -\n  //       parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //     const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //     setDateCalendar(new_nextday);\n  //     //openDateCusom\n  //     setIsOpenCalendarCustom(false);\n  //     //Parámetro inicial\n  //     setParameterMin(tempPara);\n  //     //parámetro final\n  //     setParameterMax(temEndDate);\n  //   }\n  // };\n\n  const changeRoomId = (id) => {\n    setRoomId(id);\n    setIdHeaderOcupation(id);\n    const typeGateway = JSON.parse(localStorage.getItem(\"areas\"))\n      ?.filter((i) => parseInt(i.id) === parseInt(id))\n      .map((i) => i.typeGateway);\n\n    const newRoomId = JSON.parse(localStorage.getItem(\"areas\"))\n      ?.filter((i) => parseInt(i.id) == id)\n      .map((i) => i.newRoomId);\n    setTypeGateway(typeGateway[0]);\n    setNewRoomId(newRoomId[0]);\n  };\n\n  // useEffect(() => {\n  //   if (project?.start_time) {\n  //     with_start_time();\n  //   } else {\n  //     without_start_time();\n  //   }\n  // }, []);\n\n  if (isCalendar) {\n    return <Loading />;\n  }\n\n  const getNormalTime = (epoch) => {\n    const fiveHours = 18000000;\n    return new Date(epoch - fiveHours).toISOString().slice(11, 16);\n  };\n\n  const handleProjectTime = (time) => {\n    if (time === \"0:00\" || time === \"00:00\") {\n      return 0;\n    } else if (time === \"15:00\") {\n      return 15;\n    }\n  };\n\n  const handlerMaxAndMinTemp = (scale) => {\n    if (scale === \"°C\") {\n      return { max: 40, min: 15 };\n    } else if (scale === \"°F\") {\n      return { max: 90, min: 60 };\n    }\n  };\n\n  return (\n    <div className=\"occupation_report_container\">\n      {/* <DatePicker\n        type=\"calendar\"\n        component={\"temperature\"}\n        handleQuery={handleQueryReport}\n        back={back}\n        next={next}\n        selectOption={{ changeInside: false, changeRoomId, stateRoomId: 0 }}\n        timerProject={project?.start_time}\n        typeGateway={typeGateway}\n      /> */}\n      <div className=\"Datepicker_AreaSelector_Container\">\n        <ReactDateRangePicker\n          selectTypeRange=\"d\"\n          closingTime={handleProjectTime(project?.start_time)}\n          closingType=\"n\"\n        />\n        <AreaSelector changeRoomId={changeRoomId} />\n      </div>\n\n      {funcCalendar?.getDeviceByTemperature?.data?.length === 0 ? (\n        <div className=\"date_vacio_report_measurer\">\n          <span>\n            <i class=\"fas fa-exclamation-triangle\"></i>\n            {t(\n              \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.NO_DATA\"\n            )}\n          </span>\n        </div>\n      ) : (\n        <HighchartsReact\n          highcharts={Highcharts}\n          options={{\n            title: {\n              text: \"\",\n            },\n\n            plotOptions: {\n              area: {\n                fillOpacity: 0.4,\n                marker: {\n                  enabled: true,\n                  symbol: \"circle\",\n                },\n              },\n              series: {\n                step: true,\n                states: {\n                  inactive: {\n                    enabled: false,\n                  },\n                },\n                turboThreshold: 0,\n                marker: {\n                  enabled: true,\n                  radius: 3,\n                  symbol: \"circle\",\n                },\n                label: {\n                  enabled: false,\n                },\n              },\n            },\n            legend: {\n              align: innerWidth <= 980 ? \"center\" : \"right\",\n              verticalAlign: innerWidth <= 980 ? \"bottom\" : \"top\",\n              layout: innerWidth <= 980 ? \"horizontal\" : \"vertical\",\n              x: 0,\n              y: 0,\n            },\n            xAxis: {\n              type: \"datetime\",\n              min: parameterMin, // StartDate\n              max: parameterMax, // EndDate\n              tickInterval: 3600000,\n              labels: {\n                format: \"{value:%H:%M}\",\n              },\n            },\n            yAxis: [\n              {\n                // Eje principal Humedad\n                gridLineWidth: 0,\n                title: {\n                  text: t(\n                    \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.HUMIDITY\"\n                  ),\n                },\n                labels: {\n                  format: \"{value} %\",\n                },\n              },\n              {\n                // Eje secundario temperatura\n                min: handlerMaxAndMinTemp(tempScale?.tooltip?.valueSuffix)?.min,\n                max: handlerMaxAndMinTemp(tempScale?.tooltip?.valueSuffix)?.max,\n                gridLineWidth: 0,\n                title: {\n                  text: t(\n                    \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.TEMPERATURE\"\n                  ),\n                  style: {\n                    color: Highcharts?.getOptions().colors[1],\n                  },\n                },\n                type: \"spline\",\n                labels: {\n                  format: \"{value} \" + tempScale?.tooltip?.valueSuffix,\n                  /* style: {\n                    color: Highcharts.getOptions().colors[1]\n                  } */\n                },\n                opposite: true,\n              },\n              {\n                // Eje Y oculto para ocupacion\n                min: 0,\n                max: 1,\n                title: null,\n                labels: {\n                  format: \"{value}\",\n                  enabled: false,\n                },\n                gridLineWidth: 0,\n                minorGridLineWidth: 0,\n              },\n            ],\n\n            time: {\n              timezoneOffset: -(Number(project?.time_zone) * 60),\n            },\n            chart: {\n              zoomType: \"x\",\n              type: \"line\", //lineas curvas con (spline)\n            },\n            series: funcCalendar?.getDeviceByTemperature?.data,\n            tooltip: {\n              xDateFormat: \"%H:%M:%S\",\n              headerFormat: \"<b>{point.key}</b><br>\",\n              //valueSuffix: \"C°\",\n            },\n            credits: {\n              enabled: false,\n            },\n          }}\n        />\n      )}\n      <div className=\"_temperature_container_tables_\">\n        {averageTemperature\n          ? averageTemperature?.map((i, key) => (\n              <TableContainer component={Paper}>\n                <div className=\"__report_temperature_table_total_title__\">\n                  {i?.name}\n                </div>\n                <Table aria-label=\"customized table\">\n                  <TableHead>\n                    <TableRow>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MAX_TEMPERATURE\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MIN_TEMPERATURE\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MAX_HOUR\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MIN_HOUR\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.AVERAGE_TEMPERATURE\"\n                        )}\n                      </StyledTableCell>\n                    </TableRow>\n                  </TableHead>\n                  <TableBody>\n                    <StyledTableRow>\n                      <StyledTableCell align=\"center\">\n                        {i?.temperatureAvarage &&\n                        i?.temperatureAvarage?.maxTemp !== undefined\n                          ? `${i?.temperatureAvarage?.maxTemp} ${i?.tooltip?.valueSuffix}`\n                          : \"----\"}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {i.temperatureAvarage &&\n                        i?.temperatureAvarage?.minTemp !== undefined\n                          ? `${i?.temperatureAvarage?.minTemp} ${i?.tooltip?.valueSuffix}`\n                          : \"----\"}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {i.temperatureAvarage &&\n                        i?.temperatureAvarage?.maxTempTime !== undefined\n                          ? `${getNormalTime(\n                              i?.temperatureAvarage?.maxTempTime\n                            )}`\n                          : \"----\"}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {i.temperatureAvarage &&\n                        i?.temperatureAvarage?.minTempTime !== undefined\n                          ? `${getNormalTime(\n                              i?.temperatureAvarage?.minTempTime\n                            )}`\n                          : \"----\"}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {i.temperatureAvarage &&\n                        i?.temperatureAvarage?.tempAvarage !== undefined\n                          ? `${i?.temperatureAvarage?.tempAvarage} ${i?.tooltip?.valueSuffix}`\n                          : \"----\"}\n                      </StyledTableCell>\n                    </StyledTableRow>\n                  </TableBody>\n                </Table>\n              </TableContainer>\n            ))\n          : false}\n      </div>\n    </div>\n  );\n};\nexport default Temperature;\n","import React from \"react\";\nimport EnergySavingsLeafIcon from \"@mui/icons-material/EnergySavingsLeaf\";\nimport Avatar from \"@mui/material/Avatar\";\nimport { Tooltip } from \"@mui/material\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst PluginMode = (props) => {\n  const { t } = useTranslation();\n  const classRoomState = props?.props?.data?.Device.find(\n    (i) =>\n      i?.visible &&\n      i?.Category?.category === 600 &&\n      i?.Category?.sub_category === 9\n  );\n\n  const ocupationPlugin = props?.props?.data?.Device.find(\n    (i) =>\n      i?.visible &&\n      i?.Category?.category === 600 &&\n      i?.Category?.sub_category === 1\n  );\n\n  function changeAvatarContent() {\n    if (props) {\n      if (\n        ocupationPlugin?.variables?.Modo === \"Auto\" ||\n        classRoomState?.variables?.Modo === \"Auto\"\n      ) {\n        return (\n          <EnergySavingsLeafIcon\n            sx={{\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              height: \"13px\",\n              width: \"13px\",\n            }}\n          />\n        );\n      } else if (\n        ocupationPlugin?.variables?.Modo === \"Manual\" ||\n        classRoomState?.variables?.Modo === \"Manual\"\n      ) {\n        return \"M\";\n      } else if (\n        ocupationPlugin?.variables?.Modo === \"Apagado\" ||\n        classRoomState?.variables?.Modo === \"Apagado\"\n      ) {\n        return \"A\";\n      } else if (\n        ocupationPlugin?.variables?.Modo === undefined ||\n        classRoomState?.variables?.Modo === undefined\n      ) {\n        return false;\n      }\n    }\n  }\n\n  function titleTooltip() {\n    if (changeAvatarContent() === \"A\") {\n      return t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.OFF\");\n    } else if (changeAvatarContent() === \"M\") {\n      return t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.MANUAL\");\n    } else {\n      return t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.AUTO\");\n    }\n  }\n\n  return (\n    <>\n      {classRoomState || ocupationPlugin ? (\n        <Tooltip placement=\"top-start\" title={titleTooltip()}>\n          <Avatar\n            sx={{\n              height: \"17px\",\n              width: \"17px\",\n              fontSize: \"12px\",\n              fontWeight: \"bold\",\n              marginTop: \"3px\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              bgcolor: \"#D9D9D9\",\n              color: \"black\",\n              border: \"1px solid black\",\n              boxShadow: \"2px 1px 2px 1px #5a5a5a\",\n              \"&:hover\": {\n                backgroundColor: \"#b9b9b9\",\n                cursor: \"pointer\",\n              },\n            }}\n          >\n            {changeAvatarContent()}\n          </Avatar>\n        </Tooltip>\n      ) : null}\n    </>\n  );\n};\nexport default PluginMode;\n","import * as React from \"react\";\nimport { pink } from \"@mui/material/colors\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Stack from \"@mui/material/Stack\";\nimport CleaningServicesOutlinedIcon from \"@mui/icons-material/CleaningServicesOutlined\";\nimport { makeStyles } from \"@mui/styles\";\n//import ModalPlugin from \"../PluginBathroom/ModalPlugin\"\n\n\nconst useStyles = makeStyles({\n  avatar: {\n    height: \"24px\",\n    width: \"24px\",\n    animation: \"$blink 1.5s linear infinite\",\n    backgroundColor: pink[500],\n    cursor: \"pointer\",\n    boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.4)\",\n  },\n  \"@keyframes blink\": {\n    \"0%\": {\n      boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.2)\",\n      backgroundColor: \"rgba(255, 0, 0, 0.2)\",\n    },\n    \"50%\": {\n      boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.8)\",\n      backgroundColor: \"rgba(255, 0, 0, 0.8)\",\n    },\n    \"100%\": {\n      boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.2)\",\n      backgroundColor: \"rgba(255, 0, 0, 0.2)\",\n    },\n  },\n  appBarDeviceFails: {\n    backgroundColor: \"#FFAF0E\",\n    position: \"relative\",\n  },\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"relative\",\n  },\n});\n\nexport default function IconAvatars() {\n  const [open, setOpen] = React.useState(false);\n  const classes = useStyles();\n\n  const handleClose = () => {\n    setOpen(false);\n  };\n  const handleOpen = () => {\n    setOpen(true);\n  };\n\n  return (\n    <React.Fragment>\n      <Stack direction=\"row\" spacing={2}>\n        <Avatar\n          onClick={handleOpen}\n          sizes=\"small\"\n          className={classes.avatar}\n          sx={{ width: \"23px\", height: \"23px\", marginTop: \"2px\" }}\n        >\n          <CleaningServicesOutlinedIcon sx={{ fontSize: \"15px\" }} />\n        </Avatar>\n      </Stack>\n{/*      < ModalPlugin openback={open} />\n */}    </React.Fragment>\n  );\n}\n","import gql from 'graphql-tag';\n\nexport const GET_INFO_MEASURER_BY_PROJECT = gql`\n  query ($ProjectId: Int!) {\n    getProjectByIdHeader(ProjectId: $ProjectId)\n    getInfoMetersByProject(ProjectId: $ProjectId)\n    getMettersInProjets(ProjectId: $ProjectId)\n  }\n`;\n\nexport const GET_PHASES_MEASURER_REPORT = gql`\n  query ($ProjectId: Int!, $id_parent: Float!, $start_time: Date!, $end_time: Date!, $date_range: [Date], $time_zone: String) {\n    getPhasesMeasureReport(ProjectId: $ProjectId, id_parent: $id_parent, start_time: $start_time, end_time: $end_time, date_range: $date_range, time_zone: $time_zone)\n  }\n`;\n\nexport const GET_CLAMPS_MEASURE = gql`\n  query ($deviceId: String!, $startTime: Float, $endTime: Float, $timeZone: String) {\n    getClampsMeasure(deviceId: $deviceId, startTime: $startTime, endTime: $endTime, time_zone: $timeZone)\n  }\n`;\n\nexport const GET_DASHBOARD_MEASURER_REPORT = gql`\n  query getDataDashboard {\n    getDataDashboard(serial: \"004000004694\")\n  }\n`;\n\nexport const GET_HISTORY = gql`\n  query ($serial: String!, $start_time: Date, $end_time: Date, $time_zone: Float, $month: Int, $year: Int) {\n    getHistory(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone, month: $month, year: $year)\n  }\n`;\n\nexport const GET_TWELVE_HOUR_VOLTAGE = gql`\n  query ($serial: String!, $start_time: Date!, $end_time: Date!, $time_zone: Float) {\n    getTwelveHourVoltage(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone)\n  }\n`;\nexport const GET_TWELVE_HOUR_AMPS = gql`\n  query ($serial: String!, $start_time: Date!, $end_time: Date!, $time_zone: Float) {\n    getTwelveHourAmperage(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone)\n  }\n`;\nexport const GET_TWELVE_HOUR_WATTS = gql`\n  query ($serial: String!, $start_time: Date!, $end_time: Date!, $time_zone: Float) {\n    getTwelveHourWatting(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone)\n  }\n`;\n\nexport const GET_METTER_AND_METTER_HISTORIES = gql`\n  query ($serial: String!) {\n    getMetterAndMetterHistories(serial: $serial)\n  }\n`;\n\nexport const GET_MACROMETER_IN_PROJECT = gql`\nquery ($ProjectId: Int!) {\n    getMettersInProjets(ProjectId: $ProjectId)\n  }\n`\n\nexport const GET_METTERS_HISTORY = gql`\n query getMeterHistory($serial: String!) {\n  getMeterHistory(serial: $serial) {\n    VFA\n    VFB\n    VFC\n    CFA\n    CFB\n    CFC\n    FPFA\n    FPFB\n    FPFC\n    PAFA\n    PAFB\n    PAFC\n  }\n}\n`;\n\nexport const GET_METER_HISTORY_VARIABLES = gql`\n query GetMeterHistoryVariables($serial: [String]!, $location: String) {\n  getMeterHistoryVariables(serial: $serial, location: $location) {\n    SerialMedidor\n    variable {\n      FHz\n      NC\n      Ah\n      TExKVarh\n      TExKwh\n      TImKVarh\n      TImKwh\n      TKWh\n      VFBFC\n      VFAFB\n      VFCFA\n      TSE\n      EI\n      TFT\n      TSVa\n      TSVar\n      TVah\n    }\n  }\n}\n`;\n\nexport const GET_HISTORY_TWO = gql`\n  query Query($serial: String!, $starTime: String, $endTime: String,  $year: Int, $location:String) {\n    getConsumptionHistory(serial: $serial, starTime: $starTime, endTime: $endTime, year: $year, location:$location)\n  }\n`;\n\nexport const GET_TWELVE_HOUR_VOLTAGE_TWO = gql`\n  query Query($serial: String!, $starTime: Int!) {\n    getTwelveHourVoltage(serial: $serial, starTime: $starTime)\n  }\n`;\n\nexport const GET_TWELVE_HOUR_CURRENT = gql`\n  query Query($serial: String!, $starTime: Int!) {\n    getTwelveHourCurrent(serial: $serial, starTime: $starTime)\n  }\n`;\n\nexport const GET_TWELVE_HOUR_WATTS_TWO = gql`\n  query Query($serial: String!, $starTime: Int!) {\n    getTwelveHourWatt(serial: $serial, starTime: $starTime)\n  }\n`;\n\nexport const GET_TWELVE_HOUR_POWER_FACTOR = gql`\n  query Query($serial: String!, $starTime: Int!) {\n    getTwelveHourPowerFactor(serial: $serial, starTime: $starTime)\n  }\n`;\n\nexport const GET_NEW_INSTALLED_METTERS = gql`\n  query Query($projectId: Int!) {\n    getNewMeters(projectId: $projectId)\n  }\n`;\n\nexport const UPDATE_NEW_MACROMETER = gql`\n  mutation UpdateMacroMeter($meters: JSON) {\n    updateMacroMeter(meters: $meters)\n  }\n`;\n\nexport const GET_FREQUENCY_TEST = gql`\n  query Query($serial: String!, $starTime: Int!) {\n    getFrequencyGraphs(serial: $serial, starTime: $starTime)\n  }\n`;\n\nexport const GET_ARMONIC_CURRENT_TEST = gql`\n  query Query($serial: String!, $starTime: Int!) {\n    getHarmonicCurrentGraphs(serial: $serial, starTime: $starTime)\n  }\n`;\n\nexport const GET_ARMONIC_VOLTAGE_TEST = gql`\n  query Query($serial: String!, $starTime: Int!) {\n    getHarmonicVoltageGraphs(serial: $serial, starTime: $starTime)\n  }\n`;\n","export const handleEventDate = (date) => {\n  const convertDate = new Date(date);\n  const day = convertDate.getDate();\n  const month = convertDate.getMonth();\n  const year = convertDate.getFullYear();\n  return `${year}-${month + 1}-${day}`;\n};\n\nexport const msToTime = (duration) => {\n  var seconds = parseInt((duration / 1000) % 60),\n    minutes = parseInt((duration / (1000 * 60)) % 60),\n    hours = parseInt((duration / (1000 * 60 * 60)) % 24);\n\n  hours = hours < 10 ? \"0\" + hours : hours;\n  minutes = minutes < 10 ? \"0\" + minutes : minutes;\n  seconds = seconds < 10 ? \"0\" + seconds : seconds;\n\n  return hours + \":\" + minutes;\n};\n\nexport const round = (num, decimales = 1) => {\n  var signo = num >= 0 ? 1 : -1;\n  num = num * signo;\n  if (decimales === 0)\n    //con 0 decimales\n    return signo * Math.round(num);\n  // round(x * 10 ^ decimales)\n  num = num.toString().split(\"e\");\n  num = Math.round(+(num[0] + \"e\" + (num[1] ? +num[1] + decimales : decimales)));\n  // x * 10 ^ (-decimales)\n  num = num.toString().split(\"e\");\n  return signo * (num[0] + \"e\" + (num[1] ? +num[1] - decimales : -decimales));\n};\n\nexport const consumoTotal = (data) => {\n  var Totales = {\n      consumoTotal: 0,\n      consumoEficiente: 0,\n      consumoIneficiente: 0,\n    },\n    i = 0;\n  for (i = 0; i < data?.length; i++) {\n    Totales.consumoTotal += round(data[i].total_consumption);\n    Totales.consumoEficiente += round(data[i].efficient_consumption);\n    Totales.consumoIneficiente += round(data[i].inefficient_consumption);\n  }\n\n  return Totales;\n};\n\nexport const porcentaje = (valor, valorTotal) => {\n  if (valorTotal == 0) {\n    return 0;\n  }\n  return Number.parseFloat((valor / valorTotal) * 100).toFixed(1);\n};\n","import { useTranslation } from \"react-i18next\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport { msToTime, round, consumoTotal, porcentaje } from \"./helper\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#22a374\",\n    position: \"relative\",\n  },\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n  formControl: {\n    minWidth: 120,\n  },\n  selectEmpty: {\n    marginTop: theme.spacing(1),\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: \"relative\",\n    height: 200,\n    [theme.breakpoints.down(\"xs\")]: {\n      width: \"100% !important\", // Overrides inline-style\n      height: 100,\n    },\n    \"&:hover, &$focusVisible\": {\n      zIndex: 1,\n      \"& $imageBackdrop\": {\n        opacity: 0.15,\n      },\n      \"& $imageMarked\": {\n        opacity: 0,\n      },\n      \"& $imageTitle\": {\n        border: \"4px solid currentColor\",\n      },\n    },\n    formControl: {\n      margin: theme.spacing(1),\n      minWidth: 120,\n    },\n    selectEmpty: {\n      marginTop: theme.spacing(2),\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center 40%\",\n  },\n  imageBackdrop: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  imageTitle: {\n    position: \"relative\",\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n      theme.spacing(1) + 6\n    }px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: \"absolute\",\n    bottom: -2,\n    left: \"calc(50% - 9px)\",\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  table: {\n    minWidth: 700,\n  },\n\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\nconst StyledTableCell3 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    color: \"red\",\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst OcupationTable = ({ reportData, project, typeGateway }) => {\n  const { t } = useTranslation();\n  const classes = useStyles();\n\n  const handleDataOccupationTypeGateway = () => {\n    if (typeGateway === \"horus_700\") {\n      return reportData?.getNewDataOccupancy;\n    } else if (typeGateway === \"horus_g150\") {\n      return reportData?.getDataReport;\n    }\n  };\n\n  const totalConsumptionKwh =\n    handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n      ?.totalConsumptionkWh;\n\n  const totalEfficientConsumption =\n    handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n      ?.totalEfficientConsumption;\n\n  const totalInefficientConsumption =\n    handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n      ?.totalInefficientConsumption;\n\n  const totalAverageEfficientPercentage =\n    handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n      ?.totalAverageEfficientPercentage;\n\n  const totalAverageInefficientPercentage =\n    handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n      ?.totalAverageInefficientPercentage;\n\n  const occupancyPercentage =\n    handleDataOccupationTypeGateway()?.report_data?.find(\n      (item) =>\n        item.category == 123 || item.category == 67 || item.category == 35\n    )?.occupationPercentage;\n\n  const filteredOcupancyTable =\n    handleDataOccupationTypeGateway()?.report_data?.filter(\n      (row) =>\n        row.category !== 123 && row.category !== 67 && row.category !== 35\n    );\n\n  return (\n    <div>\n      <div className=\"_report_energy\">\n        <div className=\"_container_energy\">\n          <div className=\"__title_energy\">\n            <span className=\"__icon_report\">\n              <i className=\"fas fa-chart-bar\"></i>\n            </span>{\" \"}\n            {t(\n              \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.GRAPH_TITLE\"\n            )}\n          </div>\n          {occupancyPercentage ? (\n            <span className=\"occupancy_percentage\">\n              {t(\n                \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.OCCUPANCY\"\n              )}\n              {occupancyPercentage}\n            </span>\n          ) : null}\n          {handleDataOccupationTypeGateway() ? (\n            <>\n              <TableContainer component={Paper} className=\"_container_table\">\n                <Table className={classes.table} aria-label=\"customized table\">\n                  <TableHead>\n                    <TableRow>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n                        )}\n                      </StyledTableCell>\n                      {/* <StyledTableCell align=\"center\">% </StyledTableCell> */}\n                      {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n                        )}\n                      </StyledTableCell>\n\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_PERCENTAGE\"\n                        )}\n                      </StyledTableCell>\n\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n                        )}\n                      </StyledTableCell>\n\n                      {/* <StyledTableCell align='center'>\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n                        )}\n                      </StyledTableCell> \n                      */}\n                      {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n                        )}\n                      </StyledTableCell>\n\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_PERCENTAGE\"\n                        )}\n                      </StyledTableCell>\n\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n                        )}\n                      </StyledTableCell>\n                      {/* <StyledTableCell align='center'>\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n                        )}\n                      </StyledTableCell> */}\n                      {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                      {/* <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n                        )}\n                      </StyledTableCell> */}\n                      {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                      {/* <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n                        )}\n                      </StyledTableCell> */}\n                      {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                      {/* <StyledTableCell align='center'>\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n                        )}\n                      </StyledTableCell> */}\n                      {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                    </TableRow>\n                  </TableHead>\n                  <TableBody>\n                    {filteredOcupancyTable?.map((row) => (\n                      <StyledTableRow key={row?.name}>\n                        <StyledTableCell\n                          align=\"center\"\n                          component=\"th\"\n                          scope=\"row\"\n                        >\n                          {row?.name}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {row?.watts}\n                        </StyledTableCell>\n                        {/* <StyledTableCell align=\"center\">\n                        {msToTime(row?.total_time_on)}\n                      </StyledTableCell> */}\n                        <StyledTableCell align=\"center\">\n                          {row?.total_time_on}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">\n                          {row?.total_consumption} kWh\n                        </StyledTableCell>\n                        {/* <StyledTableCell align=\"center\">\n                        {porcentaje(\n                          round(row?.total_consumption),\n                          round(consumoTotal().consumoTotal)\n                        )}\n                        %\n                      </StyledTableCell> */}\n                        {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                        {/* <StyledTableCell align=\"center\">\n                        {msToTime(row?.efficient_time)}\n                      </StyledTableCell> */}\n                        <StyledTableCell align=\"center\">\n                          {row?.efficient_time}\n                        </StyledTableCell>\n\n                        <StyledTableCell align=\"center\">\n                          {row?.efficientPercentage}\n                        </StyledTableCell>\n\n                        <StyledTableCell align=\"center\">\n                          {row?.efficient_consumption} kWh\n                        </StyledTableCell>\n                        {/* <StyledTableCell align='center'>\n                        {project?.prefix_currency}{\" \"}\n                        {project?.kwh_cost * round(row?.efficient_consumption)}{\" \"}\n                      </StyledTableCell> */}\n                        {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                        <StyledTableCell3 align=\"center\">\n                          {row?.inefficient_time}\n                        </StyledTableCell3>\n\n                        <StyledTableCell3 align=\"center\">\n                          {row?.inefficientPercentage}\n                        </StyledTableCell3>\n\n                        {/* <StyledTableCell align=\"center\">\n                        {msToTime(row?.inefficient_time)}\n                      </StyledTableCell> */}\n                        <StyledTableCell3 align=\"center\">\n                          {row?.inefficient_consumption} kWh\n                        </StyledTableCell3>\n                        {/* <StyledTableCell align='center'>\n                        {project?.prefix_currency}{\" \"}\n                        {project?.kwh_cost * round(row?.inefficient_consumption)}\n                      </StyledTableCell> */}\n                        {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                        {/* <StyledTableCell align=\"center\">\n                        {porcentaje(\n                          round(row?.inefficient_consumption),\n                          round(row?.total_consumption)\n                        )}\n                        %\n                      </StyledTableCell> */}\n                        {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                        {/* <StyledTableCell align=\"center\">\n                        {porcentaje(\n                          round(row?.inefficient_consumption),\n                          round(consumoTotal().consumoIneficiente)\n                        )}\n                        %\n                      </StyledTableCell> */}\n                        {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                        {/* <StyledTableCell align='center'>\n                        {project?.prefix_currency}{\" \"}\n                        {project?.kwh_cost * round(row?.total_consumption)}\n                      </StyledTableCell> */}\n                        {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                      </StyledTableRow>\n                    ))}\n                    <StyledTableRow>\n                      <StyledTableCell2 align=\"\">\n                        {t(\n                          \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n                        )}\n                      </StyledTableCell2>\n                      <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell2 align=\"center\">\n                        {totalConsumptionKwh} kWh\n                      </StyledTableCell2>\n                      <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {totalAverageEfficientPercentage}%\n                      </StyledTableCell>\n                      <StyledTableCell2 align=\"center\">\n                        {totalEfficientConsumption} kWh\n                      </StyledTableCell2>\n                      <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell3 align=\"center\">\n                        {totalAverageInefficientPercentage}%\n                      </StyledTableCell3>\n                      {/* <StyledTableCell align=\"center\"></StyledTableCell> */}\n                      {/* <StyledTableCell3 align=\"center\">\n                        {round(consumoTotal().consumoIneficiente)} kWh\n                        <br></br>\n                        {porcentaje(\n                          round(consumoTotal().consumoIneficiente),\n                          round(consumoTotal().consumoTotal)\n                        )}{\" \"}\n                        %\n                      </StyledTableCell3> */}\n                      <StyledTableCell3 align=\"center\">\n                        {totalInefficientConsumption} kWh\n                      </StyledTableCell3>\n                      {/* <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell align=\"center\"></StyledTableCell> */}\n                    </StyledTableRow>\n                  </TableBody>\n                </Table>\n              </TableContainer>\n            </>\n          ) : (\n            <>\n              <TableHead>\n                <TableRow>\n                  <StyledTableCell>\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n                    )}\n                  </StyledTableCell>\n                  <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n                    )}\n                  </StyledTableCell>\n                  <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n                    )}\n                  </StyledTableCell>\n                  <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n                    )}\n                  </StyledTableCell>\n                  {/* <StyledTableCell align=\"center\">% </StyledTableCell> */}\n                  {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                  <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n                    )}\n                  </StyledTableCell>\n                  <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n                    )}\n                  </StyledTableCell>\n                  {/* <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n                    )}\n                  </StyledTableCell> */}\n                  <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n                    )}\n                  </StyledTableCell>\n                  <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n                    )}\n                  </StyledTableCell>\n                  {/* <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n                    )}\n                  </StyledTableCell> */}\n                  {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                  {/* <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n                    )}\n                  </StyledTableCell> */}\n                  {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                  {/* <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n                    )}\n                  </StyledTableCell> */}\n                  {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                  {/* <StyledTableCell align=\"center\">\n                    {t(\n                      \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n                    )}\n                  </StyledTableCell> */}\n                  {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n                </TableRow>\n              </TableHead>\n            </>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default OcupationTable;\n","//React Hooks\nimport {\n  useEffect,\n  useState,\n  useContext,\n  forwardRef,\n  useRef,\n  useImperativeHandle,\n} from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//GraphQl hooks and queries\nimport { useQuery, useLazyQuery, useMutation } from \"@apollo/client\";\nimport {\n  GET_DATA_REPORT,\n  GET_NEW_DATA_OCCUPANCY,\n} from \"../../../controllers/reportController\";\nimport { PDF_OCUPATION_BY_ROOM } from \"../../../controllers/pdfControllers\";\n\n//Canvas Library\nimport html2canvas from \"html2canvas\";\n\n//Components\nimport AreaSelector from \"../../areaSelector/AreaSelector\";\nimport DatePicker from \"../../globals/datepicker/datepicker\";\nimport { DateRangeContext } from \"../../reactDateRange/context/ReactDateRangeContext\";\nimport Loading from \"../../loading/Loading\";\nimport OcupationTable from \"./OcupationTable\";\nimport OccupancyChart from \"../../highcharts/OccupancyChart\";\nimport { ReactDateRangePicker } from \"../../../components/reactDateRange/index\";\n\n//Helper Functions\nimport { formatDateLocal } from \"../../../utils/helpers\";\nimport { handleEventDate } from \"./helper\";\n\nconst Ocupation = forwardRef((props, ref) => {\n  const { project, RoomId, typeGateway } = props;\n\n  const {\n    graphic,\n    setGraphic,\n    setLoadingPdf,\n    dateCalendar,\n    setDateCalendar,\n    setIsOpenCalendarCustom,\n    dateCalendarTemp,\n    calendarDatePicker, // calendar\n    setCalendarDatePicker, // setCalendar\n    setIdHeaderOcupation,\n    idHeaderOcupation,\n    calendarDatePickerToday,\n    setCalendarDatePickerToday,\n    globalReactDateRange,\n    globalCalendarDay,\n  } = useContext(AuthContext);\n\n  const [TypeGateway, setTypeGateway] = useState(typeGateway);\n  const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n  const printRef = useRef();\n  const [basePdf, setBasePdf] = useState();\n  const [parametroMin, setParametroMin] = useState();\n\n  const init_time = (time) => {\n    const time_now = new Date().getHours();\n    if (time_now === 15 && time === \"15:00\") {\n      const time_actual = new Date().getTime() - 86400000;\n      return new Date(time_actual);\n    }\n    return new Date();\n  };\n\n  const [parameterMax, setParameterMax] = useState(new Date());\n  const [parameterMin, setParameterMin] = useState(\n    init_time(project?.start_time)\n  );\n  const [stateRoomId, setStateRoomId] = useState(RoomId);\n  const [newRoomId, setNewRoomId] = useState(props?.NewRoomId);\n\n  const [getDataReport, { data: dataOcupation150, loading: loading150 }] =\n    useLazyQuery(GET_DATA_REPORT);\n\n  const [getNewDataOccupancy, { data: dataOcupation700, loading: loading700 }] =\n    useLazyQuery(GET_NEW_DATA_OCCUPANCY);\n\n  useEffect(() => {\n    if (graphic) {\n      dataPdf();\n    }\n  }, [graphic]);\n\n  useEffect(() => {\n    if (basePdf) {\n      decodePdf();\n    }\n  }, [basePdf]);\n\n  useEffect(() => {\n    if (TypeGateway === \"horus_700\") {\n      getNewDataOccupancy();\n    } else if (TypeGateway === \"horus_g150\") {\n      getDataReport();\n    }\n  }, [getNewDataOccupancy, getDataReport, newRoomId]);\n\n  useEffect(() => {\n    if (globalCalendarDay) {\n      handlerEpochTimeConverter();\n    }\n  }, [globalCalendarDay]);\n\n  useEffect(() => {\n    handlerEpochTimeConverter();\n  }, [idHeaderOcupation, newRoomId, stateRoomId]);\n\n  const handlerEpochTimeConverter = () => {\n    if (project?.start_time) {\n      let epochTime = 60 * 60 * 1000;\n\n      let startTimeZone =\n        globalCalendarDay?.toString()?.substring(0, 16) +\n        `${project?.start_time}:00 GMT` +\n        project?.time_zone;\n\n      let endTimeZone = new Date(startTimeZone)?.getTime() + (86400000 - 60000);\n\n      let param =\n        globalCalendarDay.toString()?.substring(0, 16) +\n        `${project?.start_time}:00 GMT`;\n\n      const parameter_min =\n        new Date(param).getTime() -\n        parseInt(project?.time_zone, 10) * epochTime;\n\n      const parameter_max = new Date(endTimeZone).getTime();\n\n      setParameterMax(parameter_max);\n      setParameterMin(parameter_min);\n\n      handleChangeTypeGateway(parameter_min, parameter_max);\n    } else {\n    }\n  };\n\n  useImperativeHandle(ref, () => ({\n    async occupationPdf() {\n      setLoadingPdf(true);\n      await imageGraphic();\n    },\n  }));\n\n  const handleChangeTypeGateway = (parameterMin, parameterMax) => {\n    const queryHorus700 = {\n      variables: {\n        ProjectId: project?.id,\n        NewRoomId: String(newRoomId),\n        event_date: handleEventDate(parameterMin),\n        start_time: Number(`${new Date(parameterMin).getTime()}`),\n        end_time: Number(`${new Date(parameterMax).getTime()}`),\n      },\n      fetchPolicy: \"no-cache\",\n    };\n\n    const queryHorus150 = {\n      variables: {\n        project_id: project?.id,\n        RoomId: parseInt(stateRoomId),\n        event_date: handleEventDate(parameterMin),\n        start_time: Number(`${new Date(parameterMin).getTime()}`),\n        end_time: Number(`${new Date(parameterMax).getTime()}`),\n      },\n      fetchPolicy: \"no-cache\",\n    };\n\n    if (TypeGateway === \"horus_700\") {\n      getNewDataOccupancy(queryHorus700);\n    } else if (TypeGateway === \"horus_g150\") {\n      getDataReport(queryHorus150);\n    }\n  };\n\n  // With start time\n  // const with_start_time = () => {\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n  //   let day_time_zone =\n  //     calendarDatePicker?.toString()?.substring(0, 16) +\n  //     `${project?.start_time}:00 GMT` +\n  //     project?.time_zone;\n  //   let day_time_end_zone =\n  //     new Date(day_time_zone)?.getTime() + (86400000 - 60000);\n  //   let param =\n  //     calendarDatePicker?.toString()?.substring(0, 16) +\n  //     `${project?.start_time}:00 GMT`;\n\n  //   const parameter_min =\n  //     new Date(param).getTime() -\n  //     parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //   const parameter_max = new Date(day_time_end_zone).getTime();\n\n  //   //Parameter StartDate\n  //   setParameterMin(parameter_min);\n  //   //Parameter EndDate\n  //   setParameterMax(parameter_max);\n\n  //   handleChangeTypeGateway(parameter_min, parameter_max);\n  // };\n\n  // Without start time\n  // const without_start_time = () => {\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let day_time_end_zone =\n  //     dateCalendar?.toString()?.substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     project?.time_zone;\n  //   let param = dateCalendar?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let parameter_min =\n  //     new Date(param).getTime() -\n  //     parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //   const parameter_max = new Date(day_time_end_zone).getTime();\n\n  //   //Parameter StartDate\n  //   setParameterMin(parameter_min);\n  //   //Parameter EndDate\n  //   setParameterMax(parameter_max);\n  // };\n\n  // const handleQueryReport = () => {\n  //   if (project?.start_time) {\n  //     with_start_time();\n  //   } else {\n  //     without_start_time();\n  //   }\n  // };\n\n  // const back = () => {\n  //   if (project?.start_time) {\n  //     const backday = calendarDatePicker; // Obtenemos el dia\n\n  //     let day_time_zone =\n  //       new Date(backday)?.toString()?.substring(0, 16) +\n  //       `${project?.start_time}:00 GMT` +\n  //       project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n  //     let day_time_end_zone =\n  //       new Date(day_time_zone).getTime() - (86400000 - 60000); // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n  //     //Parámetro inicial\n  //     setParameterMin(day_time_end_zone);\n  //     //parámetro final\n  //     setParameterMax(day_time_end_zone + (86400000 - 60000));\n\n  //     // set el nuevo valor de calendar\n  //     setCalendarDatePicker(new Date(day_time_end_zone));\n  //     setCalendarDatePickerToday(new Date(day_time_end_zone));\n  //     const parameter_min = Number(`${day_time_end_zone - 60000}`);\n\n  //     const parameter_max = Number(\n  //       `${day_time_end_zone + (86400000 - 120000)}`\n  //     );\n\n  //     handleChangeTypeGateway(parameter_min, parameter_max);\n  //   } else {\n  //     const backday = dateCalendarTemp;\n  //     let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //     const new_backday = new Date(backday);\n\n  //     let day_time_end_zone =\n  //       new Date(new_backday)?.toString()?.substring(0, 16) +\n  //       \"23:59:59 GMT\" +\n  //       project?.time_zone;\n  //     let param =\n  //       new Date(new_backday)?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n  //     let tempPara =\n  //       new Date(param)?.getTime() -\n  //       parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //     const temEndDate = new Date(day_time_end_zone)?.getTime();\n\n  //     setDateCalendar(new_backday);\n\n  //     //openDateCusom\n  //     setIsOpenCalendarCustom(false);\n  //     //Parámetro inicial\n  //     setParameterMin(tempPara);\n  //     //parámetro final\n  //     setParameterMax(temEndDate);\n  //   }\n  // };\n\n  // const next = () => {\n  //   if (project?.start_time) {\n  //     const nextday = calendarDatePicker; // Obtenemos el dia\n\n  //     let day_time_zone =\n  //       new Date(nextday)?.toString()?.substring(0, 16) +\n  //       `${project?.start_time}:00 GMT` +\n  //       project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n  //     let day_time_end_zone = new Date(day_time_zone)?.getTime() + 86400000; // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n  //     //Parámetro inicial\n  //     setParameterMin(day_time_end_zone);\n  //     //parámetro final\n  //     setParameterMax(day_time_end_zone + (86400000 + 60000));\n\n  //     // set el nuevo valor de calendar\n  //     setCalendarDatePicker(new Date(day_time_end_zone));\n  //     setCalendarDatePickerToday(new Date(day_time_end_zone));\n  //     const parameter_min = Number(`${day_time_end_zone}`);\n\n  //     const parameter_max = Number(`${day_time_end_zone + (86400000 - 60000)}`);\n\n  //     handleChangeTypeGateway(parameter_min, parameter_max);\n  //   } else {\n  //     const nextday = dateCalendarTemp;\n  //     let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //     const new_nextday = new Date(nextday);\n\n  //     let day_time_end_zone =\n  //       new Date(new_nextday)?.toString()?.substring(0, 16) +\n  //       \"23:59:59 GMT\" +\n  //       project?.time_zone;\n  //     let param =\n  //       new Date(new_nextday)?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n  //     let tempPara =\n  //       new Date(param)?.getTime() -\n  //       parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n  //     const temEndDate = new Date(day_time_end_zone)?.getTime();\n\n  //     setDateCalendar(new_nextday);\n  //     //openDateCusom\n  //     setIsOpenCalendarCustom(false);\n  //     //Parámetro inicial\n  //     setParameterMin(tempPara);\n  //     //parámetro final\n  //     setParameterMax(temEndDate);\n  //   }\n  // };\n\n  const changeRoomId = (id) => {\n    setStateRoomId(id);\n    setIdHeaderOcupation(id);\n    const typeGateway = JSON.parse(localStorage.getItem(\"areas\"))\n      ?.filter((i) => parseInt(i?.id) === parseInt(id))\n      ?.map((i) => i?.typeGateway);\n\n    const newRoomId = JSON.parse(localStorage.getItem(\"areas\"))\n      ?.filter((i) => parseInt(i?.id) == id)\n      ?.map((i) => i?.newRoomId);\n    setNewRoomId(newRoomId[0]);\n    setTypeGateway(typeGateway[0]);\n  };\n\n  // useEffect(() => {\n  //   setIdHeaderOcupation(props.roomIdDatepicker);\n  //   if (project?.start_time) {\n  //     with_start_time();\n  //   } else {\n  //     without_start_time();\n  //   }\n  // }, []);\n\n  // useEffect(() => {\n  //   if (project?.start_time) {\n  //     with_start_time();\n  //   } else {\n  //     without_start_time();\n  //   }\n  // }, [idHeaderOcupation, newRoomId, stateRoomId]);\n\n  if (loading150) {\n    return <Loading />;\n  } else if (loading700) {\n    return <Loading />;\n  }\n\n  const imageGraphic = async () => {\n    const element = printRef.current;\n    const canvas = await html2canvas(element);\n    const data = canvas.toDataURL(\"image/jpg\");\n    setGraphic(data.slice(22));\n  };\n\n  const decodePdf = () => {\n    const linkSource = `data:application/pdf;base64,${basePdf}`;\n    const downloadLink = document.createElement(\"a\");\n    const fileName = \"Informe de ocupación.pdf\";\n    downloadLink.href = linkSource;\n    downloadLink.download = fileName;\n    downloadLink.click();\n    setLoadingPdf(false);\n    setGraphic(\"\");\n    setBasePdf(\"\");\n  };\n\n  function dataPdf() {\n    try {\n      pdfGenerator({\n        variables: {\n          image: [graphic],\n          data: handleTypeGatewayDataOccupancyPdf(),\n          prefix_currency: localStorage.getItem(\"prefix\"),\n          kwh_cost: 0,\n          startTime: String(parameterMin),\n          finishTime: \"\",\n          nameProject: localStorage.getItem(\"nameProject\"),\n          userName: localStorage.getItem(\"name\"),\n          imageProject: localStorage.getItem(\"imgProject\"),\n          datePrint: localStorage.getItem(\"localTime\"),\n        },\n      })\n        .then((resul) => {\n          setBasePdf(resul.data.pdfOcupationByRoom);\n        })\n        .catch((err) => {\n          console.error(err);\n        });\n    } catch (err) {\n      console.error(err);\n    }\n  }\n\n  const handleTypeGatewayDataOccupancy = () => {\n    if (TypeGateway === \"horus_700\") {\n      return dataOcupation700?.getNewDataOccupancy;\n    } else if (TypeGateway === \"horus_g150\") {\n      return dataOcupation150?.getDataReport;\n    }\n  };\n\n  const handleTypeGatewayDataOccupancyPdf = () => {\n    if (TypeGateway === \"horus_700\") {\n      const filteredReporData =\n        dataOcupation700?.getNewDataOccupancy?.report_data?.filter(\n          (data) =>\n            data.category !== 123 &&\n            data.category !== 67 &&\n            data.category !== 35\n        );\n      return {\n        report_data: filteredReporData,\n        totals_consumptions_report_data:\n          dataOcupation700?.getNewDataOccupancy\n            ?.totals_consumptions_report_data,\n      };\n    } else if (TypeGateway === \"horus_g150\") {\n      const filteredReporData =\n        dataOcupation150?.getDataReport?.report_data?.filter(\n          (data) =>\n            data.category !== 123 &&\n            data.category !== 67 &&\n            data.category !== 35\n        );\n      return {\n        report_data: filteredReporData,\n        totals_consumptions_report_data:\n          dataOcupation150?.getDataReport?.totals_consumptions_report_data,\n      };\n    }\n  };\n\n  const handleTypeGatewayDataOccupancyTable = () => {\n    if (TypeGateway === \"horus_700\") {\n      return dataOcupation700;\n    } else if (TypeGateway === \"horus_g150\") {\n      return dataOcupation150;\n    }\n  };\n\n  const handleProjectTime = (time) => {\n    if (time === \"0:00\" || time === \"00:00\") {\n      return 0;\n    } else if (time === \"15:00\") {\n      return 15;\n    }\n  };\n\n  return (\n    <div className=\"occupation_report_container\">\n      {/* Calendar */}\n      {/* <DatePicker\n        component=\"occupation\"\n        type=\"calendar\"\n        back={back}\n        next={next}\n        handleQuery={handleQueryReport}\n        selectOption={{\n          changeInside: true,\n          changeRoomId,\n          RoomId,\n        }}\n        typeGateway={TypeGateway}\n        timerProject={project?.start_time}\n      /> */}\n      <div className=\"Datepicker_AreaSelector_Container\">\n        <ReactDateRangePicker\n          selectTypeRange=\"d\"\n          closingTime={handleProjectTime(project?.start_time)}\n          closingType=\"n\"\n        />\n        <AreaSelector changeRoomId={changeRoomId} />\n      </div>\n\n      {/* Grafica */}\n      <div ref={printRef}>\n        <OccupancyChart\n          data={handleTypeGatewayDataOccupancy()}\n          dateMin={parameterMin}\n          dateMax={parameterMax}\n          timeZone={-(project?.time_zone * 60)}\n        />\n      </div>\n\n      {/* Table */}\n      <OcupationTable\n        reportData={handleTypeGatewayDataOccupancyTable()}\n        project={project}\n        typeGateway={TypeGateway}\n      />\n    </div>\n  );\n});\n\nexport default Ocupation;\n","import React, {\n  useContext,\n  useState,\n  useRef,\n  forwardRef,\n  useEffect,\n} from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Occupation from \"../highcharts/Occupation\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport Slide from \"@material-ui/core/Slide\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport {\n  change_status_area,\n  change_color_title_plugin,\n} from \"../../utils/helpers.js\";\nimport BuildIcon from \"@mui/icons-material/Build\";\nimport Swal from \"sweetalert2\";\nimport { useQuery } from \"@apollo/client\";\nimport { areas_with_device_fails, filterByPluggin } from \"../../utils/helpers\";\nimport DevicesFails from \"../devices/DevicesFails\";\nimport IBMFails from \"../devices/IBMFails\";\nimport Temperature from \"../highcharts/Temperature\";\nimport { Hidden } from \"@material-ui/core\";\nimport { secondClient } from \"../../index\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport {\n  FindSerialPluginbathroom,\n  CheckStatusPluginBathroom,\n} from \"../../utils/helpers\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport PluginMode from \"./plugin/PluginMode\";\n\n//components\nimport PluginBathroomComp from \"./plugin/PluginBathroom\";\n\n//query and mutation\nimport { useMutation } from \"@apollo/client\";\nimport { PDF_OCUPATION_BY_ROOM } from \"../../controllers/pdfControllers\";\nimport { GET_METER_HISTORY_VARIABLES } from \"../../controllers/measurersController\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport OcupationTable from \"../reports/Ocupation/OcupationTable\";\nimport Ocupation from \"../reports/Ocupation/Ocupation\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst customBlue = \"rgb(13, 112, 178)\";\nconst customColors = createTheme({\n  palette: {\n    secondary: {\n      main: customBlue,\n    },\n  },\n});\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"relative\",\n  },\n  appBarDeviceFails: {\n    backgroundColor: \"#FFAF0E\",\n    position: \"relative\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: \"relative\",\n    height: 200,\n    [theme.breakpoints.down(\"xs\")]: {\n      width: \"100% !important\",\n      height: 100,\n    },\n    \"&:hover, &$focusVisible\": {\n      zIndex: 1,\n      \"& $imageBackdrop\": {\n        opacity: 0.15,\n      },\n      \"& $imageMarked\": {\n        opacity: 0,\n      },\n      \"& $imageTitle\": {\n        border: \"4px solid currentColor\",\n      },\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center 40%\",\n  },\n  imageBackdrop: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  imageTitle: {\n    position: \"relative\",\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n      theme.spacing(1) + 6\n    }px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: \"absolute\",\n    bottom: -2,\n    left: \"calc(50% - 9px)\",\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  table: {\n    minWidth: 700,\n  },\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\n\nconst Area = (props) => {\n  const { t } = useTranslation();\n  const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n  const [innerWidth, setInnerWidth] = useState(window.innerWidth);\n  const {\n    area,\n    setIdArea,\n    setArea,\n    setSerial,\n    setactiveNextBack,\n    setDateCalendar,\n    loadingPdf,\n    setCalendarDatePicker,\n    occupationAreaName,\n    setOccupationAreaName,\n    setDateCalendarTemp,\n    nameHeaderOcupation,\n    setNameHeaderOcupation,\n    setGlobalCalendarDay,\n    setIdHeaderOcupation,\n  } = useContext(AuthContext);\n  const history = useHistory();\n  const [open, setOpen] = React.useState(false);\n  const [openTemp, setOpenTemp] = useState(false);\n  const [openDevicesFails, setOpenDevicesFails] = React.useState(false);\n  const [openIBMFails, setOpenIBMFails] = React.useState(false);\n  const classes = useStyles();\n  const childRef = useRef();\n  const [client, setClient] = useState(null);\n  const [serialPluginBathroom, setSerialPluginBathroom] = useState(null);\n  const [initialState, setInitialState] = useState([]);\n  const [cloneDataState, setCloneDataState] = useState({});\n  const [selectedRoom, setSelectedRoom] = useState(\"\");\n  const statePlugin = props?.data?.Device?.find(\n    (i) =>\n      i?.visible &&\n      i?.Category?.category === 600 &&\n      i?.Category?.sub_category === 3\n  );\n\n  // const thermostatExists = props?.data?.Device?.find((element) =>\n  //   (element?.visible &&\n  //     element?.Category?.category == \"5\" &&\n  //     element?.Category?.sub_category == \"1\") ||\n  //   (element?.visible &&\n  //     element?.Category?.category === \"hvac\" &&\n  //     element?.Category?.sub_category === \"hvac\")\n  //     ? true\n  //     : false\n  // );\n\n  // const temperatureSensor = props?.data?.Device?.find(\n  //   (element) =>\n  //     element?.visible &&\n  //     element?.Category?.category == \"17\" &&\n  //     element?.Category?.sub_category == \"0\"\n  // )\n  //   ? true\n  //   : false;\n\n  const {\n    REACT_APP_SOCKET_PRODUCTION,\n    REACT_APP_SOCKET_DEVELOP,\n    REACT_APP_SOCKET_STAGING,\n  } = process.env;\n\n  useEffect(() => {\n    if (props) {\n      const result = FindSerialPluginbathroom(props);\n      if (result) {\n        if (result.serial !== null) {\n          setSerialPluginBathroom(result.serial);\n          //console.log(\"encontre serial\", result.serial);\n        }\n        if (result.statePlugin !== null) {\n          setInitialState(result.statePlugin);\n          // console.log(\"encontre los estados\", result.statePlugin);\n        }\n      } else {\n        //console.log(\"No se encontró serial ni estado\");\n      }\n    }\n  }, [props]);\n\n  useEffect(() => {\n    if (serialPluginBathroom !== null) {\n      if (client) {\n        client.onerror = client.onopen = client.onclose = null;\n        client.close();\n      }\n      const newClient = new W3CWebSocket(`${REACT_APP_SOCKET_PRODUCTION}`);\n      newClient.onopen = () => {\n        if (serialPluginBathroom)\n          newClient.send(JSON.stringify({ channel: serialPluginBathroom }));\n      };\n      newClient.onerror = function () {\n        console.log(\"Se ha producido un error en el cliente del socket\");\n      };\n      newClient.onmessage = function (e) {\n        if (typeof e.data === \"string\") {\n          const response = JSON.parse(e.data);\n\n          setInitialState((prevState) =>\n            prevState.map((item) =>\n              item.id === response.id_device\n                ? {\n                    ...item,\n                    variables: { ...item.variables, Status: response.status },\n                  }\n                : item\n            )\n          );\n        } else {\n          // console.log(\"Mensaje recibido no es una cadena\");\n        }\n      };\n      newClient.onclose = () => {\n        setClient(null);\n      };\n      setClient(newClient);\n      // Limpia la conexión al desmontar el componente\n      return () => {\n        if (newClient) newClient.close();\n      };\n    }\n  }, [serialPluginBathroom]);\n\n  function openArea() {\n    localStorage.setItem(\"RoomName\", props.data.alias);\n    localStorage.setItem(\"id\", props.project.id);\n    localStorage.setItem(\"typeGateway\", props.data?.Controller.typeGateway);\n\n    setArea(props.data.alias);\n    setIdArea(props.data.id);\n    setSerial(props.data.Controller.serial);\n    let aux = localStorage.getItem(\"typeGateway\");\n    if (aux === \"horus_g150\") {\n      history.push(\n        `/app/devices/${props.data.id}-${props?.data?.Controller?.typeGateway}`\n      );\n    } else if (aux === \"horus_700\") {\n      history.push(\n        `/app/newdevices/${props.data.id}-${props?.data?.Controller?.typeGateway}`\n      );\n    }\n    if (!props.data.Controller.online) {\n      Swal.fire({\n        icon: \"error\",\n        title: \"Oops...\",\n        text: \"Área fuera de línea\",\n      });\n    }\n  }\n\n  const handleClickOpen = () => {\n    setOpen(true);\n    localStorage.setItem(\"RoomName\", props?.data?.alias);\n    setArea(props?.data?.alias);\n    setIdArea(props?.data?.id);\n    localStorage.setItem(\"selectedAreaName\", props?.data?.name);\n    setNameHeaderOcupation(props?.data?.name); // Add select name header\n    setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n    setIdHeaderOcupation(props?.data?.id);\n\n    const day_by_miliseconds = 86400000;\n    // Hora actual\n    const actual_hour = new Date().getHours();\n    // Hora inicio\n    const hotel_hour = Number(\n      localStorage.getItem(\"startTime\").substring(0, 2)\n    );\n    setCalendarDatePicker(\n      actual_hour < hotel_hour\n        ? new Date(new Date().getTime() - day_by_miliseconds)\n        : new Date()\n    );\n\n    if (\n      localStorage.getItem(\"startTime\") === \"0:00\" ||\n      localStorage.getItem(\"startTime\") === \"00:00\"\n    ) {\n      setGlobalCalendarDay(new Date());\n    } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n      if (actual_hour < 15) {\n        setGlobalCalendarDay(\n          new Date(new Date(new Date().getTime() - day_by_miliseconds))\n        );\n      } else if (actual_hour >= 15) {\n        setGlobalCalendarDay(new Date());\n      }\n    }\n  };\n\n  const handleClickOpenTemp = () => {\n    setOpenTemp(true);\n    localStorage.setItem(\"selectedAreaName\", props?.data?.name);\n    setNameHeaderOcupation(props?.data?.name); // Add select name header\n    setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n    setIdHeaderOcupation(props?.data?.id);\n    setactiveNextBack(true);\n    const day_by_miliseconds = 86400000;\n    const actual_hour = new Date().getHours();\n    if (\n      localStorage.getItem(\"startTime\") === \"0:00\" ||\n      localStorage.getItem(\"startTime\") === \"00:00\"\n    ) {\n      setGlobalCalendarDay(new Date());\n    } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n      if (actual_hour < 15) {\n        setGlobalCalendarDay(\n          new Date(new Date(new Date().getTime() - day_by_miliseconds))\n        );\n      } else if (actual_hour >= 15) {\n        setGlobalCalendarDay(new Date());\n      }\n    }\n  };\n\n  const hndleCloseTemp = () => {\n    setDateCalendar(new Date());\n    setDateCalendarTemp(new Date());\n    setOpenTemp(false);\n  };\n\n  const handleDeviceFail = () => {\n    setOpenDevicesFails(true);\n  };\n\n  const handleClose = () => {\n    setCalendarDatePicker(new Date());\n    setOpen(false);\n  };\n\n  const handleCloseDeviceFails = () => {\n    setOpenDevicesFails(false);\n  };\n\n  const handleCloseIBMFails = () => {\n    setOpenIBMFails(false);\n  };\n\n  const handleOpenIBMFails = () => {\n    setOpenIBMFails(true);\n  };\n\n  const FilterDevicesFails = () => {\n    return props?.data?.Device?.filter(\n      (i) => i.variables.CommFailure == \"1\" && i.visible\n    );\n  };\n\n  const device_off = areas_with_device_fails(props.data);\n\n  return (\n    <div className={`_area_container`}>\n      <div\n        title={t(\"VIEW_AREAS.COMPONENT_AREA_CARD.CARD_HEADER_TOOLTIP\")}\n        className={`${filterByPluggin(props)} _area_container_title ${\n          device_off > 0\n            ? \"_area_container_title_true\"\n            : \"_area_container_title_false\"\n        }`}\n      >\n        <span\n          className={`${change_color_title_plugin(statePlugin)} __title_area`}\n          onClick={openArea}\n        >\n          {props?.data?.alias}\n        </span>\n\n        {device_off > 0 ? (\n          <div className=\"failed_device_button\">\n            <span\n              onClick={handleDeviceFail}\n              className=\"__icon_warning__\"\n              title={\n                device_off > 0\n                  ? t(\n                      \"VIEW_AREAS.COMPONENT_AREA_CARD.CARD_HEADER_DEVICES_NOTIFICATION_TOOLTIP\"\n                    ) + `${device_off}`\n                  : \"\"\n              }\n            >\n              <ThemeProvider theme={customColors}>\n                <BuildIcon\n                  sx={{\n                    display: \"flex\",\n                    justifyContent: \"center\",\n                    alignItems: \"center\",\n                    alignSelf: \"center\",\n                    height: \"13px\",\n                    width: \"14px\",\n                  }}\n                  color=\"secondary\"\n                />\n              </ThemeProvider>\n            </span>\n          </div>\n        ) : (\n          false\n        )}\n        <PluginMode props={props} />\n      </div>\n      <div\n        className={`_area_container_reports ${\n          !props?.data?.Controller?.online ? \"__area_controller_off__\" : false\n        }`}\n        onClick={openArea}\n      >\n        <div\n          className={`_area_container_report_icon ${\n            CheckStatusPluginBathroom(initialState) ||\n            cloneDataState.isStatusOne === true\n              ? \"active_fails_devices\"\n              : \"desactive_fails_devices\"\n          }`}\n        >\n          <span\n            title={t(\n              \"VIEW_AREAS.COMPONENT_AREA_CARD.CARD_BODY_OCUPATION_TOOLTIP\"\n            )}\n            className=\"_area_container_img_ocupation\"\n            onClick={(e) => {\n              e.stopPropagation();\n              handleClickOpen();\n            }}\n          >\n            <i className=\"zmdi zmdi-male\"></i>\n          </span>\n\n          <span\n            className={`${\"_area_container_img_energy\"}`}\n            // className={`${\n            //   thermostatExists || temperatureSensor\n            //     ? \"_area_container_img_energy\"\n            //     : \"_area_container_disabled_img_energy\"\n            // }`}\n\n            onClick={(e) => {\n              e.stopPropagation();\n              handleClickOpenTemp();\n            }}\n\n            // onClick={\n            //   thermostatExists || temperatureSensor\n            //     ? () => handleClickOpenTemp()\n            //     : null\n            // }\n          >\n            <i className=\"zmdi zmdi-flare\"></i>\n          </span>\n\n          <span className=\"_area_container_fails_socket\">\n            {CheckStatusPluginBathroom(initialState) ? (\n              <span onClick={() => handleOpenIBMFails()}>\n                <PluginBathroomComp />\n              </span>\n            ) : null}\n          </span>\n        </div>\n      </div>\n      <Dialog\n        fullScreen\n        open={open}\n        onClose={handleClose}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBar}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleClose}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography\n              className={classes.title}\n              variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n              align={innerWidth <= 680 ? \"center\" : \"left\"}\n            >\n              {`${props?.project?.name} - ${t(\n                \"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_FULL_MODAL_OCCUPATION.HEADER_TITLE\"\n              )} ${occupationAreaName}`}\n            </Typography>\n\n            <Hidden mdDown>\n              <LoadingButton\n                // disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n                onClick={() => childRef.current.occupationPdf()}\n                endIcon={<DownloadIcon />}\n                loadingPosition=\"end\"\n                color=\"inherit\"\n              >\n                {t(\n                  \"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_FULL_MODAL_OCCUPATION.DOWNLOAD\"\n                )}\n              </LoadingButton>\n              <Backdrop\n                sx={{\n                  color: \"#fff\",\n                  zIndex: (theme) => theme?.zIndex?.drawer + 1,\n                }}\n                open={loadingPdf ? true : false}\n                onClick={loadingPdf}\n              >\n                <CircularProgress color=\"inherit\" />\n              </Backdrop>\n            </Hidden>\n          </Toolbar>\n        </AppBar>\n        {/* <OcupationTable /> */}\n        <Ocupation\n          project={props?.project}\n          RoomId={props?.data?.id}\n          roomIdDatepicker={props?.data?.id}\n          NewRoomId={props?.data?.NewRoomId}\n          typeGateway={props?.data?.Controller?.typeGateway}\n          ref={childRef}\n        />\n      </Dialog>\n\n      <Dialog\n        fullScreen\n        open={openTemp}\n        onClose={hndleCloseTemp}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBar}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={hndleCloseTemp}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography\n              className={classes.title}\n              variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n              align={innerWidth <= 680 ? \"center\" : \"left\"}\n            >\n              {`${props?.project?.name} - ${t(\n                \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MODAL_HEADER_TITLE\"\n              )} ${occupationAreaName}`}\n            </Typography>\n          </Toolbar>\n        </AppBar>\n        <Temperature\n          typeGateway={props?.data?.Controller?.typeGateway}\n          RoomId={props?.data?.id}\n          NewRoomId={props?.data?.NewRoomId}\n          project={props?.project}\n        />\n      </Dialog>\n\n      <Dialog\n        fullWidth\n        open={openDevicesFails}\n        onClose={handleCloseDeviceFails}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBarDeviceFails}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleCloseDeviceFails}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography\n              className={classes.title}\n              variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n              align={innerWidth <= 680 ? \"center\" : \"left\"}\n            >\n              {props?.project?.name}\n            </Typography>\n          </Toolbar>\n        </AppBar>\n        <div className=\"__title_device_fails__\">\n          {t(\n            \"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.MODAL_TITLE\"\n          ) + `${device_off}`}\n        </div>\n        {FilterDevicesFails()?.map((device, key) => (\n          <DevicesFails key={key} device={device} />\n        ))}\n      </Dialog>\n\n      <Dialog\n        fullWidth\n        open={openIBMFails}\n        onClose={handleCloseIBMFails}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBarDeviceFails}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleCloseIBMFails}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography\n              className={classes.title}\n              variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n              align={innerWidth <= 680 ? \"center\" : \"left\"}\n            >\n              {props?.project?.name} hola\n            </Typography>\n          </Toolbar>\n        </AppBar>\n        <div className=\"__title_device_fails__\">{`Estado activos del baño`}</div>\n        {<IBMFails stateinitial={initialState} stateClone={cloneDataState} />}\n      </Dialog>\n    </div>\n  );\n};\n\nexport default Area;\n","import React, { useContext } from \"react\";\n\n//Material UI\nimport Button from \"@mui/material/Button\";\nimport Fade from \"@mui/material/Fade\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\nconst ActionsMenuButton = (props) => {\n  const { setOpenVirtualRoomModal, setEditRoomModal } = props;\n  const { permissionsRoleUser } = useContext(AuthContext);\n  const { t } = useTranslation();\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const open = Boolean(anchorEl);\n\n  const handleClick = (event) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handlerPickAction = (action) => {\n    setAnchorEl(null);\n    if (action === 1) {\n      setOpenVirtualRoomModal(true);\n    } else if (action === 2) {\n      setEditRoomModal(true);\n    }\n  };\n\n  return (\n    <div className=\"add_area_button\">\n      <Button\n        id=\"fade-button\"\n        aria-controls={open ? \"fade-menu\" : undefined}\n        aria-haspopup=\"true\"\n        aria-expanded={open ? \"true\" : undefined}\n        sx={{\n          border: \"1px solid\",\n          borderColor: \"white\",\n          boxShadow: \"1px 1px 4px 4px rgba(146, 158, 158, 0.3)\",\n        }}\n        onClick={handleClick}\n      >\n        <MoreVertIcon color=\"action\" />\n      </Button>\n      <Menu\n        id=\"fade-menu\"\n        MenuListProps={{\n          \"aria-labelledby\": \"fade-button\",\n        }}\n        anchorEl={anchorEl}\n        open={open}\n        onClose={handlerPickAction}\n        TransitionComponent={Fade}\n      >\n        {permissionsRoleUser?.permissionsRole?.AreaCreate ? (\n          <MenuItem onClick={() => handlerPickAction(1)}>\n            {t(\n              \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_AREA_ACTIONS_MENU_BUTTON.CREATE_AREA\"\n            )}\n          </MenuItem>\n        ) : null}\n        {permissionsRoleUser?.permissionsRole?.AreaEdit ? (\n          <MenuItem onClick={() => handlerPickAction(2)}>\n            {t(\n              \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_AREA_ACTIONS_MENU_BUTTON.EDIT_AREA\"\n            )}\n          </MenuItem>\n        ) : null}\n      </Menu>\n    </div>\n  );\n};\n\nexport default ActionsMenuButton;\n","import React, { useState, useContext } from \"react\";\n\n//Queries\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  GET_ALL_CONTROLLERS,\n  UPDATE_ROOM,\n} from \"../../../../controllers/roomControllers\";\n\n//Material UI components\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport FormControl from \"@mui/material/FormControl\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@mui/material/Select\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst EditRoomModal = (props) => {\n  const { areas, projectId, openEditRoomModal, setEditRoomModal, refetchArea } =\n    props;\n  const { t } = useTranslation();\n  const customGreen = \"#acf6ac\";\n  const theme = createTheme({\n    palette: {\n      success: {\n        main: customGreen,\n      },\n    },\n  });\n  const [updateRoom] = useMutation(UPDATE_ROOM);\n  const { data, loading, refetch } = useQuery(GET_ALL_CONTROLLERS, {\n    variables: {\n      projectId: projectId,\n    },\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: true,\n  });\n\n  const controllers = data?.getAllControllers;\n  const [areaId, setAreaId] = useState(\"\");\n  const [areaName, setAreaName] = useState(\"\");\n  const [controllerId, setControllerId] = useState(\"\");\n  const [controllerSerial, setConrollerSerial] = useState(\"\");\n  const [typeGateway, setTypeGateway] = useState(\"\");\n  const selectedAreaTypeGateway = areas?.find(\n    (area) => area?.id === areaId || area?.NewRoomId === areaId\n  )?.Controller?.typeGateway;\n  const selectedAreaId = areas?.find(\n    (area) => area?.id === areaId || area?.NewRoomId === areaId\n  )?.id;\n\n  const filteredControllers = controllers?.filter(\n    (controller) =>\n      controller?.typeGateway === selectedAreaTypeGateway ||\n      (controller?.typeGateway === \"virtual\" &&\n        selectedAreaTypeGateway === \"horus_700\") ||\n      (controller?.typeGateway === \"horus_700\" &&\n        selectedAreaTypeGateway === \"virtual\")\n  );\n\n  const handlerCloseEditRoomModal = () => {\n    setEditRoomModal(false);\n    setAreaId(\"\");\n    setAreaName(\"\");\n    setControllerId(\"\");\n    setConrollerSerial(\"\");\n    setTypeGateway(\"\");\n  };\n\n  const handlerPickArea = (id) => {\n    const area = areas?.find(\n      (area) => area?.id === id || area?.NewRoomId === id\n    );\n    setAreaId(id);\n    setAreaName(area?.name);\n    setControllerId(area?.Controller?.id);\n    setConrollerSerial(area?.Controller?.serial);\n    setTypeGateway(area?.Controller?.typeGateway);\n  };\n\n  const handlerEditAreaName = (value) => {\n    setAreaName(value);\n  };\n\n  const handlerPickController = (id) => {\n    const controller = controllers?.filter(\n      (controller) =>\n        controller?.serial === controllerSerial &&\n        controller?.typeGateway === selectedAreaTypeGateway\n    );\n    setControllerId(id);\n    setTypeGateway(controller[0]?.typeGateway);\n  };\n\n  async function handlerUpdateRoom() {\n    if (areaId && areaName && controllerId) {\n      try {\n        updateRoom({\n          variables: {\n            updateRoomId: selectedAreaId,\n            typeGateway: typeGateway,\n            data: {\n              name: areaName,\n              alias: areaName,\n              ProjectId: projectId,\n              ControllerId: controllerId,\n            },\n          },\n        });\n        setTimeout(() => {\n          refetchArea();\n          handlerCloseEditRoomModal();\n        }, 2000);\n      } catch (err) {\n        console.error(\"Excepción:\", err);\n      }\n    }\n  }\n\n  return (\n    <>\n      <Dialog\n        open={openEditRoomModal}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"35%\",\n            height: \"auto\",\n            [theme.breakpoints.down(\"md\")]: {\n              width: \"45%\",\n            },\n            [theme.breakpoints.down(\"sm\")]: {\n              width: \"90%\",\n            },\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            lineHeight: \"2.6\",\n            padding: \"5px 5px 5px 40px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"auto\",\n              fontWeight: \"bold\",\n            }}\n          >\n            {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.TITLE\")}\n          </span>\n          <IconButton onClick={handlerCloseEditRoomModal}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              gap: \"25px\",\n              width: \"90%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"18px\",\n              marginTop: \"20px\",\n            }}\n          >\n            <FormControl fullWidth size=\"small\">\n              <InputLabel id=\"demo-simple-select-label\">{\"Area\"}</InputLabel>\n              <Select\n                sx={{ borderRadius: \"8px\" }}\n                labelId=\"demo-simple-select-label\"\n                id=\"demo-simple-select\"\n                value={areaId}\n                label={\"Area\"}\n                onChange={(e) => handlerPickArea(e.target.value)}\n              >\n                {areas.map((value) => (\n                  <MenuItem\n                    key={value.id}\n                    value={value.NewRoomId ? value.NewRoomId : value.id}\n                  >\n                    {value.name}\n                  </MenuItem>\n                ))}\n              </Select>\n            </FormControl>\n\n            <TextField\n              id=\"outlined-basic\"\n              label={t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.AREA_NAME\")}\n              variant=\"outlined\"\n              size=\"small\"\n              InputProps={{\n                sx: { borderRadius: \"8px\", width: \"100%\" },\n              }}\n              disabled={!areaId}\n              onChange={(e) => handlerEditAreaName(e.target.value)}\n              value={areaName}\n              required={true}\n              color={areaName ? \"primary\" : \"error\"}\n            />\n\n            <FormControl fullWidth size=\"small\">\n              <InputLabel id=\"demo-simple-select-label\" disabled={!areaName}>\n                {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.CONTROLLER\")}\n              </InputLabel>\n              <Select\n                sx={{ borderRadius: \"8px\" }}\n                labelId=\"demo-simple-select-label\"\n                id=\"demo-simple-select\"\n                disabled={!areaId}\n                value={controllerId}\n                label={t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.CONTROLLER\")}\n                onChange={(e) => handlerPickController(e.target.value)}\n              >\n                {filteredControllers?.map((value) => (\n                  <MenuItem key={value?.id} value={value?.id}>\n                    {value?.serial}\n                    {value?.name !== value?.serial ? ` - ${value?.name}` : \"\"}\n                  </MenuItem>\n                ))}\n              </Select>\n            </FormControl>\n\n            <ThemeProvider theme={theme}>\n              <Button\n                sx={{\n                  width: \"100%\",\n                  padding: \"7px\",\n                  color: \"#000\",\n                  borderRadius: \"8px\",\n                  lineHeight: \"18px\",\n                }}\n                variant=\"contained\"\n                color=\"success\"\n                onClick={() => handlerUpdateRoom()}\n                disabled={areaId && areaName && controllerId ? false : true}\n              >\n                {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.ACCEPT_BUTTON\")}\n              </Button>\n            </ThemeProvider>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n\nexport default EditRoomModal;\n","import React, { useContext } from \"react\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction MessageError(props) {\n  const { messageText } = props;\n  const { errorMessage, setErrorMessage } = useContext(AuthContext);\n  const errorMessageText = messageText !== undefined ? messageText : \"Fuera de rango\" \n  \n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setErrorMessage(!errorMessage);\n  };\n\n  return (\n    <Snackbar open={errorMessage} autoHideDuration={2000} onClose={handleClose}>\n      <Alert onClose={handleClose} severity=\"error\">\n        {errorMessageText ? errorMessageText : \"Comunicación fallida\"}\n      </Alert>\n    </Snackbar>\n  );\n}\n\nexport default MessageError;\n","export const handle_start_and_end_time = (range) => {\n  const start_time = new Date(range?.startDate);\n  const end_time = new Date(range?.endDate);\n\n  const start_time_result = `${start_time.getFullYear()}/${start_time.getMonth()+1}/${start_time.getDate()}`;\n  const end_time_result = `${end_time.getFullYear()}/${end_time.getMonth()+1}/${end_time.getDate()}`;\n\n  return {\n    start: start_time_result,\n    end: end_time_result,\n  };\n};\n\nexport const back = (\n  id,\n  project,\n  getData,\n  rangeDatePicker,\n  setRangeDatePicker\n) => {\n  if (project?.start_time) {\n    const backday = rangeDatePicker[0]?.startDate; // Obtenemos el dia\n\n    let day_time_zone =\n      new Date(backday)?.toString()?.substring(0, 16) +\n      `${project?.start_time}:00 GMT` +\n      project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n    let day_time_end_zone =\n      new Date(day_time_zone)?.getTime() - (86400000 - 60000); // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n    // set el nuevo valor de calendar\n    setRangeDatePicker([\n      {\n        ...rangeDatePicker.selection,\n        startDate: new Date(day_time_end_zone),\n        endDate: new Date(day_time_end_zone),\n        key: \"selection\",\n      },\n    ]);\n\n    const { start: initial, end: final } = handle_start_and_end_time({\n      startDate: new Date(day_time_end_zone),\n      endDate: new Date(day_time_end_zone),\n      key: \"selection\",\n    });\n\n    getData({\n      variables: {\n        ProjectId: parseInt(id),\n        start_time: initial,\n        end_time: final,\n      },\n    });\n  }\n};\n\nexport const next = (\n  id,\n  project,\n  getData,\n  rangeDatePicker,\n  setRangeDatePicker\n) => {\n  if (project?.start_time) {\n    const nextday = rangeDatePicker[0]?.endDate; // Obtenemos el dia\n\n    let day_time_zone =\n      new Date(nextday).toString().substring(0, 16) +\n      `${project?.start_time}:00 GMT` +\n      project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n    let day_time_end_zone = new Date(day_time_zone).getTime() + 86400000; // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n    // set el nuevo valor de calendar\n    setRangeDatePicker([\n      {\n        ...rangeDatePicker.selection,\n        startDate: new Date(day_time_end_zone),\n        endDate: new Date(day_time_end_zone),\n        key: \"selection\",\n      },\n    ]);\n\n    const { start: initial, end: final } = handle_start_and_end_time({\n      startDate: new Date(day_time_end_zone),\n      endDate: new Date(day_time_end_zone),\n      key: \"selection\",\n    });\n\n    getData({\n      variables: {\n        ProjectId: parseInt(id),\n        start_time: initial,\n        end_time: final,\n      },\n    });\n  }\n};\n\nexport const handleQueryReport = (id, rangeDatePicker, getData) => {\n  const { start, end } = handle_start_and_end_time(rangeDatePicker[0]);\n  getData({\n    variables: {\n      ProjectId: parseInt(id),\n      start_time: start,\n      end_time: end,\n    },\n  });\n};\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Slide from \"@material-ui/core/Slide\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Hidden } from \"@material-ui/core\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { addDays } from \"date-fns\";\n//components\n\n//animation Loading\n\nimport { useMutation } from \"@apollo/client\";\nimport { PDF_OCUPATION_BY_ROOM } from \"../../controllers/pdfControllers\";\n\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { handle_start_and_end_time } from \"../reports/GeneralOcupation/helper\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"relative\",\n  },\n  appBarDeviceFails: {\n    backgroundColor: \"#FFAF0E\",\n    position: \"relative\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: \"relative\",\n    height: 200,\n    [theme.breakpoints.down(\"xs\")]: {\n      width: \"100% !important\", // Overrides inline-style\n      height: 100,\n    },\n    \"&:hover, &$focusVisible\": {\n      zIndex: 1,\n      \"& $imageBackdrop\": {\n        opacity: 0.15,\n      },\n      \"& $imageMarked\": {\n        opacity: 0,\n      },\n      \"& $imageTitle\": {\n        border: \"4px solid currentColor\",\n      },\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center 40%\",\n  },\n  imageBackdrop: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  imageTitle: {\n    position: \"relative\",\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n      theme.spacing(1) + 6\n    }px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: \"absolute\",\n    bottom: -2,\n    left: \"calc(50% - 9px)\",\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  table: {\n    minWidth: 700,\n  },\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nexport const Modal = ({ children, title, handleClick, timerProject }) => {\n  const { t } = useTranslation();\n  const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n  const {\n    openModal,\n    setOpenModal,\n    loadingPdf,\n    roomPdf,\n    setRangeDatePicker,\n    rangeDatePicker,\n    rangeDatePickerToday,\n    setRangeDatePickerToday\n  } = useContext(AuthContext);\n  const classes = useStyles();\n  const dayCurrent = new Date().getTime() - 86400000;\n\n  useEffect(() => {\n    if (openModal) {\n      if (timerProject === \"00:00\" || timerProject === \"0:00\") {\n        const compare_date = new Date();\n        const day_compare = compare_date?.toString()?.substring(0, 16);\n        const day_before = new Date(day_compare).getTime() - 86400000;\n        \n        setRangeDatePickerToday([\n          {\n            ...rangeDatePickerToday.selection,\n            startDate: new Date(day_before),\n            endDate: new Date(day_before),\n            key: \"selection\",\n          },\n        ]);\n        setRangeDatePicker([\n          {\n            ...rangeDatePicker.selection,\n            startDate: new Date(day_before),\n            endDate: new Date(day_before),\n            key: \"selection\",\n          },\n        ]);\n       \n\n      } else if (timerProject === \"15:00\") {\n        const compare_date = new Date();\n        const hours_day = compare_date.getHours();\n        const minus_horus =\n          hours_day < 15 ? 172800000 : hours_day >= 15 ? 86400000 : null;\n        const day_compare = compare_date?.toString()?.substring(0, 16);\n        const day_before = new Date(day_compare).getTime() - minus_horus;\n       \n        setRangeDatePickerToday([\n          {\n            ...rangeDatePickerToday.selection,\n            startDate: new Date(day_before),\n            endDate: new Date(day_before),\n            key: \"selection\",\n          },\n        ]);\n        setRangeDatePicker([\n          {\n            ...rangeDatePicker.selection,\n            startDate: new Date(day_before),\n            endDate: new Date(day_before),\n            key: \"selection\",\n          },\n        ]);\n      }\n    }\n \n   \n    \n  }, [openModal]);\n\n  const handleClose = (i) => {\n    setOpenModal(false);\n    setRangeDatePickerToday([{\n      startDate: new Date(dayCurrent),\n      endDate: new Date(dayCurrent),\n      key: \"selection\",\n    }])\n    \n  };\n  \n\n  return (\n    <Dialog\n      fullScreen\n      open={openModal}\n      onClose={handleClose}\n      TransitionComponent={Transition}\n    >\n      <AppBar className={classes.appBar}>\n        <Toolbar>\n          <IconButton\n            edge=\"start\"\n            color=\"inherit\"\n            onClick={handleClose}\n            aria-label=\"close\"\n          >\n            <CloseIcon   onClick={handleClose} />\n          </IconButton>\n          <Typography variant=\"h6\" className={classes.title}>\n            {title}\n          </Typography>\n          <Hidden mdDown>\n            <LoadingButton\n              // disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n              onClick={handleClick}\n              endIcon={<DownloadIcon />}\n              loadingPosition=\"end\"\n              color=\"inherit\"\n            >\n              {t(\n                \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DOWNLOAD\"\n              )}\n            </LoadingButton>\n            <Backdrop\n              sx={{\n                color: \"#fff\",\n                zIndex: (theme) => theme.zIndex.drawer + 100,\n              }}\n              open={loadingPdf}\n              onClick={loadingPdf}\n            >\n              <CircularProgress color=\"inherit\" />\n            </Backdrop>\n          </Hidden>\n        </Toolbar>\n      </AppBar>\n      {children}\n    </Dialog>\n  );\n};\nexport default Modal;\n","export const Dates = (epoch) => {\n  const currentDate = new Date(epoch);\n  currentDate.setHours(0, 0, 0, 0); // establece a las 00:00\n\n  const nextDate = new Date(epoch);\n  nextDate.setDate(nextDate.getDate() + 1); //  dia siguiente\n  nextDate.setHours(0, 0, 0, 0); // establece las horas a medianoche\n\n  const startEpoch = Math.floor(currentDate.getTime() / 1000); // epoch en segundos\n  const endEpoch = Math.floor(nextDate.getTime() / 1000 + 60); // epoch en segundos\n\n  return { start: startEpoch, end: endEpoch };\n};\n\nexport const NewDates = (date) => {\n  const dates = {\n    dd: date.getDate(),\n    mm: date.getMonth() + 1,\n    yy: date.getFullYear().toString(),\n    yyyy: date.getFullYear(),\n  };\n\n  const day = String(dates.dd);\n  const month = String(dates.mm);\n  const year = String(dates.yyyy);\n  const startTime = '00:00:00';\n\n  let a = '';\n  if (day.length < 2 && month.length < 2) {\n    return (a = `0${month} 0${day} ${year} ${startTime}`);\n  } else if (day.length === 2 && month.length < 2) {\n    return (a = `0${month} ${day} ${year} ${startTime}`);\n  } else if (day.length < 2 && month.length === 2) {\n    return (a = `${month} 0${day} ${year} ${startTime}`);\n  }\n  return a;\n};\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext, AuthProvider } from \"../../context/AuthProvider\";\nimport { addDays } from \"date-fns\";\nimport { useParams } from \"react-router\";\nimport \"react-date-range/dist/styles.css\"; // main css file\nimport \"react-date-range/dist/theme/default.css\"; // theme css file\n\n//Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Material component and styles\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Loading from \"../loading/Loading\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\n\n//components\n// import DatePicker from \"../globals/datepicker/datepicker\";\nimport MessageError from \"../message/MessageError\";\nimport Modal from \"../modal/Modal\";\nimport { ReactDateRangePicker } from \"../reactDateRange/index\";\n\n//Helpers\nimport {\n  handle_start_and_end_time,\n  handleQueryReport,\n  back,\n  next,\n} from \"../reports/GeneralOcupation/helper\";\n\n//query and mutation\nimport { useQuery, useMutation, useLazyQuery } from \"@apollo/client\";\nimport { PDF_GENERAL_OCUPATION_REPORT } from \"../../controllers/pdfControllers\";\nimport { GET_GENERAL_OCCUPATION_REPORT } from \"../../controllers/reportController\";\nimport html2canvas from \"html2canvas\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { NewDates } from \"./MeasurerDetails/helperDate\";\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n\n  body: {\n    minBlockSize: 650,\n    fontSize: 14,\n  },\n}))(TableCell);\n\nHighcharts.setOptions({\n  lang: {\n    resetZoom: \"Quitar zoom\",\n    resetZoomTitle: \"Quita todo el zoom aplicado\",\n  },\n});\n\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\n\nconst StyledTableTitle = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\nconst StyledTableCell3 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    color: \"red\",\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst useStyles = makeStyles((theme) => ({\n  table: {\n    minWidth: 650,\n  },\n  button: {\n    margin: theme.spacing(1),\n  },\n}));\n\nconst GeneralOccupation = (props) => {\n  const { projectData } = props;\n  const { t } = useTranslation();\n  const [basePdf, setBasePdf] = React.useState();\n  const [report, setReport] = React.useState();\n  const [pdfGenerator] = useMutation(PDF_GENERAL_OCUPATION_REPORT);\n  const [projectT, setProjectT] = React.useState();\n\n  const {\n    downloadGeneralOcupation,\n    setDownloadGeneralOcupation,\n    dateReport,\n    setDateReport,\n    setOpenDateCustom,\n    openDateCustom,\n    graphic,\n    setGraphic,\n    pie,\n    setPie,\n    roomPdf,\n    setRoomPdf,\n    startTimes,\n    setStartTimes,\n    finishTimes,\n    setFinishTimes,\n    loadingPdf,\n    setLoadingPdf,\n    openModal,\n    rangeDatePicker,\n    setRangeDatePicker,\n    rangeDatePickerToday,\n    setRangeDatePickerToday,\n    globalReactDateRange,\n    setGlobalReactDateRange,\n  } = useContext(AuthContext);\n  const [project, setProject] = useState(projectData);\n  const [load, setLoad] = useState(false);\n  const [oldTime, setOldTime] = useState(\"\");\n  const { id } = useParams();\n  const [dataPdfGeneral, setDataPdfGeneral] = React.useState({\n    image: [graphic, pie],\n    data: { room: roomPdf },\n    startTime: startTimes,\n    finishTime: finishTimes,\n    nameProject: localStorage.getItem(\"nameProject\"),\n    userName: localStorage.getItem(\"name\"),\n    imageProject: localStorage.getItem(\"imgProject\"),\n    datePrint: localStorage.getItem(\"localTime\"),\n  });\n  const classes = useStyles();\n  const printRef = React.useRef();\n  const printRefP = React.useRef();\n\n  useEffect(() => {\n    if (oldTime) {\n      if (startTimes == oldTime) {\n        setFinishTimes(\"\");\n      }\n      if (startTimes == oldTime) {\n        setFinishTimes(\"\");\n      }\n    }\n  }, [oldTime]);\n\n  useEffect(() => {\n    if (graphic) {\n      imagePie();\n    }\n  }, [graphic]);\n\n  useEffect(() => {\n    if (pie) {\n      dataPdf();\n    }\n  }, [pie]);\n\n  useEffect(() => {\n    if (basePdf) {\n      decodePdf();\n    }\n  }, [basePdf]);\n\n  const decodePdf = () => {\n    const linkSource = `data:application/pdf;base64,${basePdf}`;\n    const downloadLink = document.createElement(\"a\");\n    const { start: initial, end: final } = handle_start_and_end_time({\n      startDate: globalReactDateRange[0]?.startDate,\n      endDate: globalReactDateRange[0]?.endDate,\n      key: \"selection\",\n    });\n    const fileName = `${t(\n      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.FILE_NAME\"\n    )} - ${localStorage.getItem(\"nameProject\")} - (${initial} - ${final}).pdf`;\n    downloadLink.href = linkSource;\n    downloadLink.download = fileName;\n    downloadLink.click();\n    /* let pdfWindow = window.open(\"\");\n    pdfWindow.document.write(\n      \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n        encodeURI(basePdf) +\n        \"'></iframe>\"\n    ); */\n    setLoadingPdf(false);\n    setGraphic(\"\");\n    setPie(\"\");\n    setBasePdf(\"\");\n  };\n\n  const imageGraphic = async () => {\n    try {\n      const element = printRef?.current;\n      if (element) {\n        const canvas = await html2canvas(element);\n        const data = canvas.toDataURL(\"image/jpg\");\n        setGraphic(data.slice(22));\n      } else {\n        setGraphic(\"\");\n        setLoadingPdf(false);\n      }\n    } catch (error) {\n      console.log(error);\n    }\n\n    //var cadena = data.slice(22);\n    /* if (typeof link.download === \"string\") {\n      link.href = data;\n      link.download = \"imgGraph.jpg\";\n      \n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }  */\n    /* imagePie() */\n  };\n\n  const imagePie = async () => {\n    try {\n      const elementTwo = printRefP.current;\n      if (elementTwo) {\n        const canvas = await html2canvas(elementTwo);\n        const data = canvas.toDataURL(\"image/jpg\");\n        setPie(data.slice(22));\n      } else {\n        setPie(\"\");\n        setLoadingPdf(false);\n      }\n    } catch (error) {\n      console.log(error);\n    }\n\n    /* else {\n    /* if (typeof link.download === \"string\") {\n      link.href = data;\n      setPie(data);\n      link.download = \"image.jpg\";\n\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    } */\n  };\n\n  async function generalPdf() {\n    setLoadingPdf(true);\n    try {\n      await imageGraphic();\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  // fechas para la descarga de PDF\n  let pdfFormatStartTime = globalReactDateRange[0]?.startDate?.getTime();\n  let pdfFormatEndTime = globalReactDateRange[0]?.endDate?.getTime();\n\n  function dataPdf() {\n    try {\n      pdfGenerator({\n        variables: {\n          image: [graphic, pie],\n          data: roomPdf,\n          startTime: String(pdfFormatStartTime),\n          finishTime: String(pdfFormatEndTime),\n          nameProject: dataPdfGeneral.nameProject,\n          userName: dataPdfGeneral.userName,\n          imageProject: dataPdfGeneral.imageProject,\n          datePrint: dataPdfGeneral.datePrint,\n        },\n      })\n        .then((resul) => {\n          setBasePdf(resul.data.pdfGeneralOcupationReport);\n        })\n        .catch((err) => {\n          console.log(err);\n        });\n    } catch (err) {\n      console.log(err);\n    }\n  }\n\n  const [getData, { loading, error, data }] = useLazyQuery(\n    GET_GENERAL_OCCUPATION_REPORT,\n    {\n      fetchPolicy: \"no-cache\",\n    }\n  );\n\n  React.useEffect(() => {\n    if (data) {\n      setProjectT(data.getGeneralOccupationReport);\n      setReport(data.getGeneralOccupationReport.rooms);\n      setDownloadGeneralOcupation(data.getGeneralOccupationReport.rooms);\n      setRoomPdf({\n        rooms: data.getGeneralOccupationReport.rooms,\n        project: data.getGeneralOccupationReport.project,\n      });\n    }\n  }, [data]);\n\n  React.useEffect(() => {\n    setLoad(true);\n    // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n    // let day_yesterday = new Date(yesterday_ms);\n    // let day_start = day_yesterday.getDate();\n    // let mounth_start = day_yesterday.getMonth() + 1;\n    // let year_start = day_yesterday.getFullYear();\n    // let yesterday = year_start + \"/\" + mounth_start + \"/\" + day_start;\n    if (openModal) {\n      const currentTime = new Date();\n      const currentHours = currentTime.getHours();\n      const projectTime = handleProjectTime(project?.start_time);\n      if (projectTime === 0) {\n        const yesterdayEpoch = currentTime.getTime() - 86400000;\n        setGlobalReactDateRange([\n          {\n            startDate: new Date(yesterdayEpoch),\n            endDate: addDays(new Date(yesterdayEpoch), 0),\n            key: \"selection\",\n          },\n        ]);\n\n        const { start: initial, end: final } = handle_start_and_end_time({\n          startDate: new Date(yesterdayEpoch),\n          endDate: addDays(new Date(yesterdayEpoch), 0),\n          key: \"selection\",\n        });\n\n        getData({\n          variables: {\n            ProjectId: parseInt(id),\n            start_time: initial,\n            end_time: final,\n          },\n        });\n      } else if (projectTime === 15) {\n        const yesterdayEpoch =\n          currentHours < projectTime\n            ? currentTime.getTime() - 172800000\n            : currentTime.getTime() - 86400000;\n\n        setGlobalReactDateRange([\n          {\n            startDate: new Date(yesterdayEpoch),\n            endDate: addDays(new Date(yesterdayEpoch), 0),\n            key: \"selection\",\n          },\n        ]);\n\n        const { start: initial, end: final } = handle_start_and_end_time({\n          startDate: new Date(yesterdayEpoch),\n          endDate: addDays(new Date(yesterdayEpoch), 0),\n          key: \"selection\",\n        });\n\n        getData({\n          variables: {\n            ProjectId: parseInt(id),\n            start_time: initial,\n            end_time: final,\n          },\n        });\n      }\n    }\n  }, [openModal]);\n\n  useEffect(() => {\n    if (globalReactDateRange) {\n      const { start: initial, end: final } = handle_start_and_end_time({\n        startDate: new Date(globalReactDateRange[0]?.startDate),\n        endDate: addDays(globalReactDateRange[0]?.endDate, 0),\n        key: \"selection\",\n      });\n      getData({\n        variables: {\n          ProjectId: parseInt(id),\n          start_time: initial,\n          end_time: final,\n        },\n      });\n    }\n  }, [globalReactDateRange]);\n\n  //if (loading || !projectT || !report) return <Loading />;\n  /* if (error) {\n    return (\n      <div style={{}}>\n        <Construction />\n      </div>\n    );\n  } */\n\n  // const handleDateChange = (date) => {\n  //   setSelectedDate(date);\n  //   setStart_time(date.getTime());\n  // };\n\n  // const handleDateChange2 = (date) => {\n  //   setSelectedDate2(date);\n  //   setEnd_time(date.getTime());\n  // };\n\n  // function msToTime(duration) {\n  //   var seconds = parseInt((duration / 1000) % 60),\n  //     minutes = parseInt((duration / (1000 * 60)) % 60),\n  //     hours = parseInt((duration / (1000 * 60 * 60)) % 24);\n\n  //   hours = hours < 10 ? \"0\" + hours : hours;\n  //   minutes = minutes < 10 ? \"0\" + minutes : minutes;\n  //   seconds = seconds < 10 ? \"0\" + seconds : seconds;\n\n  //   return hours + \":\" + minutes;\n  // }\n  // function total(array) {\n  //   var Totales = {\n  //       watts: 0,\n  //       consumoTotal: 0,\n  //       consumoEficiente: 0,\n  //       consumoIneficiente: 0,\n  //     },\n  //     i = 0;\n  //   for (i = 0; i < array.length; i++) {\n  //     Totales.watts += round(array[i].watts);\n  //     Totales.consumoTotal += round(array[i].total_consumption);\n  //     Totales.consumoEficiente += round(array[i].efficient_consumption);\n  //     Totales.consumoIneficiente += round(array[i].inefficient_consumption);\n  //   }\n\n  //   return Totales;\n  // }\n\n  function round(num, decimales = 1) {\n    var signo = num >= 0 ? 1 : -1;\n    num = num * signo;\n    if (decimales === 0)\n      //con 0 decimales\n      return signo * Math.round(num);\n    // round(x * 10 ^ decimales)\n    num = num.toString().split(\"e\");\n    num = Math.round(\n      +(num[0] + \"e\" + (num[1] ? +num[1] + decimales : decimales))\n    );\n    // x * 10 ^ (-decimales)\n    num = num.toString().split(\"e\");\n    return signo * (num[0] + \"e\" + (num[1] ? +num[1] - decimales : -decimales));\n  }\n\n  // const handleQueryReport = () => {\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let day_start = dateReport[0].startDate.getDate();\n  //   let mounth_start = dateReport[0].startDate.getMonth() + 1;\n  //   let year_start = dateReport[0].startDate.getFullYear();\n  //   let day_end = dateReport[0].endDate.getDate();\n  //   let mounth_end = dateReport[0].endDate.getMonth() + 1;\n  //   let year_end = dateReport[0].endDate.getFullYear();\n  //   var day_time_zone = year_start + \"/\" + mounth_start + \"/\" + day_start;\n\n  //   var day_time_end_zone = year_end + \"/\" + mounth_end + \"/\" + day_end;\n  //   var param = dateReport[0].startDate.toString().substring(0, 16) + \"00:00:00 GMT\";\n  //   var param_end = dateReport[0].endDate.toString().substring(0, 16) + \"23:59:59 GMT\";\n\n  //   var tempPara =\n  //     new Date(param).getTime() - parseInt(project, 10) * HORA_EN_MILISEGUNDO;\n  //   var tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   //openDateCusom\n  //   setOpenDateCustom(false);\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //datePdf\n  //   setStartTimes(day_time_zone);\n  //   setOldTime(day_time_end_zone);\n  //   setFinishTimes(day_time_end_zone);\n  //   getData({\n  //     variables: {\n  //       ProjectId: parseInt(id),\n  //       start_time: String(day_time_zone),\n  //       end_time: String(day_time_end_zone),\n  //     },\n  //   });\n  // };\n\n  // function percentege(data, total) {\n  //   if (total == 0) {\n  //     return 0;\n  //   }\n  //   return Number.parseFloat((data / total) * 100).toFixed(1);\n  // }\n\n  // const handlerBack = () => {\n  //   const previusDay = rangeDatePicker[0].startDate.getTime() - 86400000;\n  //   back(id, project, getData, rangeDatePickerToday, setRangeDatePickerToday);\n  //   setRangeDatePicker([\n  //     {\n  //       startDate: new Date(previusDay),\n  //       endDate: new Date(previusDay),\n  //       key: \"selection\",\n  //     },\n  //   ]);\n  // };\n\n  // const handlerNext = () => {\n  //   const nextDay = rangeDatePicker[0].startDate.getTime() + 86400000;\n  //   next(id, project, getData, rangeDatePickerToday, setRangeDatePickerToday);\n  //   setRangeDatePicker([\n  //     {\n  //       startDate: new Date(nextDay),\n  //       endDate: new Date(nextDay),\n  //       key: \"selection\",\n  //     },\n  //   ]);\n  // };\n\n  const handleProjectTime = (time) => {\n    if (time === \"0:00\" || time === \"00:00\") {\n      return 0;\n    } else if (time === \"15:00\") {\n      return 15;\n    }\n  };\n\n  return (\n    <Modal\n      handleClick={generalPdf}\n      timerProject={project?.start_time}\n      title={`${localStorage.getItem(\"nameProject\")} - ${t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.HEADER_TITLE\"\n      )}`}\n    >\n      {loading || !projectT || !report ? (\n        <Loading />\n      ) : projectT?.rooms.length !== 0 ? (\n        <div>\n          {/* <DatePicker\n            type=\"range\"\n            component={\"generalOccupation\"}\n            handleQuery={() => handleQueryReport(id, rangeDatePicker, getData)}\n            back={handlerBack}\n            next={handlerNext}\n            selectOption={{ changeInside: false, stateRoomId: 0 }}\n            timerProject={project?.start_time}\n          /> */}\n\n          <ReactDateRangePicker\n            selectTypeRange=\"m\"\n            closingTime={handleProjectTime(project?.start_time)}\n            closingType=\"l\"\n          />\n\n          {report && (\n            <div>\n              {projectT && projectT?.rooms.length != 0 && (\n                <div className=\"__container_graphic_report_general_ocupation_title__\">\n                  <span className=\"__icon_report\">\n                    <i className=\"fas fa-chart-bar\"></i>\n                  </span>\n                  {t(\n                    \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENCY_GRAPHIES\"\n                  )}\n                </div>\n              )}\n            </div>\n          )}\n          {/* {projectT.rooms.length == 0 ? (\n            <div className=\"__container_msg_report_empty__\">\n              <span>\n                <i class=\"far fa-calendar-alt\"></i>{\" \"}\n                {t(\n                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.USAGE_INFO\"\n                )}\n              </span>\n            </div>\n          ) : (\n            <></>\n          )} */}\n          {/* <TableContainer component={Paper}  */}\n          {report && (\n            <div>\n              {projectT && projectT?.rooms.length != 0 && (\n                <div className=\"__graphic_report_ocupation_general_container__\">\n                  <div ref={printRef}>\n                    <div className=\"__graphic_pie_table_ocupation_general__\">\n                      <HighchartsReact\n                        // constructorType=\"stockChart\"\n                        highcharts={Highcharts}\n                        options={{\n                          chart: {\n                            type: \"column\",\n                          },\n                          title: {\n                            text: \"\",\n                          },\n\n                          xAxis: {\n                            categories: projectT?.categoriesOccupationReport,\n                          },\n                          yAxis: {\n                            min: 0,\n                            title: {\n                              text: \"Total consumo (Kw h)\",\n                            },\n                            stackLabels: {\n                              enabled: true,\n                              style: {\n                                fontWeight: \"bold\",\n                                color:\n                                  // theme\n                                  (Highcharts?.defaultOptions?.title?.style &&\n                                    Highcharts?.defaultOptions?.title?.style\n                                      ?.color) ||\n                                  \"gray\",\n                              },\n                            },\n                          },\n                          // legend: {\n                          //   align: \"right\",\n                          //   x: 0,\n                          //   verticalAlign: \"top\",\n                          //   y: 0,\n                          //   floating: false,\n                          //   backgroundColor:\n                          //     Highcharts.defaultOptions.legend.backgroundColor ||\n                          //     \"white\",\n                          //   borderColor: \"#CCC\",\n                          //   borderWidth: 1,\n                          //   shadow: false,\n                          // },\n                          tooltip: {\n                            headerFormat: \"<b>{point.x}</b><br/>\",\n                            pointFormat:\n                              \"{series.name}: {point.y}<br/>Total: {point.stackTotal}\",\n                          },\n                          plotOptions: {\n                            column: {\n                              stacking: \"normal\",\n                              maxPointWidth: 50,\n                              dataLabels: {\n                                enabled: false,\n                              },\n                            },\n                          },\n                          series: [\n                            projectT?.graphOcupationReport[0],\n                            projectT?.graphOcupationReport[1],\n                          ],\n                          credits: {\n                            enabled: false,\n                          },\n                        }}\n                      />\n                    </div>\n                  </div>\n                  <div ref={printRefP}>\n                    <div className=\"__graphic_pie_table_ocupation_general__\">\n                      <HighchartsReact\n                        // constructorType=\"stockChart\"\n                        highcharts={Highcharts}\n                        options={{\n                          chart: {\n                            zoomType: \"x\",\n                            plotBackgroundColor: null,\n                            plotBorderWidth: null,\n                            plotShadow: false,\n                            type: \"pie\",\n                          },\n                          title: {\n                            text: \"\",\n                          },\n                          tooltip: {\n                            pointFormat:\n                              \"{series.name}: <b>{point.percentage:.1f}%</b>\",\n                          },\n                          accessibility: {\n                            point: {\n                              valueSuffix: \"%\",\n                            },\n                          },\n                          plotOptions: {\n                            pie: {\n                              size: 200,\n                              allowPointSelect: true,\n                              cursor: \"pointer\",\n                              dataLabels: {\n                                enabled: true,\n                                format:\n                                  \"<b>{point.name}</b>: {point.percentage:.1f} %\",\n                              },\n                              //   showInLegend: true\n                            },\n                          },\n                          series: [projectT?.GraphPie[0]],\n                          credits: {\n                            enabled: false,\n                          },\n                        }}\n                      />\n                    </div>\n                  </div>\n                </div>\n              )}\n\n              <div className=\"__table_container_report_general_total__\">\n                <div className=\"__title_energy\">\n                  <span className=\"__icon_report\">\n                    <i className=\"fas fa-chart-bar\"></i>\n                  </span>\n                  {t(\n                    \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.GENERAL_PROJECT_REPORT_TABLE_TITLE\"\n                  )}\n                </div>\n                <Table className={classes.table} aria-label=\"caption table\">\n                  <TableHead>\n                    <TableRow>\n                      <StyledTableCell align=\"center\"></StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.TOTAL_CONSUMPTION\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT_CONSUMPTION\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE_CONSUMPTION\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE\"\n                        )}\n                      </StyledTableCell>\n                      <StyledTableCell align=\"center\">\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.PERCENTAGE\"\n                        )}\n                      </StyledTableCell>\n                    </TableRow>\n                  </TableHead>\n\n                  <TableBody>\n                    <TableRow>\n                      <StyledTableCell2\n                        component=\"th\"\n                        align=\"center\"\n                        scope=\"row\"\n                      >\n                        Total\n                      </StyledTableCell2>\n                      <TableCell component=\"th\" align=\"center\" scope=\"row\">\n                        {round(projectT?.project[0]?.total.total_consumption)}\n                        kW h\n                      </TableCell>\n                      <StyledTableCell2\n                        component=\"th\"\n                        align=\"center\"\n                        scope=\"row\"\n                      >\n                        {round(\n                          projectT?.project[0]?.total?.efficient_consumption\n                        )}\n                        kW h\n                      </StyledTableCell2>\n                      <StyledTableCell2 align=\"center\">\n                        {round(projectT?.project[0]?.total?.efficient_percent)}%\n                      </StyledTableCell2>\n                      <StyledTableCell3 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.total?.inefficient_consumption\n                        )}\n                        kW h\n                      </StyledTableCell3>\n                      <StyledTableCell3 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.total?.inefficient_percent\n                        )}\n                        %\n                      </StyledTableCell3>\n                      <StyledTableCell2 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.total?.porcent_time_ocupation\n                        )}\n                        %\n                      </StyledTableCell2>\n                    </TableRow>\n                    <TableRow>\n                      <StyledTableCell2\n                        component=\"th\"\n                        align=\"center\"\n                        scope=\"row\"\n                      >\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AVERAGE_PER_DAY\"\n                        )}\n                      </StyledTableCell2>\n                      <TableCell component=\"th\" align=\"center\" scope=\"row\">\n                        {round(\n                          projectT?.project[0]?.averageDayProject\n                            ?.total_consumption\n                        )}\n                        kW h /\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n                        )}\n                      </TableCell>\n                      <StyledTableCell2\n                        component=\"th\"\n                        align=\"center\"\n                        scope=\"row\"\n                      >\n                        {round(\n                          projectT?.project[0]?.averageDayProject\n                            ?.efficient_consumption\n                        )}\n                        kW h /\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n                        )}\n                      </StyledTableCell2>\n                      <StyledTableCell2 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.averageDayProject\n                            ?.efficient_percent\n                        )}\n                        %\n                      </StyledTableCell2>\n                      <StyledTableCell3 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.averageDayProject\n                            ?.inefficient_consumption\n                        )}\n                        kW h /\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n                        )}\n                      </StyledTableCell3>\n                      <StyledTableCell3 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.averageDayProject\n                            ?.inefficient_percent\n                        )}\n                        %\n                      </StyledTableCell3>\n                      <StyledTableCell2 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.averageDayProject\n                            ?.porcent_time_ocupation\n                        )}\n                        %\n                      </StyledTableCell2>\n                    </TableRow>\n\n                    <TableRow>\n                      <StyledTableCell2\n                        component=\"th\"\n                        align=\"center\"\n                        scope=\"row\"\n                      >\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AVERAGE_PER_DAY_IN_ROOM\"\n                        )}\n                      </StyledTableCell2>\n                      <TableCell component=\"th\" align=\"center\" scope=\"row\">\n                        {round(\n                          projectT?.project[0]?.averageDayRoom\n                            ?.total_consumption\n                        )}\n                        kW h /\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n                        )}\n                      </TableCell>\n                      <StyledTableCell2\n                        component=\"th\"\n                        align=\"center\"\n                        scope=\"row\"\n                      >\n                        {round(\n                          projectT?.project[0]?.averageDayRoom\n                            ?.efficient_consumption\n                        )}\n                        kW h /\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n                        )}\n                      </StyledTableCell2>\n                      <StyledTableCell2 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.averageDayRoom\n                            ?.efficient_percent\n                        )}\n                        %\n                      </StyledTableCell2>\n                      <StyledTableCell3 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.averageDayRoom\n                            ?.inefficient_consumption\n                        )}\n                        kW h /\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n                        )}\n                      </StyledTableCell3>\n                      <StyledTableCell3 align=\"center\">\n                        {round(\n                          projectT?.project[0]?.averageDayRoom\n                            ?.inefficient_percent\n                        )}\n                        %\n                      </StyledTableCell3>\n                      <StyledTableCell2\n                        component=\"th\"\n                        align=\"center\"\n                        scope=\"row\"\n                      >\n                        {round(\n                          projectT?.project[0]?.averageDayRoom\n                            ?.porcent_time_ocupation\n                        )}\n                        %\n                      </StyledTableCell2>\n                    </TableRow>\n                  </TableBody>\n                </Table>\n              </div>\n              <br></br>\n              {projectT.rooms.length != 0 && (\n                <div className=\"__areas_report_ocupaction_general__\">\n                  <span>\n                    <hr></hr>\n                  </span>\n                  <span>\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AREAS\"\n                    )}\n                  </span>\n                  <span>\n                    <hr />\n                  </span>\n                </div>\n              )}\n\n              <br></br>\n\n              {report.map((report) => (\n                <>\n                  {report.visible && (\n                    <div className=\"_report_energy\">\n                      <div className=\"_container_energy\">\n                        <div className=\"__title_energy\">\n                          <span className=\"__icon_report\">\n                            <i className=\"fas fa-chart-bar\"></i>\n                          </span>\n                          {report.alias}\n                        </div>\n                        <Table\n                          className={classes.table}\n                          aria-label=\"caption table\"\n                        >\n                          <TableHead>\n                            <TableRow>\n                              <StyledTableCell>\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DATE\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.TOTAL_CONSUMPTION\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT_CONSUMPTION\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE_CONSUMPTION\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.PERCENTAGE\"\n                                )}\n                              </StyledTableCell>\n                            </TableRow>\n                          </TableHead>\n\n                          <TableBody>\n                            {report.range.map((row) => (\n                              <TableRow key={row.date}>\n                                <TableCell component=\"th\" scope=\"row\">\n                                  {row.date}\n                                </TableCell>\n                                <TableCell\n                                  component=\"th\"\n                                  align=\"center\"\n                                  scope=\"row\"\n                                >\n                                  {round(row?.total_consumption)} kW h\n                                </TableCell>\n                                <StyledTableCell2 align=\"center\">\n                                  {round(row?.efficient_consumption)} kW h\n                                </StyledTableCell2>\n                                <StyledTableCell2 align=\"center\">\n                                  {round(row?.efficient_percent)} %\n                                </StyledTableCell2>\n                                <StyledTableCell3 align=\"center\">\n                                  {round(row?.inefficient_consumption)} kW h\n                                </StyledTableCell3>\n                                <StyledTableCell3 align=\"center\">\n                                  {round(row?.inefficient_percent)} %\n                                </StyledTableCell3>\n                                <TableCell align=\"center\">\n                                  {round(row?.porcent_time_ocupation)} %\n                                </TableCell>\n                              </TableRow>\n                            ))}\n                            <TableRow>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableCell2\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.FINAL_RESULT\"\n                                )}\n                              </StyledTableCell2>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                            </TableRow>\n                            <TableRow>\n                              <StyledTableCell className=\"__color_title_reportOcupation__\"></StyledTableCell>\n                              <StyledTableCell\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.TOTAL_CONSUMPTION\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT_CONSUMPTION\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE_CONSUMPTION\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.PERCENTAGE\"\n                                )}\n                              </StyledTableCell>\n                            </TableRow>\n                            <TableRow>\n                              <TableCell align=\"center\"></TableCell>\n\n                              <TableCell align=\"center\">\n                                {round(report?.total?.total_consumption)} kW hm\n                              </TableCell>\n                              <StyledTableCell2 align=\"center\">\n                                {round(report?.total?.efficient_consumption)} kW\n                                h\n                              </StyledTableCell2>\n                              <StyledTableCell2 align=\"center\">\n                                {round(report?.total?.efficient_percent)} %\n                              </StyledTableCell2>\n                              <StyledTableCell3 align=\"center\">\n                                {round(report?.total?.inefficient_consumption)}\n                                kW h\n                              </StyledTableCell3>\n                              <StyledTableCell3 align=\"center\">\n                                {round(report?.total?.inefficient_percent)} %\n                              </StyledTableCell3>\n                              <TableCell align=\"center\"></TableCell>\n                            </TableRow>\n                            <TableRow>\n                              {\" \"}\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableCell2\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              >\n                                {t(\n                                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AVERAGE\"\n                                )}\n                              </StyledTableCell2>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                              <StyledTableTitle\n                                align=\"center\"\n                                className=\"__color_title_reportOcupation__\"\n                              ></StyledTableTitle>\n                            </TableRow>\n                            <TableRow>\n                              <TableCell align=\"center\"></TableCell>\n\n                              <TableCell align=\"center\">\n                                {round(report.average.total_consumption)} kW h\n                              </TableCell>\n                              <StyledTableCell2 align=\"center\">\n                                {round(report?.average?.efficient_consumption)}\n                                kW h\n                              </StyledTableCell2>\n                              <StyledTableCell2 align=\"center\">\n                                {round(report?.average?.efficient_percent)} %\n                              </StyledTableCell2>\n                              <StyledTableCell3 align=\"center\">\n                                {round(\n                                  report?.average?.inefficient_consumption\n                                )}\n                                kW h\n                              </StyledTableCell3>\n                              <StyledTableCell3 align=\"center\">\n                                {round(report?.average?.inefficient_percent)} %\n                              </StyledTableCell3>\n                              <TableCell align=\"center\">\n                                {round(report?.average?.porcent_time_ocupation)}\n                                %\n                              </TableCell>\n                            </TableRow>\n                          </TableBody>\n                        </Table>\n                      </div>\n                    </div>\n                  )}\n                </>\n              ))}\n            </div>\n          )}\n        </div>\n      ) : (\n        <span\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            height: \"-webkit-fill-available\",\n            fontSize: \"2rem\",\n            gap: \"8px\",\n          }}\n        >\n          <i class=\"fas fa-exclamation-triangle\"></i>\n          {t(\n            \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.NO_DATA\"\n          )}\n        </span>\n      )}\n      <MessageError\n        messageText={t(\n          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.MESSAGE_ERROR\"\n        )}\n      />\n    </Modal>\n  );\n};\n\nexport default GeneralOccupation;\n","import React, { useEffect } from \"react\";\r\nimport locations from \"../../assets/location.png\";\r\nimport PlaylistAddCircleIcon from \"@mui/icons-material/PlaylistAddCircle\";\r\nimport {\r\n  color_status_project,\r\n  calc_controler_on_off,\r\n  getTimeGlobal,\r\n  weather_convert,\r\n} from \"../../utils/helpers\";\r\nimport icon_test from \"../../assets/3d.png\";\r\n// multilanguage\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst ProjectCardAreaControl = ({ data, AddController }) => {\r\n  const { t } = useTranslation();\r\n  const [wea, setWea] = React.useState();\r\n  const location = useLocation();\r\n  const isControllerView = /^\\/app\\/controllers\\/\\d+$/.test(location.pathname);\r\n\r\n  useEffect(() => {\r\n    window.scroll({\r\n      top: 0,\r\n    });\r\n  }, []);\r\n\r\n  return (\r\n    <>\r\n      <div className=\"__area_container_info_general__\">\r\n        <div\r\n          className={`__area_container_name__ ${\r\n            data?.name?.length >= 32\r\n              ? \"__areas_name_max_32__\"\r\n              : \"__areas_name_min_32__\"\r\n          }`}\r\n        >\r\n          {data?.name}\r\n        </div>\r\n        <div className=\"__area_container_location__\">\r\n          <span>\r\n            <img src={locations} alt=\"location\" width=\"20\" height=\"20\" />{\" \"}\r\n            <span>{`${data?.city}, ${data?.country}`}</span>\r\n          </span>\r\n        </div>\r\n        <div className=\"__area_container_status__\">\r\n          <span\r\n            className={`__area_container_status_number__ ${color_status_project(\r\n              data?.numControllers,\r\n              data?.offlineControllers\r\n            )}`}\r\n          >\r\n            {`${calc_controler_on_off(\r\n              data?.numControllers,\r\n              data?.offlineControllers\r\n            )}${t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.ONLINE\")}`}\r\n          </span>\r\n          {isControllerView && AddController}\r\n        </div>\r\n      </div>\r\n      <div className=\"__area_container_info_status__\">\r\n        <div className=\"__area_container_info_data__\">\r\n          <span>\r\n            <span>{data?.numControllers}</span>\r\n            {\" / \"}\r\n            <span\r\n              className={`${\r\n                data?.offlineControllers > 0\r\n                  ? \"__area_container_info_data_offline__\"\r\n                  : false\r\n              }`}\r\n            >\r\n              {data?.offlineControllers}\r\n            </span>\r\n          </span>\r\n        </div>\r\n\r\n        <div className=\"__area_container_info_data__\">\r\n          <span>\r\n            <span>{data?.numRooms}</span>\r\n            {\" / \"}\r\n            <span\r\n              className={`${\r\n                data?.offlineRooms > 0\r\n                  ? \"__area_container_info_data_offline__\"\r\n                  : false\r\n              }`}\r\n            >\r\n              {data?.offlineRooms}\r\n            </span>\r\n          </span>\r\n        </div>\r\n\r\n        <div className=\"__area_container_info_data__\">\r\n          <span>\r\n            <span>{data?.numDevices}</span>\r\n            {\" / \"}\r\n            <span\r\n              className={`${\r\n                data?.numDevices > 0\r\n                  ? \"__area_container_info_data_offline__\"\r\n                  : false\r\n              }`}\r\n            >\r\n              {data?.offlineDevices}\r\n            </span>\r\n          </span>\r\n        </div>\r\n        <div className=\"__area_container_info_names__\">\r\n          {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.CONTROLLERS\")}\r\n        </div>\r\n        <div className=\"__area_container_info_names__\">\r\n          {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.AREAS\")}\r\n        </div>\r\n        <div className=\"__area_container_info_names__\">\r\n          {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.DEVICES\")}\r\n        </div>\r\n      </div>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default ProjectCardAreaControl;\r\n","//React Hooks\nimport React from \"react\";\n\n//Material UI\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport Battery40Icon from \"@material-ui/icons/Battery30\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\n\n//Helper Functions\nimport {\n  convertDateInFailsDevices,\n  changeColorIconBatteryLevel,\n} from \"../../utils/helpers\";\n\n//Images\nimport { Devices } from \"../../constants/devices_types\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst DeviceFails = ({ data }) => {\n  const filteredDevices = data?.Device?.filter(\n    (item) =>\n      item?.Category?.name?.toLowerCase() !== \"generic\" &&\n      item?.Category?.name?.toLowerCase() !== \"controlador de escena\" &&\n      item?.Category?.name?.toLowerCase() !== \"generic i/o repeater\"\n  );\n  const { t } = useTranslation();\n  // return\n  const img_devices_fails = {\n    bombilla_regulable: Devices.BINARY_LIGHT_OFF,\n    bloqueo_de_puerta: Devices.DOOR_DESBLOQUEADO,\n    bombilla_regulable_de_pared: Devices.BINARY_LIGHT_OFF,\n    door_lock: Devices.DOOR_DESBLOQUEADO,\n    hvac: Devices.THERMOSTAT_DEVICE_DEFAULT,\n    interruptor: Devices.BINARY_LIGHT_OFF,\n    interruptor_de_pared: Devices.BINARY_LIGHT_OFF,\n    medidor_de_energia: Devices.METER_DEFAULT,\n    sensor_de_movimiento: Devices.MOTION_SENSOR,\n    sensor_de_puerta: Devices.DOOR_WINDOW,\n    security_sensor: Devices.DOOR_WINDOW,\n    sirena: Devices.SIREN_OFF,\n    switch: Devices.BINARY_LIGHT_OFF,\n    termostato: Devices.THERMOSTAT_DEVICE_DEFAULT,\n    ventana: Devices.CURTAIN,\n  };\n\n  const imgTraductor = (i) => {\n    const __img__ = i?.Category?.name?.toLowerCase().replace(/\\s/g, \"_\");\n    // console.log(\"__img__:\", __img__);\n    return img_devices_fails[__img__];\n  };\n\n  const batteryIcon = (lv) => {\n    if (lv >= 1 && lv <= 20) {\n      return <Battery20Icon />;\n    } else if (lv > 20 && lv <= 40) {\n      return <Battery40Icon />;\n    } else if (lv > 40 && lv <= 60) {\n      return <Battery60Icon />;\n    } else if (lv > 60 && lv <= 80) {\n      return <Battery80Icon />;\n    } else {\n      return <Battery90Icon />;\n    }\n  };\n\n  const translatingFailedDevices = (device) => {\n    if (device === \"ventana\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.WINDOWS\"\n      );\n    } else if (device === \"sensor de puerta\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DOOR_SENSOR\"\n      );\n    } else if (device === \"interruptor\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.SWITCH\"\n      );\n    } else if (device === \"bombilla regulable de pared\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.ADJUSTABLE_WALL_LIGHT\"\n      );\n    } else if (device === \"termostato\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.THERMOSTAT\"\n      );\n    } else if (device === \"bombilla regulable\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.ADJUSTABLE_LIGHT\"\n      );\n    } else if (device === \"sensor de movimiento\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.MOVEMENT_SENSOR\"\n      );\n    } else if (device === \"bloqueo de puerta\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.LOCK_DOOR\"\n      );\n    } else if (device === \"sensor uv\") {\n      return t(\n        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.UV_SENSOR\"\n      );\n    } else {\n      return device;\n    }\n  };\n\n  return (\n    <div className=\"__DFPC_DF_content__\">\n      <div className=\"__place__\">{data?.name}</div>\n      <div className=\"__DFPC_DF_container_devices__\">\n        {filteredDevices?.map((i, key) => (\n          <div key={key} className=\"__info__\">\n            <img src={`${imgTraductor(i)}`} alt=\"Img\" />\n            <div className=\"__description_content__\">\n              <div className=\"__title_category__\">\n                {translatingFailedDevices(\n                  i?.Category?.name?.toLowerCase().replace(/_/g, \" \")\n                )}\n              </div>\n              <div className=\"__title_description__\">{i?.alias}</div>\n              {i?.variables?.BatteryLevel &&\n              i?.variables?.BatteryLevel === \"1\" ? (\n                <div className=\"__BaterryLevel_on__\">\n                  <div className=\"battery_device_level\">\n                    <strong>\n                      {t(\n                        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.BATTERY_LEVEL\"\n                      )}\n                    </strong>\n                    <span className=\"battery_device_averange\">\n                      {i?.variables?.BatteryLevel}%\n                    </span>\n                    <span\n                      className={`battery_device_level_icon ${changeColorIconBatteryLevel(\n                        i?.variables?.BatteryLevel\n                      )}`}\n                    >\n                      {batteryIcon(i?.variables?.BatteryLevel)}\n                    </span>\n                  </div>\n                </div>\n              ) : i?.variables?.FailureDate ? (\n                <div className=\"__date_offline__\">\n                  <span>\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DATE_FAILURE_DESCRIPTION\"\n                    )}\n                  </span>\n                  {convertDateInFailsDevices(i?.variables?.FailureDate)}\n                </div>\n              ) : (\n                <div className=\"__date_offline__\">\n                  {t(\n                    \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.NO_INFO\"\n                  )}\n                </div>\n              )}\n            </div>\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default DeviceFails;\n","import React, { useEffect, useContext } from \"react\";\nimport { GET_REPORT_FAILS_BY_PROJECT } from \"../../controllers/reportController\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading from \"../loading/Loading\";\nimport { useQuery } from \"@apollo/client\";\n\n//components\nimport DeviceFails from \"./DeviceFails\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalReportFailsByProject = ({ projectId }) => {\n  const { t } = useTranslation();\n  const [filterData, setFilterData] = React.useState(null);\n  const { deviceFailsCount, setDeficeFailsCount } = useContext(AuthContext);\n\n  const { data, loading } = useQuery(GET_REPORT_FAILS_BY_PROJECT, {\n    variables: {\n      ProjectId: projectId,\n    },\n    fetchPolicy: \"network-only\",\n  });\n\n  const filteringCorrectDevices = data?.getFailuresReport?.filter(\n    (i) =>\n      i?.Device?.filter(\n        (i) =>\n          i?.Category?.name?.toLowerCase() !== \"generic\" &&\n          i?.Category?.name?.toLowerCase() !== \"controlador de escena\" &&\n          i?.Category?.name?.toLowerCase() !== \"generic i/o repeater\"\n      )?.length > 0\n  );\n\n  useEffect(() => {\n    if (!loading) {\n      setDeficeFailsCount(filteringCorrectDevices.length);\n    }\n  }, []);\n\n  const __title__ = (lng) => {\n    return lng > 1\n      ? `${t(\n          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DEVICES_FAILING_DESCRIPTION\"\n        )} ${lng}`\n      : `${t(\n          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DEVICE_FAILING\"\n        )}`;\n  };\n\n  const handleChange = (e) => {\n    const value = e.target.value;\n    if (value === \"all\") return setFilterData(null);\n    const newData = [];\n    newData.push(filteringCorrectDevices?.filter((i) => i.name == value));\n    return setFilterData(newData[0]);\n  };\n\n  if (loading) {\n    return <Loading />;\n  }\n\n  return (\n    <div className=\"__DeviceFailsByProjectContainer__\">\n      {!filteringCorrectDevices || filteringCorrectDevices.length === 0 ? (\n        <div className=\"_empty_data_\">\n          {t(\n            \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.NO_DATA\"\n          )}\n        </div>\n      ) : (\n        <>\n          <div className=\"__DFPC_Title_Filter__\">\n            <div className=\"__DFPC_Title__\">\n              {__title__(\n                filteringCorrectDevices\n                  .map((i) => i.Device.length)\n                  .reduce((a, b) => a + b)\n              )}\n            </div>\n            <div className=\"__DFPC_Select__\">\n              <label>\n                {t(\n                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.FILTER_LABEL\"\n                )}{\" \"}\n              </label>\n              <select name=\"filter_project\" onChange={handleChange}>\n                <option value={\"all\"}>\n                  {t(\n                    \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.ALL\"\n                  )}\n                </option>\n                {filteringCorrectDevices.map((i, key) => (\n                  <option key={key} value={i.name}>\n                    {i.name}\n                  </option>\n                ))}\n              </select>\n            </div>\n          </div>\n          {filterData === null ? (\n            <div className=\"__DFPC_DeviceFailsContainer__\">\n              {filteringCorrectDevices.map((i) => (\n                <DeviceFails data={i} />\n              ))}\n            </div>\n          ) : (\n            <div className=\"__DFPC_DeviceFailsContainer__\">\n              {filterData.map((i) => (\n                <DeviceFails data={i} />\n              ))}\n            </div>\n          )}\n        </>\n      )}\n    </div>\n  );\n};\n\nexport default ModalReportFailsByProject;\n","import React from \"react\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Slide from \"@material-ui/core/Slide\";\n\n//Components\nimport ModalReportFailsByProject from \"./ModalReportFailsByProject\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst ReportFailsByProject = ({\n  projectData,\n  openReportFailsByProject,\n  handleReportFailsByProject,\n}) => {\n  const { t } = useTranslation();\n  return (\n    <Dialog\n      maxWidth=\"md\"\n      fullWidth\n      open={openReportFailsByProject}\n      onClose={handleReportFailsByProject}\n      TransitionComponent={Transition}\n    >\n      <div className=\"_ReportFailsByProjec_container_\">\n        <div className=\"_ReportFailsByProjec_container_close_\">\n          <span onClick={handleReportFailsByProject}>\n            <i class=\"fas fa-times\"></i>\n          </span>\n        </div>\n        <div className=\"_ReportFailsByProjec_container_name_\">\n          <span>\n            {`${projectData?.name} - ${t(\n              \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.MODAL_HEADER_TITLE\"\n            )}`}\n          </span>\n        </div>\n        <div className=\"_ReportFailsByProjec_container_download_\">\n          {/* <span>\n            Descargar <i class='fas fa-arrow-down'></i>\n          </span> */}\n        </div>\n      </div>\n      <ModalReportFailsByProject projectId={projectData.id} />\n    </Dialog>\n  );\n};\n\nexport default ReportFailsByProject;\n","import React, { useState, useContext } from \"react\";\n\n//Material UI components\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport FormControl from \"@mui/material/FormControl\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@mui/material/Select\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//components\nimport Loading from \"../../../../components/loading/Loading\";\n\n//Queries\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  GET_ALL_CONTROLLERS,\n  VIRTUAL_CONTROLLER_CREATE_ROOM,\n} from \"../../../../controllers/roomControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst VirtualRoomModal = (props) => {\n  const { open, setOpenVirtualRoomModal, projectId, refetchArea } = props;\n  const { t } = useTranslation();\n  const [createRoom] = useMutation(VIRTUAL_CONTROLLER_CREATE_ROOM);\n  const { data, loading, refetch } = useQuery(GET_ALL_CONTROLLERS, {\n    variables: {\n      projectId: projectId,\n    },\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: true,\n  });\n  const customGreen = \"#acf6ac\";\n  const theme = createTheme({\n    palette: {\n      success: {\n        main: customGreen,\n      },\n    },\n  });\n\n  const [areaName, setAreaName] = useState(\"\");\n  const [virtualControllerId, setVirtualControllerId] = useState(\"\");\n\n  const handleCloseVirtualRoomModal = () => {\n    setOpenVirtualRoomModal(false);\n  };\n\n  const handleInputAreaName = (event) => {\n    const value = event.target.value;\n    const regex = /^[a-zA-ZáéíóúñÁÉÍÓÚÑ0-9 ]+$/;\n\n    if (regex.test(value) || value === \"\") {\n      setAreaName(value);\n    } else {\n    }\n  };\n\n  const handleVirtualControllerInput = (code) => {\n    setVirtualControllerId(code);\n  };\n\n  async function createRoomWithVirtualController() {\n    if (areaName && virtualControllerId) {\n      try {\n        createRoom({\n          variables: {\n            data: [\n              {\n                controllerId: virtualControllerId,\n                name: areaName,\n                projectId: projectId,\n              },\n            ],\n          },\n        });\n        setTimeout(() => {\n          refetchArea();\n          handleCloseVirtualRoomModal();\n        }, 2000);\n      } catch (err) {\n        console.error(\"Excepción:\", err);\n      }\n    } else {\n    }\n  }\n\n  return (\n    <>\n      <Dialog\n        open={open}\n        // onClose={handleClose}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"35%\",\n            height: \"auto\",\n            [theme.breakpoints.down(\"md\")]: {\n              width: \"45%\",\n            },\n            [theme.breakpoints.down(\"sm\")]: {\n              width: \"90%\",\n            },\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            lineHeight: \"2.6\",\n            padding: \"5px 5px 5px 40px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"auto\",\n              fontWeight: \"bold\",\n            }}\n          >\n            {t(\n              \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.TITLE\"\n            )}\n          </span>\n          <IconButton onClick={handleCloseVirtualRoomModal}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              // justifyContent: \"center\",\n              gap: \"25px\",\n              width: \"90%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"18px\",\n              marginTop: \"20px\",\n            }}\n          >\n            <TextField\n              id=\"outlined-basic\"\n              label={t(\n                \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.AREA_NAME\"\n              )}\n              variant=\"outlined\"\n              size=\"small\"\n              InputProps={{\n                sx: { borderRadius: \"8px\", width: \"100%\" },\n              }}\n              onChange={handleInputAreaName}\n              value={areaName}\n              required={true}\n              color={areaName ? \"primary\" : \"error\"}\n            />\n\n            <FormControl fullWidth size=\"small\">\n              <InputLabel\n                id=\"demo-simple-select-label\"\n                color={virtualControllerId ? \"primary\" : \"error\"}\n              >\n                {t(\n                  \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.CONTROLLER\"\n                )}\n              </InputLabel>\n              <Select\n                sx={{ borderRadius: \"8px\" }}\n                labelId=\"demo-simple-select-label\"\n                id=\"demo-simple-select\"\n                value={virtualControllerId}\n                label={t(\n                  \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.CONTROLLER\"\n                )}\n                onChange={(e) => handleVirtualControllerInput(e.target.value)}\n                color={virtualControllerId ? \"primary\" : \"error\"}\n              >\n                {data?.getAllControllers\n                  ?.filter(\n                    (controller) =>\n                      controller.typeGateway === \"virtual\" ||\n                      controller.typeGateway === \"horus_700\")\n                  ?.map((value) => (\n                    <MenuItem key={value.id} value={value.id}>\n                      {value.name}\n                    </MenuItem>\n                  ))}\n              </Select>\n            </FormControl>\n          </div>\n          <ThemeProvider theme={theme}>\n            <Button\n              sx={{\n                width: \"90%\",\n                padding: \"7px\",\n                color: \"#000\",\n                borderRadius: \"8px\",\n                lineHeight: \"18px\",\n              }}\n              variant=\"contained\"\n              color=\"success\"\n              onClick={() => createRoomWithVirtualController()}\n              disabled={areaName && virtualControllerId ? false : true}\n            >\n              {t(\n                \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.ACCEPT_BUTTON\"\n              )}\n            </Button>\n          </ThemeProvider>\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n\nexport default VirtualRoomModal;\n","import { useQuery } from \"@apollo/client\";\nimport { GET_METER_HISTORY_VARIABLES } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useContext } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst codigosCiudades = {\n  Bogotá: \"BG\",\n  Barranquilla: \"BQ\",\n  default: \"BQ\",\n};\nObject.freeze(codigosCiudades);\n\nexport const useGetDataMacrometersVariables = (seriales, city) => {\n  const { data, loading, error, refetch } = useQuery(\n    GET_METER_HISTORY_VARIABLES,\n    {\n      client: secondClient,\n      variables: {\n        serial: seriales,\n        location: codigosCiudades[city] || codigosCiudades.default,\n      },\n      fetchPolicy: \"no-cache\",\n    }\n  );\n  return { data, loading, error, refetch };\n};\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//components\nimport Area from \"../../../components/areas/Area\";\nimport ActionsMenuButton from \"./components/ActionsMenuButton\";\nimport EditRoomModal from \"./components/EditRoomModal\";\nimport GeneralOccupation from \"../../../components/highcharts/GeneralOccupation\";\nimport Loading from \"../../../components/loading/Loading\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\nimport ReportFailsByProject from \"../../../components/reports/ReportFailsByProject\";\nimport VirtualRoomModal from \"./components/VirtualRoomModal\";\n\n//helpers\nimport { nameFilterAreas } from \"../../../utils/helpers\";\nimport { useGetDataMacrometersVariables } from \"../../../components/projects/helperMacroMetters/getDataMacrometersVariables\";\nimport { useGetDataMetters } from \"../../../components/projects/helperMacroMetters/getDataMetters\";\n\n//query and mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_ALL_ROOMS_BY_PROJECT } from \"../../../controllers/roomControllers\";\nimport { PDF_GENERAL_OCUPATION_REPORT } from \"../../../controllers/pdfControllers\";\n\n//material UI\nimport MoreHorizSharpIcon from \"@mui/icons-material/MoreHorizSharp\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst Areas = (props) => {\n  const { t } = useTranslation();\n  const [pdfGenerator] = useMutation(PDF_GENERAL_OCUPATION_REPORT);\n  const {\n    areas,\n    setAreas,\n    setOpenModal,\n    setStateBathroom,\n    stateBathroom,\n    permissionsRoleUser,\n    setCalendarDatePicker,\n    macrometer,\n    setDataMacrometer,\n    dataMacrometers,\n    setDataMacrometerVariables,\n    dataMacrometerVariables,\n  } = useContext(AuthContext);\n\n  const statePlugin = areas.map((i) =>\n    i.Device.find(\n      (i) =>\n        i?.visible &&\n        i?.Category?.category === 600 &&\n        i?.Category?.sub_category === 3\n    )\n  )[0];\n  const initialStates = {\n    all: true,\n    on_line: false,\n    off_line: false,\n    any_status: false,\n    busy: false,\n  };\n\n  // const [ countries, setCountries ] = useState([])\n  const [open, setOpen] = React.useState(false);\n  const [openVirtualRoomModal, setOpenVirtualRoomModal] = React.useState(false);\n  const [openEditRoomModal, setEditRoomModal] = React.useState(false);\n  const [openDropFilter, setOpenDropFilter] = useState(false);\n  const [openDropReport, setOpenDropReport] = useState(false);\n  const [openReportFailsByProject, setOpenReportFailsByProject] =\n    useState(false);\n  const project__id = Number(localStorage.getItem(\"id\"));\n\n  const history = useHistory();\n\n  const [filter_cat, setFilterCat] = React.useState(initialStates);\n\n  const handleAreasSave = () => {\n    localStorage.removeItem(\"areas\"); // Limpiamos el storage\n    const filterArea = [];\n    const area = areas[0];\n    const isPluginMotel =\n      area?.Device?.find(\n        (j) =>\n          parseInt(j?.Category?.category) === 600 &&\n          parseInt(j?.Category?.sub_category) === 3\n      )?.variables?.Estado !== undefined;\n\n    if (isPluginMotel) {\n      // Cuando se el caso de plugin motel\n      areas?.map((i) => {\n        return filterArea.push({\n          status: i?.Device?.find(\n            (j) =>\n              parseInt(j?.Category?.category) === 600 &&\n              parseInt(j?.Category?.sub_category) === 3\n          )?.variables?.Estado,\n          name: i?.alias,\n          id: i?.id,\n          realname: i?.name,\n          typeGateway: i?.Controller?.typeGateway,\n        });\n      });\n    } else {\n      // Cuando se el caso de plugin noraml y classroom\n      areas?.map((i) => {\n        return filterArea?.push({\n          name: i?.alias,\n          id: i?.id,\n          newRoomId: i?.NewRoomId,\n          status: i?.status,\n          realname: i?.name,\n          typeGateway: i?.Controller?.typeGateway,\n        });\n      });\n    }\n    localStorage.setItem(\"areas\", JSON.stringify(filterArea));\n  };\n\n  const handleClickOpen = () => {\n    setOpenModal(true);\n    setOpenDropReport(true);\n  };\n\n  const closeDrops = () => {\n    setOpenDropFilter(false);\n    setOpenDropReport(false);\n  };\n\n  const [inputValues, setInputValues] = useState({\n    search_areas: \"\",\n  });\n\n  const { data, loading, error, refetch } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n    variables: { ProjectId: project__id, id: project__id },\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: false,\n  });\n\n  const cityProject = data?.getProjectByIdHeader?.city;\n  const datosMacrometers = useGetDataMetters();\n\n  const seriales = datosMacrometers?.map((i) => i?.serial);\n  const {\n    data: dataquery,\n    loading: loadingquery,\n    error: errorquery,\n  } = useGetDataMacrometersVariables(seriales, cityProject);\n\n  useEffect(() => {\n    if (datosMacrometers) {\n      const medidoresArgos = datosMacrometers?.map((i) => i?.modelo);\n      if (medidoresArgos[0] === \"DTS-353/CT/V3\") {\n        sessionStorage?.setItem(\n          \"macrometerArgos\",\n          JSON?.stringify(medidoresArgos)\n        );\n      }\n    }\n  }, [data]);\n\n  useEffect(() => {\n    if (datosMacrometers) {\n      let resultado = {};\n      datosMacrometers?.forEach((obj) => {\n        let serial = obj?.serial;\n        if (!resultado[serial]) {\n          resultado[serial] = {\n            serial: serial,\n            alias: obj.alias,\n            model: obj.modelo,\n          };\n        }\n      });\n\n      dataquery?.getMeterHistoryVariables?.forEach((obj) => {\n        let serial = obj?.SerialMedidor;\n        if (resultado[serial]) {\n          resultado[serial].variable = obj?.variable;\n        }\n      });\n      let resultadoFinal = Object.values(resultado);\n      setDataMacrometerVariables(resultadoFinal);\n      sessionStorage.setItem(\"resultadoFinal\", JSON.stringify(resultadoFinal));\n    }\n  }, [dataquery]);\n\n  const listMacromeasureOption =\n    data?.getMettersInProjets[0]?.Metters?.length > 0 ||\n    data?.getInfoMetersByProject?.length > 0;\n\n  const handleOnChange = (event) => {\n    const { name, value } = event.target;\n    setInputValues({ ...inputValues, [name]: value });\n  };\n\n  useEffect(() => {\n    areas\n      ?.find((i) => i?.id === 2148)\n      ?.Device?.filter(\n        (i) => i?.id === 26128 || i?.id === 26127 || i?.id === 26126\n      )\n      ?.map((k) => {\n        return setStateBathroom({\n          ...stateBathroom,\n          [k.id]: k.variables.Status,\n        });\n      });\n  }, []);\n\n  useEffect(() => {\n    if (data) {\n      setAreas(data?.getAllRoomsByProject);\n      localStorage.setItem(\"id\", data?.getAllProjects[0]?.id);\n      localStorage.setItem(\"imgProject\", data?.getAllProjects[0]?.img);\n      localStorage.setItem(\"nameProject\", data?.getAllProjects[0]?.name);\n      localStorage.setItem(\"startTime\", data?.getAllProjects[0]?.start_time);\n      localStorage.setItem(\"endtTime\", data?.getAllProjects[0]?.end_time);\n      localStorage.setItem(\"prefix\", data?.getAllProjects[0]?.prefix_currency);\n      localStorage.setItem(\"kwhCost\", data?.getAllProjects[0]?.kwh_cost);\n    }\n  }, [data]);\n\n  const filter_category = () => {\n    if (filter_cat?.on_line) {\n      return areas?.filter((i) => i?.status == \"Libre\");\n    } else if (filter_cat?.busy) {\n      return areas?.filter((i) => i?.status == \"Ocupado\");\n    } else if (filter_cat?.any_status) {\n      return areas?.filter((i) => i?.status == null);\n    } else if (filter_cat?.off_line) {\n      return areas?.filter((i) => i?.Controller?.online === false);\n    } else {\n      return areas;\n    }\n  };\n\n  const count_by_status = () => {\n    return {\n      all: areas?.length,\n      busy: areas?.filter((i) => i?.status == \"Ocupado\")?.length,\n      free: areas?.filter((i) => i?.status == \"Libre\")?.length,\n      any_state: areas?.filter((i) => i?.status == null)?.length,\n      offline: areas?.filter((i) => i?.Controller?.online === false)?.length,\n    };\n  };\n\n  const _areas = () => {\n    if (inputValues?.search_areas === \"\") {\n      return filter_category();\n    } else {\n      let __areas__ = [...areas];\n      return __areas__?.filter((key) =>\n        key?.name?.toLowerCase()?.includes(inputValues?.search_areas)\n      );\n    }\n  };\n  const printRef = React.useRef();\n\n  const openMeasurer = () => {\n    history.push(`/app/measurers/${data?.getProjectByIdHeader?.id}`);\n  };\n\n  const handleReportFailsByProject = () => {\n    setOpenReportFailsByProject(!openReportFailsByProject);\n  };\n\n  const handleChangeCat = (__key__) => {\n    if (__key__ == \"on_line\") {\n      setFilterCat({\n        on_line: true,\n        off_line: false,\n        any_status: false,\n        busy: false,\n        all: false,\n      });\n    } else if (__key__ == \"any_status\") {\n      setFilterCat({\n        on_line: false,\n        off_line: false,\n        any_status: true,\n        busy: false,\n        all: false,\n      });\n    } else if (__key__ == \"off_line\") {\n      setFilterCat({\n        on_line: false,\n        any_status: false,\n        off_line: true,\n        busy: false,\n        all: false,\n      });\n    } else if (__key__ == \"busy\") {\n      setFilterCat({\n        on_line: false,\n        off_line: false,\n        any_status: false,\n        all: false,\n        busy: true,\n      });\n    } else {\n      setFilterCat({\n        on_line: false,\n        off_line: false,\n        any_status: false,\n        all: true,\n        busy: false,\n      });\n    }\n    setOpenDropFilter(false);\n  };\n\n  //const pdfExportComponent = React.useRef(null);\n\n  // const handleOpenVirtualRoomModal = () => {\n  //   setOpenVirtualRoomModal(true);\n  // };\n\n  if (error) {\n    return (\n      <div>\n        <lottie-player\n          style={{\n            width: \"70%\",\n            marginLeft: \"30%\",\n            marginRight: \"auto\",\n          }}\n          className=\"_logo\"\n          src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n          background=\"transparent\"\n          speed=\"1\"\n          loop\n          autoplay\n        ></lottie-player>\n      </div>\n    );\n  }\n\n  if (loading) {\n    return <Loading />;\n  }\n\n  return (\n    <div className=\"_areas_container\">\n      <div className=\"__areas_container__\">\n        <div className=\"__areas_container_logo__\">\n          <img\n            src={data?.getProjectByIdHeader?.img}\n            className=\"__areas__img\"\n            alt=\"Logo\"\n            width=\"180\"\n            height=\"180\"\n          />\n        </div>\n        <div className=\"__areas_container_project_and_filters__\">\n          <div className=\"__areas_container_project__\">\n            <ProjectCardAreaControl data={data?.getProjectByIdHeader} />\n          </div>\n          <div className=\"__areas_container_filters__\">\n            <div className=\"__areas_container_name_filters_and_search__\">\n              <div className=\"__area_container_filters_name__\">\n                {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.AREAS\")}\n              </div>\n\n              {Boolean(statePlugin) ? (\n                <div></div>\n              ) : (\n                <div\n                  className=\"__area_container_filters_status__\"\n                  onClick={() => setOpenDropFilter(!openDropFilter)}\n                >\n                  <span className={`__area_container_text_filter__`}>\n                    {nameFilterAreas(filter_cat, count_by_status(), t)}\n                  </span>\n                  <span className=\"__area_container_icon_filter__\">\n                    <i className=\"fas fa-sort\"></i>\n                  </span>\n                </div>\n              )}\n\n              <div\n                className={`${\n                  openDropFilter\n                    ? \"__open_drop_filter_open__\"\n                    : \"__open_drop_filter_close__\"\n                }`}\n              >\n                <span className=\"__filters_names__\">\n                  <div\n                    className=\"__filter_name_todas__\"\n                    onClick={() => handleChangeCat(\"all\")}\n                  >\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.ALL\"\n                    )}\n                    ({count_by_status()?.all})\n                  </div>\n                  <div\n                    className=\"__filter_name_libre__\"\n                    onClick={() => handleChangeCat(\"on_line\")}\n                  >\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.AVAILABLE\"\n                    )}\n                    ({count_by_status()?.free})\n                  </div>\n                  <div\n                    className=\"__filter_name_ocupado__\"\n                    onClick={() => handleChangeCat(\"busy\")}\n                  >\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.BUSY\"\n                    )}\n                    ({count_by_status()?.busy})\n                  </div>\n                  <div\n                    className=\"__filter_name_fuera__\"\n                    onClick={() => handleChangeCat(\"off_line\")}\n                  >\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.OFFLINE\"\n                    )}\n                    ({count_by_status()?.offline})\n                  </div>\n                  <div\n                    className=\"__filter_name_sin__\"\n                    onClick={() => handleChangeCat(\"any_status\")}\n                  >\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.UNKNOW_STATUS\"\n                    )}\n                    ({count_by_status()?.any_state})\n                  </div>\n                </span>\n              </div>\n\n              <div className=\"__area_container_filters_search__\">\n                <span className=\"_areas_container_search_input\">\n                  <input\n                    type=\"text\"\n                    className=\"\"\n                    placeholder={t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_SEARCH_INPUT.SEARCH\"\n                    )}\n                    name=\"search_areas\"\n                    value={inputValues?.search_areas}\n                    onChange={handleOnChange}\n                  />\n                </span>\n              </div>\n              {permissionsRoleUser?.permissionsRole?.OptionAreas ? (\n                <ActionsMenuButton\n                  setOpenVirtualRoomModal={setOpenVirtualRoomModal}\n                  setEditRoomModal={setEditRoomModal}\n                />\n              ) : null}\n            </div>\n            {permissionsRoleUser?.permissionsRole?.AreaRoaVer ? (\n              <div className=\"__areas_container_filter_report__\">\n                <div className=\"_areas_report\">\n                  <span className=\"_report_ver_container\">\n                    <button\n                      type=\"text\"\n                      className=\"_report_ver\"\n                      onClick={() => setOpenDropReport(!openDropReport)}\n                    >\n                      <span>\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.REPORTS\"\n                        )}\n                      </span>\n                    </button>\n                    <span\n                      className=\"__area_container_icon_report__\"\n                      onClick={() => setOpenDropReport(!openDropReport)}\n                    >\n                      <i className=\"fas fa-sort\"></i>\n                    </span>\n                  </span>\n                </div>\n\n                <div\n                  className={`${\n                    openDropReport\n                      ? \"__open_drop_report_open__\"\n                      : \"__open_drop_report_close__\"\n                  }`}\n                >\n                  <span className=\"__buttons_names__\">\n                    {permissionsRoleUser?.permissionsRole?.AreaRpog ? (\n                      <div\n                        className=\"__button_ocupation__\"\n                        onClick={() => {\n                          handleClickOpen();\n                        }}\n                      >\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCUPATION\"\n                        )}\n                      </div>\n                    ) : null}\n\n                    {/* {permissionsRoleUser?.permissionsRole?.AreaRpog && listMacromeasureOption ? (\n                      <div\n                        className=\"__button_medidores__\"\n                        onClick={openMeasurer}\n                      >\n                        {t('VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.MEASURERS')}\n                      </div>\n                    ) : null} */}\n                    {permissionsRoleUser?.permissionsRole?.AreaRpdf ? (\n                      <div\n                        className=\"__button_report_fails_by_project__\"\n                        onClick={handleReportFailsByProject}\n                      >\n                        {t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORTS\"\n                        )}\n                      </div>\n                    ) : null}\n                  </span>\n                </div>\n              </div>\n            ) : null}\n          </div>\n        </div>\n      </div>\n\n      {permissionsRoleUser?.permissionsRole?.Area ? (\n        <div className=\"_areas_container_location\" onClick={closeDrops}>\n          {handleAreasSave(_areas())}\n          {_areas()\n            ?.filter((i) => i?.visible)\n            ?.map((item, key) => (\n              <Area\n                key={key}\n                data={item}\n                project={data?.getProjectByIdHeader}\n                dataMetter={data?.getMettersInProjets}\n              />\n            ))}\n        </div>\n      ) : null}\n      <GeneralOccupation projectData={data?.getProjectByIdHeader} />\n      <ReportFailsByProject\n        openReportFailsByProject={openReportFailsByProject}\n        handleReportFailsByProject={handleReportFailsByProject}\n        projectData={data?.getProjectByIdHeader}\n      />\n      <VirtualRoomModal\n        open={openVirtualRoomModal}\n        setOpenVirtualRoomModal={setOpenVirtualRoomModal}\n        projectId={project__id}\n        refetchArea={refetch}\n      />\n      <EditRoomModal\n        areas={data?.getAllRoomsByProject}\n        projectId={project__id}\n        openEditRoomModal={openEditRoomModal}\n        setEditRoomModal={setEditRoomModal}\n        refetchArea={refetch}\n      />\n    </div>\n  );\n};\n\nexport default Areas;\n","import { useQuery, useLazyQuery } from \"@apollo/client\"\nimport { GET_MACROMETER_IN_PROJECT } from \"../../../controllers/measurersController\"\nimport { useState, useEffect } from \"react\"\n\nexport const useGetDataMetters = () => {\n    const id = parseInt(localStorage.getItem('id'))\n\n    const {data, loading, error, refetch} = useQuery(GET_MACROMETER_IN_PROJECT, {\n        fetchPolicy:\"network-only\",\n        variables:{ProjectId: id}\n    })\n    \n    const [dataMacrometer, setDataMacrometer] =useState()\n     const metters =  data?.getMettersInProjets?.map((i) => i.Metters)\n     const macrometers = metters?.flat()\n     const datoMacrometer = macrometers?.map(i =>({\n        serial : i?.serial,\n        alias : i?.alias,\n        modelo: i.model\n     })) \n     useEffect(() => {\n        setDataMacrometer(datoMacrometer)\n     }, [data])\n     return( dataMacrometer)\n    }","import React from \"react\";\n\nexport default function Loading_devices() {\n  return (\n    <>\n        <lottie-player\n            style={{\n            width: \"75%\",\n            }}\n            src=\"https://assets9.lottiefiles.com/packages/lf20_8bvvWE.json\"\n            background=\"transparent\"\n            speed=\"1\"\n            loop\n            autoplay\n        ></lottie-player>\n    </>\n  );\n}","import React, { useEffect, useState, useContext } from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\nimport { changeNamePluggin } from \"../../utils/helpers\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst HSC = ({ item, send, projectData }) => {\n  const { t } = useTranslation();\n  const [BatteryLevel, setBatteryLevel] = React.useState(\n    item.variables?.BatteryLevel\n  );\n  const [libre, setLibre] = useState(false);\n  const [manual, setManual] = useState(false);\n  const [apagado, setApagado] = useState(false);\n  const [auto, setAuto] = useState(false);\n  const [load, setLoad] = React.useState(false);\n  const { successMessage, errorMessage, permissionsRoleUser } =\n    useContext(AuthContext);\n  useEffect(() => {\n    switch (item.variables.Modo) {\n      case \"Manual\":\n        setManual(true);\n        setApagado(false);\n        setAuto(false);\n        break;\n      case \"Apagado\":\n        setManual(false);\n        setApagado(true);\n        setAuto(false);\n        break;\n      case \"Auto\":\n        setManual(false);\n        setApagado(false);\n        setAuto(true);\n        break;\n      default:\n        return false;\n    }\n    setLibre(item?.variables?.EstadoTexto === \"Libre\" ? true : false);\n  }, [item]);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  async function action(event) {\n    await Swal.fire({\n      title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n      text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n      icon: \"info\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: t(\n        \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n      ),\n    }).then((result) => {\n      if (result.isConfirmed) {\n        setLoad(true);\n        switch (event) {\n          case 1:\n            if (!libre) {\n              call(\"Libre\", 1);\n              setLibre(!libre);\n            }\n            break;\n          case 2:\n            if (libre) {\n              call(\"Ocupado\", 2);\n              setLibre(false);\n            }\n            break;\n          case 3:\n            if (!manual) {\n              setManual(true);\n              setApagado(false);\n              setAuto(false);\n              call(\"Manual\", 3);\n            }\n            break;\n          case 4:\n            if (!apagado) {\n              setManual(false);\n              setApagado(true);\n              setAuto(false);\n              call(\"Apagado\", 4);\n            }\n            break;\n          case 5:\n            if (!auto) {\n              setManual(false);\n              setApagado(false);\n              setAuto(true);\n              call(\"Auto\", 5);\n            }\n            break;\n          default:\n        }\n      }\n    });\n  }\n\n  function call(event, action) {\n    return new Promise(() => {\n      setTimeout(() => {\n        send(item, event, action, item.Category.sub_category);\n      }, 2000);\n    });\n  }\n\n  const translatingPluginStatus = () => {\n    const systemStatus =\n      typeof item?.variables?.AccionTexto === \"string\"\n        ? item?.variables?.AccionTexto\n        : \"\";\n\n    if (systemStatus.toLowerCase() === \"libre\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\");\n    } else if (systemStatus.toLowerCase() === \"ocupado\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\");\n    } else if (systemStatus.toLowerCase() === \"manual\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\");\n    } else if (systemStatus.toLowerCase() === \"apagado\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\");\n    } else if (systemStatus.toLowerCase() === \"auto\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\");\n    } else if (systemStatus.toLowerCase() === \"puerta abierta\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OPEN_DOOR\");\n    } else if (systemStatus.toLowerCase() === \"scan\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SCAN\");\n    } else {\n      return systemStatus;\n    }\n  };\n\n  const translatingPluginTitle = () => {\n    const namePlugin = typeof item?.name === \"string\" ? item?.name : \"\";\n    if (\n      namePlugin.toLowerCase() === \"plugin ocupacion\" ||\n      namePlugin.toLowerCase() === \"horus ocupacion\"\n    ) {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_OCCUPATION\");\n    } else {\n      return namePlugin;\n    }\n  };\n\n  return (\n    <div className=\"_hsc_container\">\n      <div className=\"_hsc_container_title_status\">\n        <div class=\"_hsc__title\">\n          <span>{translatingPluginTitle()}</span>\n        </div>\n        <div className=\"__battery\">\n          <div className=\"__percent\">\n            {BatteryLevel && <span>{BatteryLevel}%</span>}\n          </div>\n          <span\n            className={\n              !BatteryLevel\n                ? \"__icon_battery_sensor_unknown\"\n                : BatteryLevel < 10\n                ? \"__icon_battery_sensor_alert\"\n                : \"__icon_battery_sensor\"\n            }\n          >\n            {!BatteryLevel ? null : BatteryLevel > 90 ? (\n              <BatteryFullIcon />\n            ) : BatteryLevel > 80 ? (\n              <Battery90Icon />\n            ) : BatteryLevel > 70 ? (\n              <Battery80Icon />\n            ) : BatteryLevel > 50 ? (\n              <Battery60Icon />\n            ) : BatteryLevel > 40 ? (\n              <Battery50Icon />\n            ) : BatteryLevel > 20 ? (\n              <Battery30Icon />\n            ) : BatteryLevel > 10 ? (\n              <Battery20Icon />\n            ) : (\n              <BatteryAlertIcon />\n            )}\n          </span>\n        </div>\n\n        <div className=\"_hsc_status\">\n          <span className=\"__icon_wifi_hsc\">\n            <i class=\"fas fa-wifi\"></i>\n          </span>\n        </div>\n      </div>\n\n      {/* status home */}\n      <div className={`_hsc_ocupation ${load ? \"_loading_hsc_other\" : false}`}>\n        <div className=\"_hsc_home_img\">\n          <span>\n            <img\n              src={libre ? Devices.DESOCUPADA : Devices.OCUPADA}\n              alt=\"home\"\n              width=\"70\"\n              height=\"70\"\n            />\n          </span>\n        </div>\n        <div className=\"_hsc_home_buttons\">\n          <div\n            className=\"_free_container\"\n            onClick={\n              permissionsRoleUser.permissionsRole?.AreaDispMan\n                ? () => {\n                    action(1);\n                  }\n                : false\n            }\n          >\n            <div className={libre ? \"__free_bg\" : \"__free\"}>\n              <span>\n                {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\")}\n              </span>\n            </div>\n          </div>\n\n          <Tooltip\n            title={t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY_TOOLTIP\")}\n          >\n            <div\n              className=\"_busy_container\"\n              onClick={\n                permissionsRoleUser.permissionsRole?.AreaDispMan\n                  ? () => {\n                      action(2);\n                    }\n                  : false\n              }\n            >\n              <div className={!libre ? \"__busy_bg\" : \"__busy\"}>\n                {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\")}\n              </div>\n            </div>\n          </Tooltip>\n        </div>\n      </div>\n\n      <div className=\"__loading_hsc\">{load ? <Loading_devices /> : false}</div>\n\n      {/* status system */}\n      <div\n        className={`_hsc_status_system ${load ? \"_loading_hsc_other\" : false}`}\n      >\n        <div className=\"_hsc_status_system_title\">\n          <span>\n            {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SYSTEM_STATUS\")}\n          </span>\n        </div>\n        <>\n          <div\n            className={libre ? \"__status_system_free\" : \"__status_system_busy\"}\n          >\n            <span className=\"__status_word\">{translatingPluginStatus()}</span>\n          </div>\n        </>\n      </div>\n\n      {/* mode */}\n      <div className={`_hsc_mode ${load ? \"_loading_hsc_other\" : false}`}>\n        <div className=\"_hsc_mode_title\">\n          <span>{t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MODE\")}</span>\n        </div>\n        <div className=\"__mode_container\">\n          <span\n            className={manual ? \"__mode_item_manual_bg\" : \"__mode_item_manual\"}\n            onClick={\n              permissionsRoleUser.permissionsRole?.AreaDispMan\n                ? () => {\n                    action(3);\n                  }\n                : false\n            }\n          >\n            {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\")}\n          </span>\n          <span\n            className={apagado ? \"__mode_item_off_bg\" : \"__mode_item_off\"}\n            onClick={\n              permissionsRoleUser.permissionsRole?.AreaDispMan\n                ? () => {\n                    action(4);\n                  }\n                : false\n            }\n          >\n            {changeNamePluggin(projectData.id, t)}\n          </span>\n          <span\n            className={auto ? \"__mode_item_auto_bg\" : \"__mode_item_auto\"}\n            onClick={\n              permissionsRoleUser.permissionsRole?.AreaDispMan\n                ? () => {\n                    action(5);\n                  }\n                : false\n            }\n          >\n            {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\")}\n          </span>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default HSC;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst HSC = ({ item, send }) => {\n  const [libre, setLibre] = useState(false);\n  const [manual, setManual] = useState(false);\n  const [apagado, setApagado] = useState(false);\n  const [auto, setAuto] = useState(false);\n  const [load, setLoad] = React.useState(false);\n  const { t } = useTranslation();\n  const { successMessage, errorMessage, permissionsRoleUser } =\n    useContext(AuthContext);\n  useEffect(() => {\n    switch (item.variables.Modo) {\n      case \"Manual\":\n        setManual(true);\n        setApagado(false);\n        setAuto(false);\n        break;\n      case \"Apagar\":\n        setManual(false);\n        setApagado(true);\n        setAuto(false);\n        break;\n      case \"Apagado\":\n        setManual(false);\n        setApagado(true);\n        setAuto(false);\n        break;\n      case \"Auto\":\n        setManual(false);\n        setApagado(false);\n        setAuto(true);\n        break;\n      default:\n        return false;\n    }\n    setLibre(item?.variables?.EstadoTexto === \"Libre\" ? true : false);\n  }, [item]);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  async function action(event) {\n    await Swal.fire({\n      title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n      text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n      icon: \"info\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: t(\n        \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n      ),\n    }).then((result) => {\n      if (result.isConfirmed) {\n        setLoad(true);\n        switch (event) {\n          case 1:\n            if (!libre) {\n              call(\"Libre\", 1);\n              setLibre(!libre);\n            }\n            break;\n          case 2:\n            if (libre) {\n              call(\"Ocupado\", 2);\n              setLibre(false);\n            }\n            break;\n          case 3:\n            if (!manual) {\n              setManual(true);\n              setApagado(false);\n              setAuto(false);\n              call(\"Manual\", 3);\n            }\n            break;\n          case 4:\n            if (!apagado) {\n              setManual(false);\n              setApagado(true);\n              setAuto(false);\n              call(\"Apagar\", 4);\n            }\n            break;\n          case 5:\n            if (!auto) {\n              setManual(false);\n              setApagado(false);\n              setAuto(true);\n              call(\"Auto\", 5);\n            }\n            break;\n          default:\n        }\n      }\n    });\n  }\n\n  function call(event, action) {\n    return new Promise(() => {\n      setTimeout(() => {\n        send(item, event, action, item.Category.sub_category);\n      }, 2000);\n    });\n  }\n\n  const translationAccionTexto = (accionTexto) => {\n    const systemStatus = typeof accionTexto === \"string\" ? accionTexto : \"\";\n    if (systemStatus?.toLowerCase() === \"libre\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\");\n    } else if (systemStatus?.toLowerCase() === \"scan\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SCAN\");\n    } else if (systemStatus?.toLowerCase() === \"puerta abierta\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OPEN_DOOR\");\n    } else if (systemStatus?.toLowerCase() === \"ocupado\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\");\n    } else {\n      return systemStatus;\n    }\n  };\n\n  const translatingPluginTitle = () => {\n    const pluginName = typeof item?.name == \"string\" ? item.name : \"\";\n    if (\n      pluginName?.toLowerCase() === \"plugin ocupacion\" ||\n      pluginName?.toLowerCase() === \"horus ocupacion\"\n    ) {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_OCCUPATION\");\n    } else {\n      return pluginName;\n    }\n  };\n\n  return (\n    <div className=\"_hsc_container\">\n      <div className=\"_hsc_container_title_status\">\n        <div class=\"_hsc__title\">\n          <span>{translatingPluginTitle()}</span>\n        </div>\n        <div className=\"_hsc_status\">\n          <span className=\"__icon_wifi_hsc\">\n            <i class=\"fas fa-wifi\"></i>\n          </span>\n        </div>\n      </div>\n\n      {/* status home */}\n      <div className={`_hsc_ocupation ${load ? \"_loading_hsc_other\" : false}`}>\n        <div className=\"_hsc_home_img\">\n          <span>\n            <img\n              src={libre ? Devices.DESOCUPADA : Devices.OCUPADA}\n              alt=\"home\"\n              width=\"70\"\n              height=\"70\"\n            />\n          </span>\n        </div>\n        <div className=\"_hsc_home_buttons\">\n          <div\n            className=\"_free_container\"\n            onClick={() => {\n              action(1);\n            }}\n          >\n            <div className={libre ? \"__free_bg\" : \"__free\"}>\n              {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\")}\n            </div>\n          </div>\n\n          <Tooltip\n            title={t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY_TOOLTIP\")}\n          >\n            <div\n              className=\"_busy_container\"\n              onClick={() => {\n                action(2);\n              }}\n            >\n              <div className={!libre ? \"__busy_bg\" : \"__busy\"}>\n                {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\")}\n              </div>\n            </div>\n          </Tooltip>\n        </div>\n      </div>\n\n      <div className=\"__loading_hsc\">{load ? <Loading_devices /> : false}</div>\n\n      {/* status system */}\n      <div\n        className={`_hsc_status_system ${load ? \"_loading_hsc_other\" : false}`}\n      >\n        <div className=\"_hsc_status_system_title\">\n          <span>\n            {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SYSTEM_STATUS\")}\n          </span>\n        </div>\n        <>\n          <div\n            className={libre ? \"__status_system_free\" : \"__status_system_busy\"}\n          >\n            <span className=\"__status_word\">\n              {translationAccionTexto(item?.variables?.AccionTexto)}\n            </span>\n          </div>\n        </>\n      </div>\n\n      {/* mode */}\n      <div className={`_hsc_mode ${load ? \"_loading_hsc_other\" : false}`}>\n        <div className=\"_hsc_mode_title\">\n          <span>{t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MODE\")}</span>\n        </div>\n        <div className=\"__mode_container\">\n          <span\n            className={manual ? \"__mode_item_manual_bg\" : \"__mode_item_manual\"}\n            onClick={() => {\n              action(3);\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\")}\n          </span>\n          <span\n            className={apagado ? \"__mode_item_off_bg\" : \"__mode_item_off\"}\n            onClick={() => {\n              action(4);\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\")}\n          </span>\n          <span\n            className={auto ? \"__mode_item_auto_bg\" : \"__mode_item_auto\"}\n            onClick={() => {\n              action(5);\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\")}\n          </span>\n        </div>\n      </div>\n    </div>\n  );\n};\nexport default HSC;\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\n// Material\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Button from \"@mui/material/Button\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n  },\n});\n\nconst TemperatureModal = ({ open, setOpen, setCancel, ChangeSates }) => {\n  const { t } = useTranslation();\n  const handleCloseModal = () => {\n    setOpen(false);\n  };\n\n  const handleCancelProcess = () => {\n    setCancel(true);\n    setOpen(false);\n  };\n\n  return (\n    <>\n      <Dialog\n        open={open}\n        onClose={handleCloseModal}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"30%\",\n            height: \"38%\",\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            fontFamily: \"Montserrat, sans-serif\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            fontSize: \"20px\",\n            marginBottom: \"15px\",\n            lineHeight: \"2.6\",\n            padding: \"0px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"space-evenly\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"22px\",\n              fontWeight: \"bold\",\n              paddingLeft: \"45px\",\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.TITLE\")}\n          </span>\n          <IconButton onClick={handleCancelProcess}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              textAlign: \"center\",\n              width: \"80%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"17px\",\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.DESCRIPTION\")}\n          </span>\n          <ThemeProvider theme={theme}>\n            <Button\n              variant=\"contained\"\n              color=\"success\"\n              onClick={ChangeSates}\n              sx={{\n                width: \"340px\",\n                padding: \"7px\",\n                color: \"#000\",\n                borderRadius: \"8px\",\n                lineHeight: \"18px\",\n              }}\n            >\n              {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.BUTTON\")}\n            </Button>\n          </ThemeProvider>\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n\nexport default TemperatureModal;\n","//Material UI components\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\n\nexport const handleBatteryLevelColor = (BatteryLevel) => {\n  if (!BatteryLevel && BatteryLevel !== 0) {\n    return \"__icon_battery_sensor_unknown\";\n  } else if (BatteryLevel <= 100 && BatteryLevel >= 51) {\n    return \"__icon_battery_sensor\";\n  } else if (BatteryLevel <= 50 && BatteryLevel >= 11) {\n    return \"__icon_battery_half_level\";\n  } else if (BatteryLevel <= 10 && BatteryLevel >= 0) {\n    return \"__icon_battery_sensor_alert\";\n  }\n};\n\nexport const handleBatteryLevel = (BatteryLevel) => {\n  if (!BatteryLevel && BatteryLevel !== 0) {\n    // return <BatteryUnknownIcon />;\n  } else if (BatteryLevel > 90) {\n    return <BatteryFullIcon />;\n  } else if (BatteryLevel > 80) {\n    return <Battery90Icon />;\n  } else if (BatteryLevel > 70) {\n    return <Battery80Icon />;\n  } else if (BatteryLevel > 50) {\n    return <Battery60Icon />;\n  } else if (BatteryLevel > 40) {\n    return <Battery50Icon />;\n  } else if (BatteryLevel > 20) {\n    return <Battery30Icon />;\n  } else if (BatteryLevel > 10) {\n    return <Battery20Icon />;\n  } else if (BatteryLevel < 10) {\n    return <BatteryAlertIcon />;\n  }\n};\n","export default \"data:image/png;base64,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\"","import React, { useEffect, useState, useContext, useRef } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Swal modal component\nimport Swal from \"sweetalert2\";\n\n//Components\nimport TemperatureModal from \"../../views/private/devices/components/Temperature/TemperatureModal\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//Helpers\nimport {\n  handleBatteryLevelColor,\n  handleBatteryLevel,\n} from \"./utils/helperBattery\";\n\n//Images\nimport alert from \"../../assets/alert-icon.png\";\n\nconst Weather = ({ item, pluggin, send, gridNumber, socketResponse }) => {\n  const [BatteryLevel, setBatteryLevel] = React.useState(\n    item?.variables?.BatteryLevel ? parseInt(item?.variables?.BatteryLevel) : \"\"\n  );\n  const [CurrentSetpoint, setCurrentSetpoint] = useState(\n    financial(item?.variables?.CurrentSetpoint)\n  );\n  const [CurrentTemperature, setCurrentTemperature] = useState(\n    financial(item?.variables?.CurrentTemperature)\n  );\n  // const [delayedSetPoint, setDelayedSetPoint] = useState(financial(item.variables.CurrentSetpoint));\n  const [cool, setCool] = useState(\n    item?.variables?.ModeStatus == \"CoolOn\" ? true : false\n  );\n  const [heat, setHeat] = useState(\n    item?.variables?.ModeStatus == \"HeatOn\" ? true : false\n  );\n  const [auto, setAuto] = useState(\n    item?.variables?.ModeStatus == \"AutoChangeOver\" ? true : false\n  );\n  const [off, setOff] = useState(\n    item?.variables?.ModeStatus == \"Off\" ? true : false\n  );\n\n  const [previousModeThermostatState, setPreviousModeThermostatState] =\n    useState({\n      thermostatMode: item?.variables?.ModeStatus,\n      setpointTemperature: item?.variables?.CurrentSetpoint,\n    });\n\n  const [load, setLoad] = React.useState(false);\n  const [openModal, setOpenModal] = useState(false);\n  const [cancel, setCancel] = useState(false);\n  const [socketSnackbar, setSocketSnackbar] = useState(null);\n  const socketInterval = useRef(null);\n\n  // Esto hace parte del modal de confirmación\n  // const [actions, setActions] = useState(0);\n\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    warningMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n\n  const delay = 1500;\n\n  // Esto hace parte del modal de confirmación\n  // const handleClose = () => {\n  //   setOpenModal(false);\n  // };\n\n  // Esto hace parte del modal de confirmación\n  // const handleChanges = (a) => {\n  //   // setOpenModal(true);\n  //   setActions(a);\n  // };\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage, warningMessage]);\n\n  useEffect(() => {\n    setCurrentSetpoint(financial(item?.variables?.CurrentSetpoint));\n    setCurrentTemperature(financial(item?.variables?.CurrentTemperature));\n    switch (item?.variables?.ModeStatus) {\n      case \"CoolOn\":\n        setCool(true);\n        setHeat(false);\n        setAuto(false);\n        setOff(false);\n        setPreviousModeThermostatState({\n          ...previousModeThermostatState,\n          thermostatMode: \"CoolOn\",\n        });\n        clearInterval(socketInterval.current);\n        break;\n      case \"HeatOn\":\n        setCool(false);\n        setHeat(true);\n        setAuto(false);\n        setOff(false);\n        setPreviousModeThermostatState({\n          ...previousModeThermostatState,\n          thermostatMode: \"HeatOn\",\n        });\n        clearInterval(socketInterval.current);\n        break;\n      case \"AutoChangeOver\":\n        setCool(false);\n        setHeat(false);\n        setAuto(true);\n        setOff(false);\n        setPreviousModeThermostatState({\n          ...previousModeThermostatState,\n          thermostatMode: \"AutoChangeOver\",\n        });\n        clearInterval(socketInterval.current);\n        break;\n      case \"Off\":\n        setCool(false);\n        setHeat(false);\n        setAuto(false);\n        setOff(true);\n        setPreviousModeThermostatState({\n          ...previousModeThermostatState,\n          thermostatMode: \"Off\",\n        });\n        clearInterval(socketInterval.current);\n        break;\n      case \"CurrentSetpoint\":\n        setPreviousModeThermostatState({\n          ...previousModeThermostatState,\n          setpointTemperature: CurrentSetpoint,\n        });\n        clearInterval(socketInterval.current);\n        break;\n      default:\n    }\n  }, [item]);\n\n  useEffect(() => {\n    if (\n      socketResponse?.status == 500 ||\n      socketResponse?.status == 400 ||\n      socketResponse?.status == 404 ||\n      item?.variables?.CommFailure == \"1\" ||\n      socketSnackbar === false\n    ) {\n      if (previousModeThermostatState?.thermostatMode === \"CoolOn\") {\n        setCool(true);\n        setHeat(false);\n        setAuto(false);\n        setOff(false);\n      } else if (previousModeThermostatState?.thermostatMode === \"HeatOn\") {\n        setCool(false);\n        setHeat(true);\n        setAuto(false);\n        setOff(false);\n      } else if (\n        previousModeThermostatState?.thermostatMode === \"AutoChangeOver\"\n      ) {\n        setCool(false);\n        setHeat(false);\n        setAuto(true);\n        setOff(false);\n      } else if (previousModeThermostatState?.thermostatMode === \"Off\") {\n        setCool(false);\n        setHeat(false);\n        setAuto(false);\n        setOff(true);\n      } else {\n      }\n      setCurrentSetpoint(\n        financial(previousModeThermostatState?.setpointTemperature)\n      );\n      if (socketSnackbar === false) {\n        setErrorMessage(true);\n        setSocketSnackbar(null);\n      }\n    }\n  }, [socketResponse, item, socketSnackbar]);\n\n  const upSet = () => {\n    const newSetPoint =\n      parseInt(CurrentSetpoint) + 1 > 30 ? 30 : parseInt(CurrentSetpoint) + 1;\n    setCurrentSetpoint(newSetPoint);\n    // setDelayedSetPoint(newSetPoint);\n    setTimeout(() => {\n      setOpenModal(false);\n      setLoad(true);\n      send(item, String(newSetPoint), 1);\n      SocketTimeValidationResponse();\n    }, delay);\n  };\n\n  const downSet = () => {\n    const newSetPoint =\n      parseInt(CurrentSetpoint) - 1 < 16 ? 16 : parseInt(CurrentSetpoint) - 1;\n    setCurrentSetpoint(newSetPoint);\n\n    // handleClose();\n    setTimeout(() => {\n      setLoad(true);\n      send(item, String(newSetPoint), 1);\n      // setTimeout(() => {\n      //   setDelayedSetPoint(newSetPoint);\n      // },2500)\n      SocketTimeValidationResponse();\n    }, delay);\n  };\n\n  const handleChangeThermostatState = (actions) => {\n    if (actions === 1) {\n      upSet();\n    } else if (actions === 2) {\n      downSet();\n    } else if (actions === 3) {\n      if (!cool) {\n        // handleClose();\n        setTimeout(() => {\n          send(item, \"CoolOn\", 3);\n          setLoad(true);\n          setCool(!cool);\n          setHeat(false);\n          setAuto(false);\n          setOff(false);\n          SocketTimeValidationResponse();\n        }, 2000);\n      }\n    } else if (actions === 4) {\n      if (!heat) {\n        setOpenModal(false);\n        setTimeout(() => {\n          setLoad(true);\n          send(item, \"HeatOn\", 4);\n          setHeat(!heat);\n          setCool(false);\n          setAuto(false);\n          setOff(false);\n          SocketTimeValidationResponse();\n        }, 2000);\n      }\n    } else if (actions === 5) {\n      if (!auto) {\n        setOpenModal(false);\n        setTimeout(() => {\n          setLoad(true);\n          send(item, \"AutoChangeOver\", 5);\n          setHeat(false);\n          setCool(false);\n          setAuto(!auto);\n          setOff(false);\n          SocketTimeValidationResponse();\n        }, 2000);\n      }\n    } else if (actions === 6) {\n      if (!off) {\n        setOpenModal(false);\n        setTimeout(() => {\n          setLoad(true);\n          send(item, \"Off\", 6);\n          setHeat(false);\n          setCool(false);\n          setAuto(false);\n          setOff(!off);\n          SocketTimeValidationResponse();\n        }, 2000);\n      }\n    }\n  };\n\n  function financial(x) {\n    return Number.parseFloat(x).toFixed(0);\n  }\n\n  const SocketTimeValidationResponse = () => {\n    clearInterval(socketInterval.current);\n    let count = 0;\n    socketInterval.current = setInterval(() => {\n      count++;\n      if (count > 15) {\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(false);\n        setLoad(false);\n      }\n    }, 1000);\n  };\n\n  return (\n    <div\n      className={\n        pluggin != 0\n          ? `_weather_container ${gridNumber}`\n          : `_weather_container_pluggin ${gridNumber}_pluggin`\n      }\n    >\n      <div\n        className={`_weather_container_title_status ${\n          item?.variables?.CommFailure == \"1\" ? \"_weather_offline\" : null\n        }`}\n      >\n        <div className=\"_weather__title\">\n          <span>{item?.alias}</span>\n        </div>\n\n        <div className=\"battery_status\">\n          {BatteryLevel && (\n            <span className=\"battery_percentage\">{BatteryLevel}%</span>\n          )}\n\n          <div className=\"battery_icon_container\">\n            <span className={handleBatteryLevelColor(BatteryLevel)}>\n              {BatteryLevel ? handleBatteryLevel(BatteryLevel) : null}\n            </span>\n          </div>\n        </div>\n        <div\n          className={`_weather__status ${\n            item?.variables?.CommFailure == \"1\" ? \"__icon_offline__\" : null\n          }`}\n        >\n          {item?.variables?.CommFailure == \"1\" ? (\n            <span className=\"__icon_alert_sensor\">\n              <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n            </span>\n          ) : (\n            <span className=\"__icon_wifi\">\n              <i className=\"fas fa-wifi\"></i>\n            </span>\n          )}\n        </div>\n      </div>\n\n      {/* temperature */}\n      <div\n        className={`_weather_container_temperature ${\n          load ? \"__loading_weather_other\" : false\n        }`}\n      >\n        <div\n          className={`${\n            off ? \"__weather_temperatur_off\" : \"\"\n          } _weather_temperature`}\n        >\n          <span className={`${off ? \"__temperatur_off\" : \"\"} __temperature`}>\n            <span\n              style={{\n                display: \"flex\",\n                alignItems: \"flex-start\",\n                fontSize: \"65px\",\n                fontFamily: \"Open24\",\n              }}\n            >\n              {CurrentSetpoint}\n            </span>\n\n            <span\n              style={{\n                display: \"flex\",\n                alignItems: \"flex-start\",\n                marginTop: \"10px\",\n                fontSize: \"35px\",\n                fontFamily: \"Open24\",\n              }}\n            >\n              °C\n            </span>\n          </span>\n        </div>\n        <div className=\"_weather_container_up_down\">\n          <div\n            className=\"_weather_btn_up_down\"\n            onClick={\n              permissionsRoleUser?.permissionsRole?.AreaDispMan\n                ? () => {\n                    handleChangeThermostatState(1);\n                  }\n                : undefined\n            }\n          >\n            <span className=\"__btn_up\">\n              <i className=\"fas fa-chevron-up\"></i>\n            </span>\n          </div>\n          <div\n            className=\"_weather_btn_up_down\"\n            onClick={\n              permissionsRoleUser?.permissionsRole?.AreaDispMan\n                ? () => {\n                    handleChangeThermostatState(2);\n                  }\n                : undefined\n            }\n          >\n            <span className=\"__btn_down\">\n              <i className=\"fas fa-chevron-down\"></i>\n            </span>\n          </div>\n        </div>\n      </div>\n\n      <div className=\"__loading_weather\">\n        {load ? <Loading_devices /> : false}\n      </div>\n\n      <div\n        className={`_indoor_weather ${\n          load ? \"__loading_weather_other\" : false\n        }`}\n      >\n        <span className=\"__indoor\">{CurrentTemperature}°C</span>\n      </div>\n\n      {/* status */}\n      <div\n        className={`_weather_container_mode ${\n          load ? \"__loading_weather_other\" : false\n        }`}\n      >\n        <div\n          className={cool ? \"_weather_mode_cool_bg\" : \"_weather_mode_cool\"}\n          onClick={\n            permissionsRoleUser?.permissionsRole?.AreaDispMan\n              ? () => {\n                  handleChangeThermostatState(3);\n                }\n              : undefined\n          }\n        >\n          <span>COOL</span>\n        </div>\n        <div\n          className={heat ? \"_weather_mode_heat_bg\" : \"_weather_mode_heat\"}\n          onClick={\n            permissionsRoleUser?.permissionsRole?.AreaDispMan\n              ? () => {\n                  handleChangeThermostatState(4);\n                }\n              : undefined\n          }\n        >\n          <span>HEAT</span>\n        </div>\n        <div\n          className={auto ? \"_weather_mode_auto_bg\" : \"_weather_mode_auto\"}\n          onClick={\n            permissionsRoleUser?.permissionsRole?.AreaDispMan\n              ? () => {\n                  handleChangeThermostatState(5);\n                }\n              : undefined\n          }\n        >\n          <span>AUTO</span>\n        </div>\n        <div\n          className={off ? \"_weather_mode_off_bg\" : \"_weather_mode_off\"}\n          onClick={\n            permissionsRoleUser?.permissionsRole?.AreaDispMan\n              ? () => {\n                  handleChangeThermostatState(6);\n                }\n              : undefined\n          }\n        >\n          <span>OFF</span>\n        </div>\n      </div>\n      {/* se comenta modal, mentener codigo si se llega anecesitar nuevamente \n      <TemperatureModal ChangeSates={handleChangeThermostatState} open={openModal} setCancel={setCancel} setOpen={setOpenModal}/> */}\n    </div>\n  );\n};\nexport default Weather;\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_DEVICES = gql`\n  query ($RoomId: Int, $ProjectId: Int!, $typeGateway: String) {\n    getProjectByIdHeader(ProjectId: $ProjectId)\n    getInfoMetersByProject(ProjectId: $ProjectId)\n    getMettersInProjets(ProjectId: $ProjectId)\n    getAllDevices(RoomId: $RoomId, typeGateway: $typeGateway) {\n      id\n      name\n      alias\n      NewRoomId\n      Controller {\n        id\n        serial\n        online\n        typeGateway\n      }\n      Device {\n        id\n        zwaveId\n        id_in_controller\n        name\n        alias\n        maker\n        version\n        setpoint_temp\n        visible\n        report_energy\n        report_occupation\n        report_temp\n        watts\n        watts_min\n        watts_off\n        previous_id\n        variables\n        Category {\n          id\n          name\n          category\n          sub_category\n        }\n        Room {\n          id\n          name\n          floor\n        }\n        RoomAux {\n          id\n          name\n          floor\n        }\n      }\n    }\n  }\n`;\n","import React, { useContext } from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction MessageInfo(props) {\n  const { textMessage } = props;\n  const { infoMessage, setInfoMessage } = useContext(AuthContext);\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setInfoMessage(!infoMessage);\n  };\n\n  return (\n    <Snackbar open={infoMessage} autoHideDuration={2000} onClose={handleClose}>\n      <Alert onClose={handleClose} severity=\"info\">\n        {textMessage ? textMessage : \"Orden enviada\"}\n      </Alert>\n    </Snackbar>\n  );\n}\n\nexport default MessageInfo;\n","import React, { useContext } from \"react\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport MuiAlert from \"@material-ui/lab/Alert\";\r\nimport { AuthContext } from \"../../context/AuthProvider\";\r\n\r\nfunction Alert(props) {\r\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\r\n}\r\n\r\nfunction MessageSuccess() {\r\n  const { successMessage, setSuccessMessage } = useContext(AuthContext);\r\n  const handleClose = (event, reason) => {\r\n    if (reason === \"clickaway\") {\r\n      return;\r\n    }\r\n    setSuccessMessage(!successMessage);\r\n  };\r\n\r\n  return (\r\n    <Snackbar\r\n      open={successMessage}\r\n      autoHideDuration={2000}\r\n      onClose={handleClose}\r\n    >\r\n      <Alert onClose={handleClose} severity=\"success\">\r\n        Comunicación exitosa\r\n      </Alert>\r\n    </Snackbar>\r\n  );\r\n}\r\n\r\nexport default MessageSuccess;\r\n","import React, { useContext } from \"react\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst MessageWarning = (props) => {\n  const { textMessage } = props;\n  const { warningMessage, setWarningMessage } = useContext(AuthContext);\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setWarningMessage(!warningMessage);\n  };\n  return (\n    <Snackbar\n      open={warningMessage}\n      autoHideDuration={2000}\n      onClose={handleClose}\n    >\n      <Alert onClose={handleClose} severity=\"warning\">\n        {textMessage ? textMessage : \"Conexión agotada\"}\n      </Alert>\n    </Snackbar>\n  );\n};\n\nexport default MessageWarning;\n","import React, { useState, useContext, useEffect } from 'react';\nimport Highcharts from 'highcharts/highstock';\nimport HighchartsReact from 'highcharts-react-official';\nimport { sum_of_the_kwh, date_of_the_kwh, total_of_the_kwh } from '../../utils/helpers';\nimport { TableContainer, Table, TableHead, TableRow, TableBody, Paper, TableCell, Grid, IconButton, Select, MenuItem, FormControl, InputLabel } from '@material-ui/core';\nimport DateFnsUtils from '@date-io/date-fns';\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\nimport frLocale from 'date-fns/locale/es';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport { green } from '@material-ui/core/colors';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\nimport { GET_DATA_MEASURER_REPORT } from '../../controllers/reportController';\nimport { useLazyQuery } from '@apollo/client';\nimport { withStyles, makeStyles } from '@material-ui/core/styles';\nimport { AuthContext } from '../../context/AuthProvider';\nimport Loading from '../loading/Loading';\nimport Construction from '../loading/Construction';\n\nconst innerTheme = createTheme({\n  palette: {\n    primary: {\n      main: green[500],\n    },\n    secondary: {\n      light: '#ff7961',\n      main: '#f44336',\n      dark: '#ba000d',\n      contrastText: '#000',\n    },\n  },\n});\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: '#22a374',\n    position: 'relative',\n  },\n  root: {\n    '&:nth-of-type(odd)': {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n  formControl: {\n    minWidth: 120,\n    marginLeft: 50,\n  },\n  selectEmpty: {\n    marginTop: theme.spacing(1),\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: 'relative',\n    height: 200,\n    [theme.breakpoints.down('xs')]: {\n      width: '100% !important', // Overrides inline-style\n      height: 100,\n    },\n    '&:hover, &$focusVisible': {\n      zIndex: 1,\n      '& $imageBackdrop': {\n        opacity: 0.15,\n      },\n      '& $imageMarked': {\n        opacity: 0,\n      },\n      '& $imageTitle': {\n        border: '4px solid currentColor',\n      },\n    },\n    formControl: {\n      margin: theme.spacing(1),\n      minWidth: 120,\n    },\n    selectEmpty: {\n      marginTop: theme.spacing(2),\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: 'absolute',\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: 'absolute',\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: 'cover',\n    backgroundPosition: 'center 40%',\n  },\n  imageBackdrop: {\n    position: 'absolute',\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create('opacity'),\n  },\n  imageTitle: {\n    position: 'relative',\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${theme.spacing(1) + 6}px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: 'absolute',\n    bottom: -2,\n    left: 'calc(50% - 9px)',\n    transition: theme.transitions.create('opacity'),\n  },\n  table: {\n    minWidth: 700,\n  },\n\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: '#4caf50e6',\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: '#4caf50e6',\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: 'bold',\n  },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    '&:nth-of-type(odd)': {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst Measurer = ({ project, RoomId }) => {\n  const { idArea, areas, setIdArea } = useContext(AuthContext);\n\n  const [dateMin, setDateMin] = useState();\n  const [dateMax, setDateMax] = useState();\n  const [parametroMin, setParametroMin] = useState();\n  const [parametroMax, setParametroMax] = useState();\n  const [nextDay, setNextDay] = useState(true);\n  const [dayMilisegundos, setDayMilisegundos] = useState(0);\n  const classes = useStyles();\n  const [selectedDate, setSelectedDate] = useState();\n  const [changeDay, setChangeDay] = useState(false);\n\n  useEffect(() => {\n    //  Si el proyecto no tiene zona horaria\n    if (!project.start_time || !project.end_time) {\n      let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n      //Obtenemos la fecha actual\n      var f = new Date();\n      //La configuramos para mostrarla en el calendario\n      setSelectedDate(new Date(f.getFullYear() + '-' + (f.getMonth() + 1) + '-' + f.getDate()));\n\n      //Guardamos el dia actual en milisegundos\n      setDayMilisegundos(new Date(f.getFullYear() + '-' + (f.getMonth() + 1) + '-' + f.getDate()).getTime());\n      var day = new Date();\n      // Armamos la hora inicial del proyecto + time zone con el que está configurado\n      var day_time_zone = day.toString().substring(0, 16) + ' 00:00:00 GMT' + project.time_zone;\n      // Configuramos el parametro que le enviaremos a la query del backend, en formato GMT 0 con la hora inicial\n      var param = day.toString().substring(0, 16) + ' 00:00:00 GMT';\n      //Parámetro en milisegundos\n      var tempPara = new Date(param).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      //fecha en milisegundos\n      var tmpDate = new Date(day_time_zone).getTime();\n      //Parámetro inicial\n      setParametroMin(tempPara);\n      //Fecha inicial\n      setDateMin(tmpDate);\n      //parámetro final\n      setParametroMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n      //Fecha final\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n      getReportMeterZWave({\n        variables: {\n          RoomId: parseInt(RoomId, 10),\n          start_time: tempPara,\n          end_time: parseInt(tmpDate, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: 'network-only',\n      });\n    } else {\n      var f = new Date();\n      //Valor de un día en milisegundos.\n      let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n      //Valor de una hora en milisegundos\n      let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n      var date = new Date();\n      //Fecha y hora teniendo en cuenta el time_zone del proyecto\n      var day2 = date.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n      //Fecha y hora inicial del proyecto en GMT\n      var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n      //Fecha y hora inicial en GMT a milisegundos.\n      var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      //Fecha y hora inicial en GMT -time_zone a milisegundos.\n      var tmpDate = new Date(day2).getTime();\n      if (f.getTime() < tmpDate) {\n        setParametroMin(parseInt(tempPara) - DIA_EN_MILISEGUNDOS);\n        setDateMin(parseInt(tmpDate) - DIA_EN_MILISEGUNDOS);\n        setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS);\n        setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS);\n\n        setSelectedDate(new Date(f.getTime() - DIA_EN_MILISEGUNDOS));\n\n        setDayMilisegundos(f.getTime() - DIA_EN_MILISEGUNDOS);\n\n        getReportMeterZWave({\n          variables: {\n            RoomId: parseInt(RoomId, 10),\n            start_time: parseInt(tempPara) - DIA_EN_MILISEGUNDOS,\n            end_time: parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS,\n          },\n          fetchPolicy: 'network-only',\n        });\n      } else {\n        setParametroMin(parseInt(tempPara));\n        setDateMin(parseInt(tmpDate));\n        setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n        setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n        setSelectedDate(new Date(f.getTime()));\n\n        setDayMilisegundos(f.getTime());\n\n        getReportMeterZWave({\n          variables: {\n            RoomId: parseInt(RoomId, 10),\n            start_time: parseInt(tempPara),\n            end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n          },\n          fetchPolicy: 'network-only',\n        });\n      }\n    }\n  }, []);\n\n  const [getReportMeterZWave, { data, loading, error }] = useLazyQuery(GET_DATA_MEASURER_REPORT);\n\n  useEffect(() => {\n    if (data) {\n      setChangeDay(true);\n    }\n  }, [data]);\n\n  const before = (date) => {\n    setChangeDay(false);\n    setNextDay(false);\n    let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n    let date2 = date.getTime();\n    setSelectedDate(new Date(date2 - DIA_EN_MILISEGUNDOS));\n    var paramteroDate = new Date(date2 - DIA_EN_MILISEGUNDOS);\n\n    if (!project.start_time || !project.end_time) {\n      var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n      var day2 = dayTemp.toString().substring(0, 16) + ' 00:00:00 GMT ' + project.time_zone;\n      var param2 = day2.substring(0, 16) + ' 00:00:00 GMT';\n\n      var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n      getReportMeterZWave({\n        variables: {\n          RoomId: parseInt(idArea, 10),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: 'network-only',\n      });\n    } else {\n      var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n      var day2 = dayTemp.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n      var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n\n      var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n      getReportMeterZWave({\n        variables: {\n          RoomId: parseInt(idArea, 10),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: 'network-only',\n      });\n    }\n  };\n\n  const after = (date) => {\n    setChangeDay(false);\n    let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n    let date2 = date.getTime() + DIA_EN_MILISEGUNDOS;\n\n    if (date2 <= dayMilisegundos) {\n      setSelectedDate(new Date(date2));\n      var paramteroDate = new Date(date2);\n\n      let dateNext = date2 + DIA_EN_MILISEGUNDOS;\n      if (dateNext > dayMilisegundos) {\n        setNextDay(true);\n      }\n\n      if (!project.start_time || !project.end_time) {\n        var dayTemp = new Date(date2);\n        var day2 = dayTemp.toString().substring(0, 16) + ' 00:00:00 GMT ' + project.time_zone;\n        var param2 = day2.substring(0, 16) + ' 00:00:00 GMT';\n\n        var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n        var tmpDate = new Date(day2).getTime();\n\n        setParametroMin(parseInt(tempPara));\n        setDateMin(parseInt(tmpDate));\n        setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n        setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n        getReportMeterZWave({\n          variables: {\n            RoomId: parseInt(idArea, 10),\n            start_time: parseInt(tempPara),\n            end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n          },\n          fetchPolicy: 'network-only',\n        });\n      } else {\n        var dayTemp = new Date(date2);\n        var day2 = dayTemp.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n        var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n\n        var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n        var tmpDate = new Date(day2).getTime();\n\n        setParametroMin(parseInt(tempPara));\n        setDateMin(parseInt(tmpDate));\n        setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n        setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n        getReportMeterZWave({\n          variables: {\n            RoomId: parseInt(idArea, 10),\n            start_time: parseInt(tempPara),\n            end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n          },\n          fetchPolicy: 'network-only',\n        });\n      }\n    } else {\n      setNextDay(true);\n    }\n  };\n\n  const handleDateChange = (date) => {\n    setChangeDay(false);\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n    setSelectedDate(date);\n\n    if (!project.start_time || !project.end_time) {\n      var day2 = date.toString().substring(0, 16) + ' 00:00:00 GMT ' + project.time_zone;\n      var param2 = day2.substring(0, 16) + ' 00:00:00 GMT';\n      var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n\n      if (tmpDate > dayMilisegundos) {\n        setNextDay(true);\n      } else {\n        setNextDay(false);\n      }\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n      getReportMeterZWave({\n        variables: {\n          RoomId: parseInt(idArea, 10),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: 'network-only',\n      });\n    } else {\n      var day2 = date.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n      var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n\n      var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n      var tmpDate = new Date(day2).getTime();\n\n      if (tmpDate > dayMilisegundos) {\n        setNextDay(true);\n      } else {\n        setNextDay(false);\n      }\n\n      setParametroMin(parseInt(tempPara));\n      setDateMin(parseInt(tmpDate));\n      setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n      setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n      getReportMeterZWave({\n        variables: {\n          RoomId: parseInt(idArea, 10),\n          start_time: parseInt(tempPara),\n          end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n        },\n        fetchPolicy: 'network-only',\n      });\n    }\n    //refetch();\n  };\n\n  const handleChange = (event) => {\n    setIdArea(event.target.value);\n    getReportMeterZWave({\n      variables: {\n        RoomId: parseInt(event.target.value, 10),\n        start_time: parametroMin,\n        end_time: parametroMax,\n      },\n      fetchPolicy: 'network-only',\n    });\n  };\n\n  if (error) {\n    return <Construction />;\n  }\n\n  if (loading || !data || !changeDay) {\n    return <Loading />;\n  }\n\n  return (\n    <div className=\"__report_measurer_container__\">\n      <div className=\"__report_measurer_set_date__\">\n        <MuiPickersUtilsProvider\n          utils={DateFnsUtils}\n          locale={frLocale}\n        >\n          <Grid\n            container\n            justify=\"center\"\n          >\n            <IconButton\n              color=\"grey\"\n              onClick={() => {\n                before(selectedDate);\n              }}\n            >\n              <ChevronLeft />\n            </IconButton>\n            <ThemeProvider theme={innerTheme}>\n              <DatePicker\n                okLabel=\"seleccionar\"\n                showTodayButton={true}\n                todayLabel=\"hoy\"\n                id=\"date-picker-dialog\"\n                label=\"Fecha\"\n                format=\"eeee, dd MMMM\"\n                value={selectedDate}\n                onChange={handleDateChange}\n                disableFuture\n                color=\"primary\"\n                KeyboardButtonProps={{\n                  'aria-label': 'change date',\n                }}\n              />\n            </ThemeProvider>\n            <IconButton\n              color=\"grey\"\n              disabled={nextDay}\n              onClick={() => {\n                after(selectedDate);\n              }}\n            >\n              <ChevronRight />\n            </IconButton>\n            <FormControl className={classes.formControl}>\n              <InputLabel id=\"demo-simple-select-helper-label\">Área</InputLabel>\n              <Select\n                labelId=\"demo-simple-select-helper-label\"\n                id=\"demo-simple-select-helper\"\n                value={idArea}\n                onChange={handleChange}\n              >\n                {areas.map((item, key) => (\n                  <MenuItem\n                    key={key}\n                    value={item.id}\n                  >\n                    {item.alias}\n                  </MenuItem>\n                ))}\n              </Select>\n            </FormControl>\n          </Grid>\n        </MuiPickersUtilsProvider>\n      </div>\n      <div className=\"__report_measurer_graph_columns__\">\n        {data.getReportMeterZWave ? (\n          <HighchartsReact\n            highcharts={Highcharts}\n            options={{\n              chart: {\n                type: 'column',\n              },\n              title: {\n                text: 'Consumo en kWh',\n              },\n              xAxis: {\n                type: 'datetime',\n                min: dateMin,\n                max: dateMax,\n                tickInterval: 3600000,\n                labels: {\n                  format: '{value:%H:%M}',\n                },\n              },\n              yAxis: {\n                min: 0,\n                max: data.getReportMeterZWave.length,\n                tickAmount: data.getReportMeterZWave.length + 1,\n                title: {\n                  text: 'Kilovatios/hora (kWh)',\n                },\n              },\n              colors: ['#04b431', '#013adf', '#df01a5', '#DF2653', '#615C5D', '#D5DF03'],\n              plotOptions: {\n                column: {\n                  stacking: 'stream',\n                },\n              },\n              time: {\n                timezoneOffset: -(project.time_zone * 60),\n              },\n              tooltip: {\n                xDateFormat: '%H:%M:%S',\n                headerFormat: '<b>{point.key}</b><br>',\n              },\n              series: data.getReportMeterZWave.series_kwh,\n            }}\n          />\n        ) : (\n          <></>\n        )}\n      </div>\n\n      <div className=\"__report_measurer_graph_line__\">\n        {data.getReportMeterZWave ? (\n          <>\n            {dateMax && (\n              <HighchartsReact\n                highcharts={Highcharts}\n                options={{\n                  chart: {\n                    type: 'spline',\n                  },\n                  title: {\n                    text: 'Watts',\n                  },\n                  // legend: {\n                  //     align: \"right\",\n                  //     verticalAlign: \"top\",\n                  //     layout: \"vertical\",\n                  //     x: 0,\n                  //     y: 0,\n                  // },\n                  xAxis: {\n                    type: 'datetime',\n                    min: dateMin,\n                    max: dateMax,\n                    tickInterval: 3600000,\n                    labels: {\n                      format: '{value:%H:%M}',\n                    },\n                  },\n                  yAxis: {\n                    min: 0,\n                    title: {\n                      text: 'Vatios(W)',\n                    },\n                  },\n                  colors: ['#04b431', '#013adf', '#df01a5'],\n                  tooltip: {\n                    pointFormat: '<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y}</b> ({point.percentage:.0f}%)<br/>',\n                    shared: true,\n                  },\n                  plotOptions: {\n                    column: {\n                      stacking: 'line',\n                    },\n                  },\n                  time: {\n                    timezoneOffset: -(project.time_zone * 60),\n                  },\n                  series: data.getReportMeterZWave.series_watts,\n                }}\n              />\n            )}\n          </>\n        ) : (\n          <></>\n        )}\n      </div>\n\n      <div className=\"__report_measurer_table_total__\">\n        <TableContainer component={Paper}>\n          <div className=\"__report_measurer_table_total_title__\">Resumen total</div>\n          <Table aria-label=\"customized table\">\n            <TableHead>\n              <TableRow>\n                <StyledTableCell align=\"center\">#</StyledTableCell>\n                <StyledTableCell align=\"center\">Áreas</StyledTableCell>\n                <StyledTableCell align=\"center\">Total</StyledTableCell>\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {data.getReportMeterZWave.series_kwh\n                ? data.getReportMeterZWave.series_kwh.map((i, key) => (\n                    <StyledTableRow>\n                      <StyledTableCell align=\"center\">{key + 1}</StyledTableCell>\n                      <StyledTableCell align=\"center\">{i.name}</StyledTableCell>\n                      <StyledTableCell align=\"center\">{sum_of_the_kwh(i.data)} KWh</StyledTableCell>\n                    </StyledTableRow>\n                  ))\n                : false}\n              <StyledTableRow>\n                <StyledTableCell2\n                  component=\"th\"\n                  scope=\"row\"\n                  align=\"center\"\n                >\n                  Total del día\n                </StyledTableCell2>\n                <StyledTableCell2\n                  component=\"th\"\n                  scope=\"row\"\n                ></StyledTableCell2>\n                <StyledTableCell2\n                  component=\"th\"\n                  scope=\"row\"\n                  align=\"center\"\n                >\n                  {total_of_the_kwh(data.getReportMeterZWave.series_kwh)} KWh\n                </StyledTableCell2>\n              </StyledTableRow>\n            </TableBody>\n          </Table>\n        </TableContainer>\n      </div>\n\n      {data.getReportMeterZWave.series_kwh ? (\n        data.getReportMeterZWave.series_kwh.map((j) => (\n          <div className=\"__report_measurer_rooms__\">\n            <TableContainer component={Paper}>\n              <div className=\"__report_measurer_by_room__\">Resumen total {j.name}</div>\n              <Table aria-label=\"customized table\">\n                <TableHead>\n                  <TableRow>\n                    <StyledTableCell align=\"center\">#</StyledTableCell>\n                    <StyledTableCell align=\"center\">Date</StyledTableCell>\n                    <StyledTableCell align=\"center\">Total</StyledTableCell>\n                  </TableRow>\n                </TableHead>\n                <TableBody>\n                  {j.data.map((i, key) => (\n                    <StyledTableRow>\n                      <StyledTableCell align=\"center\">{key + 1}</StyledTableCell>\n                      <StyledTableCell align=\"center\">{date_of_the_kwh(i.x)}</StyledTableCell>\n                      <StyledTableCell align=\"center\">{i.y} KWh</StyledTableCell>\n                    </StyledTableRow>\n                  ))}\n                  <StyledTableRow>\n                    <StyledTableCell2\n                      component=\"th\"\n                      scope=\"row\"\n                      align=\"center\"\n                    >\n                      Total del día\n                    </StyledTableCell2>\n                    <StyledTableCell2\n                      component=\"th\"\n                      scope=\"row\"\n                    ></StyledTableCell2>\n                    <StyledTableCell2\n                      component=\"th\"\n                      scope=\"row\"\n                      align=\"center\"\n                    >\n                      {sum_of_the_kwh(j.data)} KWh\n                    </StyledTableCell2>\n                  </StyledTableRow>\n                </TableBody>\n              </Table>\n            </TableContainer>\n          </div>\n        ))\n      ) : (\n        <></>\n      )}\n    </div>\n  );\n};\n\nexport default Measurer;\n","import React, { useEffect, useContext } from \"react\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Devices } from \"../../constants/devices_types\";\nimport {\n  statePluginMotelConvert,\n  statePluginMotel,\n  filterByPluggin,\n} from \"../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst HorusMotel = ({ item, send }) => {\n  const { t } = useTranslation();\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n  } = useContext(AuthContext);\n  const [state, setState] = React.useState(\n    item?.variables?.Estado == \"1\" ? true : false\n  );\n  const [load, setLoad] = React.useState(false);\n  useEffect(() => {\n    setState(item?.variables?.Estado == \"1\" ? true : false);\n  }, [item]);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  const translatingPluginName = () => {\n    const pluginTitle = typeof item?.name === \"string\" ? item?.name : \"\";\n    if (pluginTitle?.toLowerCase() === \"plugin motel\") {\n      return t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.HEADER_TITLE\");\n    } else {\n      return pluginTitle;\n    }\n  };\n\n  return (\n    <div className=\"__pluginMotel_principal_\">\n      <div className=\"__title_pluginMotel\">\n        <div className=\"__title__\">{translatingPluginName()}</div>\n        <div className=\"__img__\"></div>\n      </div>\n      <div className=\"__content_pluginMotel\">\n        <div className=\"__img_logo_pluginMotel\">\n          <img src={Devices.DESOCUPADA} alt=\"home\" width=\"80\" height=\"80\" />\n        </div>\n        <div className=\"__content_state_pluginMotel\">\n          <div className=\"__title_text_state\">\n            {t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.CURRENT_STATUS\")}\n          </div>\n          <div\n            className=\"__state_actual_pluginMotel\"\n            style={{\n              border: `1px solid ${\n                // filterByPluggin([item])\n                statePluginMotelConvert(item?.variables?.Estado, t).border\n              }`,\n              backgroundColor: `${\n                statePluginMotelConvert(item?.variables?.Estado, t).bg\n              }`,\n              color: `${\n                statePluginMotelConvert(item?.variables?.Estado, t).color\n              }`,\n            }}\n          >\n            {statePluginMotelConvert(item?.variables?.Estado, t).text}\n          </div>\n        </div>\n      </div>\n      <div className=\"__other_states_pluginMotel__\">\n        {t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.OTHER_STATES\")}\n      </div>\n      <div className=\"__content_states_pluginMotel\">\n        {statePluginMotel(item?.variables?.Estado, t).map((i) => (\n          <div className=\"__item_states_pluginMotel\">{i?.name}</div>\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default HorusMotel;\n","import React, { useEffect, useContext } from \"react\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\nconst SensorMovimiento = ({ item, send }) => {\n  const { t } = useTranslation();\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n  const [state, setState] = React.useState(\n    item.variables.Status == \"1\" ? true : false\n  );\n  const [BatteryLevel, setBatteryLevel] = React.useState(\n    item.variables.BatteryLevel\n  );\n  const [load, setLoad] = React.useState(false);\n  useEffect(() => {\n    setState(item.variables.Status == \"1\" ? true : false);\n    if (item.variables.BatteryLevel) {\n      setBatteryLevel(item.variables.BatteryLevel);\n    }\n    //setLoad(false);\n  }, [item]);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  const handleChange = async (event) => {\n    setLoad(true);\n    await call();\n    setState(!state);\n  };\n\n  function call() {\n    return new Promise(() => {\n      setTimeout(() => {\n        send(item, !state);\n      }, 2000);\n    });\n  }\n\n  return (\n    <div className=\"_generic_container\">\n      <div\n        className={`_generics_container_title_status ${\n          item.variables.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n        }`}\n      >\n        <div className=\"_generic__title\">\n          <span>{item.alias}</span>\n        </div>\n        <div\n          className={`${\n            item.variables.CommFailure == \"1\"\n              ? \"_generic__status__alert\"\n              : \"_generic__status__wifi\"\n          }`}\n        >\n          {item.variables.CommFailure == \"1\" ? (\n            <span className=\"__icon_alert_sensor\">\n              <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n            </span>\n          ) : (\n            <span className=\"__icon_wifi_sensor\">\n              <i class=\"fas fa-wifi\"></i>\n            </span>\n          )}\n        </div>\n      </div>\n      <div className=\"_generic_container_clasification\">\n        <div\n          className={`_generic_clasification ${\n            load ? \"__loading_clasification\" : false\n          }`}\n        >\n          <span>\n            <img\n              src={\n                state ? Devices.MOTION_SENSOR_TRIPPED : Devices.MOTION_SENSOR\n              }\n              alt=\"clasification\"\n              width=\"60\"\n              height=\"60\"\n            />\n          </span>\n        </div>\n        <div className=\"__loading_devices\">\n          {load ? <Loading_devices /> : false}\n        </div>\n        <div\n          className={`_generic_toggle row-decoration ${\n            load ? \"__loading_toogle\" : false\n          }`}\n        >\n          <div>\n            <ThemeProvider theme={innerTheme}>\n              <Switch\n                size=\"medium\"\n                checked={state}\n                disabled={true}\n                onChange={\n                  permissionsRoleUser.permissionsRole?.AreaDispMan\n                    ? handleChange\n                    : false\n                }\n              />\n            </ThemeProvider>\n            <br></br>\n            {!state ? (\n              <span>\n                {t(\"VIEW_AREA.COMPONENT_ELECTRIC_SENSOR_CARD.DISASSEMBLED\")}\n              </span>\n            ) : (\n              <span>\n                {t(\"VIEW_AREA.COMPONENT_ELECTRIC_SENSOR_CARD.ASSEMBLED\")}\n              </span>\n            )}{\" \"}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default SensorMovimiento;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport alert from \"../../assets/alert-icon.png\";\nimport Swal from \"sweetalert2\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst Device = ({ item, send }) => {\n  const { t } = useTranslation();\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    warningMessage,\n    errorMessage,\n    setErrorMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n  const [state, setState] = React.useState(\n    item?.variables?.Status == \"1\" ? true : false\n  );\n  const [load, setLoad] = React.useState(false);\n  const [socketSnackbar, setSocketSnackbar] = useState(null);\n  const socketInterval = useRef(null);\n\n  useEffect(() => {\n    setState(item?.variables?.Status == \"1\" ? true : false);\n    clearInterval(socketInterval.current);\n  }, [item]);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage, warningMessage]);\n\n  useEffect(() => {\n    if (socketSnackbar) {\n      setLoad(false);\n      setSocketSnackbar(null);\n    } else if (socketSnackbar === false) {\n      setLoad(false);\n      setSocketSnackbar(null);\n      setState(item?.variables?.Status == \"1\" ? true : false);\n      setErrorMessage(true);\n    }\n  }, [socketSnackbar]);\n\n  const handleChange = async (event) => {\n    // // Esto hace parte del modal de confirmación (Swal)\n    // await Swal.fire({\n    //   title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n    //   text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n    //   icon: \"info\",\n    //   showCancelButton: true,\n    //   confirmButtonColor: \"#3085d6\",\n    //   cancelButtonColor: \"#d33\",\n    //   confirmButtonText: t(\n    //     \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n    //   ),\n    // }).then((result) => {\n    // if (result.isConfirmed) {\n    setLoad(true);\n    call();\n    setState(!state);\n    //   }\n    // });\n  };\n\n  function call() {\n    return new Promise(() => {\n      if (\n        parseInt(item?.variables?.CommFailure) !== 1 ||\n        item?.variables?.CommFailure === null ||\n        item?.variables?.CommFailure === undefined\n      ) {\n        send(item, !state);\n        SocketTimeValidationResponse();\n      } else {\n        SocketTimeValidationResponse();\n      }\n    });\n  }\n\n  const SocketTimeValidationResponse = () => {\n    clearInterval(socketInterval.current);\n    let count = 0;\n    socketInterval.current = setInterval(() => {\n      count++;\n      if (count > 15) {\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(false);\n        setLoad(false);\n      }\n    }, 1000);\n  };\n\n  return (\n    <>\n      {item?.name === \"button_state\" ? null : (\n        <div className=\"_generic_container\">\n          <div\n            className={`_generics_container_title_status ${\n              item?.variables?.CommFailure == \"1\"\n                ? \"__status_comfailure__\"\n                : null\n            }`}\n          >\n            <div className=\"_generic__title\">\n              <span>{item?.alias}</span>\n            </div>\n            <div\n              className={`${\n                item?.variables?.CommFailure == \"1\"\n                  ? \"_generic__status__alert\"\n                  : \"_generic__status__wifi\"\n              }`}\n            >\n              {item?.variables?.CommFailure == \"1\" ? (\n                <span className=\"__icon_alert_sensor\">\n                  <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n                </span>\n              ) : (\n                <span className=\"__icon_wifi_sensor\">\n                  <i class=\"fas fa-wifi\"></i>\n                </span>\n              )}\n            </div>\n          </div>\n          <div className=\"_generic_container_clasification\">\n            <div\n              className={`_generic_clasification ${\n                load ? \"__loading_clasification\" : false\n              }`}\n            >\n              <span>\n                <img\n                  src={\n                    state ? Devices.BINARY_LIGHT_ON : Devices.BINARY_LIGHT_OFF\n                  }\n                  alt=\"clasification\"\n                  width=\"60\"\n                  height=\"60\"\n                />\n              </span>\n            </div>\n            <div className=\"__loading_devices\">\n              {load ? <Loading_devices /> : false}\n            </div>\n            <div\n              className={`_generic_toggle row-decoration ${\n                load ? \"__loading_toogle\" : false\n              }`}\n            >\n              <div>\n                <ThemeProvider theme={innerTheme}>\n                  <Switch\n                    size=\"medium\"\n                    checked={state}\n                    onChange={\n                      permissionsRoleUser?.permissionsRole?.AreaDispMan\n                        ? handleChange\n                        : false\n                    }\n                  />\n                </ThemeProvider>\n                <br></br>\n                {!state ? (\n                  <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.OFF\")}</span>\n                ) : (\n                  <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.ON\")}</span>\n                )}\n              </div>\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default Device;\n","import React, { useEffect, useState } from \"react\";\n\n//Material UI components & styles\nimport AppBar from \"@material-ui/core/AppBar\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Slide from \"@material-ui/core/Slide\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//Components\nimport Loading from \"../loading/Loading\";\n\n//Helpers\nimport { formatDateLocal } from \"../../utils/helpers\";\nimport { handleBatteryLevelColor, handleBatteryLevel } from \"./utils/helperBattery\";\n\n//GraphQL Hooks & Queries\nimport { useLazyQuery } from \"@apollo/client\";\nimport {\n  GET_BATTERY_DEVICES,\n  GET_BATTERY_NEW_DEVICES,\n} from \"../../controllers/reportController\";\n\nimport { t } from \"i18next\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction='up' ref={ref} {...props} />;\n});\n\nconst useStyles = makeStyles((theme) => ({\n  appBarDeviceFails: {\n    position: \"fixed\",\n    width: 600,\n    zIndex: 10,\n    height: 60,\n    marginBottom: 100,\n    boxShadow:\n      \"rgba(0, 0, 0, 0.09) 0px 2px 1px, rgba(0, 0, 0, 0.09) 0px 4px 2px, rgba(0, 0, 0, 0.09) 0px 8px 4px, rgba(0, 0, 0, 0.09) 0px 8px 4px, rgba(0, 0, 0, 0.09) 0px 16px 8px\",\n    backgroundColor: \"#3f9948\",\n  },\n  titleConainer: {\n    marginLeft: theme.spacing(1),\n    color: \"white\",\n    paddingTop: 12,\n    flex: 1,\n  },\n  title: {\n    fontSize: 15,\n  },\n  spacingClose: {\n    marginRight: 30,\n    padding: \"10px 15px\",\n    cursor: \"pointer\",\n    borderRadius: 50,\n    \"&:hover\": {\n      backgroundColor: \"#069C08\",\n    },\n  },\n}));\n\nconst BatteryLevel = ({ openBattery, handleCloseBattery, name, id, typeGateway }) => {\n  const [getDataBatteryReport, { data: dataBattery150, loading: loading150 }] =\n    useLazyQuery(GET_BATTERY_DEVICES);\n\n  const [getDataNewBatteryReport, { data: dataBattery700, loading: loading700 }] =\n    useLazyQuery(GET_BATTERY_NEW_DEVICES);\n\n  const queryHorus150 = {\n    variables: {\n      DeviceId: parseInt(id, 10),\n    },\n  };\n\n  const queryHorus700 = {\n    variables: {\n      itemId: id,\n    },\n  };\n\n  useEffect(() => {\n    if (typeGateway === \"horus_700\") {\n      getDataNewBatteryReport(queryHorus700);\n    } else if (typeGateway === \"horus_g150\") {\n      getDataBatteryReport(queryHorus150);\n    }\n  }, []);\n\n  if (typeGateway === \"horus_g150\" && loading150) {\n    return <Loading />;\n  } else if (typeGateway === \"horus_700\" && loading700) {\n    return <Loading />;\n  }\n\n  const handleTypeGatewayDataBattery = () => {\n    if (typeGateway === \"horus_g150\") {\n      return {\n        data: dataBattery150?.getDeviceByBatteryLevel?.data,\n        length: dataBattery150?.getDeviceByBatteryLevel?.data?.length,\n      };\n    } else if (typeGateway === \"horus_700\") {\n      return {\n        data: dataBattery700?.getAllNewDeviceByBatteryLevel?.data,\n        length: dataBattery700?.getAllNewDeviceByBatteryLevel?.data?.length,\n      };\n    }\n  };\n\n  return (\n    <>\n      <div className='battery_devices'>\n        {handleTypeGatewayDataBattery().length === 0 ||\n        handleTypeGatewayDataBattery().length === undefined ? (\n          <div className='battery_device_empty'>\n            {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.NO_DATA\")}\n          </div>\n        ) : (\n          <>\n            <div className='battery_devices_title'>\n              {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.BATTERY_STATUS\")}\n            </div>\n            <div className='battery_device_title_container'>\n              <div className='battery_device_title_date'>\n                {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.DATE\")}\n              </div>\n              <div className='battery_device_title_level'>\n                {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.LEVEL\")}\n              </div>\n            </div>\n            {[...handleTypeGatewayDataBattery().data].reverse().map(\n              (i) =>\n                formatDateLocal(i.x) && (\n                  <>\n                    <div className='battery_device_container'>\n                      <div className='battery_device_date'>{formatDateLocal(i.x)}</div>\n                      <div className='battery_device_level'>\n                        <span className='battery_device_averange'>{i.y}%</span>\n                        <span\n                          className={`battery_device_level_icon ${handleBatteryLevelColor(\n                            i.y\n                          )}`}\n                        >\n                          {handleBatteryLevel(i.y)}\n                        </span>\n                      </div>\n                    </div>\n                  </>\n                )\n            )}\n          </>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport default BatteryLevel;\n","import React, { useState, useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\n// import AutoComplete from '../../../../components/tableInformation/components/AutoComplete';\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n  },\n});\n\nconst BatteryNoData = ({ open, close, name }) => {\n  const { t } = useTranslation();\n  return (\n    <>\n      <Dialog\n        open={open}\n        onClose={close}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"auto\",\n            height: \"20%\",\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            lineHeight: \"2.6\",\n            padding: \"5px 5px 5px 15px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"auto\",\n              fontWeight: \"bold\",\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.MODAL_HEADER\")} - {name}\n          </span>\n          <IconButton onClick={close}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"60%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"18px\",\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.NO_DATA\")}\n          </span>\n\n          <ThemeProvider theme={theme}></ThemeProvider>\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n\nexport default BatteryNoData;\n","import Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { useState } from \"react\";\n\nconst GraphBatteryLevel = ({ data, typeGateway }) => {\n  function getDataGraph(typeGateway, data) {\n    let dataGraph;\n    if (typeGateway === \"horus_700\") {\n      dataGraph = data?.getAllNewDeviceByBatteryLevel?.data;\n    } else if (typeGateway === \"horus_g150\") {\n      dataGraph = data?.getDeviceByBatteryLevel?.data;\n    }\n    return dataGraph;\n  }\n  getDataGraph(typeGateway, data);\n\n  const { t } = useTranslation();\n  return (\n    <div className=\"container_battery\">\n      {getDataGraph(typeGateway, data)?.length !== 0 ? (\n        <HighchartsReact\n          highcharts={Highcharts}\n          options={{\n            chart: {\n              zoomType: \"x\",\n              type: \"spline\",\n              scrollablePlotArea: {\n                minWidth: 600,\n                scrollPositionX: 1,\n              },\n            },\n            title: {\n              text: \"\",\n              align: \"left\",\n            },\n            subtitle: {\n              text: \"\",\n              align: \"left\",\n            },\n            xAxis: {\n              type: \"datetime\",\n              labels: {\n                overflow: \"justify\",\n              },\n            },\n            yAxis: {\n              title: {\n                text: t(\n                  \"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.Y_AXIS_DESCRIPTION\"\n                ),\n              },\n              minorGridLineWidth: 0,\n              gridLineWidth: 0,\n              alternateGridColor: null,\n              plotBands: [\n                {\n                  // Light air\n                  from: 0.3,\n                  to: 1.5,\n                  color: \"rgba(68, 170, 213, 0.1)\",\n                },\n              ],\n            },\n            tooltip: {\n              valueSuffix: \"%\",\n            },\n            plotOptions: {\n              spline: {\n                lineWidth: 2,\n                states: {\n                  hover: {\n                    lineWidth: 2,\n                  },\n                },\n                marker: {\n                  enabled: false,\n                },\n                pointInterval: 3600000, // one hour\n                pointStart: Date.UTC(2023, 3, 15, 0, 0, 0),\n              },\n            },\n            series: [\n              {\n                name: t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.BATTERY\"),\n                data: getDataGraph(typeGateway, data)\n                  ? getDataGraph(typeGateway, data)\n                  : \"\",\n              },\n            ],\n            navigation: {\n              menuItemStyle: {\n                fontSize: \"5px\",\n              },\n            },\n            credits: {\n              enabled: false,\n            },\n          }}\n        />\n      ) : null}\n    </div>\n  );\n};\nexport default GraphBatteryLevel;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\n\n//Material UI components\nimport {\n  Dialog,\n  AppBar,\n  Typography,\n  Slide,\n  IconButton,\n  Toolbar,\n  makeStyles,\n} from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { useTheme } from \"@mui/material/styles\";\n\n//Apollo hooks and queries\nimport { useLazyQuery } from \"@apollo/client\";\nimport {\n  GET_BATTERY_DEVICES,\n  GET_BATTERY_NEW_DEVICES,\n} from \"../../../controllers/reportController\";\n\n//Components\nimport BatteryLevel from \"../BatteryLevel\";\nimport BatteryNoData from \"./BatteryNoData\";\nimport GraphBatteryLevel from \"./GraphBatteryLevel\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"fixed\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst GraphBatteryModal = ({\n  open,\n  name,\n  handleClose,\n  id,\n  areaName,\n  typeGateway,\n}) => {\n  const [getDataBatteryReport, { data: dataBattery150, loading: loading150 }] =\n    useLazyQuery(GET_BATTERY_DEVICES);\n\n  const [\n    getDataNewBatteryReport,\n    { data: dataBattery700, loading: loading700 },\n  ] = useLazyQuery(GET_BATTERY_NEW_DEVICES);\n\n  const [dataBattery, setDataBattery] = useState();\n  const { t } = useTranslation();\n  const classes = useStyles();\n  const theme = useTheme();\n\n  const query700 = {\n    variables: {\n      itemId: id,\n    },\n  };\n  const query150 = {\n    variables: {\n      DeviceId: parseInt(id, 10),\n    },\n  };\n\n  useEffect(() => {\n    if (typeGateway === \"horus_700\") {\n      getDataNewBatteryReport(query700);\n    } else if (typeGateway === \"horus_g150\") {\n      getDataBatteryReport(query150);\n    }\n  }, []);\n\n  useEffect(() => {\n    setDataBattery(dataBattery150 || dataBattery700);\n  }, [dataBattery150, dataBattery700]);\n\n  return (\n    <>\n      {dataBattery?.getAllNewDeviceByBatteryLevel?.data?.length ||\n      dataBattery?.getDeviceByBatteryLevel?.data?.length !== 0 ? (\n        <Dialog\n          fullScreen\n          open={open}\n          onClose={handleClose}\n          TransitionComponent={Transition}\n        >\n          <AppBar className={classes.appBar}>\n            <Toolbar>\n              <IconButton\n                edge=\"start\"\n                color=\"inherit\"\n                onClick={handleClose}\n                aria-label=\"close\"\n              >\n                <CloseIcon />\n              </IconButton>\n              <Typography variant={\"h6\"}>\n                {`${localStorage.getItem(\"nameProject\")} - ${t(\n                  \"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.MODAL_HEADER\"\n                )} ${name} - ${areaName}`}\n              </Typography>\n            </Toolbar>\n          </AppBar>\n\n          <GraphBatteryLevel data={dataBattery} typeGateway={typeGateway} />\n\n          <BatteryLevel\n            data={dataBattery}\n            name={name}\n            id={id}\n            typeGateway={typeGateway}\n          />\n        </Dialog>\n      ) : (\n        <>\n          <BatteryNoData open={open} close={handleClose} name={name} />\n        </>\n      )}\n    </>\n  );\n};\nexport default GraphBatteryModal;\n","import React, { useEffect, useContext, useState } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components and styles\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Switch from \"@material-ui/core/Switch\";\n\n//Swal modal component\nimport Swal from \"sweetalert2\";\n\n//Components\nimport GraphBatteryModal from \"./GraphBatteryLevel/GraphBatteryModal\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//Constants\nimport { Devices } from \"../../constants/devices_types\";\n\n//Helpers\nimport { ExtractTypeGateway } from \"../../utils/helpers\";\nimport {\n  handleBatteryLevelColor,\n  handleBatteryLevel,\n} from \"./utils/helperBattery\";\n\n//Images\nimport alert from \"../../assets/alert-icon.png\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst SensorPuerta = ({ item, send, areaName }) => {\n  const typeGateway = ExtractTypeGateway();\n  const { t } = useTranslation();\n  const [open, setOpen] = useState(false);\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n\n  const handleCloseBattery = () => {\n    setOpen(!open);\n  };\n\n  const [state, setState] = React.useState(\n    item?.variables.Tripped == \"1\" ? true : false\n  );\n  const [BatteryLevel, setBatteryLevel] = React.useState(\n    parseInt(item?.variables?.BatteryLevel)\n  );\n  const [armed, setArmed] = React.useState(false);\n  const [load, setLoad] = React.useState(false);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  useEffect(() => {\n    setState(item?.variables?.Tripped == \"1\" ? true : false);\n    if (item?.variables?.Armed) {\n      setArmed(item?.variables?.Armed == \"1\" ? true : false);\n    }\n    if (item?.variables?.BatteryLevel) {\n      setBatteryLevel(parseInt(item?.variables?.BatteryLevel));\n    }\n  }, [item]);\n\n  const handleChange = async (event) => {\n    await Swal.fire({\n      title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n      text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n      icon: \"info\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: t(\n        \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n      ),\n    }).then((result) => {\n      if (result.isConfirmed) {\n        setLoad(true);\n        call();\n        setArmed(!armed);\n      }\n    });\n  };\n\n  function call() {\n    return new Promise(() => {\n      setTimeout(() => {\n        send(item, armed);\n      }, 2000);\n    });\n  }\n\n  return (\n    <>\n      {item ? (\n        <div className=\"_generic_container\">\n          <div\n            className={`_generics_container_title_status ${\n              item?.variables?.CommFailure == \"1\"\n                ? \"__status_comfailure__\"\n                : null\n            }`}\n          >\n            <div className=\"_generic__title\">\n              <span>{item?.alias}</span>\n            </div>\n            <div\n              className={`${\n                item?.variables?.CommFailure == \"1\"\n                  ? \"_generic__status__alert\"\n                  : \"__generic_sensor_wifi\"\n              }`}\n            >\n              {item?.variables?.CommFailure == \"1\" ? (\n                <>\n                  <div className=\"battery_status\">\n                    {BatteryLevel ? (\n                      <span className=\"battery_percentage\">\n                        {BatteryLevel}%\n                      </span>\n                    ) : null}\n                    <div\n                      className=\"battery_icon_container\"\n                      onClick={handleCloseBattery}\n                    >\n                      <span className={handleBatteryLevelColor(BatteryLevel)}>\n                        {handleBatteryLevel(BatteryLevel)}\n                      </span>\n                    </div>\n                    <div className=\"__icon_alert_sensor\">\n                      <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n                    </div>\n                  </div>\n                </>\n              ) : (\n                <div className=\"battery_status\" onClick={handleCloseBattery}>\n                  {BatteryLevel ? (\n                    <span className=\"battery_percentage\">{BatteryLevel}%</span>\n                  ) : null}\n                  <div className=\"battery_icon_container\">\n                    <span className={handleBatteryLevelColor(BatteryLevel)}>\n                      {handleBatteryLevel(BatteryLevel)}\n                    </span>\n                  </div>\n                </div>\n              )}\n            </div>\n          </div>\n          <div className=\"_generic_container_clasification\">\n            <div\n              className={`_generic_clasification ${\n                load ? \"__loading_clasification\" : false\n              }`}\n            >\n              <span>\n                <img\n                  src={\n                    state ? Devices.DOOR_WINDOW_TRIPPED : Devices.DOOR_WINDOW\n                  }\n                  alt=\"clasification\"\n                  width=\"60\"\n                  height=\"60\"\n                />\n              </span>\n            </div>\n            <div className=\"__loading_devices\">\n              {load ? <Loading_devices /> : false}\n            </div>\n            <div\n              className={`_generic_toggle row-decoration ${\n                load ? \"__loading_toogle\" : false\n              }`}\n            >\n              <div>\n                <ThemeProvider theme={innerTheme}>\n                  <Switch\n                    size=\"medium\"\n                    checked={armed}\n                    onChange={\n                      permissionsRoleUser?.permissionsRole?.AreaDispMan\n                        ? handleChange\n                        : false\n                    }\n                  />\n                </ThemeProvider>\n                <br></br>\n                {!armed ? (\n                  <span>\n                    {t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.DISASSEMBLED\")}\n                  </span>\n                ) : (\n                  <span>{t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.ASSEMBLED\")}</span>\n                )}\n              </div>\n            </div>\n          </div>\n\n          <GraphBatteryModal\n            areaName={areaName}\n            open={open}\n            name={item?.alias}\n            handleClose={handleCloseBattery}\n            typeGateway={typeGateway}\n            id={item?.id}\n          />\n        </div>\n      ) : (\n        <></>\n      )}\n    </>\n  );\n};\nexport default SensorPuerta;\n","import React, { useEffect, useContext } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components and styles\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Switch from \"@material-ui/core/Switch\";\n\n//Swal modal component\nimport Swal from \"sweetalert2\";\n\n//Components\nimport GraphBatteryModal from \"./GraphBatteryLevel/GraphBatteryModal\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//Constants\nimport { Devices } from \"../../constants/devices_types\";\n\n//Helpers\nimport { ExtractTypeGateway } from \"../../utils/helpers\";\nimport {\n  handleBatteryLevelColor,\n  handleBatteryLevel,\n} from \"./utils/helperBattery\";\n\n//Images\nimport alert from \"../../assets/alert-icon.png\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\nconst SensorMovimiento = ({ item, send, areaName }) => {\n  const typeGateway = ExtractTypeGateway();\n  const { t } = useTranslation();\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n  const [state, setState] = React.useState(\n    item?.variables?.Tripped == \"1\" ? true : false\n  );\n  const [BatteryLevel, setBatteryLevel] = React.useState(\n    item?.variables?.BatteryLevel ? parseInt(item?.variables?.BatteryLevel) : \"\"\n  );\n  const [armed, setArmed] = React.useState(false);\n  const [load, setLoad] = React.useState(false);\n  const [open, setOpen] = React.useState(false);\n\n  const handleCloseBattery = () => {\n    setOpen(!open);\n  };\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  useEffect(() => {\n    setState(item?.variables?.Tripped == \"1\" ? true : false);\n    if (item?.variables?.Armed) {\n      setArmed(item?.variables?.Armed == \"1\" ? true : false);\n    }\n    if (item?.variables?.BatteryLevel) {\n      setBatteryLevel(\n        item?.variables?.BatteryLevel\n          ? parseInt(item?.variables?.BatteryLevel)\n          : \"\"\n      );\n    }\n  }, [item]);\n\n  const handleChange = async (event) => {\n    // await Swal.fire({\n    //   title: t('VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE'),\n    //   text: t('VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT'),\n    //   icon: 'info',\n    //   showCancelButton: true,\n    //   confirmButtonColor: '#3085d6',\n    //   cancelButtonColor: '#d33',\n    //   confirmButtonText: t('VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT'),\n    // }).then((result) => {\n    // if (result.isConfirmed) {\n    setLoad(true);\n    call();\n    setArmed(!armed);\n    //   }\n    //  });\n  };\n\n  function call() {\n    return new Promise(() => {\n      setTimeout(() => {\n        send(item, armed);\n      }, 2000);\n    });\n  }\n\n  /*   console.log(\"BatteryLevel:\", item?.variables?.BatteryLevel);\n   */\n  return (\n    <div className=\"_generic_container\">\n      <div\n        className={`_generics_container_title_status ${\n          item?.variables?.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n        }`}\n      >\n        <div className=\"_generic__title\">\n          <span>{item?.alias}</span>\n        </div>\n        <div\n          className={`${\n            item?.variables?.CommFailure == \"1\"\n              ? \"_generic__status__alert\"\n              : \"__generic_sensor_wifi\"\n          }`}\n        >\n          {item?.variables?.CommFailure == \"1\" ? (\n            <>\n              <div className=\"battery_status\" onClick={handleCloseBattery}>\n                {BatteryLevel ? (\n                  <span className=\"battery_percentage\">{BatteryLevel}%</span>\n                ) : null}\n                <div className=\"battery_icon_container\">\n                  <span\n                    className={handleBatteryLevelColor(BatteryLevel)}\n                    onClick={handleCloseBattery}\n                  >\n                    {handleBatteryLevel(BatteryLevel)}\n                  </span>\n                </div>\n\n                <div className=\"__icon_alert_sensor\">\n                  <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n                </div>\n              </div>\n            </>\n          ) : (\n            <div className=\"battery_status\" onClick={handleCloseBattery}>\n              {BatteryLevel ? (\n                <span className=\"battery_percentage\">{BatteryLevel} %</span>\n              ) : null}\n\n              <div className=\"battery_icon_container\">\n                <span className={handleBatteryLevelColor(BatteryLevel)}>\n                  {handleBatteryLevel(BatteryLevel)}\n                </span>\n              </div>\n            </div>\n          )}\n        </div>\n      </div>\n      <div className=\"_generic_container_clasification\">\n        <div\n          className={`_generic_clasification ${\n            load ? \"__loading_clasification\" : false\n          }`}\n        >\n          <span>\n            <img\n              src={\n                state ? Devices.MOTION_SENSOR_TRIPPED : Devices.MOTION_SENSOR\n              }\n              alt=\"clasification\"\n              width=\"60\"\n              height=\"60\"\n            />\n          </span>\n        </div>\n        <div className=\"__loading_devices\">\n          {load ? <Loading_devices /> : false}\n        </div>\n        <div\n          className={`_generic_toggle row-decoration ${\n            load ? \"__loading_toogle\" : false\n          }`}\n        >\n          <div>\n            <ThemeProvider theme={innerTheme}>\n              <Switch\n                size=\"medium\"\n                checked={armed}\n                onChange={\n                  permissionsRoleUser?.permissionsRole?.AreaDispMan\n                    ? handleChange\n                    : false\n                }\n              />\n            </ThemeProvider>\n            <br></br>\n            {!armed ? (\n              <span>\n                {t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.DISASSEMBLED\")}\n              </span>\n            ) : (\n              <span>{t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.ASSEMBLED\")}</span>\n            )}{\" \"}\n          </div>\n        </div>\n      </div>\n      <GraphBatteryModal\n        areaName={areaName}\n        open={open}\n        name={item?.alias}\n        handleClose={handleCloseBattery}\n        id={item?.id}\n        typeGateway={typeGateway}\n      />\n    </div>\n  );\n};\n\nexport default SensorMovimiento;\n","import React, { useEffect, useContext } from \"react\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\nimport alert from \"../../assets/alert-icon.png\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\nconst SensorHumo = ({ item, send }) => {\n  const { t } = useTranslation();\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n  const [state, setState] = React.useState(\n    item.variables.Tripped == \"1\" ? true : false\n  );\n  const [BatteryLevel, setBatteryLevel] = React.useState(\n    item.variables.BatteryLevel\n  );\n  const [armed, setArmed] = React.useState(false);\n  const [load, setLoad] = React.useState(false);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  useEffect(() => {\n    setState(item.variables.Tripped == \"1\" ? true : false);\n    if (item.variables.Armed) {\n      setArmed(item.variables.Armed == \"1\" ? true : false);\n    }\n    if (item.variables.BatteryLevel) {\n      setBatteryLevel(item.variables.BatteryLevel);\n    }\n  }, [item]);\n\n  const handleChange = async (event) => {\n    await Swal.fire({\n      title: \"¿Estás seguro?\",\n      text: \"Esta acción cambiará el estado del dispositivo\",\n      icon: \"info\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: \"Si, estoy seguro!\",\n    }).then((result) => {\n      if (result.isConfirmed) {\n        setLoad(true);\n        call();\n        setArmed(!armed);\n      }\n    });\n  };\n\n  function call() {\n    return new Promise(() => {\n      setTimeout(() => {\n        send(item, armed);\n      }, 2000);\n    });\n  }\n  return (\n    <div className=\"_generic_container\">\n      <div\n        className={`_generics_container_title_status ${\n          item.variables.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n        }`}\n      >\n        <div className=\"_generic__title\">\n          <span>{item.alias}</span>\n        </div>\n        <div\n          className={`${\n            item.variables.CommFailure == \"1\"\n              ? \"_generic__status__alert\"\n              : \"__generic_sensor_wifi\"\n          }`}\n        >\n          {item.variables.CommFailure == \"1\" ? (\n            <span className=\"__icon_alert_sensor\">\n              <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n            </span>\n          ) : (\n            <div className=\"_battery__status\">\n              <div className=\"__percent\">\n                {BatteryLevel && <span>{BatteryLevel} %</span>}\n              </div>\n              <div className=\"__battery\">\n                <span\n                  className={\n                    !BatteryLevel\n                      ? \"__icon_battery_sensor_unknown\"\n                      : BatteryLevel < 10\n                      ? \"__icon_battery_sensor_alert\"\n                      : \"__icon_battery_sensor\"\n                  }\n                >\n                  {!BatteryLevel ? (\n                    <BatteryUnknownIcon />\n                  ) : BatteryLevel > 90 ? (\n                    <BatteryFullIcon />\n                  ) : BatteryLevel > 80 ? (\n                    <Battery90Icon />\n                  ) : BatteryLevel > 70 ? (\n                    <Battery80Icon />\n                  ) : BatteryLevel > 50 ? (\n                    <Battery60Icon />\n                  ) : BatteryLevel > 40 ? (\n                    <Battery50Icon />\n                  ) : BatteryLevel > 20 ? (\n                    <Battery30Icon />\n                  ) : BatteryLevel > 10 ? (\n                    <Battery20Icon />\n                  ) : (\n                    <BatteryAlertIcon />\n                  )}\n                </span>\n              </div>\n            </div>\n          )}\n        </div>\n      </div>\n      <div className=\"_generic_container_clasification\">\n        <div\n          className={`_generic_clasification ${\n            load ? \"__loading_clasification\" : false\n          }`}\n        >\n          <span>\n            <img\n              src={\n                state\n                  ? Devices.SMOKE_SENSOR_TRIPPED\n                  : Devices.SMOKE_SENSOR_DEFAULT\n              }\n              alt=\"clasification\"\n              width=\"60\"\n              height=\"60\"\n            />\n          </span>\n        </div>\n        <div className=\"__loading_devices\">\n          {load ? <Loading_devices /> : false}\n        </div>\n        <div\n          className={`_generic_toggle row-decoration ${\n            load ? \"__loading_toogle\" : false\n          }`}\n        >\n          <div>\n            <ThemeProvider theme={innerTheme}>\n              <Switch\n                size=\"medium\"\n                checked={armed}\n                onChange={\n                  permissionsRoleUser.permissionsRole?.AreaDispMan\n                    ? handleChange\n                    : false\n                }\n              />\n            </ThemeProvider>\n            <br></br>\n            {!armed ? (\n              <span>{t(\"VIEW_AREA.COMPONENT_SMOKE_SENSOR.DISASSEMBLED\")}</span>\n            ) : (\n              <span>{t(\"VIEW_AREA.COMPONENT_SMOKE_SENSOR.ASSEMBLED\")}</span>\n            )}{\" \"}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default SensorHumo;\n","import React from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\n\nconst SensorTemperatura = ({ item }) => {\n\n  function selectIcon(temperature) {\n    if (temperature >= 25) {\n      return Devices.TEMPERATURE_HEAT;\n    } else if (temperature < 22) {\n      return Devices.TEMPERATURE_COOL;\n    } else {\n      return Devices.TEMPERATURE_AMBIENT;\n    }\n  }\n\n  return (\n    <>\n    \n    <div className=\"_generic_container\">\n      <div className=\"_generics_container_title_status\">\n        <div className=\"_generic__title\">\n          <span>{item?.alias}</span>\n        </div>\n        <div\n          className={`${\n            item?.variables?.CommFailure == \"1\"\n              ? \"_generic__status__alert\"\n              : \"_generic__status__wifi\"\n          }`}\n        >\n          {item?.variables?.CommFailure == \"1\" ? (\n            <span className=\"__icon_alert_sensor\">\n              <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n            </span>\n          ) : (\n            <span className=\"__icon_wifi_sensor\">\n              <i class=\"fas fa-wifi\"></i>\n            </span>\n          )}\n        </div>\n      </div>\n      <div className=\"_generic_container_clasification\">\n        <div className=\"_generic_clasification\">\n          {item?.variables?.CurrentTemperature === undefined ? (\n            <span>\n              <img\n                 src={selectIcon(item?.variables?.status?.value)}\n                 alt=\"clasification\"\n                 width=\"60\"\n                 height=\"60\"\n            />\n          </span>\n          ):(\n          <span>\n            <img\n              src={selectIcon(item?.variables?.CurrentTemperature)}\n              alt=\"clasification\"\n              width=\"60\"\n              height=\"60\"\n            />\n          </span>\n          )}\n          \n        </div>\n        <div></div>\n        <div className=\"_generic_toggle\">\n          {item?.variables?.CurrentTemperature === undefined ? (\n            <span>{item?.variables?.status?.value.toFixed(0)} °C</span>\n          ) : (\n            <span>{item?.variables?.CurrentTemperature} °C</span>\n          )}\n          \n        </div>\n      </div>\n    </div>\n    </>\n  );\n};\n\nexport default SensorTemperatura;\n","import React from \"react\";\nimport SENSOR_HUMIDITY from \"../../assets/Humedad.png\";\n\nconst SensorHumedad = ({ item }) => {\n \n  return (\n    <div className='_generic_container'>\n      <div\n        className={`_generics_container_title_status ${\n          item.variables.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n        }`}\n      >\n        <div className='_generic__title'>\n          <span>{item.alias}</span>\n        </div>\n        <div\n          className={`${\n            item?.variables.CommFailure == \"1\"\n              ? \"_generic__status__alert\"\n              : \"_generic__status__wifi\"\n          }`}\n        >\n          {item?.variables?.CommFailure == \"1\" ? (\n            <span className='__icon_alert_sensor'>\n              <img src={alert} alt='alert' width='22' height='22' />\n            </span>\n          ) : (\n            <span className='__icon_wifi_sensor'>\n              <i class='fas fa-wifi'></i>\n            </span>\n          )}\n        </div>\n      </div>\n      <div className='_generic_container_clasification'>\n        <div className='_generic_clasification'>\n          <span>\n            <img src={SENSOR_HUMIDITY} alt='clasification' width='60' height='60' />\n          </span>\n        </div>\n        <div></div>\n        <div className='_generic_toggle'>\n          {item.variables.CurrentLevel === undefined ? (\n            <span className='_sensor_humedity_text'>{item.variables.status.value} %</span>\n          ):(\n            <span className='_sensor_humedity_text'>{item.variables.CurrentLevel} %</span>\n          )}\n          \n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default SensorHumedad;\n","export default \"data:image/png;base64,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\"","//React hooks\nimport React, { useEffect, useContext, useState, useRef } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Router dom elements\nimport { Link } from \"react-router-dom\";\n\n//Material UI\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport { green } from \"@material-ui/core/colors\";\nimport IconButton from \"@mui/material/IconButton\";\n// import NavigateNextIcon from \"@mui/icons-material/NavigateNext\";\nimport RoomPreferencesIcon from \"@mui/icons-material/RoomPreferences\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { styled } from \"@mui/material/styles\";\n\n//Helper functions\nimport {\n  handleBatteryLevelColor,\n  handleBatteryLevel,\n} from \"../utils/helperBattery\";\n\n//S3 Imagenes\nimport { Devices } from \"../../../constants/devices_types\";\n\n//Components\nimport alert from \"../../../assets/alert-icon.png\";\nimport Loading_devices from \"../../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\n\n// import ModalDoorLock from \"../../modal/ModalDoorLock\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst StyledIconButton = styled(IconButton)({\n  backgroundColor: \"#EEEEEE\",\n  \"&:hover\": {\n    backgroundColor: \"#CCCCCC\",\n  },\n});\n\nconst Cerradura = ({ item, send, contId }) => {\n  const {\n    infoMessage,\n    setInfoMessage,\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    warningMessage,\n    controllerId,\n  } = useContext(AuthContext);\n\n  const [state, setState] = useState(\n    item.variables.Status == \"1\" ? true : false\n  );\n  const [BatteryLevel, setBatteryLevel] = useState(\n    parseInt(item.variables.BatteryLevel)\n  );\n  const [load, setLoad] = useState(false);\n  const [open, setOpen] = useState(false);\n  const [socketSnackbar, setSocketSnackbar] = useState(null);\n  const socketInterval = useRef(null);\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage, warningMessage]);\n\n  useEffect(() => {\n    setState(item?.variables?.Status == \"1\" ? true : false);\n    clearInterval(socketInterval.current);\n    if (item?.variables?.BatteryLevel) {\n      setBatteryLevel(item?.variables?.BatteryLevel);\n    }\n  }, [item]);\n\n  useEffect(() => {\n    if (socketSnackbar) {\n      setLoad(false);\n      setSocketSnackbar(null);\n    } else if (socketSnackbar === false) {\n      setLoad(false);\n      setSocketSnackbar(null);\n      setState(item?.variables?.Status == \"1\" ? true : false);\n      setErrorMessage(true);\n    }\n  }, [socketSnackbar]);\n\n  const handleChange = async (event) => {\n    await Swal.fire({\n      title: \"¿Estás seguro?\",\n      text: \"Esta acción cambiará el estado del dispositivo\",\n      icon: \"info\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: \"Si, estoy seguro!\",\n    }).then((result) => {\n      if (result.isConfirmed) {\n        setLoad(true);\n        call();\n        setState(!state);\n      }\n    });\n  };\n\n  function call() {\n    return new Promise(() => {\n      if (\n        parseInt(item?.variables?.CommFailure) !== 1 ||\n        item?.variables?.CommFailure === null ||\n        item?.variables?.CommFailure === undefined\n      ) {\n        send(item, state);\n        SocketTimeValidationResponse();\n      } else {\n        SocketTimeValidationResponse();\n      }\n    });\n  }\n\n  const SocketTimeValidationResponse = () => {\n    clearInterval(socketInterval.current);\n    let count = 0;\n    socketInterval.current = setInterval(() => {\n      count++;\n      if (count > 15) {\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(false);\n        setLoad(false);\n      }\n    }, 1000);\n  };\n\n  const handleCloseBattery = () => {\n    setOpen(!open);\n  };\n\n  return (\n    <div className=\"_generic_container\">\n      <div\n        className={`_generics_container_title_status ${\n          item?.variables?.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n        }`}\n      >\n        <div className=\"_generic__title\">\n          <span>{item?.alias}</span>\n        </div>\n        <div\n          className={`${\n            item?.variables?.CommFailure == \"1\"\n              ? \"_generic__status__alert\"\n              : \"__generic_sensor_wifi\"\n          }`}\n        >\n          {item?.variables?.CommFailure == \"1\" ? (\n            <span className=\"__icon_alert_sensor\">\n              <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n            </span>\n          ) : (\n            <div className=\"battery_status\">\n              {BatteryLevel ? (\n                <span className=\"battery_percentage\">{BatteryLevel}%</span>\n              ) : null}\n              <div className=\"battery_icon_container\">\n                <span\n                  className={handleBatteryLevelColor(BatteryLevel)}\n                  onClick={handleCloseBattery}\n                >\n                  {handleBatteryLevel(BatteryLevel)}\n                </span>\n              </div>\n            </div>\n          )}\n        </div>\n      </div>\n      <div className=\"_generic_container_clasification_action\">\n        <div\n          className={`_generic_clasification ${\n            load ? \"__loading_clasification\" : false\n          }`}\n        >\n          <span>\n            <img\n              src={state ? Devices.DOOR_BLOQUEADO : Devices.DOOR_DESBLOQUEADO}\n              alt=\"clasification\"\n              width=\"60\"\n              height=\"60\"\n            />\n          </span>\n        </div>\n        <div className=\"__loading_devices\">\n          {load ? <Loading_devices /> : false}\n        </div>\n        <div\n          className={`_generic_toggle row-decoration ${\n            load ? \"__loading_toogle\" : false\n          }`}\n        >\n          <div>\n            <ThemeProvider theme={innerTheme}>\n              <Switch size=\"medium\" checked={state} onChange={handleChange} />\n            </ThemeProvider>\n            <br></br>\n            {state ? <span>Bloqueado</span> : <span>Desbloqueado</span>}{\" \"}\n          </div>\n        </div>\n        <div className=\"_generic_clasification\">\n          <Link to={`../doorlock/${contId}/${item.zwaveId}`}>\n            <StyledIconButton>\n              <RoomPreferencesIcon />\n            </StyledIconButton>\n          </Link>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Cerradura;\n","import styled from 'styled-components';\n\nexport const WrapperIcon = styled.div`\n  height: ${props => props.size ? `${props.size}px` : '60px'};\n  width: ${props => props.size ? `${props.size}px` : '60px'};\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n`;\n\n\nexport const WindowWrapper = styled.div`\n  width: 75%;\n  height: 90%;\n  border: solid 3px #6d6969;\n  border-bottom: none;\n  border-radius: 8px 8px 0px 0px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n`;\n\nexport const WindowLevel = styled.div`\n  width: 100%;\n  //height: ${props => props?.level >= 0 ? `${props?.level}%` : '100%'};\n  height: ${props=> 100 - props.level}%;\n  border-radius: 5px 5px 0px 0px;\n  background: repeating-linear-gradient(\n    180deg,\n    #6d6969,\n    #6d6969 2.5px,\n    transparent 2.5px,\n    transparent 5px\n  );\n  transition: height 0.3s ease;\n`;\n\n\nexport const BaseCortain = styled.span`\n  width: 100%;\n  height: 5px;\n  background-color: #6d6969;\n`;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n  WrapperIcon,\n  WindowWrapper,\n  WindowLevel,\n  BaseCortain,\n} from \"./IconCortain.style\";\n\nconst IconCortain = (props) => {\n  return (\n    <WrapperIcon size={props.size}>\n      <WindowWrapper>\n        <WindowLevel level={props.level} />\n        {/* <PointWindow /> */}\n      </WindowWrapper>\n      <BaseCortain />\n    </WrapperIcon>\n  );\n};\n\nIconCortain.propTypes = {\n  level: PropTypes.number.isRequired,\n  size: PropTypes.string,\n};\n\nexport default IconCortain;\n","import styled from \"styled-components\";\n\nexport const WrapperCurtainSwitch = styled.div`\n  display: grid;\n  grid-template-rows: 1fr 1fr 1fr;\n  grid-template-columns: 1fr 1fr 1fr 1fr 1fr;\n  gap: 0px;\n  height: 145px;\n  border: #dbdfdf 1px solid;\n  border-radius: 15px;\n  box-shadow: 1px 2px 1px 1px rgba(grey, 0.3);\n`;\nexport const HeaderCurtainswitch = styled.div`\n  //background-color: #E956CC;\n  grid-row-start: 1;\n  grid-column-start: 1;\n  grid-row-end: 2;\n  grid-column-end: 6;\n  border-radius: 15px 15px 0px 0px;\n  box-shadow: 1px 2px 1px 1px rgba(grey, 0.3);\n  background-color: ${(props) =>\n    props.onLine ? \"rgba(241, 241, 241, 1)\" : \"rgba(191, 38, 38, 0.3)\"};\n  display: flex;\n  justify-items: flex-start;\n  align-items: center;\n  padding-left: 5%;\n  font-size: 17px;\n`;\n\nexport const WrapperCurtainIcon = styled.div`\n  //background-color: #DA9EAC;\n  grid-row-start: 2;\n  grid-column-start: 1;\n  grid-row-end: 4;\n  grid-column-end: 3;\n  border-radius: 0px 0px 0px 15px;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  gap: 5px;\n`;\n\nexport const WrapperActions = styled.div`\n  //background-color: #7BBD69;\n  grid-row-start: 2;\n  grid-column-start: 3;\n  grid-row-end: 4;\n  grid-column-end: 6;\n  border-radius: 0px 0px 15px 0px;\n  padding-right: 2rem;\n  padding-top: 0.5rem;\n  gap: 15px;\n`;\nexport const WrapperActionsButtons = styled.div`\n  display: flex;\n  justify-content: space-between;\n`;\nexport const ActionsButton = styled.button`\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  background-color: #e2e3e5;\n  transition: background-color 0.3s ease;\n  border-radius: 8px;\n  font-size: 15px;\n  padding: 5px;\n  border: none;\n  cursor: pointer;\n  &:hover {\n    background-color: #929e9e;\n  }\n`;\n","export function handleChangeLevel(\n  limite,\n  incrementar,\n  level,\n  setReferenceLevel,\n  intervalRef,\n  setLevel,\n  referenceLevel\n) {\n  setLevel(referenceLevel);\n  clearInterval(intervalRef?.current);\n  intervalRef.current = setInterval(() => {\n    setReferenceLevel((prevLevel) => {\n      const step = 10;\n      let newValue = incrementar ? prevLevel + step : prevLevel - step;\n      newValue = incrementar\n        ? Math.min(newValue, limite)\n        : Math.max(newValue, 0);\n      // Si el nuevo valor alcanza el límite, actualiza directamente con setLevel y limpia el intervalo\n      if (newValue === limite || (!incrementar && newValue <= 0)) {\n        clearInterval(intervalRef?.current);\n        setLevel(newValue); // Asegura que el nivel se actualice al valor de newValue cuando se detiene\n      }\n      return newValue;\n    });\n  }, 500);\n}\n\nexport function initialValue(typeGateway, data) {\n  if (typeGateway === \"horus_700\") {\n    const found = data?.curtains?.variables?.items?.find(\n      (element) => element.name === \"dimmer\"\n    );\n    return parseInt(found.status);\n  } else if (typeGateway === \"horus_g150\") {\n    return parseInt(data?.item?.variables?.LoadLevelStatus);\n  }\n}\n\nexport function stopChange(intervalRef) {\n  clearInterval(intervalRef.current);\n}\n\nexport function handleSliderChange(\n  newValue,\n  setLevel,\n  intervalRef,\n  setReferenceLevel\n) {\n  stopChange(intervalRef);\n  setLevel(newValue);\n  setReferenceLevel(newValue);\n}\n\nexport const handlerOnlineCurtain = (\n  curtainStatus700,\n  controllerStatus,\n  curtainStatus150,\n  typeGateway\n) => {\n  if (typeGateway === \"horus_700\") {\n    if (curtainStatus700 && controllerStatus) {\n      return true;\n    } else {\n      return false;\n    }\n  } else if (typeGateway === \"horus_g150\") {\n    if (curtainStatus150 === \"0\" || curtainStatus150 === undefined) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n};\n\nexport const sendWebSocketData = (\n  dataSentG150,\n  dataSentH700,\n  client,\n  typeGateway,\n  sendMessage,\n  setEnableSlider\n) => {\n  try {\n    if (typeGateway === \"horus_g150\") {\n      if (client && client.readyState === WebSocket.OPEN) {\n        client.send(JSON.stringify(dataSentG150));\n        return { success: true, message: \"Datos enviados exitosamente.\" };\n      } else {\n        console.error(\n          \"El socket no está abierto o no está listo para enviar datos.\"\n        );\n        return {\n          success: false,\n          message:\n            \"El socket no está abierto o no está listo para enviar datos.\",\n        };\n      }\n    } else if (typeGateway === \"horus_700\") {\n      sendMessage({\n        id: String(dataSentH700?.id),\n        eventType: dataSentH700?.eventType,\n        value: dataSentH700?.value,\n        channel: dataSentH700?.serial,\n        serial: dataSentH700?.serial,\n      });\n      if (dataSentH700?.eventType === \"dimmer_stop\") {\n        setEnableSlider(true);\n      }\n    }\n  } catch (error) {\n    console.error(\"Error al enviar datos:\", error.message);\n    return { success: false, message: \"Error al enviar datos.\" };\n  }\n};\n","import React, { useState, useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useLocation } from \"react-router-dom\";\nimport IconCortain from \"./components/IconCortain\";\nimport {\n  WrapperCurtainSwitch,\n  HeaderCurtainswitch,\n  WrapperCurtainIcon,\n  WrapperActions,\n  WrapperActionsButtons,\n  ActionsButton,\n} from \"./Curtain.Style\";\nimport {\n  handleChangeLevel,\n  handlerOnlineCurtain,\n  stopChange,\n  handleSliderChange,\n  sendWebSocketData,\n  initialValue,\n} from \"./helperCurtain\";\nimport { ExtractTypeGateway } from \"../../../utils/helpers\";\nimport Slider, { SliderThumb } from \"@mui/material/Slider\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { styled } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst iOSBoxShadow =\n  \"0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.13),0 0 0 1px rgba(0,0,0,0.02)\";\n\nconst IOSSlider = styled(Slider)(({ theme }) => ({\n  color: theme.palette.mode === \"dark\" ? \"#0a84ff\" : \"#007bff\",\n  height: 5,\n  padding: \"15px 0\",\n  \"& .MuiSlider-thumb\": {\n    height: 20,\n    width: 20,\n    backgroundColor: \"#fff\",\n    boxShadow: \"0 0 2px 0px rgba(0, 0, 0, 0.1)\",\n    \"&:focus, &:hover, &.Mui-active\": {\n      boxShadow: \"0px 0px 3px 1px rgba(0, 0, 0, 0.1)\",\n      \"@media (hover: none)\": {\n        boxShadow: iOSBoxShadow,\n      },\n    },\n    \"&:before\": {\n      boxShadow:\n        \"0px 0px 1px 0px rgba(0,0,0,0.2), 0px 0px 0px 0px rgba(0,0,0,0.14), 0px 0px 1px 0px rgba(0,0,0,0.12)\",\n    },\n  },\n  \"& .MuiSlider-valueLabel\": {\n    fontSize: 12,\n    fontWeight: \"normal\",\n    top: 5,\n    backgroundColor: \"unset\",\n    color: theme.palette.text.primary,\n    \"&::before\": {\n      display: \"none\",\n    },\n    \"& *\": {\n      background: \"transparent\",\n      color: theme.palette.mode === \"dark\" ? \"#fff\" : \"#000\",\n    },\n  },\n  \"& .MuiSlider-track\": {\n    border: \"none\",\n    height: 5,\n  },\n  \"& .MuiSlider-rail\": {\n    opacity: 0.5,\n    boxShadow: \"inset 0px 0px 4px -2px #000\",\n    backgroundColor: \"#d0d0d0\",\n  },\n}));\n\nconst CurtainSwitch = (props) => {\n  const { t } = useTranslation();\n  const typeGateway = ExtractTypeGateway();\n  const controllerStatus = props?.controllerStatus;\n  const dataSocket = props?.dataSocket;\n  const [idCourtain, setIdCourtain] = useState(props?.item?.id);\n  const itemH700 = props?.curtains?.variables?.items?.find(\n    (element) => element.name === \"dimmer\"\n  );\n  const itemStopH700 = props?.curtains?.variables?.items?.find(\n    (element) => element.name === \"dimmer_stop\"\n  );\n  const [enableSlider, setEnableSlider] = useState(true);\n  const [level, setLevel] = useState(\n    props?.item?.variables?.LoadLevelStatus\n      ? props?.item?.variables?.LoadLevelStatus\n      : itemH700?.status\n  );\n  const [referenceLevel, setReferenceLevel] = useState(\n    initialValue(typeGateway, props)\n  );\n  const initialLevel = props?.item?.variables?.LoadLevelStatus\n    ? props?.item?.variables?.LoadLevelStatus\n    : itemH700?.status;\n  const [client, setClient] = useState(null);\n  const intervalRef = useRef(null);\n\n  function valuetext(value) {\n    return `${value}%`;\n  }\n  initialValue(typeGateway, props);\n\n  const dataSentG150 = {\n    id_device: props?.item?.id_in_controller,\n    serial: props?.serial,\n    action: \"attenuate\",\n    value: level,\n    variable: \"ChangeStatus\",\n  };\n\n  const dataSentH700 = {\n    serial: props?.serial,\n    id: itemH700?.item_id,\n    eventType: \"dimmer_updated\",\n    value: level,\n  };\n\n  const dataStopG150 = {\n    id_device: props?.item?.id_in_controller,\n    serial: props?.serial,\n    action: \"windowsStop\",\n    variable: \"ChangeStatus\",\n  };\n\n  const dataStopH700 = {\n    serial: props?.serial,\n    id: itemStopH700?.item_id,\n    eventType: \"dimmer_stop\",\n    value: 0,\n  };\n\n  const curtainStatus150 = {\n    conFailure: props?.item?.variables?.CommFailure,\n    visible: props?.item?.visible,\n  };\n\n  const curtainStatus700 = {\n    onLine: props?.curtains?.variables?.onLine,\n    visible: props?.curtains?.visible,\n  };\n\n  useEffect(() => {\n    const timerId = setTimeout(() => {\n      if (level !== initialLevel) {\n        sendWebSocketData(\n          dataSentG150,\n          dataSentH700,\n          client,\n          typeGateway,\n          props?.sendMessage\n        );\n      }\n    }, 1500);\n    return () => clearTimeout(timerId);\n  }, [level]);\n\n  useEffect(() => {\n    if (\n      props?.serial !== undefined &&\n      props?.endPoint !== null &&\n      props?.endPoint !== undefined\n    ) {\n      if (client) {\n        client.onerror = client.onopen = client.onclose = null;\n        client.close();\n      }\n      const newClient = new W3CWebSocket(`${props?.endPoint}`);\n      newClient.onopen = () => {\n        if (props?.serial)\n          newClient.send(JSON.stringify({ channel: props?.serial }));\n      };\n      newClient.onerror = function () {\n        console.log(\"Se ha producido un error en el cliente del socket\");\n      };\n      newClient.onmessage = function (e) {\n        if (typeof e.data === \"string\") {\n          const response = JSON.parse(e.data);\n          if (\n            response?.action == \"LoadLevelStatus\" &&\n            response?.id_device == idCourtain\n          ) {\n            setReferenceLevel(parseInt(response.status));\n          }\n        } else {\n          // console.log(\"Mensaje recibido no es una cadena\");\n        }\n      };\n      newClient.onclose = () => {\n        setClient(null);\n      };\n      setClient(newClient);\n      //limpia la conexión al desmontar el componente\n      return () => {\n        if (newClient) newClient.close();\n      };\n    }\n  }, [props?.serial]);\n\n  useEffect(() => {\n    let eventName =\n      dataSocket?.category === \"window_cov\" &&\n      dataSocket?.event_name === \"dimmer\" &&\n      dataSocket?.itemId === itemH700?.item_id;\n    if (eventName) {\n      setReferenceLevel(parseInt(dataSocket?.state));\n      SliderValidation(dataSocket?.state);\n    }\n\n  }, [dataSocket]);\n\n  const SliderValidation = (dataSocket) => {\n    if (level === dataSocket) {\n      setEnableSlider(true);\n    } else {\n      setEnableSlider(false);\n    }\n  };\n\n  return (\n    <WrapperCurtainSwitch>\n      <HeaderCurtainswitch\n        onLine={handlerOnlineCurtain(\n          curtainStatus700?.onLine,\n          controllerStatus,\n          curtainStatus150?.conFailure,\n          typeGateway\n        )}\n      >\n        {props?.item?.alias}\n      </HeaderCurtainswitch>\n      <WrapperCurtainIcon>\n        <IconCortain level={referenceLevel} size=\"50\" />\n        {referenceLevel}%\n      </WrapperCurtainIcon>\n      <WrapperActions>\n        <IOSSlider\n          valueLabelDisplay=\"on\"\n          onChange={(event, newValue) =>\n            enableSlider\n              ? handleSliderChange(\n                  newValue,\n                  setLevel,\n                  intervalRef,\n                  setReferenceLevel\n                )\n              : null\n          }\n          aria-label=\"Temperature\"\n          getAriaValueText={valuetext}\n          min={0}\n          max={100}\n          value={referenceLevel}\n        />\n        <WrapperActionsButtons>\n          <ActionsButton\n            onClick={() =>\n              handleChangeLevel(\n                0,\n                false,\n                level,\n                setReferenceLevel,\n                intervalRef,\n                setLevel,\n                referenceLevel\n              )\n            }\n          >\n            <i className=\"fas fa-chevron-down\"></i>\n            {t(\"VIEW_AREA.COMPONENT_CURTAIN_SWITCH.DOWN\")}\n          </ActionsButton>\n          <ActionsButton\n            onClick={() =>\n              sendWebSocketData(\n                dataStopG150,\n                dataStopH700,\n                client,\n                typeGateway,\n                props?.sendMessage,\n                setEnableSlider\n              )\n            }\n            className=\"stopButton\"\n          >\n            <i className=\"far fa-stop-circle\"></i>\n            {t(\"VIEW_AREA.COMPONENT_CURTAIN_SWITCH.STOP\")}\n          </ActionsButton>\n          <ActionsButton\n            onClick={() =>\n              handleChangeLevel(\n                100,\n                true,\n                level,\n                setReferenceLevel,\n                intervalRef,\n                setLevel,\n                referenceLevel\n              )\n            }\n          >\n            <i className=\"fas fa-chevron-up\"></i>\n            {t(\"VIEW_AREA.COMPONENT_CURTAIN_SWITCH.UP\")}\n          </ActionsButton>\n        </WrapperActionsButtons>\n      </WrapperActions>\n    </WrapperCurtainSwitch>\n  );\n};\n\nCurtainSwitch.propTypes = {};\n\nexport default CurtainSwitch;\n","export default __webpack_public_path__ + \"static/media/fant.8c150e53.png\";","import React, { useState, useEffect, useRef, useContext } from \"react\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n// Material\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Button from \"@mui/material/Button\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n  },\n});\n\nconst LightSwitchModal = ({ handleChangeSwitch, close, open }) => {\n  const { t } = useTranslation();\n  return (\n    <>\n      <Dialog\n        open={open}\n        onClose={close}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"30%\",\n            height: \"38%\",\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            fontFamily: \"Montserrat, sans-serif\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            fontSize: \"20px\",\n            marginBottom: \"15px\",\n            lineHeight: \"2.6\",\n            padding: \"0px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"space-evenly\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"22px\",\n              fontWeight: \"bold\",\n              paddingLeft: \"45px\",\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.TITLE\")}\n          </span>\n          <IconButton onClick={close}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              textAlign: \"center\",\n              width: \"80%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"17px\",\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.DESCRIPTION\")}\n          </span>\n          <ThemeProvider theme={theme}>\n            <Button\n              variant=\"contained\"\n              color=\"success\"\n              onClick={handleChangeSwitch}\n              sx={{\n                width: \"340px\",\n                padding: \"7px\",\n                color: \"#000\",\n                borderRadius: \"8px\",\n                lineHeight: \"18px\",\n              }}\n            >\n              {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.BUTTON\")}\n            </Button>\n          </ThemeProvider>\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n\nexport default LightSwitchModal;\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//Components\nimport LightSwitchModal from \"../LightSwitchModal\";\nimport MessageSuccess from \"../../../../../components/message/MessageSuccess\";\nimport MessageError from \"../../../../../components/message/MessageError\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst Swicth = ({\n  allSwitches,\n  sendMessage,\n  serial,\n  dataSocket,\n  controllerStatus,\n}) => {\n  const { t } = useTranslation();\n  const { alias, variables } = allSwitches;\n  const { item_id, status, onLine } = variables;\n  const [modalOpen, setModalOpen] = useState(false);\n  const [switchStates, setSwitchStates] = useState(status);\n  const [pressedToggle, setPressedToggle] = useState(false);\n  const [load, setLoad] = useState(false);\n  const [socketSnackbar, setSocketSnackbar] = useState(null);\n  const socketInterval = useRef(null);\n\n  const {\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    warningMessage,\n    setWarningMessage,\n    socketConection,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n\n  useEffect(() => {\n    if (dataSocket.category === \"switch\" && dataSocket.itemId === item_id) {\n      setSwitchStates(dataSocket.state);\n      clearInterval(socketInterval.current);\n      if (pressedToggle) {\n        setSocketSnackbar(true);\n        setPressedToggle(false);\n      }\n    }\n  }, [dataSocket, pressedToggle]);\n\n  // useEffect(() => {\n  //   if (dataSocket.category === \"switch\" && dataSocket.itemId === item_id) {\n  //     setSwitchStates(dataSocket.state);\n  //     clearInterval(socketInterval.current);\n  //     setSocketSnackbar(true);\n  //   }\n  // }, [dataSocket]);\n\n  useEffect(() => {\n    if (socketSnackbar) {\n      setSuccessMessage(true);\n      setTimeout(() => {\n        setLoad(false);\n      }, 1500);\n      setSocketSnackbar(null);\n      setPressedToggle(false);\n    } else if (socketSnackbar === false) {\n      setWarningMessage(true);\n      setTimeout(() => {\n        setLoad(false);\n      }, 1500);\n      setSwitchStates(status);\n      setSocketSnackbar(null);\n      setPressedToggle(false);\n    }\n  }, [socketSnackbar]);\n\n  //Esto hace parte del modal de confirmación\n  //  const handleOpenLightModal = () => {\n  //    setModalOpen(!modalOpen);\n  //  };\n\n  // Esto hace parte del modal de confirmación\n  const handleChangeClose = () => {\n    setModalOpen(false);\n  };\n\n  const SocketTimeValidationResponse = () => {\n    clearInterval(socketInterval.current);\n    let count = 0;\n    socketInterval.current = setInterval(() => {\n      count++;\n      if (count > 15) {\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(false);\n        setLoad(false);\n      }\n    }, 1000);\n  };\n\n  const handleChangeSwitchState = () => {\n    if (onLine && controllerStatus) {\n      setSwitchStates(!switchStates);\n      const newSwitch = !switchStates;\n      // Esto hace parte del modal de confirmación\n      // handleChangeClose();\n      // setLoad(false);\n      sendMessage({\n        serial,\n        channel: serial,\n        id: item_id,\n        eventType: \"item_updated\",\n        value: String(newSwitch),\n      });\n      setLoad(true);\n      setPressedToggle(true);\n      SocketTimeValidationResponse();\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  if (allSwitches !== \"undefined\") {\n    return (\n      <>\n        <div className=\"_generic_container\">\n          <div\n            className={`_generics_container_title_status ${\n              onLine && controllerStatus ? null : \"__status_comfailure__\"\n            }`}\n          >\n            <div className=\"_generic__title\">{alias}</div>\n            <div className=\"_generic__status__wifi\">\n              <span\n                className={\n                  onLine && controllerStatus\n                    ? `${\"__icon_wifi_sensor\"}`\n                    : `${\"__icon_wifi_sensor_offline\"}`\n                }\n              >\n                <i class=\"fas fa-wifi\"></i>\n              </span>\n            </div>\n          </div>\n          <div className=\"_generic_container_clasification\">\n            <div\n              className={`_generic_clasification ${\n                load ? \"__loading_clasification\" : false\n              }`}\n            >\n              <span>\n                <img\n                  src={\n                    switchStates\n                      ? Devices.BINARY_LIGHT_ON\n                      : Devices.BINARY_LIGHT_OFF\n                  }\n                  alt=\"clasification\"\n                  width=\"60\"\n                  height=\"60\"\n                />\n              </span>\n            </div>\n            <div className=\"__loading_devices\">\n              {load ? <Loading_devices /> : false}\n            </div>\n            <div\n              className={`_generic_toggle row-decoration ${\n                load ? \"__loading_toogle\" : false\n              }`}\n            >\n              <div>\n                <ThemeProvider theme={innerTheme}>\n                  <Switch\n                    size=\"medium\"\n                    checked={switchStates}\n                    onChange={\n                      permissionsRoleUser?.permissionsRole?.AreaDispMan\n                        ? handleChangeSwitchState\n                        : false\n                    }\n                  />\n                </ThemeProvider>\n                <br></br>\n                {!switchStates ? (\n                  <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.OFF\")}</span>\n                ) : (\n                  <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.ON\")}</span>\n                )}\n              </div>\n            </div>\n          </div>\n        </div>\n        {/* <LightSwitchModal\n          handleChangeSwitch={handleChangeSwitchState} \n          open={modalOpen}\n          close={handleChangeClose}\n        />  */}\n      </>\n    );\n  }\n};\nexport default Swicth;\n","import React from \"react\";\n\n//Material UI components\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\n\nexport const handleBatteryLevelColor = (BatteryLevel) => {\n  if (!BatteryLevel) {\n    return \"__icon_battery_sensor_unknown\";\n  } else if (BatteryLevel <= 100 && BatteryLevel >= 51) {\n    return \"__icon_battery_sensor\";\n  } else if (BatteryLevel <= 50 && BatteryLevel >= 11) {\n    return \"__icon_battery_half_level\";\n  } else if (BatteryLevel <= 10 && BatteryLevel >= 1) {\n    return \"__icon_battery_sensor_alert\";\n  }\n};\n\nexport const handleBatteryLevel = (BatteryLevel) => {\n  if (!BatteryLevel) {\n    return <BatteryUnknownIcon />;\n  } else if (BatteryLevel > 90) {\n    return <BatteryFullIcon />;\n  } else if (BatteryLevel > 80) {\n    return <Battery90Icon />;\n  } else if (BatteryLevel > 70) {\n    return <Battery80Icon />;\n  } else if (BatteryLevel > 50) {\n    return <Battery60Icon />;\n  } else if (BatteryLevel > 40) {\n    return <Battery50Icon />;\n  } else if (BatteryLevel > 20) {\n    return <Battery30Icon />;\n  } else if (BatteryLevel > 10) {\n    return <Battery20Icon />;\n  } else {\n    return <BatteryAlertIcon />;\n  }\n};\n","import React, { useEffect, useState } from \"react\";\n\n//Material UI components & styles\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Slide from \"@material-ui/core/Slide\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//GraphQl Hooks & Queries\nimport { useQuery } from \"@apollo/client\";\nimport { GET_BATTERY_NEW_DEVICES } from \"../../../../controllers/reportController\";\n\n//Helpers\nimport { formatDateLocal } from \"../../../../utils/helpers\";\nimport {\n  handleBatteryLevel,\n  handleBatteryLevelColor,\n} from \"../utils/helperBattery\";\nimport GraphBatteryLevel from \"../../../../components/devices/GraphBatteryLevel/GraphBatteryLevel\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst useStyles = makeStyles((theme) => ({\n  titleConainer: {\n    marginLeft: theme.spacing(1),\n    color: \"white\",\n    paddingTop: 12,\n    flex: 1,\n  },\n  title: {\n    fontSize: 15,\n  },\n  spacingClose: {\n    marginRight: 30,\n    padding: \"5px 15px\",\n    cursor: \"pointer\",\n    borderRadius: 50,\n    \"&:hover\": {\n      backgroundColor: \"#069C08\",\n    },\n  },\n}));\n\nconst Battery_Newlevel = ({\n  openBattery,\n  handleCloseBattery,\n  name,\n  id_Battery,\n}) => {\n  const classes = useStyles();\n  const { loading, error, data } = useQuery(GET_BATTERY_NEW_DEVICES, {\n    variables: { itemId: id_Battery },\n  });\n\n  const [dataBattery, setDataBattery] = useState();\n\n  useEffect(() => {\n    if (!loading && !error && data) {\n      const batteryData = data.getAllNewDeviceByBatteryLevel?.data;\n      if (batteryData !== undefined && batteryData.length !== 0) {\n        setDataBattery(batteryData);\n      }\n    }\n  }, [data]);\n\n  return (\n    <Dialog\n      fullWidth\n      fullScreen\n      open={openBattery}\n      onClose={handleCloseBattery}\n      TransitionComponent={Transition}\n    >\n      <div className=\"header_model_battery_report\">\n        <span className={classes.spacingClose} onClick={handleCloseBattery}>\n          X\n        </span>\n        <span\n          title={`Reporte de bateria - ${localStorage.getItem(\n            \"nameProject\"\n          )} - ${name}`}\n          className=\"header_model_battery_report_title\"\n        >\n          Reporte de bateria - {`${localStorage.getItem(\"nameProject\")}`} -{\" \"}\n          {name}\n        </span>\n      </div>\n      <div className=\"battery_devices\">\n        {!dataBattery || dataBattery.length === 0 ? (\n          <div className=\"battery_device_empty\">No hay datos</div>\n        ) : (\n          <>\n            <GraphBatteryLevel data={data} typeGateway={\"horus_700\"} />\n            <div className=\"battery_device_title_container\">\n              <div className=\"battery_device_title_date\">Fecha</div>\n              <div className=\"battery_device_title_level\">Nivel</div>\n            </div>\n            {[...dataBattery]?.reverse()?.map((i) => (\n              <div className=\"battery_device_container\" key={i?.id}>\n                <div className=\"battery_device_date\">\n                  {formatDateLocal(i?.x)}\n                </div>\n                <div className=\"battery_device_level\">\n                  <span className=\"battery_device_averange\">{i?.y}%</span>\n                  <span\n                    className={`battery_device_level_icon ${handleBatteryLevelColor(\n                      i?.y\n                    )}`}\n                  >\n                    {handleBatteryLevel(i?.y)}\n                  </span>\n                </div>\n              </div>\n            ))}\n          </>\n        )}\n      </div>\n    </Dialog>\n  );\n};\n\nexport default Battery_Newlevel;\n","//Material UI components\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\n\nexport const handleBatteryLevelColor = (BatteryLevel) => {\n  if (!BatteryLevel && BatteryLevel !== 0) {\n    return \"__icon_battery_sensor_unknown\";\n  } else if (BatteryLevel <= 100 && BatteryLevel >= 51) {\n    return \"__icon_battery_sensor\";\n  } else if (BatteryLevel <= 50 && BatteryLevel >= 11) {\n    return \"__icon_battery_half_level\";\n  } else if (BatteryLevel <= 10 && BatteryLevel >= 0) {\n    return \"__icon_battery_sensor_alert\";\n  }\n};\n\nexport const handleBatteryLevel = (BatteryLevel) => {\n  if (!BatteryLevel && BatteryLevel !== 0) {\n    // return <BatteryUnknownIcon />;\n  } else if (BatteryLevel > 90) {\n    return <BatteryFullIcon />;\n  } else if (BatteryLevel > 80) {\n    return <Battery90Icon />;\n  } else if (BatteryLevel > 70) {\n    return <Battery80Icon />;\n  } else if (BatteryLevel > 50) {\n    return <Battery60Icon />;\n  } else if (BatteryLevel > 40) {\n    return <Battery50Icon />;\n  } else if (BatteryLevel > 20) {\n    return <Battery30Icon />;\n  } else if (BatteryLevel > 10) {\n    return <Battery20Icon />;\n  } else if (BatteryLevel < 10) {\n    return <BatteryAlertIcon />;\n  }\n};\n","import React, { useEffect, useContext, useState } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI components and styles\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Switch from \"@material-ui/core/Switch\";\n\n//Components\nimport Battery_Newlevel from \"../Battery_Newlevel\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\n\n//Constants\nimport { Devices } from \"../../../../../constants/devices_types\";\n\n//Helper\nimport {\n  handleBatteryLevelColor,\n  handleBatteryLevel,\n} from \"../Temperature/utils/helperBattery\";\n\n//Images\nimport alert from \"../../../../../assets/alert-icon.png\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst NewDoorSensor = ({ sensor, serial, dataSocket, controllerStatus }) => {\n  const { t } = useTranslation();\n  const [open, setOpen] = useState(false);\n  const { alias, variables, Category, name } = sensor;\n  const { category, sub_category } = Category;\n  const { items, status, type, onLine } = variables;\n  const [armed, setArmed] = useState(false);\n  const [doorSensor, setDoorSensor] = useState(\n    items?.find((e) => e?.name === \"security_threat\")?.status\n  );\n  const [battery, setBattery] = useState({\n    itemId_Battery: \"\",\n    percentageBattery: \"\",\n  });\n  const { permissionsRoleUser } = useContext(AuthContext);\n\n  useEffect(() => {\n    if (\n      dataSocket?.category === category &&\n      sub_category === \"door\" &&\n      dataSocket?.event_name === \"security_threat\"\n    ) {\n      const item = items?.find((e) => e.item_id === dataSocket?.itemId);\n      if (item) {\n        setDoorSensor(dataSocket?.state);\n      }\n    }\n\n    const batteryVariable = variables?.items.find(\n      (item) => item.name === \"battery\"\n    );\n    if (batteryVariable) {\n      setBattery({\n        itemId_Battery: batteryVariable?.item_id,\n        percentageBattery: batteryVariable?.status,\n      });\n    }\n  }, [dataSocket]);\n\n  const handleChangesArmed = () => {\n    setArmed(!armed);\n  };\n\n  const handleCloseBattery = () => {\n    setOpen(!open);\n  };\n\n  return (\n    <>\n      {type === \"door_sensor\" && (\n        <div className=\"_generic_container\">\n          <div\n            className={`_generics_container_title_status ${\n              onLine && controllerStatus ? null : \"__status_comfailure__\"\n            }`}\n          >\n            <div className=\"_generic__title\">\n              <span>{alias}</span>\n            </div>\n            <div\n              className={`${\n                alias ? \"_generic__status__alert\" : \"__generic_sensor_wifi\"\n              }`}\n            >\n              {!alias ? (\n                <span className=\"__icon_alert_sensor\">\n                  <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n                </span>\n              ) : (\n                <div className=\"battery_status\" onClick={handleCloseBattery}>\n                  {battery?.percentageBattery && (\n                    <span className=\"battery_percentage\">\n                      {battery?.percentageBattery}%\n                    </span>\n                  )}\n\n                  <div className=\"battery_icon_container\">\n                    <span\n                      className={handleBatteryLevelColor(\n                        battery?.percentageBattery\n                      )}\n                    >\n                      {handleBatteryLevel(battery?.percentageBattery)}\n                    </span>\n                  </div>\n                </div>\n              )}\n            </div>\n          </div>\n          <div className=\"_generic_container_clasification\">\n            <div\n              className={`_generic_clasification ${\n                \"\" ? \"__loading_clasification\" : \"\"\n              }`}\n            >\n              <span>\n                <img\n                  src={\n                    doorSensor\n                      ? Devices.DOOR_WINDOW_TRIPPED\n                      : Devices.DOOR_WINDOW\n                  }\n                  alt=\"clasification\"\n                  width=\"60\"\n                  height=\"60\"\n                />\n              </span>\n            </div>\n            <div className=\"__loading_devices\">\n              {!alias ? <Loading_devices /> : false}\n            </div>\n            <div\n              className={`_generic_toggle row-decoration ${\n                !alias ? \"__loading_toogle\" : false\n              }`}\n            >\n              <div>\n                <ThemeProvider theme={innerTheme}>\n                  <Switch\n                    size=\"medium\"\n                    checked={armed}\n                    onChange={\n                      permissionsRoleUser?.permissionsRole?.AreaDispMan\n                        ? handleChangesArmed\n                        : false\n                    }\n                  />\n                </ThemeProvider>\n                <br></br>\n                {doorSensor ? (\n                  <span>\n                    {t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.DISASSEMBLED\")}\n                  </span>\n                ) : (\n                  <span>{t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.ASSEMBLED\")}</span>\n                )}\n              </div>\n            </div>\n          </div>\n          <Battery_Newlevel\n            id_Battery={battery?.itemId_Battery}\n            handleCloseBattery={handleCloseBattery}\n            name={alias}\n            openBattery={open}\n          />\n        </div>\n      )}\n    </>\n  );\n};\nexport default NewDoorSensor;\n","import { useState, useEffect, useContext } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { green } from \"@material-ui/core/colors\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport alert from \"../../../../../assets/alert-icon.png\";\nimport Battery_Newlevel from \"../Battery_Newlevel\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst NewMotionSensor = ({ sensor, serial, dataSocket, controllerStatus }) => {\n  const { t } = useTranslation();\n  const [open, setOpen] = useState(false);\n  const { alias, variables, Category, name } = sensor;\n  const { category, sub_category } = Category;\n  const { status, type, items, onLine } = variables;\n  const [armed, setArmed] = useState(false);\n  const [motionSensor, setMotionSensor] = useState(\n    items?.find((e) => e?.name === \"motion\")?.status\n  );\n  const [battery, setBattery] = useState({\n    itemId_Battery: \"\",\n    percentageBattery: \"\",\n  });\n  const { permissionsRoleUser } = useContext(AuthContext);\n\n  useEffect(() => {\n    if (\n      dataSocket.category === category &&\n      sub_category === \"motion\" &&\n      dataSocket.event_name === \"motion\"\n    ) {\n      const item = items?.find((e) => e.item_id === dataSocket.itemId);\n      if (item) {\n        setMotionSensor(dataSocket.state);\n      }\n    }\n\n    const batteryVariable = variables.items.find(\n      (item) => item.name === \"battery\"\n    );\n    if (batteryVariable) {\n      setBattery({\n        itemId_Battery: batteryVariable.item_id,\n        percentageBattery: batteryVariable.status,\n      });\n    }\n  }, [dataSocket]);\n\n  const handleChangesArmed = () => {\n    setArmed(!armed);\n  };\n\n  const handleCloseBattery = () => {\n    setOpen(!open);\n  };\n  return (\n    <>\n      <div className=\"_generic_container\">\n        <div\n          className={`_generics_container_title_status ${\n            onLine && controllerStatus ? null : \"__status_comfailure__\"\n          }`}\n        >\n          <div className=\"_generic__title\">\n            <span>{alias}</span>\n          </div>\n          <div\n            className={`${\n              !battery.percentageBattery\n                ? \"_generic__status__alert\"\n                : \"__generic_sensor_wifi\"\n            }`}\n          >\n            {!alias ? (\n              <span className=\"__icon_alert_sensor\">\n                <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n              </span>\n            ) : (\n              <>\n                {battery.percentageBattery && (\n                  <div\n                    className=\"_battery__status\"\n                    onClick={handleCloseBattery}\n                  >\n                    <div className=\"__percent\">\n                      <span>{battery.percentageBattery}%</span>\n                    </div>\n                    <div className=\"__percent\">\n                      {battery.percentageBattery && (\n                        <span>{battery.percentageBattery}%</span>\n                      )}\n                    </div>\n                    <div className=\"__battery\">\n                      <span\n                        className={\n                          !battery.percentageBattery\n                            ? \"__icon_battery_sensor_unknown\"\n                            : battery.percentageBattery <= 60\n                            ? \"__icon_battery_sensor_unknown\"\n                            : battery.percentageBattery <= 10\n                            ? \"__icon_battery_sensor_alert\"\n                            : \"__icon_battery_sensor\"\n                        }\n                      >\n                        {!battery.percentageBattery ? (\n                          <BatteryUnknownIcon />\n                        ) : battery.percentageBattery > 90 ? (\n                          <BatteryFullIcon />\n                        ) : battery.percentageBattery > 80 ? (\n                          <Battery90Icon />\n                        ) : battery.percentageBattery > 70 ? (\n                          <Battery80Icon />\n                        ) : battery.percentageBattery > 50 ? (\n                          <Battery60Icon />\n                        ) : battery.percentageBattery > 40 ? (\n                          <Battery50Icon />\n                        ) : battery.percentageBattery > 20 ? (\n                          <Battery30Icon />\n                        ) : battery.percentageBattery > 10 ? (\n                          <Battery20Icon />\n                        ) : (\n                          <BatteryAlertIcon />\n                        )}\n                      </span>\n                    </div>\n                  </div>\n                )}\n              </>\n            )}\n          </div>\n        </div>\n        <div className=\"_generic_container_clasification\">\n          <div\n            className={`_generic_clasification ${\n              \"\" ? \"__loading_clasification\" : false\n            }`}\n          >\n            <span>\n              <img\n                src={\n                  motionSensor\n                    ? Devices.MOTION_SENSOR_TRIPPED\n                    : Devices.MOTION_SENSOR\n                }\n                alt=\"clasification\"\n                width=\"60\"\n                height=\"60\"\n              />\n            </span>\n          </div>\n          <div className=\"__loading_devices\">\n            {!alias ? <Loading_devices /> : false}\n          </div>\n          <div\n            className={`_generic_toggle row-decoration ${\n              !alias ? \"__loading_toogle\" : false\n            }`}\n          >\n            <div>\n              <ThemeProvider theme={innerTheme}>\n                <Switch\n                  size=\"medium\"\n                  checked={armed}\n                  onChange={\n                    permissionsRoleUser?.permissionsRole?.AreaDispMan\n                      ? handleChangesArmed\n                      : false\n                  }\n                />\n              </ThemeProvider>\n              <br></br>\n              {!armed ? (\n                <span>\n                  {t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.ASSEMBLED\")}\n                </span>\n              ) : (\n                <span>\n                  {t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.DISASSEMBLED\")}\n                </span>\n              )}\n            </div>\n          </div>\n        </div>\n        <Battery_Newlevel\n          id_Battery={battery.itemId_Battery}\n          handleCloseBattery={handleCloseBattery}\n          name={alias}\n          openBattery={open}\n        />\n      </div>\n    </>\n  );\n};\n\nexport default NewMotionSensor;\n","// new devices\nimport Swicth from \"./components/Swicth/Swicth\";\nimport NewDoorSensor from \"./components/sensors/NewDoorSensor\";\nimport NewMotionSensor from \"./components/sensors/NewMotionSensor\";\nimport CurtainSwitch from \"../../../components/devices/CurtainSwitch/CurtainSwitch\";\nimport { EventEmitter } from \"events\";\n\nconst {\n  REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER,\n  REACT_APP_SOCKET_STAGING_NEWCONTROLLER,\n} = process.env;\n\nexport const renderNewDevices = (devices, obj) => {\n  const permission =\n    obj.permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n    obj.permissionsRoleUser?.permissionsRole?.AreaDisp;\n\n  return devices.map((elements) => (\n    <div className=\"_container_new_devices_all\">\n      {elements?.map((secondElement, key) => {\n        if (secondElement.Category.category === \"switch\" && permission) {\n          return (\n            <Swicth\n              allSwitches={secondElement}\n              controllerStatus={obj.controllerStatus}\n              dataSocket={obj.dataSocket}\n              key={key}\n              serial={obj.serial}\n              sendMessage={obj.sendMessage}\n            />\n          );\n        } else if (\n          secondElement.Category.category === \"security_sensor\" &&\n          secondElement.Category.sub_category === \"door\" &&\n          permission\n        ) {\n          return (\n            <NewDoorSensor\n              controllerStatus={obj.controllerStatus}\n              dataSocket={obj.dataSocket}\n              sensor={secondElement}\n              serial={obj.serial}\n              sendMessage={obj.sendMessage}\n            />\n          );\n        } else if (\n          secondElement.Category.category === \"security_sensor\" &&\n          secondElement.Category.sub_category === \"motion\" &&\n          permission\n        ) {\n          return (\n            <NewMotionSensor\n              controllerStatus={obj.controllerStatus}\n              dataSocket={obj.dataSocket}\n              sensor={secondElement}\n              serial={obj.serial}\n              sendMessage={obj.sendMessage}\n            />\n          );\n        } else if (\n          secondElement.Category.category === \"window_cov\" &&\n          secondElement.Category.sub_category === \"window_cov\" &&\n          permission\n        ) {\n          return (\n            <CurtainSwitch\n              controllerStatus={obj.controllerStatus}\n              curtains={secondElement}\n              dataSocket={obj.dataSocket}\n              endPoint={REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER}\n              serial={obj.serial}\n              sendMessage={obj.sendMessage}\n            />\n          );\n        } else {\n          return null;\n        }\n      })}\n    </div>\n  ));\n};\n\nexport const spliceDevicesData = (devices, count) => {\n  let chunkedArray = [];\n  let chunkSize = count;\n\n  for (let i = 0; i < devices?.length; i += chunkSize) {\n    chunkedArray.push(devices.slice(i, i + chunkSize));\n  }\n\n  return chunkedArray;\n};\n\nexport const filterNameDevices = (devices) => {\n  return devices?.filter(\n    (element) =>\n      element?.Category?.category != \"600\" &&\n      (element?.Category?.category != \"5\" ||\n        element?.Category?.sub_category != \"1\") &&\n      element?.visible !== false\n  );\n};\n\nlet socket;\nconst eventEmitter = new EventEmitter();\nexport const IsThereVRF = (data) => {\n  if (data) {\n    // Recorremos cada objeto en el array de datos\n    for (const item of data) {\n      // Verificamos si la propiedad \"variables\" existe y si contiene la propiedad \"type\"\n      if (item.variables && item.variables.type === \"thermostatVRF\") {\n        // Si encontramos un objeto que cumple la condición, devolvemos true\n        return true;\n      }\n    }\n    // Si no encontramos ningún objeto que cumpla la condición, devolvemos false\n    return false;\n  }\n};\n\nexport const SocketVRF = () => {\n  if (\n    !socket ||\n    socket.readyState === WebSocket.CLOSED ||\n    socket.readyState === WebSocket.CLOSING\n  ) {\n    socket = new WebSocket(\n      \"wss://www.cool-master-vrf-test.horussmartenergyapp.com/ws?apiKey=integrationVrf\"\n    );\n\n    socket.onopen = async () => {\n      //console.log('open');\n    };\n\n    socket.onmessage = async ({ data }) => {\n      //console.log('Message');\n      const message = JSON.parse(data);\n      if (message.Name === \"UPDATE_UNIT\") {\n        // Emitir un evento con el identificador del dispositivo y los datos del mensaje\n        eventEmitter.emit(\"updateUnit\", message.unitId, message);\n      }\n    };\n\n    socket.onclose = async (data) => {\n      // console.log(data);\n      socket = null;\n    };\n\n    socket.onerror = async () => console.error;\n  }\n};\n\nexport const getSocket = () => socket;\nexport const getEventEmitter = () => eventEmitter;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Loading_devices from \"../../loading/Loading_devices\";\nimport alert from \"../../../assets/alert-icon.png\";\nimport fanCoolImage from \"../../../assets/fant.png\";\nimport { getEventEmitter } from \"../../../views/private/devices/helperDevices\"; // Importar el EventEmitter\n\nexport const VRF = ({ pluggin, gridNumber, item, send }) => {\n  const { permissionsRoleUser } = useContext(AuthContext);\n\n  const [CurrentTemperature, setCurrentTemperature] = useState(\n    financial(item?.variables?.CurrentTemperature)\n  );\n  const [BatteryLevel, setBatteryLevel] = useState(\n    item?.variables?.BatteryLevel\n  );\n  const [cool, setCool] = useState(\n    item?.variables?.ModeStatus === \"CoolOn\" ? true : false\n  );\n  const [heat, setHeat] = useState(\n    item?.variables?.ModeStatus === \"HeatOn\" ? true : false\n  );\n  const [auto, setAuto] = useState(\n    item?.variables?.ModeStatus === \"AutoChangeOver\" ? true : false\n  );\n  const [off, setOff] = useState(\n    item?.variables?.ModeStatus === \"Off\" ? true : false\n  );\n  const [CurrentSetpoint, setCurrentSetpoint] = useState(\n    parseInt(financial(item?.variables?.CurrentSetpoint))\n  );\n  const [currentFanMode, setCurrentFanMode] = useState(\n    item?.variables?.CurrentFanMode\n  );\n\n  const [load, setLoad] = useState(false);\n  const [timer, setTimer] = useState(null); // Estado para el temporizador\n  const delay = 1500;\n\n  const minTemperature = 15;\n  const maxTemperature = 30;\n\n  function financial(x) {\n    return Number.parseFloat(x).toFixed(0);\n  }\n\n  // Función para manejar el envío de cambios después de un retraso\n  const handleDelayedSend = (newSetPoint, action) => {\n    if (timer) {\n      clearTimeout(timer); // Limpia el temporizador anterior si existe\n    }\n\n    setTimer(\n      setTimeout(() => {\n        send(item, String(newSetPoint), action);\n        setLoad(true);\n        timeLoad();\n      }, delay)\n    );\n  };\n\n  const downSet = () => {\n    const newSetPoint = parseInt(CurrentSetpoint) - 1;\n    if (newSetPoint >= minTemperature) {\n      setCurrentSetpoint(newSetPoint);\n      handleDelayedSend(newSetPoint, 1);\n    } else {\n      console.warn(\"Temperatura mínima alcanzada\");\n    }\n  };\n\n  const upSet = () => {\n    const newSetPoint = parseInt(CurrentSetpoint) + 1;\n    if (newSetPoint <= maxTemperature) {\n      setCurrentSetpoint(newSetPoint);\n      handleDelayedSend(newSetPoint, 1);\n    } else {\n      console.warn(\"Temperatura máxima alcanzada\");\n    }\n  };\n\n  useEffect(() => {\n    return () => clearTimeout(timer); // limpia el timer\n  }, [timer]);\n\n  useEffect(() => {\n    const eventEmitter = getEventEmitter();\n    const handleUpdateUnit = (unitId, message) => {\n      if (item.variables.deviceId === unitId) {\n        setCurrentTemperature(financial(message.ambientTemperature));\n        setCurrentSetpoint(message.setpoint);\n\n        if (message.operationStatus === \"Off\") {\n          setOff(true);\n          setCool(false);\n          setHeat(false);\n          setAuto(false);\n        } else {\n          setOff(false);\n          setCool(message.operationMode === \"CoolOn\");\n          setHeat(message.operationMode === \"HeatOn\");\n          setAuto(message.operationMode === \"AutoChangeOver\");\n        }\n      }\n    };\n\n    eventEmitter.on(\"updateUnit\", handleUpdateUnit);\n\n    return () => {\n      eventEmitter.off(\"updateUnit\", handleUpdateUnit); // Limpia el listener cuando el componente se desmonte\n    };\n  }, [item.variables.deviceId]);\n\n  const timeLoad = () => {\n    setTimeout(() => {\n      setLoad(false);\n    }, delay);\n  };\n\n  const handleChangeThermostatState = (action) => {\n    if (action === 1) {\n      upSet();\n    } else if (action === 2) {\n      downSet();\n    } else if (action === 3) {\n      if (!cool) {\n        setTimeout(() => {\n          send(item, \"CoolOn\", 3);\n          setLoad(true);\n          setCool(!cool);\n          setHeat(false);\n          setAuto(false);\n          setOff(false);\n          timeLoad();\n        }, delay);\n      }\n    } else if (action === 4) {\n      if (!heat) {\n        setTimeout(() => {\n          setLoad(true);\n          send(item, \"HeatOn\", 4);\n          setHeat(!heat);\n          setCool(false);\n          setAuto(false);\n          setOff(false);\n          timeLoad();\n        }, delay);\n      }\n    } else if (action === 5) {\n      if (!auto) {\n        setTimeout(() => {\n          setLoad(true);\n          send(item, \"AutoChangeOver\", 5);\n          setHeat(false);\n          setCool(false);\n          setAuto(!auto);\n          setOff(false);\n          timeLoad();\n        }, delay);\n      }\n    } else if (action === 6) {\n      if (!off) {\n        setTimeout(() => {\n          setLoad(true);\n          send(item, \"Off\", 6);\n          setHeat(false);\n          setCool(false);\n          setAuto(false);\n          setOff(!off);\n          timeLoad();\n        }, delay);\n      }\n    }\n  };\n\n  return (\n    <>\n      <div className={`_weather_container_new`}>\n        <div className={`_weather_container_title_status_new `}>\n          <div className=\"_weather__title_new\">\n            <span>{item?.alias}</span>\n          </div>\n\n          <div className=\"_weather__status_new\">\n            <span\n              className={\n                item?.variables?.CommFailure === \"1\"\n                  ? `${\"__icon_wifi_offline\"}`\n                  : `${\"__icon_wifi_online\"}`\n              }\n            >\n              <i class=\"fas fa-wifi\"></i>\n            </span>\n          </div>\n        </div>\n\n        <div\n          className={`_weather_container_temperature_new ${\n            load ? \"__loading_weather_other_new\" : false\n          }`}\n        >\n          <div\n            className={`${\n              cool || heat || currentFanMode\n                ? \"\"\n                : \"__weather_temperatur_off_new\"\n            } _weather_temperature_new`}\n          >\n            <span\n              className={`${\n                cool || heat || currentFanMode ? \"\" : \"__temperatur_off_new\"\n              } __temperature_new`}\n            >\n              {CurrentSetpoint}\n              <span\n                style={{\n                  display: \"flex\",\n                  fontSize: \"35px\",\n                  alignItems: \"start\",\n                  marginTop: \"10px\",\n                }}\n              >\n                °c\n              </span>\n            </span>\n            <div className=\"_indoor_weather_new\">\n              <span className=\"__indoor_new\">\n                <span\n                  style={{\n                    display: \"flex\",\n                    fontSize: \"20px\",\n                    marginLeft: \"20px\",\n                  }}\n                >\n                  {CurrentTemperature}°c\n                </span>\n              </span>\n            </div>\n          </div>\n\n          <div className=\"__container_fan_new\">\n            <div className=\"fan_and_velocity_container\">\n              <div className=\"__color_new\">\n                <img\n                  className={\n                    currentFanMode === \"HIGH\"\n                      ? \"prueba\"\n                      : currentFanMode === \"MEDIUM\"\n                      ? \"prueba2\"\n                      : \"prueba3\"\n                  }\n                  src={fanCoolImage}\n                  onClick={\n                    permissionsRoleUser?.permissionsRole?.AreaDispMan\n                      ? null\n                      : null\n                  }\n                  alt=\"fan\"\n                />\n              </div>\n              <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n                {currentFanMode === \"HIGH\" ? (\n                  <>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"LOW\" ||\n                        currentFanMode === \"MEDIUM\" ||\n                        currentFanMode === \"HIGH\"\n                          ? \"low\"\n                          : \"bar1\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"MEDIUM\" || currentFanMode === \"HIGH\"\n                          ? \"medium\"\n                          : \"bar2\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"HIGH\" ? \"high\" : \"bar3\"\n                      }`}\n                    ></div>\n                  </>\n                ) : currentFanMode === \"LOW\" ? (\n                  <>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"LOW\" ? \"low\" : \"bar1\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"MEDIUM\" || currentFanMode === \"HIGH\"\n                          ? \"medium\"\n                          : \"bar2\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"HIGH\" ? \"high\" : \"bar3\"\n                      }`}\n                    ></div>\n                  </>\n                ) : currentFanMode === \"AUTO\" ? (\n                  <>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"AUTO\" ? \"low_now\" : \"bar1\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"AUTO\" ||\n                        currentFanMode === \"MEDIUM\" ||\n                        currentFanMode === \"HIGH\"\n                          ? \"medium_now\"\n                          : \"bar2\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        currentFanMode === \"AUTO\" ? \"high_now\" : \"bar3\"\n                      }`}\n                    ></div>\n                  </>\n                ) : null}\n              </div>\n            </div>\n\n            <div\n              className={`_indoor_weather_new ${\n                load ? \"__loading_weather_other_new\" : false\n              }`}\n            >\n              <span className=\"__indoor_new_name\">{currentFanMode}</span>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"__loading_weather\">\n          {load ? <Loading_devices /> : false}\n        </div>\n\n        <div\n          className={`_weather_container_mode_new ${\n            load ? \"__loading_weather_other_new\" : false\n          }`}\n        >\n          <div className=\"_weather_container_up_down_new\">\n            <div\n              className=\"_weather_btn_up_down_new\"\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? () => handleChangeThermostatState(1)\n                  : null\n              }\n            >\n              <span className=\"__btn_up_new\">\n                <i class=\"fas fa-chevron-up\"></i>\n              </span>\n            </div>\n\n            <div\n              className=\"_weather_btn_up_down_new\"\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? () => handleChangeThermostatState(2)\n                  : null\n              }\n            >\n              <span className=\"__btn_down_new\">\n                <i class=\"fas fa-chevron-down\"></i>\n              </span>\n            </div>\n          </div>\n\n          <div className=\"container_options_new\">\n            <div\n              className={\n                cool ? \"_weather_mode_cool_bg_new\" : \"_weather_mode_cool_new\"\n              }\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? () => handleChangeThermostatState(3)\n                  : null\n              }\n            >\n              COOL\n            </div>\n\n            <div\n              className={\n                heat ? \"_weather_mode_heat_bg_new\" : \"_weather_mode_heat_new\"\n              }\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? () => handleChangeThermostatState(4)\n                  : null\n              }\n            >\n              HEAT\n            </div>\n\n            <div\n              className={\n                auto ? \"_weather_mode_auto_bg_new\" : \"_weather_mode_auto_new\"\n              }\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? () => handleChangeThermostatState(5)\n                  : null\n              }\n            >\n              AUTO\n            </div>\n\n            <div\n              className={\n                off ? \"_weather_mode_off_bg_new\" : \"_weather_mode_off_new\"\n              }\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? () => handleChangeThermostatState(6)\n                  : null\n              }\n            >\n              OFF\n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n\n    // <div\n    //   className={\n    //     pluggin !== 0\n    //       ? `_weather_container ${gridNumber}`\n    //       : `_weather_container_pluggin ${gridNumber}_pluggin`\n    //   }\n    // >\n    //   <div\n    //     className={`_weather_container_title_status ${\n    //       item.variables.CommFailure === \"1\" ? \"_weather_offline\" : null\n    //     }`}\n    //   >\n    //     <div className=\"_weather__title\">\n    //       <span>{item.alias}</span>\n    //     </div>\n    //     <div\n    //       className={`_weather__status ${\n    //         item.variables.CommFailure === \"1\" ? \"__icon_offline__\" : null\n    //       }`}\n    //     >\n    //       {item.variables.CommFailure === \"1\" ? (\n    //         <span className=\"__icon_alert_sensor\">\n    //           <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n    //         </span>\n    //       ) : (\n    //         <span className=\"__icon_wifi\">\n    //           <i className=\"fas fa-wifi\"></i>\n    //         </span>\n    //       )}\n    //     </div>\n    //   </div>\n    //   {/* temperature */}\n    //   <div\n    //     className={`_weather_container_temperature ${\n    //       load ? \"__loading_weather_other\" : false\n    //     }`}\n    //   >\n    //     <div\n    //       className={`${\n    //         off ? \"__weather_temperatur_off\" : \"\"\n    //       } _weather_temperature`}\n    //     >\n    //       <span className={`${off ? \"__temperatur_off\" : \"\"} __temperature`}>\n    //         <span\n    //           style={{\n    //             display: \"flex\",\n    //             alignItems: \"flex-start\",\n    //             fontSize: \"65px\",\n    //             fontFamily: \"Open24\",\n    //           }}\n    //         >\n    //           {CurrentSetpoint}\n    //         </span>\n\n    //         <span\n    //           style={{\n    //             display: \"flex\",\n    //             alignItems: \"flex-start\",\n    //             marginTop: \"10px\",\n    //             fontSize: \"35px\",\n    //             fontFamily: \"Open24\",\n    //           }}\n    //         >\n    //           °C\n    //         </span>\n    //       </span>\n    //     </div>\n    //     <div className=\"_weather_container_up_down\">\n    //       <div\n    //         className=\"_weather_btn_up_down\"\n    //         onClick={\n    //           permissionsRoleUser?.permissionsRole?.AreaDispMan\n    //             ? () => {\n    //                 handleChangeThermostatState(1);\n    //               }\n    //             : undefined\n    //         }\n    //       >\n    //         <span className=\"__btn_up\">\n    //           <i className=\"fas fa-chevron-up\"></i>\n    //         </span>\n    //       </div>\n    //       <div\n    //         className=\"_weather_btn_up_down\"\n    //         onClick={\n    //           permissionsRoleUser?.permissionsRole?.AreaDispMan\n    //             ? () => {\n    //                 handleChangeThermostatState(2);\n    //               }\n    //             : undefined\n    //         }\n    //       >\n    //         <span className=\"__btn_down\">\n    //           <i className=\"fas fa-chevron-down\"></i>\n    //         </span>\n    //       </div>\n    //     </div>\n    //   </div>\n    //   <div className=\"__loading_weather\">\n    //     {load ? <Loading_devices /> : false}\n    //   </div>\n    //   <div\n    //     className={`_indoor_weather ${\n    //       load ? \"__loading_weather_other\" : false\n    //     }`}\n    //   >\n    //     <span className=\"__indoor\">{CurrentTemperature}°</span>\n    //   </div>\n    //   {/* status */}\n    //   <div\n    //     className={`_weather_container_mode ${\n    //       load ? \"__loading_weather_other\" : false\n    //     }`}\n    //   >\n    //     <div\n    //       className={cool ? \"_weather_mode_cool_bg\" : \"_weather_mode_cool\"}\n    //       onClick={\n    //         permissionsRoleUser?.permissionsRole?.AreaDispMan\n    //           ? () => {\n    //               handleChangeThermostatState(3);\n    //             }\n    //           : undefined\n    //       }\n    //     >\n    //       <span>COOL</span>\n    //     </div>\n    //     <div\n    //       className={heat ? \"_weather_mode_heat_bg\" : \"_weather_mode_heat\"}\n    //       onClick={\n    //         permissionsRoleUser?.permissionsRole?.AreaDispMan\n    //           ? () => {\n    //               handleChangeThermostatState(4);\n    //             }\n    //           : undefined\n    //       }\n    //     >\n    //       <span>HEAT</span>\n    //     </div>\n    //     <div\n    //       className={auto ? \"_weather_mode_auto_bg\" : \"_weather_mode_auto\"}\n    //       onClick={\n    //         permissionsRoleUser?.permissionsRole?.AreaDispMan\n    //           ? () => {\n    //               handleChangeThermostatState(5);\n    //             }\n    //           : undefined\n    //       }\n    //     >\n    //       <span>AUTO</span>\n    //     </div>\n    //     <div\n    //       className={off ? \"_weather_mode_off_bg\" : \"_weather_mode_off\"}\n    //       onClick={\n    //         permissionsRoleUser?.permissionsRole?.AreaDispMan\n    //           ? () => {\n    //               handleChangeThermostatState(6);\n    //             }\n    //           : undefined\n    //       }\n    //     >\n    //       <span>OFF</span>\n    //     </div>\n    //   </div>\n    // </div>\n  );\n};\n","//React hooks\nimport React, { useState, useContext, useRef, useEffect } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI components\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport { DialogActions } from \"@mui/material\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport FormControl from \"@mui/material/FormControl\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@mui/material/Select\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//Apollo hooks & Queries\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n  GET_ALL_ROOMS_BY_PROJECT,\n  UPDATE_DEVICES,\n} from \"../../../../../controllers/roomControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const EditDevices = ({ open, setCreateDevices, devices, refetch }) => {\n  const { data: rooms } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n    variables: {\n      ProjectId: parseInt(localStorage.getItem(\"id\")),\n      id: parseInt(localStorage.getItem(\"id\")),\n    },\n  });\n\n  const typeGateway = localStorage.getItem(\"typeGateway\");\n  const [updateDevices] = useMutation(UPDATE_DEVICES);\n  const { t } = useTranslation();\n  const customGreen = \"#acf6ac\";\n  const theme = createTheme({\n    palette: {\n      success: {\n        main: customGreen,\n      },\n    },\n  });\n  const { permissionsRoleUser } = useContext(AuthContext);\n  const allRooms = rooms?.getAllRoomsByProject.filter(\n    (room) => room?.Controller?.typeGateway === typeGateway\n  );\n  const allDevices = devices?.Device;\n\n  const handleClose = () => {\n    setCreateDevices(false);\n    setDataEdit({\n      id: \"\",\n      alias: \"\",\n      // name: \"\",\n      typeGateway: typeGateway,\n      setpoint: \"\",\n      visible: \"\",\n      report_energy: \"\",\n      report_occupation: \"\",\n      report_temp: \"\",\n      watts: \"\",\n      watts_min: \"\",\n      watts_off: \"\",\n    });\n  };\n\n  const option = [\n    { name: \"Si\", value: true },\n    { name: \"No\", value: false },\n  ];\n  const [dataEdit, setDataEdit] = useState({\n    id: \"\",\n    alias: \"\",\n    // name: \"\",\n    typeGateway: typeGateway,\n    setpoint: \"\",\n    visible: \"\",\n    report_energy: \"\",\n    report_occupation: \"\",\n    report_temp: \"\",\n    watts: \"\",\n    watts_min: \"\",\n    watts_off: \"\",\n    connection: false,\n    lights: false,\n    plugin: false,\n    thermostat: false,\n    roomId: \"\",\n    newRoomId: \"\",\n  });\n\n  useEffect(() => {\n    if (!dataEdit?.visible) {\n      setDataEdit((prevData) => ({\n        ...prevData,\n        report_occupation: false,\n        report_temp: false,\n      }));\n    }\n  }, [dataEdit?.visible]);\n\n  const buttonRef = useRef(null);\n  const handlerPickDevice = (event) => {\n    const id = event.target.value;\n    const device = allDevices?.find((device) => device?.id === id);\n\n    setDataEdit({\n      id: device?.id || \"\",\n      typeGateway: typeGateway,\n      alias: device?.alias || \"\",\n      setpoint: device?.setpoint_temp || \"\",\n      visible: device?.visible || false,\n      report_energy: device?.report_energy || false,\n      report_occupation: device?.report_occupation || false,\n      report_temp: device?.report_temp || false,\n      watts: device?.watts || \"\",\n      watts_min: device?.watts_min || \"\",\n      watts_off: device?.watts_off || \"\",\n      connection:\n        (device?.Category?.category === \"connection\" &&\n          device?.Category?.sub_category === \"\") ||\n        (device?.Category?.category === \"600\" &&\n          device?.Category?.sub_category === \"99\") ||\n        false,\n      lights:\n        (device?.Category?.category === \"switch\" &&\n          device?.Category?.sub_category === \"interior_plugin\") ||\n        (device?.Category?.category === \"3\" &&\n          device?.Category?.sub_category === \"0\") ||\n        false,\n      plugin:\n        (device?.Category?.category === \"600\" &&\n          device?.Category?.sub_category === \"3\") ||\n        (device?.Category?.category === \"generic_io\" &&\n          device?.Category?.sub_category === \"generic_io\") ||\n        false,\n      thermostat:\n        (device?.Category?.category === \"hvac\" &&\n          device?.Category?.sub_category === \"hvac\") ||\n        (device?.Category?.category === \"5\" &&\n          device?.Category?.sub_category === \"1\") ||\n        false,\n    });\n  };\n\n  const handlerData = (event) => {\n    const { name, value } = event.target;\n\n    setDataEdit((prevData) => ({\n      ...prevData,\n      [name]: value,\n    }));\n  };\n\n  const handlerChangeArea = (event) => {\n    const id = event.target.value;\n    const room = allRooms?.find((room) => room?.id === id);\n\n    setDataEdit((prevData) => ({\n      ...prevData,\n      roomId: parseInt(room?.id) || \"\",\n      newRoomId: room?.NewRoomId || \"\",\n    }));\n  };\n\n  const handlerUpdateDevices = () => {\n    if (buttonRef.current && !buttonRef.current.disabled) {\n      buttonRef.current.disabled = true;\n      if (dataEdit?.id) {\n        try {\n          updateDevices({\n            variables: {\n              updateDeviceId: dataEdit.id,\n              typeGateway: dataEdit.typeGateway,\n              alias: dataEdit.alias,\n              visible: dataEdit.visible,\n              reportEnergy: dataEdit.report_energy,\n              reportOccupation: dataEdit.report_occupation,\n              reportTemp: dataEdit.report_temp,\n              watts: dataEdit.watts,\n              setpointTemp: dataEdit.setpoint,\n              watts_min: dataEdit.watts_min,\n              watts_off: dataEdit.watts_off,\n              roomId: dataEdit.roomId,\n              newRoomId: dataEdit.newRoomId,\n            },\n          });\n          setTimeout(() => {\n            refetch();\n            handleClose();\n            buttonRef.current.disabled = false;\n          }, 2000);\n        } catch (err) {\n          console.error(\"Excepción:\", err);\n        }\n      }\n    }\n  };\n  // const dataDevice = () => {\n  //   if (dataEdit?.thermostat || dataEdit?.lights) {\n  //     return 0;\n  //   }\n  //   return 1;\n  // };\n\n  const handlerDisplaySetpoint = () => {\n    if (dataEdit?.thermostat) {\n      return true;\n    }\n    return false;\n  };\n\n  const handlerDisplayTemperature = () => {\n    if (dataEdit?.connection || dataEdit?.plugin || dataEdit?.thermostat) {\n      return true;\n    }\n    return false;\n  };\n\n  const handlerDisplayWatts = () => {\n    if (dataEdit?.thermostat || dataEdit?.lights) {\n      return true;\n    }\n    return false;\n  };\n\n  return (\n    <>\n      <Dialog\n        open={open}\n        onClose={handleClose}\n        PaperProps={{\n          sx: {\n            display: \"flex\",\n            borderRadius: \"8px\",\n            width: \"500px\",\n            maxWidth: \"95%\",\n            height: \"auto\",\n            [theme.breakpoints.down(\"lg\")]: {\n              width: \"450px\",\n            },\n            [theme.breakpoints.down(\"md\")]: {\n              width: \"90%\",\n            },\n            [theme.breakpoints.down(\"sm\")]: {\n              width: \"95%\",\n            },\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            lineHeight: \"2.6\",\n            padding: \"5px 5px 5px 40px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"center\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"auto\",\n              fontWeight: \"bold\",\n            }}\n          >\n            {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.TITLE\")}\n          </span>\n          <IconButton onClick={handleClose}>\n            <CloseIcon sx={{ color: \"#ffff\" }} />\n          </IconButton>\n        </DialogTitle>\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            gap: \"25px\",\n            padding: \"20px 24px\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              width: \"100%\",\n              marginTop: \"20px\",\n            }}\n          >\n            <FormControl\n              fullWidth\n              size=\"small\"\n              style={{ marginBottom: \"20px\" }}\n            >\n              <InputLabel id=\"demo-simple-select-label\">\n                {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.LABEL\")}\n              </InputLabel>\n              <Select\n                sx={{ borderRadius: \"8px\" }}\n                labelId=\"demo-simple-select-label\"\n                id=\"demo-simple-select\"\n                name=\"id\"\n                label={t(\n                  \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.LABEL\"\n                )}\n                onChange={handlerPickDevice}\n              >\n                {allDevices?.map((value) => (\n                  <MenuItem key={value?.id} value={value?.id}>\n                    {value?.serial}\n                    {value?.name !== value?.serial ? ` ${value?.alias}` : \"\"}\n                  </MenuItem>\n                ))}\n              </Select>\n            </FormControl>\n\n            <div\n              style={{\n                display: \"grid\",\n                gridTemplateColumns: \"1fr 1fr\",\n                width: \"100%\",\n                fontFamily: \"Montserrat, sans-serif\",\n                fontSize: \"18px\",\n                gap: \"10px\",\n                [theme.breakpoints.down(\"sm\")]: {\n                  gridTemplateColumns: \"1fr\",\n                },\n              }}\n            >\n              <div\n                style={{\n                  display: \"flex\",\n                  flexDirection: \"column\",\n                  gap: \"15px\",\n                  padding: \"10px 0px\",\n                }}\n              >\n                {/* <TextField\n                  id=\"outlined-basic\"\n                  label={t(\n                    \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.NAME\"\n                  )}\n                  variant=\"outlined\"\n                  size=\"small\"\n                  InputProps={{\n                    sx: { borderRadius: \"8px\", width: \"100%\" },\n                  }}\n                  name=\"name\"\n                  disabled={!dataEdit?.id}\n                  onChange={handlerData}\n                  value={dataEdit.name}\n                  required={true}\n                /> */}\n                <TextField\n                  id=\"outlined-basic\"\n                  label={t(\n                    \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.ALIAS\"\n                  )}\n                  variant=\"outlined\"\n                  disabled={!dataEdit?.id}\n                  name=\"alias\"\n                  size=\"small\"\n                  InputProps={{\n                    sx: { borderRadius: \"8px\", width: \"100%\" },\n                  }}\n                  onChange={handlerData}\n                  value={dataEdit?.alias}\n                />\n                {handlerDisplaySetpoint() ? (\n                  <TextField\n                    id=\"outlined-basic\"\n                    label={t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.SET_POINT\"\n                    )}\n                    variant=\"outlined\"\n                    size=\"small\"\n                    name=\"setpoint\"\n                    disabled={!dataEdit?.id}\n                    InputProps={{\n                      sx: { borderRadius: \"8px\", width: \"100%\" },\n                    }}\n                    onChange={handlerData}\n                    value={dataEdit?.setpoint}\n                  />\n                ) : null}\n\n                <FormControl fullWidth size=\"small\">\n                  <InputLabel>\n                    {t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.VISIBLE\"\n                    )}\n                  </InputLabel>\n                  <Select\n                    sx={{ borderRadius: \"8px\" }}\n                    labelId=\"demo-simple-select-label\"\n                    id=\"demo-simple-select\"\n                    name=\"visible\"\n                    disabled={!dataEdit?.id}\n                    value={dataEdit?.visible}\n                    label={t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.VISIBLE\"\n                    )}\n                    onChange={handlerData}\n                  >\n                    {option?.map((value, key) => (\n                      <MenuItem key={key} value={value?.value}>\n                        {value?.name}\n                      </MenuItem>\n                    ))}\n                  </Select>\n                </FormControl>\n                {handlerDisplayWatts() ? (\n                  <FormControl fullWidth size=\"small\">\n                    <InputLabel>\n                      {t(\n                        \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_ENERGY\"\n                      )}\n                    </InputLabel>\n                    <Select\n                      sx={{ borderRadius: \"8px\" }}\n                      name=\"report_energy\"\n                      labelId=\"demo-simple-select-label\"\n                      id=\"demo-simple-select\"\n                      disabled={!dataEdit?.id}\n                      value={dataEdit?.report_energy}\n                      label={t(\n                        \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_ENERGY\"\n                      )}\n                      onChange={handlerData}\n                    >\n                      {option?.map((value, key) => (\n                        <MenuItem key={key} value={value?.value}>\n                          {value?.name}\n                        </MenuItem>\n                      ))}\n                    </Select>\n                  </FormControl>\n                ) : null}\n              </div>\n\n              <div\n                style={{\n                  display: \"flex\",\n                  flexDirection: \"column\",\n                  gap: \"15px\",\n                  padding: \"10px 0px\",\n                }}\n              >\n                <FormControl fullWidth size=\"small\">\n                  <InputLabel>\n                    {t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_OCCUPATION\"\n                    )}\n                  </InputLabel>\n                  <Select\n                    sx={{ borderRadius: \"8px\" }}\n                    labelId=\"demo-simple-select-label\"\n                    id=\"demo-simple-select\"\n                    disabled={!dataEdit?.id || !dataEdit?.visible}\n                    value={dataEdit?.report_occupation}\n                    name=\"report_occupation\"\n                    label={t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_OCCUPATION\"\n                    )}\n                    onChange={handlerData}\n                  >\n                    {option?.map((value, key) => (\n                      <MenuItem key={key} value={value?.value}>\n                        {value?.name}\n                      </MenuItem>\n                    ))}\n                  </Select>\n                </FormControl>\n\n                {handlerDisplayTemperature() ? (\n                  <FormControl fullWidth size=\"small\">\n                    <InputLabel>\n                      {t(\n                        \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_TEMPERATURE\"\n                      )}\n                    </InputLabel>\n                    <Select\n                      sx={{ borderRadius: \"8px\" }}\n                      labelId=\"demo-simple-select-label\"\n                      id=\"demo-simple-select\"\n                      disabled={!dataEdit?.id || !dataEdit?.visible}\n                      name=\"report_temp\"\n                      value={dataEdit?.report_temp}\n                      label={t(\n                        \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_TEMPERATURE\"\n                      )}\n                      onChange={handlerData}\n                    >\n                      {option?.map((value, key) => (\n                        <MenuItem key={key} value={value?.value}>\n                          {value?.name}\n                        </MenuItem>\n                      ))}\n                    </Select>\n                  </FormControl>\n                ) : null}\n\n                {handlerDisplayWatts() ? (\n                  <TextField\n                    id=\"outlined-basic\"\n                    label={t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.WATTS\"\n                    )}\n                    variant=\"outlined\"\n                    size=\"small\"\n                    name=\"watts\"\n                    InputProps={{\n                      sx: { borderRadius: \"8px\", width: \"100%\" },\n                    }}\n                    disabled={!dataEdit?.id}\n                    onChange={handlerData}\n                    value={dataEdit?.watts}\n                  />\n                ) : null}\n\n                {handlerDisplayWatts() ? (\n                  <TextField\n                    id=\"outlined-basic\"\n                    label={t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.WATTS_MIN\"\n                    )}\n                    variant=\"outlined\"\n                    size=\"small\"\n                    name=\"watts_min\"\n                    InputProps={{\n                      sx: { borderRadius: \"8px\", width: \"100%\" },\n                    }}\n                    disabled={!dataEdit?.id}\n                    onChange={handlerData}\n                    value={dataEdit?.watts_min}\n                  />\n                ) : null}\n\n                {handlerDisplayWatts() ? (\n                  <TextField\n                    id=\"outlined-basic\"\n                    label={t(\n                      \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.WATTS_OFF\"\n                    )}\n                    variant=\"outlined\"\n                    size=\"small\"\n                    name=\"watts_off\"\n                    InputProps={{\n                      sx: { borderRadius: \"8px\", width: \"100%\" },\n                    }}\n                    disabled={!dataEdit?.id}\n                    onChange={handlerData}\n                    value={dataEdit?.watts_off}\n                  />\n                ) : null}\n              </div>\n            </div>\n            <span\n              style={{\n                display: \"flex\",\n                margin: \"5px 0px 10px 0px\",\n                fontWeight: \"bold\",\n              }}\n            >\n              {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.CHANGE_AREA\")}\n            </span>\n            <FormControl\n              fullWidth\n              size=\"small\"\n              style={{ marginBottom: \"20px\" }}\n            >\n              <InputLabel id=\"demo-simple-select-label\">\n                {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.AREAS\")}\n              </InputLabel>\n              <Select\n                sx={{ borderRadius: \"8px\" }}\n                labelId=\"demo-simple-select-label\"\n                id=\"demo-simple-select\"\n                name=\"areas\"\n                label={t(\n                  \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.AREAS\"\n                )}\n                onChange={handlerChangeArea}\n                value={dataEdit?.roomId}\n                disabled={!dataEdit?.id || dataEdit?.plugin}\n              >\n                {allRooms?.map((value) => (\n                  <MenuItem key={value?.id} value={value?.id}>\n                    {value?.alias}\n                  </MenuItem>\n                ))}\n              </Select>\n            </FormControl>\n          </div>\n        </DialogContent>\n        {permissionsRoleUser?.permissionsRole?.AreaDispMan ? (\n          <DialogActions\n            sx={{\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              marginTop: \"-20px\",\n              marginBottom: \"10px\",\n            }}\n          >\n            <ThemeProvider theme={theme}>\n              <Button\n                sx={{\n                  display: \"flex\",\n                  width: \"93%\",\n                  padding: \"7px\",\n                  color: \"#000\",\n                  borderRadius: \"8px\",\n                  lineHeight: \"18px\",\n                }}\n                variant=\"contained\"\n                color=\"success\"\n                onClick={() => handlerUpdateDevices()}\n                ref={buttonRef}\n                disabled={dataEdit?.id ? false : true}\n              >\n                {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.ACCEPT_BUTTON\")}\n              </Button>\n            </ThemeProvider>\n          </DialogActions>\n        ) : null}\n      </Dialog>\n    </>\n  );\n};\n","//React hooks\nimport React, { useContext, useState } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI\nimport Button from \"@mui/material/Button\";\nimport Fade from \"@mui/material/Fade\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport { useTheme } from \"@mui/material/styles\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { EditDevices } from \"./EditDevices\";\n\nexport const MenuButton = ({ devices, refetch }) => {\n  const { t } = useTranslation();\n  const theme = useTheme();\n  const [anchorEl, setAnchorEl] = useState(null);\n  const [createDevices, setCreateDevices] = useState(false);\n  const open = Boolean(anchorEl);\n  const { permissionsRoleUser } = useContext(AuthContext);\n\n  const handleClick = (event) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handlerMenu = () => {\n    setCreateDevices(true);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  return (\n    <>\n      {permissionsRoleUser?.permissionsRole?.AreaDisp &&\n      permissionsRoleUser?.permissionsRole?.AreaDispMan ? (\n        <div className=\"add_device_button\">\n          <Button\n            id=\"fade-button\"\n            aria-controls={open ? \"fade-menu\" : undefined}\n            aria-haspopup=\"true\"\n            aria-expanded={open ? \"true\" : undefined}\n            onClick={handleClick}\n            sx={{\n              border: \"1px solid\",\n              borderColor: \"white\",\n              boxShadow: \"1px 1px 4px 4px rgba(146, 158, 158, 0.3)\",\n              [theme.breakpoints.down(\"sm\")]: { padding: \"3px 3px 3px 3px\" },\n            }}\n           \n          >\n            <MoreVertIcon color=\"action\" />\n          </Button>\n          <Menu\n            id=\"fade-menu\"\n            MenuListProps={{\n              \"aria-labelledby\": \"fade-button\",\n            }}\n            anchorEl={anchorEl}\n            open={open}\n            onClose={handleClose}\n            TransitionComponent={Fade}\n          >\n            <MenuItem onClick={handlerMenu}>\n              {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.EDIT_DEVICE\")}\n            </MenuItem>\n          </Menu>\n        </div>\n      ) : null}\n      {permissionsRoleUser?.permissionsRole?.AreaDispMan ? (\n        <EditDevices\n          open={createDevices}\n          setCreateDevices={setCreateDevices}\n          devices={devices}\n          refetch={refetch}\n        />\n      ) : null}\n    </>\n  );\n};\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\nimport HSC from \"../../../components/devices/HSC\";\nimport PluguinAula from \"../../../components/devices/PluguinAula\";\nimport Weather from \"../../../components/devices/Weather\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ALL_DEVICES } from \"../../../controllers/devicesController\";\nimport { useParams } from \"react-router\";\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Occupation from \"../../../components/highcharts/Occupation\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Slide from \"@material-ui/core/Slide\";\nimport Loading from \"../../../components/loading/Loading\";\nimport Construction from \"../../../components/loading/Construction\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport MessageInfo from \"../../../components/message/MessageInfo\";\nimport MessageSuccess from \"../../../components/message/MessageSuccess\";\nimport MessageError from \"../../../components/message/MessageError\";\nimport MessageWarning from \"../../../components/message/MessageWarning\";\nimport html2canvas from \"html2canvas\";\nimport Measurer from \"../../../components/highcharts/Measurer\";\nimport Temperature from \"../../../components/highcharts/Temperature\";\nimport {\n  ExtractTypeGateway,\n  calc_device_fails,\n  devices_fails,\n} from \"../../../utils/helpers\";\nimport { useHistory } from \"react-router-dom\";\nimport { Hidden } from \"@material-ui/core\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport HorusMotel from \"../../../components/devices/HorusMotel\";\n//Devices\nimport SensorElectrico from \"../../../components/devices/SensorElectrico\";\nimport Interruptor from \"../../../components/devices/Interruptor\";\nimport SensorPuerta from \"../../../components/devices/SensorPuerta\";\nimport SensorMovimiento from \"../../../components/devices/SensorMovimiento\";\nimport SensorHumo from \"../../../components/devices/SensorHumo\";\nimport SensorTemperatura from \"../../../components/devices/SensorTemperatura\";\nimport SensorHumedad from \"../../../components/devices/SensorHumedad\";\nimport Cerradura from \"../../../components/devices/DoorLock/Cerradura\";\nimport Ocupation from \"../../../components/reports/Ocupation/Ocupation\";\nimport CurtainSwitch from \"../../../components/devices/CurtainSwitch/CurtainSwitch\";\nimport { VRF } from \"../../../components/devices/Vrf/VRFG150\";\n//helperDevices,\nimport { SocketVRF, IsThereVRF, getSocket } from \"./helperDevices\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//utils\nimport { spliceDevicesData, filterNameDevices } from \"./helperDevices\";\nimport { MenuButton } from \"./components/menuDevices/MenuButton\";\n\nlet client = null;\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"relative\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: \"relative\",\n    height: 200,\n    [theme.breakpoints.down(\"xs\")]: {\n      width: \"100% !important\", // Overrides inline-style\n      height: 100,\n    },\n    \"&:hover, &$focusVisible\": {\n      zIndex: 1,\n      \"& $imageBackdrop\": {\n        opacity: 0.15,\n      },\n      \"& $imageMarked\": {\n        opacity: 0,\n      },\n      \"& $imageTitle\": {\n        border: \"4px solid currentColor\",\n      },\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center 40%\",\n  },\n  imageBackdrop: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  imageTitle: {\n    position: \"relative\",\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n      theme.spacing(1) + 6\n    }px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: \"absolute\",\n    bottom: -2,\n    left: \"calc(50% - 9px)\",\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  table: {\n    minWidth: 700,\n  },\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst initialStateFilter = {\n  all: true,\n  on: false,\n  off: false,\n};\n\nconst Devices = () => {\n  const { t } = useTranslation();\n  const {\n    serial,\n    setSerial,\n    area,\n    roomId,\n    setRoomId,\n    setArea,\n    setIdArea,\n    setSuccessMessage,\n    setErrorMessage,\n    setWarningMessage,\n    infoMessage,\n    setInfoMessage,\n    setactiveNextBack,\n    loadingPdf,\n    setLoadingPdf,\n    permissionsRoleUser,\n    setCalendarDatePicker,\n    occupationAreaName,\n    setOccupationAreaName,\n    nameHeaderOcupation,\n    setGlobalCalendarDay,\n    setIdHeaderOcupation,\n  } = useContext(AuthContext);\n  const [dataSocket, setDataSocket] = useState();\n  const [stateFilter, setStateFilter] = useState(initialStateFilter);\n  const { id } = useParams();\n  const [aire, setAire] = useState([]);\n  const [pluguin, setPluguin] = useState([]);\n  const [pluginMotel, setPluginMotel] = useState([]);\n  const [device, setDevice] = useState([]);\n  const [aire_clon, setAire_clon] = useState([]);\n  const [pluguin_clon, setPluguin_clon] = useState([]);\n  const [device_clon, setDevice_clon] = useState([]);\n  const [pluginMotel_clon, setPluginMotel_clon] = useState([]);\n  const history = useHistory();\n  const childRef = useRef();\n  const [textErrorAlert, setTextErrorAlert] = useState(\"\");\n  const [textWarningAlert, setTextWarningAlert] = useState(\"\");\n  const [textInfoAlert, setTextInfoAlert] = useState(\"\");\n  const [createDevices, setCreateDevice] = useState(false);\n\n  const {\n    data: dataDevice,\n    loading,\n    error,\n    refetch,\n  } = useQuery(GET_ALL_DEVICES, {\n    variables: {\n      RoomId: parseInt(id, 10),\n      ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n      typeGateway: ExtractTypeGateway(),\n    },\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: true,\n  });\n\n  const listMacromeasureOption =\n    dataDevice?.getMettersInProjets[0]?.Metters?.length > 0 ||\n    dataDevice?.getInfoMetersByProject?.length > 0;\n\n  const [open, setOpen] = React.useState(false);\n  const [openMeasurer, setOpenMeasurer] = useState(false);\n  const [openTemperature, setOpenTemperature] = useState(false);\n\n  const {\n    REACT_APP_SOCKET_PRODUCTION,\n    REACT_APP_SOCKET_DEVELOP,\n    REACT_APP_SOCKET_STAGING,\n  } = process.env;\n\n  const renderDevice = (item, key) => {\n    const { category, sub_category } = item?.Category;\n    switch (parseInt(category)) {\n      case 3:\n        if (item?.variables?.Type === \"Sensor\") {\n          return <SensorElectrico {...key} item={item} send={Send} />;\n        } else {\n          return <Interruptor {...key} item={item} send={Send} />;\n        }\n      case 4:\n        switch (parseInt(sub_category)) {\n          case 1:\n            return (\n              <SensorPuerta\n                {...key}\n                item={item}\n                send={Send}\n                areaName={dataDevice?.getAllDevices?.name}\n              />\n            );\n          case 3:\n            return (\n              <SensorMovimiento\n                {...key}\n                item={item}\n                send={Send}\n                areaName={dataDevice?.getAllDevices?.name}\n              />\n            );\n          case 4:\n            return <SensorHumo {...key} item={item} send={Send} />;\n          default:\n            return null;\n        }\n\n      case 17:\n        return sub_category == 0 ? (\n          <SensorTemperatura {...key} item={item} />\n        ) : null;\n\n      case 16:\n        return sub_category == 0 ? (\n          <SensorHumedad {...key} item={item} />\n        ) : null;\n\n      case 7:\n        return sub_category == 0 ? (\n          <Cerradura\n            {...key}\n            item={item}\n            send={Send}\n            contId={dataDevice?.getAllDevices?.Controller?.id}\n          />\n        ) : null;\n      case 8:\n        return sub_category == 0 ? (\n          <CurtainSwitch\n            {...key}\n            item={item}\n            serial={dataDevice?.getAllDevices?.Controller?.serial}\n            client={client}\n            endPoint={REACT_APP_SOCKET_PRODUCTION}\n          />\n        ) : null;\n\n      default:\n        return null;\n    }\n  };\n\n  const [openReport, setOpenReport] = useState(\"ocupation\");\n\n  const classes = useStyles();\n  useEffect(() => {\n    const vrf = IsThereVRF(dataDevice?.getAllDevices?.Device);\n    if (vrf) {\n      SocketVRF();\n    }\n  }, [dataDevice?.getAllDevices]);\n\n  const handleClickOpen = () => {\n    const day_by_miliseconds = 86400000;\n    // Hora actual\n    const actual_hour = new Date().getHours();\n    // Hora inicio\n    const hotel_hour = Number(\n      localStorage.getItem(\"startTime\").substring(0, 2)\n    );\n    setIdHeaderOcupation(dataDevice?.getAllDevices?.id);\n\n    if (openReport == \"ocupation\") {\n      setCalendarDatePicker(\n        actual_hour < hotel_hour\n          ? new Date(new Date().getTime() - day_by_miliseconds)\n          : new Date()\n      );\n      setArea(dataDevice?.getAllDevices?.alias);\n      setIdArea(dataDevice?.getAllDevices?.id);\n      localStorage.setItem(\"selectedAreaName\", dataDevice?.getAllDevices?.name);\n      setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n      setOpen(true);\n      if (\n        localStorage.getItem(\"startTime\") === \"0:00\" ||\n        localStorage.getItem(\"startTime\") === \"00:00\"\n      ) {\n        setGlobalCalendarDay(new Date());\n      } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n        if (actual_hour < 15) {\n          setGlobalCalendarDay(\n            new Date(new Date(new Date().getTime() - day_by_miliseconds))\n          );\n        } else if (actual_hour >= 15) {\n          setGlobalCalendarDay(new Date());\n        }\n      }\n    } else if (openReport == \"temperature\") {\n      setOpenTemperature(true);\n      if (\n        localStorage.getItem(\"startTime\") === \"0:00\" ||\n        localStorage.getItem(\"startTime\") === \"00:00\"\n      ) {\n        setGlobalCalendarDay(new Date());\n      } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n        if (actual_hour < 15) {\n          setGlobalCalendarDay(\n            new Date(new Date(new Date().getTime() - day_by_miliseconds))\n          );\n        } else if (actual_hour >= 15) {\n          setGlobalCalendarDay(new Date());\n        }\n      }\n\n      setactiveNextBack(true);\n    }\n  };\n  const handleClose = () => {\n    // history.push(`/app/devices/${roomId}`)\n    setOpen(false);\n    setCalendarDatePicker(new Date());\n  };\n\n  const handleCloseMeasurer = () => {\n    setOpenMeasurer(false);\n  };\n\n  const handleCloseTemperature = () => {\n    setCalendarDatePicker(new Date());\n    setOpenTemperature(false);\n  };\n\n  useEffect(() => {\n    if (client) {\n      client.onerror = client.onopen = client.onclose = null;\n      client.close();\n    }\n\n    const token = localStorage.getItem(\"token\");\n\n    const headers = {\n      Authorization: `Bearer ${token}`,\n    };\n\n    client = new W3CWebSocket(`${REACT_APP_SOCKET_PRODUCTION}` /* , headers */);\n\n    let pingInterval;\n\n    client.onopen = () => {\n      if (serial) client.send(JSON.stringify({ channel: serial }));\n\n      pingInterval = setInterval(() => {\n        if (client?.readyState === WebSocket.OPEN) {\n          client.send(JSON.stringify({ type: \"ping\" }));\n        }\n      }, 30000);\n    };\n\n    client.onclose = () => {\n      clearInterval(pingInterval);\n      client = null;\n    };\n\n    return () => {\n      clearInterval(pingInterval);\n      if (client) client.close();\n    };\n  }, [serial]);\n\n  useEffect(() => {\n    if (client) {\n      client.onmessage = (message) => {\n        let data = JSON.parse(message?.data);\n\n        // Ignorar mensajes de ping\n        if (data?.type === \"ping\") return;\n\n        setDataSocket(data);\n        if (data?.message) {\n          if (data?.message == \"Device update\") {\n            updateState(data);\n          } else if (\n            data?.message == \"Orden enviada y ejecutada correctamente.\" &&\n            data?.status === 200\n          ) {\n            setTimeout(() => {\n              setSuccessMessage(true);\n            }, 2500);\n          } else if (data?.status === 202) {\n            setTextInfoAlert(\"Reintentando enviar la orden\");\n            setInfoMessage(true);\n          } else if (data?.status === 400) {\n            setTextWarningAlert(\"Orden incorrecta\");\n            setWarningMessage(true);\n          } else if (data?.status === 404) {\n            setTextWarningAlert(\"Dispositivo no encontrado\");\n            setWarningMessage(true);\n          } else if (data?.status === 500) {\n            setTimeout(() => {\n              setErrorMessage(true);\n            }, 2500);\n          } else {\n            console.log(data?.message, data?.status);\n          }\n        }\n      };\n    } else {\n      console.error(\"El cliente no está definido\");\n    }\n  }, [device]);\n\n  async function updateState(dev) {\n    device?.findIndex((elemento, indice) => {\n      if (elemento?.id === dev?.id_device) {\n        let tempDevice = [...device];\n        tempDevice[indice] = { ...tempDevice[indice] };\n        tempDevice[indice].variables = { ...tempDevice[indice].variables };\n        if (device[indice].Category.category == 3) {\n          if (dev?.action == \"Status\") {\n            tempDevice[indice].variables.Status = dev?.status;\n          }\n        } else if (\n          (device[indice]?.Category?.category == 4 &&\n            device[indice]?.Category?.sub_category == 3) ||\n          (device[indice]?.Category?.category == 4 &&\n            device[indice]?.Category?.sub_category == 1)\n        ) {\n          if (dev?.action == \"Status\") {\n            tempDevice[indice].variables.Status = dev?.status;\n          } else if (dev?.action == \"doorLock\") {\n            tempDevice[indice].variables.doorLock = dev?.status;\n          } else if (dev?.action == \"BatteryLevel\") {\n            tempDevice[indice].variables.BatteryLevel = dev?.status;\n          } else if (dev?.action == \"Tripped\") {\n            tempDevice[indice].variables.Tripped = dev?.status;\n          } else if (dev?.action == \"Armed\") {\n            tempDevice[indice].variables.Armed = dev?.status;\n          }\n        } else if (\n          device[indice].Category.category == 4 &&\n          device[indice].Category.sub_category == 4\n        ) {\n          if (dev?.action == \"Tripped\") {\n            tempDevice[indice].variables.Tripped = dev?.status;\n          } else if (dev?.action == \"Armed\") {\n            tempDevice[indice].variables.Armed = dev?.status;\n          } else if (dev?.action == \"BatteryLevel\") {\n            tempDevice[indice].variables.BatteryLevel = dev?.status;\n          }\n        } else if (\n          device[indice].Category.category == 7 &&\n          device[indice].Category.sub_category == 0\n        ) {\n          if (dev?.action == \"Status\") {\n            tempDevice[indice].variables.Status = dev?.status;\n          }\n        } else if (device[indice].Category.category == 5) {\n          let tempAire = [...aire];\n          aire?.findIndex((elemento, i) => {\n            if (elemento?.id == dev?.id_device) {\n              tempAire[i] = { ...tempAire[i] };\n              tempAire[i].variables = {\n                ...tempAire[i].variables,\n              };\n              if (dev?.action == \"ModeStatus\") {\n                tempAire[i].variables.ModeStatus = dev?.status;\n                tempDevice[indice].variables.ModeStatus = dev?.status;\n              } else if (dev?.action == \"CurrentSetpoint\") {\n                tempAire[i].variables.CurrentSetpoint = dev?.status;\n                tempDevice[indice].variables.CurrentSetpoint = dev?.status;\n              } else if (dev?.action == \"CurrentTemperature\") {\n                tempAire[i].variables.CurrentTemperature = dev?.status;\n                tempDevice[indice].variables.CurrentTemperature = dev?.status;\n              }\n            }\n          });\n          setAire(tempAire);\n        } else if (\n          (device[indice]?.Category?.category == 600 &&\n            device[indice]?.Category?.sub_category == 1) ||\n          (device[indice]?.Category?.category == 600 &&\n            device[indice]?.Category?.sub_category == 9)\n        ) {\n          if (dev.action == \"EstadoTexto\") {\n            tempDevice[indice].variables.EstadoTexto = dev?.status;\n            let tempPluguin = [...pluguin];\n            pluguin?.findIndex((elemento, i) => {\n              if (elemento?.id === dev?.id_device) {\n                tempPluguin[i] = { ...tempPluguin[i] };\n                tempPluguin[i].variables = {\n                  ...tempPluguin[i].variables,\n                };\n                tempPluguin[i].variables.EstadoTexto = dev?.status;\n              }\n            });\n            setPluguin(tempPluguin);\n          } else if (dev?.action == \"AccionTexto\") {\n            tempDevice[indice].variables.AccionTexto = dev?.status;\n            let tempPluguin = [...pluguin];\n            pluguin?.findIndex((elemento, i) => {\n              if (elemento?.id === dev?.id_device) {\n                tempPluguin[i] = { ...tempPluguin[i] };\n                tempPluguin[i].variables = {\n                  ...tempPluguin[i].variables,\n                };\n                tempPluguin[i].variables.AccionTexto = dev?.status;\n              }\n            });\n            setPluguin(tempPluguin);\n          } else if (dev?.action == \"Modo\") {\n            tempDevice[indice].variables.AccionTexto = dev?.status;\n            let tempPluguin = [...pluguin];\n            pluguin?.findIndex((elemento, i) => {\n              if (elemento?.id === dev?.id_device) {\n                tempPluguin[i] = { ...tempPluguin[i] };\n                tempPluguin[i].variables = {\n                  ...tempPluguin[i].variables,\n                };\n                tempPluguin[i].variables.Modo = dev?.status;\n              }\n            });\n            setPluguin(tempPluguin);\n          }\n        }\n        setDevice(tempDevice);\n      }\n    });\n  }\n\n  function Send(device, status) {\n    if (device?.Category?.category == 3) {\n      client.send(\n        JSON.stringify({\n          serial: dataDevice?.getAllDevices?.Controller?.serial,\n          id_device: device?.id_in_controller,\n          variable: \"ChangeStatus\",\n          action: \"status\",\n          value: status ? \"1\" : \"0\",\n        })\n      );\n    } else if (\n      (device?.Category?.category == 4 &&\n        device?.Category?.sub_category == 3) ||\n      (device?.Category?.category == 4 &&\n        device?.Category?.sub_category == 1) ||\n      (device?.Category?.category == 4 && device?.Category?.sub_category == 4)\n    ) {\n      client.send(\n        JSON.stringify({\n          serial: dataDevice?.getAllDevices?.Controller?.serial,\n          id_device: device?.id_in_controller,\n          action: \"armed\",\n          variable: \"ChangeStatus\",\n          value: status ? \"0\" : \"1\",\n        })\n      );\n    } else if (\n      device?.Category?.category == 7 &&\n      device?.Category?.sub_category == 0\n    ) {\n      client.send(\n        JSON.stringify({\n          serial: dataDevice?.getAllDevices?.Controller?.serial,\n          id_device: device?.id_in_controller,\n          action: \"doorLock\",\n          variable: \"ChangeStatus\",\n          value: status ? \"0\" : \"1\",\n        })\n      );\n    }\n  }\n  function aireAction(device, status, action) {\n    if (action == 1 || action == 2) {\n      client.send(\n        JSON.stringify({\n          serial: dataDevice?.getAllDevices?.Controller?.serial,\n          id_device: device?.id_in_controller,\n          action: \"setPoint\",\n          variable: \"ChangeStatus\",\n          value: status,\n        })\n      );\n    } else {\n      client.send(\n        JSON.stringify({\n          serial: dataDevice?.getAllDevices?.Controller?.serial,\n          id_device: device?.id_in_controller,\n          action: \"modeStatus\",\n          variable: \"ChangeStatus\",\n          value: status,\n        })\n      );\n    }\n  }\n\n  const VRFActions = (device, status, action) => {\n    const socket = getSocket();\n    if (socket && socket.readyState === WebSocket.OPEN) {\n      const message =\n        action === 1 || action === 2\n          ? JSON.stringify({\n              serial: dataDevice?.getAllDevices?.Controller?.serial,\n              id_device: device?.variables?.deviceId,\n              action: \"setpoint\",\n              variable: \"ChangeStatus\",\n              value: status,\n              projectId: parseInt(localStorage.getItem(\"id\")),\n            })\n          : JSON.stringify({\n              serial: dataDevice?.getAllDevices?.Controller?.serial,\n              id_device: device?.variables?.deviceId,\n              action: \"modeStatus\",\n              variable: \"ChangeStatus\",\n              value: status,\n              projectId: parseInt(localStorage.getItem(\"id\")),\n            });\n      socket.send(message);\n    } else {\n      console.error(\"Socket is not open\");\n    }\n  };\n  function pluguinAction(device, status, action, subcategory) {\n    if (subcategory == 9) {\n      client.send(\n        JSON.stringify({\n          serial: dataDevice?.getAllDevices?.Controller?.serial,\n          id_device: device?.id_in_controller,\n          action: \"pluginAction\",\n          variable: \"ChangeStatus\",\n          value: status,\n        })\n      );\n    } else {\n      if (action == 1 || action == 2) {\n        client.send(\n          JSON.stringify({\n            serial: dataDevice?.getAllDevices?.Controller?.serial,\n            id_device: device?.id_in_controller,\n            action: \"pluginAction\",\n            variable: \"ChangeStatus\",\n            value: status,\n          })\n        );\n      } else {\n        client.send(\n          JSON.stringify({\n            serial: dataDevice?.getAllDevices?.Controller?.serial,\n            id_device: device?.id_in_controller,\n            action: \"pluginMode\",\n            variable: \"ChangeStatus\",\n            value: status,\n          })\n        );\n      }\n    }\n  }\n\n  useEffect(() => {\n    if (dataDevice) {\n      setSerial(dataDevice?.getAllDevices?.Controller?.serial);\n      localStorage.setItem(\"RoomName\", dataDevice?.getAllDevices?.alias);\n      setAire([]);\n      setPluguin([]);\n      setPluginMotel([]);\n      setDevice([]);\n\n      for (let i = 0; i < dataDevice?.getAllDevices?.Device?.length; i++) {\n        if (dataDevice?.getAllDevices?.Device[i]?.visible) {\n          if (dataDevice?.getAllDevices?.Device[i]?.Category?.category == 5) {\n            // Aún no se usará\n            let helius = dataDevice?.getAllDevices?.Device?.filter(\n              (i) => i?.Category?.name == \"Termostato\"\n            );\n            setAire(helius);\n            setAire_clon([...aire, dataDevice?.getAllDevices?.Device[i]]);\n          } else if (\n            dataDevice?.getAllDevices?.Device[i]?.Category?.category == 600 &&\n            dataDevice?.getAllDevices?.Device[i]?.Category?.sub_category == 1\n          ) {\n            setPluguin([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n            setPluguin_clon([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n          } else if (\n            dataDevice?.getAllDevices?.Device[i]?.Category?.category == 600 &&\n            dataDevice?.getAllDevices?.Device[i]?.Category?.sub_category == 9\n          ) {\n            setPluguin([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n            setPluguin_clon([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n          } else if (\n            dataDevice?.getAllDevices?.Device[i]?.Category?.category == 600 &&\n            dataDevice?.getAllDevices?.Device[i]?.Category?.sub_category == 3\n          ) {\n            setPluginMotel([\n              ...pluginMotel,\n              dataDevice?.getAllDevices?.Device[i],\n            ]);\n            setPluginMotel_clon([\n              ...pluginMotel,\n              dataDevice?.getAllDevices?.Device[i],\n            ]);\n          }\n          setDevice((device) => [\n            ...device,\n            dataDevice?.getAllDevices?.Device[i],\n          ]);\n          setDevice_clon((device) => [\n            ...device,\n            dataDevice?.getAllDevices?.Device[i],\n          ]);\n        }\n      }\n    }\n  }, [dataDevice]);\n\n  const handleStatusFilter = (data, state) => {\n    if (data == \"all\") {\n      if (state.all) {\n        return setStateFilter({\n          all: true,\n          on: false,\n          off: false,\n        });\n      }\n      return setStateFilter({\n        all: !state.all,\n        on: false,\n        off: false,\n      });\n    } else if (data == \"on\") {\n      if (state.on) {\n        return setStateFilter({\n          all: false,\n          on: true,\n          off: false,\n        });\n      }\n      return setStateFilter({\n        on: !state.on,\n        all: false,\n        off: false,\n      });\n    } else if (data == \"off\") {\n      if (state.off) {\n        return setStateFilter({\n          off: true,\n          on: false,\n          all: false,\n        });\n      }\n      return setStateFilter({\n        off: !state.off,\n        on: false,\n        all: false,\n      });\n    }\n  };\n\n  const handleOpenReports = (event) => {\n    const value = event.target.value;\n    setOpenReport(value);\n  };\n\n  const handleFilter = (data, state) => {\n    const v_plugin_clon = [...pluguin_clon];\n    const v_aire_clon = [...aire_clon];\n    const v_devices_clon = [...device_clon];\n    if (data == \"off\") {\n      const c = v_devices_clon?.filter((i) => i?.variables?.CommFailure == \"1\");\n      const w = v_aire_clon?.filter(\n        (i) => i?.visible != true || i?.variables?.CommFailure == \"1\"\n      );\n      const p = v_plugin_clon?.filter((i) => i?.visible != true);\n      setDevice(c);\n      setAire(w);\n      setPluguin(p);\n      handleStatusFilter(data, state);\n    } else if (data == \"on\") {\n      const c = v_devices_clon?.filter(\n        (i) =>\n          i?.variables?.CommFailure == \"0\" ||\n          i?.variables?.CommFailure == undefined\n      );\n      const w = v_aire_clon?.filter(\n        (i) => i?.visible == true && i?.variables?.CommFailure !== \"1\"\n      );\n      const p = v_plugin_clon?.filter((i) => i?.visible == true);\n      setAire(w);\n      setPluguin(p);\n      setDevice(c);\n      handleStatusFilter(data, state);\n    } else if (data == \"all\") {\n      setDevice(v_devices_clon);\n      setAire(v_aire_clon);\n      setPluguin(v_plugin_clon);\n      handleStatusFilter(data, state);\n    }\n  };\n\n  const printDocument = () => {\n    const input = document.getElementById(\"divToPrint\");\n    html2canvas(input).then((canvas) => {\n      const imgData = canvas.toDataURL(\"image/png\");\n    });\n  };\n\n  if (loading || !dataDevice) {\n    return (\n      <div>\n        <Loading />\n      </div>\n    );\n  }\n\n  if (error) {\n    return <Construction />;\n  }\n\n  return (\n    <>\n      {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n      permissionsRoleUser?.permissionsRole?.AreaDisp ? (\n        <div className=\"_devices_container\">\n          {dataDevice && dataDevice?.getAllDevices?.Controller?.online ? (\n            <></>\n          ) : (\n            <div className=\"_label_offline\">\n              <span className=\"_label_offline_container\">\n                <span className=\"_icon_label_offline\">\n                  <i className=\"fas fa-exclamation-triangle\"></i>\n                </span>\n                <span className=\"_title_label_offline\">\n                  {t(\"VIEW_AREA.COMPONENT_HEADER_STATUS_NOTIFICATION\")}\n                </span>\n              </span>\n            </div>\n          )}\n          <div className=\"__devices_container_project_and_filter__\">\n            <div className=\"__devices_container_logo__\">\n              <img\n                className=\"__devices_img__\"\n                src={dataDevice?.getProjectByIdHeader?.img}\n                alt=\"Logo\"\n                width=\"180\"\n                height=\"180\"\n              />\n            </div>\n            <div className=\"__devices_container_project_filters__\">\n              <div className=\"__devices_container_project__\">\n                <ProjectCardAreaControl\n                  data={dataDevice?.getProjectByIdHeader}\n                />\n              </div>\n              <div className=\"__devices_container_filter__\">\n                <div className=\"__devices_container_name__\">\n                  <span className=\"__devices_name__\">\n                    {dataDevice?.getAllDevices?.alias}\n                  </span>\n                </div>\n                <div className=\"__devices_container_filter_option__\">\n                  <div className=\"__devices_filter_status__\">\n                    <div\n                      className={`__filter_status_title__ ${\n                        stateFilter?.all\n                          ? \"__filter_status_title_all_true__\"\n                          : \"__filter_status_title_all_false__\"\n                      }`}\n                    >\n                      <span\n                        onClick={\n                          permissionsRoleUser?.permissionsRole?.AreaDispMan\n                            ? () => handleFilter(\"all\", stateFilter)\n                            : false\n                        }\n                      >\n                        {t(\n                          \"VIEW_AREA.COMPONENT_DEVICES_CONTAINER_FILTER_OPTIONS.ALL\"\n                        )}\n                      </span>\n                    </div>\n                    <div\n                      className={`__filter_status_title__ ${\n                        stateFilter?.on\n                          ? \"__filter_status_title_on_true__\"\n                          : \"__filter_status_title_on_false__\"\n                      }`}\n                      onClick={\n                        permissionsRoleUser?.permissionsRole?.AreaDispMan\n                          ? () => handleFilter(\"on\", stateFilter)\n                          : false\n                      }\n                    >\n                      <span>\n                        {t(\n                          \"VIEW_AREA.COMPONENT_DEVICES_CONTAINER_FILTER_OPTIONS.ONLINE\"\n                        )}\n                      </span>\n                    </div>\n                    <div\n                      className={`__filter_status_title__ ${\n                        stateFilter?.off\n                          ? \"__filter_status_title_off_true__\"\n                          : \"__filter_status_title_off_false__\"\n                      }`}\n                    >\n                      <span\n                        onClick={\n                          permissionsRoleUser?.permissionsRole?.AreaDispMan\n                            ? () => handleFilter(\"off\", stateFilter)\n                            : false\n                        }\n                      >\n                        {t(\n                          \"VIEW_AREA.COMPONENT_DEVICES_CONTAINER_FILTER_OPTIONS.FAILED\"\n                        )}\n                      </span>\n                    </div>\n                  </div>\n                </div>\n                <div className=\"__devices_container_report__\">\n                  <div className=\"_devices_report\">\n                    <span className=\"_report_select\">\n                      <select\n                        name=\"report\"\n                        id=\"\"\n                        className=\"_reprot_select_option\"\n                        onChange={\n                          permissionsRoleUser?.permissionsRole?.AreaDispMan\n                            ? (e) => handleOpenReports(e)\n                            : false\n                        }\n                      >\n                        <option value=\"ocupation\">\n                          {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.OCUPATION\")}\n                        </option>\n                        {listMacromeasureOption ? (\n                          <option value=\"measurer\">\n                            {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.MEASURERS\")}\n                          </option>\n                        ) : null}\n                        <option value=\"temperature\">\n                          {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.TEMPERATURE\")}\n                        </option>\n                      </select>\n                    </span>\n                    <span className=\"_report_ver_container\">\n                      <button\n                        type=\"text\"\n                        className=\"_report_ver\"\n                        onClick={\n                          permissionsRoleUser?.permissionsRole?.AreaRoaVer\n                            ? () => {\n                                handleClickOpen();\n                              }\n                            : false\n                        }\n                      >\n                        <i class=\"fas fa-eye\"></i>\n                      </button>\n                    </span>\n                  </div>\n                </div>\n                {permissionsRoleUser?.permissionsRole?.AreaDispEdit ? (\n                  <MenuButton\n                    setCreateDevice={setCreateDevice}\n                    devices={dataDevice?.getAllDevices}\n                    refetch={refetch}\n                  />\n                ) : null}\n                <div className=\"__devices_container_count_devices__\">\n                  <span className=\"_count_container\">\n                    <span>\n                      <i class=\"fas fa-desktop\"></i>\n                    </span>{\" \"}\n                    <span className=\"_count_devices\">\n                      {calc_device_fails(dataDevice?.getAllDevices?.Device)}/\n                      <span className=\"_count_devices_fails\">\n                        {devices_fails(dataDevice?.getAllDevices?.Device)}\n                      </span>\n                    </span>\n                  </span>\n                </div>\n              </div>\n            </div>\n          </div>\n          {dataDevice?.getAllDevices?.Device.length != 0 && (\n            <div className=\"_container_devices_all\">\n              <>\n                <>\n                  {pluguin?.length != 0 && pluguin[0]?.visible !== false && (\n                    <>\n                      {pluguin[0]?.Category?.sub_category == 1 ? (\n                        <HSC\n                          data={device[0]}\n                          item={pluguin[0]}\n                          send={pluguinAction}\n                          projectData={dataDevice?.getProjectByIdHeader}\n                        />\n                      ) : (\n                        <PluguinAula\n                          data={device[0]}\n                          item={pluguin[0]}\n                          send={pluguinAction}\n                          projectData={dataDevice?.getProjectByIdHeader}\n                        />\n                      )}\n                    </>\n                  )}\n                </>\n                <>\n                  {aire?.length !== 0 &&\n                    aire\n                      ?.filter(\n                        (i) =>\n                          i?.visible && i?.variables?.type !== \"thermostatVRF\"\n                      )\n                      ?.map((item, key) => (\n                        <Weather\n                          key={key}\n                          gridNumber={`weather_container${key}`}\n                          item={item}\n                          pluggin={pluguin?.length}\n                          send={aireAction}\n                          socketResponse={dataSocket}\n                        />\n                      ))}\n                </>\n                {/* Seccion VRF */}\n                <>\n                  {aire?.length !== 0 &&\n                    aire\n                      ?.filter(\n                        (i) =>\n                          i?.visible && i?.variables?.type == \"thermostatVRF\"\n                      )\n                      ?.map((item, key) => (\n                        <VRF\n                          key={key}\n                          item={item}\n                          pluggin={pluguin?.length}\n                          gridNumber={`weather_container${key}`}\n                          send={VRFActions}\n                        />\n                      ))}\n                </>\n                <>\n                  {device?.map(\n                    (item, key) =>\n                      item?.Category?.category == 600 &&\n                      item?.Category?.sub_category == 3 && (\n                        <HorusMotel {...key} item={item} send={Send} />\n                      )\n                  )}\n                </>\n                {spliceDevicesData(filterNameDevices(device), 2)?.map(\n                  (element, key) => (\n                    <div className=\"_container_new_devices_all\">\n                      {element?.map((secondElement) =>\n                        renderDevice(secondElement, key)\n                      )}\n                    </div>\n                  )\n                )}\n              </>\n            </div>\n          )}\n          <MessageInfo textMessage={textInfoAlert} />\n          <MessageError />\n          <MessageSuccess />\n          <MessageWarning textMessage={textWarningAlert} />\n\n          <Dialog\n            fullScreen\n            open={open}\n            onClose={handleClose}\n            TransitionComponent={Transition}\n          >\n            <AppBar className={classes.appBar}>\n              <Toolbar>\n                <IconButton\n                  edge=\"start\"\n                  color=\"inherit\"\n                  onClick={handleClose}\n                  aria-label=\"close\"\n                >\n                  <CloseIcon />\n                </IconButton>\n                <Typography variant=\"h6\" className={classes.title}>\n                  {`${dataDevice?.getProjectByIdHeader?.name} - ${t(\n                    \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.HEADER_TITLE\"\n                  )} ${occupationAreaName}`}\n                </Typography>\n\n                {permissionsRoleUser.permissionsRole?.AreaRoaDes ? (\n                  <Hidden mdDown>\n                    <LoadingButton\n                      //disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n                      onClick={() => childRef.current.occupationPdf()}\n                      endIcon={<DownloadIcon />}\n                      loading={loadingPdf}\n                      loadingPosition=\"end\"\n                      color=\"inherit\"\n                    >\n                      {t(\n                        \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.DOWNLOAD\"\n                      )}\n                      <Backdrop\n                        sx={{\n                          color: \"#fff\",\n                          zIndex: (theme) => theme.zIndex.drawer + 100,\n                        }}\n                        open={loadingPdf}\n                        onClick={loadingPdf}\n                      >\n                        <CircularProgress color=\"inherit\" />\n                      </Backdrop>\n                    </LoadingButton>\n                  </Hidden>\n                ) : null}\n              </Toolbar>\n            </AppBar>\n            {/* <Occupation\n              RoomId={id}\n              project={dataDevice?.getProjectByIdHeader[0]}\n            /> */}\n            <Ocupation\n              ref={childRef}\n              RoomId={id}\n              roomIdDatepicker={Number(id.split(\"-\")[0])}\n              project={dataDevice?.getProjectByIdHeader}\n              NewRoomId={dataDevice?.getAllDevices?.NewRoomId}\n              typeGateway={dataDevice?.getAllDevices?.Controller?.typeGateway}\n            />\n          </Dialog>\n\n          <Dialog\n            fullScreen\n            open={openTemperature}\n            onClose={handleCloseTemperature}\n            TransitionComponent={Transition}\n          >\n            <AppBar className={classes.appBar}>\n              <Toolbar>\n                <IconButton\n                  edge=\"start\"\n                  color=\"inherit\"\n                  onClick={handleCloseTemperature}\n                  aria-label=\"close\"\n                >\n                  <CloseIcon />\n                </IconButton>\n                <Typography variant=\"h6\" className={classes.title}>\n                  {`${localStorage.getItem(\"nameProject\")} - ${t(\n                    \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MODAL_HEADER_TITLE\"\n                  )} ${occupationAreaName}`}\n                </Typography>\n              </Toolbar>\n            </AppBar>\n            <Temperature\n              RoomId={id}\n              project={dataDevice?.getProjectByIdHeader}\n              NewRoomId={dataDevice?.getAllDevices?.NewRoomId}\n              typeGateway={dataDevice?.getAllDevices?.Controller?.typeGateway}\n            />\n          </Dialog>\n\n          <Dialog\n            fullScreen\n            open={openMeasurer}\n            onClose={handleCloseMeasurer}\n            TransitionComponent={Transition}\n          >\n            <AppBar className={classes.appBar}>\n              <Toolbar>\n                <IconButton\n                  edge=\"start\"\n                  color=\"inherit\"\n                  onClick={handleCloseMeasurer}\n                  aria-label=\"close\"\n                >\n                  <CloseIcon />\n                </IconButton>\n                <Typography variant=\"h6\" className={classes.title}>\n                  {dataDevice?.getProjectByIdHeader?.name}\n                </Typography>\n              </Toolbar>\n            </AppBar>\n            <Measurer RoomId={id} project={dataDevice?.getProjectByIdHeader} />\n          </Dialog>\n        </div>\n      ) : null}\n    </>\n  );\n};\n\nexport default Devices;\n","// React Hooks\nimport React, { useState, useContext, useEffect, useRef } from \"react\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n//Material Components\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Slide from \"@material-ui/core/Slide\";\nimport { Hidden } from \"@material-ui/core\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Button from \"@mui/material/Button\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\n// Components\nimport ProjectCardAreaControl from \"../../../../components/projects/ProjectCardAreaControl\";\nimport Ocupation from \"../../../../components/reports/Ocupation/Ocupation\";\nimport Temperature from \"../../../../components/highcharts/Temperature\";\nimport Measurer from \"../../../../components/highcharts/Measurer\";\n\n// Services\nimport { calc_device_fails, devices_fails } from \"../../../../utils/helpers\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { MenuButton } from \"./menuDevices/MenuButton\";\nimport { CreateDevices } from \"./menuDevices/EditDevices\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"relative\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: \"relative\",\n    height: 200,\n    [theme.breakpoints.down(\"xs\")]: {\n      width: \"100% !important\", // Overrides inline-style\n      height: 100,\n    },\n    \"&:hover, &$focusVisible\": {\n      zIndex: 1,\n      \"& $imageBackdrop\": {\n        opacity: 0.15,\n      },\n      \"& $imageMarked\": {\n        opacity: 0,\n      },\n      \"& $imageTitle\": {\n        border: \"4px solid currentColor\",\n      },\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center 40%\",\n  },\n  imageBackdrop: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  imageTitle: {\n    position: \"relative\",\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n      theme.spacing(1) + 6\n    }px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: \"absolute\",\n    bottom: -2,\n    left: \"calc(50% - 9px)\",\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  table: {\n    minWidth: 700,\n  },\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst Header = ({ data, devices, project, refetch }) => {\n  const [openReport, setOpenReport] = useState(\"ocupation\");\n  const [createDevices, setCreateDevice] = useState(false);\n  const { t } = useTranslation();\n  const childRef = useRef();\n  const {\n    serial,\n    setSerial,\n    area,\n    roomId,\n    setRoomId,\n    setArea,\n    setIdArea,\n    setSuccessMessage,\n    setErrorMessage,\n    setactiveNextBack,\n    loadingPdf,\n    setLoadingPdf,\n    permissionsRoleUser,\n    setCalendarDatePicker,\n    occupationAreaName,\n    setOccupationAreaName,\n    nameHeaderOcupation,\n    setGlobalCalendarDay,\n    setIdHeaderOcupation,\n  } = useContext(AuthContext);\n  // Context global\n\n  // esto es data del Header\n  const img = project?.img;\n  // esta data es del getDevices\n\n  const alias = devices?.alias;\n\n  const listMacromeasureOption =\n    data?.getMettersInProjets?.Metters?.length > 0 ||\n    data?.getInfoMetersByProject?.length > 0;\n\n  const [open, setOpen] = useState(false);\n  const [openMeasurer, setOpenMeasurer] = useState(false);\n  const [openTemperature, setOpenTemperature] = useState(false);\n  const classes = useStyles();\n\n  const handleClickOpen = () => {\n    const day_by_miliseconds = 86400000;\n    // Hora actual\n    const actual_hour = new Date().getHours();\n    // Hora inicio\n    const hotel_hour = Number(\n      localStorage.getItem(\"startTime\").substring(0, 2)\n    );\n    setIdHeaderOcupation(data?.getAllDevices?.id);\n    if (openReport == \"ocupation\") {\n      setCalendarDatePicker(\n        actual_hour < hotel_hour\n          ? new Date(new Date().getTime() - day_by_miliseconds)\n          : new Date()\n      );\n      setArea(data?.getAllDevices?.alias);\n      setIdArea(data?.getAllDevices?.id);\n      localStorage.setItem(\"selectedAreaName\", data?.getAllDevices?.name);\n      setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n      setOpen(true);\n\n      if (\n        localStorage.getItem(\"startTime\") === \"0:00\" ||\n        localStorage.getItem(\"startTime\") === \"00:00\"\n      ) {\n        setGlobalCalendarDay(new Date());\n      } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n        if (actual_hour < 15) {\n          setGlobalCalendarDay(\n            new Date(new Date(new Date().getTime() - day_by_miliseconds))\n          );\n        } else if (actual_hour >= 15) {\n          setGlobalCalendarDay(new Date());\n        }\n      }\n    } else if (openReport === \"temperature\") {\n      setOpenTemperature(true);\n      setactiveNextBack(true);\n      if (\n        localStorage.getItem(\"startTime\") === \"0:00\" ||\n        localStorage.getItem(\"startTime\") === \"00:00\"\n      ) {\n        setGlobalCalendarDay(new Date());\n      } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n        if (actual_hour < 15) {\n          setGlobalCalendarDay(\n            new Date(new Date(new Date().getTime() - day_by_miliseconds))\n          );\n        } else if (actual_hour >= 15) {\n          setGlobalCalendarDay(new Date());\n        }\n      }\n    } else if (openReport === \"measurer\") {\n      setOpenMeasurer(true);\n    }\n  };\n\n  const handleOpenReports = (event) => {\n    const value = event.target.value;\n    setOpenReport(value);\n  };\n\n  const handleClose = () => {\n    setOpen(false);\n    setCalendarDatePicker(new Date());\n  };\n\n  const handleCloseMeasurer = () => {\n    setOpenMeasurer(false);\n  };\n\n  const handleCloseTemperature = () => {\n    setCalendarDatePicker(new Date());\n    setOpenTemperature(false);\n  };\n\n  return (\n    <div className=\"__devices_container_project_and_filter__\">\n      <div className=\"__devices_container_logo__\">\n        <img\n          className=\"__devices_img__\"\n          src={img}\n          alt=\"Logo\"\n          width=\"180\"\n          height=\"180\"\n        />\n      </div>\n      <div className=\"__devices_container_project_filters__\">\n        <div className=\"__devices_container_project__\">\n          <ProjectCardAreaControl data={project} />\n        </div>\n        <div className=\"__devices_container_filter__\">\n          <div className=\"__devices_container_name__\">\n            <span className=\"__devices_name__\">{alias}</span>\n          </div>\n          <div className=\"__devices_container_report__\">\n            <div className=\"_devices_report\">\n              <span className=\"_report_select\">\n                <select\n                  name=\"report\"\n                  id=\"\"\n                  className=\"_reprot_select_option\"\n                  onChange={\n                    permissionsRoleUser?.permissionsRole?.AreaDispMan\n                      ? (e) => handleOpenReports(e)\n                      : false\n                  }\n                >\n                  <option value=\"ocupation\">\n                    {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.OCUPATION\")}\n                  </option>\n                  {/* {listMacromeasureOption && (\n                    <option value=\"measurer\">Medidores</option>\n                  )} */}\n                  <option value=\"temperature\">\n                    {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.TEMPERATURE\")}\n                  </option>\n                </select>\n              </span>\n              <span className=\"_report_ver_container\">\n                <button\n                  type=\"text\"\n                  className=\"_report_ver\"\n                  onClick={\n                    permissionsRoleUser?.permissionsRole?.AreaRoaVer\n                      ? () => {\n                          handleClickOpen();\n                        }\n                      : false\n                  }\n                >\n                  <i class=\"fas fa-eye\"></i>\n                </button>\n              </span>\n            </div>\n          </div>\n          {permissionsRoleUser?.permissionsRole?.AreaDispEdit ? (\n            <MenuButton\n              setCreateDevice={setCreateDevice}\n              devices={devices}\n              refetch={refetch}\n            />\n          ) : null}\n\n          <div className=\"__devices_container_count_devices__\">\n            <span className=\"_count_container\">\n              <span>\n                <i class=\"fas fa-desktop\"></i>\n              </span>{\" \"}\n              <span className=\"_count_devices\">\n                {/* {calc_device_fails(totalDevices)}/<span className=\"_count_devices_fails\">{devices_fails(totalDevices)}</span> */}\n              </span>\n            </span>\n          </div>\n        </div>\n      </div>\n\n      <Dialog\n        fullScreen\n        open={open}\n        onClose={handleClose}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBar}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleClose}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography variant=\"h6\" className={classes.title}>\n              {`${data?.getProjectByIdHeader?.name} - ${t(\n                \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.HEADER_TITLE\"\n              )} ${occupationAreaName}`}\n            </Typography>\n\n            {permissionsRoleUser?.permissionsRole?.AreaRoaDes ? (\n              <Hidden mdDown>\n                <LoadingButton\n                  //disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n                  onClick={() => childRef?.current?.occupationPdf()}\n                  endIcon={<DownloadIcon />}\n                  loading={loadingPdf}\n                  loadingPosition=\"end\"\n                  color=\"inherit\"\n                >\n                  {t(\n                    \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.DOWNLOAD\"\n                  )}\n                  <Backdrop\n                    sx={{\n                      color: \"#fff\",\n                      zIndex: (theme) => theme.zIndex.drawer + 100,\n                    }}\n                    open={loadingPdf}\n                    onClick={loadingPdf}\n                  >\n                    <CircularProgress color=\"inherit\" />\n                  </Backdrop>\n                </LoadingButton>\n              </Hidden>\n            ) : null}\n          </Toolbar>\n        </AppBar>\n        <Ocupation\n          project={data?.getProjectByIdHeader}\n          RoomId={devices?.id}\n          roomIdDatepicker={Number(devices?.id)}\n          NewRoomId={data?.getAllDevices?.NewRoomId}\n          typeGateway={devices?.Controller?.typeGateway}\n          ref={childRef}\n        />\n      </Dialog>\n\n      <Dialog\n        fullScreen\n        open={openTemperature}\n        onClose={handleCloseTemperature}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBar}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleCloseTemperature}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography variant=\"h6\" className={classes.title}>\n              {`${data?.getProjectByIdHeader?.name} - ${t(\n                \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MODAL_HEADER_TITLE\"\n              )} ${occupationAreaName}`}\n            </Typography>\n          </Toolbar>\n        </AppBar>\n        <Temperature\n          project={data?.getProjectByIdHeader}\n          RoomId={devices?.id}\n          NewRoomId={data?.getAllDevices?.NewRoomId}\n          typeGateway={devices?.Controller?.typeGateway}\n        />\n      </Dialog>\n\n      {/* <Dialog\n        fullScreen\n        open={openMeasurer}\n        onClose={handleCloseMeasurer}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBar}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleCloseMeasurer}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography variant=\"h6\" className={classes.title}>\n              {data?.getProjectByIdHeader?.name}\n            </Typography>\n          </Toolbar>\n        </AppBar>\n        <Measurer project={data?.getProjectByIdHeader} RoomId={devices?.id} />\n      </Dialog> */}\n    </div>\n  );\n};\nexport default Header;\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport { AuthContext } from '../../../context/AuthProvider';\r\nimport { useQuery } from '@apollo/client';\r\nimport { GET_HISTORY } from '../../../controllers/measurersController';\r\nimport Highcharts from 'highcharts/highstock';\r\nimport HighchartsReact from 'highcharts-react-official';\r\nimport SemiCircleProgressBar from 'react-progressbar-semicircle';\r\nimport 'react-date-range/dist/styles.css';\r\nimport 'react-date-range/dist/theme/default.css';\r\nimport LoadingBar from '../../loading/LoadingBar';\r\nimport { TableRow, TableCell } from '@material-ui/core';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n//import components\r\nimport DatesRangeMacrometer from '../../macrometer/dateRangeMacrometer';\r\n//Function\r\nimport {\r\n  sum_of_the_kwh,\r\n  date_of_the_kwh,\r\n  round_digits,\r\n  convert_time_measurergeneral,\r\n  calc_date_range,\r\n  date_last,\r\n  define_time_zone,\r\n  defice_toolTip_date,\r\n  dateRangeButton,\r\n  calculatedMinParameter,\r\n  calculatedMaxParameter,\r\n  roundTotalBy,\r\n  sumTotalBy,\r\n  timeConvertMacromedidor,\r\n} from '../../../utils/helpers';\r\nimport { Dataset } from '@mui/icons-material';\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n  head: {\r\n    backgroundColor: '#4caf50e6',\r\n    color: theme.palette.common.white,\r\n  },\r\n  body: {\r\n    fontSize: 14,\r\n  },\r\n}))(TableCell);\r\n\r\nconst StyledTableCell2 = withStyles((theme) => ({\r\n  head: {\r\n    backgroundColor: '#4caf50e6',\r\n    color: theme.palette.common.white,\r\n  },\r\n  body: {\r\n    fontSize: 14,\r\n    fontWeight: 'bold',\r\n  },\r\n}))(TableCell);\r\n\r\nconst StyledTableRow = withStyles((theme) => ({\r\n  root: {\r\n    '&:nth-of-type(odd)': {\r\n      backgroundColor: theme.palette.action.hover,\r\n    },\r\n  },\r\n}))(TableRow);\r\n\r\nconst GraphConsumptionDetailPerMonth = ({ projectID, timeZone }) => {\r\n  const { dateReport, serial, setSeeGraphic } = useContext(AuthContext);\r\n\r\n  useEffect(() => {\r\n    setSeeGraphic(false);\r\n  }, []);\r\n\r\n  const [parameterMax, setParameterMax] = useState(calculatedMaxParameter(dateReport, timeZone));\r\n  const [parameterMin, setParameterMin] = useState(calculatedMinParameter(dateReport, timeZone));\r\n\r\n  const [value, setValue] = useState();\r\n  const [datas, setDatas] = useState([]);\r\n  const handleChange = (newValue) => {\r\n    setValue(newValue);\r\n  };\r\n  const { data, loading } = useQuery(GET_HISTORY, {\r\n    variables: {\r\n      serial: serial,\r\n      month: timeConvertMacromedidor().month,\r\n      year: timeConvertMacromedidor().year,\r\n      time_zone: timeZone,\r\n    },\r\n    fetchPolicy: 'no-cache',\r\n  });\r\n\r\n  if (loading || !data) {\r\n    return <></> /* <LoadingBar /> */;\r\n  }\r\n\r\n  return (\r\n    <div className=\"__details_measurer_consumption_graphic__\">\r\n      {/* <div className=\"calendar_content\">\r\n        <DatesRangeMacrometer />\r\n      </div> */}\r\n      {data.getHistory.length === 0 ? (\r\n        <div className=\"date_vacio_report_measurer\">\r\n          <span>\r\n            <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n          </span>\r\n        </div>\r\n      ) : (\r\n        <HighchartsReact\r\n          highcharts={Highcharts}\r\n          options={{\r\n            chart: {\r\n              type: 'column',\r\n            },\r\n            colors: ['#04b431'],\r\n\r\n            title: {\r\n              align: 'left',\r\n              text: `Consumo total de ${\r\n                data.getHistory.res ? data.getHistory.currentConsumption.toFixed(2) : datas\r\n              } kWh `,\r\n            },\r\n            subtitle: {\r\n              align: 'left',\r\n              text: '' /* \"Click the columns to view details. \" */,\r\n            },\r\n            accessibility: {\r\n              announceNewData: {\r\n                enabled: true,\r\n              },\r\n            },\r\n            xAxis: {\r\n              type: 'category',\r\n            },\r\n            yAxis: {\r\n              title: {\r\n                text: '',\r\n              },\r\n            },\r\n            legend: {\r\n              enabled: false,\r\n            },\r\n            plotOptions: {\r\n              series: {\r\n                borderWidth: 0,\r\n                dataLabels: {\r\n                  enabled: true,\r\n                  format: '{point.y:.1f}',\r\n                },\r\n              },\r\n            },\r\n\r\n            tooltip: {\r\n              headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\r\n              pointFormat: '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\r\n            },\r\n\r\n            series: [\r\n              {\r\n                name: 'Día',\r\n                colorByPoint: true,\r\n                data: data.getHistory.res,\r\n              },\r\n            ],\r\n          }}\r\n        />\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GraphConsumptionDetailPerMonth;\r\n","import { useState, useEffect, useRef, useContext } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI components\nimport MessageSuccess from \"../../../../../components/message/MessageSuccess\";\nimport MessageError from \"../../../../../components/message/MessageError\";\nimport InvertColorsIcon from \"@material-ui/icons/InvertColors\";\n\n//Components\nimport Battery_Newlevel from \"../Battery_Newlevel\";\nimport GraphBatteryModal from \"../../../../../components/devices/GraphBatteryLevel/GraphBatteryModal\";\nimport GraphConsumptionDetailPerMonth from \"../../../../../components/highcharts/MeasurerDetails/GraphConsumptionPerMonth\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport TemperatureModal from \"./TemperatureModal\";\n\n//Helpers\nimport {\n  handleBatteryLevelColor,\n  handleBatteryLevel,\n} from \"./utils/helperBattery\";\nimport { ExtractTypeGateway } from \"../../../../../utils/helpers\";\n\n//Images\nimport fanCool from \"../../../../../assets/fant.png\";\nimport alert from \"../../../../../assets/alert-icon.png\";\n\nconst Temperature = ({\n  areaName,\n  allAirs,\n  dataSocket,\n  sendMessage,\n  serial,\n  refetch,\n  controllerStatus,\n}) => {\n  const {\n    setSuccessMessage,\n    setErrorMessage,\n    setWarningMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n  const [openModal, setOpenModal] = useState(false);\n  const [cancel, setCancel] = useState(false);\n  const { alias, variables, visible } = allAirs;\n  const { items } = variables;\n  const [thermostatState, setThermostatState] = useState(\"\");\n  const [idThermostat, setIdThermostat] = useState(null);\n  const [batteryData, setBatteryData] = useState(\n    variables?.items?.filter((i) => i?.name === \"battery\")\n  );\n  const tempScale = variables.items.find((i) => i.name === \"temp\")?.status\n    ?.scale;\n  const setpointCoolScale = variables.items.find(\n    (i) => i.name === \"thermostat_setpoint_cooling\"\n  )?.status?.scale;\n\n  const [openBatteryReport, setOpenBatteryReport] = useState(false);\n  const delay = 3000;\n  const handleOpenBatteryReport = () => {\n    setOpenBatteryReport(!openBatteryReport);\n  };\n  const [socketSnackbar, setSocketSnackbar] = useState(null);\n  const socketInterval = useRef(null);\n\n  const irDeviceTypeId = [\n    \"351_10496_28931\",\n    \"351_10496_28929\",\n    \"351_62766_28930\",\n  ];\n  const centralDeviceTypeId = [\"351_33026_18742\", \"351_1540_20737\"];\n  const fanCoilDeviceTypeId = [\"351_2065_20737\", \"351_2050_20737\"];\n  const [pointTemperature, setPointTemperature] = useState(\n    variables?.items\n      ?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n      ?.status?.value?.toFixed(0)\n  );\n  const sameGrade = parseInt(\n    variables?.items\n      ?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n      ?.status?.value.toFixed(0)\n  );\n  const [tem, setTemp] = useState(\n    variables?.items?.find((e) => e?.name === \"temp\")?.status?.value?.toFixed(0)\n  );\n  const [cool, setCool] = useState(\n    variables?.items?.find((e) => (e?.status === \"cool\" ? true : false))\n  );\n  const [heats, setHeat] = useState(\n    items?.filter((name) => name?.name === \"thermostat_mode\")[0]?.status ===\n      \"heat\"\n      ? true\n      : false\n  );\n  const [autoMode, setAutoMode] = useState(\n    items?.filter((termostat) => termostat?.name === \"thermostat_mode\")[0]\n      ?.status === \"auto_change_over\"\n      ? true\n      : false\n  );\n\n  const [fanCoolState, setFanCoolState] = useState(\n    variables?.items?.find((e) => e?.name === \"thermostat_fan_mode\")?.status\n  );\n  const [fanCooling, setFanCooling] = useState(false);\n  const [load, setLoad] = useState(false);\n  const [variablesAirs, setVariablesAirs] = useState({\n    temId: {\n      item_id: items?.find((e) => e?.name === \"temp\")?.item_id,\n      value: items?.find((e) => e?.name === \"temp\")?.status?.value?.toFixed(0),\n    },\n    coolId: {\n      item_id: items?.find((e) => e?.name === \"thermostat_mode\")?.item_id,\n      value: items?.find((e) => e?.name === \"thermostat_mode\")?.status,\n    },\n    pointTemperatureId: {\n      item_id: items?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n        ?.item_id,\n      value: items\n        ?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n        ?.status?.value?.toFixed(0),\n    },\n    fanMode: {\n      item_id: items?.find((e) => e?.name === \"thermostat_fan_mode\")?.item_id,\n      value: items?.find((e) => e?.name === \"thermostat_fan_mode\")?.status,\n    },\n    humidity: {\n      item_id: items?.find((value) => value.name === \"humidity\")?.item_id,\n      value: items?.find((value) => value.name === \"humidity\")?.status?.value,\n    },\n  });\n\n  const [previousModeThermostatState, setPreviousModeThermostatState] =\n    useState({\n      thermostatMode: {\n        item_id: variablesAirs?.coolId?.item_id,\n        status: variablesAirs?.coolId?.value,\n      },\n      setpointTemperature: {\n        item_id: variablesAirs?.pointTemperatureId?.item_id,\n        status: variablesAirs?.pointTemperatureId?.value,\n      },\n      fanMode: {\n        item_id: variablesAirs?.fanMode?.item_id,\n        status: variablesAirs?.fanMode?.value,\n      },\n    });\n\n  const handleThermostatModel = () => {\n    if (irDeviceTypeId.includes(variables?.deviceTypeId)) {\n      const fanSpeeds = [\"low\", \"medium\", \"high\", \"auto_low\"];\n      return { typeThermostat: \"ir\", speeds: fanSpeeds };\n    } else if (fanCoilDeviceTypeId.includes(variables?.deviceTypeId)) {\n      const fanCoilSpeeds = [\"low\", \"medium\", \"high\"];\n      return {\n        typeThermostat: \"fanCoil\",\n        speeds: fanCoilSpeeds,\n      };\n    } else if (centralDeviceTypeId.includes(variables?.deviceTypeId)) {\n      const centralFanSpeeds = [\"low\", \"auto_low\"];\n      return {\n        typeThermostat: \"central\",\n        speeds: centralFanSpeeds,\n      };\n    }\n  };\n\n  const fanState = (data) => {\n    if (handleThermostatModel()?.typeThermostat === \"ir\") {\n      if (data === \"medium\") {\n        return \"Medium\";\n      } else if (data === \"high\") {\n        return \"High\";\n      } else if (data === \"low\") {\n        return \"Low\";\n      } else if (data === \"auto_low\") {\n        return \"Auto\";\n      }\n    } else if (handleThermostatModel()?.typeThermostat === \"central\") {\n      if (data === \"auto_low\") {\n        return \"Auto\";\n      } else if (data === \"low\") {\n        return \"On\";\n      }\n    } else if (handleThermostatModel()?.typeThermostat === \"fanCoil\") {\n      if (data === \"low\") {\n        return \"Low\";\n      } else if (data === \"medium\") {\n        return \"Medium\";\n      } else if (data === \"high\") {\n        return \"High\";\n      }\n    }\n  };\n\n  const lastUpdateTemperature = useRef(parseInt(pointTemperature));\n  const [fanPosition, setFanPosition] = useState(\n    handleThermostatModel()?.speeds?.indexOf(variablesAirs?.fanMode?.value)\n  );\n\n  useEffect(() => {\n    if (dataSocket?.category === \"hvac\") {\n      const updateTemperature = (itemName, setStateFunction) => {\n        const item = variables?.items?.find(\n          (e) => e?.item_id === dataSocket?.itemId && e?.name === itemName\n        );\n        if (item && dataSocket?.state) {\n          if (dataSocket?.state !== item?.status?.value) {\n            if (typeof dataSocket?.state === \"string\") {\n              if (dataSocket?.state === \"cool\") {\n                setCool(true);\n                setHeat(false);\n                setAutoMode(false);\n              }\n              if (dataSocket.state === \"off\") {\n                setCool(false);\n                setHeat(false);\n                setAutoMode(false);\n              }\n              if (dataSocket.state === \"heat\") {\n                setHeat(true);\n                setCool(false);\n                setAutoMode(false);\n              }\n              if (dataSocket.state === \"auto_change_over\") {\n                setCool(false);\n                setHeat(false);\n                setAutoMode(true);\n              }\n              if (\n                dataSocket?.state === \"low\" ||\n                dataSocket?.state === \"medium\" ||\n                dataSocket?.state === \"high\" ||\n                dataSocket?.state === \"auto_low\"\n              ) {\n                setFanCoolState(dataSocket?.state);\n                setFanPosition(\n                  handleThermostatModel()?.speeds?.indexOf(dataSocket?.state)\n                );\n              }\n            }\n            if (typeof dataSocket?.state === \"number\") {\n              setStateFunction(dataSocket?.state?.toFixed(0));\n            }\n          }\n        }\n      };\n      const idThermostat = variables?.items?.find(\n        (e) => e?.item_id === dataSocket?.itemId\n      );\n      updateTemperature(\"thermostat_setpoint_cooling\", setPointTemperature);\n      updateTemperature(\"thermostat_mode\", setCool);\n      updateTemperature(\"thermostat_fan_mode\", setFanCoolState);\n      updateTemperature(\"temp\", setTemp);\n      if (dataSocket?.event_name === \"humidity\" && idThermostat) {\n        setVariablesAirs({\n          ...variablesAirs,\n          humidity: { value: dataSocket?.state },\n        });\n      }\n    }\n  }, [dataSocket]);\n\n  useEffect(() => {\n    if (cancel) {\n      setPointTemperature(parseInt(sameGrade));\n      lastUpdateTemperature.current = sameGrade;\n      refetch();\n    }\n  }, [cancel, sameGrade]);\n\n  useEffect(() => {\n    let eventName =\n      (dataSocket?.event_name === \"thermostat_mode\" ||\n        dataSocket?.event_name === \"thermostat_setpoint_cooling\" ||\n        dataSocket?.event_name === \"thermostat_fan_mode\" ||\n        dataSocket?.event_name === \"thermostat_setpoint_heating\") &&\n      dataSocket?.event_name !== \"temp\" &&\n      dataSocket?.event_name !== \"humidity\" &&\n      dataSocket?.event_name !== \"switch\";\n    let state = dataSocket?.state;\n    if (\n      dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n      thermostatState === \"cool\" &&\n      eventName === true &&\n      state === \"cool\"\n    ) {\n      clearInterval(socketInterval.current);\n      setSocketSnackbar(true);\n      setPreviousModeThermostatState({\n        ...previousModeThermostatState,\n        thermostatMode: { item_id: dataSocket?.itemId, status: state },\n      });\n    } else if (\n      dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n      thermostatState === \"heat\" &&\n      eventName === true &&\n      state === \"heat\"\n    ) {\n      clearInterval(socketInterval.current);\n      setSocketSnackbar(true);\n      setPreviousModeThermostatState({\n        ...previousModeThermostatState,\n        thermostatMode: { item_id: dataSocket?.itemId, status: state },\n      });\n    } else if (\n      dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n      thermostatState === \"auto\" &&\n      eventName === true &&\n      state === \"auto_change_over\"\n    ) {\n      clearInterval(socketInterval.current);\n      setSocketSnackbar(true);\n      setPreviousModeThermostatState({\n        ...previousModeThermostatState,\n        thermostatMode: { item_id: dataSocket?.itemId, status: state },\n      });\n    } else if (\n      dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n      thermostatState === \"off\" &&\n      eventName === true &&\n      state === \"off\"\n    ) {\n      clearInterval(socketInterval.current);\n      setSocketSnackbar(true);\n      setPreviousModeThermostatState({\n        ...previousModeThermostatState,\n        thermostatMode: { item_id: dataSocket?.itemId, status: state },\n      });\n    } else if (\n      dataSocket?.itemId === variablesAirs?.pointTemperatureId?.item_id &&\n      thermostatState === \"increase\"\n      // eventName === true &&\n      // state === pointTemperature\n    ) {\n      clearInterval(socketInterval.current);\n      setSocketSnackbar(true);\n      setPreviousModeThermostatState({\n        ...previousModeThermostatState,\n        setpointTemperature: { item_id: dataSocket?.itemId, status: state },\n      });\n    } else if (\n      dataSocket?.itemId === variablesAirs?.pointTemperatureId?.item_id &&\n      thermostatState === \"decrease\"\n      // eventName === true &&\n      // state === pointTemperature\n    ) {\n      clearInterval(socketInterval.current);\n      setSocketSnackbar(true);\n      setPreviousModeThermostatState({\n        ...previousModeThermostatState,\n        setpointTemperature: { item_id: dataSocket?.itemId, status: state },\n      });\n    } else if (\n      dataSocket?.itemId === variablesAirs?.fanMode?.item_id &&\n      thermostatState === \"fan\" &&\n      eventName === true\n      // state === handleThermostatModel()?.speeds[fanPosition]\n    ) {\n      clearInterval(socketInterval.current);\n      setSocketSnackbar(true);\n      setPreviousModeThermostatState({\n        ...previousModeThermostatState,\n        fanMode: { item_id: dataSocket?.itemId, status: state },\n      });\n    }\n  }, [dataSocket]);\n\n  useEffect(() => {\n    if (socketSnackbar) {\n      setSuccessMessage(true);\n      setLoad(false);\n      setSocketSnackbar(null);\n    } else if (socketSnackbar === false) {\n      setWarningMessage(true);\n      setLoad(false);\n      setSocketSnackbar(null);\n      if (\n        previousModeThermostatState?.thermostatMode?.status === \"cool\" &&\n        idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n      ) {\n        setCool(true);\n        setHeat(false);\n        setAutoMode(false);\n      } else if (\n        previousModeThermostatState?.thermostatMode?.status === \"heat\" &&\n        idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n      ) {\n        setHeat(true);\n        setCool(false);\n        setAutoMode(false);\n      } else if (\n        previousModeThermostatState?.thermostatMode?.status === \"off\" &&\n        idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n      ) {\n        setCool(false);\n        setHeat(false);\n        setAutoMode(false);\n      } else if (\n        previousModeThermostatState?.thermostatMode?.status ===\n          \"auto_change_over\" &&\n        idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n      ) {\n        setCool(false);\n        setHeat(false);\n        setAutoMode(true);\n      } else if (\n        previousModeThermostatState?.setpointTemperature?.item_id ==\n        idThermostat\n      ) {\n        setPointTemperature(\n          previousModeThermostatState?.setpointTemperature?.status\n        );\n      } else if (\n        previousModeThermostatState?.fanMode?.item_id === idThermostat\n      ) {\n        setFanCoolState(previousModeThermostatState?.fanMode?.status);\n        setFanPosition(\n          handleThermostatModel()?.speeds?.indexOf(\n            previousModeThermostatState.fanMode.status\n          )\n        );\n      }\n    }\n  }, [socketSnackbar]);\n\n  const SocketTimeValidationResponse = () => {\n    clearInterval(socketInterval.current);\n    let count = 0;\n    socketInterval.current = setInterval(() => {\n      count++;\n      if (count > 15) {\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(false);\n        setLoad(false);\n      }\n    }, 1000);\n  };\n\n  const on = async (e) => {\n    if (variables?.onLine === true && controllerStatus === true) {\n      setIdThermostat(e.target.id);\n      // setOpenModal(true); // hace parte de el modal de confirmación\n      // setCancel(false); // hace parte de el modal de confirmación\n      setThermostatState(\"cool\");\n      // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n      // setTimeout(() => { // hace parte de el modal de confirmación\n      //   setOpenModal(false);\n      // }, 1500);\n      sendMessage({\n        serial,\n        channel: serial,\n        id: String(e.target.id),\n        eventType: \"mode_updated\",\n        value: \"cool\",\n      });\n      SocketTimeValidationResponse();\n      setLoad(true);\n      setTimeout(() => {\n        setCool(true);\n        setHeat(false);\n      }, delay);\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  const heat = (e) => {\n    if (variables?.onLine === true && controllerStatus === true) {\n      setIdThermostat(e.target.id);\n      // setOpenModal(true); // hace parte de el modal de confirmación\n      // setCancel(false); // hace parte de el modal de confirmación\n      setThermostatState(\"heat\");\n      // setIdThermostat(e.target.id);\n      // setLoad(true); // hace parte de el modal de confirmación\n      // setTimeout(() => { // hace parte de el modal de confirmación\n      //   setOpenModal(false);\n      // }, 1500);\n      sendMessage({\n        serial,\n        channel: serial,\n        id: String(e.target.id),\n        eventType: \"mode_updated\",\n        value: \"heat\",\n      });\n      setLoad(true);\n      SocketTimeValidationResponse();\n      setTimeout(() => {\n        setHeat(true);\n        setCool(false);\n      }, delay);\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  const autoAir = (e) => {\n    if (variables?.onLine === true && controllerStatus === true) {\n      setIdThermostat(e.target.id);\n      setThermostatState(\"auto\");\n      sendMessage({\n        serial,\n        channel: serial,\n        id: String(e.target.id),\n        eventType: \"mode_updated\",\n        value: \"auto_change_over\",\n      });\n      setLoad(true);\n      SocketTimeValidationResponse();\n      setTimeout(() => {\n        setCool(false);\n        setHeat(false);\n      }, delay);\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  const offAir = (e) => {\n    if (variables?.onLine === true && controllerStatus === true) {\n      setIdThermostat(e.target.id);\n      // setOpenModal(true); // hace parte de el modal de confirmación\n      // setCancel(false); // hace parte de el modal de confirmación\n      setThermostatState(\"off\");\n      // setIdThermostat(e.target.id);\n      // setTimeout(() => { // hace parte de el modal de confirmación\n      //   setOpenModal(false);\n      // }, 1500);\n      sendMessage({\n        serial,\n        channel: serial,\n        id: String(e.target.id),\n        eventType: \"mode_updated\",\n        value: \"off\",\n      });\n      setLoad(true);\n      SocketTimeValidationResponse();\n      setTimeout(() => {\n        setCool(false);\n        setHeat(false);\n      }, delay);\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  // const fan = (e) => {\n  //   setLoad(true);\n  //   sendMessage({\n  //     serial,\n  //     channel: serial,\n  //     id: String(e.target.id),\n  //     eventType: \"mode_updated\",\n  //     value: \"low\",\n  //   });\n  //   setTimeout(() => {\n  //     setHeat(true);\n  //     setCool(false);\n  //     setLoad(false);\n  //   }, delay);\n  // };\n\n  const handleUp = (e) => {\n    if (variables?.onLine === true && controllerStatus === true) {\n      setIdThermostat(e.target.id);\n\n      if (tempScale === \"celsius\" && setpointCoolScale === \"celsius\") {\n        const newTemp =\n          parseInt(pointTemperature) + 1 > 30\n            ? 30\n            : parseInt(pointTemperature) + 1;\n        setPointTemperature(newTemp);\n        lastUpdateTemperature.current = newTemp;\n      } else if (\n        tempScale === \"fahrenheit\" &&\n        setpointCoolScale === \"fahrenheit\"\n      ) {\n        const newTemp =\n          parseInt(pointTemperature) + 1 > 86\n            ? 86\n            : parseInt(pointTemperature) + 1;\n        setPointTemperature(newTemp);\n        lastUpdateTemperature.current = newTemp;\n      }\n\n      if (variablesAirs?.pointTemperatureId?.item_id === e.target.id) {\n        setTimeout(() => {\n          setLoad(true);\n          // setOpenModal(true); // hace parte de el modal de confirmación\n          // setCancel(false); // hace parte de el modal de confirmación\n          setThermostatState(\"increase\");\n          // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n          setTimeout(() => {\n            sendMessage({\n              serial,\n              channel: serial,\n              id: String(e.target.id),\n              eventType: \"setpoint_updated\",\n              value: String(lastUpdateTemperature.current),\n            });\n            SocketTimeValidationResponse();\n          }, delay);\n        }, 2500);\n      } else {\n        setPointTemperature(parseInt(variablesAirs?.pointTemperatureId?.value));\n        setTimeout(() => {\n          setLoad(true);\n        }, 2500);\n        setTimeout(() => {\n          setPointTemperature(\n            parseInt(variablesAirs?.pointTemperatureId?.value)\n          );\n        }, 3500);\n      }\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  const handleDown = (e) => {\n    if (variables?.onLine === true && controllerStatus === true) {\n      setIdThermostat(e.target.id);\n\n      if (tempScale === \"celsius\" && setpointCoolScale === \"celsius\") {\n        const newTemp =\n          parseInt(pointTemperature) - 1 < 16\n            ? 16\n            : parseInt(pointTemperature) - 1;\n        setPointTemperature(newTemp);\n        lastUpdateTemperature.current = newTemp;\n      } else if (\n        tempScale === \"fahrenheit\" &&\n        setpointCoolScale === \"fahrenheit\"\n      ) {\n        const newTemp =\n          parseInt(pointTemperature) - 1 < 66\n            ? 66\n            : parseInt(pointTemperature) - 1;\n        setPointTemperature(newTemp);\n        lastUpdateTemperature.current = newTemp;\n      }\n\n      if (variablesAirs?.pointTemperatureId?.item_id === e.target.id) {\n        setTimeout(() => {\n          setLoad(true);\n          // setOpenModal(true); // hace parte de el modal de confirmación\n          // setCancel(false); // hace parte de el modal de confirmación\n          setThermostatState(\"decrease\");\n          // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n          setTimeout(() => {\n            sendMessage({\n              serial,\n              channel: serial,\n              id: String(e.target.id),\n              eventType: \"setpoint_updated\",\n              value: String(lastUpdateTemperature.current),\n            });\n            SocketTimeValidationResponse();\n          }, delay);\n        }, 2500);\n      } else {\n        setPointTemperature(parseInt(variablesAirs?.pointTemperatureId?.value));\n        setTimeout(() => {\n          setLoad(true);\n        }, 2500);\n        setTimeout(() => {\n          setPointTemperature(\n            parseInt(variablesAirs?.pointTemperatureId?.value)\n          );\n        }, 3500);\n      }\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  const changeFan = (e) => {\n    if (variables?.onLine === true && controllerStatus === true) {\n      setIdThermostat(e.target.id);\n      // setOpenModal(true); // hace parte de el modal de confirmación\n      // setCancel(false); // hace parte de el modal de confirmación\n      setThermostatState(\"fan\");\n      // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n      const nextFanPosition =\n        (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n      const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n      setFanCoolState(nextSpeed);\n      setFanPosition(nextFanPosition);\n      // setFanCooling(true);\n      // setCool(true);\n      sendMessage({\n        serial,\n        channel: serial,\n        id: e.target.id,\n        eventType: \"fan_updated\",\n        value: nextSpeed,\n      });\n      SocketTimeValidationResponse();\n      setLoad(true);\n    } else {\n      setLoad(true);\n      setTimeout(() => {\n        setErrorMessage(true);\n        setLoad(false);\n      }, 1000);\n    }\n  };\n\n  //  Función completa y adaptada para funcionar con el modal de confirmación,\n  //  mantenerla por si se vuelve a pedir\n\n  // const handleChangeThermostatSates = () => {\n  //   if (\n  //     thermostatState === \"off\" ||\n  //     thermostatState === \"cool\" ||\n  //     thermostatState === \"heat\"\n  //   ) {\n  //     setLoad(true);\n  //     setTimeout(() => {\n  //       setOpenModal(false);\n  //     }, 1500);\n  //     sendMessage({\n  //       serial,\n  //       channel: serial,\n  //       id: String(idThermostat),\n  //       eventType: \"mode_updated\",\n  //       value: thermostatState,\n  //     });\n  //     setTimeout(() => {\n  //       if (thermostatState === \"off\" && variables?.onLine === true) {\n  //         setCool(false);\n  //         setHeat(false);\n  //         setLoad(false);\n  //         setSuccessMessage(true);\n  //       } else if (thermostatState === \"cool\" && variables?.onLine === true) {\n  //         setCool(true);\n  //         setHeat(false);\n  //         setLoad(false);\n  //         setSuccessMessage(true);\n  //       } else if (thermostatState === \"heat\" && variables?.onLine === true) {\n  //         setHeat(true);\n  //         setCool(false);\n  //         setLoad(false);\n  //         setSuccessMessage(true);\n  //       } else if (\n  //         thermostatState === \"off\" ||\n  //         thermostatState === \"cool\" ||\n  //         (thermostatState === \"heat\" && variables?.onLine === false)\n  //       ) {\n  //         setErrorMessage(true);\n  //       }\n  //     }, delay);\n  //   } else if (\n  //     thermostatState === \"increase\" ||\n  //     thermostatState === \"decrease\"\n  //   ) {\n  //     if (variablesAirs?.pointTemperatureId?.item_id === idThermostat) {\n  //       setTimeout(() => {\n  //         setLoad(true);\n  //         setOpenModal(false);\n  //         setTimeout(() => {\n  //           setLoad(false);\n  //           sendMessage({\n  //             serial,\n  //             channel: serial,\n  //             id: idThermostat,\n  //             eventType: \"setpoint_updated\",\n  //             value: String(lastUpdateTemperature.current),\n  //           });\n  //           if (variables?.onLine && controllerStatus) {\n  //             setSuccessMessage(true);\n  //           } else {\n  //             setErrorMessage(false);\n  //           }\n  //         }, delay);\n  //       }, delay);\n  //     } else {\n  //       setPointTemperature(parseInt(variablesAirs?.pointTemperatureId?.value));\n  //       setTimeout(() => {\n  //         setLoad(true);\n  //       }, delay);\n  //       setTimeout(() => {\n  //         setPointTemperature(\n  //           parseInt(variablesAirs?.pointTemperatureId?.value)\n  //         );\n  //         setLoad(false);\n  //       }, 3500);\n  //     }\n  //   } else if (thermostatState === \"fan\") {\n  //     if (handleThermostatModel()?.typeThermostat === \"ir\") {\n  //       const nextFanPosition =\n  //         (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n  //       const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n  //       setFanCoolState(nextSpeed);\n  //       setFanPosition(nextFanPosition);\n  //       setFanCooling(true);\n  //       setCool(true);\n  //       setTimeout(() => {\n  //         setLoad(true);\n  //         setOpenModal(false);\n  //         setTimeout(() => {\n  //           setLoad(false);\n  //           sendMessage({\n  //             serial,\n  //             channel: serial,\n  //             id: idThermostat,\n  //             eventType: \"fan_updated\",\n  //             value: nextSpeed,\n  //           });\n  //         }, delay);\n  //       }, delay);\n  //     } else if (handleThermostatModel()?.typeThermostat === \"central\") {\n  //       const nextFanPosition =\n  //         (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n  //       const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n  //       setFanCoolState(nextSpeed);\n  //       setFanPosition(nextFanPosition);\n  //       setFanCooling(true);\n  //       setCool(true);\n  //       setTimeout(() => {\n  //         setLoad(true);\n  //         setOpenModal(false);\n  //         setTimeout(() => {\n  //           setLoad(false);\n  //           sendMessage({\n  //             serial,\n  //             channel: serial,\n  //             id: idThermostat,\n  //             eventType: \"fan_updated\",\n  //             value: nextSpeed,\n  //           });\n  //         }, delay);\n  //       }, delay);\n  //     } else if (handleThermostatModel()?.typeThermostat === \"fanCoil\") {\n  //       const nextFanPosition =\n  //         (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n  //       const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n  //       setFanCoolState(nextSpeed);\n  //       setFanPosition(nextFanPosition);\n  //       setFanCooling(true);\n  //       setCool(true);\n  //       setTimeout(() => {\n  //         setLoad(true);\n  //         setOpenModal(false);\n  //         setTimeout(() => {\n  //           setLoad(false);\n  //           sendMessage({\n  //             serial,\n  //             channel: serial,\n  //             id: idThermostat,\n  //             eventType: \"fan_updated\",\n  //             value: nextSpeed,\n  //           });\n  //         }, delay);\n  //       }, delay);\n  //     }\n  //   }\n  // };\n\n  if (allAirs) {\n    return (\n      <>\n        <div className={`_weather_container_new`}>\n          <div\n            className={`_weather_container_title_status_new ${\n              variables.onLine && controllerStatus\n                ? null\n                : \"_weather_offline_new\"\n            }`}\n          >\n            <div className=\"_weather__title_new\">\n              <span>{alias}</span>\n            </div>\n            {batteryData?.length !== 0 && batteryData?.length !== undefined ? (\n              <div className=\"battery_status\" onClick={handleOpenBatteryReport}>\n                {batteryData[0] && (\n                  <span className=\"battery_percentage\">\n                    {batteryData[0]?.status}%\n                  </span>\n                )}\n                <div className=\"battery_icon_container\">\n                  <span\n                    className={handleBatteryLevelColor(batteryData[0]?.status)}\n                  >\n                    {handleBatteryLevel(batteryData[0]?.status)}\n                  </span>\n                </div>\n              </div>\n            ) : null}\n            <div className=\"_weather__status_new\">\n              <span\n                className={\n                  variables.onLine && controllerStatus\n                    ? `${\"__icon_wifi_online\"}`\n                    : `${\"__icon_wifi_offline\"}`\n                }\n              >\n                <i class=\"fas fa-wifi\"></i>\n              </span>\n            </div>\n          </div>\n\n          <div\n            className={`_weather_container_temperature_new ${\n              load ? \"__loading_weather_other_new\" : false\n            }`}\n          >\n            <div\n              className={`${\n                cool || heats || fanCooling || autoMode\n                  ? \"\"\n                  : \"__weather_temperatur_off_new\"\n              } _weather_temperature_new`}\n            >\n              <span\n                className={`${\n                  cool || heats || fanCooling || autoMode\n                    ? \"\"\n                    : \"__temperatur_off_new\"\n                } __temperature_new`}\n              >\n                {pointTemperature}\n                <span\n                  style={{\n                    display: \"flex\",\n                    fontSize: \"35px\",\n                    alignItems: \"start\",\n                    marginTop: \"10px\",\n                  }}\n                >\n                  {setpointCoolScale === \"celsius\"\n                    ? \"°c\"\n                    : setpointCoolScale === \"fahrenheit\"\n                    ? \"°f\"\n                    : setpointCoolScale === \"kelvin\"\n                    ? \"°k\"\n                    : \"unknow scale\"}\n                </span>\n              </span>\n              <div className=\"_indoor_weather_new\">\n                <span className=\"__indoor_new\">\n                  {variablesAirs?.humidity?.value ? (\n                    <span\n                      style={{\n                        display: \"flex\",\n                        fontSize: \"18px\",\n                      }}\n                    >\n                      <InvertColorsIcon />\n                      {variablesAirs?.humidity?.value}\n                      {\"%\"}\n                    </span>\n                  ) : null}\n                  <span\n                    style={{\n                      display: \"flex\",\n                      fontSize: \"20px\",\n                    }}\n                  >\n                    {tem}\n                    {tempScale === \"celsius\"\n                      ? \"°c\"\n                      : tempScale === \"fahrenheit\"\n                      ? \"°f\"\n                      : tempScale === \"kelvin\"\n                      ? \"°k\"\n                      : \"unknow scale\"}\n                  </span>\n                </span>\n              </div>\n            </div>\n\n            <div\n              className=\"__container_fan_new\"\n              id={variablesAirs?.fanMode?.item_id}\n            >\n              <div className=\"fan_and_velocity_container\">\n                <div className=\"__color_new\">\n                  <img\n                    className={\n                      fanCoolState === \"high\"\n                        ? \"prueba\"\n                        : fanCoolState === \"medium\"\n                        ? \"prueba2\"\n                        : \"prueba3\"\n                    }\n                    src={fanCool}\n                    onClick={\n                      permissionsRoleUser?.permissionsRole?.AreaDispMan\n                        ? changeFan\n                        : false\n                    }\n                    id={variablesAirs?.fanMode?.item_id}\n                    alt=\"fan\"\n                  />\n                </div>\n                <div\n                  style={{\n                    display: \"flex\",\n                    justifyContent: \"center\",\n                  }}\n                >\n                  {fanCoolState === \"auto_low\" ? (\n                    <>\n                      {handleThermostatModel()?.typeThermostat === \"ir\" ? (\n                        <>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"auto_low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"low_now\"\n                                : \"bar1\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"auto_low\" ||\n                              fanCoolState === \"high\"\n                                ? \"medium_now\"\n                                : \"bar2\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"auto_low\" ? \"high_now\" : \"bar3\"\n                            }`}\n                          ></div>\n                        </>\n                      ) : (\n                        <>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"auto_low\" ? \"low_now\" : \"bar1\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"auto_low\"\n                                ? \"medium_now\"\n                                : \"bar2\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"auto_low\" ? \"high_now\" : \"bar3\"\n                            }`}\n                          ></div>\n                        </>\n                      )}\n                    </>\n                  ) : (\n                    <>\n                      {(handleThermostatModel()?.typeThermostat === \"ir\" ||\n                        handleThermostatModel()?.typeThermostat ===\n                          \"fanCoil\") &&\n                      thermostatState !== \"off\" ? (\n                        <>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"low\"\n                                : \"bar1\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"medium\"\n                                : \"bar2\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"high\" ? \"high\" : \"bar3\"\n                            }`}\n                          ></div>\n                        </>\n                      ) : handleThermostatModel()?.typeThermostat ===\n                        \"central\" ? (\n                        <>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"low\"\n                                : \"bar1\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"medium\"\n                                : \"bar2\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"high\"\n                                : \"bar3\"\n                            }`}\n                          ></div>\n                        </>\n                      ) : thermostatState === \"off\" ? (\n                        <>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"bar1\"\n                                : \"low\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"bar2\"\n                                : \"medium\"\n                            }`}\n                          ></div>\n                          <div\n                            className={`icon_bar ${\n                              fanCoolState === \"low\" ||\n                              fanCoolState === \"medium\" ||\n                              fanCoolState === \"high\"\n                                ? \"bar3\"\n                                : \"high\"\n                            }`}\n                          ></div>\n                        </>\n                      ) : null}\n                    </>\n                  )}\n                </div>\n              </div>\n\n              <div\n                className={`_indoor_weather_new ${\n                  load ? \"__loading_weather_other_new\" : false\n                }`}\n              >\n                <span className=\"__indoor_new_name\">\n                  {fanState(fanCoolState)}\n                </span>\n              </div>\n            </div>\n          </div>\n\n          <div className=\"__loading_weather\">\n            {load ? <Loading_devices /> : false}\n          </div>\n\n          {/* status */}\n          <div\n            className={`_weather_container_mode_new ${\n              load ? \"__loading_weather_other_new\" : false\n            }`}\n          >\n            <div className=\"_weather_container_up_down_new\">\n              <div\n                className=\"_weather_btn_up_down_new\"\n                id={variablesAirs?.pointTemperatureId?.item_id}\n                onClick={(e) =>\n                  permissionsRoleUser?.permissionsRole?.AreaDispMan &&\n                  heats !== true &&\n                  autoMode !== true\n                    ? handleUp(e)\n                    : false\n                }\n              >\n                <span\n                  id={variablesAirs?.pointTemperatureId?.item_id}\n                  className=\"__btn_up_new\"\n                >\n                  <i\n                    id={variablesAirs?.pointTemperatureId?.item_id}\n                    class=\"fas fa-chevron-up\"\n                  ></i>\n                </span>\n              </div>\n              <div\n                id={variablesAirs?.pointTemperatureId?.item_id}\n                className=\"_weather_btn_up_down_new\"\n                onClick={(e) =>\n                  permissionsRoleUser?.permissionsRole?.AreaDispMan &&\n                  heats !== true &&\n                  autoMode !== true\n                    ? handleDown(e)\n                    : false\n                }\n              >\n                <span\n                  id={variablesAirs?.pointTemperatureId?.item_id}\n                  className=\"__btn_down_new\"\n                >\n                  <i\n                    id={variablesAirs?.pointTemperatureId?.item_id}\n                    class=\"fas fa-chevron-down\"\n                  ></i>\n                </span>\n              </div>\n            </div>\n            <div className=\"container_options_new\">\n              <div\n                id={variablesAirs?.coolId?.item_id}\n                className={\n                  cool ? \"_weather_mode_cool_bg_new\" : \"_weather_mode_cool_new\"\n                }\n                onClick={(event) =>\n                  permissionsRoleUser?.permissionsRole?.AreaDispMan\n                    ? on(event)\n                    : false\n                }\n              >\n                COOL\n              </div>\n              <div\n                id={variablesAirs?.coolId?.item_id}\n                className={\n                  heats ? \"_weather_mode_heat_bg_new\" : \"_weather_mode_heat_new\"\n                }\n                onClick={(e) =>\n                  permissionsRoleUser?.permissionsRole?.AreaDispMan\n                    ? heat(e)\n                    : false\n                }\n              >\n                HEAT\n              </div>\n              <div\n                id={variablesAirs?.coolId?.item_id}\n                className={\n                  autoMode\n                    ? \"_weather_mode_auto_bg_new\"\n                    : \"_weather_mode_auto_new\"\n                }\n                onClick={(e) =>\n                  permissionsRoleUser?.permissionsRole?.AreaDispMan\n                    ? autoAir(e)\n                    : false\n                }\n              >\n                AUTO\n              </div>\n              <div\n                id={variablesAirs?.coolId?.item_id}\n                className={\n                  cool || heats || fanCooling || autoMode\n                    ? \"_weather_mode_off_new\"\n                    : \"_weather_mode_off_bg_new\"\n                }\n                onClick={(e) =>\n                  permissionsRoleUser?.permissionsRole?.AreaDispMan\n                    ? offAir(e)\n                    : false\n                }\n              >\n                OFF\n              </div>\n            </div>\n          </div>\n        </div>\n        {/* \n        Se comenta modal de confirmación, mantenerlo por si lo vuelven a pedir         \n        <TemperatureModal\n          open={openModal}\n          setOpen={setOpenModal}\n          setCancel={setCancel}\n          ChangeSates={handleChangeThermostatSates}\n        /> */}\n        {/* <MessageSuccess />\n        <MessageError /> */}\n        <GraphBatteryModal\n          areaName={areaName}\n          open={openBatteryReport}\n          name={alias}\n          handleClose={handleOpenBatteryReport}\n          id={batteryData[0]?.item_id}\n          typeGateway={ExtractTypeGateway()}\n        />\n      </>\n    );\n  }\n};\n\nexport default Temperature;\n","import { useEffect, useState } from \"react\";\nimport { SocketVRF } from \"../helperDevices\";\n\nexport const useDevices = (params) => {\n  const [value, setValue] = useState(params);\n\n  useEffect(() => {\n    setValue(params);\n  }, [params]);\n\n  return { value };\n};\n\nexport const useExtrationDevices = (devices) => {\n  const [airs, setAirs] = useState(devices);\n  const [switches, setSwitches] = useState(devices);\n  const [sensorsDoor, setSensorsDoor] = useState(devices);\n  const [sensorsMotion, setSensorMotion] = useState(devices);\n  const [curtainSwitch, setCurtainSwitch] = useState(devices);\n  const [lock, setLock] = useState(devices);\n  const [vrf, setVrf] = useState(devices);\n  const [plugins, setPlugins] = useState();\n\n  useEffect(() => {\n    const allSwitch = devices?.filter(\n      (i) => i?.Category?.category === \"switch\" && i?.visible !== false\n    );\n    setSwitches(allSwitch);\n\n    const allAirs = devices?.filter(\n      (i) =>\n        i?.Category?.category === \"hvac\" &&\n        i?.variables?.type === \"thermostat\" &&\n        i?.visible !== false\n    );\n    setAirs(allAirs);\n\n    const doorSensors = devices?.filter(\n      (i) =>\n        i?.Category?.category === \"security_sensor\" &&\n        i?.Category?.sub_category === \"door\" &&\n        i?.visible !== false\n    );\n    setSensorsDoor(doorSensors);\n\n    const motionSensors = devices?.filter(\n      (i) =>\n        i?.Category?.category === \"security_sensor\" &&\n        i?.Category?.sub_category === \"motion\" &&\n        i?.visible !== false\n    );\n    setSensorMotion(motionSensors);\n\n    const allPugin = devices?.filter(\n      (i) => i?.Category?.category === \"generic_io\" && i?.visible !== false\n    );\n    setPlugins(allPugin);\n\n    const curtainSwitch = devices?.filter(\n      (i) =>\n        i?.Category?.category === \"window_cov\" &&\n        i?.Category?.sub_category === \"window_cov\" &&\n        i?.visible !== false\n    );\n    setCurtainSwitch(curtainSwitch);\n\n    const door_lock = devices?.filter(\n      (i) => i?.Category?.category === \"door_lock\" && i?.visible !== false\n    );\n    setLock(door_lock);\n\n    const allVrf = devices?.filter(\n      (i) =>\n        i?.Category?.category === \"hvac\" &&\n        i?.variables?.type === \"thermostatVRF\" &&\n        i?.visible !== false\n    );\n    setVrf(allVrf);\n    if (allVrf) {\n      SocketVRF();\n    }\n  }, [devices]);\n\n  return {\n    switches,\n    airs,\n    sensorsMotion,\n    sensorsDoor,\n    plugins,\n    curtainSwitch,\n    vrf,\n    lock,\n  };\n};\n","import { useEffect, useState, useContext, useRef } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\nimport { changeNamePluggin } from \"../../../../../utils/helpers\";\n\nimport Tooltip from \"@mui/material/Tooltip\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewHSC = ({\n  hsc,\n  project,\n  serial,\n  dataSocket,\n  sendMessage,\n  controllerStatus,\n}) => {\n  const { t } = useTranslation();\n  const { alias, variables, Category, name } = hsc;\n  const { category, sub_category } = Category;\n  const { item_id, status, type, AccionTexto, Modo, EstadoTexto, onLine } =\n    variables;\n  const { AccionTextoId, ModoId } = item_id;\n  const [libre, setLibre] = useState(EstadoTexto === \"Libre\" ? true : false);\n  const [accionTexto, setAccionTexto] = useState(AccionTexto);\n  const [stateMode, setStateMode] = useState(Modo);\n  const [auto, setAuto] = useState(Modo === \"Auto\" ? true : false);\n  const [manual, setManual] = useState(Modo === \"Manual\" ? true : false);\n  const [apagado, setApagado] = useState(Modo === \"Apagado\" ? true : false);\n  const [socketSnackbar, setSocketSnackbar] = useState(null);\n  const socketInterval = useRef(null);\n  const { permissionsRoleUser, setSuccessMessage, setErrorMessage } =\n    useContext(AuthContext);\n\n  useEffect(() => {\n    if (\n      dataSocket.category === \"generic_io\" &&\n      dataSocket.event_name === \"EstadoTexto\"\n    ) {\n      if (dataSocket.state === \"Ocupado\") {\n        setLibre(false);\n        clearInterval(socketInterval.current);\n      }\n    }\n\n    if (\n      dataSocket.category === \"generic_io\" &&\n      dataSocket.event_name === \"AccionTexto\"\n    ) {\n      if (dataSocket.state === \"Libre\") {\n        setAccionTexto(dataSocket.state);\n        setLibre(dataSocket.state);\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(true);\n        clearInterval(socketInterval.current);\n      } else if (dataSocket.state === \"Scan\") {\n        setAccionTexto(dataSocket.state);\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(true);\n        clearInterval(socketInterval.current);\n      } else if (dataSocket.state === \"puerta abierta\") {\n        setAccionTexto(dataSocket.state);\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(true);\n        clearInterval(socketInterval.current);\n      } else if (dataSocket.state === \"ocupado\") {\n        setAccionTexto(dataSocket.state);\n        clearInterval(socketInterval.current);\n        setSocketSnackbar(true);\n        clearInterval(socketInterval.current);\n      }\n    }\n\n    if (\n      dataSocket.category === \"generic_io\" &&\n      dataSocket.event_name === \"Modo\"\n    ) {\n      if (dataSocket.state === \"Auto\") {\n        setAuto(dataSocket.state);\n        setApagado(false);\n        setManual(false);\n        setStateMode(\"Auto\");\n        clearInterval(socketInterval.current);\n      }\n      if (dataSocket.state === \"Apagado\") {\n        setApagado(dataSocket.state);\n        setManual(false);\n        setAuto(false);\n        setStateMode(\"Apagado\");\n        clearInterval(socketInterval.current);\n      }\n      if (dataSocket.state === \"Manual\") {\n        setManual(dataSocket.state);\n        setAuto(false);\n        setApagado(false);\n        setStateMode(\"Manual\");\n        clearInterval(socketInterval.current);\n      }\n    }\n  }, [dataSocket]);\n\n  useEffect(() => {\n    if (socketSnackbar) {\n      setSuccessMessage(true);\n      setSocketSnackbar(null);\n    } else if (socketSnackbar === false) {\n      setErrorMessage(true);\n      setAccionTexto(AccionTexto);\n      setSocketSnackbar(null);\n    }\n  }, [socketSnackbar]);\n\n  const SocketTimeValidationResponse = () => {\n    clearInterval(socketInterval.current);\n    let count = 0;\n    if (onLine === false && controllerStatus === false) {\n    } else {\n      socketInterval.current = setInterval(() => {\n        count++;\n        if (count > 15) {\n          clearInterval(socketInterval.current);\n          setSocketSnackbar(false);\n          setSocketSnackbar(null);\n        }\n      }, 1000);\n    }\n  };\n\n  const handleChangesOptions = (e) => {\n    sendMessage({\n      serial,\n      channel: serial,\n      id: AccionTextoId,\n      eventType: \"plugin_mode\",\n      value: \"Libre\",\n    });\n    SocketTimeValidationResponse();\n  };\n\n  const handleChangesAutoMode = () => {\n    setAuto(true);\n    setApagado(false);\n    setManual(false);\n    sendMessage({\n      serial,\n      channel: serial,\n      id: ModoId,\n      eventType: \"plugin_mode\",\n      value: \"Auto\",\n    });\n    SocketTimeValidationResponse();\n  };\n\n  const handleChangesOffMode = () => {\n    setApagado(true);\n    setManual(false);\n    setAuto(false);\n    sendMessage({\n      serial,\n      channel: serial,\n      id: ModoId,\n      eventType: \"plugin_mode\",\n      value: \"Apagado\",\n    });\n    SocketTimeValidationResponse();\n  };\n\n  const handleChangesManualMode = () => {\n    setManual(true);\n    setAuto(false);\n    setApagado(false);\n    sendMessage({\n      serial,\n      channel: serial,\n      id: ModoId,\n      eventType: \"plugin_mode\",\n      value: \"Manual\",\n    });\n    SocketTimeValidationResponse();\n  };\n\n  const translatingHeaderCardPlugin = (alias) => {\n    const pluginTitle = typeof alias === \"string\" ? alias : \"\";\n    if (pluginTitle?.toLowerCase() === \"plugin ocupacion\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_OCCUPATION\");\n    } else if (pluginTitle?.toLowerCase() === \"aula inteligente\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_SMART\");\n    } else {\n      return pluginTitle;\n    }\n  };\n\n  const translatingAccionTexto = (accionTexto) => {\n    const systemStatus = typeof accionTexto === \"string\" ? accionTexto : \"\";\n    if (systemStatus.toLowerCase() === \"libre\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\");\n    } else if (systemStatus.toLowerCase() === \"scan\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SCAN\");\n    } else if (systemStatus.toLowerCase() === \"puerta abierta\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OPEN_DOOR\");\n    } else if (systemStatus.toLowerCase() === \"ocupado\") {\n      return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\");\n    } else {\n      return systemStatus;\n    }\n  };\n\n  return (\n    <>\n      <div className=\"_hsc_container\">\n        <div\n          className={`_hsc_container_title_status ${\n            onLine && controllerStatus ? null : \"_offline_hsc\"\n          }`}\n        >\n          <div class=\"_hsc__title\">\n            <span>{translatingHeaderCardPlugin(alias)}</span>\n          </div>\n          <div className=\"_hsc_status\">\n            <span\n              className={`${\n                onLine && controllerStatus\n                  ? \"__icon_wifi_hsc\"\n                  : \"__icon_wifi_offline_hsc\"\n              }`}\n            >\n              <i class=\"fas fa-wifi\"></i>\n            </span>\n          </div>\n        </div>\n\n        {/* status home */}\n        <div\n          className={`_hsc_ocupation ${\n            variables.online ? \"_loading_hsc_other\" : false\n          }`}\n        >\n          <div className=\"_hsc_home_img\">\n            <span>\n              <img\n                src={variables.online ? Devices.DESOCUPADA : Devices.OCUPADA}\n                alt=\"home\"\n                width=\"70\"\n                height=\"70\"\n              />\n            </span>\n          </div>\n          <div className=\"_hsc_home_buttons\">\n            <div\n              className=\"_free_container\"\n              onClick={\n                permissionsRoleUser.permissionsRole?.AreaDispMan\n                  ? (e) => {\n                      handleChangesOptions(e);\n                    }\n                  : false\n              }\n            >\n              <div className={accionTexto === \"Libre\" ? \"__free_bg\" : \"__free\"}>\n                <span\n                  onClick={\n                    permissionsRoleUser.permissionsRole?.AreaDispMan\n                      ? (e) => {\n                          handleChangesOptions(e);\n                        }\n                      : false\n                  }\n                >\n                  {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\")}\n                </span>\n              </div>\n            </div>\n\n            <Tooltip\n              title={t(\n                \"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY_TOOLTIP\"\n              )}\n            >\n              <div className=\"_busy_container\">\n                <div className={libre === false ? \"__busy_bg\" : \"__busy\"}>\n                  {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\")}\n                </div>\n              </div>\n            </Tooltip>\n          </div>\n        </div>\n\n        <div className=\"__loading_hsc\">\n          {variables.online ? <Loading_devices /> : false}\n        </div>\n\n        {/* status system */}\n        <div\n          className={`_hsc_status_system ${\"\" ? \"_loading_hsc_other\" : false}`}\n        >\n          <div className=\"_hsc_status_system_title\">\n            <span>\n              {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SYSTEM_STATUS\")}\n            </span>\n          </div>\n          <>\n            <div\n              className={\n                libre ? \"__status_system_free\" : \"__status_system_busy\"\n              }\n            >\n              <span className=\"__status_word\">\n                {translatingAccionTexto(accionTexto)}\n              </span>\n            </div>\n          </>\n        </div>\n\n        <div\n          className={`_hsc_mode ${\n            variables?.online ? \"_loading_hsc_other\" : false\n          }`}\n        >\n          <div className=\"_hsc_mode_title\">\n            <span>{t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MODE\")}</span>\n          </div>\n          <div className=\"__mode_container\">\n            <span\n              className={\n                manual ? \"__mode_item_manual_bg\" : \"__mode_item_manual\"\n              }\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? (e) => {\n                      handleChangesManualMode(e);\n                    }\n                  : false\n              }\n            >\n              {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\")}\n            </span>\n            <span\n              className={apagado ? \"__mode_item_off_bg\" : \"__mode_item_off\"}\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? (e) => {\n                      handleChangesOffMode(e);\n                    }\n                  : false\n              }\n            >\n              {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\")}\n              {/* {changeNamePluggin(project.id)} */}\n            </span>\n            <span\n              className={auto ? \"__mode_item_auto_bg\" : \"__mode_item_auto\"}\n              onClick={\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? (e) => {\n                      handleChangesAutoMode(e);\n                    }\n                  : false\n              }\n            >\n              {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\")}\n            </span>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\nexport default NewHSC;\n","import { useEffect, useState, useContext } from \"react\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\nconst useSocket = (url, serial) => {\n  const { setSocketConection } = useContext(AuthContext);\n  const [client, setClient] = useState(null);\n  const [dataSocket, setDataSocket] = useState({});\n\n  useEffect(() => {\n    const newClient = new WebSocket(url);\n\n    let pingInterval;\n\n    newClient.onopen = () => {\n      newClient.send(\n        JSON.stringify({ channel: serial, serial, event: \"assign_room\" })\n      );\n      setSocketConection(true);\n\n      pingInterval = setInterval(() => {\n        if (newClient?.readyState === WebSocket.OPEN) {\n          newClient.send(JSON.stringify({ type: 'ping' }));\n        }\n      }, 30000);\n    };\n\n    newClient.onmessage = (e) => {\n      try {\n        let dataSocket = JSON.parse(e.data);\n        if (dataSocket?.type === 'ping') return;\n        \n        setDataSocket(dataSocket);\n      } catch (error) {\n        console.error('Error parsing message:', error);\n      }\n    };\n\n    newClient.onerror = function (error) {\n      setSocketConection(false);\n    };\n\n    newClient.onclose = () => {\n      clearInterval(pingInterval);\n      setSocketConection(false);\n    };\n\n    setClient(newClient);\n\n    return () => {\n      clearInterval(pingInterval);\n      newClient.close();\n    };\n  }, [url, serial]);\n\n  const sendMessage = (message) => {\n    if (client && client.readyState === WebSocket.OPEN) {\n      client.send(JSON.stringify(message));\n    }\n  };\n\n  return { client, sendMessage, dataSocket };\n};\n\nexport default useSocket;\n","import { useEffect, useState, useContext } from \"react\";\nimport fanCoolImage from \"../../../../../../assets/fant.png\";\nimport { AuthContext } from \"../../../../../../context/AuthProvider\";\nimport { getEventEmitter } from \"../../../helperDevices\";\nimport Loading_devices from \"../../../../../../components/loading/Loading_devices\";\n\nconst Vrf = ({ vrf, sendMessage, serial, refetch }) => {\n  const { alias, variables } = vrf;\n  const { setSuccessMessage, setErrorMessage, permissionsRoleUser } =\n    useContext(AuthContext);\n  const [setPoint, setSetpoint] = useState(\n    variables?.items\n      ?.find((i) => i.name === \"thermostat_setpoint_cooling\")\n      .status?.value.toFixed(0)\n  );\n  const [tem, setTem] = useState(\n    variables?.items?.find((e) => e?.name === \"temp\")?.status?.value?.toFixed(0)\n  );\n  const [cool, setCool] = useState(\n    variables?.items?.find((e) =>\n      (e?.name === \"thermostat_status\")?.status === \"ON\" ? true : false\n    )\n  );\n  const [offCool, setOffCool] = useState(\n    variables?.items?.find((e) =>\n      (e?.name === \"thermostat_status\")?.status === \"OFF\" ? true : false\n    )\n  );\n  const [fanCoolStatus, setFanCoolStatus] = useState(\n    variables?.items.find((i) => i.name === \"thermostat_fan_mode\")?.status\n  );\n  const fanCool = [\"LOW\", \"MEDIUM\", \"HIGH\", \"AUTO\"];\n  const [count, setCount] = useState(0);\n  const [heat, setHeat] = useState(\n    variables?.items?.find((e) =>\n      (e?.name === \"thermostat_status\")?.status === \"HeatOn\" ? true : false\n    )\n  );\n  const [auto, setAuto] = useState(\n    variables?.items?.find((e) =>\n      (e?.name === \"thermostat_status\")?.status === \"AutoChangeOver\"\n        ? true\n        : false\n    )\n  );\n  const idModeUpdated = variables?.items?.find(\n    (i) => i.name === \"thermostat_mode\"\n  );\n  const idFandUpdated = variables?.items?.find(\n    (i) => i.name === \"thermostat_setpoint_cooling\"\n  );\n  const idTermosthatFanMode = variables?.items?.find(\n    (i) => i.name === \"thermostat_fan_mode\"\n  );\n  const [load, setLoad] = useState(false);\n  const [timer, setTimer] = useState(null);\n  const minTemperature = 15;\n  const maxTemperature = 30;\n  const delay = 1500;\n\n  useEffect(() => {\n    const eventEmitter = getEventEmitter();\n    const handleUpdateUnit = (unitId, message) => {\n      if (variables?.items[0]?.item_id === unitId) {\n        setTem(message.ambientTemperature.toFixed(0));\n        setSetpoint(message.setpoint);\n        setFanCoolStatus(message.fan);\n\n        if (message.operationStatus === \"OFF\") {\n          setOffCool(true);\n          setCool(false);\n          setHeat(false);\n          setAuto(false);\n        } else {\n          setOffCool(false);\n          setCool(message.operationMode === \"ON\");\n          setHeat(message.operationMode === \"HeatOn\");\n          setAuto(message.operationMode === \"AutoChangeOver\");\n        }\n      }\n    };\n\n    eventEmitter.on(\"updateUnit\", handleUpdateUnit);\n\n    return () => {\n      eventEmitter.off(\"updateUnit\", handleUpdateUnit); // Limpia el listener cuando el componente se desmonte\n    };\n  }, [variables?.items[0]?.item_id]);\n\n  const on = async () => {\n    setCool(true);\n    setOffCool(false);\n    setHeat(false);\n    setAuto(false);\n    const message = JSON.stringify({\n      serial,\n      id: idModeUpdated.item_id,\n      eventType: \"mode_updated\",\n      value: \"Cool\",\n      projectId: parseInt(localStorage.getItem(\"id\")),\n    });\n    setLoad(true);\n    setTimeout(() => {\n      sendMessage.send(message);\n      setLoad(false);\n    }, delay);\n  };\n  const heatMode = async () => {\n    setCool(false);\n    setOffCool(false);\n    setHeat(true);\n    setAuto(false);\n    const message = JSON.stringify({\n      serial,\n      id: idModeUpdated.item_id,\n      eventType: \"mode_updated\",\n      value: \"Heat\",\n      projectId: parseInt(localStorage.getItem(\"id\")),\n    });\n    setLoad(true);\n    setTimeout(() => {\n      sendMessage.send(message);\n      setLoad(false);\n    }, delay);\n  };\n  const autoMode = async () => {\n    setCool(false);\n    setOffCool(false);\n    setHeat(false);\n    setAuto(true);\n    const message = JSON.stringify({\n      serial,\n      id: idModeUpdated.item_id,\n      eventType: \"mode_updated\",\n      value: \"Auto\",\n      projectId: parseInt(localStorage.getItem(\"id\")),\n    });\n    setLoad(true);\n    setTimeout(() => {\n      sendMessage.send(message);\n      setLoad(false);\n    }, delay);\n  };\n  const off = async () => {\n    setCool(false);\n    setOffCool(true);\n    setHeat(false);\n    setAuto(false);\n    const message = JSON.stringify({\n      serial,\n      id: idModeUpdated.item_id,\n      eventType: \"mode_updated\",\n      value: \"Off\",\n      projectId: parseInt(localStorage.getItem(\"id\")),\n    });\n    setLoad(true);\n    setTimeout(() => {\n      sendMessage.send(message);\n      setLoad(false);\n    }, delay);\n  };\n  const upSetpoint = () => {\n    setSetpoint(parseInt(setPoint) + 1);\n    const message = JSON.stringify({\n      serial,\n      id: idFandUpdated.item_id,\n      eventType: \"setpoint_updated\",\n      value: parseInt(setPoint) + 1,\n      projectId: parseInt(localStorage.getItem(\"id\")),\n    });\n    setLoad(true);\n    setTimeout(() => {\n      sendMessage.send(message);\n      setLoad(false);\n    }, delay);\n  };\n\n  const downSetPoint = () => {\n    setSetpoint(parseInt(setPoint) - 1);\n    const message = JSON.stringify({\n      serial,\n      id: idFandUpdated.item_id,\n      eventType: \"setpoint_updated\",\n      value: parseInt(setPoint) - 1,\n      projectId: parseInt(localStorage.getItem(\"id\")),\n    });\n    setLoad(true);\n    setTimeout(() => {\n      sendMessage.send(message);\n      setLoad(false);\n    }, delay);\n  };\n\n  const fanModeChange = () => {\n    setCount(count + 1);\n    if (count > 3) {\n      setCount(0);\n    }\n    const prueba = fanCool[count];\n    setFanCoolStatus(prueba);\n    const message = JSON.stringify({\n      serial,\n      id: idTermosthatFanMode.item_id,\n      eventType: \"fan_updated\",\n      value: prueba,\n      projectId: parseInt(localStorage.getItem(\"id\")),\n    });\n\n    setTimeout(() => {\n      sendMessage.send(message);\n      setLoad(true);\n    }, delay);\n    setTimeout(() => {\n      setLoad(false);\n    }, 3000);\n  };\n\n  return (\n    <>\n      <div className={`_weather_container_new`}>\n        <div className={`_weather_container_title_status_new `}>\n          <div className=\"_weather__title_new\">\n            <span>{alias}</span>\n          </div>\n\n          <div className=\"_weather__status_new\">\n            <span\n              className={\n                variables.onLine\n                  ? `${\"__icon_wifi_online\"}`\n                  : `${\"__icon_wifi_offline\"}`\n              }\n            >\n              <i class=\"fas fa-wifi\"></i>\n            </span>\n          </div>\n        </div>\n\n        <div\n          className={`_weather_container_temperature_new ${\n            load ? \"__loading_weather_other_new\" : false\n          }`}\n        >\n          <div\n            className={`${\n              cool || heat || fanCoolStatus\n                ? \"\"\n                : \"__weather_temperatur_off_new\"\n            } _weather_temperature_new`}\n          >\n            <span\n              className={`${\n                cool || heat || fanCoolStatus ? \"\" : \"__temperatur_off_new\"\n              } __temperature_new`}\n            >\n              {setPoint}\n              <span\n                style={{\n                  display: \"flex\",\n                  fontSize: \"35px\",\n                  alignItems: \"start\",\n                  marginTop: \"10px\",\n                }}\n              >\n                °c\n              </span>\n            </span>\n            <div className=\"_indoor_weather_new\">\n              <span className=\"__indoor_new\">\n                <span\n                  style={{\n                    display: \"flex\",\n                    fontSize: \"20px\",\n                    marginLeft: \"20px\",\n                  }}\n                >\n                  {tem}°c\n                </span>\n              </span>\n            </div>\n          </div>\n\n          <div className=\"__container_fan_new\" id={idTermosthatFanMode.item_id}>\n            <div className=\"fan_and_velocity_container\">\n              <div className=\"__color_new\">\n                <img\n                  className={\n                    fanCoolStatus === \"high\"\n                      ? \"prueba\"\n                      : fanCoolStatus === \"medium\"\n                      ? \"prueba2\"\n                      : \"prueba3\"\n                  }\n                  src={fanCoolImage}\n                  onClick={\n                    permissionsRoleUser?.permissionsRole?.AreaDispMan\n                      ? fanModeChange\n                      : false\n                  }\n                  id={idTermosthatFanMode.item_id}\n                  alt=\"fan\"\n                />\n              </div>\n              <div\n                style={{\n                  display: \"flex\",\n                  justifyContent: \"center\",\n                }}\n              >\n                {fanCoolStatus === \"HIGH\" ? (\n                  <>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"LOW\" ||\n                        fanCoolStatus === \"MEDIUM\" ||\n                        fanCoolStatus === \"HIGH\"\n                          ? \"low\"\n                          : \"bar1\"\n                      }`}\n                    >\n                      {\" \"}\n                    </div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"MEDIUM\" || fanCoolStatus === \"HIGH\"\n                          ? \"medium\"\n                          : \"bar2\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"HIGH\" ? \"high\" : \"bar3\"\n                      }`}\n                    ></div>\n                  </>\n                ) : fanCoolStatus === \"MEDIUM\" ? (\n                  <>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"LOW\" ||\n                        fanCoolStatus === \"MEDIUM\" ||\n                        fanCoolStatus === \"HIGH\"\n                          ? \"low\"\n                          : \"bar1\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"MEDIUM\" || fanCoolStatus === \"HIGH\"\n                          ? \"medium\"\n                          : \"bar2\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"HIGH\" ? \"high\" : \"bar3\"\n                      }`}\n                    ></div>\n                  </>\n                ) : fanCoolStatus === \"LOW\" ? (\n                  <>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"LOW\" ? \"low\" : \"bar1\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"MEDIUM\" || fanCoolStatus === \"HIGH\"\n                          ? \"medium\"\n                          : \"bar2\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"HIGH\" ? \"high\" : \"bar3\"\n                      }`}\n                    ></div>\n                  </>\n                ) : fanCoolStatus === \"AUTO\" ? (\n                  <>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"AUTO\" ? \"low_now\" : \"bar1\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"AUTO\" ||\n                        fanCoolStatus === \"MEDIUM\" ||\n                        fanCoolStatus === \"HIGH\"\n                          ? \"medium_now\"\n                          : \"bar2\"\n                      }`}\n                    ></div>\n                    <div\n                      className={`icon_bar ${\n                        fanCoolStatus === \"AUTO\" ? \"high_now\" : \"bar3\"\n                      }`}\n                    ></div>\n                  </>\n                ) : null}\n              </div>\n            </div>\n\n            <div\n              className={`_indoor_weather_new ${\n                load ? \"__loading_weather_other_new\" : false\n              }`}\n            >\n              <span className=\"__indoor_new_name\">{fanCoolStatus}</span>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"__loading_weather\">\n          {load ? <Loading_devices /> : false}\n        </div>\n\n        {/* status */}\n        <div\n          className={`_weather_container_mode_new ${\n            load ? \"__loading_weather_other_new\" : false\n          }`}\n        >\n          <div className=\"_weather_container_up_down_new\">\n            <div\n              id={idFandUpdated.item_id}\n              className=\"_weather_btn_up_down_new\"\n              onClick={(e) =>\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? upSetpoint()\n                  : false\n              }\n            >\n              <span id={idFandUpdated.item_id} className=\"__btn_up_new\">\n                <i id={idFandUpdated.item_id} class=\"fas fa-chevron-up\"></i>\n              </span>\n            </div>\n            <div\n              id={idFandUpdated.item_id}\n              className=\"_weather_btn_up_down_new\"\n              onClick={(e) =>\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? downSetPoint()\n                  : false\n              }\n            >\n              <span id={idFandUpdated.item_id} className=\"__btn_down_new\">\n                <i id={idFandUpdated.item_id} class=\"fas fa-chevron-down\"></i>\n              </span>\n            </div>\n          </div>\n          <div className=\"container_options_new\">\n            <div\n              id={idModeUpdated.item_id}\n              className={\n                cool ? \"_weather_mode_cool_bg_new\" : \"_weather_mode_cool_new\"\n              }\n              onClick={() =>\n                permissionsRoleUser?.permissionsRole?.AreaDispMan ? on() : false\n              }\n            >\n              COOL\n            </div>\n            <div\n              id={idModeUpdated.item_id}\n              className={\n                heat ? \"_weather_mode_heat_bg_new\" : \"_weather_mode_heat_new\"\n              }\n              onClick={() =>\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? heatMode()\n                  : false\n              }\n            >\n              HEAT\n            </div>\n            <div\n              id={idModeUpdated.item_id}\n              className={\n                auto ? \"_weather_mode_auto_bg_new\" : \"_weather_mode_auto_new\"\n              }\n              onClick={() =>\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? autoMode()\n                  : false\n              }\n            >\n              AUTO\n            </div>\n            <div\n              id={idModeUpdated.item_id}\n              className={\n                offCool ? \"_weather_mode_off_new\" : \"_weather_mode_off_bg_new\"\n              }\n              onClick={() =>\n                permissionsRoleUser?.permissionsRole?.AreaDispMan\n                  ? off()\n                  : false\n              }\n            >\n              OFF\n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\nexport default Vrf;\n","import React, { useState, useEffect } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { Switch } from \"@material-ui/core\";\nimport { styled } from \"@mui/material/styles\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { green } from \"@material-ui/core/colors\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport {\n  handleBatteryLevelColor,\n  handleBatteryLevel,\n} from \"../Temperature/utils/helperBattery\";\nimport Battery_Newlevel from \"../Battery_Newlevel\";\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst StyledIconButton = styled(IconButton)({\n  backgroundColor: \"#EEEEEE\",\n  \"&:hover\": {\n    backgroundColor: \"#CCCCCC\",\n  },\n});\nexport const Lock = ({\n  key,\n  lock,\n  dataSocket,\n  sendMessage,\n  serial,\n  controllerStatus,\n}) => {\n  const { alias, variables, visible, Category } = lock;\n  const { category, sub_category } = Category;\n  const [open, setOpen] = useState(false);\n  const { items, onLine } = variables;\n  const [state, setState] = useState(\n    items?.find((e) => e?.name === \"door_lock\")?.status\n  );\n  const [load, setLoad] = useState(false);\n  const [stateLock, setStateLock] = useState(\n    state === \"secured\" ? true : false\n  );\n  const [previousState, setPreviousState] = useState(\"\");\n\n  const [battery, setBattery] = useState({\n    itemId_Battery: \"\",\n    percentageBattery: \"\",\n  });\n  const idLock = items?.find((i) => i?.name === \"door_lock\")?.item_id;\n  useEffect(() => {\n    if (\n      dataSocket?.category === category &&\n      dataSocket?.event_name === \"door_lock\"\n    ) {\n      const item = items?.find((e) => e.item_id === dataSocket?.itemId);\n      if (item) {\n        setState(dataSocket?.state);\n        setStateLock(dataSocket?.state === \"secured\" ? true : false);\n      }\n    }\n\n    const batteryVariable = variables?.items.find(\n      (item) => item.name === \"battery\"\n    );\n    if (batteryVariable) {\n      setBattery({\n        itemId_Battery: batteryVariable?.item_id,\n        percentageBattery: batteryVariable?.status,\n      });\n    }\n  }, [dataSocket]);\n  const handleCloseBattery = () => {\n    setOpen(!open);\n  };\n  const handlerChanges = () => {\n    setTimeout(() => {\n      setStateLock(!stateLock);\n    }, 500);\n    setPreviousState();\n    setTimeout(() => {\n      // Esto hace parte del modal de confirmación\n      // handleChangeClose();\n      setLoad(true);\n      sendMessage({\n        serial,\n        channel: serial,\n        id: idLock,\n        eventType: \"door_lock\",\n        value: \"unsecured\",\n      });\n      setTimeout(() => {\n        setLoad(false);\n      }, 3000);\n    }, 1000);\n  };\n\n  return (\n    <div className=\"_generic_container\">\n      <div className={`_generics_container_title_status }`}>\n        <div className=\"_generic__title\">\n          <span>{alias}</span>\n        </div>\n        <div className={`${\"_generic__status__alert\"}`}>\n          <div\n            className={`${\n              alias ? \"_generic__status__alert\" : \"__generic_sensor_wifi\"\n            }`}\n          >\n            {!alias ? (\n              <span className=\"__icon_alert_sensor\">\n                <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n              </span>\n            ) : (\n              <div className=\"battery_status\" onClick={handleCloseBattery}>\n                {battery?.percentageBattery && (\n                  <span className=\"battery_percentage\">\n                    {battery?.percentageBattery}%\n                  </span>\n                )}\n\n                <div className=\"battery_icon_container\">\n                  <span\n                    className={handleBatteryLevelColor(\n                      battery?.percentageBattery\n                    )}\n                  >\n                    {handleBatteryLevel(battery?.percentageBattery)}\n                  </span>\n                </div>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n      <div className=\"_generic_container_clasification\">\n        <div\n          className={`_generic_clasification ${\n            load ? \"__loading_clasification\" : false\n          }`}\n        >\n          <span>\n            <img\n              src={\n                stateLock ? Devices.DOOR_BLOQUEADO : Devices.DOOR_DESBLOQUEADO\n              }\n              alt=\"clasification\"\n              width=\"60\"\n              height=\"60\"\n            />\n          </span>\n        </div>\n        <div className=\"__loading_devices\">\n          {load ? <Loading_devices /> : false}\n        </div>\n        <div\n          className={`_generic_toggle row-decoration ${\n            load ? \"__loading_toogle\" : false\n          }`}\n        >\n          <div>\n            <ThemeProvider theme={innerTheme}>\n              <Switch\n                size=\"medium\"\n                checked={stateLock}\n                onClick={handlerChanges}\n              />\n            </ThemeProvider>\n            <br></br>\n            {stateLock ? (\n              <span>Bloqueado</span>\n            ) : (\n              <span>Desbloqueado</span>\n            )}{\" \"}\n          </div>\n          <div className=\"_generic_clasification\"></div>\n        </div>\n      </div>\n      <Battery_Newlevel\n        id_Battery={battery?.itemId_Battery}\n        handleCloseBattery={handleCloseBattery}\n        name={alias}\n        openBattery={open}\n      />\n    </div>\n  );\n};\n","// Lib\nimport React, { useState, useEffect, useRef, useContext } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { useParams } from \"react-router\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport html2canvas from \"html2canvas\";\nimport { useHistory } from \"react-router-dom\";\n\n// Services\nimport { GET_ALL_DEVICES } from \"../../../controllers/devicesController\";\n\n// MAterial Styles\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Slide from \"@material-ui/core/Slide\";\n\n//Material components\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport MessageError from \"../../../components/message/MessageError\";\nimport MessageSuccess from \"../../../components/message/MessageSuccess\";\nimport MessageWarning from \"../../../components/message/MessageWarning\";\n\nimport Header from \"./components/Header\";\nimport TemperatureContainer from \"./components/Temperature/Temperature\";\n\nimport {\n  extrationAire,\n  useDevices,\n  useExtrationDevices,\n} from \"./Hooks/useDevices\";\nimport Swicth from \"./components/Swicth/Swicth\";\nimport NewDoorSensor from \"./components/sensors/NewDoorSensor\";\nimport NewHSC from \"./components/plugins/HSC\";\nimport useSocket from \"./Hooks/useWebSocket\";\nimport NewMotionSensor from \"./components/sensors/NewMotionSensor\";\nimport Thermostat from \"./components/Temperature/Thermostat\";\nimport Vrf from \"./components/Temperature/Vrf/Vrf\";\nimport CurtainSwitch from \"../../../components/devices/CurtainSwitch/CurtainSwitch\";\nimport { ExtractTypeGateway } from \"../../../utils/helpers\";\nimport {\n  spliceDevicesData,\n  renderNewDevices,\n  getSocket,\n  IsThereVRF,\n  SocketVRF,\n} from \"./helperDevices\";\nimport Loading from \"../../../components/loading/Loading\";\nimport Construction from \"../../../components/loading/Construction\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { Lock } from \"./components/doorlook/Lock\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"relative\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n  graphic: {\n    marginTop: 30,\n  },\n  image: {\n    position: \"relative\",\n    height: 200,\n    [theme.breakpoints.down(\"xs\")]: {\n      width: \"100% !important\", // Overrides inline-style\n      height: 100,\n    },\n    \"&:hover, &$focusVisible\": {\n      zIndex: 1,\n      \"& $imageBackdrop\": {\n        opacity: 0.15,\n      },\n      \"& $imageMarked\": {\n        opacity: 0,\n      },\n      \"& $imageTitle\": {\n        border: \"4px solid currentColor\",\n      },\n    },\n  },\n  focusVisible: {},\n  imageButton: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.common.white,\n  },\n  imageSrc: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center 40%\",\n  },\n  imageBackdrop: {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    backgroundColor: theme.palette.common.black,\n    opacity: 0.4,\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  imageTitle: {\n    position: \"relative\",\n    padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n      theme.spacing(1) + 6\n    }px`,\n  },\n  imageMarked: {\n    height: 3,\n    width: 18,\n    backgroundColor: theme.palette.common.white,\n    position: \"absolute\",\n    bottom: -2,\n    left: \"calc(50% - 9px)\",\n    transition: theme.transitions.create(\"opacity\"),\n  },\n  table: {\n    minWidth: 700,\n  },\n  info: {\n    marginBottom: 60,\n  },\n  tab: {\n    marginTop: 60,\n  },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst NewDevices = () => {\n  const { t } = useTranslation();\n  const { id } = useParams();\n  const { data, loading, error, refetch } = useQuery(GET_ALL_DEVICES, {\n    variables: {\n      RoomId: parseInt(id, 10),\n      ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n      typeGateway: ExtractTypeGateway(),\n    },\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: true,\n  });\n\n  const {\n    successMessage,\n    setSuccessMessage,\n    errorMessage,\n    setErrorMessage,\n    permissionsRoleUser,\n  } = useContext(AuthContext);\n\n  const areaName = data?.getAllDevices?.name;\n  const devices = data?.getAllDevices;\n  const dataProject = data?.getProjectByIdHeader;\n  const { switches } = useExtrationDevices(data?.getAllDevices?.Device);\n  const { airs } = useExtrationDevices(data?.getAllDevices?.Device);\n  const { sensorsDoor } = useExtrationDevices(data?.getAllDevices?.Device);\n  const { sensorsMotion } = useExtrationDevices(data?.getAllDevices?.Device);\n  const { plugins } = useExtrationDevices(data?.getAllDevices?.Device);\n  const { curtainSwitch } = useExtrationDevices(data?.getAllDevices?.Device);\n  const dataDevices = switches\n    ?.concat(sensorsDoor)\n    ?.concat(sensorsMotion)\n    ?.concat(curtainSwitch);\n  const { vrf } = useExtrationDevices(data?.getAllDevices.Device);\n  const { lock } = useExtrationDevices(data?.getAllDevices?.Device);\n  const allVrf = IsThereVRF(data?.getAllDevices.Device);\n  const serial = devices?.Controller?.serial;\n  const controllerStatus = devices?.Controller?.online;\n  const socket = getSocket();\n\n  // WebSocket\n  const {\n    REACT_APP_SOCKET_STAGING_NEWCONTROLLER,\n    REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER,\n    REACT_APP_SOCKET_DEVELOP_NEWCONTROLLER,\n  } = process.env;\n\n  const url = \"ws://10.0.5.101:8080\";\n  const { client, sendMessage, dataSocket } = useSocket(\n    REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER,\n    serial\n  );\n\n  if (!data || loading) {\n    return (\n      <div>\n        <Loading />\n      </div>\n    );\n  }\n\n  if (error) {\n    return <Construction />;\n  }\n\n  return (\n    <>\n      <div className=\"_devices_container\">\n        {data && data?.getAllDevices?.Controller?.online ? (\n          <></>\n        ) : (\n          <div className=\"_label_offline\">\n            <span className=\"_label_offline_container\">\n              <span className=\"_icon_label_offline\">\n                <i className=\"fas fa-exclamation-triangle\"></i>\n              </span>\n              <span className=\"_title_label_offline\">\n                {t(\"VIEW_AREA.COMPONENT_HEADER_STATUS_NOTIFICATION\")}\n              </span>\n            </span>\n          </div>\n        )}\n        <Header\n          data={data}\n          devices={devices}\n          project={dataProject}\n          refetch={refetch}\n        />\n        <div className=\"_container_devices_all\">\n          {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n            permissionsRoleUser?.permissionsRole?.AreaDisp &&\n            plugins?.map((i) => (\n              <NewHSC\n                controllerStatus={controllerStatus}\n                dataSocket={dataSocket}\n                hsc={i}\n                project={dataProject}\n                serial={serial}\n                sendMessage={sendMessage}\n              />\n            ))}\n          {permissionsRoleUser?.permissionsRole?.AreaDisp &&\n            permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n            airs?.map((i, key) => (\n              <TemperatureContainer\n                areaName={areaName}\n                allAirs={i}\n                controllerStatus={controllerStatus}\n                dataSocket={dataSocket}\n                key={key}\n                refetch={refetch}\n                sendMessage={sendMessage}\n                serial={serial}\n              />\n            ))}\n\n          {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n          permissionsRoleUser?.permissionsRole?.AreaDisp\n            ? vrf?.map((i, key) => (\n                <Vrf\n                  dataSocket={socket}\n                  key={key}\n                  sendMessage={socket}\n                  serial={serial}\n                  vrf={i}\n                />\n              ))\n            : null}\n\n          {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n          permissionsRoleUser?.permissionsRole?.AreaDisp\n            ? lock?.map((i, key) => (\n                <Lock\n                  key={key}\n                  lock={i}\n                  dataSocket={dataSocket}\n                  sendMessage={sendMessage}\n                  serial={serial}\n                  controllerStatus={controllerStatus}\n                />\n              ))\n            : null}\n\n          {renderNewDevices(spliceDevicesData(dataDevices, 2), {\n            ...{\n              serial,\n              sendMessage,\n              dataSocket,\n              controllerStatus,\n              permissionsRoleUser,\n            },\n          })}\n        </div>\n        <MessageSuccess />\n        <MessageError />\n        <MessageWarning />\n      </div>\n    </>\n  );\n};\n\nexport default NewDevices;\n","//React Hooks\nimport React, { useState } from \"react\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport EditOutlinedIcon from \"@mui/icons-material/EditOutlined\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport TextField from \"@mui/material/TextField\";\n\n//Apollo hooks & Queries\nimport { useMutation } from \"@apollo/client\";\nimport { UPDATE_CONTROLLER } from \"../../controllers/roomControllers\";\n\nimport { useProjectUser } from \"../../views/private/projectsManagement/helpers/hooks/useProject\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const ModelEditController = ({ open, handlerClose, data, refetch }) => {\n  const customGreen = \"#acf6ac\";\n  const theme = createTheme({\n    palette: {\n      success: {\n        main: customGreen,\n      },\n    },\n  });\n\n  const projects = useProjectUser()?.projectsNameId;\n  const projectIdAssociated = localStorage.getItem(\"id\");\n  const associatedProyect = projects?.find(\n    (item) => parseInt(item.id) === parseInt(projectIdAssociated)\n  );\n  \n  const [selectedProject, setSelectedProject] = useState(\"\");\n  const { t } = useTranslation();\n  const [updatedController] = useMutation(UPDATE_CONTROLLER);\n  const [editName, setEditName] = useState(false);\n  const [editProject, setEditProject] = useState(false);\n  const [errors, setErrors] = useState({ name: false, projectId: false });\n  const [dataEdit, setDataEdit] = useState({\n    name: data?.item?.name,\n    projectId: Number(projectIdAssociated),\n  });\n\n  const handlerEditName = () => {\n    setEditName(!editName);\n  };\n  const handlerEditProject = () => {\n    setEditProject(!editProject);\n  };\n\n  const handlerEditTextName = (e) => {\n    setDataEdit({ ...dataEdit, name: e.target.value });\n    setErrors((prev) => ({ ...prev, name: false }));\n  };\n\n  const handlerEditIdProject = (event, newValue) => {\n    const value = parseInt(newValue?.id);\n    setSelectedProject(newValue);\n    setDataEdit({ ...dataEdit, projectId: value });\n    setErrors((prev) => ({ ...prev, projectId: false }));\n  };\n\n  const validateFields = () => {\n    const nameError = dataEdit.name.trim() === \"\";\n    const projectIdError = !dataEdit.projectId;\n\n    setErrors({ name: nameError, projectId: projectIdError });\n    return !(nameError || projectIdError);\n  };\n\n  const activeButton = (e) => {\n    const name = dataEdit?.name;\n    const projectId = dataEdit?.projectId;\n    if (\n      (name !== data?.item?.name ||\n        projectId !== Number(projectIdAssociated)) &&\n      selectedProject !== null\n    ) {\n      return true;\n    } else if (name === \"\") {\n      return false;\n    }\n  };\n\n  const updated = () => {\n    if (!validateFields()) {\n      return console.error(\"error no estan validados los campos\");\n    }\n    try {\n      updatedController({\n        variables: {\n          updateControllerId: data?.item?.id,\n          typeGateway: data?.item?.typeGateway,\n          data: {\n            name: dataEdit?.name,\n            ProjectId: dataEdit?.projectId,\n          },\n        },\n      })\n        .then((resul) => {\n          if (resul.data && resul.data.error === \"validation error\") {\n            console.error(\"Error de validacion\", resul.data.message);\n          } else {\n            setTimeout(() => {\n              refetch();\n            }, 1000);\n          }\n        })\n        .catch((err) => {\n          console.log(err);\n        });\n    } catch (err) {\n      console.log(err);\n    }\n  };\n  const isValid = (value) =>\n    value !== \"\" && value !== undefined && value !== null;\n\n  return (\n    <Dialog\n      open={open}\n      PaperProps={{\n        sx: {\n          display: \"flex\",\n          borderRadius: \"8px\",\n          width: \"35%\",\n          height: \"auto\",\n          [theme.breakpoints.down(\"md\")]: {\n            width: \"45%\",\n          },\n          [theme.breakpoints.down(\"sm\")]: {\n            width: \"90%\",\n          },\n        },\n      }}\n    >\n      <DialogTitle\n        sx={{\n          display: \"flex\",\n          justifyContent: \"center\",\n          backgroundColor: \"#2EB142\",\n          color: \"#FFFFFF\",\n          lineHeight: \"2.6\",\n          padding: \"5px 5px 5px 40px\",\n        }}\n      >\n        <span\n          style={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            width: \"100%\",\n            fontFamily: \"Montserrat, sans-serif\",\n            fontSize: \"auto\",\n            fontWeight: \"bold\",\n          }}\n        >\n          {t(\"COMPONENT_EDIT_CONTROLLER.TITLE\")}\n        </span>\n\n        <IconButton\n          onClick={() => {\n            handlerClose();\n            setEditName(false);\n            setEditProject(false);\n            setSelectedProject(null);\n          }}\n        >\n          <CloseIcon sx={{ color: \"#ffff\" }} />\n        </IconButton>\n      </DialogTitle>\n      <DialogContent\n        sx={{\n          display: \"flex\",\n          flexDirection: \"column\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          gap: \"25px\",\n          padding: \"20px 24px\",\n        }}\n      >\n        <div\n          style={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"15px\",\n            width: \"90%\",\n            fontFamily: \"Montserrat, sans-serif\",\n            fontSize: \"18px\",\n            marginTop: \"20px\",\n          }}\n        >\n          <span>\n            <b>Id:</b> {data?.item?.id}\n          </span>\n\n          <span>\n            <b>Serial:</b> {data?.item?.serial}\n          </span>\n\n          {isValid(data?.item?.firmware) && (\n            <span>\n              <b>Firmware:</b> {data?.item?.firmware}\n            </span>\n          )}\n          {isValid(data?.item?.model) && (\n            <span>\n              <b>Model:</b> {data?.item?.model}\n            </span>\n          )}\n\n          <span>\n            <b>TypeGateway:</b> {data?.item?.typeGateway}\n          </span>\n\n          <div\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n              gap: \"10px\",\n            }}\n          >\n            <TextField\n              helperText={\n                errors.name && t(\"COMPONENT_EDIT_CONTROLLER.ALERT_TEXT\")\n              }\n              variant=\"outlined\"\n              size=\"small\"\n              InputProps={{\n                sx: { borderRadius: \"8px\" },\n              }}\n              sx={{ width: \"100%\" }}\n              placeholder=\"Nombre\"\n              defaultValue={data?.item?.name}\n              disabled={!editName}\n              label={t(\"COMPONENT_EDIT_CONTROLLER.CONTROLLER_NAME\")}\n              onChange={handlerEditTextName}\n            />\n            <EditOutlinedIcon\n              onClick={handlerEditName}\n              sx={{\n                placeContent: \"center\",\n                cursor: \"pointer\",\n                color: \"#909090\",\n                \"&:hover\": { color: \"#626262\" },\n              }}\n            />\n          </div>\n\n          <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n            <Autocomplete\n              id=\"size-small-outlined\"\n              size=\"small\"\n              sx={{ width: \"100%\" }}\n              disabled={!editProject}\n              options={projects}\n              getOptionLabel={(option) => option?.name}\n              defaultValue={associatedProyect}\n              onChange={(event, newValue) =>\n                handlerEditIdProject(event, newValue)\n              }\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label={t(\"COMPONENT_EDIT_CONTROLLER.CHANGE_CONTROLLER\")}\n                  disabled={!editProject}\n                />\n              )}\n            />\n            <EditOutlinedIcon\n              onClick={handlerEditProject}\n              sx={{\n                placeContent: \"center\",\n                cursor: \"pointer\",\n                color: \"#909090\",\n                \"&:hover\": { color: \"#626262\" },\n              }}\n            />\n          </div>\n          <ThemeProvider theme={theme}>\n            <Button\n              color=\"success\"\n              disabled={activeButton() === true ? false : true}\n              onClick={updated}\n              sx={{\n                width: \"100%\",\n                padding: \"7px\",\n                color: \"#000\",\n                borderRadius: \"8px\",\n                lineHeight: \"18px\",\n              }}\n              variant=\"contained\"\n            >\n              {t(\"COMPONENT_EDIT_CONTROLLER.BUTTON\")}\n            </Button>\n          </ThemeProvider>\n        </div>\n      </DialogContent>\n    </Dialog>\n  );\n};\n","import React, { useContext, useState } from \"react\";\nimport { last_conection } from \"../../utils/helpers.js\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport { Tooltip } from \"@mui/material\";\nimport { ModelEditController } from \"./ModelEditController.jsx\";\nimport { AuthContext } from \"../../context/AuthProvider.js\";\n\nconst Controller = (props) => {\n  const [modalController, setModalController] = useState(false);\n  const { t } = useTranslation();\n  const { permissionsRoleUser } = useContext(AuthContext);\n  const handlerOpenAndCloseModalController = () => {\n    setModalController(!modalController);\n  };\n  return (\n    <>\n      <div className=\"__control_container\">\n        {permissionsRoleUser?.permissionsRole?.CtlEdit ? (\n          <div\n            className={`__control_container_title ${\n              props?.item?.online ? \"__controller_on\" : \"__controller_off\"\n            }`}\n          >\n            <Tooltip\n              title={t(\"VIEW_CONTROLLERS.MORE_TOOLTIP\")}\n              placement=\"top\"\n              className=\"__controller_edit\"\n              onClick={handlerOpenAndCloseModalController}\n            >\n              <InfoOutlinedIcon\n                className=\"__controller_edit\"\n                onClick={handlerOpenAndCloseModalController}\n              />\n            </Tooltip>\n            <div className=\"__control_serial\">{props?.item?.name}</div>\n            <div className=\"__control_title\">{`${props?.item?.serial}`}</div>\n          </div>\n        ) : (\n          <>\n            <div\n              className={`__control_container_title ${\n                props?.item?.online ? \"__controller_on\" : \"__controller_off\"\n              }`}\n            >\n              <div className=\"__control_serial\">{props?.item?.name}</div>\n              <div className=\"__control_title\">{`${props?.item?.serial}`}</div>\n            </div>\n          </>\n        )}\n\n        <div className=\"__control_container_device_areas\">\n          <div className=\"__control_items_name\">\n            <span>{t(\"VIEW_CONTROLLERS.AREAS\")}</span>\n          </div>\n          <div className=\"__control_items_name\">\n            <span>{t(\"VIEW_CONTROLLERS.DEVICES\")}</span>\n          </div>\n          <div className=\"__control_items_device_areas\">\n            <span>{props?.item?.num_rooms}</span>\n          </div>\n          <div className=\"__control_items_device_areas\">\n            <span>{props?.item?.num_devices}</span>\n          </div>\n        </div>\n        <div className=\"__control_container_last_update\">\n          <div className=\"__control_last_update\">\n            <span>{`${last_conection(props?.item?.online, t)}`}</span>\n          </div>\n        </div>\n        <ModelEditController\n          open={modalController}\n          data={props}\n          handlerClose={handlerOpenAndCloseModalController}\n          refetch={props.refetch}\n        />\n      </div>\n    </>\n  );\n};\n\nexport default Controller;\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_CONTROLLERS = gql`\n  query ($ProjectId: Int!) {\n    getProjectByIdHeader(ProjectId: $ProjectId),\n    getAllControllers(ProjectId: $ProjectId)\n  }\n`;\n","import gql from \"graphql-tag\";\n\nexport const CREATE_VIRTUAL_CONTROLLER = gql`\n  mutation CreateNewController($data: [VirtualControllers]) {\n  CreateNewController(data: $data)\n}\n`;","//React Hooks\nimport React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n//Material UI Components\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport MuiAlert from \"@mui/lab/Alert\";\nimport PlaylistAddCircleIcon from \"@mui/icons-material/PlaylistAddCircle\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//GraphQl Queries\nimport { useMutation } from \"@apollo/client\";\nimport { CREATE_VIRTUAL_CONTROLLER } from \"../controller\";\n\nconst customGreen = \"#acf6ac\";\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n  },\n});\n\nfunction VirtualControllerCreationButton({ refetch }) {\n  const [open, setOpen] = React.useState(false);\n  const [openSnack, setOpenSnack] = React.useState(false);\n  const [snackMessage, setSnackMessage] = React.useState(\"\");\n  const [snackSeverity, setSnackSeverity] = React.useState(\"success\");\n  const [nameController, setNameController] = React.useState(\"\");\n  const { permissionsRoleUser } = React.useContext(AuthContext);\n\n  const handleClose = () => {\n    setOpen(false);\n  };\n\n  const handleCloseSnack = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setOpenSnack(false);\n  };\n\n  const location = useLocation();\n  const isControllerView = /^\\/app\\/controllers\\/\\d+$/.test(location.pathname);\n  const [createVirtualController] = useMutation(CREATE_VIRTUAL_CONTROLLER);\n\n  const handleSubmit = async () => {\n    if (nameController) {\n      try {\n        await createVirtualController({\n          variables: {\n            data: [\n              {\n                name: nameController,\n                projectId: parseInt(localStorage.getItem(\"id\")),\n              },\n            ],\n          },\n        });\n        setSnackMessage(\"Creación Exitosa\");\n        setSnackSeverity(\"success\");\n        setOpenSnack(true);\n        handleClose();\n        if (refetch) {\n          refetch();\n        }\n      } catch (err) {\n        setSnackMessage(\"No fue posible crear el controlador\");\n        setSnackSeverity(\"error\");\n        setOpenSnack(true);\n      }\n    }\n  };\n\n  return (\n    <React.Fragment>\n      {permissionsRoleUser?.permissionsRole?.CtlCreateVirtual ? (\n        <>\n          <Snackbar\n            open={openSnack}\n            autoHideDuration={4000}\n            onClose={handleCloseSnack}\n          >\n            <Alert severity={snackSeverity}>{snackMessage}</Alert>\n          </Snackbar>\n          {isControllerView && (\n            <button\n              className=\"create_controller_button\"\n              onClick={() => setOpen(true)}\n            >\n              Crear controlador virtual\n              <PlaylistAddCircleIcon />\n            </button>\n          )}\n          <Dialog\n            open={open}\n            onClose={handleClose}\n            PaperProps={{\n              sx: {\n                display: \"flex\",\n                borderRadius: \"8px\",\n                width: \"20%\",\n                height: \"auto\",\n                [theme.breakpoints.down(\"xl\")]: {\n                  width: \"25%\",\n                },\n                [theme.breakpoints.down(\"lg\")]: {\n                  width: \"35%\",\n                },\n                [theme.breakpoints.down(\"md\")]: {\n                  width: \"55%\",\n                },\n                [theme.breakpoints.down(\"sm\")]: {\n                  width: \"90%\",\n                },\n              },\n            }}\n          >\n            <DialogTitle\n              sx={{\n                display: \"flex\",\n                justifyContent: \"center\",\n                backgroundColor: \"#2EB142\",\n                color: \"#FFFFFF\",\n                lineHeight: \"2.6\",\n                padding: \"5px 5px 5px 40px\",\n                [theme.breakpoints.down(\"sm\")]: {\n                  padding: \"5px 5px 5px 20px\",\n                },\n              }}\n            >\n              <span\n                style={{\n                  display: \"flex\",\n                  justifyContent: \"center\",\n                  width: \"100%\",\n                  height: \"25%\",\n                  fontFamily: \"Montserrat, sans-serif\",\n                  fontSize: \"auto\",\n                  fontWeight: \"bold\",\n                }}\n              >\n                Creación Controlador\n              </span>\n              <IconButton onClick={handleClose}>\n                <CloseIcon sx={{ color: \"#ffff\" }} />\n              </IconButton>\n            </DialogTitle>\n            <DialogContent\n              sx={{\n                display: \"flex\",\n                flexDirection: \"column\",\n                gap: \"25px\",\n                padding: \"20px 24px\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n              }}\n            >\n              <div\n                style={{\n                  display: \"flex\",\n                  flexDirection: \"column\",\n                  gap: \"25px\",\n                  width: \"90%\",\n                  fontFamily: \"Montserrat, sans-serif\",\n                  fontSize: \"18px\",\n                  marginTop: \"15px\",\n                }}\n              >\n                <TextField\n                  onChange={(event) => setNameController(event.target.value)}\n                  size=\"small\"\n                  InputProps={{\n                    sx: { borderRadius: \"8px\", width: \"100%\" },\n                  }}\n                  id=\"outlined-basic\"\n                  label=\"Ingrese nombre del controlador\"\n                  variant=\"outlined\"\n                />\n                <button\n                  style={{\n                    width: \"100%\",\n                    height: \"35px\",\n                    borderRadius: \"6px\",\n                    border: \"none\",\n                    backgroundColor: \"#B2E5B7\",\n                    fontFamily: \"Montserrat, sans-serif\",\n                    fontWeight: \"bold\",\n                    color: \"black\",\n                    border: \"solid #67A46D\",\n                    cursor: \"pointer\",\n                  }}\n                  onClick={handleSubmit}\n                >\n                  Crear controlador\n                </button>\n              </div>\n            </DialogContent>\n          </Dialog>\n        </>\n      ) : null}\n    </React.Fragment>\n  );\n}\n\nexport default VirtualControllerCreationButton;\n","import React, { useEffect, useContext } from \"react\";\nimport ControllerCard from \"../../../components/controllers/Controller\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ALL_CONTROLLERS } from \"../../../controllers/controllerControllers\";\nimport { useParams } from \"react-router\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport VirtualControllerCreationButton from \"./components/VirtualControllerCreationButton\";\n\nconst Controllers = () => {\n  const { id } = useParams();\n  const { permissionsRoleUser } = useContext(AuthContext);\n  const {\n    data: dataController,\n    loading,\n    refetch,\n  } = useQuery(GET_ALL_CONTROLLERS, {\n    variables: { ProjectId: parseInt(id, 10) },\n    fetchPolicy: \"no-cache\",\n    notifyOnNetworkStatusChange: true,\n  });\n\n\n  if (loading) {\n    return (\n      <div style={{}}>\n        <Loading />\n      </div>\n    );\n  }\n\n  return (\n    <>\n      <div className=\"_control_container\">\n        {permissionsRoleUser?.permissionsRole?.CtlVer ? (\n          <>\n            <div className=\"__controller_container__\">\n              <div className=\"__controller_container_logo__\">\n                <img\n                  src={dataController?.getProjectByIdHeader.img}\n                  className=\"__controller__img\"\n                  alt=\"Logo\"\n                  width=\"180\"\n                  height=\"180\"\n                />\n              </div>\n              <div className=\"_control_container_projects\">\n                <ProjectCardAreaControl\n                  data={dataController?.getProjectByIdHeader}\n                  AddController={<VirtualControllerCreationButton  refetch={refetch} />}\n                \n                />\n              </div>\n            </div>\n            <div className=\"_control_container_controllers_all\">\n              {dataController?.getAllControllers.map((item, key) => (\n                <ControllerCard {...key} item={item} refetch={refetch}/>\n              ))}\n            </div>\n          </>\n        ) : null}\n      </div>\n    </>\n  );\n};\n\nexport default Controllers;\n","// React hooks\nimport React, {\n  forwardRef,\n  useContext,\n  useEffect,\n  useImperativeHandle,\n  useRef,\n  useState,\n} from \"react\";\n\n//React styles\nimport \"react-date-range/dist/styles.css\";\nimport \"react-date-range/dist/theme/default.css\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider.js\";\n\n//Material UI\nimport Box from \"@mui/material/Box\";\n// import { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\nimport {\n  Paper,\n  TableContainer,\n  Table,\n  TableHead,\n  TableRow,\n  TableBody,\n  TableCell,\n} from \"@material-ui/core\";\nimport Tab from \"@mui/material/Tab\";\nimport TabContext from \"@mui/lab/TabContext\";\nimport TabList from \"@mui/lab/TabList\";\nimport TabPanel from \"@mui/lab/TabPanel\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Apollo hooks and Queries\nimport { useQuery, useLazyQuery, useMutation } from \"@apollo/client\";\nimport { GET_PHASES_MEASURER_REPORT } from \"../../controllers/measurersController\";\nimport { PDF_MEASURE_PHASES } from \"../../controllers/pdfControllers\";\n\n//Components\nimport Loading from \"../loading/Loading\";\n// import DateCustom from \"../dates/DateCustom\";\nimport { ReactDateRangePicker } from \"../reactDateRange/index.jsx\";\n\n//ReactDateRange\nimport { addDays } from \"date-fns\";\n\n//PDF\nimport html2canvas from \"html2canvas\";\n\n//Helper functions\nimport {\n  sum_of_the_kwh,\n  date_of_the_kwh,\n  round_digits,\n  calc_date_range,\n  date_last,\n  defice_toolTip_date,\n  define_time_zone,\n  convert_time_measurergeneral,\n  handlerConvertTimeMeasurePhases,\n  dateRangeButton,\n  calculatedMinParameter,\n  calculatedMaxParameter,\n  roundTotalBy,\n  sumTotalBy,\n  formatDateLocal,\n} from \"../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst MeasurerPhases = forwardRef((props, ref) => {\n  const { t } = useTranslation();\n  const [pdfGenerator] = useMutation(PDF_MEASURE_PHASES);\n  const [basePdf, setBasePdf] = React.useState();\n  const {\n    dateReport,\n    setOpenDateCustom,\n    setDateReport,\n    rangeTable,\n    graphic,\n    setGraphic,\n    setRangeTable,\n    setLoadingPdf,\n    pie,\n    setPie,\n    globalCalendarDay,\n    setIdHeaderOcupation,\n  } = useContext(AuthContext);\n  const [value, setValue] = React.useState(\"1\");\n\n  const handleChange = (event, newValue) => {\n    setValue(newValue);\n  };\n  const { measurer, timeZone } = props;\n\n  const [date_range, setDateRange] = useState([]);\n  const [dayActual, setDayActual] = useState(new Date().getTime());\n  const [parameterMax, setParameterMax] = useState(\n    calculatedMaxParameter(globalCalendarDay, timeZone)\n  );\n  const [parameterMin, setParameterMin] = useState(\n    calculatedMinParameter(globalCalendarDay, timeZone)\n  );\n  const [dateMax, setDateMax] = useState();\n  const [dateMin, setDateMin] = useState();\n  const printRef = React.useRef();\n  const printRefP = React.useRef();\n\n  const [getPhasesMeasure, { data, loading, error }] = useLazyQuery(\n    GET_PHASES_MEASURER_REPORT\n  );\n\n  useEffect(() => {\n    if (globalCalendarDay) {\n      handlerEpochTimeConverter();\n    }\n  }, [globalCalendarDay]);\n\n  const handlerEpochTimeConverter = () => {\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n    let day_time_zone =\n      globalCalendarDay.toString().substring(0, 16) + \"00:00:00 GMT\" + timeZone;\n\n    let day_time_end_zone =\n      globalCalendarDay.toString().substring(0, 16) + \"23:59:59 GMT\" + timeZone;\n\n    let param = globalCalendarDay.toString().substring(0, 16) + \"00:00:00 GMT\";\n    let param_end =\n      globalCalendarDay.toString().substring(0, 16) + \"23:59:59 GMT\";\n\n    let tempPara =\n      new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n    let tmpDate = new Date(day_time_zone).getTime();\n\n    const temEndDate = new Date(day_time_end_zone).getTime();\n\n    //openDateCusom\n    // setOpenDateCustom(false);\n    //Parámetro inicial\n    setParameterMin(tempPara);\n    //Fecha inicial\n    setDateMin(tmpDate);\n    //parámetro final\n    setParameterMax(temEndDate);\n    //Fecha final\n    setDateMax(temEndDate);\n    //range\n    // setDateRange(date_last(calc_date_range(dateReport)));\n    //\n    // setRangeTable(dateReport);\n    // setDayActual(dateReport[0]?.startDate?.getTime());\n    handlerIonLabsMeasurerReport(tempPara, temEndDate);\n  };\n\n  const handlerIonLabsMeasurerReport = (tempPara, temEndDate) => {\n    getPhasesMeasure({\n      variables: {\n        ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n        date_range: date_last(calc_date_range(globalCalendarDay)),\n        id_parent: parseFloat(measurer?.zwaveId),\n        start_time: tempPara,\n        end_time: temEndDate,\n        time_zone: String(timeZone),\n      },\n      fetchPolicy: \"no-cache\",\n    });\n  };\n\n  // const { data, loading } = useQuery(GET_PHASES_MEASURER_REPORT, {\n  //   variables: {\n  //     ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n  //     date_range: date_range,\n  //     id_parent: parseFloat(measurer.zwaveId),\n  //     start_time: parameterMin,\n  //     end_time: parameterMax,\n  //     time_zone: String(timeZone),\n  //   },\n  //   fetchPolicy: \"no-cache\",\n  // });\n\n  // useEffect(() => {\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let day_time_zone =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     dateReport[0]?.endDate?.toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n  //   let param_end =\n  //     dateReport[0]?.endDate?.toString().substring(0, 16) + \"23:59:59 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n  //   /* getPhasesMeasure({\n  //     variables: {\n  //       ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n  //       date_range: date_last(calc_date_range(dateReport)),\n  //       id_parent: parseFloat(measurer.zwaveId),\n  //       start_time: calculatedMinParameter(dateReport, timeZone),\n  //       end_time: calculatedMaxParameter(dateReport, timeZone),\n  //     },\n  //     fetchPolicy: \"no-cache\",\n  //   }) */ //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //range\n  //   setDateRange(date_last(calc_date_range(dateReport)));\n  //   setRangeTable(dateReport);\n  // }, []);\n\n  // const back = () => {\n  //   const backday = dayActual - 86400000;\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   const new_backday = new Date(backday);\n  //   let day_time_zone =\n  //     new Date(new_backday).toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     new Date(new_backday).toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     new Date(new_backday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   setDateReport([\n  //     {\n  //       startDate: new_backday,\n  //       endDate: new_backday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n\n  //   //openDateCusom\n  //   setOpenDateCustom(false);\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //date ranges\n  //   //\n  //   setRangeTable([\n  //     {\n  //       startDate: new_backday,\n  //       endDate: new_backday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n  //   setDateRange(dateRangeButton(new_backday));\n  //   setDayActual(backday);\n  // };\n\n  // const next = () => {\n  //   const nextday = dayActual + 86400000;\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   const new_nextday = new Date(nextday);\n  //   let day_time_zone =\n  //     new Date(new_nextday).toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     new Date(new_nextday).toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     new Date(new_nextday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   setDateReport([\n  //     {\n  //       startDate: new_nextday,\n  //       endDate: new_nextday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n\n  //   //openDateCusom\n  //   setOpenDateCustom(false);\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //date ranges\n  //   setRangeTable([\n  //     {\n  //       startDate: new_nextday,\n  //       endDate: new_nextday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n  //   setDateRange(dateRangeButton(new_nextday));\n  //   setDayActual(nextday);\n  // };\n\n  useEffect(() => {\n    if (graphic) {\n      if (\n        date_last(calc_date_range(globalCalendarDay)).length < 1 ||\n        date_last(calc_date_range(globalCalendarDay)).length == 1\n      ) {\n        imagePie();\n      }\n      if (date_last(calc_date_range(globalCalendarDay)).length > 1) {\n        dataPdf();\n      }\n    }\n  }, [graphic]);\n\n  useEffect(() => {\n    if (pie) {\n      dataPdf();\n    }\n  }, [pie]);\n\n  useEffect(() => {\n    if (basePdf) {\n      decodePdf();\n    }\n  }, [basePdf]);\n\n  const decodePdf = () => {\n    const linkSource = `data:application/pdf;base64,${basePdf}`;\n    const downloadLink = document.createElement(\"a\");\n    const fileName = \"Reporte por fases.pdf\";\n    downloadLink.href = linkSource;\n    downloadLink.download = fileName;\n    downloadLink.click();\n    /* let pdfWindow = window.open(\"\");\n    pdfWindow.document.write(\n      \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n        encodeURI(basePdf) +\n        \"'></iframe>\"\n    ); */\n    setLoadingPdf(false);\n    setGraphic(\"\");\n    setPie(\"\");\n    setBasePdf(\"\");\n  };\n\n  const imageGraphic = async () => {\n    const element = printRef.current;\n    const canvas = await html2canvas(element);\n    const data = canvas.toDataURL(\"image/jpg\");\n    setGraphic(data.slice(22));\n    //var cadena = data.slice(22);\n    /* if (typeof link.download === \"string\") {\n      link.href = data;\n      link.download = \"imgGraph.jpg\";\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }  */\n    /* imagePie() */\n  };\n\n  const imagePie = async () => {\n    const elementTwo = printRefP.current;\n    const canvas = await html2canvas(elementTwo);\n    const data = canvas.toDataURL(\"image/jpg\");\n    //const link = document.createElement(\"a\");\n    await setPie(data.slice(22));\n    /* else {\n\n    /* if (typeof link.download === \"string\") {\n      link.href = data;\n      setPie(data);\n      link.download = \"image.jpg\";\n\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    } */\n  };\n\n  // const seeData = () => {\n  //   setLoadingPdf(false);\n  //   setGraphic(\"\");\n  //   setPie(\"\");\n  // };\n\n  useImperativeHandle(ref, () => ({\n    async measurersPhases() {\n      setLoadingPdf(true);\n      await imageGraphic();\n      //seeData();\n      //setLoadingPdf(true);\n    },\n  }));\n\n  function dataPdf() {\n    try {\n      pdfGenerator({\n        variables: {\n          image: [graphic, pie],\n          data: data.getPhasesMeasureReport,\n          date_range: date_last(calc_date_range(globalCalendarDay)),\n          startTime: String(parameterMin),\n          finishTime: String(parameterMax),\n          nameProject: localStorage.getItem(\"nameProject\"),\n          userName: localStorage.getItem(\"name\"),\n          imageProject: localStorage.getItem(\"imgProject\"),\n          datePrint: localStorage.getItem(\"localTime\"),\n        },\n      })\n        .then((resul) => {\n          setBasePdf(resul.data.pdfMeasurePhases);\n        })\n        .catch((err) => {\n          console.log(err);\n        });\n    } catch (err) {\n      console.log(err);\n    }\n  }\n\n  return (\n    <div>\n      {loading || !data ? (\n        <Loading />\n      ) : (\n        <div className=\"_measurergeneral_container_dates_\">\n          {/* <DateCustom\n            handleQueryReport={handleQueryReport}\n            back={back}\n            next={next}\n          /> */}\n\n          <ReactDateRangePicker\n            selectTypeRange=\"d\"\n            closingTime={0}\n            closingType=\"n\"\n          />\n\n          {\n            <>\n              {data?.getPhasesMeasureReport &&\n              !(data?.getPhasesMeasureReport?.data_kwh?.length === 0) ? (\n                <>\n                  {dateMax && (\n                    <div ref={printRef}>\n                      <div className=\"_measurergeneral_container_graphics_\">\n                        <HighchartsReact\n                          highcharts={Highcharts}\n                          options={{\n                            chart: {\n                              type: \"column\",\n                            },\n                            title: {\n                              text: t(\n                                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_KWT_CONSUMPTION_GRAPH.TITLE_DESCRIPTION\"\n                              ),\n                            },\n                            xAxis:\n                              date_last(calc_date_range(globalCalendarDay))\n                                .length <= 1\n                                ? {\n                                    type: \"datetime\",\n                                    min: parameterMin,\n                                    max: parameterMax - 3600000,\n                                    tickInterval: 3600000,\n                                    labels: {\n                                      format: \"{value:%H:%M}\",\n                                    },\n                                  }\n                                : {\n                                    type: \"datetime\",\n                                  },\n                            yAxis: {\n                              min: 0,\n                              max: data?.getPhasesMeasureReport?.length,\n                              tickAmount:\n                                data?.getPhasesMeasureReport.length + 1,\n                              title: {\n                                text: t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_KWT_CONSUMPTION_GRAPH.Y_AXIS_DESCRIPTION\"\n                                ),\n                              },\n                              stackLabels: {\n                                enabled: true,\n                                formatter: function () {\n                                  return this.total.toFixed(1);\n                                },\n                              },\n                            },\n                            colors: [\n                              \"#04b431\",\n                              \"#013adf\",\n                              \"#df01a5\",\n                              \"#DF2653\",\n                              \"#615C5D\",\n                              \"#D5DF03\",\n                              \"#1C1C1C\",\n                              \"#ee0f0f\",\n                              \"#FFAF0E\",\n                              \"#1f89e5e6\",\n                              \"#1f89e566\",\n                            ],\n                            plotOptions: {\n                              column: {\n                                stacking: \"stream\",\n                                maxPointWidth: 50,\n                              },\n                            },\n                            time: {\n                              timezoneOffset: define_time_zone(\n                                date_last(calc_date_range(globalCalendarDay)),\n                                timeZone\n                              ),\n                            },\n                            tooltip: {\n                              xDateFormat: defice_toolTip_date(\n                                date_last(calc_date_range(globalCalendarDay))\n                              ),\n                              valueDecimals: 1,\n                              headerFormat: \"<b>{point.key}</b><br>\",\n                              valueSuffix: \" kW h\",\n                            },\n                            series: data?.getPhasesMeasureReport?.data_kwh,\n                            credits: {\n                              enabled: false,\n                            },\n                          }}\n                        />\n                      </div>\n                    </div>\n                  )}\n                </>\n              ) : (\n                <>\n                  <div className=\"date_vacio_report_measurer\">\n                    <span>\n                      <i class=\"fas fa-exclamation-triangle\"></i>{\" \"}\n                      {t(\n                        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_KWT_CONSUMPTION_GRAPH.EMPTY_DATA\"\n                      )}\n                    </span>\n                  </div>\n                </>\n              )}\n              <>\n                <div ref={printRefP}>\n                  <div className=\"_measurergeneral_container_graphics_\">\n                    {data?.getPhasesMeasureReport &&\n                    !(\n                      date_last(calc_date_range(globalCalendarDay)).length > 1\n                    ) ? (\n                      <Box\n                        sx={{\n                          width: \"95%\",\n                          height: \"30%\",\n                          justifyContent: \"center\",\n                          alignItems: \"center\",\n                          typography: \"body1\",\n                        }}\n                      >\n                        <TabContext value={value}>\n                          <Box\n                            sx={{\n                              borderBottom: 1,\n                              borderColor: \"divider\",\n                              marginLeft: \"30px\",\n                            }}\n                          >\n                            <TabList\n                              onChange={handleChange}\n                              aria-label=\"lab API tabs example\"\n                            >\n                              <Tab\n                                label={t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.TOTAL_TAB\"\n                                )}\n                                value=\"1\"\n                              />\n                              {/*  <Tab\n                                label={t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.WATTS BY TWEEZERS\"\n                                )}\n                                value=\"2\"\n                              /> */}\n                            </TabList>\n                          </Box>\n                          <TabPanel value=\"1\">\n                            <HighchartsReact\n                              highcharts={Highcharts}\n                              options={{\n                                chart: {\n                                  zoomType: \"x\",\n                                  type: \"spline\",\n                                },\n                                title: {\n                                  text: \"Watts\",\n                                },\n                                xAxis: {\n                                  type: \"datetime\",\n                                  min: dateMin,\n                                  max: dateMax,\n                                  tickInterval: 3600000,\n                                  labels: {\n                                    format: \"{value:%H:%M}\",\n                                  },\n                                },\n                                yAxis: {\n                                  min: 0,\n                                  title: {\n                                    text: t(\n                                      \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.Y_AXIS_DESCRIPTION\"\n                                    ),\n                                  },\n                                },\n                                colors: [\"#000000\"],\n                                tooltip: {\n                                  xDateFormat: \"Hora: %H:%M:%S\",\n                                  valueSuffix: \" watts\",\n                                  valueDecimals: 1,\n                                  shared: true,\n                                },\n                                plotOptions: {\n                                  column: {\n                                    stacking: \"line\",\n                                  },\n                                  spline: {\n                                    lineWidth: 1.5,\n                                    states: {\n                                      hover: {\n                                        lineWidth: 2.5,\n                                      },\n                                    },\n                                    marker: {\n                                      enabled: false,\n                                    },\n                                  },\n                                  series: {\n                                    turboThreshold: 0,\n                                    marker: {\n                                      enabled: false,\n                                      radius: 0.1,\n                                      symbol: \"circle\",\n                                    },\n                                  },\n                                },\n                                time: {\n                                  timezoneOffset: define_time_zone(\n                                    date_last(\n                                      calc_date_range(globalCalendarDay)\n                                    ),\n                                    timeZone\n                                  ),\n                                },\n                                series:\n                                  data?.getPhasesMeasureReport?.data_watts,\n                                credits: {\n                                  enabled: false,\n                                },\n                              }}\n                            />\n                          </TabPanel>\n                          {/* <TabPanel value=\"2\">\n                            <HighchartsReact\n                              highcharts={Highcharts}\n                              options={{\n                                chart: {\n                                  zoomType: \"y\",\n                                  type: \"spline\",\n                                },\n                                title: {\n                                  text: \"Watts\",\n                                },\n                                xAxis: {\n                                  type: \"datetime\",\n                                  min: dateMin,\n                                  max: dateMax,\n                                  tickInterval: 3600000,\n                                  labels: {\n                                    format: \"{value:%H:%M}\",\n                                  },\n                                },\n                                yAxis: {\n                                  min: 0,\n                                  title: {\n                                    text: \"Vatios(W)\",\n                                  },\n                                },\n                                colors: [\"#f7ce68\", \"#468BE0\", \"#ff2525\"],\n                                tooltip: {\n                                  xDateFormat: \"Hora: %H:%M:%S\",\n                                  valueSuffix: \" watts\",\n                                  valueDecimals: 1,\n                                  shared: true,\n                                },\n                                plotOptions: {\n                                  column: {\n                                    stacking: \"line\",\n                                  },\n                                  spline: {\n                                    lineWidth: 1.5,\n                                    states: {\n                                      hover: {\n                                        lineWidth: 2.5,\n                                      },\n                                    },\n                                    marker: {\n                                      enabled: false,\n                                    },\n                                  },\n                                  series: {\n                                    turboThreshold: 0,\n                                    marker: {\n                                      enabled: false,\n                                      radius: 0.1,\n                                      symbol: \"circle\",\n                                    },\n                                  },\n                                },\n                                time: {\n                                  timezoneOffset: define_time_zone(\n                                    date_range,\n                                    timeZone\n                                  ),\n                                },\n                                series:\n                                  data?.getPhasesMeasureReport\n                                    ?.watts_per_clamps,\n                              }}\n                            />\n                          </TabPanel> */}\n                        </TabContext>\n                      </Box>\n                    ) : (\n                      <></>\n                    )}\n                  </div>\n                </div>\n\n                <div className=\"_measurergeneral_container_tables_\">\n                  <TableContainer component={Paper}>\n                    <div className=\"__report_measurer_table_total_title__\">\n                      {t(\n                        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.TITLE\"\n                      )}\n                      ({handlerConvertTimeMeasurePhases(globalCalendarDay)})\n                    </div>\n                    <Table aria-label=\"customized table\">\n                      <TableHead>\n                        <TableRow>\n                          <StyledTableCell align=\"center\">\n                            {t(\n                              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.MEASURER_NUMBER\"\n                            )}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {t(\n                              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.AREAS\"\n                            )}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {t(\n                              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.INITIAL_MEASURE\"\n                            )}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {t(\n                              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.FINAL_MEASURE\"\n                            )}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {t(\n                              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.TOTAL\"\n                            )}\n                          </StyledTableCell>\n                        </TableRow>\n                      </TableHead>\n                      <TableBody>\n                        {data?.getPhasesMeasureReport?.totals\n                          ? data?.getPhasesMeasureReport?.totals.map(\n                              (i, key) => (\n                                <StyledTableRow>\n                                  <StyledTableCell align=\"center\">\n                                    {key + 1}\n                                  </StyledTableCell>\n                                  <StyledTableCell align=\"center\">\n                                    {i?.name}\n                                  </StyledTableCell>\n                                  <StyledTableCell align=\"center\">\n                                    {i?.accumulated\n                                      ? `${i?.accumulated?.initial?.toFixed(\n                                          1\n                                        )} kW h`\n                                      : \"-\"}\n                                  </StyledTableCell>\n                                  <StyledTableCell align=\"center\">\n                                    {i.accumulated\n                                      ? `${i?.accumulated?.final?.toFixed(\n                                          1\n                                        )} kW h`\n                                      : \"-\"}\n                                  </StyledTableCell>\n                                  <StyledTableCell align=\"center\">\n                                    {round_digits(i?.value)} kW h\n                                  </StyledTableCell>\n                                </StyledTableRow>\n                              )\n                            )\n                          : false}\n                        <StyledTableRow>\n                          <StyledTableCell2\n                            component=\"th\"\n                            scope=\"row\"\n                            align=\"center\"\n                          >\n                            Total\n                          </StyledTableCell2>\n                          <StyledTableCell2\n                            component=\"th\"\n                            scope=\"row\"\n                          ></StyledTableCell2>\n                          <StyledTableCell2\n                            component=\"th\"\n                            scope=\"row\"\n                          ></StyledTableCell2>\n                          <StyledTableCell2\n                            component=\"th\"\n                            scope=\"row\"\n                          ></StyledTableCell2>\n                          <StyledTableCell2\n                            component=\"th\"\n                            scope=\"row\"\n                            align=\"center\"\n                          >\n                            {round_digits(\n                              data?.getPhasesMeasureReport?.total_range\n                            )}{\" \"}\n                            kW h\n                          </StyledTableCell2>\n                        </StyledTableRow>\n                      </TableBody>\n                    </Table>\n                  </TableContainer>\n                </div>\n\n                <div className=\"__measurergeneral_grid_title_tables__\">\n                  <span>\n                    <hr></hr>\n                  </span>\n                  <span>\n                    {t(\n                      \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TITLE\"\n                    )}\n                  </span>\n                  <span>\n                    <hr />\n                  </span>\n                </div>\n\n                <div className=\"_measurergeneral_grid_tables_\">\n                  {data.getPhasesMeasureReport.data_kwh ? (\n                    data.getPhasesMeasureReport.data_kwh.map((j) => (\n                      <div className=\"__report_measurer_rooms__\">\n                        {/*  <TableContainer component={Paper}>\n                          <div className=\"__report_measurer_by_room__\">\n                            {j.name}\n                          </div>\n                          <Table aria-label=\"customized table\">\n                            <TableHead>\n                              <TableRow>\n                                <StyledTableCell align=\"center\">\n                                  Hora\n                                </StyledTableCell>\n                                <StyledTableCell align=\"center\">\n                                  Total\n                                </StyledTableCell>\n                              </TableRow>\n                            </TableHead>\n                            <TableBody>\n                              {j.data.map((i, key) => (\n                                <StyledTableRow>\n                                  <StyledTableCell align=\"center\">\n                                    {date_of_the_kwh(i.x, date_range, key)}\n                                  </StyledTableCell>\n                                  <StyledTableCell align=\"center\">\n                                    {i.y.toFixed(1)} kW h\n                                  </StyledTableCell>\n                                </StyledTableRow>\n                              ))}\n                              <StyledTableRow>\n                                <StyledTableCell2\n                                  component=\"th\"\n                                  scope=\"row\"\n                                  align=\"center\"\n                                >\n                                  Total\n                                </StyledTableCell2>\n                                <StyledTableCell2\n                                  component=\"th\"\n                                  scope=\"row\"\n                                  align=\"center\"\n                                >\n                                  {round_digits(sum_of_the_kwh(j.data))} kW h\n                                </StyledTableCell2>\n                              </StyledTableRow>\n                            </TableBody>\n                          </Table>\n                        </TableContainer> */}\n                      </div>\n                    ))\n                  ) : (\n                    <></>\n                  )}\n                  {data.getPhasesMeasureReport.total_by ? (\n                    <div className=\"__report_measurer_rooms__\">\n                      <TableContainer component={Paper}>\n                        <div className=\"__report_measurer_by_room__\">\n                          {t(\n                            \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.DESCRIPTION\"\n                          )}\n                        </div>\n                        <Table aria-label=\"customized table\">\n                          <TableHead>\n                            <TableRow>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.HOUR\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.INITIAL_MEASURE\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.FINAL_MEASURE\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TOTAL\"\n                                )}\n                              </StyledTableCell>\n                              <StyledTableCell align=\"center\">\n                                {t(\n                                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.ACCUMULATED\"\n                                )}\n                              </StyledTableCell>\n                            </TableRow>\n                          </TableHead>\n                          <TableBody>\n                            {data?.getPhasesMeasureReport.total_by.map((i) => (\n                              <StyledTableRow>\n                                <StyledTableCell align=\"center\">\n                                  {roundTotalBy(i?.x)}\n                                </StyledTableCell>\n                                <StyledTableCell align=\"center\">\n                                  {i?.initialValue === undefined ||\n                                  i?.initialValue === null\n                                    ? \"-----\"\n                                    : `${i?.initialValue} kwh `}\n                                </StyledTableCell>\n                                <StyledTableCell align=\"center\">\n                                  {i?.finalValue === undefined ||\n                                  i?.finalValue === null\n                                    ? \"-----\"\n                                    : `${i?.finalValue} kwh `}\n                                </StyledTableCell>\n                                <StyledTableCell align=\"center\">\n                                  {i?.y === null || i?.y === undefined\n                                    ? \"-----\"\n                                    : `${i?.y} kwh `}\n                                </StyledTableCell>\n                                <StyledTableCell align=\"center\">\n                                  {i?.dailyAccumulated === null ||\n                                  i?.dailyAccumulated === undefined\n                                    ? \"-----\"\n                                    : `${i?.dailyAccumulated} kwh `}\n                                </StyledTableCell>\n                              </StyledTableRow>\n                            ))}\n                            {/*  <StyledTableRow>\n                              <StyledTableCell2\n                                component=\"th\"\n                                scope=\"row\"\n                                align=\"center\"\n                              >\n                                Total\n                              </StyledTableCell2>\n                              <StyledTableCell2\n                                component=\"th\"\n                                scope=\"row\"\n                                align=\"center\"\n                              >\n                                {sumTotalBy(\n                                  data.getPhasesMeasureReport.total_by\n                                )}{\" \"}\n                                kW h\n                              </StyledTableCell2>\n                            </StyledTableRow> */}\n                          </TableBody>\n                        </Table>\n                      </TableContainer>\n                    </div>\n                  ) : (\n                    <></>\n                  )}\n                </div>\n              </>\n            </>\n          }\n        </div>\n      )}\n    </div>\n  );\n});\n\nexport default MeasurerPhases;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport Switch from \"@material-ui/core/Switch\";\nimport {\n  Dialog,\n  AppBar,\n  Typography,\n  Slide,\n  IconButton,\n  Toolbar,\n  makeStyles,\n} from \"@material-ui/core\";\nimport {\n  calc_percent_watts,\n  cacl_color_graph_measurer,\n} from \"../../utils/helpers\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { addDays } from \"date-fns\";\nimport Button from \"@material-ui/core/Button\";\nimport html2canvas from \"html2canvas\";\nimport { green } from \"@material-ui/core/colors\";\nimport MeasurerPhases from \"../highcharts/MeasurerPhases\";\nimport Swal from \"sweetalert2\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"fixed\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n}));\n\nconst innerTheme = createTheme({\n  palette: {\n    secondary: {\n      main: green[500],\n    },\n  },\n});\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\n//Meters-{id proyecto}\nconst HeavyDuty = ({ data, timeZone, send }) => {\n  const {\n    event,\n    setDateReport,\n    setactiveNextBack,\n    serial,\n    errorMessage,\n    successMessage,\n  } = useContext(AuthContext);\n  const [load, setLoad] = React.useState(false);\n  const [openMeasurer, setOpenMeasurer] = useState(false);\n  const [state, setState] = useState(data.variables.Status == 1 ? true : false);\n  const [watts, setWatts] = useState(data.variables.Watts);\n  const [kwh, setKWH] = useState(data.variables.KWH);\n\n  const classes = useStyles();\n\n  useEffect(() => {\n    setLoad(false);\n  }, [errorMessage, successMessage]);\n\n  const handleClose = () => {\n    setOpenMeasurer(false);\n    setactiveNextBack(false);\n  };\n\n  const handleChange = async () => {\n    await Swal.fire({\n      title: \"¿Estás seguro?\",\n      text: \"Esta acción cambiará el estado del dispositivo\",\n      icon: \"info\",\n      showCancelButton: true,\n      confirmButtonColor: \"#3085d6\",\n      cancelButtonColor: \"#d33\",\n      confirmButtonText: \"Si, estoy seguro!\",\n    }).then((result) => {\n      if (result.isConfirmed) {\n        setLoad(true);\n        call();\n        setState(!state);\n      }\n    });\n  };\n\n  function call() {\n    return new Promise(() => {\n      setTimeout(() => {\n        send(data, !state);\n      }, 2000);\n    });\n  }\n\n  const handleOpenReportPhases = () => {\n    setOpenMeasurer(true);\n    setactiveNextBack(true);\n    setDateReport([\n      {\n        startDate: new Date(),\n        endDate: addDays(new Date(), 0),\n        key: \"selection\",\n      },\n    ]);\n  };\n\n  return (\n    <>\n      <div className=\"_measurer_container_\">\n        <div className=\"_heavyduty_title_container_\">\n          <div className=\"_heavyduty__title_\">\n            <span>{data.alias}</span>\n          </div>\n          <div className=\"_heavyduty__title_\">\n            <ThemeProvider theme={innerTheme}>\n              <Switch size=\"medium\" checked={state} onChange={handleChange} />\n            </ThemeProvider>\n          </div>\n        </div>\n        <div\n          className=\"_measurer_container_kwh_\"\n          onClick={handleOpenReportPhases}\n        >\n          <div className=\"_measurer_data_container_\">\n            <span className=\"_measurer_data_number_\">\n              {Number(\n                `${\n                  data.id == event.id_device && event.action == \"KWH\"\n                    ? event.status\n                    : data.variables.KWH\n                }`\n              ).toFixed(1)}\n            </span>\n            <span className=\"_measurer_data_kwh_\">kWh</span>\n          </div>\n        </div>\n        <div\n          className=\"_measurer_container_watts_\"\n          onClick={handleOpenReportPhases}\n        >\n          <SemiCircleProgressBar\n            diameter={150}\n            stroke={cacl_color_graph_measurer(data.variables.Watts)}\n            percentage={`${calc_percent_watts(\n              `${\n                data.id == event.id_device && event.action == \"Watts\"\n                  ? event.status\n                  : data.variables.Watts\n              }`\n            )}`}\n          />\n        </div>\n        <div\n          className=\"_measurer_container_range_\"\n          onClick={handleOpenReportPhases}\n        >\n          <span className=\"_measurer__range_\">0</span>\n          <span className=\"_measurer__range_\">15000</span>\n        </div>\n        <div\n          className=\"_measurer_container_value_\"\n          onClick={handleOpenReportPhases}\n        >\n          {Number(\n            `${\n              data.id == event.id_device && event.action == \"Watts\"\n                ? event.status\n                : data.variables.Watts\n            }`\n          ).toFixed(1) | 0}{\" \"}\n          Watts\n        </div>\n      </div>\n      <Dialog\n        fullScreen\n        open={openMeasurer}\n        onClose={handleClose}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBar}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleClose}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography variant=\"h6\" className={classes.title}>\n              Reporte de fases del {data.alias}\n            </Typography>\n          </Toolbar>\n        </AppBar>\n        <MeasurerPhases\n          {...{\n            timeZone,\n          }}\n          measurer={data}\n        />\n      </Dialog>\n    </>\n  );\n};\nexport default HeavyDuty;\n","import * as React from \"react\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\n\r\nconst ExpandMore = styled((props) => {\r\n  const { expand, ...other } = props;\r\n  return <IconButton {...other} />;\r\n})(({ theme, expand }) => ({\r\n  transform: !expand ? \"rotate(0deg)\" : \"rotate(180deg)\",\r\n  marginLeft: \"auto\",\r\n  transition: theme.transitions.create(\"transform\", {\r\n    duration: theme.transitions.duration.shortest,\r\n  }),\r\n}));\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n  const [expanded, setExpanded] = React.useState(false);\r\n\r\n  const handleExpandClick = () => {\r\n    setExpanded(!expanded);\r\n  };\r\n\r\n  const percentageValue = (value) => {\r\n    if (value.length < 2) {\r\n      return (parseInt(value) / 10) * 100;\r\n    } else if (value.length < 3) {\r\n      return (parseInt(value) / 100) * 100;\r\n    } else if (value.length < 4) {\r\n      return (parseInt(value) / 1000) * 100;\r\n    } else if (value.length < 5) {\r\n      return (parseInt(value) / 10000) * 100;\r\n    } else if (value.length < 6) {\r\n      return (parseInt(value) / 100000) * 100;\r\n    } else if (value.length < 7) {\r\n      return (parseInt(value) / 1000000) * 100;\r\n    } else if (value.length < 8) {\r\n      return (parseInt(value) / 10000000) * 100;\r\n    } else if (value.length < 9) {\r\n      return (parseInt(value) / 100000000) * 100;\r\n    } else if (value.length < 10) {\r\n      return (parseInt(value) / 1000000000) * 100;\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"_cardMeasurers_container_\">\r\n      <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\r\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFA\">\r\n          <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\r\n            Fase A{\" \"}\r\n          </span>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\r\n          <SemiCircleProgressBar\r\n            percentage={`${percentageValue(\r\n              data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value.toString()\r\n            )}`}\r\n            background=\"#F2F2F2\"\r\n            strokeWidth={25}\r\n            stroke=\"#f7ce68\"\r\n          />\r\n          <span>\r\n            {data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value}{\" \"}\r\n            Watts{\" \"}\r\n          </span>\r\n        </div>\r\n      </div>\r\n      <div className=\"__details_measurer_consumption_variables_CFA_value__\">\r\n        <div className=\" __details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\r\n          {\" \"}\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Voltaje</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <span>\r\n              <Tooltip title=\"Voltaje\" placement=\"top\" arrow>\r\n                <strong>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.VFA.value.toFixed(\r\n                    1\r\n                  )}{\" \"}\r\n                  V\r\n                </strong>\r\n              </Tooltip>\r\n            </span>\r\n          </div>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Corriente</strong>\r\n          </div>\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Amperaje\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.CFA.value.toFixed(\r\n                    1\r\n                  )}{\" \"}\r\n                  A\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFA\">\r\n          {\" \"}\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__ \">\r\n            <strong>Factor P.</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Factor de Potencia\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.FPA.value.toFixed(\r\n                    2\r\n                  )}{\" \"}\r\n                  FP\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n","import * as React from \"react\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport CardMedia from \"@mui/material/CardMedia\";\r\nimport CardContent from \"@mui/material/CardContent\";\r\nimport CardActions from \"@mui/material/CardActions\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport Avatar from \"@mui/material/Avatar\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { red } from \"@mui/material/colors\";\r\nimport FavoriteIcon from \"@mui/icons-material/Favorite\";\r\nimport ShareIcon from \"@mui/icons-material/Share\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nconst ExpandMore = styled((props) => {\r\n  const { expand, ...other } = props;\r\n  return <IconButton {...other} />;\r\n})(({ theme, expand }) => ({\r\n  transform: !expand ? \"rotate(0deg)\" : \"rotate(180deg)\",\r\n  marginLeft: \"auto\",\r\n  transition: theme.transitions.create(\"transform\", {\r\n    duration: theme.transitions.duration.shortest,\r\n  }),\r\n}));\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n  const [expanded, setExpanded] = React.useState(false);\r\n\r\n  const handleExpandClick = () => {\r\n    setExpanded(!expanded);\r\n  };\r\n  const percentageValue = (value) => {\r\n    if (value.length < 2) {\r\n      return (parseInt(value) / 10) * 100;\r\n    } else if (value.length < 3) {\r\n      return (parseInt(value) / 100) * 100;\r\n    } else if (value.length < 4) {\r\n      return (parseInt(value) / 1000) * 100;\r\n    } else if (value.length < 5) {\r\n      return (parseInt(value) / 10000) * 100;\r\n    } else if (value.length < 6) {\r\n      return (parseInt(value) / 100000) * 100;\r\n    } else if (value.length < 7) {\r\n      return (parseInt(value) / 1000000) * 100;\r\n    } else if (value.length < 8) {\r\n      return (parseInt(value) / 10000000) * 100;\r\n    } else if (value.length < 9) {\r\n      return (parseInt(value) / 100000000) * 100;\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"_cardMeasurers_container_\">\r\n      <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\r\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFB\">\r\n          <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\r\n            Fase B\r\n          </span>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\r\n          <SemiCircleProgressBar\r\n            strokeWidth={25}\r\n            percentage={`${percentageValue(\r\n              data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value.toString()\r\n            )}`}\r\n            background=\"#F2F2F2\"\r\n            //stroke=\"#8bc6ec\"\r\n            stroke=\"#468BE0\"\r\n          />\r\n          <span>\r\n            {data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value}{\" \"}\r\n            Watts\r\n          </span>\r\n        </div>\r\n      </div>\r\n      <div className=\"__details_measurer_consumption_variables_CFA_value__\">\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Voltaje</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Voltaje\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.VFB.value.toFixed(\r\n                    1\r\n                  )}{\" \"}\r\n                  V\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Corriente</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Amperaje\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.CFB.value.toFixed(\r\n                    1\r\n                  )}{\" \"}\r\n                  A\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFB\">\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Factor P.</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Factor de Potencia\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.FPB.value.toFixed(\r\n                    2\r\n                  )}{\" \"}\r\n                  FP\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n","import * as React from \"react\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { red } from \"@mui/material/colors\";\r\nimport FavoriteIcon from \"@mui/icons-material/Favorite\";\r\nimport ShareIcon from \"@mui/icons-material/Share\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nconst ExpandMore = styled((props) => {\r\n  const { expand, ...other } = props;\r\n  return <IconButton {...other} />;\r\n})(({ theme, expand }) => ({\r\n  transform: !expand ? \"rotate(0deg)\" : \"rotate(180deg)\",\r\n  marginLeft: \"auto\",\r\n  transition: theme.transitions.create(\"transform\", {\r\n    duration: theme.transitions.duration.shortest,\r\n  }),\r\n}));\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n  const [expanded, setExpanded] = React.useState(false);\r\n\r\n  const handleExpandClick = () => {\r\n    setExpanded(!expanded);\r\n  };\r\n  const percentageValue = (value) => {\r\n    if (value.length < 2) {\r\n      return (parseInt(value) / 10) * 100;\r\n      //}else if ( )  {\r\n    } else if (value.length < 3) {\r\n      return (parseInt(value) / 100) * 100;\r\n    } else if (value.length < 4) {\r\n      return (parseInt(value) / 1000) * 100;\r\n    } else if (value.length < 5) {\r\n      return (parseInt(value) / 10000) * 100;\r\n    } else if (value.length < 6) {\r\n      return (parseInt(value) / 100000) * 100;\r\n    } else if (value.length < 7) {\r\n      return (parseInt(value) / 1000000) * 100;\r\n    } else if (value.length < 8) {\r\n      return (parseInt(value) / 10000000) * 100;\r\n    } else if (value.length < 9) {\r\n      return (parseInt(value) / 100000000) * 100;\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"_cardMeasurers_container_\">\r\n      <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\r\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFC\">\r\n          <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\r\n            Fase C\r\n          </span>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\r\n          <SemiCircleProgressBar\r\n            percentage={`${percentageValue(\r\n              data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value.toString()\r\n            )}`}\r\n            strokeWidth={25}\r\n            stroke=\"#ff2525\"\r\n            background=\"#F2F2F2\"\r\n          />\r\n          <span>\r\n            {data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value}{\" \"}\r\n            Watts\r\n          </span>\r\n        </div>\r\n      </div>\r\n      <div className=\"__details_measurer_consumption_variables_CFA_value__\">\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Voltaje</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Voltaje\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.VFC.value.toFixed(\r\n                    1\r\n                  )}{\" \"}\r\n                  V\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Corriente</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Amperaje\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.CFC.value.toFixed(\r\n                    1\r\n                  )}{\" \"}\r\n                  A\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n        <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFC\">\r\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n            <strong>Factor P.</strong>\r\n          </div> */}\r\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n            <Tooltip title=\"Factor de Potencia\" placement=\"top\" arrow>\r\n              <strong>\r\n                <span>\r\n                  {data.getMetterAndMetterHistories.dataMetters.variables.FPC.value.toFixed(\r\n                    2\r\n                  )}{\" \"}\r\n                  FP\r\n                </span>\r\n              </strong>\r\n            </Tooltip>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport ArrowDropDownCircleIcon from \"@mui/icons-material/ArrowDropDownCircle\";\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n  const [expanded, setExpanded] = React.useState(false);\r\n  const [actual, setActual] = React.useState(\"\");\r\n  const [alias, setAlias] = React.useState();\r\n  const opcionesFormateo = {\r\n    minimumFractionDigits: 1, // Fijar el número mínimo de dígitos fraccionarios en 1\r\n    maximumFractionDigits: 1, // Fijar el número máximo de dígitos fraccionarios en 1\r\n    useGrouping: true, // Habilitar el agrupamiento de miles\r\n  };\r\n\r\n  const [valuesVariables, setValuesVariables] = React.useState(\r\n    data.getMetterAndMetterHistories.lecturaActual.toFixed(2)\r\n  );\r\n\r\n  useEffect(() => {\r\n    const numero = data.getMetterAndMetterHistories.lecturaActual.toFixed(2);\r\n    const opcionesFormateo = {\r\n      minimumFractionDigits: 1, // Fijar el número mínimo de dígitos fraccionarios en 1\r\n      maximumFractionDigits: 1, // Fijar el número máximo de dígitos fraccionarios en 1\r\n      useGrouping: true, // Habilitar el agrupamiento de miles\r\n    };\r\n    const numeroFormateado = numero.toLocaleString(\"es-ES\", opcionesFormateo);\r\n\r\n  }, [data]);\r\n\r\n  const nameVariables = [\r\n    { name: \"EI\", EI: \"Energía instantánea\" },\r\n    { name: \"EAE\", EAE: \"Energía activa entregada\" },\r\n    { name: \"ERR\", ERR: \"Energía reactiva recibida\" },\r\n    { name: \"ERE\", ERE: \"Energía reactiva entregada\" },\r\n    { name: \"EAR\", EAR: \"\" },\r\n  ];\r\n\r\n  const handleNameValue = (e) => {\r\n    let name = e.target.outerText;\r\n    const objecValue = data?.getMetterAndMetterHistories.dataMetters.variables;\r\n    setAlias(name);\r\n    for (const i in objecValue) {\r\n      if (i === name) {\r\n        setValuesVariables(objecValue[i].value);\r\n        nameVariables.map((l) => {\r\n          if (l[i] !== undefined) {\r\n            setActual(l[i]);\r\n          }\r\n        });\r\n      }\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"_carTotalNew_ \">\r\n      <div className=\"__details_measurer_information_card_title__ background_CFT  background_CFA\">\r\n        <strong>LECTURA ACTUAL {String(actual?.toUpperCase())}</strong>\r\n      </div>\r\n      <div className=\"__details_measurer_consumption_voltage_variable_value__\">\r\n        <span>{parseInt(valuesVariables).toFixed(2)}</span>\r\n      </div>\r\n      <div className=\"container_values_songs \">\r\n        <Tooltip title=\"\" placement=\"top\" arrow>\r\n          <div\r\n            className={`${\r\n              alias === nameVariables[0].name\r\n                ? \"container_value_button\"\r\n                : \"container_value_button_normal\"\r\n            }  `}\r\n            onClick={handleNameValue}\r\n          >\r\n            {nameVariables[0].name}\r\n          </div>\r\n        </Tooltip>\r\n        <Tooltip title=\"\" placement=\"top\" arrow>\r\n          <div\r\n            className={`${\r\n              alias === nameVariables[1].name\r\n                ? \"container_value_button\"\r\n                : \"container_value_button_normal\"\r\n            }  `}\r\n            onClick={handleNameValue}\r\n          >\r\n            {nameVariables[1].name}\r\n          </div>\r\n        </Tooltip>\r\n        <Tooltip title=\"\" placement=\"top\" arrow>\r\n          <div\r\n            className={`${\r\n              alias === nameVariables[2].name\r\n                ? \"container_value_button\"\r\n                : \"container_value_button_normal\"\r\n            }  `}\r\n            onClick={handleNameValue}\r\n          >\r\n            {nameVariables[2].name}\r\n          </div>\r\n        </Tooltip>\r\n        <Tooltip title=\"\" placement=\"top\" arrow>\r\n          <div\r\n            className={`${\r\n              alias === nameVariables[3].name\r\n                ? \"container_value_button\"\r\n                : \"container_value_button_normal\"\r\n            }  `}\r\n            onClick={handleNameValue}\r\n          >\r\n            {nameVariables[3].name}\r\n          </div>\r\n        </Tooltip>\r\n        <div\r\n          className={`${\r\n            alias === nameVariables[4].name\r\n              ? \"container_value_button\"\r\n              : \"container_value_button_normal\"\r\n          }  `}\r\n          onClick={handleNameValue}\r\n        >\r\n          {nameVariables[4].name}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n","export const futureDate =(epoch1, epoch2)=> {\n    //convertir los valores epoch a objetos de fecha\n    const dateOne = new Date(epoch1);\n    const dateTwo = new Date(epoch2);\n  \n    //comparar año mes y dia \n    const sameYear = dateOne.getFullYear() === dateTwo.getFullYear();\n    const sameMonth = dateOne.getMonth() === dateTwo.getMonth();\n    const sameDay = dateOne.getDate() === dateTwo.getDate();\n  \n    //devolver true si son el mismo día, de lo contrario, false\n    return sameYear && sameMonth && sameDay;\n  }\n  \n  ","import React, { useContext, useEffect } from \"react\";\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\nimport DateFnsUtils from \"@date-io/date-fns\";\nimport frLocale from \"date-fns/locale/es\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { addDays, format } from \"date-fns\";\n// helper\nimport { futureDate } from \"./helper\";\n\nconst innerTheme = createTheme({\n  palette: {\n    primary: {\n      main: green[500],\n    },\n    secondary: {\n      light: \"#ff7961\",\n      main: \"#f44336\",\n      dark: \"#ba000d\",\n      contrastText: \"#000\",\n    },\n  },\n});\n\nfunction DateMUI({ data }) {\n  const { dateMUI, setDateMUI } = useContext(AuthContext);\n  const [actualDate, setActualDate] = React.useState(Date.parse(new Date()));\n\n  useEffect(() => {\n    if (data === undefined) {\n      setDateMUI(new Date().getTime());\n    }\n  }, [data]);\n\n  const Next = () => {\n    const nextDate = addDays(dateMUI, 1);\n    setDateMUI(nextDate.getTime());\n  };\n\n  const Prev = () => {\n    const prevDate = addDays(dateMUI, -1);\n    setDateMUI(prevDate.getTime());\n  };\n\n  return (\n    <MuiPickersUtilsProvider utils={DateFnsUtils} locale={frLocale}>\n      <Grid container justify=\"center\">\n        <IconButton color=\"grey\" onClick={Prev}>\n          <ChevronLeft />\n        </IconButton>\n        <ThemeProvider theme={innerTheme}>\n          <DatePicker\n            okLabel=\"seleccionar\"\n            showTodayButton={true}\n            todayLabel=\"hoy\"\n            id=\"date-picker-dialog\"\n            label=\"Fecha\"\n            format=\"eeee, dd MMMM\"\n            value={dateMUI}\n            onChange={(event) => setDateMUI(Date.parse(event))}\n            disableFuture\n            color=\"primary\"\n            KeyboardButtonProps={{\n              \"aria-label\": \"change date\",\n            }}\n          />\n        </ThemeProvider>\n        {futureDate(dateMUI, actualDate) ? (\n          <IconButton color=\"grey\" disabled={true}>\n            <ChevronRight />\n          </IconButton>\n        ) : (\n          <IconButton color=\"grey\" onClick={Next}>\n            <ChevronRight />\n          </IconButton>\n        )}\n      </Grid>\n    </MuiPickersUtilsProvider>\n  );\n}\n\nexport default DateMUI;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { AuthContext } from '../../../context/AuthProvider';\nimport { useQuery } from '@apollo/client';\nimport { GET_HISTORY } from '../../../controllers/measurersController';\nimport Highcharts from 'highcharts/highstock';\nimport HighchartsReact from 'highcharts-react-official';\nimport 'react-date-range/dist/styles.css';\nimport 'react-date-range/dist/theme/default.css';\nimport { TableRow, TableCell } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\n//import components\nimport DatesMacrometer from '../../../components/macrometer/datesMacrometer';\nimport DateMUI from \"../../dateMUI/DateMUI\"\n\n//Function\nimport { timeConvertMacromedidor } from '../../../utils/helpers';\nimport {Dates }from \"./helperDate\"\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: '#4caf50e6',\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: '#4caf50e6',\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: 'bold',\n  },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    '&:nth-of-type(odd)': {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst GraphConsumptionDetail = ({ projectID, timeZone }) => {\n  const {serial, setSeeGraphic, dateMUI } = useContext(AuthContext);\n\n  useEffect(() => {\n    setSeeGraphic(true);\n  }, []);\n\n  const [value, setValue] = useState();\n  const [datas, setDatas] = useState(0);\n\n  useEffect(() => {\n    setSeeGraphic(true);\n  }, []);\n\n  const handleChange = (newValue) => {\n    setValue(newValue);\n  };\n  const { data, loading } = useQuery(GET_HISTORY, {\n    variables: {\n      serial: serial,\n      start_time: Dates(dateMUI).start,\n      end_time: Dates(dateMUI).end,\n      time_zone: timeZone\n    },\n    fetchPolicy: 'no-cache',\n  });\n\n  const [x, setX] = useState([]);\n\n  if (loading || !data) {\n    return <></> /* <LoadingBar /> */;\n  }\n\n  return (\n    <div className=\"__details_measurer_consumption_graphic__\">\n      <div className=\"calendar_content\">\n      <DateMUI data={data} />\n      </div>\n\n      {data.getHistory.length === 0 ? (\n        <></>\n      ) : (\n        /* <div className=\"date_vacio_report_measurer\">\n          <span>\n            <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\n          </span>\n        </div> */\n        <HighchartsReact\n          highcharts={Highcharts}\n          options={{\n            chart: {\n              type: 'column',\n            },\n            colors: ['#04b431'],\n\n            title: {\n              align: 'left',\n              text: `Consumo total de ${\n                data.getHistory.res ? data.getHistory.currentConsumption.toFixed(2) : datas\n              } kWh `,\n            },\n            subtitle: {\n              align: 'left',\n              text: '' /* \"Click the columns to view details. \" */,\n            },\n            accessibility: {\n              announceNewData: {\n                enabled: true,\n              },\n            },\n            xAxis: {\n              type: 'category',\n            },\n            yAxis: {\n              title: {\n                text: '',\n              },\n            },\n            legend: {\n              enabled: false,\n            },\n            plotOptions: {\n              series: {\n                borderWidth: 0,\n                dataLabels: {\n                  enabled: true,\n                  format: '{point.y:.1f}',\n                },\n              },\n            },\n\n            tooltip: {\n              headerFormat: '<span style=\"font-size:12px\">{series.name}</span><br>',\n              pointFormat: '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n            },\n\n            series: [\n              {\n                name: 'Horas',\n                colorByPoint: true,\n                data: data?.getHistory.res,\n              },\n            ],\n          }}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default GraphConsumptionDetail;\n","import styled from 'styled-components';\n\nexport const SelectContainer = styled.select`\n  padding: 0.5em;\n  font-size: 1em;\n  border-radius: 8px;\n  width: 250px ;\n  height: 40px;\n  border: 1px solid #ccc;\n  position: relative;\n  cursor: pointer;\n`;\nexport const SelectInput = styled.select`\n  padding: 0.5em;\n  font-size: 1em;\n  border-radius: 4px;\n  border: 1px solid #ccc;\n`;\n\nexport const OptionContainer = styled.div`\n  position: absolute;\n  top: 100%;\n  left: 0;\n  width: 100%;\n  background-color: #fff;\n  border-radius: 4px;\n  border: 1px solid #ccc;\n  max-height: 200px;\n  overflow-y: auto;\n`;\n\nexport const OptionItem = styled.option`\n  padding: 0.5em;\n  \n`;","import React from 'react';\nimport styled from 'styled-components';\nimport {SelectContainer, OptionContainer, OptionItem }from \"./styledSelect\"\n\nexport default function selectMonth({ options, value, onChange }) {\n  return (\n    <SelectContainer value={value} onChange={onChange}>\n    {options.map((option) => (\n      <option key={option.value} value={option.value}>\n        {option.label}\n      </option>\n    ))}\n  </SelectContainer>\n  )\n}\n\n// Componente Select\n\n\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { AuthContext } from \"../../../context/AuthProvider\";\r\nimport { useQuery } from \"@apollo/client\";\r\nimport { GET_HISTORY } from \"../../../controllers/measurersController\";\r\nimport Highcharts from \"highcharts/highstock\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport \"react-date-range/dist/styles.css\";\r\nimport \"react-date-range/dist/theme/default.css\";\r\nimport LoadingBar from \"../../loading/LoadingBar\";\r\nimport { TableRow, TableCell } from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Select from \"../../macrometer/selectMonth/selectMonth\";\r\n\r\n//Function\r\nimport {\r\n  sum_of_the_kwh,\r\n  date_of_the_kwh,\r\n  round_digits,\r\n  convert_time_measurergeneral,\r\n  calc_date_range,\r\n  date_last,\r\n  define_time_zone,\r\n  defice_toolTip_date,\r\n  dateRangeButton,\r\n  calculatedMinParameter,\r\n  calculatedMaxParameter,\r\n  roundTotalBy,\r\n  sumTotalBy,\r\n  timeConvertMacromedidor,\r\n} from \"../../../utils/helpers\";\r\nimport { Dataset } from \"@mui/icons-material\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n  head: {\r\n    backgroundColor: \"#4caf50e6\",\r\n    color: theme.palette.common.white,\r\n  },\r\n  body: {\r\n    fontSize: 14,\r\n  },\r\n}))(TableCell);\r\n\r\nconst StyledTableCell2 = withStyles((theme) => ({\r\n  head: {\r\n    backgroundColor: \"#4caf50e6\",\r\n    color: theme.palette.common.white,\r\n  },\r\n  body: {\r\n    fontSize: 14,\r\n    fontWeight: \"bold\",\r\n  },\r\n}))(TableCell);\r\n\r\nconst StyledTableRow = withStyles((theme) => ({\r\n  root: {\r\n    \"&:nth-of-type(odd)\": {\r\n      backgroundColor: theme.palette.action.hover,\r\n    },\r\n  },\r\n}))(TableRow);\r\n\r\nconst GraphConsumptionDetailPerYear = ({ projectID, timeZone }) => {\r\n  const { dateReport, serial, setSeeGraphic } = useContext(AuthContext);\r\n  useEffect(() => {\r\n    setSeeGraphic(false);\r\n  }, []);\r\n  const [parameterMax, setParameterMax] = useState(\r\n    calculatedMaxParameter(dateReport, timeZone)\r\n  );\r\n  const [parameterMin, setParameterMin] = useState(\r\n    calculatedMinParameter(dateReport, timeZone)\r\n  );\r\n  const [date_range, setDateRange] = useState([]);\r\n  const [dayActual, setDayActual] = useState(new Date().getTime());\r\n  const [dateMax, setDateMax] = useState();\r\n  const [dateMin, setDateMin] = useState();\r\n  const [value, setValue] = useState();\r\n  const [datas, setDatas] = useState([]);\r\n  const [selectedOption, setSelectedOption] = React.useState(\"\");\r\n  const [year, setYear] = useState(timeConvertMacromedidor().year);\r\n  const currentYear = new Date().getFullYear();\r\n  const listedYears = [];\r\n  const handleChange = (newValue) => {\r\n    setValue(newValue);\r\n  };\r\n  const { data, loading } = useQuery(GET_HISTORY, {\r\n    variables: {\r\n      serial: serial,\r\n      year: parseInt(year),\r\n      time_zone: timeZone,\r\n    },\r\n    fetchPolicy: \"no-cache\",\r\n  });\r\n  const [x, setX] = useState([]);\r\n\r\n  if (loading || !data) {\r\n    return <></> /* <LoadingBar / */;\r\n  }\r\n\r\n  const handleSelectChange = (event) => {\r\n    setSelectedOption(event.target.value);\r\n    setYear(event.target.value);\r\n  };\r\n\r\n  for (let i = 2022; i <= currentYear; i++) {\r\n    listedYears?.push({\r\n      label: String(i),\r\n      value: Number(i),\r\n    });\r\n  }\r\n\r\n  return (\r\n    <div className=\"__details_measurer_consumption_graphic__\">\r\n      <div className=\"calendar_content\">\r\n        <Select\r\n          options={listedYears?.reverse()}\r\n          value={selectedOption}\r\n          onChange={handleSelectChange}\r\n        />\r\n      </div>\r\n      {data.getHistory.length === 0 ? (\r\n        <div className=\"date_vacio_report_measurer\">\r\n          <span>\r\n            <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n          </span>\r\n        </div>\r\n      ) : (\r\n        <HighchartsReact\r\n          highcharts={Highcharts}\r\n          options={{\r\n            chart: {\r\n              type: \"column\",\r\n            },\r\n            colors: [\"#04b431\"],\r\n\r\n            title: {\r\n              align: \"left\",\r\n              text: `Consumo total de ${\r\n                data.getHistory.res\r\n                  ? data.getHistory.currentConsumption.toFixed(2)\r\n                  : datas\r\n              } kWh `,\r\n            },\r\n            subtitle: {\r\n              align: \"left\",\r\n              text: \"\" /* \"Click the columns to view details. \" */,\r\n            },\r\n            accessibility: {\r\n              announceNewData: {\r\n                enabled: true,\r\n              },\r\n            },\r\n            xAxis: {\r\n              type: \"category\",\r\n            },\r\n            yAxis: {\r\n              title: {\r\n                text: \"\",\r\n              },\r\n            },\r\n            legend: {\r\n              enabled: false,\r\n            },\r\n            plotOptions: {\r\n              series: {\r\n                borderWidth: 0,\r\n                dataLabels: {\r\n                  enabled: true,\r\n                  format: \"{point.y:.1f}\",\r\n                },\r\n              },\r\n            },\r\n\r\n            tooltip: {\r\n              headerFormat:\r\n                '<span style=\"font-size:11px\">{series.name}</span><br>',\r\n              pointFormat:\r\n                '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\r\n            },\r\n\r\n            series: [\r\n              {\r\n                name: \"Mes\",\r\n                colorByPoint: true,\r\n                data: data.getHistory.res,\r\n              },\r\n            ],\r\n          }}\r\n        />\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GraphConsumptionDetailPerYear;\r\n","import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Tab from \"@mui/material/Tab\";\r\nimport TabContext from \"@mui/lab/TabContext\";\r\nimport TabList from \"@mui/lab/TabList\";\r\nimport TabPanel from \"@mui/lab/TabPanel\";\r\nimport GraphConsumptionDetail from \"./GraphConsumptionDetail\";\r\nimport GraphConsumptionDetailPerMonth from \"./GraphConsumptionPerMonth\";\r\nimport GraphConsumptionPerYear from \"./GraphConsumptionPerYear\";\r\nimport { green } from \"@material-ui/core/colors\";\r\n\r\nexport default function TabGraphic({timeZone}) {\r\n  const [value, setValue] = React.useState(\"1\");\r\n\r\n  const handleChange = (event, newValue) => {\r\n    setValue(newValue);\r\n  };\r\n\r\n  return (\r\n    <Box sx={{ width: \"100%\", height: \"30%\", typography: \"body1\" }}>\r\n      <TabContext value={value}>\r\n        <Box sx={{ borderBottom: 1, borderColor: \"divider\" }}>\r\n          <TabList onChange={handleChange} aria-label=\"lab API tabs example\">\r\n            <Tab label=\"Consumo por dia\" value=\"1\" />\r\n            <Tab label=\"Consumo por mes\" value=\"2\" />\r\n            <Tab label=\"Consumo por año\" value=\"3\" />\r\n          </TabList>\r\n        </Box>\r\n        <TabPanel value=\"1\">\r\n          <GraphConsumptionDetail timeZone={timeZone} />\r\n        </TabPanel>\r\n        <TabPanel value=\"2\">\r\n          <GraphConsumptionDetailPerMonth timeZone={timeZone} />\r\n        </TabPanel>\r\n        <TabPanel value=\"3\">\r\n          <GraphConsumptionPerYear timeZone={timeZone} />\r\n        </TabPanel>\r\n      </TabContext>\r\n    </Box>\r\n  );\r\n}","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_TWELVE_HOUR_VOLTAGE } from \"../../../controllers/measurersController\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n\n\n//Function\nimport { Dates } from \"./helperDate\";\n\nconst GraphVoltage = ({ projectID, timeZone }) => {\n  const {serial, dateMUI } = useContext(AuthContext);\n\n  const { data, loading } = useQuery(GET_TWELVE_HOUR_VOLTAGE, {\n    variables: {\n      serial: serial,\n      start_time: Dates(dateMUI).start,\n      end_time: Dates(dateMUI).end,\n      time_zone: timeZone,\n    },\n    fetchPolicy: \"no-cache\",\n  });\n\n  if (loading || !data) {\n    return <></> /* <LoadingVoltage /> */;\n  }\n\n  return (\n    <div className=\"__details_measurer_consumption_voltage_graphic__\">\n      {data.getTwelveHourVoltage.length === 0 ? (\n        <div className=\"date_vacio_report_measurer\">\n          <span>\n            <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\n          </span>\n        </div>\n      ) : (\n        <div>\n          <HighchartsReact\n            highcharts={Highcharts}\n            options={{\n              chart: {\n                type: \"spline\",\n                scrollablePlotArea: {\n                  minWidth: 600,\n                  scrollPositionX: 1,\n                },\n              },\n              title: {\n                text: \"Voltaje últimas 24 horas\",\n                align: \"left\",\n              },\n              subtitle: {\n                text: \"\",\n                align: \"left\",\n              },\n              xAxis: {\n                type: \"datetime\",\n                tickInterval: 3600000,\n                min: parseInt(`${data.getTwelveHourVoltage.startPoint}000`),\n                max: parseInt(`${data.getTwelveHourVoltage.endPoint}000`),\n                labels: {\n                  format: \"{value:%H:%M}\",\n                },\n              },\n              yAxis: {\n                //min: 122,\n                title: {\n                  text: \"Voltios\",\n                },\n              },\n              tooltip: {\n                valueSuffix: \" V\",\n              },\n              plotOptions: {\n                spline: {\n                  lineWidth: 1.5,\n                  states: {\n                    hover: {\n                      lineWidth: 2.5,\n                    },\n                  },\n                  marker: {\n                    enabled: false,\n                  },\n                },\n              },\n              time: {\n                timezoneOffset: 300,\n              },\n              series: data.getTwelveHourVoltage.show_data,\n              navigation: {\n                menuItemStyle: {\n                  fontSize: \"10px\",\n                },\n              },\n            }}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default GraphVoltage;\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { AuthContext } from \"../../../context/AuthProvider\";\r\nimport { useQuery } from \"@apollo/client\";\r\nimport { GET_TWELVE_HOUR_AMPS } from \"../../../controllers/measurersController\";\r\nimport Highcharts from \"highcharts/highstock\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\n\r\n//Function\r\nimport { Dates } from \"./helperDate\";\r\n\r\nconst GraphAmps = ({ projectID, timeZone }) => {\r\n  const { serial, dateMUI } = useContext(AuthContext);\r\n\r\n  const { data, loading } = useQuery(GET_TWELVE_HOUR_AMPS, {\r\n    variables: {\r\n      serial: serial,\r\n      start_time: Dates(dateMUI).start,\r\n      end_time: Dates(dateMUI).end,\r\n      time_zone: timeZone,\r\n    },\r\n    fetchPolicy: \"no-cache\",\r\n  });\r\n  if (loading || !data) {\r\n    return <></> /* <LoadingVoltage /> */;\r\n  }\r\n\r\n  return (\r\n    <div className=\"__details_measurer_consumption_voltage_graphic__\">\r\n      {data.getTwelveHourVoltage ? (\r\n        <div className=\"date_vacio_report_measurer\">\r\n          <span>\r\n            <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n          </span>\r\n        </div>\r\n      ) : (\r\n        <HighchartsReact\r\n          highcharts={Highcharts}\r\n          options={{\r\n            chart: {\r\n              type: \"spline\",\r\n              scrollablePlotArea: {\r\n                minWidth: 600,\r\n              },\r\n            },\r\n            title: {\r\n              text: \"Amperaje últimas 24 horas\",\r\n              align: \"left\",\r\n            },\r\n            subtitle: {\r\n              text: \"\",\r\n              align: \"left\",\r\n            },\r\n            xAxis: {\r\n              type: \"datetime\",\r\n              tickInterval: 3600000,\r\n              min: parseInt(`${data.getTwelveHourAmperage.startPoint}000`),\r\n              max: parseInt(`${data.getTwelveHourAmperage.endPoint}000`),\r\n              labels: {\r\n                format: \"{value:%H:%M}\",\r\n              },\r\n            },\r\n            yAxis: {\r\n              //min: 122,\r\n              title: {\r\n                text: \"Amperios\",\r\n              },\r\n            },\r\n            tooltip: {\r\n              valueSuffix: \" A\",\r\n            },\r\n            plotOptions: {\r\n              spline: {\r\n                lineWidth: 1.5,\r\n                states: {\r\n                  hover: {\r\n                    lineWidth: 2.5,\r\n                  },\r\n                },\r\n                marker: {\r\n                  enabled: false,\r\n                },\r\n              },\r\n            },\r\n            time: {\r\n              timezoneOffset: 300,\r\n            },\r\n            series: data.getTwelveHourAmperage.show_data,\r\n            navigation: {\r\n              menuItemStyle: {\r\n                fontSize: \"10px\",\r\n              },\r\n            },\r\n          }}\r\n        />\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GraphAmps;\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { AuthContext } from \"../../../context/AuthProvider\";\r\nimport { useQuery } from \"@apollo/client\";\r\nimport { GET_TWELVE_HOUR_WATTS } from \"../../../controllers/measurersController\";\r\nimport Highcharts from \"highcharts/highstock\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\n\r\n//Function\r\nimport { Dates } from \"./helperDate\";\r\n\r\nconst GraphWatts = ({ projectID, timeZone }) => {\r\n  const { serial, dateMUI } = useContext(AuthContext);\r\n\r\n  const { data, loading } = useQuery(GET_TWELVE_HOUR_WATTS, {\r\n    variables: {\r\n      serial: serial,\r\n      start_time: Dates(dateMUI).start,\r\n      end_time: Dates(dateMUI).end,\r\n      time_zone: timeZone,\r\n    },\r\n    fetchPolicy: \"no-cache\",\r\n  });\r\n\r\n  if (loading || !data) {\r\n    return <></> /* <LoadingVoltage /> */;\r\n  }\r\n  return (\r\n    <div className=\"__details_measurer_consumption_voltage_graphic__\">\r\n      {data.getTwelveHourVoltage ? (\r\n        <div className=\"date_vacio_report_measurer\">\r\n          <span>\r\n            <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n          </span>\r\n        </div>\r\n      ) : (\r\n        <HighchartsReact\r\n          highcharts={Highcharts}\r\n          options={{\r\n            chart: {\r\n              type: \"spline\",\r\n              scrollablePlotArea: {\r\n                minWidth: 600,\r\n                scrollPositionX: 1,\r\n              },\r\n            },\r\n            title: {\r\n              text: \"Watts/Vatios últimas 24 horas\",\r\n              align: \"left\",\r\n            },\r\n            subtitle: {\r\n              text: \"\",\r\n              align: \"left\",\r\n            },\r\n            xAxis: {\r\n              type: \"datetime\",\r\n              tickInterval: 3600000,\r\n              min: parseInt(`${data.getTwelveHourWatting.startPoint}000`),\r\n              max: parseInt(`${data.getTwelveHourWatting.endPoint}000`),\r\n              labels: {\r\n                format: \"{value:%H:%M}\",\r\n              },\r\n            },\r\n            yAxis: {\r\n              //min: 122,\r\n              title: {\r\n                text: \"Watts\",\r\n              },\r\n            },\r\n            tooltip: {\r\n              valueSuffix: \" W\",\r\n            },\r\n            plotOptions: {\r\n              spline: {\r\n                lineWidth: 1.5,\r\n                states: {\r\n                  hover: {\r\n                    lineWidth: 2.5,\r\n                  },\r\n                },\r\n                marker: {\r\n                  enabled: false,\r\n                },\r\n              },\r\n            },\r\n            time: {\r\n              timezoneOffset: 300,\r\n            },\r\n            series: data.getTwelveHourWatting.show_data,\r\n            navigation: {\r\n              menuItemStyle: {\r\n                fontSize: \"10px\",\r\n              },\r\n            },\r\n          }}\r\n        />\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GraphWatts;\r\n","import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Tab from \"@mui/material/Tab\";\r\nimport TabContext from \"@mui/lab/TabContext\";\r\nimport TabList from \"@mui/lab/TabList\";\r\nimport TabPanel from \"@mui/lab/TabPanel\";\r\nimport GraphVoltage from \"./GraphVoltage\";\r\nimport GraphAmps from \"./GraphAmps\";\r\nimport GraphWatts from \"./GraphWatts\";\r\n\r\nexport default function TabGraphicVAV({ timeZone }) {\r\n  const [value, setValue] = React.useState(\"1\");\r\n\r\n  const handleChange = (event, newValue) => {\r\n    setValue(newValue);\r\n  };\r\n\r\n  return (\r\n    <Box sx={{ width: \"100%\", typography: \"body1\", marginBottom: \"5%\" }}>\r\n      <TabContext value={value}>\r\n        <Box sx={{ borderBottom: 1, borderColor: \"divider\" }}>\r\n          <TabList onChange={handleChange} aria-label=\"lab API tabs example\">\r\n            <Tab label=\"Watts\" value=\"1\" />\r\n            <Tab label=\"Voltaje\" value=\"2\" />\r\n            <Tab label=\"Amperaje\" value=\"3\" />\r\n            {/* <Tab label=\"Factor de Potencia\" value=\"4\" /> */}\r\n          </TabList>\r\n        </Box>\r\n        <TabPanel value=\"1\">\r\n          <GraphWatts timeZone={timeZone} />\r\n        </TabPanel>\r\n        <TabPanel value=\"2\">\r\n          <GraphVoltage timeZone={timeZone} />\r\n        </TabPanel>\r\n        <TabPanel value=\"3\">\r\n          <GraphAmps timeZone={timeZone} />\r\n        </TabPanel>\r\n      </TabContext>\r\n    </Box>\r\n  );\r\n}\r\n","import { useContext, useState, useEffect } from \"react\";\nimport { TableHead } from \"@material-ui/core\";\nimport { Table } from \"@material-ui/core\";\nimport {\n  TableContainer,\n  TableRow,\n  TableBody,\n  Paper,\n  TableCell,\n} from \"@material-ui/core\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport DateMUI from \"../../dateMUI/DateMUI\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\nimport { useQuery } from \"@apollo/client\";\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\n\nconst useStyles = makeStyles((theme) => ({\n  container: {\n    display: \"grid\",\n    width: \"95%\",\n    marginLeft: \"50px\",\n  },\n  celda: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    marginLeft: \"10px\",\n  },\n}));\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst TableConsumptions = ({ serial, city, dataConsumptionTable }) => {\n  const codigosCiudades = {\n    Bogotá: \"BG\",\n    Barranquilla: \"BQ\",\n    default: \"BQ\",\n  };\n  Object.freeze(codigosCiudades);\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n  const classes = useStyles();\n  const { t } = useTranslation();\n  const { data } = useQuery(GET_HISTORY_TWO, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      location: codigosCiudades[city] || codigosCiudades.default,\n      starTime: String(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n  \n  dataConsumptionTable(data);\n\n  return (\n    <>\n      <Paper className={classes.container}>\n        <TableContainer align=\"center\">\n          <Table aria-label=\"customized table\">\n            <TableHead>\n              <TableRow>\n                <StyledTableCell aling=\"center\">\n                  {t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.HOUR\"\n                  )}\n                </StyledTableCell>\n                <StyledTableCell aling=\"center\">\n                  {t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.INITIAL_MEASURE\"\n                  )}\n                </StyledTableCell>\n                <StyledTableCell aling=\"center\">\n                  {t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.FINAL_MEASURE\"\n                  )}\n                </StyledTableCell>\n                <StyledTableCell aling=\"center\">\n                  {t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.TOTAL\"\n                  )}\n                </StyledTableCell>\n                <StyledTableCell aling=\"center\">\n                  {t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.ACCUMULATED\"\n                  )}\n                </StyledTableCell>\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {data?.getConsumptionHistory?.totalBy?.activeEnergy.map(\n                (i, key) => (\n                  <StyledTableRow>\n                    <StyledTableCell>{i?.x}</StyledTableCell>\n                    <StyledTableCell aling=\"center\">\n                      {i?.initialValue} kWh\n                    </StyledTableCell>\n                    <StyledTableCell aling=\"center\">\n                      {i?.finalValue} kWh\n                    </StyledTableCell>\n                    <StyledTableCell aling=\"center\">{i?.y} kWh</StyledTableCell>\n                    <StyledTableCell aling=\"center\">\n                      {i?.accumulated} kWh\n                    </StyledTableCell>\n                  </StyledTableRow>\n                )\n              )}\n\n              <StyledTableRow>\n                <StyledTableCell2>Total</StyledTableCell2>\n                <StyledTableCell2 component=\"th\" scope=\"row\"></StyledTableCell2>\n                <StyledTableCell2 component=\"th\" scope=\"row\"></StyledTableCell2>\n                <StyledTableCell2 component=\"th\" scope=\"row\">\n                  {data?.getConsumptionHistory?.currentConsumption.activeEnergy}\n                  kWh\n                </StyledTableCell2>\n\n                <StyledTableCell2\n                  component=\"th\"\n                  scope=\"row\"\n                  align=\"center\"\n                ></StyledTableCell2>\n              </StyledTableRow>\n            </TableBody>\n          </Table>\n        </TableContainer>\n      </Paper>\n    </>\n  );\n};\nexport default TableConsumptions;","import React, { useState, useEffect, useContext, Fragment } from 'react';\nimport { AuthContext } from '../../context/AuthProvider';\nimport { useQuery } from '@apollo/client';\nimport { GET_METTER_AND_METTER_HISTORIES } from '../../controllers/measurersController';\nimport 'react-date-range/dist/styles.css';\nimport 'react-date-range/dist/theme/default.css';\nimport Loading from '../loading/Loading';\n//new Design\nimport { styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Paper from '@mui/material/Paper';\nimport Grid from '@mui/material/Unstable_Grid2';\n//New Components Design\nimport CardMacrometerA from '../macrometer/cardphaseA';\nimport CardMacrometerB from '../macrometer/cardphaseB';\nimport CardMacrometerC from '../macrometer/cardphaseC';\nimport CardTotal from '../macrometer/cardTotal';\n\n//Function\nimport { calculatedMinParameter, calculatedMaxParameter } from '../../utils/helpers';\n\n//components\n\nimport TabGraphic from './MeasurerDetails/TabGraphic';\nimport TabGraphicVAV from './MeasurerDetails/TabGraphicVAV';\nimport TableConsumptions from './NewMeasurerDetails/TableConsumptions';\n\nconst Item = styled(Paper)(({ theme }) => ({\n  backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',\n  ...theme.typography.body2,\n  padding: theme.spacing(1),\n  textAlign: 'center',\n  color: theme.palette.text.secondary,\n}));\n\nconst MeasurerDetails = ({ projectID, timeZone, serial }) => {\n  const { dateReport, seeGraphic, setSeeGraphic } = useContext(AuthContext);\n  const [parameterMax, setParameterMax] = useState(calculatedMaxParameter(dateReport, timeZone));\n  const [parameterMin, setParameterMin] = useState(calculatedMinParameter(dateReport, timeZone));\n  const [value, setValue] = useState();\n  const { data, loading } = useQuery(GET_METTER_AND_METTER_HISTORIES, {\n    variables: { serial },\n    fetchPolicy: 'no-cache',\n  });\n  useEffect(() => {\n    setSeeGraphic(true);\n  }, []);\n\n  if (loading || !data) {\n    return <Loading />;\n  }\n\n  return (\n    <Fragment>\n      <Box\n        sx={{\n          flexGrow: 1,\n          marginTop: 5,\n          backgroundColor: 'rgba(195, 1, 78, 0.)',\n        }}\n      >\n        <Grid\n          container\n          spacing={1}\n          sx={{ mx: '1%', mt: '40px' }}\n        >\n          <Grid\n            xs={12}\n            sm={12}\n            md={6}\n            lg={3}\n            xl={3}\n          >\n            <CardTotal data={data} />\n          </Grid>\n          <Grid\n            xs={12}\n            sm={12}\n            md={6}\n            lg={3}\n            xl={3}\n          >\n            <CardMacrometerA data={data} />\n          </Grid>\n          <Grid\n            xs={12}\n            sm={12}\n            md={6}\n            lg={3}\n            xl={3}\n          >\n            <CardMacrometerB data={data} />\n          </Grid>\n          <Grid\n            xs={12}\n            sm={12}\n            md={6}\n            lg={3}\n            xl={3}\n          >\n            <CardMacrometerC data={data} />\n          </Grid>\n          <Grid\n            xs={12}\n            sm={12}\n            md={12}\n            lg={12}\n            xl={12}\n            sx={{ height: '550px' }}\n          >\n            <TabGraphic timeZone={timeZone} />\n          </Grid>\n          {seeGraphic === true ? (\n            <Grid\n              xs={12}\n              sm={12}\n              md={12}\n              lg={12}\n              xl={12}\n              sx={{ height: '550px' }}\n            >\n              <TabGraphicVAV timeZone={timeZone} />\n            </Grid>\n          ) : (\n            <></>\n          )}\n        </Grid>\n      </Box>\n    </Fragment>\n  );\n};\n\nexport default MeasurerDetails;\n","import React, { useState, useEffect, useContext, useRef } from 'react';\r\nimport SemiCircleProgressBar from 'react-progressbar-semicircle';\r\nimport { Dialog, AppBar, Typography, Slide, IconButton, Toolbar, makeStyles } from '@material-ui/core';\r\nimport { calc_percent_watts, cacl_color_graph_measurer } from '../../utils/helpers';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { AuthContext } from '../../context/AuthProvider';\r\nimport { addDays } from 'date-fns';\r\nimport MeasurerDetails from '../../components/highcharts/MeasurerDetails';\r\n//query\r\nimport { useQuery } from '@apollo/client';\r\nimport { GET_METTER_AND_METTER_HISTORIES } from '../../controllers/measurersController';\r\nconst useStyles = makeStyles((theme) => ({\r\n  appBar: {\r\n    backgroundColor: '#3f9948',\r\n    position: 'fixed',\r\n  },\r\n  title: {\r\n    marginLeft: theme.spacing(2),\r\n    flex: 1,\r\n  },\r\n}));\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n  return (\r\n    <Slide\r\n      direction=\"up\"\r\n      ref={ref}\r\n      {...props}\r\n    />\r\n  );\r\n});\r\n\r\n//Meters-{id proyecto}\r\n\r\nconst Measurer = ({ serial, name, timeZone, alias }) => {\r\n  \r\n  const { data, loading } = useQuery(GET_METTER_AND_METTER_HISTORIES, {\r\n    variables: { serial },\r\n    fetchPolicy: 'no-cache',\r\n  });\r\n  const { setDateReport, setactiveNextBack, setSerial, setZoneP, setDateMacrometers, setDateMacrometersTwo, setValueDatepicker, permissionsRoleUser } = useContext(AuthContext);\r\n  const [openMeasurer, setOpenMeasurer] = useState(false);\r\n  const [openNewMeasurer, setOpenNewMeasurer] = useState(false);\r\n  const [totalPhases, setTotalphases] = useState(false);\r\n  const classes = useStyles();\r\n  const childRef = useRef();\r\n  const handleClose = () => {\r\n    setOpenMeasurer(false);\r\n    setactiveNextBack(false);\r\n    setDateMacrometers(0);\r\n    setDateMacrometersTwo(0);\r\n    setValueDatepicker(Date.parse(new Date()));\r\n  };\r\n \r\n\r\n  const percentageValue = (value) => {\r\n    if (value.length < 2) {\r\n      return (parseInt(value) / 10) * 100;\r\n    } else if (value.length < 3) {\r\n      return (parseInt(value) / 100) * 100;\r\n    } else if (value.length < 4) {\r\n      return (parseInt(value) / 1000) * 100;\r\n    } else if (value.length < 5) {\r\n      return (parseInt(value) / 10000) * 100;\r\n    } else if (value.length < 6) {\r\n      return (parseInt(value) / 100000) * 100;\r\n    } else if (value.length < 7) {\r\n      return (parseInt(value) / 1000000) * 100;\r\n    } else if (value.length < 8) {\r\n      return (parseInt(value) / 10000000) * 100;\r\n    } else if (value.length < 9) {\r\n      return (parseInt(value) / 100000000) * 100;\r\n    }\r\n  };\r\n\r\n  const handleOpenReportPhases = () => {\r\n    setDateMacrometers(0);\r\n    setZoneP(timeZone);\r\n    setSerial(serial);\r\n    setOpenMeasurer(true);\r\n    setactiveNextBack(true);\r\n    setDateReport([\r\n      {\r\n        startDate: new Date(),\r\n        endDate: addDays(new Date(), 0),\r\n        key: 'selection',\r\n      },\r\n    ]);\r\n  };\r\n  if (loading || !data) {\r\n    return <></>;\r\n  }\r\n  return (\r\n    <>\r\n      <div\r\n        onClick={permissionsRoleUser?.permissionsRole?.MedMacVer ? handleOpenReportPhases : false}\r\n        className=\"_measurer_container_\"\r\n      >\r\n        <div className=\"_measurer_title_container_\">\r\n          <div className=\"_measurer__title_\">\r\n            <span>Macromedidor - {alias === '' || null ? serial : alias}</span>\r\n          </div>\r\n        </div>\r\n        <div className=\"_measurer_container_kwh_\">\r\n          <div className=\"_measurer_data_container_\">\r\n            <span className=\"_measurer_data_number_\">{data.getMetterAndMetterHistories.lecturaActual.toFixed(0)}</span>\r\n            <span className=\"_measurer_data_kwh_\">kWh</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div className=\"_measurer_container_watts_\">\r\n          <SemiCircleProgressBar\r\n            diameter={150}\r\n            strokeWidth={15}\r\n            stroke=\"rgba(162, 99, 239, 1)\"\r\n            background=\"rgba(162, 99, 239, 0.3)\"\r\n            percentage={`${percentageValue(\r\n              (data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value).toString()\r\n            )}`}\r\n          />\r\n        </div>\r\n        <div className=\"_measurer_container_range_\">\r\n          <span className=\"_measurer__range_\">0</span>\r\n          <span className=\"_measurer__range_\">100000</span>\r\n        </div>\r\n        <div className=\"_measurer_container_value_\">\r\n          {data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value} Watts\r\n        </div>\r\n      </div>\r\n      <Dialog\r\n        fullScreen\r\n        open={openMeasurer}\r\n        onClose={handleClose}\r\n        TransitionComponent={Transition}\r\n      >\r\n        <AppBar className={classes.appBar}>\r\n          <Toolbar>\r\n            <IconButton\r\n              edge=\"start\"\r\n              color=\"inherit\"\r\n              onClick={handleClose}\r\n              aria-label=\"close\"\r\n            >\r\n              <CloseIcon />\r\n            </IconButton>\r\n            <Typography\r\n              variant=\"h6\"\r\n              className={classes.title}\r\n            >\r\n              Macromedidor {alias} con serial {serial}\r\n            </Typography>\r\n          </Toolbar>\r\n        </AppBar>\r\n\r\n        <MeasurerDetails\r\n          //projectID={data.getProjectByIdHeader[0].id}\r\n          timeZone={timeZone}\r\n          serial={serial}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default Measurer;\r\n","import { AuthContext } from \"../../../context/AuthProvider\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { define_time_zone } from \"../../../utils/helpers\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst GraphKwhPhases = ({ data, endTime, startTime }) => {\n  const { t } = useTranslation();\n  const [date_range, setDateRange] = useState([]);\n  const [dateMax, setDateMax] = useState();\n  const [dateMin, setDateMin] = useState();\n\n  // const variable = data.data.getClampsMeasure.data_watts;\n  const endTimeRango = endTime - 61000;\n\n  // if (data) {\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n          },\n          title: {\n            text: \"Watts\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            min: startTime,\n            max: endTimeRango,\n            tickInterval: 3600000,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            min: 0,\n            title: {\n              text: t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.Y_AXIS_DESCRIPTION\"\n              ),\n            },\n          },\n          colors: [\"#000000\"],\n          tooltip: {\n            xDateFormat: \"Hora: %H:%M:%S\",\n            valueSuffix: \" watts\",\n            valueDecimals: 1,\n            shared: true,\n          },\n          plotOptions: {\n            column: {\n              stacking: \"line\",\n            },\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n            series: {\n              turboThreshold: 0,\n              marker: {\n                enabled: false,\n                radius: 0.1,\n                symbol: \"circle\",\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getClampsMeasure.data_watts,\n        }}\n      />\n    </div>\n  );\n  // }\n};\nexport default GraphKwhPhases;\n","import Highcharts from 'highcharts/highstock';\nimport HighchartsReact from 'highcharts-react-official';\nimport { define_time_zone } from '../../../utils/helpers';\nimport { useTranslation } from 'react-i18next';\n\nconst GraphMeasurerPhases = ({ data, endTime, startTime }) => {\n  const endTimeRango = endTime - 61000;\n\n  const { t } = useTranslation();\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zooming: {\n              mouseWheel: false,\n            },\n            type: 'column',\n          },\n          colors: ['#04b431'],\n\n          title: {\n            align: 'left',\n            text: `Consumo total de ${''} kWh `,\n          },\n\n          subtitle: {\n            align: 'left',\n            text: '' /* \"Click the columns to view details. \" */,\n          },\n          accessibility: {\n            announceNewData: {\n              enabled: true,\n            },\n          },\n          xAxis: {\n            type: 'datetime',\n            min: startTime,\n            max: endTimeRango,\n            tickInterval: 3600000,\n            labels: {\n              format: '{value:%H:%M}',\n            },\n          },\n          yAxis: {\n            title: {\n              text: '',\n            },\n            min: 0,\n          },\n          legend: {\n            enabled: false,\n          },\n          plotOptions: {\n            series: {\n              borderWidth: 0,\n              dataLabels: {\n                enabled: true,\n                format: '{point.y:.1f}',\n              },\n            },\n          },\n\n          tooltip: {\n            headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\n            pointFormat: '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: [\n            {\n              name: '{value:%H:%M}',\n              colorByPoint: true,\n              data: data?.getClampsMeasure?.data_kwh[0]?.data,\n            },\n          ],\n        }}\n      />\n    </div>\n  );\n};\nexport default GraphMeasurerPhases;\n","import { TableContainer, Table, TableHead, TableRow, TableBody, Paper, TableCell } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport { roundTotalBy } from '../../../utils/helpers';\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: '#4caf50e6',\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 18,\n  },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: '#4caf50e6',\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: 'bold',\n  },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    '&:nth-of-type(odd)': {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst TabConsumptionPhases = (data) => {\n  const { t } = useTranslation();\n  return (\n    <>\n      <div className=\"_measurergeneral_container_tables_new\">\n        <TableContainer component={Paper}>\n          <div className=\"hola\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.TITLE')}</div>\n          <Table arial-label=\"customized table\">\n            <TableHead>\n              <TableRow>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.HOUR')}</StyledTableCell>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.INITIAL_MEASURE')}</StyledTableCell>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.FINAL_MEASURE')}</StyledTableCell>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TOTAL')}</StyledTableCell>\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {data?.data?.getClampsMeasure?.totals.map((i) => (\n                <StyledTableRow>\n                  <StyledTableCell align=\"center\">00:00</StyledTableCell>\n                  <StyledTableCell align=\"center\">{`${i?.accumulated.initial.toFixed(1)} kwh`}</StyledTableCell>\n                  <StyledTableCell align=\"center\">{`${i?.accumulated.final.toFixed(1)} kwh`}</StyledTableCell>\n                  <StyledTableCell align=\"center\">{`${i?.value.toFixed(1)} kwh`}</StyledTableCell>\n                </StyledTableRow>\n              ))}\n            </TableBody>\n          </Table>\n        </TableContainer>\n      </div>\n      <div className=\"__measurergeneral_grid_title_tables__new\">\n        <span>\n          <hr></hr>\n        </span>\n        <span>{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TITLE')}</span>\n        <span>\n          <hr />\n        </span>\n      </div>\n      <div className=\"_measurergeneral_container_tables_new\">\n        <TableContainer component={Paper}>\n          <div className=\"__report_measurer_by_room__new\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.DESCRIPTION')}</div>\n          <Table aria-label=\"customized table\">\n            <TableHead>\n              <TableRow>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.HOUR')}</StyledTableCell>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.INITIAL_MEASURE')}</StyledTableCell>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.FINAL_MEASURE')}</StyledTableCell>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.ACCUMULATED')}</StyledTableCell>\n                <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TOTAL')}</StyledTableCell>\n              </TableRow>\n            </TableHead>\n            <TableBody>\n            {data?.data?.getClampsMeasure?.total_by?.map((i) => (\n                <StyledTableRow>\n                  <StyledTableCell align=\"center\">{String(roundTotalBy(i.x))}</StyledTableCell>\n                  <StyledTableCell align=\"center\">{`${i?.initialValue} kwh`}</StyledTableCell>\n                  <StyledTableCell align=\"center\"> {`${i?.finalValue} kwh`}</StyledTableCell>\n                  <StyledTableCell align=\"center\"> {`${i?.dailyAccumulated} kwh`}</StyledTableCell>\n                  <StyledTableCell align=\"center\">{i?.dailyAccumulated} kwh</StyledTableCell>\n                </StyledTableRow>\n              ))}\n            </TableBody>\n          </Table>\n        </TableContainer>\n      </div>\n    </>\n  );\n};\nexport default TabConsumptionPhases;\n","//React Hooks\nimport { useContext, useEffect, useState } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Apollo Hooks and Queries\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport { GET_CLAMPS_MEASURE } from \"../../../controllers/measurersController\";\n\n//Components\nimport DatePicker from \"../../globals/datepicker/datepicker\";\nimport GraphKwhPhases from \"./GraphKwhPhases\";\nimport GraphMeasurerPhases from \"./GraphMeasurerPhases\";\nimport Loading from \"../../loading/Loading\";\nimport { ReactDateRangePicker } from \"../../reactDateRange\";\nimport TabConsumptionPhases from \"./TabConsumptionPhases\";\n\n//Helper functions\nimport {\n  calculatedMinParameter,\n  calculatedMaxParameter,\n} from \"../../../utils/helpers\";\n\nconst NewMeasurerPhases = ({ measurer, timeZone }) => {\n  const {\n    dateReport,\n    setCalendarDatePicker,\n    calendarDatePicker,\n    globalCalendarDay,\n  } = useContext(AuthContext);\n  const startTime = calculatedMinParameter(globalCalendarDay, timeZone);\n  const endTime = calculatedMaxParameter(globalCalendarDay, timeZone) + 61000;\n  const [timeStart, setTimeStart] = useState(startTime);\n  const [timeEnd, setTimeEnd] = useState(endTime);\n  const deviceId = measurer.deviceId;\n\n  // const { data, loading } = useQuery(GET_CLAMPS_MEASURE, {\n  //   variables: {\n  //     timeZone: String(Intl.DateTimeFormat().resolvedOptions().timeZone),\n  //     deviceId: deviceId,\n  //     startTime: timeStart,\n  //     endTime: timeEnd,\n  //   },\n  //   fetchPolicy: \"no-cache\",\n  // });\n\n  const [getClampsMeasure, { data, loading, error }] =\n    useLazyQuery(GET_CLAMPS_MEASURE);\n\n  useEffect(() => {\n    if (globalCalendarDay) {\n      handleReport();\n    }\n  }, [globalCalendarDay]);\n\n  const handleReport = () => {\n    setTimeStart(globalCalendarDay.getTime());\n    setTimeEnd(globalCalendarDay.getTime() + 86460000);\n    handlerIonLabsMeasurerReport();\n  };\n\n  const handlerIonLabsMeasurerReport = () => {\n    getClampsMeasure({\n      variables: {\n        timeZone: String(Intl.DateTimeFormat().resolvedOptions().timeZone),\n        deviceId: deviceId,\n        startTime: globalCalendarDay.getTime(),\n        endTime: globalCalendarDay.getTime() + 86460000,\n      },\n      fetchPolicy: \"no-cache\",\n    });\n  };\n\n  // const handlePrevius = () => {\n  //   let back = timeStart - 86400000;\n  //   const newToday = new Date(back);\n  //   setTimeStart(back);\n  //   setCalendarDatePicker(newToday);\n  //   let next = timeEnd - 86400000;\n  //   setTimeEnd(next);\n  // };\n\n  // const handleNext = () => {\n  //   let back = timeStart + 86400000;\n  //   setTimeStart(back);\n  //   let next = timeEnd + 86400000;\n  //   setTimeEnd(next);\n  //   const newToday = new Date(back);\n  //   setCalendarDatePicker(newToday);\n  // };\n\n  if (loading) {\n    return <Loading />;\n  }\n  // if (data) {\n  return (\n    <>\n      <div className=\"DatePickerContainer\">\n        {/* <DatePicker\n            type=\"calendar\"\n            handleQuery={handleReport}\n            back={handlePrevius}\n            next={handleNext}\n            selectOption={{\n              changeInside: false,\n              changeRoomId: \"\",\n              stateRoomId: \"\",\n            }}\n          /> */}\n\n        <ReactDateRangePicker\n          selectTypeRange=\"d\"\n          closingTime={0}\n          closingType=\"n\"\n        />\n      </div>\n\n      <GraphMeasurerPhases\n        data={data}\n        endTime={globalCalendarDay.getTime() + 86460000}\n        startTime={globalCalendarDay.getTime()}\n      />\n      <GraphKwhPhases\n        data={data}\n        endTime={globalCalendarDay.getTime() + 86460000}\n        startTime={globalCalendarDay.getTime()}\n      />\n      <TabConsumptionPhases data={data} />\n    </>\n  );\n  // }\n};\nexport default NewMeasurerPhases;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport {\n  Dialog,\n  AppBar,\n  Typography,\n  Slide,\n  IconButton,\n  Toolbar,\n  makeStyles,\n} from \"@material-ui/core\";\nimport {\n  calc_percent_watts,\n  cacl_color_graph_measurer,\n} from \"../../utils/helpers\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport MeasurerPhases from \"../highcharts/MeasurerPhases\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { addDays } from \"date-fns\";\nimport Button from \"@material-ui/core/Button\";\nimport html2canvas from \"html2canvas\";\nimport { Hidden } from \"@material-ui/core\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport NewMeasurerPhases from \"../highcharts/NewMeasurerPhases/NewMeasurerPhases\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"fixed\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n    fontSize: \"1.25rem\",\n    [theme.breakpoints.down(\"xs\")]: { fontSize: \"1rem\" },\n  },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\n//Meters-{id proyecto}\n\nconst Measurer = ({ data, refetch, timeZone }) => {\n  const { t } = useTranslation();\n  const {\n    event,\n    setDateReport,\n    setactiveNextBack,\n    loadingPdf,\n    setLoadingPdf,\n    permissionsRoleUser,\n    setGlobalCalendarDay,\n  } = useContext(AuthContext);\n  const [openMeasurer, setOpenMeasurer] = useState(false);\n  const classes = useStyles();\n  const childRef = useRef();\n\n  const typeGateway = data?.Room?.Controller?.typeGateway;\n\n  // useEffect(() => {\n  //     if(data.id == event.id_device){\n  //         refetch()\n  //     }\n  // }, [event])\n\n  const handleClose = () => {\n    setOpenMeasurer(false);\n    setactiveNextBack(false);\n  };\n\n  const handleOpenReportPhases = () => {\n    setOpenMeasurer(true);\n    setactiveNextBack(true);\n    setGlobalCalendarDay(new Date());\n  };\n\n  return (\n    <>\n      <div\n        onClick={\n          permissionsRoleUser?.permissionsRole?.MedRpfVer\n            ? handleOpenReportPhases\n            : false\n        }\n        className=\"_measurer_container_\"\n      >\n        <div className=\"_measurer_title_container_\">\n          <div className=\"_measurer__title_\">\n            <span>{data?.alias}</span>\n          </div>\n        </div>\n        <div className=\"_measurer_container_kwh_\">\n          <div className=\"_measurer_data_container_\">\n            <span className=\"_measurer_data_number_\">\n              {Number(\n                `${\n                  data?.id == event.id_device && event.action == \"KWH\"\n                    ? event.status\n                    : data?.variables?.KWH\n                }`\n              ).toFixed(1)}\n            </span>\n            <span className=\"_measurer_data_kwh_\">kWh</span>\n          </div>\n        </div>\n        <div className=\"_measurer_container_watts_\">\n          <SemiCircleProgressBar\n            diameter={150}\n            stroke={cacl_color_graph_measurer(data?.variables?.Watts)}\n            percentage={`${calc_percent_watts(\n              `${\n                data?.id == event.id_device && event.action == \"Watts\"\n                  ? event.status\n                  : data?.variables?.Watts\n              }`\n            )}`}\n          />\n        </div>\n        <div className=\"_measurer_container_range_\">\n          <span className=\"_measurer__range_\">0</span>\n          <span className=\"_measurer__range_\">15000</span>\n        </div>\n        <div className=\"_measurer_container_value_\">\n          {Number(\n            `${\n              data?.id == event.id_device && event.action == \"Watts\"\n                ? event.status\n                : data?.variables?.Watts\n            }`\n          ).toFixed(1) | 0}{\" \"}\n          Watts\n        </div>\n      </div>\n      <Dialog\n        fullScreen\n        open={openMeasurer}\n        onClose={handleClose}\n        TransitionComponent={Transition}\n      >\n        <AppBar className={classes.appBar}>\n          <Toolbar>\n            <IconButton\n              edge=\"start\"\n              color=\"inherit\"\n              onClick={handleClose}\n              aria-label=\"close\"\n            >\n              <CloseIcon />\n            </IconButton>\n            <Typography className={classes.title}>\n              {` ${localStorage.getItem(\"nameProject\")} - ${t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_HEADER_MODAL.DESCRIPTION_TITLE\"\n              )} ${data?.alias}`}\n            </Typography>\n            {permissionsRoleUser?.permissionsRole?.MedRpfDes ? (\n              <Hidden mdDown>\n                <LoadingButton\n                  onClick={() => childRef.current.measurersPhases()}\n                  endIcon={<DownloadIcon />}\n                  loadingPosition=\"end\"\n                  color=\"inherit\"\n                >\n                  {t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_HEADER_MODAL.DOWNLOAD\"\n                  )}\n                </LoadingButton>\n                <Backdrop\n                  sx={{\n                    color: \"#fff\",\n                    zIndex: (theme) => theme.zIndex.drawer + 1,\n                  }}\n                  open={loadingPdf}\n                  onClick={loadingPdf}\n                >\n                  <CircularProgress color=\"inherit\" />\n                </Backdrop>\n              </Hidden>\n            ) : null}\n          </Toolbar>\n        </AppBar>\n        {typeGateway === \"horus_700\" ? (\n          <NewMeasurerPhases measurer={data} timeZone={timeZone} />\n        ) : (\n          <MeasurerPhases\n            {...{\n              timeZone,\n            }}\n            measurer={data}\n            ref={childRef}\n          />\n        )}\n      </Dialog>\n    </>\n  );\n};\n\nexport default Measurer;\n","//React hooks\nimport React, {\n  useState,\n  useEffect,\n  useContext,\n  forwardRef,\n  useRef,\n  useImperativeHandle,\n} from \"react\";\n\n//React styles\nimport \"react-date-range/dist/styles.css\";\nimport \"react-date-range/dist/theme/default.css\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI\nimport {\n  TableContainer,\n  Table,\n  TableHead,\n  TableRow,\n  TableBody,\n  Paper,\n  TableCell,\n} from \"@material-ui/core\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//React highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Apollo hooks and Queries\nimport { useLazyQuery, useQuery, useMutation } from \"@apollo/client\";\nimport { GET_DATA_MEASURER_BY_PROJECT } from \"../../controllers/reportController\";\nimport { PDF_MEASURE_GENERAL } from \"../../controllers/pdfControllers\";\n\n//Components\nimport Loading from \"../loading/Loading\";\nimport DatePicker from \"../globals/datepicker/datepicker\";\nimport DateCustom from \"../dates/DateCustom\";\nimport { ReactDateRangePicker } from \"../reactDateRange\";\n\n//PDF\nimport html2canvas from \"html2canvas\";\n\n//Helper functions\nimport {\n  sum_of_the_kwh,\n  date_of_the_kwh,\n  round_digits,\n  convert_time_measurergeneral,\n  calc_date_range,\n  date_last,\n  define_time_zone,\n  depuration_data_measurergeneral_report,\n  handleTime,\n  defice_toolTip_date,\n  dateRangeButton,\n  calculatedMinParameter,\n  calculatedMaxParameter,\n  roundTotalBy,\n  sumTotalBy,\n  formatDateLocal,\n} from \"../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n  },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n  head: {\n    backgroundColor: \"#4caf50e6\",\n    color: theme.palette.common.white,\n  },\n  body: {\n    fontSize: 14,\n    fontWeight: \"bold\",\n  },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n  root: {\n    \"&:nth-of-type(odd)\": {\n      backgroundColor: theme.palette.action.hover,\n    },\n  },\n}))(TableRow);\n\nconst MeasurerGeneral = forwardRef((props, ref) => {\n  const { t } = useTranslation();\n  const [pdfGenerator] = useMutation(PDF_MEASURE_GENERAL);\n  const {\n    dateReport,\n    setOpenDateCustom,\n    openDateCustom,\n    setDateReport,\n    rangeTable,\n    setRangeTable,\n    graphic,\n    setGraphic,\n    setLoadingPdf,\n    setPie,\n    pie,\n    globalReactDateRange,\n    setGlobalReactDateRange,\n  } = useContext(AuthContext);\n  const [measurer_data, setMeasurerData] = useState([]);\n  const [project, setProject] = useState(-5);\n  const [temp, setTemp] = useState(false);\n  const printRef = React.useRef();\n  const printRefP = React.useRef();\n  const { projectID, timeZone } = props;\n  const [basePdf, setBasePdf] = React.useState();\n\n  const [parameterMax, setParameterMax] = useState(\n    calculatedMaxParameter(dateReport, timeZone)\n  );\n  const [parameterMin, setParameterMin] = useState(\n    calculatedMinParameter(dateReport, timeZone)\n  );\n  const [date_range, setDateRange] = useState([]);\n  const [dayActual, setDayActual] = useState(new Date().getTime());\n  const [dateMax, setDateMax] = useState();\n  const [dateMin, setDateMin] = useState();\n\n  const [getMetersByProject, { data, loading, error }] = useLazyQuery(\n    GET_DATA_MEASURER_BY_PROJECT\n  );\n\n  useEffect(() => {\n    if (globalReactDateRange) {\n      handlerEpochTimeConverter();\n    }\n  }, [globalReactDateRange]);\n\n  const handlerEpochTimeConverter = () => {\n    let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n    let day_time_zone =\n      globalReactDateRange[0]?.startDate?.toString()?.substring(0, 16) +\n      \"00:00:00 GMT\" +\n      timeZone;\n\n    let day_time_end_zone =\n      globalReactDateRange[0]?.endDate?.toString()?.substring(0, 16) +\n      \"23:59:59 GMT\" +\n      timeZone;\n\n    let param =\n      globalReactDateRange[0]?.startDate?.toString()?.substring(0, 16) +\n      \"00:00:00 GMT\";\n\n    let tempPara =\n      new Date(param)?.getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n\n    let tmpDate = new Date(day_time_zone)?.getTime();\n\n    const temEndDate = new Date(day_time_end_zone)?.getTime();\n\n    //Parámetro inicial\n    setParameterMin(tempPara);\n    //Fecha inicial\n    setDateMin(tmpDate);\n    //parámetro final\n    setParameterMax(temEndDate);\n    //Fecha final\n    setDateMax(temEndDate);\n    //date ranges\n    // setDateRange(date_last(calc_date_range(globalReactDateRange)));\n    // setRangeTable(dateReport);\n    handlerGeneralMeasurerReport(tempPara, temEndDate);\n  };\n\n  const handlerGeneralMeasurerReport = (tempPara, temEndDate) => {\n    getMetersByProject({\n      variables: {\n        date_range: date_last(calc_date_range(globalReactDateRange)),\n        ProjectId: parseInt(projectID, 10),\n        start_time: tempPara,\n        end_time: temEndDate,\n        time_zone: String(timeZone),\n      },\n      fetchPolicy: \"no-cache\",\n    });\n  };\n\n  // useEffect(async () => {\n  //   // setMeasurerData(data)\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let day_time_zone =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     dateReport[0]?.endDate?.toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //date ranges\n  //   setDateRange(date_last(calc_date_range(dateReport)));\n  //   setRangeTable(dateReport);\n  // }, []);\n\n  // const handleQueryReport = (ref) => {\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let day_time_zone =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     dateReport[0]?.endDate?.toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   //openDateCusom\n  //   setOpenDateCustom(false);\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //date ranges\n  //   setDateRange(date_last(calc_date_range(dateReport)));\n  //   setRangeTable(dateReport);\n  //   setDayActual(dateReport[0].startDate.getTime());\n  // };\n\n  useEffect(() => {\n    if (data) {\n      setMeasurerData(data);\n      setTemp(true);\n    }\n  }, [data]);\n\n  // useEffect(async () => {\n  //   // setMeasurerData(data)\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   let day_time_zone =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     dateReport[0]?.endDate?.toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //date ranges\n  //   setDateRange(date_last(calc_date_range(dateReport)));\n  //   setRangeTable(dateReport);\n  // }, []);\n\n  //   const handleQueryReport = () => {\n  //     let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //     let day_time_zone =\n  //       dateReport[0].startDate.toString().substring(0, 16) +\n  //       \"00:00:00 GMT\" +\n  //       timeZone;\n\n  //     let day_time_end_zone =\n  //       dateReport[0].endDate.toString().substring(0, 16) +\n  //       \"23:59:59 GMT\" +\n  //       timeZone;\n  //     let param =\n  //       dateReport[0].startDate.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //     let tempPara =\n  //       new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //     let tmpDate = new Date(day_time_zone).getTime();\n\n  //     const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //     //openDateCusom\n  //     setOpenDateCustom(false);\n  //     //Parámetro inicial\n  //     setParameterMin(tempPara);\n  //     //Fecha inicial\n  //     setDateMin(tmpDate);\n  //     //parámetro final\n  //     setParameterMax(temEndDate);\n  //     //Fecha final\n  //     setDateMax(temEndDate);\n  //     //date ranges\n  //     setDateRange(date_last(calc_date_range(dateReport)));\n  //     setRangeTable(dateReport);\n  //     setDayActual(dateReport[0].startDate.getTime());\n  //   };\n\n  // const back = () => {\n  //   const backday = dayActual - 86400000;\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   const new_backday = new Date(backday);\n  //   let day_time_zone =\n  //     new Date(new_backday).toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     new Date(new_backday).toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     new Date(new_backday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   setDateReport([\n  //     {\n  //       startDate: new_backday,\n  //       endDate: new_backday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n\n  //   //openDateCusom\n  //   setOpenDateCustom(false);\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //date ranges\n  //   setDateRange(dateRangeButton(new_backday));\n  //   setRangeTable([\n  //     {\n  //       startDate: new_backday,\n  //       endDate: new_backday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n\n  //   setDayActual(backday);\n  // };\n\n  // const next = () => {\n  //   const nextday = dayActual + 86400000;\n  //   let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n  //   const new_nextday = new Date(nextday);\n  //   let day_time_zone =\n  //     new Date(new_nextday).toString().substring(0, 16) +\n  //     \"00:00:00 GMT\" +\n  //     timeZone;\n\n  //   let day_time_end_zone =\n  //     new Date(new_nextday).toString().substring(0, 16) +\n  //     \"23:59:59 GMT\" +\n  //     timeZone;\n  //   let param =\n  //     new Date(new_nextday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n  //   let tempPara =\n  //     new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n  //   let tmpDate = new Date(day_time_zone).getTime();\n\n  //   const temEndDate = new Date(day_time_end_zone).getTime();\n\n  //   setDateReport([\n  //     {\n  //       startDate: new_nextday,\n  //       endDate: new_nextday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n\n  //   //openDateCusom\n  //   setOpenDateCustom(false);\n  //   //Parámetro inicial\n  //   setParameterMin(tempPara);\n  //   //Fecha inicial\n  //   setDateMin(tmpDate);\n  //   //parámetro final\n  //   setParameterMax(temEndDate);\n  //   //Fecha final\n  //   setDateMax(temEndDate);\n  //   //date ranges\n  //   setDateRange(dateRangeButton(new_nextday));\n  //   setRangeTable([\n  //     {\n  //       startDate: new_nextday,\n  //       endDate: new_nextday,\n  //       key: \"selection\",\n  //     },\n  //   ]);\n  //   setDayActual(nextday);\n  // };\n\n  useEffect(() => {\n    if (graphic) {\n      if (\n        date_last(calc_date_range(globalReactDateRange)).length < 1 ||\n        date_last(calc_date_range(globalReactDateRange)).length == 1\n      ) {\n        imagePie();\n      }\n      if (date_last(calc_date_range(globalReactDateRange)).length > 1) {\n        dataPdf();\n      }\n    }\n  }, [graphic]);\n\n  useEffect(() => {\n    if (pie) {\n      dataPdf();\n    }\n  }, [pie]);\n\n  useEffect(() => {\n    if (basePdf) {\n      decodePdf();\n    }\n  }, [basePdf]);\n\n  const decodePdf = () => {\n    const linkSource = `data:application/pdf;base64,${basePdf}`;\n    const downloadLink = document.createElement(\"a\");\n    const fileName = \"Informe general de medición.pdf\";\n    downloadLink.href = linkSource;\n    downloadLink.download = fileName;\n    downloadLink.click();\n    /* let pdfWindow = window.open(\"\");\n    pdfWindow.document.write(\n      \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n        encodeURI(basePdf) +\n        \"'></iframe>\"\n    ); */\n    setLoadingPdf(false);\n    setGraphic(\"\");\n    setPie(\"\");\n    setBasePdf(\"\");\n  };\n\n  const imageGraphic = async () => {\n    const element = printRef.current;\n    const canvas = await html2canvas(element);\n    const data = canvas.toDataURL(\"image/jpg\");\n    setGraphic(data.slice(22));\n  };\n\n  const imagePie = async () => {\n    const elementTwo = printRefP.current;\n    const canvas = await html2canvas(elementTwo);\n    const data = canvas.toDataURL(\"image/jpg\");\n    setPie(data.slice(22));\n  };\n\n  const seeData = () => {\n    setLoadingPdf(false);\n    setGraphic(\"\");\n    setPie(\"\");\n  };\n\n  useImperativeHandle(ref, () => ({\n    async measuresGeneralPdf() {\n      //seeData();\n      setLoadingPdf(true);\n      await imageGraphic();\n    },\n  }));\n\n  const currentDate = new Date().getDate();\n  const startTime = globalReactDateRange[0]?.startDate?.getTime();\n  const finishTime =\n    currentDate == globalReactDateRange[0]?.endDate?.getDate()\n      ? globalReactDateRange[0]?.endDate?.getTime() - 86400000\n      : globalReactDateRange[0]?.endDate?.getTime();\n\n  function dataPdf() {\n    try {\n      pdfGenerator({\n        variables: {\n          image: [graphic, pie],\n          data: data?.getMetersByProject,\n          date_range: date_last(calc_date_range(globalReactDateRange)),\n          startTime: String(startTime),\n          finishTime: String(finishTime),\n          nameProject: localStorage.getItem(\"nameProject\"),\n          userName: localStorage.getItem(\"name\"),\n          imageProject: localStorage.getItem(\"imgProject\"),\n          datePrint: localStorage.getItem(\"localTime\"),\n        },\n      })\n        .then((resul) => {\n          setBasePdf(resul.data.pdfMeasureGeneral);\n        })\n        .catch((err) => {\n          console.log(err);\n        });\n    } catch (err) {\n      console.log(err);\n    }\n  }\n\n  if (loading || !data) {\n    return <Loading />;\n  }\n\n  const exitsMeasurerReport =\n    data?.getMetersByProject?.data_kwh?.length > 0 &&\n    data?.getMetersByProject?.totals?.length > 0;\n\n  return (\n    <div className=\"_measurergeneral_container_dates_\">\n      {/* <DatePicker type='range' handleQuery={handleQueryReport} back={back} next={next} /> */}\n      {/* <DateCustom\n        exitsReport={exitsMeasurerReport}\n        handleQueryReport={handleQueryReport}\n        back={back}\n        next={next}\n      /> */}\n\n      <ReactDateRangePicker\n        selectTypeRange=\"m\"\n        closingTime={0}\n        closingType=\"n\"\n      />\n\n      {\n        <>\n          {data?.getMetersByProject &&\n          !(data?.getMetersByProject?.data_kwh?.length === 0) ? (\n            <>\n              {dateMax && (\n                <div ref={printRef}>\n                  <div\n                    className=\"_measurergeneral_container_graphics_\"\n                    onClick={() => setOpenDateCustom(false)}\n                  >\n                    <HighchartsReact\n                      highcharts={Highcharts}\n                      options={{\n                        chart: {\n                          type: \"column\",\n                        },\n                        title: {\n                          text: t(\n                            \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.KILOWATTS_CONSUMPTION_GRAPH_TITLE\"\n                          ),\n                        },\n                        xAxis:\n                          date_last(calc_date_range(globalReactDateRange))\n                            ?.length <= 1\n                            ? {\n                                type: \"datetime\",\n                                min: parameterMin,\n                                max: parameterMax - 3600000,\n                                tickInterval: 3600000,\n                                labels: {\n                                  format: \"{value:%H:%M}\",\n                                },\n                              }\n                            : {\n                                type: \"datetime\",\n                                tickInterval: 86400000,\n                              },\n                        yAxis: {\n                          min: 0,\n                          max: data?.getMetersByProject?.length,\n                          tickAmount: data?.getMetersByProject?.length + 1,\n                          title: {\n                            text: t(\n                              \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.Y_AXIS_KILOWATTS_DESCRIPTION\"\n                            ),\n                          },\n                          stackLabels: {\n                            enabled: true,\n                            formatter: function () {\n                              return this.total?.toFixed(1);\n                            },\n                          },\n                        },\n                        colors: [\n                          \"#04b431\",\n                          \"#013adf\",\n                          \"#df01a5\",\n                          \"#DF2653\",\n                          \"#615C5D\",\n                          \"#D5DF03\",\n                          \"#1C1C1C\",\n                          \"#ee0f0f\",\n                          \"#FFAF0E\",\n                          \"#1f89e5e6\",\n                          \"#1f89e566\",\n                        ],\n                        plotOptions: {\n                          column: {\n                            stacking: \"stream\",\n                            maxPointWidth: 50,\n                          },\n                        },\n                        time: {\n                          timezoneOffset: define_time_zone(\n                            date_last(calc_date_range(globalReactDateRange)),\n                            timeZone\n                          ),\n                        },\n                        tooltip: {\n                          headerFormat: \"<b>{point.key}</b><br>\",\n                          valueDecimals: 1,\n                          xDateFormat: defice_toolTip_date(\n                            date_last(calc_date_range(globalReactDateRange))\n                          ),\n                          valueSuffix: \" kW h\",\n                        },\n                        series: data?.getMetersByProject?.data_kwh,\n                        credits: {\n                          enabled: false,\n                        },\n                      }}\n                    />\n                  </div>\n                </div>\n              )}\n            </>\n          ) : (\n            <>\n              <div className=\"date_vacio_report_measurer\">\n                <span>\n                  <i class=\"fas fa-exclamation-triangle\"></i>{\" \"}\n                  {t(\n                    \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.NO_DATA\"\n                  )}\n                </span>\n              </div>\n            </>\n          )}\n          <div ref={printRefP}>\n            <div className=\"_measurergeneral_container_graphics_\">\n              {data?.getMetersByProject &&\n              !(data?.getMetersByProject?.data_watts == undefined) ? (\n                <HighchartsReact\n                  highcharts={Highcharts}\n                  options={{\n                    chart: {\n                      zoomType: \"x\",\n                      type: \"spline\",\n                    },\n                    title: {\n                      text: \"Watts\",\n                    },\n\n                    xAxis: {\n                      type: \"datetime\",\n                      tickInterval: 3600000,\n                      min: parameterMin,\n                      max: parameterMax,\n                      labels: {\n                        format: \"{value:%H:%M}\",\n                      },\n                    },\n                    yAxis: {\n                      min: 0,\n                      title: {\n                        text: t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.Y_AXIS_WATSS_DESCRIPTION\"\n                        ),\n                      },\n                    },\n                    colors: [\n                      \"#04b431\",\n                      \"#013adf\",\n                      \"#df01a5\",\n                      \"#DF2653\",\n                      \"#615C5D\",\n                      \"#D5DF03\",\n                      \"#1C1C1C\",\n                      \"#ee0f0f\",\n                      \"#FFAF0E\",\n                      \"#1f89e5e6\",\n                      \"#1f89e566\",\n                    ],\n                    tooltip: {\n                      headerFormat: \"<b>{series.name}</b><br>\",\n                      pointFormat:\n                        \"<b>{point.y} watts </b><br><b>{point.key}</b>\",\n                      // valueSuffix: \" watts\",\n                      xDateFormat: \"Hora: %H:%M:%S\",\n                      valueDecimals: 1,\n                      shared: false,\n                      // followTouchMove: false,\n                      useHTML: true,\n                    },\n                    plotOptions: {\n                      column: {\n                        stacking: \"line\",\n                      },\n                      series: {\n                        turboThreshold: 0,\n                        marker: {\n                          enabled: false,\n                          radius: 0.1,\n                          symbol: \"circle\",\n                        },\n                      },\n                    },\n                    time: {\n                      timezoneOffset: define_time_zone(\n                        date_last(calc_date_range(globalReactDateRange)),\n                        timeZone\n                      ),\n                    },\n                    series: data?.getMetersByProject?.data_watts,\n                    credits: {\n                      enabled: false,\n                    },\n                  }}\n                />\n              ) : (\n                <></>\n              )}\n            </div>\n          </div>\n\n          <div className=\"_measurergeneral_container_tables_\">\n            <TableContainer component={Paper}>\n              <div className=\"__report_measurer_table_total_title__\">\n                {t(\n                  \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.TOTAL_SUMMARY\"\n                )}\n                ({convert_time_measurergeneral(globalReactDateRange)})\n              </div>\n              <Table aria-label=\"customized table\">\n                <TableHead>\n                  <TableRow>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.MEASUREMENT_NUMBER\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.AREA\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.INITIAL_MEASUREMENT\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">\n                      {t(\n                        \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.FINAL_MEASUREMENT\"\n                      )}\n                    </StyledTableCell>\n                    <StyledTableCell align=\"center\">Total</StyledTableCell>\n                  </TableRow>\n                </TableHead>\n                <TableBody>\n                  {data?.getMetersByProject?.totals\n                    ? data?.getMetersByProject?.totals?.map((i, key) => (\n                        <StyledTableRow>\n                          <StyledTableCell align=\"center\">\n                            {key + 1}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {i?.name}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {i?.accumulated\n                              ? `${i?.accumulated?.initial.toFixed(1)} kW h`\n                              : \"-\"}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {i.accumulated\n                              ? `${i?.accumulated?.final.toFixed(1)} kW h`\n                              : \"-\"}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {round_digits(i?.value)} kW h\n                          </StyledTableCell>\n                        </StyledTableRow>\n                      ))\n                    : false}\n                  <StyledTableRow>\n                    <StyledTableCell2 component=\"th\" scope=\"row\" align=\"center\">\n                      Total\n                    </StyledTableCell2>\n                    <StyledTableCell2\n                      component=\"th\"\n                      scope=\"row\"\n                    ></StyledTableCell2>\n                    <StyledTableCell2\n                      component=\"th\"\n                      scope=\"row\"\n                    ></StyledTableCell2>\n                    <StyledTableCell2\n                      component=\"th\"\n                      scope=\"row\"\n                    ></StyledTableCell2>\n                    <StyledTableCell2 component=\"th\" scope=\"row\" align=\"center\">\n                      {round_digits(data?.getMetersByProject?.total_range)} kW h\n                    </StyledTableCell2>\n                  </StyledTableRow>\n                </TableBody>\n              </Table>\n            </TableContainer>\n          </div>\n\n          <div className=\"__measurergeneral_grid_title_tables__\">\n            <span>\n              <hr />\n            </span>\n            <span>\n              {t(\n                \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.TOTAL_SUMMARY_PER_MEASUREMENT\"\n              )}\n            </span>\n            <span>\n              <hr />\n            </span>\n          </div>\n\n          <div className=\"_measurergeneral_grid_tables_\">\n            {data?.getMetersByProject?.data_kwh ? (\n              data?.getMetersByProject?.data_kwh?.map((j) => (\n                <div className=\"__report_measurer_rooms__\">\n                  <TableContainer component={Paper}>\n                    <div className=\"__report_measurer_by_room__\">{j?.name}</div>\n                    <Table aria-label=\"customized table\">\n                      <TableHead>\n                        <TableRow>\n                          <StyledTableCell align=\"center\">\n                            {t(\n                              \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.HOUR\"\n                            )}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            Total\n                          </StyledTableCell>\n                        </TableRow>\n                      </TableHead>\n                      <TableBody>\n                        {j?.data?.map((i, key) => (\n                          <StyledTableRow>\n                            <StyledTableCell align=\"center\">\n                              {date_of_the_kwh(\n                                i?.x,\n                                date_last(\n                                  calc_date_range(globalReactDateRange)\n                                ),\n                                key\n                              )}\n                            </StyledTableCell>\n                            <StyledTableCell align=\"center\">\n                              {i?.y?.toFixed(1)} kW h\n                            </StyledTableCell>\n                          </StyledTableRow>\n                        ))}\n                        <StyledTableRow>\n                          <StyledTableCell2\n                            component=\"th\"\n                            scope=\"row\"\n                            align=\"center\"\n                          >\n                            Total\n                          </StyledTableCell2>\n                          <StyledTableCell2\n                            component=\"th\"\n                            scope=\"row\"\n                            align=\"center\"\n                          >\n                            {round_digits(sum_of_the_kwh(j?.data))} kW h\n                          </StyledTableCell2>\n                        </StyledTableRow>\n                      </TableBody>\n                    </Table>\n                  </TableContainer>\n                </div>\n              ))\n            ) : (\n              <></>\n            )}\n            {data?.getMetersByProject?.total_by ? (\n              <div className=\"__report_measurer_rooms__\">\n                <TableContainer component={Paper}>\n                  <div className=\"__report_measurer_by_room__\">\n                    {t(\n                      \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.TOTAL_DAY_HOUR\"\n                    )}\n                  </div>\n                  <Table aria-label=\"customized table\">\n                    <TableHead>\n                      <TableRow>\n                        <StyledTableCell align=\"center\">\n                          {t(\n                            \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.HOUR\"\n                          )}\n                        </StyledTableCell>\n                        <StyledTableCell align=\"center\">Total</StyledTableCell>\n                      </TableRow>\n                    </TableHead>\n                    <TableBody>\n                      {data?.getMetersByProject?.total_by?.map((i) => (\n                        <StyledTableRow>\n                          <StyledTableCell align=\"center\">\n                            {roundTotalBy(i?.x)}\n                          </StyledTableCell>\n                          <StyledTableCell align=\"center\">\n                            {i === undefined || i?.length === 0\n                              ? \"-----\"\n                              : `${i?.y?.toFixed(1)}`}\n                            kW h\n                          </StyledTableCell>\n                        </StyledTableRow>\n                      ))}\n                      <StyledTableRow>\n                        <StyledTableCell2\n                          component=\"th\"\n                          scope=\"row\"\n                          align=\"center\"\n                        >\n                          Total\n                        </StyledTableCell2>\n                        <StyledTableCell2\n                          component=\"th\"\n                          scope=\"row\"\n                          align=\"center\"\n                        >\n                          {data?.getMetersByProject?.total_by.length !== 0\n                            ? sumTotalBy(data?.getMetersByProject?.total_by)\n                            : \"-----\"}{\" \"}\n                          kW h\n                        </StyledTableCell2>\n                      </StyledTableRow>\n                    </TableBody>\n                  </Table>\n                </TableContainer>\n              </div>\n            ) : (\n              <></>\n            )}\n          </div>\n        </>\n      }\n    </div>\n  );\n});\n\nexport default MeasurerGeneral;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport Dialog from \"@mui/material/Dialog\";\nimport TextField from \"@mui/material/TextField\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { useLazyQuery,  useMutation, useQuery } from \"@apollo/client\";\nimport { EXCEL_GENERAL_OCUPATION_REPORT } from \"../../../controllers/pdfControllers\";\nimport Loading from \"../../../components/loading/Loading\";\nimport Loading_devices from \"../../../components/loading/Loading_devices\";\n\n\n\nexport const ModalDateExcelIonLabs = ({open, projectID, timeZone, setOpenModalExcel}) => {\n    const [dateInitial, setDateInitial] = useState()\n    const [dateFinal, setDateFinal] = useState()\n    const [baseXLSX, setBaseXLSX] =useState()\n    const [loading, setLoading] = useState(false)\n    const [Mutation] = useMutation(EXCEL_GENERAL_OCUPATION_REPORT);\n    const nameProject = localStorage.getItem('nameProject')\n    const today = localStorage.getItem('localTime')\n\n   const handlerClose = () => {\n    setOpenModalExcel(false)\n   }\n\n   const handlerOpenLoading = () => {\n    setLoading(true)\n   }\n   const handlerCloseLoading = () => {\n    setLoading(false)\n    handlerClose()\n    setDateInitial()\n    setDateFinal()\n    setBaseXLSX()\n   \n   }\n\n    const handlerInitialDate = (e) => {\n        const date= e.target.value\n        setDateInitial(date)\n    }\n    const handlerFinalDate = (e) => {\n        const finDate = e.target.value\n        setDateFinal(finDate)\n    }\n\n    const handleClick = (e) => {\n      e.preventDefault();\n      e.currentTarget.querySelector(\"input\").showPicker(); // Abrir el calendario\n    };\n    const dateXlsx = ()  => {\n        try {\n             Mutation({\n                variables: {\n                    projectId: Number(projectID),\n                    startTime: new Date(dateInitial).getTime(),\n                    endTime: new Date(dateFinal).getTime(),\n                    dateRange: testRange(),\n                    timeZone: String(timeZone),\n                }\n            },setLoading(true))\n            \n            .then((resul)=>  {\n                    setBaseXLSX(resul.data?.generateExcelReport?.excelFile)\n                    if(resul) {\n                      decodeXLSX(resul.data?.generateExcelReport?.excelFile)\n                    }\n                    setLoading(false)\n              })\n              .catch((err) => {\n                console.log(err);\n              });\n          } catch (err) {\n            console.log(err);\n          }\n    }\n\n    const testRange =() => {\n      const dateRangeOne = new Date(dateInitial).getTime()\n      const dateRangeTwo = new Date(dateFinal).getTime()\n        if(dateRangeTwo > dateRangeOne) {\n          return [dateInitial, dateFinal]\n        } else {\n          return [dateFinal, dateInitial]\n        }\n        }\n\n    const decodeXLSX = (item) => {\n     \n          const linkSource = `data:application/xlsx;base64,${item}`\n          const downloadLink = document.createElement(\"a\");\n          const fileName = `Informe general de medición ${nameProject} ${testRange()}.xlsx`;\n           downloadLink.href = linkSource;\n           downloadLink.download = fileName;\n           downloadLink.click();\n           handlerCloseLoading()\n   \n    }\n\n    const currentDate = new Date(new Date().getTime() - 86000000).toISOString().split(\"T\")[0]\n    const handleValidationAccions = () => {\n      if (dateInitial === undefined) return true\n      if (dateFinal === undefined) return true\n      if (dateInitial === '') return true\n      if(dateFinal === '') return true\n    }\n\n  return (\n    <Dialog \n    sx={{\n        \"& .MuiDialog-paper\": {\n          width: \"80%\",\n          maxHeight: 500,\n          borderRadius: \"8px\",\n        },\n      }}\n      maxWidth=\"xs\"\n      open={open}>\n         <DialogTitle\n        sx={{\n          background: \"#3f9948\",\n          color: \"white\",\n          fontFamily: \"Montserrat, sans-serif\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"space-between\",\n          paddingRight: \"16px\", \n          fontSize:'16px'\n        }}\n      >\n       \n        <b style={{marginLeft:'20px'}}>Ingresa los datos requeridos a descargar</b>\n          {!loading ? \n          <Button sx={{ color: \"white\", marginRight: \"-14px\", }} onClick={handlerClose}> X</Button> : null\n          }\n   \n      </DialogTitle>\n      {!loading ? \n      <>\n        <DialogContent>\n        <p\n          style={{\n            fontFamily: \"Montserrat, sans serif\",\n            textAlign: \"justify\",\n            color: \"black\",\n          }}\n        >esta es una fase beta para descarga de informes XLSX</p>\n        <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"20px\" }}>\n          <TextField\n            onChange={handlerInitialDate}\n            name=\"initialDate\"\n            fullWidth\n            type=\"date\"\n            size=\"small\"\n            InputProps={{\n              sx: { borderRadius: \"8px\" }\n            }}\n            label=\"Fecha inicial\"\n            InputLabelProps={{\n            shrink: true, \n            }}\n            inputProps={{ max: currentDate,}}\n            onClick={(e) => handleClick(e)}\n          />\n          <TextField\n            onChange={handlerFinalDate}\n            disabled={dateInitial === undefined || dateInitial === ''}\n            name=\"finalDate\"\n            fullWidth\n            label=\"Fecha final\"\n            InputLabelProps={{\n            shrink: true, \n            }}\n            type=\"date\"\n            size=\"small\"\n            InputProps={{ sx: { borderRadius: \"8px\" } }}\n            inputProps={{ max: currentDate,}}\n            onClick={(e) => handleClick(e)}\n          />\n        </div>\n     \n        </DialogContent> \n           <DialogActions\n           sx={{\n             display: \"flex\",\n             justifyContent: \"center\",\n             padding: \"0px 24px 20px\",\n           }}\n         >\n    \n           <Button\n             fullWidth\n             sx={{\n               borderRadius: \"8px\",\n               marginBottom: \"5px\",\n               backgroundColor: \"#2EB142\",\n               color: \"white\",\n               fontFamily: \"Montserrat, sans serif \",\n               \"&:hover\": {\n                 backgroundColor: \"#336535\",\n               },\n             }}\n             onClick={dateXlsx}\n             disabled={handleValidationAccions()}\n           >\n             <b>Imprimir Informe</b>\n           </Button> \n         </DialogActions>\n         </>\n        :\n        <DialogContent>\n      <p\n        style={{\n          fontFamily: \"Montserrat, sans serif\",\n          textAlign: \"justify\",\n          color: \"black\",\n        }}\n      >Se esta generando el informe podria tardar unos segundos dependiendo la cantidad de datos </p>\n       {loading&& \n       <div style={{ display: 'grid', justifySelf: 'center', alignSelf: 'center', marginLeft: '45px', height: '100px',  width: '100px'}}>\n       <Loading_devices  />\n\n      </div> }\n      </DialogContent>\n     \n      }   \n        \n        \n        </Dialog>\n  )\n}\n","import SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { useQuery } from \"@apollo/client\";\nimport { percentage_total } from \"../../../utils/helpers\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const CardPhaseANew = ({ MeasurerDataPhases }) => {\n  const { t } = useTranslation();\n  const a = parseInt(MeasurerDataPhases?.PAFA);\n  return (\n    <div className=\"_cardMeasurers_container_\">\n      <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFA\">\n          <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\n            {t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_PHASES_CARD_HEADERS.PHASE_A\"\n            )}\n          </span>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\n          <SemiCircleProgressBar\n            percentage={`${percentage_total(a.toString())}`}\n            background=\"#F2F2F2 \"\n            strokeWidth={25}\n            stroke=\"#f7ce68\"\n          />\n\n          <span className=\"container_watts\">\n            <strong>{MeasurerDataPhases?.PAFA}</strong> Watts\n          </span>\n        </div>\n      </div>\n      <div className=\"__details_measurer_consumption_variables_CFA_value__\">\n        <div className=\" __details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\n          {\" \"}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              <strong>{MeasurerDataPhases?.VFA}</strong>\n\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.VOLTAGE\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              {\" \"}\n              <strong>{MeasurerDataPhases?.CFA}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.AMPERAGE\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFA\">\n          {\" \"}\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__ \">\n            <strong>Factor P.</strong>\n          </div> */}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              <strong> {MeasurerDataPhases?.FPFA}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.P_FACTOR\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { useQuery } from \"@apollo/client\";\nimport { percentage_total } from \"../../../utils/helpers\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const CardPhaseBNew = ({ MeasurerDataPhases }) => {\n  const { t } = useTranslation();\n  const a = parseInt(MeasurerDataPhases?.PAFB);\n\n  return (\n    <div className=\"_cardMeasurers_container_\">\n      <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFB\">\n          <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\n            {t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_PHASES_CARD_HEADERS.PHASE_B\"\n            )}\n          </span>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\n          <SemiCircleProgressBar\n            strokeWidth={25}\n            percentage={`${percentage_total(a.toString())}`}\n            background=\"#F2F2F2\"\n            // stroke=\"#8bc6ec\"\n            stroke=\"#468BE0\"\n          />\n          <span className=\"container_voltaje_data\">\n            <strong>{MeasurerDataPhases?.PAFB}</strong>\n            <span className=\"container_voltaje\">Watts</span>\n          </span>\n        </div>\n      </div>\n      <div className=\"__details_measurer_consumption_variables_CFA_value__\">\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n        <strong>Voltaje</strong>\n      </div> */}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              <strong>{MeasurerDataPhases?.VFB}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.VOLTAGE\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n        <strong>Corriente</strong>\n      </div> */}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              {\" \"}\n              <strong>{MeasurerDataPhases?.CFB}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.AMPERAGE\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFB\">\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n        <strong>Factor P.</strong>\n      </div> */}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              {\" \"}\n              <strong>{MeasurerDataPhases?.FPFB}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.P_FACTOR\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { percentage_total } from \"../../../utils/helpers\";\nimport { useQuery } from \"@apollo/client\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const CardPhaseCNew = ({ MeasurerDataPhases }) => {\n  const { t } = useTranslation();\n  const a = parseInt(MeasurerDataPhases?.PAFC);\n\n  return (\n    <div className=\"_cardMeasurers_container_\">\n      <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFC\">\n          <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\n            {t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_PHASES_CARD_HEADERS.PHASE_C\"\n            )}\n          </span>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\n          <SemiCircleProgressBar\n            percentage={`${percentage_total(a.toString())}`}\n            strokeWidth={25}\n            stroke=\"#ff2525\"\n            background=\"#F2F2F2\"\n          />\n          <span>\n            <strong>{MeasurerDataPhases?.PAFC}</strong> Watts\n          </span>\n        </div>\n      </div>\n      <div className=\"__details_measurer_consumption_variables_CFA_value__\">\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n        <strong>Voltaje</strong>\n      </div> */}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              <strong>{MeasurerDataPhases?.VFC}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.VOLTAGE\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n        <strong>Corriente</strong>\n      </div> */}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data\">\n              {\" \"}\n              <strong>{MeasurerDataPhases?.CFC}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.AMPERAGE\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n        <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFC\">\n          {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n        <strong>Factor P.</strong>\n      </div> */}\n          <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n            <span className=\"container_voltaje_data \">\n              {\" \"}\n              <strong>{MeasurerDataPhases?.FPFC}</strong>\n              <span className=\"container_voltaje\">\n                {t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.P_FACTOR\"\n                )}\n              </span>\n            </span>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","export const listMetter = [\n  { label: \"Amperio hora\", alias: \"Ah\", unidad: \"Ah\" },\n  { label: \"Frecuencia\", alias: \"FHz\", unidad: \"Hz\" },\n  { label: \"Corriente en el neutro\", alias: \"NC\", unidad: \"A\" },\n  { label: \"Reactiva exportada total\", alias: \"TExKVarh\", unidad: \"kVArh\"},\n  { label: \"Lectura Actual\", alias: \"TImKwh\", unidad: \"Kwh\" },\n  { label: \"Total activa exportada\", alias: \"TExKwh\", unidad: \"kWh\" },\n  { label: \"Total reactiva importada\", alias: \"TImKVarh\", unidad: \"kVArh\" },\n  { label: \"Consumo instantaneo\", alias: \"EI\", unidad: \"W\" },\n  { label: \"Total activa\", alias: \"TKWh\", unidad: \"KWh\" },\n  { label: \"Voltaje fase a fase b\", alias: \"VFAFB\", unidad: \"V\" },\n  { label: \"Voltaje fase b fase c\", alias: \"VFBFC\", unidad: \"V\" },\n  { label: \"Voltaje fase c fase a\", alias: \"VFCFA\", unidad: \"V\" },\n  { label: \"Total energía sistema\", alias: \"TSE\", unidad: \"W\" },\n];\n","import React, { useState, useEffect } from \"react\";\nimport ArrowDropDownCircleIcon from \"@mui/icons-material/ArrowDropDownCircle\";\nimport { listMetter } from \"./helperMetter\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport default function CardTotalNew({ measurerData, serial, city }) {\n  const { t } = useTranslation();\n  const prueba = measurerData;\n  const [currentIndex, setCurrentIndex] = useState(4);\n  const [dataVariables, setDataVariables] = useState(\n    prueba[listMetter[currentIndex]?.alias]\n  );\n  const [dataAliasNow, setDataAliasNow] = useState(\n    listMetter[currentIndex]?.alias\n  );\n  const [prevAlias, setPrevAlias] = useState(listMetter[3]?.alias);\n  const [nextAlias, setNextAlias] = useState(listMetter[5]?.alias);\n  const [dataName, setDataName] = useState(listMetter[currentIndex]?.label);\n  const [variableAbre, setVariableAbre] = useState(\n    listMetter[currentIndex]?.unidad\n  );\n  const prePage = () => {\n    setCurrentIndex((currentIndex - 1 + listMetter.length) % listMetter.length);\n    if (currentIndex === 0) {\n      setPrevAlias(listMetter[11]?.alias);\n      setNextAlias(listMetter[currentIndex]?.alias);\n    } else if (currentIndex === 1) {\n      setPrevAlias(listMetter[12]?.alias);\n      setNextAlias(listMetter[currentIndex]?.alias);\n    } else if (currentIndex > 1) {\n      setPrevAlias(listMetter[currentIndex - 2]?.alias);\n      setNextAlias(listMetter[currentIndex]?.alias);\n    }\n    if (currentIndex === 0) {\n      setDataVariables(prueba[listMetter[12]?.alias]);\n      setVariableAbre(listMetter[12]?.unidad);\n      setDataName(listMetter[12]?.label);\n      setDataAliasNow(listMetter[12]?.alias);\n    } else {\n      setDataVariables(prueba[listMetter[currentIndex - 1]?.alias]);\n      setVariableAbre(listMetter[currentIndex - 1]?.unidad);\n      setDataName(listMetter[currentIndex - 1]?.label);\n      setDataAliasNow(listMetter[currentIndex - 1]?.alias);\n    }\n  };\n\n  const nextPage = () => {\n    setCurrentIndex((currentIndex + 1 + listMetter.length) % listMetter.length);\n    if (currentIndex === 11) {\n      setNextAlias(listMetter[0]?.alias);\n      setPrevAlias(listMetter[currentIndex]?.alias);\n    } else if (currentIndex === 12) {\n      setNextAlias(listMetter[1]?.alias);\n      setPrevAlias(listMetter[currentIndex]?.alias);\n    } else if (currentIndex < 12) {\n      setNextAlias(listMetter[currentIndex + 2]?.alias);\n      setPrevAlias(listMetter[currentIndex]?.alias);\n    }\n    if (currentIndex === 12) {\n      setDataVariables(prueba[listMetter[0]?.alias]);\n      setVariableAbre(listMetter[0]?.unidad);\n      setDataName(listMetter[0]?.label);\n      setDataAliasNow(listMetter[0]?.alias);\n    } else {\n      setDataVariables(prueba[listMetter[currentIndex + 1]?.alias]);\n      setVariableAbre(listMetter[currentIndex + 1]?.unidad);\n      setDataName(listMetter[currentIndex + 1]?.label);\n      setDataAliasNow(listMetter[currentIndex + 1]?.alias);\n    }\n  };\n\n  const translatingCardHeaderTitle = () => {\n    if (dataName === \"Amperio hora\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.AMPERAGE_PER_HOURS\"\n      );\n    } else if (dataName === \"Frecuencia\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.FREQUENCY\"\n      );\n    } else if (dataName === \"Corriente en el neutro\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.NEUTRAL_CURRENT\"\n      );\n    } else if (dataName === \"Reactiva exportada total\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.REACTIVE_ENERGY\"\n      );\n    } else if (dataName === \"Lectura Actual\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PRESENT_READING\"\n      );\n    } else if (dataName === \"Total activa exportada\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_EXPORT_ACTIVE_ENERGY\"\n      );\n    } else if (dataName === \"Total reactiva importada\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_IMPORT_REACTIVE_ENERGY\"\n      );\n    } else if (dataName === \"Consumo instantaneo\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.INSTANT_CONSUMPTION\"\n      );\n    } else if (dataName === \"Total activa\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_ACTIVE\"\n      );\n    } else if (dataName === \"Voltaje fase a fase b\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PHASE_A_PHASE_B_VOLTAGE\"\n      );\n    } else if (dataName === \"Voltaje fase b fase c\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PHASE_B_PHASE_C_VOLTAGE\"\n      );\n    } else if (dataName === \"Voltaje fase c fase a\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PHASE_C_PHASE_A_VOLTAGE\"\n      );\n    } else if (dataName === \"Total energía sistema\") {\n      return t(\n        \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_SYSTEM_POWER\"\n      );\n    } else {\n      return null;\n    }\n  };\n\n  return (\n    <div className=\"_carTotalNew_ \">\n      <div className=\"__details_measurer_information_card_title__ background_CFT  background_CFA\">\n        <strong> {translatingCardHeaderTitle().toUpperCase()}</strong>\n      </div>\n      <div className=\"__details_measurer_consumption_voltage_variable_value__\">\n        <span className=\"container_value_button\">{dataVariables}</span>\n        <span className=\"unit_measurer\">{variableAbre}</span>\n      </div>\n      <div className=\"container_values_songs \">\n        <ArrowDropDownCircleIcon\n          sx={{\n            cursor: \"pointer\",\n            display: \"flex\",\n            transform: \"rotate(90deg)\",\n            color: \"#B3B3B3\",\n            \":hover\": { color: \"black\" },\n          }}\n          className=\"button_back\"\n          onClick={prePage}\n        />\n\n        <div className=\"color_values\">{prevAlias}</div>\n\n        <div className={`${\"container_value_button\"} `}>{dataAliasNow}</div>\n\n        <div className=\"color_values\">{nextAlias}</div>\n\n        <ArrowDropDownCircleIcon\n          sx={{\n            cursor: \"pointer\",\n            display: \"flex\",\n            transform: \"rotate(270deg)\",\n            color: \"#B3B3B3\",\n            \":hover\": { color: \"black\" },\n          }}\n          onClick={nextPage}\n        />\n      </div>\n    </div>\n  );\n}\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_TWELVE_HOUR_VOLTAGE_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphVoltage = ({ serial }) => {\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n  const { data } = useQuery(GET_TWELVE_HOUR_VOLTAGE_TWO, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      starTime: parseInt(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n            scrollablePlotArea: {\n              minWidth: 600,\n              scrollPositionX: 1,\n            },\n          },\n          title: {\n            text: t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.VOLTAGE_GRAPH_TITLE\"\n            ),\n            align: \"left\",\n          },\n          subtitle: {\n            text: \"\",\n            align: \"left\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            tickInterval: 3600000,\n            min: data?.getTwelveHourVoltage.starpoint,\n            max: data?.getTwelveHourVoltage.endpoint,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            //min: 122,\n            title: {\n              text: \"Voltios\",\n            },\n          },\n          tooltip: {\n            valueSuffix: \" V\",\n          },\n          plotOptions: {\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getTwelveHourVoltage.ShowData,\n          navigation: {\n            menuItemStyle: {\n              fontSize: \"10px\",\n            },\n          },\n          credits: {\n            enabled: false,\n          },\n        }}\n      />\n    </div>\n  );\n};\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { GET_TWELVE_HOUR_WATTS_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useQuery } from \"@apollo/client\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphWatts = ({ serial }) => {\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n  const { data } = useQuery(GET_TWELVE_HOUR_WATTS_TWO, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      starTime: parseInt(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n            scrollablePlotArea: {\n              minWidth: 600,\n              scrollPositionX: 1,\n            },\n          },\n          title: {\n            text: t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.WATTS_GRAPH_TITLE\"\n            ),\n            align: \"left\",\n          },\n          subtitle: {\n            text: \"\",\n            align: \"left\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            tickInterval: 3600000,\n            min: data?.getTwelveHourWatt?.starpoint,\n            max: data?.getTwelveHourWatt?.endpoint,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            //min: 122,\n            title: {\n              text: \"Watts\",\n            },\n          },\n          tooltip: {\n            valueSuffix: \" W\",\n          },\n          plotOptions: {\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getTwelveHourWatt?.ShowData,\n          navigation: {\n            menuItemStyle: {\n              fontSize: \"10px\",\n            },\n          },\n          credits: {\n            enabled: false,\n          },\n        }}\n      />\n    </div>\n  );\n};\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { GET_TWELVE_HOUR_CURRENT } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useQuery } from \"@apollo/client\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphCurrent = ({ serial }) => {\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n  const { data } = useQuery(GET_TWELVE_HOUR_CURRENT, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      starTime: parseInt(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n            scrollablePlotArea: {\n              minWidth: 600,\n              scrollPositionX: 1,\n            },\n          },\n          title: {\n            text: t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.AMPERAGE_GRAPH_TITLE\"\n            ),\n            align: \"left\",\n          },\n          subtitle: {\n            text: \"\",\n            align: \"left\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            tickInterval: 3600000,\n            min: data?.getTwelveHourCurrent?.starpoint,\n            max: data?.getTwelveHourCurrent?.endpoint,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            //min: 122,\n            title: {\n              text: \"Amperios\",\n            },\n          },\n          tooltip: {\n            valueSuffix: \" A\",\n          },\n          plotOptions: {\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getTwelveHourCurrent?.ShowData,\n          navigation: {\n            menuItemStyle: {\n              fontSize: \"10px\",\n            },\n          },\n          credits: {\n            enabled: false,\n          },\n        }}\n      />\n    </div>\n  );\n};\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { GET_TWELVE_HOUR_POWER_FACTOR } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useQuery } from \"@apollo/client\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphPowerFactor = ({ serial }) => {\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n  const { data } = useQuery(GET_TWELVE_HOUR_POWER_FACTOR, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      starTime: parseInt(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n            scrollablePlotArea: {\n              minWidth: 600,\n              // scrollPositionX: 1,\n            },\n          },\n          title: {\n            text: t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.P_FACTOR_GRAPH_TITLE\"\n            ),\n            align: \"left\",\n          },\n          subtitle: {\n            text: \"\",\n            align: \"left\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            tickInterval: 3600000,\n            min: data?.getTwelveHourPowerFactor?.starpoint,\n            max: data?.getTwelveHourPowerFactor?.endpoint,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            //min: 122,\n            title: {\n              text: \"Factor de Potencia\",\n            },\n          },\n          tooltip: {\n            valueSuffix: \" FP\",\n          },\n          plotOptions: {\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getTwelveHourPowerFactor?.ShowData,\n          navigation: {\n            menuItemStyle: {\n              fontSize: \"10px\",\n            },\n          },\n          credits: {\n            enabled: false,\n          },\n        }}\n      />\n    </div>\n  );\n};\n","import React, { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { secondClient } from \"../../../index\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_FREQUENCY_TEST } from \"../../../controllers/measurersController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewGraphFrequency = ({ serial }) => {\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n\n  const { data } = useQuery(GET_FREQUENCY_TEST, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      starTime: parseInt(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n            scrollablePlotArea: {\n              minWidth: 600,\n              // scrollPositionX: 1,\n            },\n          },\n          title: {\n            text: t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.FREQUENCY_GRAPH_TITLE\"\n            ),\n            align: \"left\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            tickInterval: 3600000,\n            min: data?.getFrequencyGraphs?.starpoint,\n            max: data?.getFrequencyGraphs?.endpoint,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            title: {\n              text: t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.FREQUENCY\"\n              ),\n            },\n            max: 60.2,\n            min: 59.9,\n          },\n\n          plotOptions: {\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getFrequencyGraphs?.ShowData,\n          navigation: {\n            menuItemStyle: {\n              fontSize: \"10px\",\n            },\n          },\n          credits: {\n            enabled: false,\n          },\n        }}\n      />\n    </div>\n  );\n};\n\nexport default NewGraphFrequency;\n","import React, { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { secondClient } from \"../../../index\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ARMONIC_CURRENT_TEST } from \"../../../controllers/measurersController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewGraphArmonicCurrent = ({ serial }) => {\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n\n  const { data } = useQuery(GET_ARMONIC_CURRENT_TEST, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      starTime: parseInt(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n            scrollablePlotArea: {\n              minWidth: 600,\n              // scrollPositionX: 1,\n            },\n          },\n          title: {\n            text: t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_CURRENT_GRAPH_TITLE\"\n            ),\n            align: \"left\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            tickInterval: 3600000,\n            min: data?.getHarmonicCurrentGraphs?.starpoint,\n            max: data?.getHarmonicCurrentGraphs?.endpoint,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            title: {\n              text: t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_CURRENT\"\n              ),\n            },\n          },\n          plotOptions: {\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getHarmonicCurrentGraphs?.ShowData,\n          navigation: {\n            menuItemStyle: {\n              fontSize: \"10px\",\n            },\n          },\n          credits: {\n            enabled: false,\n          },\n        }}\n      />\n    </div>\n  );\n};\n\nexport default NewGraphArmonicCurrent;\n","import React, { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { secondClient } from \"../../../index\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ARMONIC_VOLTAGE_TEST } from \"../../../controllers/measurersController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewGraphArmonicVoltage = ({ serial }) => {\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    setSeeGraphic,\n    dateMUI,\n  } = useContext(AuthContext);\n\n  const { data } = useQuery(GET_ARMONIC_VOLTAGE_TEST, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      starTime: parseInt(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n\n  return (\n    <div>\n      <HighchartsReact\n        highcharts={Highcharts}\n        options={{\n          chart: {\n            zoomType: \"x\",\n            type: \"spline\",\n            scrollablePlotArea: {\n              minWidth: 600,\n              // scrollPositionX: 1,\n            },\n          },\n          title: {\n            text: t(\n              \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_VOLTAGE_GRAPH_TITLE\"\n            ),\n            align: \"left\",\n          },\n          xAxis: {\n            type: \"datetime\",\n            tickInterval: 3600000,\n            min: data?.getHarmonicVoltageGraphs?.starpoint,\n            max: data?.getHarmonicVoltageGraphs?.endpoint,\n            labels: {\n              format: \"{value:%H:%M}\",\n            },\n          },\n          yAxis: {\n            title: {\n              text: t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_VOLTAGE\"\n              ),\n            },\n          },\n          plotOptions: {\n            spline: {\n              lineWidth: 1.5,\n              states: {\n                hover: {\n                  lineWidth: 2.5,\n                },\n              },\n              marker: {\n                enabled: false,\n              },\n            },\n          },\n          time: {\n            timezoneOffset: 300,\n          },\n          series: data?.getHarmonicVoltageGraphs?.ShowData,\n          navigation: {\n            menuItemStyle: {\n              fontSize: \"10px\",\n            },\n          },\n          credits: {\n            enabled: false,\n          },\n        }}\n      />\n    </div>\n  );\n};\n\nexport default NewGraphArmonicVoltage;\n","import * as React from 'react';\nimport Box from '@mui/material/Box';\nimport Tab from '@mui/material/Tab';\nimport TabContext from '@mui/lab/TabContext';\nimport TabList from '@mui/lab/TabList';\nimport TabPanel from '@mui/lab/TabPanel';\nimport { NewGraphVoltage } from './NewGraphVoltage';\nimport { NewGraphWatts } from './NewGraphWatts';\nimport { NewGraphCurrent } from './NewGraphCurrent';\nimport { NewGraphPowerFactor } from './NewGraphFDPotencia';\nimport NewGraphFrequency from './NewGraphFrequency';\nimport NewGraphArmonicCurrent from './NewGraphArmonicCurrent';\nimport NewGraphArmonicVoltage from './NewGraphArmonicVoltage';\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nexport default function TabNewGraphicVAV({ serial }) {\n  const { t } = useTranslation();\n  const [value, setValue] = React.useState('1');\n\n  const handleChange = (event, newValue) => {\n    setValue(newValue);\n  };\n  const currentDay = new Date();\n\n  const tabStyle = (tabValue) => ({\n    borderColor: '#BEBEBE',\n    borderTopLeftRadius: '10px',\n    boxShadow: 'rgba(0, 0, 0, 0.15) 0px 2px 2.6px',\n    borderTop: 'solid 0.7px #EFEFEF',\n\n    ...(value === tabValue && {\n      boxShadow: 'rgba(0, 0, 0, 0.35)  2px 5px 15px',\n      fontSize: '16px',\n      borderColor: '#EFEFEF',\n      borderTop: 'solid 0.5px #CBCBCB',\n      borderTopLeftRadius: '10px',\n      borderTopRightRadius: '10px',\n      fontWeight: 'bold',\n      color: '#3f9948',\n    }),\n  });\n  return (\n    <Box sx={{ width: '100%', typography: 'body1', marginBottom: '5%' }}>\n      <TabContext value={value}>\n        <Box sx={{ borderBottom: 1, borderColor: '#DCE0E5' }}>\n          <TabList\n            onChange={handleChange}\n            aria-label=\"lab API tabs example\"\n            sx={{ color: '#DCE0E5' }}\n            indicatorColor=\"#fff\"\n          >\n            <Tab\n              style={tabStyle('1')}\n              label=\"Watts\"\n              value=\"1\"\n            />\n            <Tab\n              style={tabStyle('2')}\n              label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.VOLTAGE')}\n              value=\"2\"\n            />\n            <Tab\n              style={tabStyle('3')}\n              label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.AMPERAGE')}\n              value=\"3\"\n            />\n            <Tab\n              style={tabStyle('4')}\n              label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.P_FACTOR')}\n              value=\"4\"\n            />\n            <Tab\n              style={tabStyle('5')}\n              label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.FREQUENCY')}\n              value=\"5\"\n            />\n            <Tab\n              style={tabStyle('6')}\n              label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_CURRENT')}\n              value=\"6\"\n            />\n            <Tab\n              style={tabStyle('7')}\n              label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_VOLTAGE')}\n              value=\"7\"\n            />\n          </TabList>\n        </Box>\n        <TabPanel value=\"1\">\n          <NewGraphWatts serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"2\">\n          <NewGraphVoltage serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"3\">\n          <NewGraphCurrent serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"4\">\n          <NewGraphPowerFactor serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"5\">\n          <NewGraphFrequency serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"6\">\n          <NewGraphArmonicCurrent serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"7\">\n          <NewGraphArmonicVoltage serial={serial} />\n        </TabPanel>\n      </TabContext>\n    </Box>\n  );\n}\n","import {\n  useContext,\n  useState,\n  useEffect,\n  forwardRef,\n  useRef,\n  useImperativeHandle,\n} from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport DatesMacrometer from \"../../../components/macrometer/datesMacrometer\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport DateMUI from \"../../dateMUI/DateMUI\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\nimport html2canvas from \"html2canvas\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphConsumptionDetail = (props) => {\n  const { serial, city } = props;\n\n  const codigosCiudades = {\n    Bogotá: \"BG\",\n    Barranquilla: \"BQ\",\n    default: \"BQ\",\n  };\n  Object.freeze(codigosCiudades);\n  const { t } = useTranslation();\n  const {\n    dateReport,\n    dateMacrometers,\n    dateMacrometersTwo,\n    dateMUI,\n    setGraphic,\n    setLoadingPdf,\n    setSeeGraphic,\n    rangeDatePicker,\n    setRangeDatePicker,\n    setRangeDatePickerToday,\n  } = useContext(AuthContext);\n  const [datas, setDatas] = useState(0);\n  // const printRef = useRef();\n  const { data } = useQuery(GET_HISTORY_TWO, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      location: codigosCiudades[city] || codigosCiudades.default,\n      starTime: String(Dates(dateMUI).start),\n    },\n    fetchPolicy: \"no-cache\",\n  });\n\n  useEffect(() => {\n    setSeeGraphic(true);\n    setRangeDatePicker([\n      {\n        ...rangeDatePicker.selection,\n        startDate: new Date(new Date()?.getTime() - 2589000000),\n        endDate: new Date(),\n        key: \"selection\",\n      },\n    ]);\n    setRangeDatePickerToday([\n      {\n        ...rangeDatePicker.selection,\n        startDate: new Date(new Date()?.getTime() - 2589000000),\n        endDate: new Date(),\n        key: \"selection\",\n      },\n    ]);\n  }, []);\n  return (\n    <div className=\"__details_measurer_consumption_graphic__\">\n      <div className=\"calendar_content\">\n        <DateMUI />\n      </div>\n\n      {data?.getConsumptionHistory?.series?.length === 0 ? (\n        <></>\n      ) : (\n        // <div ref={tabValue == \"1\" ? printRef : \"\"}>\n        <HighchartsReact\n          highcharts={Highcharts}\n          options={{\n            chart: {\n              zooming: {\n                mouseWheel: false,\n              },\n              type: \"column\",\n            },\n            colors: [\"#04b431\"],\n\n            title: {\n              align: \"left\",\n              text: `${t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_GRAPH_TITLE\"\n              )} ${\n                data?.getConsumptionHistory?.currentConsumption?.activeEnergy\n                  ? data?.getConsumptionHistory?.currentConsumption\n                      ?.activeEnergy\n                  : datas\n              } kWh `,\n            },\n\n            subtitle: {\n              align: \"right\",\n\n              style: {\n                color: \"#000\",\n                fontSize: \"16px\",\n              },\n              y: 40,\n            },\n            accessibility: {\n              announceNewData: {\n                enabled: true,\n              },\n            },\n            xAxis: {\n              type: \"category\",\n            },\n            yAxis: {\n              title: {\n                text: \"\",\n              },\n            },\n\n            plotOptions: {\n              column: {\n                grouping: false,\n                shadow: false,\n                borderRadius: 4,\n                borderWidth: 2,\n                borderColor: \"black\",\n              },\n              series: {\n                dataLabels: {\n                  enabled: true,\n                  format: \"{point.y:.1f}\",\n                },\n              },\n            },\n            legend: {\n              shadow: false,\n            },\n            tooltip: {\n              shared: true,\n              // headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\n              pointFormat:\n                '<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n            },\n            series: data?.getConsumptionHistory?.series,\n            credits: {\n              enabled: false,\n            },\n          }}\n        />\n        // </div>\n      )}\n    </div>\n  );\n};","//React hooks\nimport { useContext, useState, useEffect } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//React Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Apollo hooks and Queries\nimport { useLazyQuery } from \"@apollo/client\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\n\n//Components\nimport { ReactDateRangePicker } from \"../../reactDateRange/index\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n// import DatePicker from \"../../globals/datepicker/datepicker\";\n\nexport const NewGraphConsumptionDetailPerMonth = ({ serial, city }) => {\n  const codigosCiudades = {\n    Bogotá: \"BG\",\n    Barranquilla: \"BQ\",\n    default: \"BQ\",\n  };\n  Object.freeze(codigosCiudades);\n\n  const { t } = useTranslation();\n  const [datas, setDatas] = useState(0);\n  const {\n    setSeeGraphic,\n    rangeDatePicker,\n    setRangeDatePicker,\n    setRangeDatePickerToday,\n    globalReactDateRange,\n    setGlobalReactDateRange,\n  } = useContext(AuthContext);\n\n  const [getHistoryTwo, { data }] = useLazyQuery(GET_HISTORY_TWO, {\n    client: secondClient,\n    fetchPolicy: \"no-cache\",\n  });\n\n  const fetchHistoryData = (serial, startTime, endTime, location) => {\n    getHistoryTwo({\n      variables: {\n        serial: serial,\n        starTime: startTime,\n        endTime: endTime,\n        location: location,\n      },\n    });\n  };\n  \n  useEffect(() => {\n    if (datas !== 0) {\n      // setRangeDatePicker([\n      //   {\n      //     ...rangeDatePicker.selection,\n      //     startDate: new Date(new Date()?.getTime() - 2589000000),\n      //     endDate: new Date(),\n      //     key: \"selection\",\n      //   },\n      // ]);\n      // setRangeDatePickerToday([\n      //   {\n      //     ...rangeDatePicker.selection,\n      //     startDate: new Date(new Date()?.getTime() - 2589000000),\n      //     endDate: new Date(),\n      //     key: \"selection\",\n      //   },\n      // ]);\n    }\n\n    setGlobalReactDateRange([\n      {\n        startDate: new Date(new Date()?.getTime() - 2589000000),\n        endDate: new Date(),\n        key: \"selection\",\n      },\n    ]);\n\n    fetchHistoryData(\n      serial,\n      new Date(new Date()?.getTime() - 2589000000),\n      globalReactDateRange[0]?.endDate,\n      codigosCiudades[city] || codigosCiudades.default\n    );\n  }, []);\n\n  const handleFetchData = () => {\n    fetchHistoryData(\n      serial,\n      globalReactDateRange[0]?.startDate,\n      globalReactDateRange[0]?.endDate,\n      codigosCiudades[city] || codigosCiudades.default\n    );\n  };\n\n  useEffect(() => {\n    if (globalReactDateRange) {\n      handleFetchData();\n    }\n  }, [globalReactDateRange]);\n\n  useEffect(() => {\n    setSeeGraphic(false);\n  }, []);\n\n  return (\n    <>\n      {/* <div className=\"container_datePicker_macrometer\">\n        <DatePicker\n          handleQuery={handleFetchData}\n          type=\"range\"\n          selectOption={{ changeInside: false, stateRoomId: 0 }}\n          component={\"macrometer\"}\n        />\n      </div> */}\n\n      <ReactDateRangePicker\n        selectTypeRange=\"m\"\n        closingTime={0}\n        closingType=\"n\"\n        renderNextAndBack={false}\n      />\n\n      <div className=\"__details_measurer_consumption_graphic__\">\n        {data?.getConsumptionHistory?.length === 0 ? (\n          <></>\n        ) : (\n          <HighchartsReact\n            highcharts={Highcharts}\n            options={{\n              chart: {\n                zooming: {\n                  mouseWheel: false,\n                },\n                type: \"column\",\n              },\n              colors: [\"#04b431\"],\n              colors: [\"#04b431\"],\n\n              title: {\n                align: \"left\",\n                text: `${t(\n                  \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_GRAPH_TITLE\"\n                )} ${\n                  data?.getConsumptionHistory?.currentConsumption?.activeEnergy\n                    ? data?.getConsumptionHistory?.currentConsumption\n                        ?.activeEnergy\n                    : datas\n                } kWh `,\n              },\n\n              subtitle: {\n                align: \"right\",\n\n                style: {\n                  color: \"#000\",\n                  fontSize: \"16px\",\n                },\n                y: 40,\n              },\n              accessibility: {\n                announceNewData: {\n                  enabled: true,\n                },\n              },\n              xAxis: {\n                type: \"category\",\n                type: \"category\",\n              },\n              yAxis: {\n                title: {\n                  text: \"\",\n                  text: \"\",\n                },\n              },\n\n              plotOptions: {\n                column: {\n                  grouping: false,\n                  shadow: false,\n                  borderRadius: 4,\n                  borderWidth: 2,\n                  borderColor: \"black\",\n                },\n                series: {\n                  dataLabels: {\n                    enabled: true,\n                    format: \"{point.y:.1f}\",\n                    format: \"{point.y:.1f}\",\n                  },\n                },\n              },\n              legend: {\n                shadow: false,\n              },\n              tooltip: {\n                shared: true,\n                // headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\n                pointFormat:\n                  '<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n              },\n              series: data?.getConsumptionHistory?.series,\n              credits: {\n                enabled: false,\n              },\n            }}\n          />\n        )}\n      </div>\n    </>\n  );\n};\n","import { useContext, useState, useEffect } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Select from \"../../macrometer/selectMonth/selectMonth\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphConsumptionDetailYear = ({ serial, city }) => {\n  const { t } = useTranslation();\n  const {\n    setSeeGraphic,\n    rangeDatePicker,\n    setRangeDatePicker,\n    setRangeDatePickerToday,\n  } = useContext(AuthContext);\n  const [selectedOption, setSelectedOption] = useState(\"\");\n  const [year, setYear] = useState(timeConvertMacromedidor().year);\n  const listedYears = [];\n  const currentYear = new Date().getFullYear();\n  const [datas, setDatas] = useState(0);\n  const codigosCiudades = {\n    Bogotá: \"BG\",\n    Barranquilla: \"BQ\",\n    default: \"BQ\",\n  };\n  const { data } = useQuery(GET_HISTORY_TWO, {\n    client: secondClient,\n    variables: {\n      serial: serial,\n      year: parseInt(year),\n      location: codigosCiudades[city] || codigosCiudades.default,\n    },\n    fetchPolicy: \"no-cache\",\n  });\n  useEffect(() => {\n    setSeeGraphic(false);\n    setRangeDatePicker([\n      {\n        ...rangeDatePicker.selection,\n        startDate: new Date(new Date()?.getTime() - 2589000000),\n        endDate: new Date(),\n        key: \"selection\",\n      },\n    ]);\n    setRangeDatePickerToday([\n      {\n        ...rangeDatePicker.selection,\n        startDate: new Date(new Date()?.getTime() - 2589000000),\n        endDate: new Date(),\n        key: \"selection\",\n      },\n    ]);\n  }, []);\n\n  const handleSelectChange = (event) => {\n    setSelectedOption(event.target.value);\n    setYear(event.target.value);\n  };\n\n  for (let i = 2022; i <= currentYear; i++) {\n    listedYears?.push({\n      label: String(i),\n      value: Number(i),\n    });\n  }\n\n  return (\n    <div className=\"__details_measurer_consumption_graphic__\">\n      <div className=\"calendar_content\">\n        <Select\n          options={listedYears?.reverse()}\n          value={selectedOption}\n          onChange={handleSelectChange}\n        />\n      </div>\n      {data?.getConsumptionHistory.length === 0 ? (\n        <></>\n      ) : (\n        <HighchartsReact\n          highcharts={Highcharts}\n          options={{\n            chart: {\n              zooming: {\n                mouseWheel: false,\n              },\n              type: \"column\",\n            },\n            colors: [\"#04b431\"],\n\n            title: {\n              align: \"left\",\n              text: `${t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_GRAPH_TITLE\"\n              )} ${\n                data?.getConsumptionHistory?.currentConsumption.activeEnergy\n                  ? data?.getConsumptionHistory?.currentConsumption.activeEnergy\n                  : datas\n              } kWh `,\n            },\n\n            subtitle: {\n              align: \"left\",\n              text: \"\" /* \"Click the columns to view details. \" */,\n              align: \"left\",\n              text: \"\" /* \"Click the columns to view details. \" */,\n            },\n            accessibility: {\n              announceNewData: {\n                enabled: true,\n              },\n            },\n            xAxis: {\n              type: \"category\",\n            },\n            yAxis: {\n              title: {\n                text: \"\",\n              },\n            },\n            legend: {\n              enabled: false,\n            },\n            plotOptions: {\n              column: {\n                grouping: false,\n                shadow: false,\n                borderRadius: 4,\n                borderWidth: 2,\n                borderColor: \"black\",\n              },\n              series: {\n                dataLabels: {\n                  enabled: true,\n                  format: \"{point.y:.1f}\",\n                },\n              },\n            },\n\n            tooltip: {\n              headerFormat:\n                '<span style=\"font-size:11px\">{series.name}</span><br>',\n              pointFormat:\n                '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n              headerFormat:\n                '<span style=\"font-size:11px\">{series.name}</span><br>',\n              pointFormat:\n                '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n            },\n            series: data?.getConsumptionHistory?.series,\n            credits: {\n              enabled: false,\n            },\n          }}\n        />\n      )}\n    </div>\n  );\n};\n","import * as React from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Tab from \"@mui/material/Tab\";\nimport TabContext from \"@mui/lab/TabContext\";\nimport TabList from \"@mui/lab/TabList\";\nimport TabPanel from \"@mui/lab/TabPanel\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { NewGraphConsumptionDetail } from \"./NewGraphConsumptionDetailsDay\";\nimport { NewGraphConsumptionDetailPerMonth } from \"./NewGraphConsumptionDetailsMonth\";\nimport { NewGraphConsumptionDetailYear } from \"./NewGraphConsumptionDetailsYear\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    \"& .MuiTextField-root\": {\n      margin: theme.spacing(1),\n    },\n  },\n  prueba: {\n    bgcolor: \"red\",\n  },\n}));\n\nexport const TabNewGraphic = ({ serial, city }) => {\n  const { t } = useTranslation();\n  const [value, setValue] = React.useState(\"1\");\n  const classes = useStyles();\n  const handleChange = (event, newValue) => {\n    setValue(newValue);\n  };\n  const currentDay = new Date();\n  const tabStyle = (tabValue) => ({\n    borderColor: \"#BEBEBE\",\n    borderTopLeftRadius: \"10px\",\n    boxShadow: \"rgba(0, 0, 0, 0.15) 0px 2px 2.6px\",\n    borderTop: \"solid 0.7px #EFEFEF\",\n    ...(value === tabValue && {\n      boxShadow: \"rgba(0, 0, 0, 0.35)  2px 5px 15px\",\n      fontSize: \"16px\",\n      borderColor: \"#EFEFEF\",\n      borderTop: \"solid 0.5px #CBCBCB\",\n      borderTopLeftRadius: \"10px\",\n      borderTopRightRadius: \"10px\",\n      fontWeight: \"bold\",\n      color: \"#3f9948\",\n    }),\n  });\n\n  return (\n    <Box sx={{ width: \"100%\", height: \"10px\", typography: \"body1\" }}>\n      <TabContext value={value} sx={{ color: \"#3f9948\" }}>\n        <Box sx={{}}>\n          <TabList\n            indicatorColor=\"#fff\"\n            onChange={handleChange}\n            aria-label=\"lab API tabs example\"\n          >\n            <Tab\n              style={tabStyle(\"1\")}\n              label={t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_PER_DAY\"\n              )}\n              value=\"1\"\n            />\n            <Tab\n              style={tabStyle(\"2\")}\n              label={t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMTION_PER_MONTH\"\n              )}\n              value=\"2\"\n            />\n            <Tab\n              style={tabStyle(\"3\")}\n              label={t(\n                \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_PER_YEAR\"\n              )}\n              value=\"3\"\n            />\n          </TabList>\n        </Box>\n        <TabPanel value=\"1\">\n          <NewGraphConsumptionDetail city={city} serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"2\">\n          <NewGraphConsumptionDetailPerMonth city={city} serial={serial} />\n        </TabPanel>\n        <TabPanel value=\"3\">\n          <NewGraphConsumptionDetailYear city={city} serial={serial} />\n        </TabPanel>\n      </TabContext>\n    </Box>\n  );\n};\n","import { Fragment } from \"react\";\nimport React, {\n  useContext,\n  useEffect,\n  useState,\n  forwardRef,\n  useRef,\n  useImperativeHandle,\n} from \"react\";\n\n//global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI\nimport Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Unstable_Grid2\";\n\n//Apollo hooks, Queries and services\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_METTERS_HISTORY } from \"../../controllers/measurersController\";\nimport { PDF_MACROMETER } from \"../../controllers/pdfControllers\";\nimport { secondClient } from \"../../index\";\n\n//Components\nimport { CardPhaseANew } from \"./NewMesurersCards/CardPhaseANew\";\nimport { CardPhaseBNew } from \"./NewMesurersCards/CardPhaseBNew\";\nimport { CardPhaseCNew } from \"./NewMesurersCards/CardPhaseCNew\";\nimport CardTotalNew from \"./NewMesurersCards/CardTotalNew\";\nimport MessageError from \"../message/MessageError\";\nimport TabNewGraphicVAV from \"./NewMeasurerDetails/TabNewGraphicVAV\";\nimport { TabNewGraphic } from \"./NewMeasurerDetails/TabNewGraphic\";\nimport TableConsumptions from \"./NewMeasurerDetails/TableConsumptions\";\nimport html2canvas from \"html2canvas\";\n\n//Helper Functions\nimport { Dates } from \"./MeasurerDetails/helperDate\";\nimport { formatDateLocal, percentage_total } from \"../../utils/helpers\";\nimport { timeConvertMacromedidor } from \"../../utils/helpers\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewMeasurerDetails = forwardRef((props, ref) => {\n  const { serial, dato, city, startTimeProject } = props;\n  const { t } = useTranslation();\n  const { data } = useQuery(GET_METTERS_HISTORY, {\n    client: secondClient,\n    variables: { serial: serial },\n    fetchPolicy: \"no-cache\",\n  });\n\n  const {\n    seeGraphic,\n    setSeeGraphic,\n    graphic,\n    setGraphic,\n    pie,\n    setPie,\n    setLoadingPdf,\n    dateMUI,\n    rangeDatePicker,\n  } = useContext(AuthContext);\n  const [dataTable, setDataTable] = useState(\"\");\n  const [totalConsumptionTable, setTotalConsumptionTable] = useState(\"\");\n  const [createMacrometerPdf] = useMutation(PDF_MACROMETER);\n\n  const codigosCiudades = {\n    Bogotá: \"BG\",\n    Barranquilla: \"BQ\",\n    default: \"BQ\",\n  };\n  Object.freeze(codigosCiudades);\n\n  const [basePdf, setBasePdf] = useState();\n  const printRef = useRef();\n  const printRef2 = useRef();\n\n  const formatedTotalPhasesWattsA = percentage_total(\n    parseInt(data?.getMeterHistory[0]?.PAFA)?.toString()\n  );\n  const formatedTotalPhasesWattsB = percentage_total(\n    parseInt(data?.getMeterHistory[0]?.PAFB)?.toString()\n  );\n  const formatedTotalPhasesWattsC = percentage_total(\n    parseInt(data?.getMeterHistory[0]?.PAFC)?.toString()\n  );\n\n  const tlmKwh = dato?.TImKwh;\n\n  const totalPhasesWattsA = data?.getMeterHistory[0]?.PAFA;\n  const totalPhasesWattsB = data?.getMeterHistory[0]?.PAFB;\n  const totalPhasesWattsC = data?.getMeterHistory[0]?.PAFC;\n\n  const totalPhasesVoltageA = data?.getMeterHistory[0]?.VFA;\n  const totalPhasesVoltageB = data?.getMeterHistory[0]?.VFB;\n  const totalPhasesVoltageC = data?.getMeterHistory[0]?.VFC;\n\n  const totalPhasesAmperageA = data?.getMeterHistory[0]?.CFA;\n  const totalPhasesAmperageB = data?.getMeterHistory[0]?.CFB;\n  const totalPhasesAmperageC = data?.getMeterHistory[0]?.CFC;\n\n  const totalPhasesPowerFactorA = data?.getMeterHistory[0]?.FPFA;\n  const totalPhasesPowerFactorB = data?.getMeterHistory[0]?.FPFB;\n  const totalPhasesPowerFactorC = data?.getMeterHistory[0]?.FPFC;\n\n  // const init_time = (time) => {\n  //   const time_now = new Date().getHours();\n  //   if (time_now === 15 && time === \"15:00\") {\n  //     const time_actual = new Date().getTime() - 86400000;\n  //     return new Date(time_actual);\n  //   } else {\n  //     return Dates(time);\n  //   }\n  // };\n\n  // const [pdfFormatStartTime, setPdfFormatStartTime] = useState(dateMUI);\n  // const [parameterMax, setParameterMax] = useState(new Date());\n\n  useEffect(() => {\n    setSeeGraphic(true);\n  }, []);\n\n  useEffect(() => {\n    if (graphic) {\n      dataPdf();\n    }\n  }, [graphic]);\n\n  useEffect(() => {\n    if (basePdf) {\n      decodePdf();\n    }\n  }, [basePdf]);\n\n  useImperativeHandle(ref, () => ({\n    async macrometerPdf() {\n      setLoadingPdf(true);\n      await imageGraphic();\n    },\n  }));\n\n  const imageGraphic = async () => {\n    const element = printRef.current;\n    const element2 = printRef2.current;\n    const canvas = await html2canvas(element);\n    const canvas2 = await html2canvas(element2);\n    const data = canvas.toDataURL(\"image/jpg\");\n    const data2 = canvas2.toDataURL(\"image/jpg\");\n    setGraphic(data.slice(22));\n    setPie(data2.slice(22));\n  };\n\n  const decodePdf = () => {\n    const linkSource = `data:application/pdf;base64,${basePdf}`;\n    const downloadLink = document.createElement(\"a\");\n    const fileName = \"Informe De Macromedidor.pdf\";\n    downloadLink.href = linkSource;\n    downloadLink.download = fileName;\n    downloadLink.click();\n    setLoadingPdf(false);\n    setBasePdf(\"\");\n    setGraphic(\"\");\n    setPie(\"\");\n  };\n\n  const dataConsumptionTable = (data) => {\n    const dataTable = data?.getConsumptionHistory?.totalBy?.activeEnergy;\n    const total = data?.getConsumptionHistory?.currentConsumption?.activeEnergy;\n    setDataTable(dataTable);\n    setTotalConsumptionTable(total);\n  };\n\n  // fechas para la descarga de PDF\n\n  function dataPdf() {\n    try {\n      const variables = {\n        serial: serial,\n        location: codigosCiudades[city] || codigosCiudades.default,\n        year: new Date().getFullYear() % 100,\n        fullYear: parseInt(timeConvertMacromedidor().year),\n        // month: parseInt(timeConvertMacromedidor().month),\n        data: {\n          macrometer: {\n            lectura: tlmKwh,\n            pie: [\n              {\n                fase: \"A\",\n                value: totalPhasesWattsA,\n                voltaje: totalPhasesVoltageA,\n                amperaje: totalPhasesAmperageA,\n                factorP: totalPhasesPowerFactorA,\n                percentageGraph: formatedTotalPhasesWattsA,\n              },\n              {\n                fase: \"B\",\n                value: totalPhasesWattsB,\n                voltaje: totalPhasesVoltageB,\n                amperaje: totalPhasesAmperageB,\n                factorP: totalPhasesPowerFactorB,\n                percentageGraph: formatedTotalPhasesWattsB,\n              },\n              {\n                fase: \"C\",\n                value: totalPhasesWattsC,\n                voltaje: totalPhasesVoltageC,\n                amperaje: totalPhasesAmperageC,\n                factorP: totalPhasesPowerFactorC,\n                percentageGraph: formatedTotalPhasesWattsC,\n              },\n            ],\n          },\n          dataTable: dataTable,\n          total: totalConsumptionTable,\n        },\n        startTime: rangeDatePicker[0]?.startDate,\n        startTimeEpoch: parseInt(Dates(dateMUI).start),\n        finishTime: rangeDatePicker[0]?.endDate,\n        finishTimeEpoch: parseInt(Dates(dateMUI).end),\n        nameProject: localStorage.getItem(\"nameProject\"),\n        userName: localStorage.getItem(\"name\"),\n        imageProject: localStorage.getItem(\"imgProject\"),\n        datePrint: localStorage.getItem(\"localTime\"),\n      };\n      if (pie) {\n        variables?.image?.push(pie);\n      }\n      createMacrometerPdf({\n        variables,\n      })\n        .then((result) => {\n          setBasePdf(result.data.pdfMacrometer);\n        })\n        .catch((err) => {\n          console.error(err);\n        });\n    } catch (err) {\n      console.error(err);\n    }\n  }\n\n  return (\n    <Fragment>\n      <Box\n        sx={{\n          flexGrow: 1,\n          marginTop: 5,\n          backgroundColor: \"rgba(195, 1, 78, 0.)\",\n        }}\n      >\n        <Grid container spacing={1} sx={{ mx: \"1%\", mt: \"40px\" }}>\n          <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n            <CardTotalNew serial={serial} measurerData={dato} />\n          </Grid>\n          <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n            <CardPhaseANew\n              MeasurerDataPhases={data?.getMeterHistory[0]}\n              serial={serial}\n            />\n          </Grid>\n          <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n            <CardPhaseBNew\n              serial={serial}\n              MeasurerDataPhases={data?.getMeterHistory[0]}\n            />\n          </Grid>\n          <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n            <CardPhaseCNew\n              serial={serial}\n              MeasurerDataPhases={data?.getMeterHistory[0]}\n            />\n          </Grid>\n\n          <div\n            style={{ display: \"flex\", flexDirection: \"column\", width: \"100%\" }}\n          >\n            <div ref={printRef}>\n              <Grid\n                xs={12}\n                sm={12}\n                md={12}\n                lg={12}\n                xl={12}\n                sx={{ height: \"40px\" }}\n              ></Grid>\n              <Grid\n                xs={12}\n                sm={12}\n                md={12}\n                lg={12}\n                xl={12}\n                sx={{ height: \"550px\" }}\n              >\n                <TabNewGraphic serial={serial} city={city} />\n              </Grid>\n            </div>\n\n            <div ref={printRef2}>\n              {seeGraphic === true ? (\n                <Grid\n                  xs={12}\n                  sm={12}\n                  md={12}\n                  lg={12}\n                  xl={12}\n                  sx={{ height: \"550px\" }}\n                >\n                  <TabNewGraphicVAV serial={serial} />\n                </Grid>\n              ) : (\n                <></>\n              )}\n            </div>\n          </div>\n\n          <Grid\n            container\n            xs={12}\n            sm={12}\n            md={12}\n            lg={12}\n            xl={12}\n            sx={{ width: \"90%\" }}\n          >\n            {seeGraphic === true ? (\n              <TableConsumptions\n                serial={serial}\n                city={city}\n                dataConsumptionTable={dataConsumptionTable}\n              />\n            ) : (\n              <></>\n            )}\n          </Grid>\n        </Grid>\n      </Box>\n      <MessageError\n        messageText={t(\n          \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_ERROR_MESSAGE.MESSAGE_ERROR\"\n        )}\n      />\n    </Fragment>\n  );\n});\n\nexport default NewMeasurerDetails;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport Dialog from \"@mui/material/Dialog\";\nimport TextField from \"@mui/material/TextField\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { useLazyQuery,  useMutation, useQuery } from \"@apollo/client\";\nimport { secondClient } from \"../../index\";\n// import { EXCEL_GENERAL_OCUPATION_REPORT } from \"../../../controllers/pdfControllers\";\nimport { EXCEL_MACROMETER_REPORT } from \"../../controllers/pdfControllers\";\n// import Loading from \"../../../components/loading/Loading\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n\n\n\nexport const ModalExcelMacrometer = ({open, serial, timeZone, setOpenModalExcel}) => {\n    const [dateInitial, setDateInitial] = useState()\n    const [dateFinal, setDateFinal] = useState()\n    const [baseXLSX, setBaseXLSX] =useState()\n    const [loadingDate, setLoadingDate] = useState(false)\n    const { rangeDatePicker} = useContext(AuthContext);\n    \n    const nameProject = localStorage.getItem('nameProject')\n    const today = localStorage.getItem('localTime')\n\n   const handlerClose = () => {\n    setOpenModalExcel(false)\n   }\n\n   const handlerOpenLoading = () => {\n    // setLoading(true)\n   }\n   const handlerCloseLoading = () => {\n    // setLoading(false)\n    handlerClose()\n    setDateInitial()\n    setDateFinal()\n    setBaseXLSX()\n   \n   }\n\n    const handlerInitialDate = (e) => {\n        const date= e.target.value\n        setDateInitial(date)\n    }\n    const handlerFinalDate = (e) => {\n        const finDate = e.target.value\n        setDateFinal(finDate)\n    }\n\n    const handleClick = (e) => {\n      e.preventDefault();\n      e.currentTarget.querySelector(\"input\").showPicker(); // Abrir el calendario\n    };\n\n\n        const [getXlsx, {data, loading,error}] = useLazyQuery(EXCEL_MACROMETER_REPORT,   {client: secondClient},); \n        const dateXlsx = () => { \n          const dates = testRange(dateInitial, dateFinal);\n\n          try{\n           getXlsx({\n                variables:{\n                    serial:serial,\n                    startTime:new Date(dates.startDate),\n                    endTime:new Date(dates.endDate)\n                }\n            },setLoadingDate(true))\n            .then((resul)=>  {\n                    setBaseXLSX(resul.data?.getConsumptionReportFile?.File?.fileBase64)\n                    if(resul) {\n                      decodeXLSX(resul.data?.getConsumptionReportFile?.File?.fileBase64, dates.startDate, dates.endDate)\n                    }\n                    setLoadingDate(false)\n              })\n              .catch((err) => {\n                console.log(err);\n              });\n          } catch (err) {\n            console.log(err);\n          }\n          }\n    \n    // const dateXlsx = ()  => {\n    //     try {\n    //          Mutation({\n    //             variables: {\n    //                 projectId: Number(projectID),\n    //                 startTime: new Date(dateInitial).getTime(),\n    //                 endTime: new Date(dateFinal).getTime(),\n    //                 dateRange: testRange(),\n    //                 timeZone: String(timeZone),\n    //             }\n    //         },setLoading(true))\n            \n    //         .then((resul)=>  {\n    //                 setBaseXLSX(resul.data?.generateExcelReport?.excelFile)\n    //                 if(resul) {\n    //                   decodeXLSX(resul.data?.generateExcelReport?.excelFile)\n    //                 }\n    //                 setLoading(false)\n    //           })\n    //           .catch((err) => {\n    //             console.log(err);\n    //           });\n    //       } catch (err) {\n    //         console.log(err);\n    //       }\n    // }\n\n    const testRange =(dateInitial, dateFinal) => {\n      const dateRangeOne = new Date(dateInitial).getTime()\n      const dateRangeTwo = new Date(dateFinal).getTime()\n        if(dateRangeTwo > dateRangeOne) {\n          return {startDate : dateInitial, endDate:dateFinal}\n        } else {\n          return {startDate:dateFinal, endDate: dateInitial}\n        }\n        }\n\n    const decodeXLSX = (item, startDate, endDate) => {\n     \n          const linkSource = `data:application/xlsx;base64,${item}`\n          const downloadLink = document.createElement(\"a\");\n          const fileName = `Informe general de medición ${nameProject} ${startDate} - ${endDate}.xlsx`;\n           downloadLink.href = linkSource;\n           downloadLink.download = fileName;\n           downloadLink.click();\n           handlerCloseLoading()\n   \n    }\n\n    const currentDate = new Date().toISOString().split(\"T\")[0]\n    const handleValidationAccions = () => {\n      if (dateInitial === undefined) return true\n      if (dateFinal === undefined) return true\n      if (dateInitial === '') return true\n      if(dateFinal === '') return true\n    }\n\n  return (\n    <Dialog \n    sx={{\n        \"& .MuiDialog-paper\": {\n          width: \"80%\",\n          maxHeight: 500,\n          borderRadius: \"8px\",\n        },\n      }}\n      maxWidth=\"xs\"\n      open={open}>\n         <DialogTitle\n        sx={{\n          background: \"#3f9948\",\n          color: \"white\",\n          fontFamily: \"Montserrat, sans-serif\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"space-between\",\n          paddingRight: \"16px\", \n          fontSize:'16px'\n        }}\n      >\n       \n        <b style={{marginLeft:'20px'}}>Ingresa los datos requeridos a descargar</b>\n          {!loadingDate ? \n          <Button sx={{ color: \"white\", marginRight: \"-14px\", }} onClick={handlerClose}> X</Button> : null\n          }\n   \n      </DialogTitle>\n      {!loadingDate ? \n      <>\n        <DialogContent>\n        <p\n          style={{\n            fontFamily: \"Montserrat, sans serif\",\n            textAlign: \"justify\",\n            color: \"black\",\n          }}\n        >esta es una fase beta para descarga de informes XLSX</p>\n        <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"20px\" }}>\n          <TextField\n            onChange={handlerInitialDate}\n            name=\"initialDate\"\n            fullWidth\n            type=\"date\"\n            size=\"small\"\n            InputProps={{\n              sx: { borderRadius: \"8px\" }\n            }}\n            label=\"Fecha inicial\"\n            InputLabelProps={{\n            shrink: true, \n            }}\n            inputProps={{ max: currentDate,}}\n            onClick={(e) => handleClick(e)}\n          />\n          <TextField\n            onChange={handlerFinalDate}\n            disabled={dateInitial === undefined || dateInitial === ''}\n            name=\"finalDate\"\n            fullWidth\n            label=\"Fecha final\"\n            InputLabelProps={{\n            shrink: true, \n            }}\n            type=\"date\"\n            size=\"small\"\n            InputProps={{ sx: { borderRadius: \"8px\" } }}\n            inputProps={{ max: currentDate,}}\n            onClick={(e) => handleClick(e)}\n          />\n        </div>\n     \n        </DialogContent> \n           <DialogActions\n           sx={{\n             display: \"flex\",\n             justifyContent: \"center\",\n             padding: \"0px 24px 20px\",\n           }}\n         >\n    \n           <Button\n             fullWidth\n             sx={{\n               borderRadius: \"8px\",\n               marginBottom: \"5px\",\n               backgroundColor: \"#2EB142\",\n               color: \"white\",\n               fontFamily: \"Montserrat, sans serif \",\n               \"&:hover\": {\n                 backgroundColor: \"#336535\",\n               },\n             }}\n                 onClick={dateXlsx}\n             disabled={handleValidationAccions()}\n           >\n             <b>Imprimir Informe</b>\n           </Button> \n         </DialogActions>\n         </>\n        :\n        <DialogContent>\n      <p\n        style={{\n          fontFamily: \"Montserrat, sans serif\",\n          textAlign: \"justify\",\n          color: \"black\",\n        }}\n      >Se esta generando el informe podria tardar unos segundos dependiendo la cantidad de datos </p>\n       {loadingDate&& \n       <div style={{ display: 'grid', justifySelf: 'center', alignSelf: 'center', marginLeft: '45px', height: '100px',  width: '100px'}}>\n       <Loading_devices  />\n\n      </div> }\n      </DialogContent>\n     \n      }   \n        \n        \n        </Dialog>\n  )\n}\n","//Reack hooks\nimport React, { useState, useEffect, useContext, useRef } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//React component\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\n\n//Material UI\nimport Backdrop from \"@mui/material/Backdrop\";\nimport Button from \"@mui/material/Button\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\n// import { Hidden } from \"@material-ui/core\";\n// import { Key } from \"@mui/icons-material\";\n// import LoadingButton from \"@mui/lab/LoadingButton\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\nimport {\n  Dialog,\n  AppBar,\n  Typography,\n  Slide,\n  IconButton,\n  Toolbar,\n  makeStyles,\n} from \"@material-ui/core\";\n\n//Components\n// import Loading from \"../../components/loading/Loading\";\nimport NewMeasurerDetails from \"../highcharts/NewMeasurerDetails\";\nimport { ModalExcelMacrometer } from \"./ModalExcelMacrometer\";\n\n//React datepicker function\nimport { addDays } from \"date-fns\";\n\n//Helpers function\nimport { percentage_total } from \"../../utils/helpers\";\n\n// import { secondClient } from \"../../index\";\n// import { useQuery } from \"@apollo/client\";\n// import { GET_METER_HISTORY_VARIABLES } from \"../../controllers/measurersController\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"fixed\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n  },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nexport const NewMacrometerCard = ({\n  serial,\n  model,\n  alias,\n  city,\n  variable,\n  startTimeProject,\n}) => {\n  const { t } = useTranslation();\n  const classes = useStyles();\n  const {\n    permissionsRoleUser,\n    loadingPdf,\n    setRangeDatePicker,\n    rangeDatePicker,\n    setRangeDatePickerToday,\n    rangeDatePickerToday,\n    dateReport,\n  } = useContext(AuthContext);\n  const [openNewMeasurer, setOpenNewMeasurer] = useState(false);\n  const [openMenu, setOpenMenu] = useState(false);\n  const [openModalExcel, setOpenModalExcel] = useState(false);\n  const open = Boolean(openMenu);\n  const childRef = useRef();\n  const day_before = new Date().getTime() - 86400000;\n\n  const handlerOpenMenu = (e) => {\n    setOpenMenu(e.currentTarget);\n  };\n\n  const handlerCloseMenu = () => {\n    setOpenMenu(null);\n  };\n\n  const handlerOpenModalExcel = () => {\n    setOpenModalExcel(!openModalExcel);\n  };\n\n  const handleOpenMeasurer = () => {\n    if (\"data\") {\n      setOpenNewMeasurer(true);\n      setRangeDatePicker([\n        {\n          ...rangeDatePicker.selection,\n          startDate: new Date(),\n          endDate: addDays(new Date(), 0),\n          key: \"selection\",\n        },\n      ]);\n      setRangeDatePickerToday([\n        {\n          ...rangeDatePickerToday.selection,\n          startDate: new Date(),\n          endDate: addDays(new Date(), 0),\n          key: \"selection\",\n        },\n      ]);\n    }\n  }\n  const handleCloseMeasurer = () => {\n    \n    setOpenNewMeasurer(false);\n  };\n\n  return (\n    <>\n      {alias ? (\n        <>\n          {\" \"}\n          <div\n            onClick={\n              permissionsRoleUser?.permissionsRole?.MedMacVer\n                ? handleOpenMeasurer\n                : false\n            }\n            className=\"_measurer_container_\"\n          >\n            <div className=\"_measurer_title_container_\">\n              <div className=\"_measurer__title_\">\n                <span>{alias ? alias : serial}</span>\n              </div>\n            </div>\n\n            <div className=\"_measurer_container_kwh_\">\n              <div className=\"_measurer_data_container_\">\n                <span className=\"_measurer_data_number_\">\n                  {variable?.TImKwh}\n                </span>\n                <span className=\"_measurer_data_kwh_\">kWh</span>\n              </div>\n            </div>\n            <div className=\"_measurer_container_watts_\">\n              <SemiCircleProgressBar\n                diameter={150}\n                strokeWidth={15}\n                stroke=\"rgba(162, 99, 239, 1)\"\n                background=\"rgba(162, 99, 239, 0.3)\"\n                percentage={`${percentage_total(variable?.EI)}`}\n              />\n            </div>\n            <div className=\"_measurer_container_range_\">\n              <span className=\"_measurer__range_\">0</span>\n              <span className=\"_measurer__range_\">100000</span>\n            </div>\n            <div className=\"_measurer_container_value_\">\n              {variable?.EI} Watts\n            </div>\n          </div>\n          <Dialog\n            fullScreen\n            open={openNewMeasurer}\n            onClose={handleCloseMeasurer}\n            TransitionComponent={Transition}\n          >\n            <AppBar className={classes.appBar}>\n              <Toolbar>\n                <IconButton\n                  edge=\"start\"\n                  color=\"inherit\"\n                  onClick={handleCloseMeasurer}\n                  aria-label=\"close\"\n                > \n                  <CloseIcon />\n                </IconButton>\n                <Typography variant=\"h6\" className={classes.title}>\n                  {` ${localStorage.getItem(\"nameProject\")} - ${t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_HEADER_MODAL.TITLE\"\n                  )} ${serial} `}\n                </Typography>\n                <>\n                  <Button\n                    id=\"basic-button\"\n                    aria-controls={open ? \"basic-menu\" : undefined}\n                    aria-haspopup=\"true\"\n                    aria-expanded={open ? \"true\" : undefined}\n                    onClick={handlerOpenMenu}\n                    sx={{ color: \"#ffffff\" }}\n                  >\n                    {/* <LoadingButton\n                    // disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n                    onClick={() => childRef.current.macrometerPdf()}\n                    endIcon={<DownloadIcon />}\n                    loadingPosition=\"end\"\n                    color=\"inherit\"\n                  > */}\n                    {t(\n                      \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_HEADER_MODAL.DOWNLOAD\"\n                    )}\n                    {/* </LoadingButton/> */}\n                    {/* <Backdrop\n                    sx={{\n                      color: \"#fff\",\n                      zIndex: (theme) => theme?.zIndex?.drawer + 1,\n                    }}\n                    open={loadingPdf ? true : false}\n                    onClick={loadingPdf}\n                  >\n                    <CircularProgress color=\"inherit\" />\n                  </Backdrop> */}\n                    <DownloadIcon\n                      sx={{ height: \"25px\", width: \"20px\", marginLeft: \"8px\" }}\n                    />\n                  </Button>\n                  <Menu\n                    id=\"basic-menu\"\n                    anchorEl={openMenu}\n                    open={openMenu}\n                    onClose={handlerCloseMenu}\n                    MenuListProps={{\n                      \"aria-labelledby\": \"basic-button\",\n                    }}\n                  >\n                    <MenuItem onClick={() => childRef.current.macrometerPdf()}>\n                      PDF\n                      <Backdrop\n                        sx={{\n                          color: \"#fff\",\n                          zIndex: (theme) => theme.zIndex.drawer + 1,\n                        }}\n                        open={loadingPdf ? true : false}\n                        onClick={loadingPdf}\n                        // onClick={() => {\n                        //   loadingPdf();\n                        //   handleCloseOne()\n                        // }}\n                      >\n                        <CircularProgress color=\"inherit\" />\n                      </Backdrop>\n                    </MenuItem>\n                    <MenuItem onClick={handlerOpenModalExcel}>XLSX</MenuItem>\n                  </Menu>\n                </>\n              </Toolbar>\n            </AppBar>\n\n            <ModalExcelMacrometer\n              serial={serial}\n              open={openModalExcel}\n              setOpenModalExcel={handlerOpenModalExcel}\n            />\n\n            <NewMeasurerDetails\n              city={city}\n              dato={variable}\n              serial={serial}\n              startTimeProject={startTimeProject}\n              ref={childRef}\n            />\n          </Dialog>{\" \"}\n        </>\n      ) : null}\n    </>\n  );\n};\n","//React hooks\nimport React, { useEffect, useState, useContext, useRef } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Material UI\nimport Backdrop from \"@mui/material/Backdrop\";\nimport Button from \"@mui/material/Button\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport { Hidden } from \"@material-ui/core\";\nimport {\n  Dialog,\n  AppBar,\n  Typography,\n  Slide,\n  IconButton,\n  Toolbar,\n  makeStyles,\n} from \"@material-ui/core\"\nimport MessageError from \"../../../components/message/MessageError\";\nimport MessageInfo from \"../../../components/message/MessageInfo\";\nimport MessageSuccess from \"../../../components/message/MessageSuccess\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\n//Apollo hooks & Queries\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport {\n  GET_INFO_MEASURER_BY_PROJECT,\n  GET_METER_HISTORY_VARIABLES,\n} from \"../../../controllers/measurersController\";\n\n//Components\nimport HeavyDuty from \"../../../components/measurer/HeavyDuty\";\nimport Loading from \"../../../components/loading/Loading\";\nimport MacroMeterCard from \"../../../components/measurer/macroMeterCard\";\nimport MeasurerDetails from \"../../../components/highcharts/MeasurerDetails\";\nimport Measurer from \"../../../components/measurer/Measurer\";\nimport MeasurerGeneral from \"../../../components/highcharts/MeasurerGeneral\";\nimport { ModalDateExcelIonLabs } from \"./ModalDateExcelIonLabs\";\nimport { NewMacrometerCard } from \"../../../components/NewMesurer/NewMacrometerCard\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\n\n//Macrometer service\nimport { secondClient } from \"../../../index\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//React datepicker function\nimport { addDays } from \"date-fns\";\n\n//Websocket\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\n\n//function\nlet CLIENT = null;\nconst useStyles = makeStyles((theme) => ({\n  appBar: {\n    backgroundColor: \"#3f9948\",\n    position: \"fixed\",\n  },\n  title: {\n    marginLeft: theme.spacing(2),\n    flex: 1,\n    fontSize: \"1.25rem\",\n    [theme.breakpoints.down(\"xs\")]: { fontSize: \"1rem\" },\n  },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n  return <Slide direction=\"up\" ref={ref} {...props} />;\n});\nconst fech = async () => {\n  const fechaHoy = new Date();\n  const mesActual = fechaHoy.getMonth() + 1;\n  const year = fechaHoy.getFullYear().toString();\n  const dia = fechaHoy.getDate().toString();\n  const fechaI = `${year}-${mesActual}-${dia} 00:00:00`;\n  const fI = Date.parse(fechaI);\n};\nconst Measurers = () => {\n  const { t } = useTranslation();\n  const {\n    setEvent,\n    setDateReport,\n    setactiveNextBack,\n    loadingPdf,\n    setSuccessMessage,\n    setErrorMessage,\n    setOpenModal,\n    serial,\n    setSerial,\n    setDateMacrometers,\n    setDateMacrometersTwo,\n    setValueDatepicker,\n    permissionsRoleUser,\n    verifyMacromeasure,\n    setVerifyMacromeasure,\n    dataMacrometerVariables,\n    setDataMacrometerVariables,\n    setGlobalReactDateRange,\n  } = useContext(AuthContext);\n  const [openMeasurer, setOpenMeasurer] = useState(false);\n  const [openNewMeasurer, setOpenNewMeasurer] = useState(false);\n  const [isReport, SetIsReport] = useState(false);\n  const [measurerComponent, setMeasurerComponent] = useState([]);\n  const [modelM5, setModelM5] = useState([]);\n  const [modelHse, setModelHse] = useState([]);\n  // const [serials, setSerials] = useState([]);\n  const classes = useStyles();\n  const pdfExportComponent = React.useRef(null);\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [openModalExcel, setOpenModalExcel] = useState(false);\n  const open = Boolean(anchorEl);\n  const childRef = useRef();\n  //Socket\n  const { REACT_APP_SOCKET_STAGING, REACT_APP_SOCKET_PRODUCTION } = process.env;\n  const handleClose = () => {\n    setOpenMeasurer(false);\n    setactiveNextBack(false);\n  };\n  const handleOpenReportMeasurer = () => {\n    setOpenMeasurer(true);\n    SetIsReport(false);\n    setactiveNextBack(true);\n    setGlobalReactDateRange([\n      {\n        startDate: new Date(),\n        endDate: addDays(new Date(), 0),\n        key: \"selection\",\n      },\n    ]);\n  };\n\n  const handleClickOne = (event) => {\n    setAnchorEl(event.currentTarget);\n  };\n  const handleCloseOne = () => {\n    setAnchorEl(null);\n  };\n\n  const handlerOpenModalExcel = () => {\n    setOpenModalExcel(!openModalExcel);\n  };\n\n  const codigosCiudades = {\n    Bogotá: \"BG\",\n    Barranquilla: \"BQ\",\n    default: \"BQ\",\n  };\n  Object.freeze(codigosCiudades);\n\n  const { data, loading, refetch } = useQuery(GET_INFO_MEASURER_BY_PROJECT, {\n    variables: { ProjectId: parseInt(localStorage.getItem(\"id\"), 10) },\n    fetchPolicy: \"network-only\",\n  });\n\n  const serials = data?.getMettersInProjets?.flatMap(item => \n    item.Metters.map(metter => metter.serial)\n  );\n\n  const dataCity = data?.getProjectByIdHeader?.city;\n\n  const { data: metterHistory, loading: metterLoading } = useQuery(\n    GET_METER_HISTORY_VARIABLES,\n    {\n      client: secondClient,\n      variables: {\n        serial: serials,\n        location: codigosCiudades[dataCity] || codigosCiudades.default,\n      },\n      fetchPolicy: \"no-cache\",\n    }\n  );\n\n  const startTimeProject = data?.getProjectByIdHeader?.start_time;\n\n  const saveData = () => {\n    if (macrometerData?.length !== 0) {\n      const modelM5d = macrometerData?.filter((i) => i.model === \"SMD630MCT\");\n      setModelM5(modelM5d);\n      const modelHsed = data?.getMettersInProjets?.filter(\n        (i) => i.model === \"HSE-DC-GSM\"\n      );\n      setModelHse(modelHsed);\n    }\n  };\n  let dataMacrometersVariables = JSON.parse(\n    sessionStorage.getItem(\"resultadoFinal\")\n  );\n\n  const handleMacrometerData = () => {\n    const mappedMacrometerData = {};\n    const macrometerData = data?.getMettersInProjets?.flatMap((item) =>\n      item.Metters.map((i) => ({\n        serial: i?.serial,\n        alias: i?.alias,\n        modelo: i?.model,\n      }))\n    );\n\n    macrometerData?.forEach((item) => {\n      if (item?.serial) {\n        mappedMacrometerData[item?.serial] = item;\n      }\n    });\n\n    return metterHistory?.getMeterHistoryVariables?.map((item) => {\n      if (item?.SerialMedidor && mappedMacrometerData[item?.SerialMedidor]) {\n        return {\n          ...item,\n          alias: mappedMacrometerData[item?.SerialMedidor]?.alias || null,\n          modelo: mappedMacrometerData[item?.SerialMedidor]?.modelo || null,\n        };\n      }\n      return item;\n    });\n  };\n\n  const macrometerData = handleMacrometerData();\n\n  useEffect(() => {\n    if (data) {\n      setMeasurerComponent(data.getInfoMetersByProject);\n      saveData();\n    }\n  }, [data]);\n  useEffect(() => {\n    if (CLIENT) {\n      CLIENT.onerror = CLIENT.onopen = CLIENT.onclose = null;\n      CLIENT.close();\n    }\n    CLIENT = new W3CWebSocket(`${REACT_APP_SOCKET_PRODUCTION}`);\n    CLIENT.onopen = () => {\n      if (localStorage.getItem(\"id\"))\n        CLIENT.send(\n          JSON.stringify({ channel: `Meters-${localStorage.getItem(\"id\")}` })\n        );\n    };\n    CLIENT.onclose = () => {\n      CLIENT = null;\n    };\n    return () => {\n      if (CLIENT) CLIENT.close();\n    };\n  }, [localStorage.getItem(\"id\")]);\n  useEffect(() => {\n    CLIENT.onmessage = (message) => {\n      let data = JSON.parse(message.data);\n      if (data.message) {\n        if (data.message == \"Device update\") {\n          updateState(data);\n        } else if (data.message == \"Orden enviada y ejecutada correctamente.\") {\n          setSuccessMessage(true);\n        } else {\n          // setErrorMessage(true);\n        }\n      }\n    };\n  }, [measurerComponent]);\n  async function updateState(dev) {\n    measurerComponent.findIndex((elemento, indice) => {\n      if (elemento.id === dev.id_device) {\n        let tempDevice = [...measurerComponent];\n        tempDevice[indice] = { ...tempDevice[indice] };\n        tempDevice[indice].variables = { ...tempDevice[indice].variables };\n        if (dev.action == \"Status\") {\n          tempDevice[indice].variables.Status = dev.status;\n        } else if (dev.action == \"KWH\") {\n          tempDevice[indice].variables.KWH = dev.status;\n        } else if (dev.action == \"Watts\") {\n          tempDevice[indice].variables.Watts = dev.status;\n        }\n        setMeasurerComponent(tempDevice);\n      }\n    });\n  }\n  function Send(data, state) {\n    if (data.CategoryId == 8) {\n      CLIENT.send(\n        JSON.stringify({\n          // serial: dataDevice.getAllDevices.Controller.serial,\n          // id_device: device.id_in_controller,\n          variable: \"ChangeStatus\",\n          action: \"status\",\n          value: state ? \"1\" : \"0\",\n        })\n      );\n    }\n  }\n  // const {\n  //   data: newData,\n  //   loading: newLoading,\n  //   refetch: newRefetch,\n  // } = useQuery(GET_METER_HISTORY_VARIABLES, {\n  //   client: secondClient,\n  //   variables: { serial: serials[0] },\n  //   fetchPolicy: 'no-cache',\n  // });\n\n  useEffect(() => {\n    CLIENT.onmessage = (message) => {\n      const _data = JSON.parse(message.data);\n      setEvent(_data);\n    };\n  }, [localStorage.getItem(\"id\")]);\n\n  if (!macrometerData && (loading || metterLoading)) {\n    return <Loading />;\n  } else if (!macrometerData && !loading && !metterLoading) {\n  }\n\n  return (\n    <>\n      {data && (\n        <div className=\"_measurers_container_\">\n          <div className=\"_measurers_container_header_\">\n            <div className=\"_measurers_container_logo\">\n              <img\n                src={data?.getProjectByIdHeader?.img}\n                className=\"__measurers__img\"\n                alt=\"Logo\"\n                width=\"180\"\n                height=\"180\"\n              />\n            </div>\n            <div className=\"_measurers_container_info_\">\n              <div className=\"_measurers__info_\">\n                <ProjectCardAreaControl data={data?.getProjectByIdHeader} />\n              </div>\n              <div className=\"_measurers__filters_\">\n                <div className=\"_measurer_filter_name_\">\n                  {t(\n                    \"VIEW_MEASURERS.COMPONENT_MEASURER_HEADER_CONTAINER.MEASURERS\"\n                  )}\n                </div>\n\n                <div className=\"_measurer__report_\">\n                  <div\n                    className=\"_measurer_report_option_\"\n                    onClick={\n                      permissionsRoleUser?.permissionsRole?.MedMacVer\n                        ? () => {\n                            handleOpenReportMeasurer();\n                          }\n                        : false\n                    }\n                  >\n                    <span>\n                      <i className=\"fas fa-tachometer-alt\"></i>{\" \"}\n                      {t(\n                        \"VIEW_MEASURERS.COMPONENT_MEASURER_HEADER_CONTAINER.GENERAL_MEASURER\"\n                      )}\n                    </span>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"_measurers_container_location_\">\n            <>\n              {macrometerData?.map((i, key) => (\n                <NewMacrometerCard\n                  key={key}\n                  alias={i?.alias}\n                  serial={i?.SerialMedidor}\n                  variable={i?.variable}\n                  city={dataCity}\n                  startTimeProject={startTimeProject}\n                  timeZone={data?.getProjectByIdHeader?.time_zone}\n                />\n              ))}\n            </>\n          </div>\n          <div className=\"_measurers_container_location_\">\n            {modelHse.map((i, key) =>\n              i.Metters.map((j) => (\n                <MacroMeterCard\n                  key={key}\n                  alias={j?.alias}\n                  serial={j?.serial}\n                  name={data?.getProjectByIdHeader?.name}\n                  timeZone={data?.getProjectByIdHeader?.time_zone}\n                />\n              ))\n            )}\n          </div>\n          <div className=\"_measurers_container_location_\">\n            {data?.getInfoMetersByProject?.map((key) =>\n              key.CategoryId === 8 ? (\n                <HeavyDuty\n                  data={key}\n                  send={Send}\n                  timeZone={data?.getProjectByIdHeader?.time_zone}\n                />\n              ) : (\n                <Measurer\n                  {...{\n                    refetch,\n                  }}\n                  data={key}\n                  timeZone={data?.getProjectByIdHeader?.time_zone}\n                />\n              )\n            )}\n          </div>\n          <MessageInfo />\n          {/* <MessageError messageText={\"sivis pacem parabellum\"} /> */}\n          <MessageSuccess />\n          {permissionsRoleUser?.permissionsRole?.MedMacVer ? (\n            <Dialog\n              fullScreen\n              open={openMeasurer}\n              onClose={handleClose}\n              TransitionComponent={Transition}\n            >\n              <AppBar className={classes.appBar}>\n                <Toolbar>\n                  <IconButton\n                    edge=\"start\"\n                    color=\"inherit\"\n                    onClick={handleClose}\n                    aria-label=\"close\"\n                  >\n                    <CloseIcon />\n                  </IconButton>\n                  <Typography variant=\"h6\" className={classes.title}>\n                    {data?.getProjectByIdHeader?.name} -{\" \"}\n                    {!isReport\n                      ? t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.HEADER_MODAl_TITLE\"\n                        )\n                      : t(\n                          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.READING\"\n                        )}\n                  </Typography>\n                  {!isReport && (\n                    <>\n                      <Hidden mdDown>\n                        <Button\n                          id=\"basic-button\"\n                          aria-controls={open ? \"basic-menu\" : undefined}\n                          aria-haspopup=\"true\"\n                          aria-expanded={open ? \"true\" : undefined}\n                          onClick={handleClickOne}\n                          sx={{ color: \"#ffffff\" }}\n                        >\n                          {t(\n                            \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.DOWNLOAD\"\n                          )}\n                          <DownloadIcon\n                            sx={{\n                              height: \"25px\",\n                              width: \"20px\",\n                              marginLeft: \"8px\",\n                            }}\n                          />\n                        </Button>\n                        <Menu\n                          id=\"basic-menu\"\n                          anchorEl={anchorEl}\n                          open={open}\n                          onClose={handleCloseOne}\n                          MenuListProps={{\n                            \"aria-labelledby\": \"basic-button\",\n                          }}\n                        >\n                          <MenuItem\n                            onClick={() =>\n                              childRef.current.measuresGeneralPdf()\n                            }\n                          >\n                            PDF\n                            <Backdrop\n                              sx={{\n                                color: \"#fff\",\n                                zIndex: (theme) => theme.zIndex.drawer + 1,\n                              }}\n                              open={loadingPdf}\n                              onClick={() => {\n                                loadingPdf();\n                                handleCloseOne();\n                              }}\n                            >\n                              <CircularProgress color=\"inherit\" />\n                            </Backdrop>\n                          </MenuItem>\n                          <MenuItem onClick={handlerOpenModalExcel}>\n                            XLSX\n                          </MenuItem>\n                        </Menu>\n                      </Hidden>\n                    </>\n\n                    // <Hidden mdDown>\n                    //   <LoadingButton\n                    //     onClick={}\n                    //     endIcon={<DownloadIcon />}\n                    //     loadingPosition=\"end\"\n                    //     color=\"inherit\"\n                    //   >\n                    //     {t(\n                    //       \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.DOWNLOAD\"\n                    //     )}\n                    //         HSE-1713-data-excel-ionlabs\n                    //   </LoadingButton>\n                    //   <Backdrop\n                    //     sx={{\n                    //       color: \"#fff\",\n                    //       zIndex: (theme) => theme.zIndex.drawer + 1,\n                    //     }}\n                    //     open={loadingPdf}\n                    //     onClick={loadingPdf}\n                    //   >\n                    //     <CircularProgress color=\"inherit\" />\n                    //   </Backdrop>\n                    // </Hidden>\n                  )}\n                </Toolbar>\n              </AppBar>\n              {isReport ? (\n                <MeasurerDetails\n                  projectID={data?.getProjectByIdHeader?.id}\n                  timeZone={data?.getProjectByIdHeader?.time_zone}\n                  serial={serial}\n                />\n              ) : (\n                <MeasurerGeneral\n                  ref={childRef}\n                  projectID={data?.getProjectByIdHeader?.id}\n                  timeZone={data?.getProjectByIdHeader?.time_zone}\n                />\n              )}\n              <ModalDateExcelIonLabs\n                open={openModalExcel}\n                setOpenModalExcel={setOpenModalExcel}\n                projectID={data?.getProjectByIdHeader?.id}\n                timeZone={data?.getProjectByIdHeader?.time_zone}\n              />\n            </Dialog>\n          ) : null}\n        </div>\n      )}\n      <MessageError\n        messageText={t(\n          \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.MESSAGE_ERROR\"\n        )}\n      />\n    </>\n  );\n};\nexport default Measurers;\n","//Paths\nexport const LOGIN = \"/login\";\nexport const DASHBOARD = \"/app\";\nexport const FORGOT = \"/forgot_password\";\nexport const SEND_CONFIRMATION_EMAIL = \"/confirmation\";\nexport const PASSWORD_UPDATED = \"/password_updated\";\nexport const RESET_PASSWORD = \"/reset_password/:token\";\nexport const PROJECT = \"/app/projects\";\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const MainStepperContainer = styled.div`\n  display: grid;\n  grid-template-rows: 5% 70% 30%;\n  row-gap: 25px;\n  margin: 0px 3% 30px 3%;\n  position: sticky;\n  top: 0;\n  height: 85vh;\n  overflow: auto;\n`;\n\nexport const Navbar = styled.div`\n  display: grid;\n  grid-template-rows: 100%;\n  grid-template-columns: repeat(2, 1fr);\n\n  .modalButton {\n    display: none;\n    justify-self: flex-end;\n    position: fixed;\n    align-self: center;\n    font-size: 25px;\n    color: #f9f9f9;\n    background-color: rgba(#1c1c1c, 0.8);\n    padding: 10px 14px;\n    border-radius: 50%;\n    cursor: pointer;\n\n    &:hover {\n      background-color: #1c1c1c;\n    }\n\n    @media (max-width: 1024px) {\n      display: block;\n    }\n  }\n`;\n\nexport const InstructionsAndSummaryContainer = styled.div`\n  display: grid;\n  grid-template-rows: 100%;\n  grid-template-columns: 65% 30%;\n  column-gap: 5%;\n\n  @media (max-width: 1024px) {\n    grid-template-columns: 100%;\n  }\n`;\n\nexport const InstructionsContainer = styled.div`\n  display: grid;\n  grid-template-rows: 100%;\n  border-radius: 10px;\n  padding: 5%;\n  box-shadow: rgba(198, 211, 211) 0px 2px 8px;\n  background-color: #f8f9f9;\n\n  @media (max-width: 1024px) {\n    padding: 5%;\n  }\n`;\n\nexport const SummaryContainer = styled.div`\n  display: grid;\n  grid-template-rows: 100%;\n  border-radius: 10px;\n  box-shadow: rgba(198, 211, 211) 0px 2px 8px;\n  background-color: #f8f9f9;\n\n  .summary {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n    padding: 10%;\n\n    font-family: \"Montserrat\", sans-serif;\n    color: #1c1c1c;\n    overflow-x: hidden;\n    overflow-y: auto;\n\n    .summary_title {\n      justify-self: center;\n      align-self: center;\n      font-family: \"Montserrat\", sans-serif;\n      font-weight: 500;\n      font-size: 25px;\n    }\n\n    .summary_item_container {\n      display: flex;\n      flex-direction: column;\n      gap: 5px;\n      align-items: flex-start;\n\n      .items_labels {\n        display: flex;\n        flex-direction: row;\n        /* gap: 20px; */\n        align-items: center;\n\n        .serial_label {\n          margin-left: 20px;\n        }\n      }\n\n      .secondary_labels {\n        display: flex;\n        flex-direction: row;\n        align-items: flex-start;\n        width: 100%;\n        margin-left: 18%;\n        margin-bottom: 3px;\n      }\n    }\n  }\n\n  @media (max-width: 1024px) {\n    display: none;\n  }\n`;\n\nexport const StepperStatusContainer = styled.div`\n  display: grid;\n  height: 100px;\n  grid-template-rows: 100%;\n  border-radius: 10px;\n  grid-template-columns: 100%;\n  box-shadow: rgba(198, 211, 211) 0px 2px 8px;\n  background-color: #f8f9f9;\n`;\n","import React, { useContext } from \"react\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { ROUTER } from \"../../../config/routing/router_per_component\";\n\nconst Info = () => {\n  return (\n    <Switch>\n      {ROUTER.map((info, key) => (\n        <Route\n          key={key}\n          path={info.path}\n          render={() => <info.component {...{ info }} />}\n        />\n      ))}\n    </Switch>\n  );\n};\n\nexport default Info;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const StyledStepper = styled.div`\n  display: flex;\n  flex-direction: row-reverse;\n  justify-content: space-around;\n\n  @media (max-width: 425px) {\n    grid-template-columns: 100%;\n  }\n`;\n\nexport const StyledOptions = styled.div`\n  justify-self: center;\n  align-self: center;\n\n  .empty_title {\n    color: #1c1c1c;\n  }\n\n  .__full_title {\n    color: #4caf50e6;\n  }\n\n  .stepper_elements_container {\n    display: flex;\n    justify-content: space-evenly;\n    align-items: center;\n    gap: 5px;\n\n    .steps {\n      font-family: \"Montserrat\", sans-serif;\n      color: #1c1c1c;\n      text-decoration: none;\n\n      &:hover {\n        color: #a9aaa9;\n        cursor: pointer;\n      }\n    }\n\n    .empty_stepper {\n      padding: 8px 8px;\n      font-size: 10px;\n      border-radius: 50%;\n      color: #f9f9f9;\n      background-color: rgba(177, 174, 174, 1);\n      margin-right: 5px;\n    }\n\n    .full_stepper {\n      padding: 8px 8px;\n      font-size: 10px;\n      border-radius: 50%;\n      color: #f9f9f9;\n      background-color: rgba(178, 229, 183, 1);\n      margin-right: 5px;\n    }\n\n    @media (max-width: 425px) {\n      justify-self: flex-start;\n      padding-left: 30px;\n    }\n  }\n`;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { StyledStepper, StyledOptions } from \"../styles/Stepper.style\";\nimport { ROUTER } from \"../../../config/routing/router_per_component\";\nimport { Link } from \"@material-ui/core\";\nimport { useHistory } from \"react-router-dom\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst Stepper = () => {\n  const history = useHistory();\n  const steps = ROUTER.filter((element) => element.step);\n  const [currentPath, setCurrentPath] = useState(window.location.pathname);\n  const { validFirstVariables, validSecondVariables } = useContext(AuthContext);\n\n  useEffect(() => {\n    if (currentPath) {\n      setCurrentPath(window.location.pathname);\n    }\n  }, [window.location.pathname]);\n\n  const handleChosenPath = (path) => {\n    const pathName = window.location.pathname;\n    if (\n      path !== pathName &&\n      parseInt(localStorage.getItem(\"existNewMeters\")) === 1 &&\n      validFirstVariables === true\n    ) {\n      history.push(path);\n      localStorage.setItem(\"showMeters\", true);\n    } else {\n      if (\n        path !== pathName &&\n        parseInt(localStorage.getItem(\"existNewMeters\")) === 2 &&\n        validFirstVariables === true &&\n        validSecondVariables === true\n      ) {\n        history.push(path);\n        localStorage.setItem(\"showMeters\", true);\n      }\n    }\n  };\n\n  return (\n    <StyledStepper>\n      {steps.map((path, index) => (\n        <StyledOptions key={index}>\n          <div className=\"stepper_elements_container\">\n            <Link\n              className=\"steps\"\n              to={path.path}\n              onClick={() => handleChosenPath(path.path)}\n            >\n              {path.step}\n            </Link>\n            <i\n              className={`${\n                currentPath === path.path ? \"full_stepper\" : \"empty_stepper\"\n              }`}\n            ></i>\n          </div>\n        </StyledOptions>\n      ))}\n    </StyledStepper>\n  );\n};\n\nexport default Stepper;\n","import HomeIcon from \"@mui/icons-material/Home\";\nimport ElectricMeterIcon from \"@mui/icons-material/ElectricMeter\";\n\nconst Summary = () => {\n  const installedMeters = localStorage.getItem(\"editedMeterVariables\")\n    ? JSON.parse(localStorage.getItem(\"editedMeterVariables\"))\n    : localStorage.getItem(\"editedMeterVariables\");\n\n  return (\n    <div className=\"summary\">\n      <span className=\"summary_title\">Resumen</span>\n      <div\n        style={{\n          display: \"flex\",\n          flexDirection: \"row\",\n          gap: \"20px\",\n          alignItems: \"center\",\n        }}\n      >\n        <span>\n          <HomeIcon sx={{ height: \"30px\", width: \"30px\" }} />\n        </span>\n        {localStorage.getItem(\"inputSelection\")\n          ? localStorage.getItem(\"inputSelection\")\n          : null}\n      </div>\n      {localStorage.getItem(\"showMeters\") === \"true\"\n        ? installedMeters?.map((meter, index) => (\n            <>\n              <div className=\"summary_item_container\" key={index}>\n                <div className=\"items_labels\">\n                  <span>\n                    <ElectricMeterIcon sx={{ height: \"30px\", width: \"30px\" }} />\n                  </span>\n                  <b className=\"serial_label\">SN:</b> {meter?.serial}\n                </div>\n                <div className=\"secondary_labels\">\n                  {<b>Alias </b>}\n                  {\": \"}\n                  {meter?.alias}\n                </div>\n                <div className=\"secondary_labels\">\n                  {<b>Fact. Potencia</b>} {\": \"}\n                  {meter?.powerFactor}\n                </div>\n                <div className=\"secondary_labels\">\n                  {<b>Relación Tc</b>} {\": \"}\n                  {meter?.relationTc}\n                </div>\n                <div className=\"secondary_labels\">\n                  {<b>Max. Corriente</b>}\n                  {\": \"}\n                  {meter?.maximumCurrent}\n                </div>\n              </div>\n            </>\n          ))\n        : null}\n    </div>\n  );\n};\n\nexport default Summary;\n","import React from \"react\";\nimport { Route } from \"react-router-dom\";\nimport {\n  MainStepperContainer,\n  Navbar,\n  InstructionsAndSummaryContainer,\n  InstructionsContainer,\n  SummaryContainer,\n  StepperStatusContainer,\n} from \"./styles/stepperView.style\";\nimport Info from \"./components/Info\";\nimport Stepper from \"./components/Stepper\";\nimport Summary from \"./components/Summary\";\n\nconst StepperView = (props) => {\n  return (\n    <Route\n      render={({ match }) => (\n        <MainStepperContainer>\n          <Navbar>\n            <div className=\"modalButton\"></div>\n          </Navbar>\n          <InstructionsAndSummaryContainer>\n            <InstructionsContainer>\n              <Info match={match} />\n            </InstructionsContainer>\n            <SummaryContainer>\n              <Summary />\n            </SummaryContainer>\n          </InstructionsAndSummaryContainer>\n          <StepperStatusContainer>\n            <Stepper />\n          </StepperStatusContainer>\n        </MainStepperContainer>\n      )}\n    ></Route>\n  );\n};\n\nexport default StepperView;\n","import React from \"react\";\nimport StepperView from \"../../../components/stepperView/stepperView\";\nimport Info from \"../../../components/stepperView/components/Info\";\n\nconst StepperViewMacrometer = () => {\n  return (\n    <StepperView/>\n      )\n};\n\nexport default StepperViewMacrometer;\n","import gql from \"graphql-tag\";\n\n// Se agrega el campo del usuario destinatario para envió del código por correo\nexport const CREATE_PIN_CODE = gql`\n    mutation (\n        $ControllerId: Int!\n        $DeviceId: Float!\n        $name: String!\n        $pin: String!\n        $enabled: Boolean\n        $type: String\n        $user: RecipientUserInput\n    ) {\n        createPinCode(\n            ControllerId: $ControllerId\n            DeviceId: $DeviceId\n            name: $name\n            pin: $pin\n            enabled: $enabled\n            type: $type\n            user: $user\n        )\n    }\n`;\n\nexport const GET_SENT_PIN_CODE_REPORT = gql`\n    query ($id: Int, $pin: String, $idNumber: String) {\n        getSentPinCodeReport(\n            id: $id,\n            code: $pin,\n            idNumber: $idNumber\n        ) {\n            id\n            code\n            date\n            idNumber\n            user {\n                email\n                idNumber\n                name\n            }\n        }\n    }\n`;\n\nexport const SEND_PIN_CODE_BY_EMAIL = gql`\n    mutation ($pin: String!, $user: RecipientUserInput!) {\n        resendPinCodeByEmail(pin: $pin, user: $user)\n    }`;\n\nexport const ADD_RESTRICTION = gql`\n    mutation (\n        $ControllerId: Int\n        $DeviceId: Float\n        $index: Int\n        $type: String\n        $from: String\n        $to: String\n        $days: String\n        ) {\n            addRestriction(\n                ControllerId: $ControllerId\n                DeviceId: $DeviceId\n                index: $index\n                type: $type\n                from: $from\n                to: $to\n                days: $days\n            )\n        }`\n\nexport const GET_PIN_CODES = gql`\n    query(\n        $id: Int\n        $index: Int\n        $name: String\n        $pin: String\n        $enabled: Boolean\n        $type: String\n        $from: String\n        $to: String\n        $days: String\n        $DeviceId: Float\n    ){\n        getPinCodes(\n            id: $id\n            index: $index\n            name: $name\n            pin: $pin\n            enabled: $enabled\n            type: $type\n            from: $from\n            to: $to\n            days: $days\n            DeviceId: $DeviceId\n        ){\n            id\n            index\n            name\n            pin\n            enabled\n            type\n            from\n            to\n            days\n            DeviceId\n        }\n    }\n`","import { FC, Fragment, useState } from \"react\";\n\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\n\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\n\nconst slotDropdownMenuProps = {\n    paper: {\n        elevation: 0,\n        sx: {\n            overflow: \"visible\",\n            filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\n            mt: 1.5,\n            \"& .MuiAvatar-root\": {\n                width: 32,\n                height: 32,\n                ml: -0.5,\n                mr: 1\n            },\n            \"&::before\": {\n                content: '\"\"',\n                display: \"block\",\n                position: \"absolute\",\n                top: 0,\n                right: 14,\n                width: 10,\n                height: 10,\n                bgcolor: \"background.paper\",\n                transform: \"translateY(-50%) rotate(45deg)\",\n                zIndex: 0\n            }\n        }\n    }\n};\n\nconst transformOrigin = {\n    horizontal: \"right\",\n    vertical: \"top\"\n};\nconst anchorOrigin = {\n    ...transformOrigin,\n    vertical: \"bottom\"\n};\n\n/**\n * Renders a list of MenuItems.\n * @param {FC<{ items: Array<{ text: string, icon: FC, onClick: () => void }> }>} props\n * @param {Array<{ text: string, icon: FC, onClick: () => void }>} items - The array of items to render in the dropdown menu.\n * @param {string} items[].text - The text value to display in the menu item.\n * @param {FC} items[].renderIcon - The icon component to display in the menu item.\n * @param {Function} items[].onClick - The function to call when the menu item is clicked.\n * @returns {JSX.Element[]} The list of rendered menu items.\n */\nconst MenuItemList = ({ items }) =>\n    items.map((item, index) => (\n        <MenuItem key={`dropdown-item-${index + 1}`} onClick={item.onClick}>\n            <ListItemIcon>{item.renderIcon()}</ListItemIcon>\n            {item.text}\n        </MenuItem>\n    ));\n\n/**\n * DropstartDropdown component renders a button that opens a dropdown menu with customizable options.\n *\n * @FC\n * @param {Object} props - The component props.\n * @param {string} props.title - The title for the tooltip displayed on the icon button.\n * @param {Array<{ text: string, renderIcon: React.ReactNode, onClick: () => void }>} props.items - The items to display in the dropdown menu.\n *\n * @example\n * const items = [\n *   { text: \"profile\", icon: () => <Settings fontSize=\"small\" />, onClick: () => alert(\"profile\") },\n *   { text: \"account\", icon: () => <Logout fontSize=\"small\" />, onClick: () => alert(\"account\") },\n *   { text: \"logout\", icon: () => <Settings fontSize=\"small\" />, onClick: () => alert(\"logout\") }\n * ];\n * return (\n *   <DropstartDropdown items={items} />\n * );\n *\n * @returns {JSX.Element} The rendered FC.\n */\nexport default function DropstartDropdown({ title, items }) {\n    const [anchorElement, setAnchorElement] = useState(null);\n    const open = Boolean(anchorElement);\n\n    /**\n     * Handles the click event on the button and sets the anchor element.\n     *\n     * @param {React.MouseEvent<HTMLButtonElement>} event - The mouse click event.\n     */\n    const handleClick = (event) => setAnchorElement(event.currentTarget);\n    const handleClose = () => setAnchorElement(null);\n\n    return (\n        <Fragment>\n            <Tooltip title={title}>\n                <IconButton\n                    onClick={handleClick}\n                    size=\"small\"\n                    sx={{ mx: 1.8 }}\n                    aria-controls={open ? \"account-menu\" : undefined}\n                    aria-haspopup=\"true\"\n                    aria-expanded={open ? \"true\" : undefined}\n                >\n                    <MoreVertIcon sx={{ color: \"#000\" }} />\n                </IconButton>\n            </Tooltip>\n            <Menu\n                anchorEl={anchorElement}\n                id=\"account-menu\"\n                open={open}\n                onClose={handleClose}\n                onClick={handleClose}\n                slotProps={slotDropdownMenuProps}\n                transformOrigin={transformOrigin}\n                anchorOrigin={anchorOrigin}\n            >\n                <MenuItemList items={items} />\n            </Menu>\n        </Fragment>\n    );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { MONTHS_NUMBER } from \"../../../../utils/helpers\";\n\nimport Chip from \"@mui/material/Chip\";\nimport Stack from \"@mui/material/Stack\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport IconButton from \"@mui/material/IconButton\";\n\nimport DropstartDropdown from \"./DropstartDropdown\";\n\nimport BlockIcon from \"@mui/icons-material/Block\";\nimport EventIcon from \"@mui/icons-material/Event\";\nimport MailOutlineIcon from \"@mui/icons-material/MailOutline\";\nimport HistoryIcon from \"@mui/icons-material/History\";\n\nconst TRANSLATION_SHORTCUT = \"VIEW_PROJECT.VIEW_CODE_TABLE\"; // TRANSLATION_SHORTCUT\n\nconst RangeCodesList = ({ data }) => {\n  // agregando multi-idioma\n  const { t } = useTranslation();\n\n  const splitTo = data.to.split(\" \");\n  const splitFrom = data.from.split(\" \");\n  const getHourTo = splitTo[1];\n  const getHourFrom = splitFrom[1];\n  const getYearTo = splitTo[0].split(\"-\")[0];\n  const getDayTo = splitTo[0].split(\"-\")[2];\n  const getMountTo = splitTo[0].split(\"-\")[1];\n  const getYearFrom = splitFrom[0].split(\"-\")[0];\n  const getDayFrom = splitFrom[0].split(\"-\")[2];\n  const getMountFrom = splitFrom[0].split(\"-\")[1];\n\n  return (\n    <div className=\"__content_range_restriction\">\n      <div className=\"___content_range_content\">\n        <div className=\"____title_range_restrict\">\n          {t(`${TRANSLATION_SHORTCUT}.RANGE_FROM`) /* Desde */}\n        </div>\n        <div className=\"____date_range_restrict\">{`${getDayFrom} ${\n          MONTHS_NUMBER[Number(getMountFrom)]\n        } ${getYearFrom}`}</div>\n        <div className=\"____hour_range_restrict\">{getHourFrom}</div>\n      </div>\n      <div className=\"___content_range_content\">\n        <div className=\"____title_range_restrict\">\n          {t(`${TRANSLATION_SHORTCUT}.RANGE_TO`) /* Hasta */}\n        </div>\n        <div className=\"____date_range_restrict\">{`${getDayTo} ${\n          MONTHS_NUMBER[Number(getMountTo)]\n        } ${getYearTo}`}</div>\n        <div className=\"____hour_range_restrict\">{getHourTo}</div>\n      </div>\n    </div>\n  );\n};\n\nconst LabelDaysCodeList = ({ days }) => {\n  const [labels, setLabels] = useState([\n    { key: 1, label: \"L\" },\n    { key: 2, label: \"M\" },\n    { key: 3, label: \"X\" },\n    { key: 4, label: \"J\" },\n    { key: 5, label: \"V\" },\n    { key: 6, label: \"S\" },\n    { key: 7, label: \"D\" }\n  ]);\n\n  useEffect(() => {\n    days.split(\"\").map((chart) => {\n      setLabels((prev) =>\n        prev.map((label) => {\n          if (label.key == chart) {\n            return { ...label, color: \"primary\" };\n          }\n          return label;\n        })\n      );\n    });\n  }, [days]);\n  return (\n    <Stack direction=\"row\" spacing={1}>\n      {labels.map((day) => (\n        <Chip {...day} size=\"small\" />\n      ))}\n    </Stack>\n  );\n};\n\nconst HIDDEN_PIN_REGEX = /^\\*+$/;\n\nconst TableListCodes = ({\n  listCodes,\n  handleOpenModal,\n  handleAddRestriction,\n  handleViewHistoryOfSentPasswords,\n  handleViewSendCodeToPerson\n}) => {\n  // agregando multi-idioma\n  const { t } = useTranslation();\n\n  // valor del cuadro de busqueda que se usa para filtrar por nombre los códigos\n  const [nameFilter, setNameFilter] = useState(\"\");\n\n  // se actualizó a enable para que el filtro muestre por defecto los codigos habilitados\n  const [statusFitler, setStatusFilter] = useState(\"enable\");\n\n  const orderCodes = listCodes.sort((a, b) => b.id - a.id);\n\n  const restrictionLabel = {\n    a: t(`${TRANSLATION_SHORTCUT}.ALWAYS`), // \"Siempre\"\n    t: t(`${TRANSLATION_SHORTCUT}.RANGE`), // \"Rango\"\n    w: t(`${TRANSLATION_SHORTCUT}.CUSTOM`) // \"Personalizado\"\n  };\n\n  const handleChange = (e) => {\n    const { value } = e.target;\n    setNameFilter(value);\n  };\n\n  const handleChangeStatus = (e) => {\n    const { value } = e.target;\n    setStatusFilter(value);\n  };\n\n  const filtersByNameStatus = (data) => {\n    if (nameFilter != \"\") {\n      return data.filter((i) => i.name.toLowerCase().includes(nameFilter));\n    }\n    if (statusFitler === \"all\") {\n      return data;\n    }\n    if (statusFitler === \"enable\") {\n      return data.filter((i) => i.enabled);\n    }\n    if (statusFitler === \"disabled\") {\n      return data.filter((i) => !i.enabled);\n    }\n    return data;\n  };\n\n  // const getLockCodeManagementActions = (lockCodeState = true) =>\n  //   lockCodeState\n  //   ? [\n  //       {\n  //         text: \"Modificar rango actual\",\n  //         renderIcon: () => <Settings fontSize=\"small\" />,\n  //         onClick: () => console.log(\"Modificar rango actual\")\n  //       },\n  //       {\n  //         text: \"Enviar código\",\n  //         renderIcon: () => <Delete fontSize=\"small\" />,\n  //         onClick: () => <SendLockCode />\n  //       }\n  //     ]\n  //   : [\n  //       {\n  //         text: \"Ver códigos enviados\",\n  //         renderIcon: () => <Settings fontSize=\"small\" />,\n  //         onClick: () => console.log(\"Ver códigos enviados\")\n  //       },\n  //       {\n  //         text: \"Modificar rango actual\",\n  //         renderIcon: () => <Settings fontSize=\"small\" />,\n  //         onClick: () => console.log(\"Modificar rango actual\")\n  //       },\n  //     ];\n\n  return (\n    <div className=\"tablelistcodes_container\">\n      <div className=\"tablelistcodes_content_header\">\n        <div className=\"__content_header_title\">\n          <h1>\n            {\n              /* Lista de códigos */\n              t(`${TRANSLATION_SHORTCUT}.CODE_LIST_TITLE`)\n            }\n          </h1>\n          <span>\n            {\n              /* Aquí podrás ver y gestionar todos tus códigos */\n              t(`${TRANSLATION_SHORTCUT}.CODE_LIST_DESCRIPTION`)\n            }\n          </span>\n        </div>\n        <div className=\"__content_header_filters\">\n          <div className=\"__content_header_filters_container\">\n            <span className=\"__content_header_filters__title\">\n              {\n                /* Filtrar por nombres */\n                t(`${TRANSLATION_SHORTCUT}.FILTER_BY_NAME`)\n              }\n            </span>\n          </div>\n          <div className=\"__content_header_filters_container\">\n            <input\n              type=\"text\"\n              className=\"__content_header_filters_input\"\n              placeholder={\n                t(`${TRANSLATION_SHORTCUT}.ENTER_NAME`) /*\"Ingresa un nombre\" */\n              }\n              name=\"filter_name_codes\"\n              onChange={handleChange}\n            />\n          </div>\n        </div>\n        <div className=\"__content_header_filters_status\">\n          <div className=\"__content_header_filters_container_status\">\n            <span className=\"__content_header_filters_status_title\">\n              {\n                /* Filtrar por status */\n                t(`${TRANSLATION_SHORTCUT}.FILTER_BY_STATUS`)\n              }\n            </span>\n          </div>\n          <div className=\"__content_header_filters_container_status\">\n            <select\n              name=\"filter_status\"\n              className=\"__content_header_filters_status_input\"\n              onChange={(e) => handleChangeStatus(e)}\n              // estableciendo valor de habilitados por defecto en el combobox\n              defaultValue=\"enable\"\n            >\n              <option value=\"all\">\n                {t(`${TRANSLATION_SHORTCUT}.ALL`) /*Todos*/}\n              </option>\n              <option value=\"enable\">\n                {t(`${TRANSLATION_SHORTCUT}.ACTIVE`) /* Activos */}\n              </option>\n              <option value=\"disabled\">\n                {t(`${TRANSLATION_SHORTCUT}.INACTIVE`) /* Inactivos */}\n              </option>\n            </select>\n          </div>\n        </div>\n        <div className=\"__content_header_button\">\n          <button onClick={() => handleOpenModal()}>\n            <i className=\"fas fa-plus\"></i> {/* Agregar código */}\n            {t(`${TRANSLATION_SHORTCUT}.ADD_CODE`)}\n          </button>\n        </div>\n      </div>\n      <div className=\"tablelistcodes_content_header_table\">\n        <span>{t(`${TRANSLATION_SHORTCUT}.NO`) /* No: */}</span>\n        <span>{t(`${TRANSLATION_SHORTCUT}.NAME`) /* Nombre */}</span>\n        <span>\n          {t(`${TRANSLATION_SHORTCUT}.RESTRICTION`) /* Restricción */}\n        </span>\n        <span>{t(`${TRANSLATION_SHORTCUT}.TYPE`) /* Tipo */}</span>\n        <span>{t(`${TRANSLATION_SHORTCUT}.STATUS`) /* Estado */}</span>\n        <span>{t(`${TRANSLATION_SHORTCUT}.ACTIONS`) /* Acciones */}</span>\n      </div>\n      <>\n        {filtersByNameStatus(orderCodes).map((i, index) => {\n          const dropdownItems = [];\n          const IS_HIDDEN_PIN = HIDDEN_PIN_REGEX.test(i.pin);\n\n          if (!IS_HIDDEN_PIN) {\n            dropdownItems.push({\n              text: t(`${TRANSLATION_SHORTCUT}.MODIFY_CURRENT_RANGE`), //\"Modificar rango actual\",\n              renderIcon: () => <EventIcon fontSize=\"small\" />,\n              onClick: () => handleAddRestriction(i)\n            });\n            if (i.enabled)\n              dropdownItems.push({\n                text: t(`${TRANSLATION_SHORTCUT}.SEND_CODE_TO_PERSON`), // \"Enviar código a persona\",\n                renderIcon: () => <MailOutlineIcon fontSize=\"small\" />,\n                onClick: () => handleViewSendCodeToPerson(i)\n              });\n            else\n              dropdownItems.unshift({\n                text: t(`${TRANSLATION_SHORTCUT}.SENT_HISTORY`), // \"Historial de enviados\",\n                renderIcon: () => <HistoryIcon fontSize=\"small\" />,\n                onClick: () => handleViewHistoryOfSentPasswords(i)\n              });\n          }\n\n          return (\n            <div\n              key={`code-${index}`}\n              className={`tablelistcodes_content_header_codes ${\n                index % 2 !== 0 ? \"\" : \"tablelistcodes_content_header_codes_bg\"\n              }`}\n            >\n              <div className=\"__div__\">{`${index + 1}`}</div>\n              <div className=\"__content_codes_name_pass\">\n                <div className=\"___content_name\">{i.name}</div>\n                <div className=\"___content_pin\">\n                  {IS_HIDDEN_PIN\n                    ? t(\n                        `${TRANSLATION_SHORTCUT}.MASTER_KEY`\n                      ) /* \"Clave maestra\" */\n                    : i.pin}\n                </div>\n              </div>\n              <div className=\"__content_code_add_restriction\">\n                {i.type === \"a\" ? (\n                  <div className=\"___content_add_text\">\n                    {/* Sin restricción */}\n                    {t(`${TRANSLATION_SHORTCUT}.NO_RESTRICTION`)}\n                  </div>\n                ) : (\n                  <></>\n                )}\n                {i.type === \"w\" && i.days ? (\n                  <LabelDaysCodeList days={i.days} />\n                ) : (\n                  <></>\n                )}\n                {i.type === \"t\" && i.to && i.from ? (\n                  <RangeCodesList data={i} />\n                ) : (\n                  <></>\n                )}\n              </div>\n              <div className=\"__div__\">{restrictionLabel[i.type]}</div>\n              <div\n                className={\n                  i.enabled\n                    ? \"__codes_status_activa\"\n                    : \"__codes_status_inactiva\"\n                }\n              >\n                {\n                  i.enabled\n                    ? t(`${TRANSLATION_SHORTCUT}.ACTIVE_ITEM`) // \"Activa\"\n                    : t(`${TRANSLATION_SHORTCUT}.INACTIVE_ITEM`) // \"Inactiva\"\n                }\n              </div>\n              <div\n                className=\"__acciones_codelist\"\n                // onClick={() => handleAddRestriction(i)} // Antigua implementación\n              >\n                {IS_HIDDEN_PIN ? (\n                  <Tooltip\n                    title={\n                      /* \"Este código no permite interacción\" */\n                      t(`${TRANSLATION_SHORTCUT}.NO_INTERACTION`)\n                    }\n                    sx={{ mx: 1.2 }}\n                  >\n                    <IconButton>\n                      <BlockIcon />\n                    </IconButton>\n                  </Tooltip>\n                ) : (\n                  <DropstartDropdown\n                    title={\n                      t(`${TRANSLATION_SHORTCUT}.OPTIONS`) /* \"opciones\" */\n                    }\n                    items={dropdownItems}\n                  />\n                )}\n              </div>\n            </div>\n          );\n        })}\n      </>\n    </div>\n  );\n};\n\nexport default TableListCodes;\n","import { useState, useContext } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useMutation } from \"@apollo/client\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\nimport { CREATE_PIN_CODE } from \"../../../controllers/pinCodesController\";\n\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport FormControl from \"@mui/material/FormControl\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport TextField from \"@mui/material/TextField\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Switch from \"@mui/material/Switch\";\nimport Grid from \"@mui/material/Grid\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\n\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\nimport PasswordIcon from \"@mui/icons-material/Password\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\n\nconst EMPTY_STRING = \"\";\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_ADD_CODE_MODAL\";\n\nconst EMAIL_REGEX = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/;\nconst FULLNAME_REGEX = /^[A-ZÁÉÍÓÚÑ][a-záéíóúñ]+(\\s[A-ZÁÉÍÓÚÑ][a-záéíóúñ]+)*$/;\n\nfunction AddCode({ setTypeMessage, setView, setDataCode }) {\n  // manejo de multi-idioma en los labels\n  const { t } = useTranslation();\n\n  // conjunto de códigos programados en la cerradura\n  const { codesGlobal } = useContext(AuthContext);\n\n  // id de la cerradura y del controlador al que pertenece\n  const { id, controllerId } = useParams();\n\n  // datos del codigo\n  const [codeName, setCodeName] = useState(EMPTY_STRING);\n  const [codePin, setCodePin] = useState(EMPTY_STRING);\n\n  // datos del usuario (aplica si se enviará por correo)\n  const [userName, setUserName] = useState(EMPTY_STRING);\n  const [userEmail, setUserEmail] = useState(EMPTY_STRING);\n  const [userNin, setUserNin] = useState(EMPTY_STRING);\n\n  // comprobar si se enviará por correo el código\n  const [sendEmail, setSendEmail] = useState(false);\n\n  // apariencia de visibilidad del código\n  const [showCodePin, setShowCodePin] = useState(false);\n\n  // errores de validación\n  const [errors, setErrors] = useState({});\n\n  // mutación para la generación del código en la cerradura\n  const [createPinCode] = useMutation(CREATE_PIN_CODE);\n\n  // AUNQUE AÚN NO ESTA DEFINIDO pienso en una mutación para enviar el correo\n  // const [sendLockCodeToUserEmail] = useMutation(SEND_PIN_CODE);\n\n  // Manejamos el estado de los valores booleanos\n  const handleToggle = (setter) => () => setter((prev) => !prev); // const handleClickShowPassword = () => setShowCodePin(!showCodePin);\n\n  // Previene el comportamiento por defecto\n  const handleDefaultBehavior = (event) => event.preventDefault();\n\n  // Manejamos los eventos de desenfoque de entrada para los campos del formulario.\n  // Recortamos los espacios en blanco al principio y al final del valor de entrada\n  // actualizamos el estado de los datos del formulario.\n  const handleInputBlur = (setter) => (event) => {\n    const value = event.target.value.trim();\n    if (value !== event.target.value) setter(value);\n  };\n  const handleInputChange = (setter) => (event) => {\n    setter(event.target.value);\n    setErrors((prev) => ({ ...prev, [event.target.name]: EMPTY_STRING }));\n  };\n  const handleInputKeyPress = (event) => {\n    // Usamos event.which para compatibilidad con navegadores antiguos\n    const keyCode = event.which || event.keyCode;\n    // solo se permiten digitos y la tecla backspace para borrar\n    if (keyCode !== 8 && (keyCode < 48 || keyCode > 57))\n      // se previene que se registre la tecla si no está permitida\n      event.preventDefault();\n  };\n\n  /* ANTIGUA IMPLEMENTACIÓN\n\n  const handleSubmit = async () => {\n    if (valideForm()) {\n      setTypeMessage(\"loading\");\n\n      let variables = {\n        name: codeName,\n        pin: codePin,\n        enabled: true,\n        type: \"a\",\n        ControllerId: parseInt(controllerId),\n        DeviceId: parseInt(id)\n      };\n\n      const codeCreated = await createPinCode({ variables });\n      if (codeCreated.data.createPinCode.success) {\n        variables.index = codeCreated.data.createPinCode.data.index;\n        setTimeout(() => {\n          setTypeMessage(null);\n          setDataCode(variables);\n          setView(\"type\");\n        }, 60000);\n      } else {\n        setTypeMessage(\"error\");\n      }\n    }\n  };\n  */\n\n  const handleSubmit = (event) => {\n    // validamos los campos de formulario\n    if (validateForm()) {\n      // iniciamos la animación\n      setTypeMessage(\"loading\");\n      // se programa el código en la cerradura\n      registerCodeInTheDoorLock();\n    }\n  };\n\n  const registerCodeInTheDoorLock = async () => {\n    try {\n      // ciframos el código de la cerradura\n      const SECRET_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY ?? \"\";\n      const CYPHER_PIN = await encryptData(codePin, SECRET_KEY);\n      // preparamos los datos para la creación fisica en el dispositivo\n      let variables = {\n        name: codeName,\n        pin: CYPHER_PIN,\n        enabled: true,\n        type: \"a\",\n        ControllerId: parseInt(controllerId),\n        DeviceId: parseInt(id)\n      };\n      if (sendEmail) {\n        /* *******************************************************\n        aquí irán los datos extra para hacerle llegar el código\n        por correo al usuario (internamente el backend manda\n        la orden para crear el código en la cerradura física,\n        una vez esto ocurra, procede a enviar un email)\n        *******************************************************\n        console.log(\"Se debe enviar correo\"); */\n        // ciframos el número de identificación del usuario\n        const CYPHER_NIN = await encryptData(userNin, SECRET_KEY);\n        // agregamos los datos del usuario que recibirá el PIN\n        variables.user = {\n          name: userName,\n          email: userEmail,\n          idNumber: CYPHER_NIN,\n          pinMessageOption: getPinGenerationOption(),\n          offset: new Date().getTimezoneOffset(), // Desfase horario respecto a UTC (en minutos)\n          locale: // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n            typeof Intl === \"undefined\"\n              ? navigator.languages && navigator.languages.length\n                ? navigator.languages[0]\n                : navigator.language\n              : Intl.DateTimeFormat().resolvedOptions().locale\n        };\n      }\n      /* console.log(variables);\n      console.log(\"enviando...\");\n      *********************************************************\n      MUTACIÓN ACTUAL PARA LA CREACIÓN DEL CÓDIGO DE CERRADURA\n      ********************************************************* */\n      const codeCreated = await createPinCode({ variables });\n      const result = codeCreated.data.createPinCode;\n      if (result.success) {\n        // console.log({ codeName, codePin, userName, userEmail, userNin });\n        variables.index = result.data.index;\n        setTimeout(() => {\n          setTypeMessage(null);\n          setDataCode(variables);\n          setView(\"type\");\n        }, 60000);\n        /* variables?.user &&\n          console.log(`Enviando correo electrónico a ${variables.user.email}...\n\n          Estimado ${\n            variables.user.name\n          }, se te ha generado un acceso a tu cerradura electronica.\n          Tu Número de Identifación Personal (PIN) consiste en un código númerico de ${\n            codePin.length\n          } dígitos.\n          Este código se generó ${\n            variables.user.pinMessageOption > 0\n              ? `a partir de tu Número de Identidad Nacional (NIN): ${userNin}. Tomando los ${\n                  variables.user.pinMessageOption === 1\n                    ? \"3 primeros dígitos junto a los 3 últimos\"\n                    : \"6 últimos dígitos\"\n                }`\n              : \"aleatoriamente\"\n          }.\n          Cordialmente, Horus!`); */\n      } else {\n        setTypeMessage(\"error\");\n      }\n    } catch (error) {\n      console.log(\"No fue posible programar el código en la cerradura\");\n      // console.log(error);\n    } finally {\n      // console.log(\"registerCodeInTheDoorLock() proceso terminado!\");\n    }\n  };\n\n  /* ANTIGUA IMPLEMENTACIÓN\n  const valideKey = (event) => {\n    var keyCode = event.which || event.keyCode;\n\n    if (keyCode == 8) {\n      // backspace.\n      return true;\n    } else if (keyCode >= 48 && keyCode <= 57) {\n      // is a number.\n      return true;\n    } else {\n      // other keys.\n      event.preventDefault();\n      return false;\n    }\n  };\n  */\n\n  /* ANTIGUA IMPLEMENTACIÓN \n\n  const valideForm = () => {\n    if (codesGlobal.map((i) => i.name).includes(codeName.trim())) {\n      setErrors((prev) => ({ ...prev, name: \"Esta nombre ya existe\" }));\n      return false;\n    }\n    if (codeName.trim().length === 0) {\n      setErrors((prev) => ({ ...prev, name: \"Ingrese un nombre válido\" }));\n      return false;\n    } else {\n      setErrors((prev) => ({ ...prev, name: \"\" }));\n    }\n    if (codesGlobal.map((i) => i.pin).includes(codePin.trim())) {\n      setErrors((prev) => ({\n        ...prev,\n        code: \"Esta contraseña ya está en uso.\"\n      }));\n      return false;\n    }\n    if (codePin.trim().length === 0 || codePin.trim().length < 6) {\n      setErrors((prev) => ({ ...prev, code: \"Debe tener mínimo 6 dígitos.\" }));\n      return false;\n    } else {\n      setErrors((prev) => ({ ...prev, code: \"\" }));\n    }\n\n    return true;\n  };\n  */\n\n  const validateForm = () => {\n    let valid = true;\n    const newErrors = {};\n\n    if (!codeName.length) {\n      newErrors.codeName = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NAME`);\n      valid = false;\n    }\n\n    if (codePin.length !== 6) {\n      newErrors.codePin = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_CODE_PIN`);\n      valid = false;\n    }\n\n    for (const code of codesGlobal) {\n      // console.log(code);\n\n      if (newErrors.codeName && newErrors.codePin) break;\n\n      // comprobar unicidad del nombre del código\n      if (!newErrors.codeName && code.name === codeName) {\n        newErrors.codeName = t(`${TRANSLATION_SHORTCUT}.ERRORS.NAME_EXISTS`);\n        valid = false;\n      }\n      // comprobar unicidad del PIN del código\n      if (!newErrors.codePin && code.pin === codePin) {\n        newErrors.codePin = t(`${TRANSLATION_SHORTCUT}.ERRORS.PIN_EXISTS`);\n        valid = false;\n      }\n    }\n\n    if (sendEmail) {\n      // valida que se especifique el nombre del destinatario\n      if (!userName || !FULLNAME_REGEX.test(userName)) {\n        newErrors.userName = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NAME`);\n        valid = false;\n      } else if (userName.length < 8) {\n        newErrors.userName = t(`${TRANSLATION_SHORTCUT}.ERRORS.SHORT_NAME`);\n        valid = false;\n      }\n      // valida que se especifique el correo electronico\n      if (!userEmail || !EMAIL_REGEX.test(userEmail)) {\n        newErrors.userEmail = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_EMAIL`);\n        valid = false;\n      }\n      // valida la longitud del número de identificación nacional\n      if (userNin.length < 6) {\n        newErrors.userNin = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NIN`);\n        valid = false;\n      }\n    }\n\n    setErrors(newErrors);\n    return valid;\n  };\n\n  // const setRandomCode = () => setCodePin(String(Math.random()).split(\".\")[1].substring(0, 6));\n  const setRandomDigitsAsLockCode = () =>\n    setCodePin(Math.random().toString().slice(2, 8));\n\n  /**\n   * Logica para generar los 6 digitos que desbloquearán la cerradura como código\n   * a partir del dato del NIN (Cédula). Hay dos formas en las que se puede generar\n   * el cógido, una es tomando los 6 ultimos digitos y el otro es tomando los 3 primeros\n   * dígitos y juntandolos con los 3 últimos. Por lo que es necesario una forma de que\n   * aleatoriamente aplique ya sea el primer caso o el 2do.\n   * caso 1 const lastSixDigits = userNin.slice(-6);\n   * -> const firstThreeLastThreeDigits = userNin.slice(-3) + userNin.slice(0, 3);\n   */\n  const generateNinDigitsAsLockCode = () =>\n    Math.random() < 0.5\n      ? userNin.slice(-6) // lastSixDigits\n      : userNin.substring(0, 3) + userNin.slice(-3); // firstThreeLastThreeDigits\n\n  const getPinGenerationOption = () =>\n    codePin.startsWith(userNin.substring(0, 3)) &&\n    codePin.endsWith(userNin.slice(-3))\n      ? 1\n      : codePin === userNin.slice(-6)\n      ? 2\n      : 0;\n\n  const setNinDigitsAsLockCode = () =>\n    userNin.length < 6\n      ? setErrors((prev) => ({\n          ...prev,\n          userNin: t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NIN`)\n        }))\n      : setCodePin(generateNinDigitsAsLockCode());\n\n  return (\n    <Box sx={{ display: \"flex\", p: 8 }}>\n      <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n        <Box\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n            width: \"120px\",\n            height: \"120px\",\n            backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n            borderRadius: \"50%\"\n          }}\n        >\n          <PasswordIcon color=\"primary\" sx={{ fontSize: \"50px\" }} />\n        </Box>\n      </Box>\n      <Box sx={{ width: \"300px\", px: 2 }}>\n        <Grid container spacing={2}>\n          <Grid item xs={12}>\n            <TextField\n              size=\"small\"\n              label={t(`${TRANSLATION_SHORTCUT}.LABELS.CODE_NAME`)}\n              variant=\"outlined\"\n              name=\"codeName\"\n              value={codeName}\n              onChange={handleInputChange(setCodeName)}\n              onBlur={handleInputBlur(setCodeName)}\n              fullWidth\n              error={Boolean(errors.codeName)}\n              helperText={errors.codeName}\n            />\n          </Grid>\n          {sendEmail && (\n            <>\n              <Grid item xs={12}>\n                <TextField\n                  size=\"small\"\n                  label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_FULLNAME`)}\n                  name=\"userName\"\n                  value={userName}\n                  onChange={handleInputChange(setUserName)}\n                  onBlur={handleInputBlur(setUserName)}\n                  error={Boolean(errors.userName)}\n                  helperText={errors.userName}\n                  fullWidth\n                />\n              </Grid>\n              <Grid item xs={12}>\n                <TextField\n                  size=\"small\"\n                  label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}\n                  name=\"userEmail\"\n                  value={userEmail}\n                  onChange={handleInputChange(setUserEmail)}\n                  onBlur={handleInputBlur(setUserEmail)}\n                  error={Boolean(errors.userEmail)}\n                  helperText={errors.userEmail}\n                  fullWidth\n                />\n              </Grid>\n              <Grid item xs={12}>\n                <TextField\n                  size=\"small\"\n                  label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}\n                  name=\"userNin\"\n                  value={userNin}\n                  inputProps={{ minLength: \"6\" }}\n                  onChange={handleInputChange(setUserNin)}\n                  onBlur={handleInputBlur(setUserNin)}\n                  onKeyPress={handleInputKeyPress}\n                  error={Boolean(errors.userNin)}\n                  helperText={errors.userNin}\n                  fullWidth\n                />\n              </Grid>\n            </>\n          )}\n          <Grid item xs={sendEmail ? 6 : 9}>\n            <FormControl\n              size=\"small\"\n              variant=\"outlined\"\n              error={Boolean(errors.codePin)}\n              fullWidth\n            >\n              <InputLabel htmlFor=\"doorlock-code\">\n                {t(`${TRANSLATION_SHORTCUT}.LABELS.CODE_PIN`)}\n              </InputLabel>\n              <OutlinedInput\n                id=\"doorlock-code\"\n                name=\"codePin\"\n                type={showCodePin ? \"text\" : \"password\"}\n                inputProps={{ maxLength: \"6\" }}\n                endAdornment={\n                  <InputAdornment position=\"end\">\n                    <IconButton\n                      aria-label=\"toggle password visibility\"\n                      onClick={handleToggle(setShowCodePin)}\n                      onMouseDown={handleDefaultBehavior}\n                      edge=\"end\"\n                    >\n                      {showCodePin ? <VisibilityOff /> : <Visibility />}\n                    </IconButton>\n                  </InputAdornment>\n                }\n                value={codePin}\n                onChange={handleInputChange(setCodePin)}\n                onBlur={handleInputBlur(setCodePin)}\n                onKeyPress={handleInputKeyPress}\n                onPaste={handleDefaultBehavior}\n                label={t(`${TRANSLATION_SHORTCUT}.LABELS.CODE_PIN`)}\n              />\n              <FormHelperText>{errors.codePin}</FormHelperText>\n            </FormControl>\n          </Grid>\n          <Grid item xs={3}>\n            <Tooltip\n              title={t(`${TRANSLATION_SHORTCUT}.TOOLTIPS.GENERATE_RANDOM_CODE`)}\n            >\n              <Button\n                color=\"inherit\"\n                variant=\"contained\"\n                disableElevation\n                onClick={setRandomDigitsAsLockCode}\n              >\n                <PasswordIcon />\n              </Button>\n            </Tooltip>\n          </Grid>\n          {sendEmail && (\n            <Grid item xs={3}>\n              <Tooltip\n                title={t(\n                  `${TRANSLATION_SHORTCUT}.TOOLTIPS.GENERATE_CODE_BY_NIN`\n                )}\n              >\n                <Button\n                  color=\"inherit\"\n                  variant=\"contained\"\n                  onClick={setNinDigitsAsLockCode}\n                  disableElevation\n                >\n                  <VpnKeyIcon />\n                </Button>\n              </Tooltip>\n            </Grid>\n          )}\n          <Grid item xs={12} marginTop={-1.5}>\n            <FormControlLabel\n              control={\n                <Switch\n                  checked={sendEmail}\n                  onChange={handleToggle(setSendEmail)}\n                  inputProps={{ \"aria-label\": \"controlled\" }}\n                />\n              }\n              label={\n                <Box sx={{ typography: \"body2\" }}>\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.SEND_EMAIL`)}\n                </Box>\n              }\n            />\n          </Grid>\n          <Grid item xs={12}>\n            <Button\n              variant=\"contained\"\n              onClick={handleSubmit}\n              disableElevation\n              fullWidth\n            >\n              {t(`${TRANSLATION_SHORTCUT}.BUTTONS.CREATE`)}\n            </Button>\n          </Grid>\n        </Grid>\n      </Box>\n    </Box>\n  );\n}\n\nexport default AddCode;\n","import { useState, useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useMutation } from \"@apollo/client\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Divider from \"@mui/material/Divider\";\nimport Grid from \"@mui/material/Grid\";\nimport Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport ToggleButton from \"@mui/material/ToggleButton\";\nimport ToggleButtonGroup from \"@mui/material/ToggleButtonGroup\";\n\nimport DateRangeIcon from \"@mui/icons-material/DateRange\";\nimport EventRepeatIcon from \"@mui/icons-material/EventRepeat\";\n\nimport esLocale from \"date-fns/locale/es\";\nimport enLocale from \"date-fns/locale/en-US\";\n\nimport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { MobileTimePicker } from \"@mui/x-date-pickers/MobileTimePicker\";\nimport { MobileDateTimePicker } from \"@mui/x-date-pickers/MobileDateTimePicker\";\n\nimport { ADD_RESTRICTION } from \"../../../controllers/pinCodesController\";\n\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_RESTRICTION_MODAL\";\n\nconst userLocale =\n  localStorage.getItem(\"language\") ??\n  (navigator.languages?.length\n    ? navigator.languages[0]\n    : navigator.language\n  ).split(\"-\")[0];\n\nfunction RangeRestriction({\n  fromDate,\n  toDate,\n  handleChangeFromDate,\n  handleChangeToDate,\n  errors\n}) {\n  // manejo de multi-idioma en los labels\n  const { t } = useTranslation();\n\n  return (\n    <Box>\n      <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n        <Box\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n            width: \"45px\",\n            height: \"45px\",\n            backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n            borderRadius: \"50%\",\n            marginRight: 1\n          }}\n        >\n          <DateRangeIcon color=\"primary\" fontSize=\"medium\" />\n        </Box>\n        <Typography variant=\"h6\">\n          {t(`${TRANSLATION_SHORTCUT}.RANGE`) /* Rango */}\n        </Typography>\n      </Box>\n      <Box sx={{ \"& > :first-of-type\": { marginRight: 2 }, py: 2 }}>\n        <LocalizationProvider\n          dateAdapter={AdapterDateFns}\n          adapterLocale={userLocale === \"es\" ? esLocale : enLocale}\n        >\n          <FormControl>\n            <MobileDateTimePicker\n              renderInput={(props) => <TextField {...props} />}\n              label={t(`${TRANSLATION_SHORTCUT}.FROM`) /* Desde */}\n              value={fromDate}\n              onChange={(date) => handleChangeFromDate(date)}\n              inputFormat=\"eeee, dd MMMM HH:mm\"\n              minDateTime={new Date()}\n              showToolbar={true}\n              ampm={true}\n            />\n          </FormControl>\n          <FormControl error={errors?.toDate ? true : false}>\n            <MobileDateTimePicker\n              renderInput={(props) => <TextField {...props} />}\n              label={t(`${TRANSLATION_SHORTCUT}.TO`) /* Hasta */}\n              value={toDate}\n              onChange={(date) => handleChangeToDate(date)}\n              inputFormat=\"eeee, dd MMMM HH:mm\"\n              minDateTime={fromDate}\n              showToolbar={true}\n              ampm={true}\n            />\n            <FormHelperText>{errors?.toDate}</FormHelperText>\n          </FormControl>\n        </LocalizationProvider>\n      </Box>\n    </Box>\n  );\n}\n\nfunction CustomRestriction({\n  fromDate,\n  toDate,\n  days,\n  handleChangeDays,\n  handleChangeFromDate,\n  handleChangeToDate,\n  errors\n}) {\n  const { t } = useTranslation();\n\n  return (\n    <Box>\n      <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n        <Box\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n            width: \"45px\",\n            height: \"45px\",\n            backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n            borderRadius: \"50%\",\n            marginRight: 1\n          }}\n        >\n          <EventRepeatIcon color=\"primary\" fontSize=\"medium\" />\n        </Box>\n        <Typography variant=\"h6\">\n          {t(`${TRANSLATION_SHORTCUT}.CUSTOM`) /* Personalizado */}\n        </Typography>\n      </Box>\n\n      <Box sx={{ \"& > :first-of-type\": { marginRight: 2 }, py: 2 }}>\n        <LocalizationProvider\n          dateAdapter={AdapterDateFns}\n          adapterLocale={esLocale}\n        >\n          <FormControl>\n            <MobileTimePicker\n              label={t(`${TRANSLATION_SHORTCUT}.FROM`) /* \"Desde\" */}\n              value={fromDate}\n              onChange={(date) => handleChangeFromDate(date)}\n              renderInput={(params) => <TextField {...params} />}\n              ampm={true}\n            />\n          </FormControl>\n          <FormControl error={errors?.toDate ? true : false}>\n            <MobileTimePicker\n              label={t(`${TRANSLATION_SHORTCUT}.TO`) /* Hasta */}\n              value={toDate}\n              onChange={(date) => handleChangeToDate(date)}\n              renderInput={(params) => <TextField {...params} />}\n              ampm={true}\n              minTime={new Date(new Date(fromDate).getTime() + 300000)}\n            />\n            <FormHelperText>{errors?.toDate}</FormHelperText>\n          </FormControl>\n        </LocalizationProvider>\n      </Box>\n      <Box sx={{ pt: 2 }}>\n        <Typography variant=\"p\" sx={{ marginRight: 2 }}>\n          {t(`${TRANSLATION_SHORTCUT}.DAYS`) /* Dias: */}:\n        </Typography>\n        <FormControl error={errors?.days ? true : false}>\n          <ToggleButtonGroup value={days} onChange={handleChangeDays}>\n            <ToggleButton value=\"1\">\n              {t(`${TRANSLATION_SHORTCUT}.MON`) /* Lun */}\n            </ToggleButton>\n            <ToggleButton value=\"2\">\n              {t(`${TRANSLATION_SHORTCUT}.TUE`) /* Mar */}\n            </ToggleButton>\n            <ToggleButton value=\"3\">\n              {t(`${TRANSLATION_SHORTCUT}.WED`) /* Mie */}\n            </ToggleButton>\n            <ToggleButton value=\"4\">\n              {t(`${TRANSLATION_SHORTCUT}.THU`) /* Jue */}\n            </ToggleButton>\n            <ToggleButton value=\"5\">\n              {t(`${TRANSLATION_SHORTCUT}.FRI`) /* Vie */}\n            </ToggleButton>\n            <ToggleButton value=\"6\">\n              {t(`${TRANSLATION_SHORTCUT}.SAT`) /* Sab */}\n            </ToggleButton>\n            <ToggleButton value=\"7\">\n              {t(`${TRANSLATION_SHORTCUT}.SUN`) /* Dom */}\n            </ToggleButton>\n          </ToggleButtonGroup>\n          <FormHelperText>{errors?.days}</FormHelperText>\n        </FormControl>\n      </Box>\n    </Box>\n  );\n}\n\nfunction SelectType({ handleClickType }) {\n  const { t } = useTranslation();\n\n  return (\n    <Box sx={{ p: 3 }}>\n      <Grid container spacing={2}>\n        <Grid item xs={12} sx={{ textAlign: \"center\", paddingBottom: 2 }}>\n          <Typography variant=\"p\">\n            {\n              /* Selecciona el tipo de restricción a agregar */\n              t(`${TRANSLATION_SHORTCUT}.SELECT_TYPE`)\n            }\n          </Typography>\n        </Grid>\n        <Grid item xs>\n          <Box sx={{ p: 2, textAlign: \"center\" }}>\n            <Box\n              sx={{\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width: \"64px\",\n                height: \"64px\",\n                backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n                borderRadius: \"50%\",\n                margin: \"auto auto 10px\"\n              }}\n            >\n              <DateRangeIcon color=\"primary\" fontSize=\"large\" />\n            </Box>\n            <Typography variant=\"h6\">\n              {t(`${TRANSLATION_SHORTCUT}.RANGE`) /* Rango */}\n            </Typography>\n            <Typography variant=\"p\">\n              {\n                /* Permite seleccionar un rango de días en el que el código estará activo */\n                t(`${TRANSLATION_SHORTCUT}.RANGE_DESCRIPTION`)\n              }\n            </Typography>\n            <Box sx={{ marginTop: \"10px\" }}>\n              <Button\n                variant=\"contained\"\n                color=\"primary\"\n                disableElevation\n                onClick={() => handleClickType(\"t\")}\n              >\n                {t(`${TRANSLATION_SHORTCUT}.SELECT`) /* Seleccionar */}\n              </Button>\n            </Box>\n          </Box>\n        </Grid>\n        <Divider orientation=\"vertical\" flexItem />\n        <Grid item xs>\n          <Box sx={{ p: 2, textAlign: \"center\", borderRadius: \"15px\" }}>\n            <Box\n              sx={{\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width: \"64px\",\n                height: \"64px\",\n                backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n                borderRadius: \"50%\",\n                margin: \"auto auto 10px\"\n              }}\n            >\n              <EventRepeatIcon color=\"primary\" fontSize=\"large\" />\n            </Box>\n            <Typography variant=\"h6\">\n              {t(`${TRANSLATION_SHORTCUT}.CUSTOM`) /* Personalizado */}\n            </Typography>\n            <Typography variant=\"p\">\n              {\n                /* Permite seleccionar qué días y a qué hora estará activo en cada semana */\n                t(`${TRANSLATION_SHORTCUT}.CUSTOM_DESCRIPTION`)\n              }\n            </Typography>\n            <Box sx={{ marginTop: \"10px\" }}>\n              <Button\n                variant=\"contained\"\n                color=\"primary\"\n                disableElevation\n                onClick={() => handleClickType(\"w\")}\n              >\n                {t(`${TRANSLATION_SHORTCUT}.SELECT`) /* Seleccionar */}\n              </Button>\n            </Box>\n          </Box>\n        </Grid>\n      </Grid>\n    </Box>\n  );\n}\n\nfunction Restriction({ dataCode, setTypeMessage, refetchListCode }) {\n  const { t } = useTranslation();\n\n  const [type, setType] = useState(null);\n  const [fromDate, setFromDate] = useState(new Date(new Date().getTime()));\n  const [toDate, setToDate] = useState(\n    new Date(new Date().getTime() + 86500000)\n  );\n  const [days, setDays] = useState([]);\n  const [errors, setErrors] = useState({});\n  const { controllerId } = useParams();\n\n  const [addRestriction] = useMutation(ADD_RESTRICTION);\n\n  useEffect(() => {\n    refetchListCode();\n  }, []);\n\n  const handleChangeFromDate = (date) => setFromDate(date);\n  const handleChangeToDate = (date) => setToDate(date);\n  const handleChangeDays = (event, newDay) => {\n    setDays(newDay);\n  };\n\n  const handleClickType = (type) => {\n    setType(type);\n  };\n\n  const handleSubmit = async (event) => {\n    event.preventDefault();\n    if (valideForm()) {\n      setTypeMessage(\"loading\");\n      let variables = {\n        ...dataCode,\n        from: fromDate,\n        to: toDate,\n        days: days.toString().replace(/,/g, \"\"),\n        type,\n        ControllerId: parseInt(controllerId)\n      };\n      const restriction = await addRestriction({ variables });\n      if (restriction.data.addRestriction.success) {\n        setTypeMessage(\"success\");\n      } else {\n        setTypeMessage(\"error\");\n      }\n    }\n  };\n\n  const goBack = () => {\n    setType(null);\n    setDays([]);\n    setFromDate(new Date(new Date().getTime()));\n    setToDate(new Date(new Date().getTime() + 86500000));\n    setErrors({});\n  };\n\n  const viewType = () => {\n    switch (type) {\n      case \"t\":\n        return (\n          <RangeRestriction\n            fromDate={fromDate}\n            toDate={toDate}\n            handleChangeFromDate={handleChangeFromDate}\n            handleChangeToDate={handleChangeToDate}\n            errors={errors}\n          />\n        );\n      case \"w\":\n        return (\n          <CustomRestriction\n            fromDate={fromDate}\n            toDate={toDate}\n            handleChangeFromDate={handleChangeFromDate}\n            handleChangeToDate={handleChangeToDate}\n            handleChangeDays={handleChangeDays}\n            days={days}\n            errors={errors}\n          />\n        );\n      default:\n        return <SelectType handleClickType={handleClickType} />;\n    }\n  };\n\n  const valideForm = () => {\n    let diff = toDate.getTime() - fromDate.getTime();\n    if (diff < 0) {\n      if (type === \"t\") {\n        setErrors((prev) => ({\n          ...prev,\n          toDate: t(`${TRANSLATION_SHORTCUT}.SELECT_LATER_DATE`) // \"Seleccione una fecha mayor\"\n        }));\n        return false;\n      } else if (type === \"w\") {\n        setErrors((prev) => ({\n          ...prev,\n          toDate: t(`${TRANSLATION_SHORTCUT}.SELECT_LATER_TIME`) // \"Seleccione una hora mayor\"\n        }));\n        return false;\n      }\n    }\n\n    if (type === \"w\" && days.length === 0) {\n      setErrors((prev) => ({\n        ...prev,\n        days: t(`${TRANSLATION_SHORTCUT}.SELECT_AT_LEAST_ONE_DAY`) // \"Seleccione como mínimo un día de la semana\"\n      }));\n      return false;\n    }\n    setErrors({});\n    return true;\n  };\n\n  return (\n    <Box sx={{ p: 3 }}>\n      {viewType()}\n      {type && (\n        <Box>\n          <Box sx={{ textAlign: \"right\", pt: 3 }}>\n            <Button\n              color=\"inherit\"\n              disableElevation\n              onClick={goBack}\n              sx={{ marginRight: 2 }}\n            >\n              {t(`${TRANSLATION_SHORTCUT}.BACK`) /* Atrás */}\n            </Button>\n            <Button\n              variant=\"contained\"\n              color=\"primary\"\n              onClick={handleSubmit}\n              disableElevation\n            >\n              {t(`${TRANSLATION_SHORTCUT}.SAVE`) /* Guardar */}\n            </Button>\n          </Box>\n        </Box>\n      )}\n    </Box>\n  );\n}\n\nexport default Restriction;\n","import React from \"react\";\n\nexport default function LoadingDoorLock() {\n  return (\n    <div>\n      <lottie-player\n        style={{\n          marginRight: \"auto\",\n          marginLeft: \"auto\",\n          width: \"40%\",\n        }}\n        className='_logo'\n        src='https://lottie.host/676d6909-e4d6-4273-a75f-ccf894540af1/TdWWNBkotQ.json'\n        background='transparent'\n        speed='1'\n        loop\n        autoplay\n      ></lottie-player>\n    </div>\n  );\n}\n","import { useState, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport {\n  GET_SENT_PIN_CODE_REPORT,\n  SEND_PIN_CODE_BY_EMAIL\n} from \"../../../../controllers/pinCodesController\";\n\nimport Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Grid\";\nimport Button from \"@mui/material/Button\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport Paper from \"@mui/material/Paper\";\nimport Stack from \"@mui/material/Stack\";\nimport Divider from \"@mui/material/Divider\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport IconButton from \"@mui/material/IconButton\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport Alert from \"@mui/material/Alert\";\n\nimport ReplyIcon from \"@mui/icons-material/Reply\";\nimport CalendarMonthIcon from \"@mui/icons-material/CalendarMonth\";\nimport Loading from \"../../../loading/Loading\";\nimport { encryptData } from \"../../../../utils/encryptDecrypt\";\n\nconst EMPTY_STRING = \"\";\n\nconst EMAIL_REGEX = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/;\nconst FULLNAME_REGEX = /^[A-ZÁÉÍÓÚÑ][a-záéíóúñ]+(\\s[A-ZÁÉÍÓÚÑ][a-záéíóúñ]+)*$/;\n\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_SEND_CODE_TO_PERSON_MODAL\";\n\nconst initialFormData = {\n  name: EMPTY_STRING,\n  email: EMPTY_STRING,\n  idNumber: EMPTY_STRING\n};\n\nconst adapterEmailingsByUser = (sentEmails = []) =>\n  // Convertimos el objeto en un array\n  Object.values(\n    // Transformamos la data para agrupar por usuario\n    sentEmails.reduce((acc, item) => {\n      const { user, code, date } = item;\n      if (!user || !user.idNumber) return acc;\n      if (!acc[user.idNumber])\n        acc[user.idNumber] = {\n          id: user.idNumber,\n          name: user.name,\n          email: user.email,\n          idNumber: user.idNumber,\n          sentHistory: [] // Lista de fechas y códigos enviados\n        };\n      acc[user.idNumber].sentHistory.push({\n        code,\n        date: new Date(date).toLocaleString() // Convertimos el timestamp a fecha legible\n      });\n      return acc;\n    }, {})\n  );\n\nexport default function SendCodeToPerson({\n  dataCode,\n  setDataCode,\n  setTypeMessage,\n  setView,\n  handleClose\n}) {\n  // --- Sección hooks de estados ---\n\n  // manejo de multi-idioma en los labels\n  const { t } = useTranslation();\n\n  // datos de los usuarios que se les envió el código\n  const [history, setHistory] = useState([]);\n\n  // datos del nuevo usuario al que se le enviará\n  const [formData, setFormData] = useState(initialFormData);\n\n  // manejo de notificación de envió de cara al usuario\n  const [openSnackbar, setOpenSnackbar] = useState(false);\n  // errores de validación\n  const [errors, setErrors] = useState({});\n\n  // query para obtener los envíos de correo de este código\n  const { data, loading, refetch } = useQuery(GET_SENT_PIN_CODE_REPORT, {\n    variables: { pin: dataCode.pin },\n    fetchPolicy: \"network-only\"\n  });\n\n  // mutación para enviar el código por correo\n  const [sendEmail] = useMutation(SEND_PIN_CODE_BY_EMAIL);\n\n  useEffect(() => {\n    if (data) {\n      const sentPinHistory = adapterEmailingsByUser(data.getSentPinCodeReport);\n      setHistory(sentPinHistory);\n    }\n  }, [data]);\n\n  // --- Sección de manejadores de eventos ---\n\n  /**\n   * Handles input change events for form fields.\n   * Updates the form data state with the new value and clears any existing errors for the changed field.\n   */\n  // Maneja los cambios en los campos del formulario\n  const handleInputChange = (event) => {\n    const { name, value } = event.target;\n    setFormData((prev) => ({ ...prev, [name]: value }));\n    setErrors((prev) => ({ ...prev, [name]: EMPTY_STRING }));\n  };\n\n  /**\n   * Handles the keydown event for an input field.\n   *\n   * This function checks if the pressed key is allowed by validating the key code.\n   * If the key is not allowed, the default action is prevented.\n   */\n  // Manejamos la entrada para admitir solo digitos (Número de identidad)\n  const handleInputKeyDown = (event) => {\n    const keyCode = event.which || event.keyCode; // Usamos event.which para compatibilidad con navegadores antiguos\n    // solo se permiten digitos y la tecla backspace para borrar\n    if (keyCode !== 8 && (keyCode < 48 || keyCode > 57)) event.preventDefault(); // se previene que se registre la tecla si no está permitida\n  };\n\n  /**\n   * Handles input focus events for form fields.\n   * Updates the form data state with the new value and clears any existing errors for the changed field.\n   */\n  // Limpiamos los espacios sobrantes al salir de la caja de texto\n  const handleInputBlur = (event) => {\n    const value = event.target.value.trim();\n    if (value !== event.target.value)\n      setFormData((prev) => ({ ...prev, [event.target.name]: value }));\n  };\n\n  // --- Sección de validaciones ---\n\n  // valida que se especifique nombre y apellido valido\n  const getFullNameValidationMessage = () => {\n    const fullname = formData.name;\n    const errorMessage = fullname\n      ? fullname.length < 8\n        ? t(`${TRANSLATION_SHORTCUT}.ERRORS.SHORT_NAME`)\n        : FULLNAME_REGEX.test(fullname)\n        ? EMPTY_STRING\n        : t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NAME`)\n      : t(`${TRANSLATION_SHORTCUT}.ERRORS.MANDATORY_FIELD`);\n    return errorMessage;\n  };\n\n  // valida que se especifique el correo electronico\n  const getEmailValidationMessage = () => {\n    const emailAddress = formData.email;\n    const errorMessage = emailAddress\n      ? EMAIL_REGEX.test(emailAddress)\n        ? EMPTY_STRING\n        : t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_EMAIL`)\n      : t(`${TRANSLATION_SHORTCUT}.ERRORS.MANDATORY_FIELD`);\n    return errorMessage;\n  };\n\n  // valida la longitud del número de identificación nacional\n  const getIdNumberValidationMessage = () => {\n    const nationalIdentificationNumber = formData.idNumber;\n    const errorMessage = nationalIdentificationNumber\n      ? nationalIdentificationNumber.length < 6\n        ? t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NIN`)\n        : EMPTY_STRING\n      : t(`${TRANSLATION_SHORTCUT}.ERRORS.MANDATORY_FIELD`);\n    return errorMessage;\n  };\n\n  /**\n   * Validates the form data and sets errors if any validation fails.\n   * @returns {boolean} Returns true if the form is valid, otherwise false.\n   *\n   * @description\n   * This function validates the form data by checking the following:\n   * - name: Must be non-empty, at least 8 characters long, and match the FULLNAME_REGEX pattern.\n   * - Email: Must be non-empty and match the EMAIL_REGEX pattern.\n   * - idNumber: Must be non-empty, at least 6 digits long.\n   *\n   * If any validation fails, the corresponding error message is set in the `newErrors` object.\n   * The errors state is updated with the newErrors object.\n   */\n  const validateForm = () => {\n    const newErrors = {};\n\n    const nameValidationMessage = getFullNameValidationMessage();\n    const emailValidationMessage = getEmailValidationMessage();\n    const idNumberValidationMessage = getIdNumberValidationMessage();\n\n    if (nameValidationMessage) newErrors.name = nameValidationMessage;\n    if (emailValidationMessage) newErrors.email = emailValidationMessage;\n    if (idNumberValidationMessage)\n      newErrors.idNumber = idNumberValidationMessage;\n\n    setErrors(newErrors);\n\n    return !Object.keys(newErrors).length;\n  };\n\n  // Maneja el envío del formulario\n  const handleSubmit = async () => {\n    if (validateForm()) {\n      // AQUI SE DEBE EJECUTAR LA MUTACIÓN QUE ENVIA/REENVIA EL CÓDIGO AL USUARIO\n      const isSuccessful = await prepareAndSendEmail(dataCode.pin, formData);\n      if (isSuccessful) {\n        setOpenSnackbar(true);\n        refetch();\n      }\n      // console.log( \"Enviando correo al usuario:\", formData, \"con el código de cerradura:\", dataCode.pin);\n    }\n  };\n\n  const prepareAndSendEmail = async (pin, person) => {\n    // console.log({ variables: { pin, user: person } });\n    try {\n      const SECRET_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY ?? \"\";\n      const ENCRYPTED_PIN = await encryptData(pin, SECRET_KEY);\n      const ENCRYPTED_NUIP = await encryptData(person.idNumber, SECRET_KEY);\n      const RECIPIENT_DATA_PREPARED = {\n        variables: {\n          pin: ENCRYPTED_PIN,\n          user: {\n            name: person.name,\n            email: person.email,\n            idNumber: ENCRYPTED_NUIP,\n            offset: new Date().getTimezoneOffset(), // Desfase horario respecto a UTC (en minutos)\n            locale: // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n              typeof Intl === \"undefined\"\n                ? navigator.languages && navigator.languages.length\n                  ? navigator.languages[0]\n                  : navigator.language\n                : Intl.DateTimeFormat().resolvedOptions().locale\n          }\n        }\n      };\n      setOpenSnackbar(true);\n      // AQUI SE DEBE EJECUTAR LA MUTACIÓN QUE ENVIA/REENVIA EL CORREO CON EL CÓDIGO\n      const emailResponse = await sendEmail(RECIPIENT_DATA_PREPARED);\n      // console.log(emailResponse.data.resendPinCodeByEmail ? \"Envío exitoso\" : \"Envío fallido\");\n    } catch (error) {\n      /*\n      console.log(\"****************************\");\n      console.log(\"****************************\");\n      console.log(error);\n      */\n     console.log(\"Ha ocurrido un error al reenviar el código\");\n    }\n  };\n\n  const handleClickResend = async (selectedUser) => {\n    setOpenSnackbar(true);\n    // AQUI SE DEBE EJECUTAR LA MUTACIÓN QUE ENVIA/REENVIA EL CÓDIGO AL USUARIO\n    const isSuccessful = await prepareAndSendEmail(dataCode.pin, selectedUser);\n    if (isSuccessful) {\n      setOpenSnackbar(true);\n      refetch();\n    }\n  };\n\n  const handleCloseAlert = (event, reason) => {\n    if (reason === \"clickaway\") return;\n    setOpenSnackbar(false);\n  };\n\n  return loading ? (\n    <Box sx={{ mt: -35 }}>\n      <Loading />\n    </Box>\n  ) : (\n    <Paper elevation={3} sx={{ padding: 4, maxWidth: 600 }}>\n      {/* Muestra el código a enviar */}\n      <Typography fontWeight={900} variant=\"h6\">\n        {t(`${TRANSLATION_SHORTCUT}.LABELS.CODE`)}: {dataCode.pin}\n      </Typography>\n      {/* Sección del formulario para enviar un nuevo código */}\n      <Typography variant=\"h6\" marginTop=\"1rem\" gutterBottom>\n        {t(`${TRANSLATION_SHORTCUT}.LABELS.SEND_TO`)}\n      </Typography>\n      <Grid container spacing={2}>\n        <Grid item xs={12}>\n          <TextField\n            size=\"small\"\n            label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_FULLNAME`)}\n            name=\"name\"\n            value={formData.name}\n            onChange={handleInputChange}\n            onBlur={handleInputBlur}\n            error={Boolean(errors.name)}\n            helperText={errors.name}\n            fullWidth\n          />\n        </Grid>\n        <Grid item xs={8}>\n          <TextField\n            size=\"small\"\n            label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}\n            name=\"email\"\n            value={formData.email}\n            onChange={handleInputChange}\n            onBlur={handleInputBlur}\n            error={Boolean(errors.email)}\n            helperText={errors.email}\n            fullWidth\n          />\n        </Grid>\n        <Grid item xs={4}>\n          <TextField\n            size=\"small\"\n            label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}\n            name=\"idNumber\"\n            value={formData.idNumber}\n            onChange={handleInputChange}\n            onBlur={handleInputBlur}\n            onKeyPress={handleInputKeyDown}\n            error={Boolean(errors.idNumber)}\n            helperText={errors.idNumber}\n            fullWidth\n          />\n        </Grid>\n      </Grid>\n      <Stack direction=\"row\" spacing={2} justifyContent=\"flex-end\" mt={3}>\n        <Button onClick={handleClose} color=\"primary\" variant=\"outlined\">\n          {t(`${TRANSLATION_SHORTCUT}.BUTTONS.CANCEL`)}\n        </Button>\n        <Button onClick={handleSubmit} color=\"primary\" variant=\"contained\">\n          {t(`${TRANSLATION_SHORTCUT}.BUTTONS.SEND_CODE`)}\n        </Button>\n      </Stack>\n      <Divider sx={{ mt: 3, borderStyle: \"dashed\" }} />\n      {/* Sección del historial de envíos */}\n      <Typography variant=\"h6\" mt={2} mb={3}>\n        {t(`${TRANSLATION_SHORTCUT}.LABELS.HISTORY_TITLE`)}\n      </Typography>\n      <Grid\n        container\n        spacing={history.length && 2}\n        maxHeight={200}\n        overflow=\"auto\"\n      >\n        {history.length ? (\n          history.map((user) => (\n            <Grid item xs={12} key={user.id}>\n              <Paper\n                variant=\"elevation\"\n                sx={{\n                  display: \"flex\",\n                  flexDirection: \"column\",\n                  padding: 2,\n                  gap: 1\n                }}\n              >\n                <Typography variant=\"h6\" fontWeight={600}>\n                  {user.name}\n                  <Tooltip\n                    title={t(`${TRANSLATION_SHORTCUT}.TOOLTIPS.RESEND_EMAIL`)}\n                  >\n                    <IconButton\n                      onClick={() =>\n                        handleClickResend({\n                          name: user.name,\n                          email: user.email,\n                          idNumber: user.idNumber\n                        })\n                      }\n                    >\n                      <ReplyIcon />\n                    </IconButton>\n                  </Tooltip>\n                  <Snackbar\n                    open={openSnackbar}\n                    autoHideDuration={5000}\n                    onClose={handleCloseAlert}\n                    message={t(`${TRANSLATION_SHORTCUT}.BUTTONS.RESEND_CODE`)}\n                  />\n                </Typography>\n                <Typography variant=\"body2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}: {user.email}\n                </Typography>\n                <Typography variant=\"body2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}: {user.idNumber}\n                </Typography>\n                <Typography variant=\"subtitle2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.SENT_COUNT`)}: {user.sentHistory.length}\n                </Typography>\n                <Typography variant=\"subtitle2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.VIEW_SENT_DATES`)}:\n                </Typography>\n                <List dense>\n                  {user.sentHistory.map((report, index) => (\n                    <ListItem key={`user${index}date${index}`}>\n                      <ListItemIcon>\n                        <CalendarMonthIcon />\n                      </ListItemIcon>\n                      <ListItemText primary={report.date} />\n                    </ListItem>\n                  ))}\n                </List>\n              </Paper>\n            </Grid>\n          ))\n        ) : (\n          <Alert\n            color=\"warning\"\n            variant=\"standard\"\n            severity=\"warning\"\n            sx={{ width: \"100%\" }}\n          >\n            {t(`${TRANSLATION_SHORTCUT}.LABELS.NO_DATA`)}\n          </Alert>\n        )}\n      </Grid>\n    </Paper>\n  );\n}\n","import { useState, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useQuery } from \"@apollo/client\";\nimport { GET_SENT_PIN_CODE_REPORT } from \"../../../../controllers/pinCodesController\";\n\nimport Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Grid\";\nimport Alert from \"@mui/material/Alert\";\nimport Typography from \"@mui/material/Typography\";\nimport Paper from \"@mui/material/Paper\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\n\nimport CalendarMonthIcon from \"@mui/icons-material/CalendarMonth\";\nimport Loading from \"../../../loading/Loading\";\n\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_SEND_CODE_TO_PERSON_MODAL\";\n\nconst adapterEmailingsByUser = (sentEmails = []) =>\n  // Convertimos el objeto en un array\n  Object.values(\n    // Transformamos la data para agrupar por usuario\n    sentEmails.reduce((acc, item) => {\n      const { user, code, date } = item;\n      if (!user || !user.idNumber) return acc;\n      if (!acc[user.idNumber])\n        acc[user.idNumber] = {\n          id: user.idNumber,\n          name: user.name,\n          email: user.email,\n          idNumber: user.idNumber,\n          sentHistory: [] // Lista de fechas y códigos enviados\n        };\n      acc[user.idNumber].sentHistory.push({\n        code,\n        date: new Date(date).toLocaleString() // Convertimos el timestamp a fecha legible\n      });\n      return acc;\n    }, {})\n  );\n\nexport default function HistoryOfSentPasswords({\n  dataCode,\n  setTypeMessage,\n  setView,\n  setDataCode\n}) {\n  // manejo de multi-idioma en los labels\n  const { t } = useTranslation();\n  // datos de los usuarios que se les envió el código\n  const [history, setHistory] = useState([]);\n  // query para obtener los envíos de correo de este código\n  const { data, loading, refetch } = useQuery(GET_SENT_PIN_CODE_REPORT, {\n    variables: { pin: dataCode.pin },\n    fetchPolicy: \"network-only\"\n  });\n\n  useEffect(() => {\n    if (data) {\n      const sentPinHistory = adapterEmailingsByUser(data.getSentPinCodeReport);\n      setHistory(sentPinHistory);\n    }\n  }, [data]);\n\n  return loading ? (\n    <Box sx={{ mt: -35 }}>\n      <Loading />\n    </Box>\n  ) : (\n    <Paper elevation={3} sx={{ padding: 4, maxWidth: 600, width: \"100%\" }}>\n      {/* Muestra el código a enviar */}\n      <Typography fontWeight={900} variant=\"h6\">\n        {t(`${TRANSLATION_SHORTCUT}.LABELS.CODE`)}: {dataCode.pin}\n      </Typography>\n      {/* Sección del historial de envíos */}\n      <Typography variant=\"h6\" mt={2} mb={3}>\n        {t(`${TRANSLATION_SHORTCUT}.LABELS.HISTORY_TITLE`)}\n      </Typography>\n      <Grid\n        container\n        spacing={history.length && 2}\n        maxHeight={200}\n        overflow=\"auto\"\n      >\n        {history.length ? (\n          history.map((user) => (\n            <Grid item xs={12} key={user.id}>\n              <Paper\n                variant=\"elevation\"\n                sx={{\n                  display: \"flex\",\n                  flexDirection: \"column\",\n                  padding: 2,\n                  gap: 1\n                }}\n              >\n                <Typography variant=\"h6\" fontWeight={600}>\n                  {user.name}\n                </Typography>\n                <Typography variant=\"body2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}: {user.email}\n                </Typography>\n                <Typography variant=\"body2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}: {user.idNumber}\n                </Typography>\n                <Typography variant=\"subtitle2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.SENT_COUNT`)}: {user.sentHistory.length}\n                </Typography>\n                <Typography variant=\"subtitle2\">\n                  {t(`${TRANSLATION_SHORTCUT}.LABELS.VIEW_SENT_DATES`)}:\n                </Typography>\n                <List dense>\n                  {user.sentHistory.map((report, index) => (\n                    <ListItem key={`user${index}date${index}`}>\n                      <ListItemIcon>\n                        <CalendarMonthIcon />\n                      </ListItemIcon>\n                      <ListItemText primary={report.date} />\n                    </ListItem>\n                  ))}\n                </List>\n              </Paper>\n            </Grid>\n          ))\n        ) : (\n          <Alert\n            color=\"warning\"\n            variant=\"standard\"\n            severity=\"warning\"\n            sx={{ width: \"100%\" }}\n          >\n            {t(`${TRANSLATION_SHORTCUT}.LABELS.NO_DATA`)}\n          </Alert>\n        )}\n      </Grid>\n    </Paper>\n  );\n}\n","import { useState } from \"react\";\n\nimport Box from \"@mui/material/Box\";\nimport Divider from \"@mui/material/Divider\";\n\nimport green from \"@mui/material/colors/green\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\n\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\n\nimport AddCode from \"../devices/DoorLock/AddCode\";\nimport Restriction from \"../devices/DoorLock/Restriction\";\n\nimport LoadingDoorLock from \"../loading/LoadingDoorLock\";\n\nimport SendCodeToPerson from \"../devices/DoorLock/modalContents/SendCodeToPerson\";\nimport HistoryOfSentPasswords from \"../devices/DoorLock/modalContents/HistoryOfSentPasswords\";\n\nconst theme = createTheme({\n  palette: {\n    primary: {\n      main: green[700]\n    }\n  },\n  components: {\n    MuiToggleButton: {\n      styleOverrides: {\n        root: {\n          \"&\": {\n            textTransform: \"none\"\n          },\n          \"&.Mui-selected\": {\n            backgroundColor: \"rgba(56, 142, 60, 0.3)\",\n            color: green[700],\n            \"&:hover\": {\n              backgroundColor: \"rgba(56, 142, 60, 0.35)\"\n            }\n          },\n          \"&:hover\": {\n            backgroundColor: green[100]\n          }\n        }\n      }\n    }\n  }\n});\n\nconst msgStatus = [\n  \"Iniciando configuración...\",\n  \"Intercambiando credenciales...\",\n  \"Encriptando código de seguridad...\",\n  \"Finalizando proceso...\"\n];\n\nfunction Loading() {\n  const [stateLoading, setStateLoading] = useState(0);\n\n  setTimeout(() => {\n    stateLoading == 3 ? setStateLoading(0) : setStateLoading(stateLoading + 1);\n  }, 15000);\n\n  clearTimeout();\n\n  return (\n    <Box\n      sx={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        width: \"100%\",\n        height: \"100%\",\n        position: \"absolute\",\n        backgroundColor: \"#FFFFFF\",\n        zIndex: 100\n      }}\n    >\n      <div className=\"__container_doorLock__\">\n        <div className=\"__loading_text_container_doorlock__\">\n          <LoadingDoorLock />\n        </div>\n        <div className=\"__loading_text_container_doorlock__\">\n          <span className=\"descrptcion_doorlock_loading\">\n            {msgStatus[stateLoading]}\n          </span>\n        </div>\n      </div>\n    </Box>\n  );\n}\n\nfunction SuccessMessage() {\n  return (\n    <Box\n      sx={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        width: \"100%\",\n        height: \"100%\",\n        position: \"absolute\",\n        backgroundColor: \"#d0e9d6\",\n        zIndex: 100\n      }}\n    >\n      <CheckCircleIcon fontSize=\"large\" color=\"success\" />\n      <span className=\"__message_doorLock__\">\n        Información registrada correctamente.\n      </span>\n    </Box>\n  );\n}\n\nfunction ErrorMessage() {\n  return (\n    <Box\n      sx={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        width: \"100%\",\n        height: \"100%\",\n        position: \"absolute\",\n        backgroundColor: \"#e9d0d0\",\n        zIndex: 100\n      }}\n    >\n      <CancelIcon fontSize=\"large\" color=\"error\" />\n      <span className=\"__message_doorLock__\">\n        Ocurrió un error al procesar información.\n      </span>\n    </Box>\n  );\n}\n\nexport default function ModalDoorLock({\n  open,\n  handleClose,\n  title,\n  view,\n  setView,\n  dataCode,\n  setDataCode,\n  refetchListCode\n}) {\n  const [typeMessage, setTypeMessage] = useState(null);\n\n  const handleCloseModal = () => {\n    handleClose();\n    setView(\"add\");\n    setTypeMessage(null);\n    refetchListCode();\n  };\n\n  const selectMessage = () => {\n    switch (typeMessage) {\n      case \"loading\":\n        return <Loading />;\n      case \"success\":\n        return <SuccessMessage />;\n      case \"error\":\n        return <ErrorMessage />;\n\n      default:\n        break;\n    }\n  };\n\n  // El objetivo de este metodo es ajustar el contenido de la ventana modal\n  // con su correspondido componente, se declara un almacen de todas las vistas\n  // de contenido disponibles para usarse según la necesidad (getOrDefaultModalContent)\n  /**\n   * Renders the modal content based on the provided view name.\n   *\n   * @param {string} [viewName=\"restriction\"] - The name of the view to render.\n   *                                            Possible values are \"add\", \"restriction\", \"history\", and \"send\".\n   *                                            Defaults to \"restriction\" if not provided.\n   * @returns {JSX.Element} The corresponding React component for the specified view.\n   */\n  const renderModalContent = (viewName = \"restriction\") => {\n    const modalContentStorage = {\n      add: () => (\n        <AddCode\n          setTypeMessage={setTypeMessage}\n          setView={setView}\n          setDataCode={setDataCode}\n        />\n      ),\n      restriction: () => (\n        <Restriction\n          dataCode={dataCode}\n          setTypeMessage={setTypeMessage}\n          refetchListCode={refetchListCode}\n        />\n      ),\n      history: () => (\n        <HistoryOfSentPasswords\n          dataCode={dataCode}\n          setTypeMessage={setTypeMessage}\n          setView={setView}\n          setDataCode={setDataCode}\n        />\n      ),\n      send: () => (\n        <SendCodeToPerson\n          dataCode={dataCode}\n          setDataCode={setDataCode}\n          setTypeMessage={setTypeMessage}\n          setView={setView}\n          handleClose={handleCloseModal}\n        />\n      )\n    };\n    return modalContentStorage[viewName]\n      ? modalContentStorage[viewName]()\n      : modalContentStorage.restriction();\n  };\n\n  return (\n    <ThemeProvider theme={theme}>\n      <Dialog open={open} onClose={handleCloseModal} fullWidth>\n        <DialogTitle id=\"alert-dialog-title\" className=\"header_modal\">\n          <span>{title}</span>\n          <span className=\"_close_modal_doorlock\" onClick={handleCloseModal}>\n            <i className=\"fas fa-times\"></i>\n          </span>{\" \"}\n        </DialogTitle>\n        <Divider />\n        <DialogContent sx={{ position: \"relative\", p: 0 }}>\n          {typeMessage && selectMessage()}\n          <Box\n            sx={{\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\"\n            }}\n          >\n            {renderModalContent(view)}\n            {/* {view === \"add\" ? <AddCode setTypeMessage={setTypeMessage} setView={setView} setDataCode={setDataCode} />) : (<Restriction dataCode={dataCode} setTypeMessage={setTypeMessage} refetchListCode={refetchListCode} />)} */}\n          </Box>\n        </DialogContent>\n      </Dialog>\n    </ThemeProvider>\n  );\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const DescriptionContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n  font-family: #1c1c1c;\n  /* @media (max-width: 768px) {\n    grid-template-rows: 10% 30% 55% 5%;\n  } */\n`;\n\nexport const DescriptiontTitle = styled.div`\n  display: flex;\n  font-weight: 500;\n  font-size: 25px;\n  @media (max-width: 425px) {\n    font-size: 20px;\n  }\n`;\n\nexport const DescriptionText = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-self: flex-start;\n  align-self: center;\n  font-size: 16px;\n  height: 30%;\n\n  .bold_text {\n    font-size: 20px;\n  }\n\n  .question {\n    display: flex;\n    justify-content: center;\n    width: 100%;\n    font-weight: 500;\n    font-size: 20px;\n    margin-top: 30px;\n  }\n\n  @media (max-width: 425px) {\n    font-size: 14px;\n    justify-content: flex-start;\n  }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const PaginationContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: flex-end;\n  font-size: 18px;\n  width: 100%;\n  height: 85%;\n`;\n\nexport const Prev = styled.div`\n  display: flex;\n  justify-content: flex-start;\n  width: 50%;\n\n  a {\n    display: flex;\n    flex-direction: row-reverse;\n    text-decoration: none;\n    color: #1c1c1c;\n\n    &:hover {\n      color: #a9aaa9;\n    }\n  }\n`;\n\nexport const Next = styled.div`\n  display: flex;\n  justify-content: flex-end;\n  width: 50%;\n  a {\n    display: flex;\n    text-decoration: none;\n    color: #1c1c1c;\n\n    &:hover {\n      color: #a9aaa9;\n    }\n  }\n`;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { PaginationContainer, Prev, Next } from \"../styles/Pagination.style\";\nimport NavigateNextRoundedIcon from \"@mui/icons-material/NavigateNextRounded\";\nimport NavigateBeforeRoundedIcon from \"@mui/icons-material/NavigateBeforeRounded\";\nimport Button from \"@mui/material/Button\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { useMutation, useQuery, useLazyQuery } from \"@apollo/client\";\nimport {\n  UPDATE_NEW_MACROMETER,\n  GET_NEW_INSTALLED_METTERS,\n} from \"../../../controllers/measurersController\";\nimport { useHistory } from \"react-router-dom\";\n\nconst customGreen = \"#acf6ac\";\nconst customRed = \"#F2B0B0\";\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n    warning: {\n      main: customRed,\n    },\n  },\n});\n\nconst Pagination = ({\n  next,\n  prev,\n  labelPreviousButton,\n  labelNextButton,\n  previousButtonColor,\n  nextButtonColor,\n  enabled,\n}) => {\n  const history = useHistory();\n  const [updateMacroMeter] = useMutation(UPDATE_NEW_MACROMETER);\n  const [getData, { data, loading }] = useLazyQuery(GET_NEW_INSTALLED_METTERS, {\n    fetchPolicy: \"network-only\",\n  });\n\n  const meterVariables = localStorage.getItem(\"editedMeterVariables\")\n    ? JSON.parse(localStorage.getItem(\"editedMeterVariables\"))\n    : localStorage.getItem(\"editedMeterVariables\");\n\n  const ShowMetersIcons = async () => {\n    try {\n      await getData({\n        variables: {\n          projectId: parseInt(localStorage.getItem(\"id\")),\n        },\n      });\n    } catch (err) {}\n\n    if (labelNextButton === \"Finalizar\") {\n      try {\n        updateMacroMeter({\n          variables: {\n            meters: meterVariables,\n          },\n        }).catch((err) => {});\n      } catch (err) {}\n      hideMetersIcons();\n    }\n  };\n\n  const hideMetersIcons = () => {\n    if (labelPreviousButton === \"Salir\" || labelNextButton === \"Finalizar\") {\n      localStorage.setItem(\"existNewMeters\", \"0\");\n      if (localStorage.getItem(\"existNewMeters\") === \"0\") {\n        localStorage.setItem(\"showMeters\", false);\n      }\n      localStorage.setItem(\"meterVariables\", \"\");\n      localStorage.setItem(\"editedMeterVariables\", \"\");\n    }\n  };\n\n  const handleMeter = () => {\n    const existsMeter = data?.getNewMeters?.meters.length;\n    if (!data) return null;\n    if (existsMeter > 0) {\n      localStorage.setItem(\"showMeters\", true);\n      localStorage.setItem(\"existNewMeters\", existsMeter);\n      localStorage.setItem(\n        \"meterVariables\",\n        JSON.stringify(data?.getNewMeters?.meters)\n      );\n      history.push(next);\n    } else {\n      localStorage.setItem(\"showMeters\", false);\n      history.push(\n        \"/app/stepperviewmacrometer/description/errormacrometerinstallation\"\n      );\n    }\n  };\n\n  return (\n    <PaginationContainer data-testid=\"pagination\">\n      {loading ? \"\" : handleMeter()}\n      {prev ? (\n        <Prev>\n          <Link to={prev}>\n            <ThemeProvider theme={theme}>\n              <Button\n                onClick={hideMetersIcons}\n                variant=\"contained\"\n                startIcon={\n                  <NavigateBeforeRoundedIcon\n                    sx={{\n                      height: \"27px\",\n                      width: \"27px\",\n                      marginRight: \"0px\",\n                      marginLeft: \"0px\",\n                    }}\n                  />\n                }\n                color={previousButtonColor}\n                sx={{\n                  color: \"black\",\n                  borderRadius: \"8px\",\n                }}\n              >\n                {labelPreviousButton}\n              </Button>\n            </ThemeProvider>\n          </Link>\n        </Prev>\n      ) : (\n        <Prev></Prev>\n      )}\n\n      {next ? (\n        <Next>\n          <ThemeProvider theme={theme}>\n            <Button\n              disabled={enabled}\n              onClick={ShowMetersIcons}\n              variant=\"contained\"\n              endIcon={\n                <NavigateNextRoundedIcon\n                  sx={{\n                    height: \"27px\",\n                    width: \"27px\",\n                    marginRight: \"0px\",\n                    marginLeft: \"0px\",\n                  }}\n                />\n              }\n              color={nextButtonColor}\n              sx={{\n                color: \"black\",\n                borderRadius: \"8px\",\n              }}\n            >\n              {labelNextButton}\n            </Button>\n          </ThemeProvider>\n        </Next>\n      ) : (\n        <Next></Next>\n      )}\n    </PaginationContainer>\n  );\n};\nexport default Pagination;\n","import React, { useContext, useEffect } from \"react\";\nimport {\n  DescriptionContainer,\n  DescriptiontTitle,\n  DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst Description = ({ info }) => {\n  const { projectIdStepper } = useContext(AuthContext);\n  return (\n    <>\n      <DescriptionContainer>\n        <DescriptiontTitle>Instrucciones</DescriptiontTitle>\n        <DescriptionText>\n          <div className=\"text_1\">{info.description}</div>\n          <div className=\"text_2\">\n            <b className=\"bold_text\">\n              El código del proyecto seleccionado es{\" \"}\n              {localStorage.getItem(\"id\")}\n            </b>\n            , usted deberá ingresar este código en el comunicador, solo el valor\n            numérico, sin comillas.\n          </div>\n        </DescriptionText>\n        <DescriptionText>\n          <span className=\"question\">\n            ¿Ya ingresaste el codigo en el comunicador?\n          </span>\n          <div className=\"text_3\">\n            De ser asi, por favor finalice la instalación haciendo click en el\n            boton finalizar.\n          </div>\n        </DescriptionText>\n        <Pagination\n          previousButtonColor={\"warning\"}\n          labelPreviousButton={\"Salir\"}\n          nextButtonColor={\"success\"}\n          labelNextButton={\"Siguiente\"}\n          prev={info.prev}\n          next={info.next}\n        />\n      </DescriptionContainer>\n    </>\n  );\n};\n\nexport default Description;\n","import React from \"react\";\nimport {\n  DescriptionContainer,\n  DescriptiontTitle,\n  DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\n\nconst ErrorMacrometerInstallation = ({ info }) => {\n  return (\n    <DescriptionContainer>\n      <DescriptiontTitle>No se encontraron medidores.</DescriptiontTitle>\n      <DescriptionText>{info.description}</DescriptionText>\n      <Pagination\n        previousButtonColor={\"success\"}\n        labelPreviousButton={\"Finalizar\"}\n        prev={info.prev}\n        next={info.next}\n      />\n    </DescriptionContainer>\n  );\n};\n\nexport default ErrorMacrometerInstallation;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const MainContainerMacrometerVariables = styled.div`\n  display: grid;\n  grid-template-rows: 15% 15% 50% 25%;\n  font-family: #1c1c1c;\n\n  @media (max-width: 768px) {\n    grid-template-rows: 10% 30% 55% 5%;\n  }\n`;\n\nexport const CancelInstallationButtonContainer = styled.div`\n  display: flex;\n  position: fixed;\n  justify-content: flex-end;\n  width: 45%;\n`;\n\nexport const MacrometerVariablesTitle = styled.div`\n  display: flex;\n  .variables_title {\n    font-weight: 500;\n    font-size: 25px;\n    width: 60%;\n    @media (max-width: 425px) {\n      font-size: 20px;\n    }\n  }\n`;\n\nexport const MacrometerVariablesSecondaryContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  overflow: auto;\n  width: 100%;\n\n  .text_description {\n    flex-direction: column;\n    justify-self: flex-start;\n    align-self: center;\n    font-size: 16px;\n  }\n\n  .first_input_group {\n    display: flex;\n    justify-content: space-evenly;\n    align-items: center;\n    height: 50%;\n    width: 100%;\n    margin-bottom: 15px;\n  }\n\n  .second_input_group {\n    display: flex;\n    justify-content: space-evenly;\n    align-items: center;\n    height: 50%;\n    width: 100%;\n  }\n`;\n","import React, { useContext } from \"react\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CancelOutlinedIcon from \"@mui/icons-material/CancelOutlined\";\nimport { CancelInstallationButtonContainer } from \"../styles/MacrometerVariables.style\";\nimport { Tooltip } from \"@mui/material\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst CancelInstallationButton = () => {\n  const { setOpenCancelInstallation } = useContext(AuthContext);\n  const handleAbortInstallation = () => {\n    setOpenCancelInstallation(true);\n  };\n\n  return (\n    <CancelInstallationButtonContainer>\n      <Tooltip title={\"Cancelar Instalación\"}>\n        <IconButton color=\"warning\" onClick={() => handleAbortInstallation()}>\n          <CancelOutlinedIcon />\n        </IconButton>\n      </Tooltip>\n    </CancelInstallationButtonContainer>\n  );\n};\n\nexport default CancelInstallationButton;\n","import React, { useContext } from \"react\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { useHistory } from \"react-router-dom\";\n\nconst customGreen = \"#acf6ac\";\nconst customRed = \"#f19393\";\n\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: customGreen,\n    },\n    error: {\n      main: customRed,\n    },\n  },\n});\n\nconst CancelInstallationModal = () => {\n  const history = useHistory();\n  const { openCancelInstallation, setOpenCancelInstallation } =\n    useContext(AuthContext);\n\n  const handleClose = () => {\n    setOpenCancelInstallation(false);\n  };\n\n  const handleCancelInstallation = () => {\n    history.push(\"/app/devicesmanagement\");\n    setOpenCancelInstallation(false);\n    localStorage.setItem(\"existNewMeters\", \"0\");\n    localStorage.setItem(\"id\", \"\");\n    localStorage.setItem(\"meterVariables\", \"\");\n    localStorage.setItem(\"editedMeterVariables\", \"\");\n    localStorage.setItem(\"showMeters\", false);\n  };\n\n  return (\n    <>\n      <Dialog\n        open={openCancelInstallation}\n        onClose={handleClose}\n        PaperProps={{\n          sx: {\n            borderRadius: \"8px\",\n            width: \"30%\",\n            height: \"30%\",\n          },\n        }}\n      >\n        <DialogTitle\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            fontFamily: \"Montserrat, sans-serif\",\n            backgroundColor: \"#2EB142\",\n            color: \"#FFFFFF\",\n            fontSize: \"20px\",\n            marginBottom: \"15px\",\n            lineHeight: \"2.6\",\n            padding: \"0px\",\n          }}\n        >\n          <span\n            style={{\n              display: \"flex\",\n              justifyContent: \"space-evenly\",\n              width: \"100%\",\n              fontFamily: \"Montserrat, sans-serif\",\n              fontSize: \"22px\",\n              fontWeight: \"bold\",\n            }}\n          >\n            Cancelación de Instalación\n          </span>\n        </DialogTitle>\n\n        <DialogContent\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              justifyContent: \"center\",\n              alignItems: \"center\",\n              gap: \"40px\",\n            }}\n          >\n            <span\n              style={{\n                display: \"flex\",\n                justifyContent: \"center\",\n                width: \"90%\",\n                fontFamily: \"Montserrat, sans-serif\",\n                fontSize: \"17px\",\n              }}\n            >\n              La instalación no se ha completado ¿Desea cancelar el proceso?\n            </span>\n            <div style={{ display: \"flex\", gap: \"40px\" }}>\n              <ThemeProvider theme={theme}>\n                <Button\n                  variant=\"contained\"\n                  color=\"error\"\n                  onClick={handleClose}\n                  sx={{\n                    color: \"#000\",\n                    borderRadius: \"8px\",\n                    border: \"solid #e76666 \",\n                    \"&:hover\": { backgroundColor: \"#ec7979\" },\n                  }}\n                >\n                  Cancelar\n                </Button>\n                <Button\n                  variant=\"contained\"\n                  color=\"success\"\n                  onClick={handleCancelInstallation}\n                  sx={{\n                    color: \"#000\",\n                    borderRadius: \"8px\",\n                    border: \"solid #89cf90\",\n                    \"&:hover\": { backgroundColor: \"#8ae38a\" },\n                  }}\n                >\n                  Aceptar\n                </Button>\n              </ThemeProvider>\n            </div>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n\nexport default CancelInstallationModal;\n","import React, { useState, useEffect } from \"react\";\nimport { createTheme, ThemeProvider, useTheme } from \"@mui/material/styles\";\nimport {\n  MainContainerMacrometerVariables,\n  MacrometerVariablesTitle,\n  MacrometerVariablesSecondaryContainer,\n} from \"../styles/MacrometerVariables.style\";\nimport Pagination from \"../components/Pagination\";\nimport TextField from \"@mui/material/TextField\";\nimport PropTypes from \"prop-types\";\nimport SwipeableViews from \"react-swipeable-views\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport CancelInstallationButton from \"../components/CancelInstallationButton\";\nimport CancelInstallationModal from \"../components/CancelInstallationModal\";\n\nconst secondaryGreen = \"#67A46D\";\nconst theme = createTheme({\n  palette: {\n    success: {\n      main: secondaryGreen,\n    },\n  },\n});\n\nconst CustomTabPanel = (props) => {\n  const { children, value, index, ...other } = props;\n\n  return (\n    <div\n      role=\"tabpanel\"\n      hidden={value !== index}\n      id={`simple-tabpanel-${index}`}\n      aria-labelledby={`simple-tab-${index}`}\n      {...other}\n    >\n      {value === index && (\n        <Box sx={{ p: 3 }}>\n          <Typography>{children}</Typography>\n        </Box>\n      )}\n    </div>\n  );\n};\n\nCustomTabPanel.propTypes = {\n  children: PropTypes.node,\n  index: PropTypes.number.isRequired,\n  value: PropTypes.number.isRequired,\n};\n\nconst a11yProps = (index) => {\n  return {\n    id: `simple-tab-${index}`,\n    \"aria-controls\": `simple-tabpanel-${index}`,\n  };\n};\n\nconst MacrometerVariables = ({ info }) => {\n  const allMetersVariables = JSON.parse(localStorage.getItem(\"meterVariables\"));\n  const existMeters = parseInt(localStorage.getItem(\"existNewMeters\"));\n  const theme = useTheme();\n  const [value, setValue] = React.useState(0);\n  const [variables, setVaribles] = useState(allMetersVariables);\n  const [validVariables, setValidVariables] = useState(false);\n  localStorage.setItem(\"editedMeterVariables\", JSON.stringify(variables));\n  const handleChange = (event, newValue) => {\n    setValue(newValue);\n  };\n  const handleChangeIndex = (index) => {\n    setValue(index);\n  };\n\n  const handlerMeterAlias = (event, index) => {\n    const value = event.target.value;\n    const regex = /^[a-zA-ZñÑáÁéÉíÍóÓúÚ.0-9\\s]*$/;\n    if (regex.test(value)) {\n      setVaribles((prevVariables) =>\n        prevVariables.map((item, idx) =>\n          idx === index ? { ...item, alias: value } : item\n        )\n      );\n    }\n  };\n\n  const handlerMeterTcRelation = (event, index) => {\n    const value = event.target.value;\n    const regex = /^[0-9/\\s]*$/;\n    if (regex.test(value)) {\n      const variablesOperation = value.split(\"/\");\n      const outcome = variablesOperation[0] / variablesOperation[1];\n      setVaribles((prevVariables) =>\n        prevVariables.map((item, idx) =>\n          idx === index\n            ? { ...item, relationTc: value, powerFactor: outcome }\n            : item\n        )\n      );\n    }\n  };\n\n  const handlerMeterMaxCurrent = (event, index) => {\n    const value = event.target.value;\n    const regex = /^[0-9/\\s]*$/;\n    if (regex.test(value)) {\n      setVaribles((prevVariables) =>\n        prevVariables?.map((item, idx) =>\n          idx === index ? { ...item, maximumCurrent: value } : item\n        )\n      );\n    }\n  };\n\n  useEffect(() => {\n    if (variables) {\n      localStorage.setItem(\"editedMeterVariables\", JSON.stringify(variables));\n      const inValidVariables = variables?.find(\n        (meter) =>\n          meter?.alias?.length < 3 ||\n          !meter?.relationTc?.includes(\"/\") ||\n          !Number?.isInteger(meter?.powerFactor) ||\n          !parseInt(meter?.maximumCurrent) ||\n          parseInt(meter?.maximumCurrent) < 100 ||\n          parseInt(meter?.maximumCurrent) > 5000\n      );\n      if (inValidVariables) {\n        setValidVariables(true);\n      } else {\n        setValidVariables(false);\n      }\n    }\n  }, [variables]);\n\n  return (\n    <MainContainerMacrometerVariables>\n      <MacrometerVariablesTitle>\n        <span className=\"variables_title\">\n          {\"Variables de/los medidor(es)\"}\n        </span>\n        <CancelInstallationButton />\n      </MacrometerVariablesTitle>\n      <MacrometerVariablesSecondaryContainer>\n        <div className=\"text_description\">{info?.description}</div>\n      </MacrometerVariablesSecondaryContainer>\n      <MacrometerVariablesSecondaryContainer>\n        <Box sx={{ width: \"100%\" }}>\n          <Box sx={{ borderBottom: 1, borderColor: \"divider\" }}>\n            <Tabs\n              value={value}\n              onChange={handleChange}\n              variant=\"scrollable\"\n              aria-label=\"basic tabs example\"\n            >\n              {allMetersVariables.map((meter, index) => (\n                <Tab\n                  label={\"Macromedidor \" + (index + 1)}\n                  {...a11yProps(index)}\n                />\n              ))}\n            </Tabs>\n          </Box>\n\n          <SwipeableViews\n            axis={theme.direction === \"rtl\" ? \"x-reverse\" : \"x\"}\n            index={value}\n            onChangeIndex={handleChangeIndex}\n          >\n            {allMetersVariables?.map((meter, index) => (\n              <CustomTabPanel value={value} index={index} dir={theme.direction}>\n                <div className=\"first_input_group\">\n                  <ThemeProvider theme={theme}>\n                    <TextField\n                      sx={{}}\n                      size=\"small\"\n                      variant=\"outlined\"\n                      label={\"Alias (nombre)\"}\n                      InputProps={{ sx: { borderRadius: 2 } }}\n                      color={\n                        variables[index]?.alias?.length >= 3\n                          ? \"success\"\n                          : \"error\"\n                      }\n                      disabled={existMeters > 0 ? false : true}\n                      value={variables[index]?.alias}\n                      onChange={(event) => handlerMeterAlias(event, index)}\n                    />\n                    <TextField\n                      sx={{}}\n                      size=\"small\"\n                      variant=\"outlined\"\n                      label=\"Relación TC\"\n                      InputProps={{ sx: { borderRadius: 2 } }}\n                      color={\n                        variables[index]?.relationTc?.includes(\"/\") &&\n                        Number.isInteger(variables[index]?.powerFactor)\n                          ? \"success\"\n                          : \"error\"\n                      }\n                      disabled={existMeters > 0 ? false : true}\n                      value={variables[index]?.relationTc}\n                      onChange={(event) => handlerMeterTcRelation(event, index)}\n                    />\n                  </ThemeProvider>\n                </div>\n                <div className=\"second_input_group\">\n                  <ThemeProvider theme={theme}>\n                    <TextField\n                      sx={{}}\n                      size=\"small\"\n                      focused\n                      variant=\"outlined\"\n                      label={\"Factor de potencia\"}\n                      InputProps={{ sx: { borderRadius: 2 }, readOnly: true }}\n                      color={\n                        Number.isInteger(variables[index]?.powerFactor)\n                          ? \"success\"\n                          : \"error\"\n                      }\n                      value={variables[index]?.powerFactor}\n                    />\n                    <TextField\n                      sx={{}}\n                      size=\"small\"\n                      variant=\"outlined\"\n                      label=\"Maxima Corriente\"\n                      InputProps={{ sx: { borderRadius: 2 } }}\n                      color={\n                        parseInt(variables[index]?.maximumCurrent) >= 100 &&\n                        parseInt(variables[index]?.maximumCurrent) <= 5000\n                          ? \"success\"\n                          : \"error\"\n                      }\n                      disabled={existMeters > 0 ? false : true}\n                      value={variables[index]?.maximumCurrent}\n                      onChange={(event) => handlerMeterMaxCurrent(event, index)}\n                    />\n                  </ThemeProvider>\n                </div>\n              </CustomTabPanel>\n            ))}\n          </SwipeableViews>\n        </Box>\n      </MacrometerVariablesSecondaryContainer>\n      <Pagination\n        labelPreviousButton={\"Atrás\"}\n        previousButtonColor={\"success\"}\n        nextButtonColor={\"success\"}\n        labelNextButton={\"Siguiente\"}\n        enabled={validVariables}\n        prev={info.prev}\n        next={info.next}\n      />\n      <CancelInstallationModal />\n    </MainContainerMacrometerVariables>\n  );\n};\n\nexport default MacrometerVariables;\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\n// components\nimport Role from '../../views/private/roleManager/roleManager';\nimport DevicesManagement from '../../views/private/devicesManagement/DevicesManagement';\nimport ProjectManagement from '../../views/private/projectsManagement/projectManagement';\nimport UsersManagements from '../../views/private/userManagement/usersManagements';\nimport Projects from '../../views/private/projects/Projects.jsx';\nimport Areas from '../../views/private/areas/Areas.jsx';\nimport Devices from '../../views/private/devices/Devices.jsx';\nimport NewDevices from '../../views/private/devices/NewDevices';\nimport Controllers from '../../views/private/controllers/Controllers.jsx';\nimport Measurers from '../../views/private/measurer/Measurers.jsx';\nimport { LOGIN } from '../../constants/paths';\nimport RoleManager from '../../views/private/roleManager/roleManager';\nimport StepperViewMacrometer from '../../views/private/stepperViewMacrometer/stepperViewMacrometer';\nimport ListCodes from '../../components/devices/DoorLock/ListCodes.jsx';\nimport Description from '../../components/stepperView/pages/Description';\nimport ErrorMacrometerInstallation from '../../components/stepperView/pages/ErrorMacrometerInstallation';\nimport MacrometerVariables from '../../components/stepperView/pages/MacrometerVariables';\nimport DataValidation from '../../components/stepperView/pages/DataValidation';\nimport Finalization from '../../components/stepperView/pages/Finalization';\n\n//Material Icons\nimport ElectricMeterIcon from '@mui/icons-material/ElectricMeter';\n\nexport const ROUTER = [\n  {\n    path: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization',\n    name: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization',\n    nameState: 'finalization',\n    component: Finalization,\n    layout: '/app',\n    code: 'final',\n    description: 'Se ha completado el formulario de manera exitosa, si desea terminar la instalación con los datos actualmente registrados, por favor hacer click en el botón de finalizar',\n    visible: false,\n    next: '/app/devicesmanagement',\n    step: 'Finalización',\n    prev: null,\n  },\n  {\n    path: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation',\n    name: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation',\n    nameState: 'datavalidation',\n    component: DataValidation,\n    layout: '/app',\n    code: 'validation',\n    description:\n      'Usted ya ha completado los pasos, por favor verifique los datos ingresados, puede hacerlo yendo hacia atrás, revisando el cuadro de resumen que se encuantra a su derecha, o en su defecto si se encuentra desde un dispositivo móvil pulsando el botón resumen que se encuantra en la parte superior derecha',\n    visible: false,\n    next: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization',\n    step: 'Validación de datos',\n    prev: '/app/stepperviewmacrometer/description/macrometervariables',\n  },\n  {\n    path: '/app/stepperviewmacrometer/description/macrometervariables',\n    name: '/app/stepperviewmacrometer/description/macrometervariables',\n    nameState: 'macrometervariables',\n    component: MacrometerVariables,\n    layout: '/app',\n    code: 'variables',\n    description: 'Estas son las variables con las que se configuró el medidor por defecto, si deseas cambiar alguna de las variables, usted debe modificar los valores.',\n    visible: false,\n    next: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation',\n    step: 'Modificación de variables',\n    prev: '/app/stepperviewmacrometer/description',\n    icon: ElectricMeterIcon,\n  },\n  {\n    path: '/app/stepperviewmacrometer/description/errormacrometerinstallation',\n    name: '/app/stepperviewmacrometer/description/errormacrometerinstallation',\n    nameState: 'intallationerror',\n    component: ErrorMacrometerInstallation,\n    layout: '/app',\n    code: 'error',\n    description: 'El proyecto no contiene medidores a instalar asociados, por favor restablezca de fabrica el comunicador e inicie nuevamente la configuración.',\n    visible: false,\n    next: null,\n    prev: '/app/devicesmanagement',\n  },\n  {\n    path: '/app/stepperviewmacrometer/description',\n    name: '/app/stepperviewmacrometer/description',\n    nameState: 'beginning',\n    component: Description,\n    layout: '/app',\n    code: '',\n    description: 'A continuación encontrarás un formulario el cual deberas llenar paso a paso para hacer la correcta instalación del dispositivo. También, podrás personalizar metricas de este.',\n    visible: false,\n    next: '/app/stepperviewmacrometer/description/macrometervariables',\n    step: 'ID del proyecto',\n    prev: '/app/devicesmanagement',\n  },\n  {\n    path: '/stepperviewmacrometer',\n    name: '/stepperviewmacrometer',\n    component: StepperViewMacrometer,\n    layout: '/app',\n  },\n  {\n    path: '/devicesmanagement',\n    name: '/devicesmanagement',\n    component: DevicesManagement,\n    layout: '/app',\n  },\n\n  {\n    path: '/rolemanager',\n    name: '/rolemanager',\n    component: RoleManager,\n    layout: '/app',\n  },\n  {\n    path: '/projectmanagement',\n    name: '/projectmanagement',\n    component: ProjectManagement,\n    layout: '/app',\n  },\n  {\n    path: '/usersmanagements',\n    name: '/usersmanagements',\n    component: UsersManagements,\n    layout: '/app',\n  },\n  {\n    path: '/projects',\n    name: 'projects',\n    component: Projects,\n    layout: '/app',\n  },\n  {\n    path: '/areas/:id',\n    name: 'areas',\n    component: Areas,\n    layout: '/app',\n  },\n  {\n    path: '/devices/:id',\n    name: 'devices',\n    component: Devices,\n    layout: '/app',\n  },\n  {\n    path: '/newdevices/:id',\n    name: 'newdevices',\n    component: NewDevices,\n    layout: '/app',\n  },\n  {\n    path: '/controllers/:id',\n    name: 'controllers',\n    component: Controllers,\n    layout: '/app',\n  },\n  {\n    path: '/measurers/:id',\n    name: 'measurers',\n    component: Measurers,\n    layout: '/app',\n  },\n  {\n    path: '/doorlock/:controllerId/:id',\n    name: 'device',\n    component: ListCodes,\n    layout: '/app',\n  },\n];\n\nconst Router_per_Components = () => {\n  return ROUTER.map((prop, key) => {\n    if (prop.layout === '/app') {\n      return (\n        <Route\n          path={prop.layout + prop.path}\n          component={\n            localStorage.getItem('token') ? (\n              prop.component\n            ) : (\n              <Redirect\n                from=\"/\"\n                to={LOGIN}\n              />\n            )\n          }\n          key={key}\n        />\n      );\n    } else {\n      return null;\n    }\n  });\n};\n\nexport default Router_per_Components;\n","import React from \"react\";\nimport {\n  DescriptionContainer,\n  DescriptiontTitle,\n  DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\nimport CancelInstallationButton from \"../components/CancelInstallationButton\";\nimport CancelInstallationModal from \"../components/CancelInstallationModal\";\n\nconst Finalization = ({ info }) => {\n  return (\n    <DescriptionContainer>\n      <DescriptiontTitle>\n        Finalizar\n        <CancelInstallationButton />\n      </DescriptiontTitle>\n      <DescriptionText>{info.description}</DescriptionText>\n      <Pagination\n        labelNextButton={\"Finalizar\"}\n        nextButtonColor={\"success\"}\n        next={info.next}\n      />\n      <CancelInstallationModal />\n    </DescriptionContainer>\n  );\n};\n\nexport default Finalization;\n","import React from \"react\";\nimport {\n  DescriptionContainer,\n  DescriptiontTitle,\n  DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\nimport CancelInstallationButton from \"../components/CancelInstallationButton\";\nimport CancelInstallationModal from \"../components/CancelInstallationModal\";\n\nconst DataValidation = ({ info }) => {\n  return (\n    <DescriptionContainer>\n      <DescriptiontTitle>\n        Validación de datos\n        <CancelInstallationButton />\n      </DescriptiontTitle>\n\n      <DescriptionText>{info.description}</DescriptionText>\n      <DescriptionText>\n        <span className=\"question\">¿Ya se verificaron los datos?</span>\n        <div className=\"text_2\">\n          De ser así, por favor finalice la instalación haciendo click en el\n          botón finalizar\n        </div>\n      </DescriptionText>\n      <Pagination\n        labelPreviousButton={\"Atrás\"}\n        previousButtonColor={\"success\"}\n        nextButtonColor={\"success\"}\n        labelNextButton={\"Siguiente\"}\n        prev={info.prev}\n        next={info.next}\n      />\n      <CancelInstallationModal />\n    </DescriptionContainer>\n  );\n};\n\nexport default DataValidation;\n","import * as React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Fragment } from \"react\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//querys & mutations\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ROLE_PERMISSIONS } from \"../../../controllers/rolesControllers\";\nimport { TableRoles } from \"../../../components/roleManager/TableRoles\";\n\nexport default function RoleManager() {\n  const [iddRole, setIddRole] = React.useState([]);\n  const [prueba, setPrueba] = React.useState(false);\n\n  const { roles, setRoles, permissionsRoleUser } =\n    React.useContext(AuthContext);\n  const { data, loading, error, refetch } = useQuery(GET_ROLE_PERMISSIONS, {\n    fetchPolicy: \"network-only\",\n  });\n\n  const handleSpred = () => {\n    setPrueba(!prueba);\n  };\n\n  React.useEffect(() => {\n    if (data) {\n      setRoles(data.getAllRoles);\n    }\n  }, [data]);\n\n  React.useEffect(() => {\n    setIddRole(roles.map((obj) => obj.id));\n  }, [roles]);\n\n  if (error) {\n    return (\n      <div>\n        <lottie-player\n          style={{\n            width: \"70%\",\n            marginLeft: \"30%\",\n            marginRight: \"auto\",\n          }}\n          className=\"_logo\"\n          src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n          background=\"transparent\"\n          speed=\"1\"\n          loop\n          autoplay\n        ></lottie-player>\n      </div>\n    );\n  }\n\n  if (loading || !roles) {\n    return (\n      <div\n        style={{\n          justifyContent: \"center\",\n          alignItems: \"center\",\n        }}\n      >\n        <Loading />\n      </div>\n    );\n  }\n\n  return (\n    <Fragment>\n      {permissionsRoleUser?.permissionsRole?.GesRol ? (\n        <TableRoles\n          data={data.getAllRoles}\n          roleIdd={iddRole}\n          refresh={refetch}\n        />\n      ) : null}\n    </Fragment>\n  );\n}\n","import { useState, useEffect, useContext } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nimport { useQuery } from \"@apollo/client\";\nimport { GET_PIN_CODES } from \"../../../controllers/pinCodesController\";\n\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nimport TableListCodes from \"./components/TableListCodes\";\nimport ModalDoorLock from \"../../modal/ModalDoorLock\";\n\nexport default function ListCodes() {\n  const { id } = useParams();\n  const { setCodesGlobal } = useContext(AuthContext);\n\n  const [codes, setCodes] = useState([]);\n  const [dataCode, setDataCode] = useState({});\n\n  const [open, setOpen] = useState(false);\n  const [view, setView] = useState(\"add\");\n\n  const { data, refetch } = useQuery(GET_PIN_CODES, {\n    variables: { DeviceId: parseInt(id) },\n    fetchPolicy: \"network-only\"\n  });\n\n  useEffect(() => {\n    if (data) {\n      const newData = [...data.getPinCodes];\n      setCodes(newData.sort((a, b) => a.index - b.index));\n      setCodesGlobal(newData);\n    }\n  }, [data]);\n\n  console.log(data);\n\n  const handleOpenModal = () => {\n    setOpen(true);\n  };\n  const handleCloseModal = () => {\n    setOpen(false);\n  };\n\n  const handleAddRestriction = (data) => {\n    setView(\"restriction\");\n    setOpen(true);\n    setDataCode(data);\n  };\n\n  const handleViewHistoryOfSentPasswords = (data) => {\n    setView(\"history\");\n    setOpen(true);\n    setDataCode(data);\n  };\n\n  const handleViewSendCodeToPerson = (data) => {\n    setView(\"send\");\n    setOpen(true);\n    setDataCode(data);\n  };\n\n  return (\n    <>\n      <TableListCodes\n        listCodes={codes}\n        handleOpenModal={handleOpenModal}\n        handleAddRestriction={handleAddRestriction}\n        handleViewHistoryOfSentPasswords={handleViewHistoryOfSentPasswords}\n        handleViewSendCodeToPerson={handleViewSendCodeToPerson}\n      />\n      {/* El modal siempre esta presente lo que cambia es la visibilidad del mismo */}\n      <ModalDoorLock\n        title=\"Crear código\"\n        open={open}\n        handleClose={handleCloseModal}\n        view={view}\n        setView={setView}\n        dataCode={dataCode}\n        setDataCode={setDataCode}\n        refetchListCode={refetch}\n      />\n    </>\n  );\n}\n","// Modal.js\nimport React, { useEffect, useState } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\n\nconst ModalNavbar = styled.div`\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 64px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  background-color: #2eb142;\n  border-radius: 8px 8px 0 0;\n  padding: 0 1rem;\n  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n    0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n`;\nconst TittleNavbar = styled.h3`\n  display: flex;\n  justify-content: center;\n  width: 100%;\n  margin-left: 44px;\n  font-family: \"Montserrat\", sans-serif;\n`;\n\nconst CloseButton = styled.button`\n  width: 10%;\n  background: none;\n  border: none;\n  cursor: pointer;\n  color: white;\n\n  @media (max-width: 500px) {\n    width: 15%;\n  }\n`;\n\nconst fadeIn = keyframes`\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n`;\n\nconst fadeOut = keyframes`\n  0% {\n    opacity: 1;\n  }\n  100% {\n    opacity: 0;\n  }\n`;\n\nconst scaleIn = keyframes`\n  0% {\n    transform: scale(0.9);\n    opacity: 0;\n  }\n  100% {\n    transform: scale(1);\n    opacity: 1;\n  }\n`;\n\nconst scaleOut = keyframes`\n  0% {\n    transform: scale(1);\n    opacity: 1;\n  }\n  100% {\n    transform: scale(0.9);\n    opacity: 0;\n  }\n`;\n\nconst ModalBackground = styled.div`\n  position: fixed;\n  z-index: 10;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0, 0, 0, 0.6);\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  animation: ${({ render }) => (render ? fadeIn : fadeOut)} 0.3s forwards;\n`;\n\nconst ModalContent = styled.div`\n  padding-bottom: 300px;\n  min-height: ${({ height }) => height || \"450px\"};\n  width: 80%;\n  max-width: 540px;\n  background-color: white;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 4rem;\n  border-radius: 8px;\n  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n    0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n  animation: ${({ render }) => (render ? scaleIn : scaleOut)} 0.3s forwards;\n`;\n\nconst Modal = ({ isOpen, onClose, children, tittle, height }) => {\n  const [render, setRender] = useState(false);\n\n  useEffect(() => {\n    if (isOpen) {\n      setRender(true);\n    } else {\n      setTimeout(() => {\n        setRender(false);\n      }, 300);\n    }\n  }, [isOpen]);\n\n  const onAnimationEnd = () => {\n    if (!isOpen) {\n      setRender(false);\n    }\n  };\n\n  if (!render && !isOpen) return null;\n\n  return (\n    <ModalBackground\n      render={isOpen}\n      onClick={onClose}\n      onAnimationEnd={onAnimationEnd}\n    >\n      <ModalContent\n        height={height}\n        render={isOpen}\n        onClick={(e) => e.stopPropagation()}\n      >\n        <ModalNavbar>\n          <TittleNavbar>{tittle}</TittleNavbar>\n          <CloseButton>\n            <IconButton\n              color=\"inherit\"\n              onClick={onClose}\n              sx={{\n                display: \"flex\",\n                position: \"absolute\",\n              }}\n            >\n              <CloseIcon />\n            </IconButton>\n          </CloseButton>\n        </ModalNavbar>\n        {children}\n      </ModalContent>\n    </ModalBackground>\n  );\n};\n\nexport default Modal;\n","// Modal.js\nimport React, { useEffect, useState } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\n\nconst ModalNavbar = styled.div`\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 64px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  background-color: #2eb142;\n  border-radius: 8px 8px 0 0;\n  padding: 0 1rem;\n  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n    0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n`;\nconst TittleNavbar = styled.h3`\n  display: flex;\n  justify-content: center;\n  width: 100%;\n  margin-left: 44px;\n  font-family: \"Montserrat\", sans-serif;\n\n  @media (max-width: 650px) {\n    font-size: 22px;\n  }\n`;\n\nconst CloseButton = styled.button`\n  width: 10%;\n  background: none;\n  border: none;\n  cursor: pointer;\n  color: white;\n\n  @media (max-width: 500px) {\n    width: 15%;\n  }\n`;\n\nconst fadeIn = keyframes`\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n`;\n\nconst fadeOut = keyframes`\n  0% {\n    opacity: 1;\n  }\n  100% {\n    opacity: 0;\n  }\n`;\n\nconst scaleIn = keyframes`\n  0% {\n    transform: scale(0.9);\n    opacity: 0;\n  }\n  100% {\n    transform: scale(1);\n    opacity: 1;\n  }\n`;\n\nconst scaleOut = keyframes`\n  0% {\n    transform: scale(1);\n    opacity: 1;\n  }\n  100% {\n    transform: scale(0.9);\n    opacity: 0;\n  }\n`;\n\nconst ModalBackground = styled.div`\n  position: fixed;\n  z-index: 10;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0, 0, 0, 0.6);\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  animation: ${({ render }) => (render ? fadeIn : fadeOut)} 0.3s forwards;\n`;\n\nconst ModalWrapper = styled.div`\n  //padding-bottom: 300px;\n  min-height: ${({ height }) => height || \"450px\"};\n  width: 80%;\n  max-width: 540px;\n  background-color: white;\n  display: flex;\n  padding: 1rem;\n  border-radius: 8px;\n  box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n    0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n  animation: ${({ render }) => (render ? scaleIn : scaleOut)} 0.3s forwards;\n\n  @media (max-width: 650px) {\n    display: flex;\n    justify-content: center;\n  }\n`;\nconst ModalContent = styled.div`\n  margin-top: 50px;\n`;\n\nconst ModalChangePassword = ({ isOpen, onClose, children, tittle, height }) => {\n  const [render, setRender] = useState(false);\n\n  useEffect(() => {\n    if (isOpen) {\n      setRender(true);\n    } else {\n      setTimeout(() => {\n        setRender(false);\n      }, 300);\n    }\n  }, [isOpen]);\n\n  const onAnimationEnd = () => {\n    if (!isOpen) {\n      setRender(false);\n    }\n  };\n\n  if (!render && !isOpen) return null;\n\n  return (\n    <ModalBackground\n      render={isOpen}\n      onClick={onClose}\n      onAnimationEnd={onAnimationEnd}\n    >\n      <ModalWrapper\n        height={height}\n        render={isOpen}\n        onClick={(e) => e.stopPropagation()}\n      >\n        <ModalNavbar>\n          <TittleNavbar>{tittle}</TittleNavbar>\n          <CloseButton>\n            <IconButton\n              color=\"inherit\"\n              onClick={onClose}\n              sx={{\n                display: \"flex\",\n                position: \"absolute\",\n              }}\n            >\n              <CloseIcon />\n            </IconButton>\n          </CloseButton>\n        </ModalNavbar>\n        <ModalContent> {children}</ModalContent>\n      </ModalWrapper>\n    </ModalBackground>\n  );\n};\n\nexport default ModalChangePassword;\n","import styled, { keyframes } from \"styled-components\";\n\nconst shakeVertical = keyframes`\n  0%, 100% {\n    transform: translateY(0);\n  }\n  10%, 30%, 50%, 70% {\n    transform: translateY(-8px);\n  }\n  20%, 40%, 60% {\n    transform: translateY(8px);\n  }\n  80% {\n    transform: translateY(6.4px);\n  }\n  90% {\n    transform: translateY(-6.4px);\n  }\n`;\n\nexport const WrapperForm = styled.div`\n  width: 100%;\n  display: flex;\n  justify-self: center;\n  flex-direction: row;\n  gap: 20px;\n  margin-top: 20px;\n\n  @media (max-width: 650px) {\n    display: flex;\n    flex-direction: column;\n    margin-top: 0px;\n  }\n`;\n\nexport const WrapperIndication = styled.div`\n  display: flex;\n  flex-direction: column;\n  cursor: text;\n  gap: 4px;\n  p {\n    font-family: Montserrat, sans-serif;\n    font-weight: bold;\n    color: #000000;\n    font-size: 17px;\n  }\n`;\n\nexport const Validations = styled.div`\n  display: flex;\n  flex-direction: column;\n  cursor: text;\n\n  div {\n    gap: 10px;\n    font-family: Montserrat, sans-serif;\n    color: #000000;\n    font-size: 14px;\n    display: flex;\n    align-items: center;\n    span {\n      gap: 20px;\n      background-color: ${({ background }) => background || \"#847F7F\"};\n      border-radius: 50%;\n      width: 10px;\n      height: 10px;\n      display: inline-block;\n      line-height: 20px;\n      text-align: center;\n      margin-right: 5px;\n      color: rgba(255, 255, 255, 0);\n    }\n  }\n`;\n\nexport const WrapperInputsButton = styled.div`\n  display: flex;\n  flex-direction: column;\n  gap: 25px;\n`;\n\nexport const Button = styled.button`\n  font-family: Montserrat, sans-serif;\n  font-weight: 600;\n  font-size: 14px;\n  background-color: ${(props) => (props.error ? \"#F2B0B0\" : \"#B2E5B7\")};\n  border: ${(props) => (props.error ? \"solid #EF0202\" : \"solid #67A46D\")};\n  width: 270px;\n  height: 40px;\n  border-radius: 8px;\n  cursor: pointer;\n  box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,\n    rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n\n  &:hover {\n    background-color: ${(props) => (props.error ? \"#8ACD8C\" : \"#8ACD8C\")};\n  }\n\n  &.shake {\n    animation: ${shakeVertical} 0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955)\n      both;\n  }\n\n  animation: ${(props) =>\n    props.animate\n      ? `${shakeVertical} 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both`\n      : \"none\"};\n`;\n\nexport const WrapperAlert = styled.div`\n  position: fixed;\n  margin-bottom: -500px;\n`;\n","import React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nconst InputGroup = styled.div`\n  position: relative;\n`;\nconst Input = styled.input`\n  font-family: Montserrat, sans-serif;\n  font-size: 5px;\n  padding-left: 10px;\n  width: 250px;\n  height: 20px;\n  font: inherit;\n  color: #000; /* Cambiamos el color del texto a negro */\n  padding: 10px;\n  border: none;\n  border-radius: 8px;\n  outline: 2px solid #c6c6c6; /* Cambiamos el color del borde a negro */\n  background-color: transparent;\n  transition: outline-color 500ms;\n  &:focus,\n  &:valid {\n    outline-color: #67a46d;\n  }\n`;\nconst Label = styled.span`\n  font-family: Montserrat, sans-serif;\n  font-size: 15px;\n  position: absolute;\n  pointer-events: none;\n  top: 0;\n  left: 0;\n  transform: translate(17px, 10px);\n  color: #848080;\n  transition: transform 500ms, scale 500ms;\n  ${Input}:focus + &,\n    ${Input}:valid + & {\n    padding-inline: 5px;\n    transform: translate(10px, -12px) scale(0.9);\n    background-color: #ffffff;\n  }\n`;\n\nconst WrapperIcon = styled.div`\n  position: absolute;\n  top: 50%;\n  right: 10px;\n  transform: translateY(-50%);\n`;\nconst InputField = ({ label, type, name }) => {\n  if (!name) {\n    throw new Error(\"The 'name' prop is required\");\n  }\n\n  const [showPassword, setShowPassword] = React.useState(false);\n  const { inputField, setInputField } = React.useContext(AuthContext);\n  const [value, setValue] = React.useState();\n\n  function handleChange(event) {\n    const key = event.target.name;\n    const value = event.target.value;\n    setInputField((prevInputField) => ({\n      ...prevInputField,\n      [key]: value,\n    }));\n  }\n  useEffect(() => {\n    if (inputField?.[name] !== undefined) {\n      setValue(inputField[name]);\n    }\n  }, [inputField?.[name]]);\n\n  return (\n    <InputGroup>\n      <Input\n        type={showPassword ? \"text\" : `${type}`}\n        required\n        style={{ fontSize: \"15px\" }}\n        autoComplete=\"new-password\"\n        onChange={handleChange}\n        name={name}\n        value={value}\n      />\n      <Label>{label}</Label>\n      {type === \"password\" ? (\n        <WrapperIcon>\n          <IconButton\n            size=\"medium\"\n            onClick={() => setShowPassword(!showPassword)}\n          >\n            {showPassword ? <VisibilityOffIcon /> : <VisibilityIcon />}\n          </IconButton>\n        </WrapperIcon>\n      ) : null}\n    </InputGroup>\n  );\n};\n\nexport default InputField;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {\n  WrapperForm,\n  WrapperIndication,\n  WrapperInputsButton,\n  Button,\n  Validations,\n  WrapperAlert,\n  shakeVertical,\n} from \"./style/changesPasswordForm.style\";\nimport InputField from \"../../../inputField/InputField\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\nimport { useMutation } from \"@apollo/client\";\nimport { UPDATE_USER } from \"../../../../controllers/usersControllers\";\nimport { encryptData } from \"../../../../utils/encryptDecrypt\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction ChangesPasswordForm() {\n  const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n  const { t } = useTranslation();\n  const { inputField, setInputField } = React.useContext(AuthContext);\n  const [errorButton, setErrorButton] = React.useState(false);\n  const [errorPetition, setErrorPetition] = React.useState();\n  const [changePassword] = useMutation(UPDATE_USER);\n  const [validations, setValidations] = useState({\n    currentPassword: false,\n    length: false,\n    uppercase: false,\n    number: false,\n    specialChar: false,\n    equalPasswords: false,\n  });\n  const validationsOptions = [\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM1\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM2\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM3\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM4\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM5\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM6\"),\n  ];\n  const buttonRef = useRef(null);\n\n  const validatePassword = (password) => {\n    setErrorButton(false);\n    setErrorPetition();\n    setValidations((prevValidations) => ({\n      ...prevValidations,\n      currentPassword: inputField?.currentPass !== \"\" ? true : false,\n      length: password?.length >= 8,\n      uppercase: /[A-Z]/.test(password),\n      number: /[0-9]/.test(password),\n      specialChar: /[!@#\\$%\\^&\\*-_.]/.test(password),\n      equalPasswords:\n        inputField?.newPass !== undefined &&\n        inputField?.newPass !== \"\" &&\n        inputField?.confirmPass !== undefined &&\n        inputField?.confirmPass !== \"\" &&\n        inputField?.newPass === inputField?.confirmPass,\n    }));\n  };\n\n  function passwordRequirements(objeto) {\n    for (const propiedad in objeto) {\n      if (objeto.hasOwnProperty(propiedad) && objeto[propiedad] !== true) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  const refreshState = () => {\n    setTimeout(() => {\n      setValidations({\n        currentPassword: false,\n        length: false,\n        uppercase: false,\n        number: false,\n        specialChar: false,\n        equalPasswords: false,\n      });\n      setErrorButton(false);\n      setErrorPetition(false);\n      setInputField({\n        confirmPass: \"\",\n        currentPass: \"\",\n        newPass: \"\",\n      });\n    }, \"2000\");\n  };\n  const colorSpan = (position) => {\n    const error = \"#EDBABA\";\n    const success = \"#B2E5B7\";\n    const normal = \"#847F7F\";\n\n    if (inputField?.newPass !== undefined) {\n      switch (position) {\n        case 0:\n          return validations.currentPassword ? success : error;\n        case 1:\n          return validations.length ? success : error;\n        case 2:\n          return validations.uppercase ? success : error;\n        case 3:\n          return validations.number ? success : error;\n        case 4:\n          return validations.specialChar ? success : error;\n        case 5:\n          return validations.equalPasswords ? success : error;\n      }\n    } else {\n      return normal;\n    }\n  };\n  const validationPass = () => {\n    setErrorButton(false);\n    setErrorPetition();\n    setValidations((prevValidations) => ({\n      ...prevValidations,\n      equalPasswords:\n        inputField?.newPass !== undefined &&\n        inputField?.newPass !== \"\" &&\n        inputField?.confirmPass !== undefined &&\n        inputField?.confirmPass !== \"\" &&\n        inputField?.newPass === inputField?.confirmPass,\n    }));\n  };\n\n  useEffect(() => {\n    if (inputField?.currentPass !== undefined) {\n      setErrorButton(false);\n      setErrorPetition();\n      setValidations((prevValidations) => ({\n        ...prevValidations,\n        currentPassword: inputField?.currentPass !== \"\" ? true : false,\n      }));\n    }\n  }, [inputField?.currentPass]);\n\n  useEffect(() => {\n    if (inputField?.newPass !== undefined) {\n      validatePassword(inputField.newPass);\n    }\n  }, [inputField?.newPass]);\n\n  useEffect(() => {\n    if (inputField?.confirmPass !== undefined) {\n      validationPass(inputField.confirmPass);\n    }\n  }, [inputField?.confirmPass]);\n\n  const labelButton = () => {\n    if (errorButton && errorPetition == undefined) {\n      return t(\n        \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.MUST_COMPLETE_REQUIREMENTS\"\n      );\n    } else if (!errorButton && errorPetition == undefined) {\n      return t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CHANGE_PASSWORD\");\n    } else if (!errorButton && !errorPetition) {\n      return t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.SUCCESSFUL_CHANGE\");\n    } else if (errorButton && errorPetition) {\n      return t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.WRONG_PASSWORD\");\n    }\n  };\n\n  async function userEdit(e) {\n    if (buttonRef.current && !buttonRef.current.disabled) {\n      buttonRef.current.disabled = true;\n      const currentPassword = await encryptData(\n        inputField?.currentPass,\n        password\n      );\n      const newPassword = await encryptData(inputField?.newPass, password);\n      const ConfirmPassword = await encryptData(\n        inputField?.confirmPass,\n        password\n      );\n\n      if (passwordRequirements(validations)) {\n        try {\n          changePassword({\n            variables: {\n              id: parseInt(localStorage.getItem(\"np\")),\n              currentPassword: currentPassword,\n              newPassword: newPassword,\n              confirmPassword: ConfirmPassword,\n            },\n          })\n            .then((response) => {\n              setErrorButton(false);\n              setErrorPetition();\n              refreshState();\n              setTimeout(() => {\n                buttonRef.current.disabled = false;\n              }, 2000);\n            })\n            .catch((err) => {\n              setErrorButton(true);\n              setErrorPetition(true);\n              setTimeout(() => {\n                buttonRef.current.disabled = false;\n              }, 2000);\n            });\n        } catch (err) {}\n      } else {\n        e.preventDefault();\n        setValidations((prevValidations) => ({\n          ...prevValidations,\n          errorButton: true,\n        }));\n        setTimeout(() => {\n          buttonRef.current.disabled = false;\n        }, 2000);\n      }\n    }\n  }\n\n  return (\n    <React.Fragment>\n      <WrapperForm>\n        <WrapperIndication>\n          <p>\n            {t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.DESCRIPTION_BOLD\")}\n          </p>\n\n          {validationsOptions?.map((item, key) => (\n            <Validations background={colorSpan(key)}>\n              <div>\n                <span>•</span>\n                {item}\n              </div>\n            </Validations>\n          ))}\n        </WrapperIndication>\n        <WrapperInputsButton>\n          <InputField\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CURRENT_PASSWORD\"\n            )}\n            type=\"password\"\n            name=\"currentPass\"\n            autoComplete=\"new-password\"\n          />\n          <InputField\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.NEW_PASSWORD\"\n            )}\n            type=\"password\"\n            name=\"newPass\"\n            autoComplete=\"new-password\"\n          />\n          <InputField\n            label={t(\n              \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CONFIRM_PASSWORD\"\n            )}\n            type=\"password\"\n            name=\"confirmPass\"\n            autoComplete=\"new-password\"\n          />\n          <Button\n            error={errorButton}\n            onClick={(e) => {\n              userEdit(e);\n            }}\n            ref={buttonRef}\n            onMouseDown={(e) => {\n              if (!passwordRequirements(validations)) {\n                e.currentTarget.classList.add(\"shake\");\n                setErrorButton(true);\n              }\n            }}\n            onMouseUp={(e) => e.currentTarget.classList.remove(\"shake\")}\n          >\n            {labelButton()}\n            {/*  {errorButton ? \"Complete los requerimientos\" : \"Cambiar contraseña\"} */}\n          </Button>\n        </WrapperInputsButton>\n      </WrapperForm>\n    </React.Fragment>\n  );\n}\nexport default ChangesPasswordForm;\n","import React, { useState, useContext } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport Divider from \"@mui/material/Divider\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport PersonAdd from \"@mui/icons-material/PersonAdd\";\nimport Settings from \"@mui/icons-material/Settings\";\nimport Logout from \"@mui/icons-material/Logout\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { useHistory } from \"react-router-dom\";\nimport ModalProfile from \"../../modal/modalProfile/ModalProfile\";\nimport ModalChangePasswordModal from \"../../modal/modalChangePassword/ModalChangePassword\";\nimport EditForm from \"../../userManagement/editUsers/editForm\";\nimport SyncLockIcon from \"@mui/icons-material/SyncLock\";\nimport ChangesPasswordForm from \"../../userManagement/editUsers/chagesPassword/changesPasswordForm\";\nimport { useMutation } from \"@apollo/client\";\nimport { LOGOUT } from \"../../../controllers/authenticationController\";\n\n//helpersFunctions\nimport { ClearLocalStorageExcept } from \"../../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport default function AccountMenu(setEditAlert) {\n  const { t } = useTranslation();\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [modalResetPass, setModalResetPass] = useState(false);\n  const history = useHistory();\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [showEditModifications, setNewShownModifications] = useState(false);\n  const { alertEdit, setAlertEdit, setInputField } = useContext(AuthContext);\n  const edit = true;\n  const [logoutSession] = useMutation(LOGOUT);\n  const open = Boolean(anchorEl);\n  const handleModalClose = () => {\n    setTimeout(() => {\n      setIsModalOpen(false);\n      setAlertEdit(false);\n    }, 500);\n  };\n\n  const handleModalCloseResetPass = () => {\n    setTimeout(() => {\n      setModalResetPass(false);\n      setAlertEdit(false);\n      setInputField();\n    }, 500);\n  };\n\n  const handleClick = (event) => {\n    setAnchorEl(event.currentTarget);\n  };\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  const logout = () => {\n    try {\n      logoutSession()\n        .then((response) => {\n          console.log(\"success\", response);\n          ClearLocalStorageExcept(\"language\");\n          history.push(\"/\");\n          window.location.reload();\n        })\n        .catch((err) => {\n          console.log(\"Error de logout\", err);\n          ClearLocalStorageExcept(\"language\");\n          history.push(\"/\");\n          window.location.reload();\n        });\n    } catch (err) {\n      console.error(\"Excepción:\", err);\n    }\n  };\n  return (\n    <React.Fragment>\n      <Box sx={{ display: \"flex\", alignItems: \"center\", textAlign: \"center\" }}>\n        <Tooltip title=\"Account settings\">\n          <IconButton\n            onClick={handleClick}\n            size=\"small\"\n            sx={{ ml: 2 }}\n            aria-controls={open ? \"account-menu\" : undefined}\n            aria-haspopup=\"true\"\n            aria-expanded={open ? \"true\" : undefined}\n          >\n            <Avatar\n              sx={{\n                width: 32,\n                height: 32,\n                border: \"solid \",\n                borderColor: \"white\",\n              }}\n            >\n              {localStorage.getItem(\"name\").slice(0, 1).toUpperCase()}\n            </Avatar>\n          </IconButton>\n        </Tooltip>\n      </Box>\n      <Menu\n        anchorEl={anchorEl}\n        id=\"account-menu\"\n        open={open}\n        onClose={handleClose}\n        onClick={handleClose}\n        PaperProps={{\n          elevation: 0,\n          sx: {\n            borderRadius: \"8px\",\n            overflow: \"visible\",\n            filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\n            mt: 1.5,\n            \"& .MuiAvatar-root\": {\n              width: 32,\n              height: 32,\n              ml: -0.5,\n              mr: 1,\n            },\n            \"&:before\": {\n              content: '\"\"',\n              display: \"block\",\n              position: \"absolute\",\n              top: 0,\n              right: 14,\n              width: 10,\n              height: 10,\n              bgcolor: \"background.paper\",\n              transform: \"translateY(-50%) rotate(45deg)\",\n              zIndex: 0,\n            },\n          },\n        }}\n        transformOrigin={{ horizontal: \"right\", vertical: \"top\" }}\n        anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\n      >\n        <MenuItem onClick={() => setIsModalOpen(true)}>\n          <Avatar /> {t(\"VIEW_PROJECT.COMPONENT_AVATAR.ACCOUNT\")}\n        </MenuItem>\n        <MenuItem onClick={() => setModalResetPass(true)}>\n          <ListItemIcon>\n            <SyncLockIcon fontSize=\"medium\" />\n          </ListItemIcon>\n          {t(\"VIEW_PROJECT.COMPONENT_AVATAR.PASSWORD_CHANGING\")}\n        </MenuItem>\n        <Divider />{\" \"}\n        <MenuItem onClick={logout}>\n          <ListItemIcon>\n            <Logout fontSize=\"medium\" />\n          </ListItemIcon>\n          {t(\"VIEW_PROJECT.COMPONENT_AVATAR.LOGOUT\")}\n        </MenuItem>\n      </Menu>\n\n      <div>\n        <Snackbar\n          open={alertEdit}\n          autoHideDuration={2500}\n          onClose={handleModalClose}\n          anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n        >\n          <Alert severity=\"success\">\n            {t(\n              \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.SUCCESSFUL_ALERT\"\n            )}\n          </Alert>\n        </Snackbar>\n      </div>\n      <ModalProfile\n        tittle={t(\"VIEW_PROJECT.COMPONENT_AVATAR.HEADER_MODAl_TITLE\")}\n        isOpen={isModalOpen}\n        onClose={handleModalClose}\n      >\n        <EditForm\n          editing={true}\n          iddUser={parseInt(localStorage.getItem(\"np\"))}\n        />\n      </ModalProfile>\n      <ModalChangePasswordModal\n        height=\"300px\"\n        tittle={t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.TITLE\")}\n        isOpen={modalResetPass}\n        onClose={handleModalCloseResetPass}\n      >\n        <ChangesPasswordForm />\n      </ModalChangePasswordModal>\n    </React.Fragment>\n  );\n}\n","import React, { useState, useContext } from \"react\";\r\nimport { AuthContext } from \"../../context/AuthProvider\";\r\nimport PropTypes from \"prop-types\";\r\nimport Button from \"@mui/material/Button\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport Alert from \"@mui/material/Alert\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport { useMutation } from \"@apollo/client\";\r\nimport { UPDATE_USER } from \"../../controllers/usersControllers\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { decryptData, encryptData } from \"../../utils/encryptDecrypt\";\r\nconst password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\r\n\r\nexport default function ConfirmationDialog(props) {\r\n  const history = useHistory();\r\n  const [update] = useMutation(UPDATE_USER);\r\n  const { onClose, value: valueProp, /* open, */ ...other } = props;\r\n  const [value, setValue] = React.useState(valueProp);\r\n  const radioGroupRef = React.useRef(null);\r\n  const [open, setOpen] = useState(false);\r\n  const [openAlert, setOpenAlert] = useState(false);\r\n  const [menssage, setMenssage] = useState();\r\n  //emailInput\r\n  const [errormess, setErrormess] = useState(\"\");\r\n  const [color, setColor] = useState(\"success\");\r\n  //emailConfirm\r\n  const [errormessconf, setErrormessconf] = useState(\"\");\r\n  const [colorconfirm, setColorconfirm] = useState(\"success\");\r\n  //No match email\r\n  const [match, setMatch] = useState(false);\r\n\r\n  const [datauser, setDatauser] = React.useState({\r\n    email: \"\",\r\n    emailConf: \"\",\r\n  });\r\n\r\n  React.useEffect(() => {\r\n    if (localStorage.getItem(\"email\") === \"\") {\r\n      setOpen(true);\r\n    } else {\r\n    }\r\n  }, []);\r\n\r\n  const handleClose = (event, reason) => {\r\n    if (reason === \"clickaway\") {\r\n      return;\r\n    }\r\n\r\n    openAlert(false);\r\n  };\r\n\r\n  const handleEntering = () => {\r\n    if (radioGroupRef.current != null) {\r\n      radioGroupRef.current.focus();\r\n    }\r\n  };\r\n\r\n  const validation = () => {\r\n    if (datauser.email.includes(\"@\" && \".\") === true) {\r\n      setColor(\"success\");\r\n      setErrormess(\"\");\r\n    } else if (datauser.email.includes(\"@\" && \".\") === false) {\r\n      setColor(\"error\");\r\n      setErrormess(\"Correo inválido\");\r\n    }\r\n  };\r\n  const validationConfirm = () => {\r\n    if (datauser.emailConf.includes(\"@\" && \".\") === true) {\r\n      setColorconfirm(\"success\");\r\n      setErrormessconf(\"\");\r\n    } else if (datauser.emailConf.includes(\"@\" && \".\") === false) {\r\n      setColorconfirm(\"error\");\r\n      setErrormessconf(\"Correo inválido\");\r\n    }\r\n    if (datauser.emailConf === datauser.email) {\r\n      setMatch(false);\r\n    }\r\n    if (datauser.emailConf !== datauser.email) {\r\n      setMatch(true);\r\n    }\r\n  };\r\n\r\n  const handleChange = (event) => {\r\n    validation();\r\n    const value = event.target.value;\r\n    const name = event.target.name;\r\n    setDatauser({\r\n      ...datauser,\r\n      [name]: value,\r\n    });\r\n  };\r\n\r\n  const handleChangeConfirm = (event) => {\r\n    validationConfirm();\r\n    const value = event.target.value;\r\n    const name = event.target.name;\r\n    setDatauser({\r\n      ...datauser,\r\n      [name]: value,\r\n    });\r\n  };\r\n\r\n  function handleCloseModal() {\r\n    setDatauser({ email: \"\", emailConf: \"\" });\r\n    setTimeout(function () {\r\n      localStorage.removeItem(\"token\");\r\n      window.location.reload();\r\n      history.push(\"/\");\r\n      setOpen(false);\r\n    }, 4000); // 1000 milisegundos = 1 segundo\r\n  }\r\n\r\n  const updateUser = async () => {\r\n    const value = await encryptData(datauser.email, password);\r\n    try {\r\n      const localDate = new Date();\r\n      const browserLanguage =\r\n        typeof Intl === \"undefined\"\r\n          ? navigator.languages && navigator.languages.length\r\n            ? navigator.languages[0]\r\n            : navigator.language\r\n          : Intl.DateTimeFormat().resolvedOptions().locale;\r\n      update({\r\n        variables: {\r\n          id: parseInt(localStorage.getItem(\"np\")),\r\n          email: value,\r\n          // Se envía la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\r\n          epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\r\n          offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\r\n          locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\r\n        },\r\n      })\r\n        .then((resul) => {\r\n          setOpenAlert(true);\r\n          handleCloseModal();\r\n          //action a realizar si el cambio se ejecuta correctamente\r\n        })\r\n        .catch((err) => {\r\n          //action a realizar si el cambio no se ejecuta\r\n          console.log(err);\r\n        });\r\n    } catch (err) {\r\n      console.log(err);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <Dialog\r\n      sx={{\r\n        \"& .MuiDialog-paper\": {\r\n          width: \"80%\",\r\n          maxHeight: 500,\r\n          borderRadius: \"8px\",\r\n        },\r\n      }}\r\n      maxWidth=\"xs\"\r\n      TransitionProps={{ onEntering: handleEntering }}\r\n      open={open}\r\n      {...other}\r\n    >\r\n      <DialogTitle\r\n        sx={{\r\n          background: \"#3f9948\",\r\n          color: \"white\",\r\n          textAlign: \"center\",\r\n          fontFamily: \"Montserrat, sans serif\",\r\n        }}\r\n      >\r\n        <b>¡Actualiza tus datos!</b>\r\n      </DialogTitle>\r\n      <DialogContent>\r\n        <p\r\n          style={{\r\n            fontFamily: \"Montserrat, sans serif\",\r\n            textAlign: \"justify\",\r\n            color: \"black\",\r\n          }}\r\n        >\r\n          {\" \"}\r\n          Estamos trabajando día a día para mejorar tu expriencia. Por tu\r\n          seguridad y para hacer uso de nuevas y futuras funcionalidades,\r\n          necesitamos que actualices tus datos.\r\n        </p>\r\n        <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"20px\" }}>\r\n          <TextField\r\n            helperText={errormess}\r\n            onChange={handleChange}\r\n            name=\"email\"\r\n            color={color}\r\n            fullWidth\r\n            label=\"Correo electrónico\"\r\n            type=\"email\"\r\n            size=\"small\"\r\n            InputProps={{ sx: { borderRadius: \"8px\" } }}\r\n          />\r\n          <TextField\r\n            helperText={errormessconf}\r\n            onChange={handleChangeConfirm}\r\n            name=\"emailConf\"\r\n            color={colorconfirm}\r\n            fullWidth\r\n            label=\"Confirmar correo electrónico\"\r\n            type=\"email\"\r\n            size=\"small\"\r\n            InputProps={{ sx: { borderRadius: \"8px\" } }}\r\n          />\r\n        </div>\r\n      </DialogContent>\r\n      <DialogActions\r\n        sx={{\r\n          display: \"flex\",\r\n          justifyContent: \"center\",\r\n          padding: \"0px 24px 20px\",\r\n        }}\r\n      >\r\n        <Button\r\n          disabled={\r\n            datauser.email !== \"\" && datauser.emailConf !== \"\"\r\n              ? datauser.email === datauser.emailConf\r\n                ? false\r\n                : true\r\n              : true\r\n          }\r\n          fullWidth\r\n          sx={{\r\n            borderRadius: \"8px\",\r\n            marginBottom: \"5px\",\r\n            backgroundColor: \"#2EB142\",\r\n            color: \"white\",\r\n            fontFamily: \"Montserrat, sans serif \",\r\n            \"&:hover\": {\r\n              backgroundColor: \"#336535\",\r\n            },\r\n          }}\r\n          onClick={updateUser}\r\n        >\r\n          <b>Guardar cambios</b>\r\n        </Button>\r\n      </DialogActions>\r\n\r\n      <Snackbar open={openAlert} autoHideDuration={6000} onClose={handleClose}>\r\n        <Alert severity=\"success\">\r\n          Correo registrado correctamente!, tu sesion cerrará, por favor vuelve\r\n          a ingresar\r\n        </Alert>\r\n      </Snackbar>\r\n    </Dialog>\r\n  );\r\n}\r\n\r\nConfirmationDialog.propTypes = {\r\n  onClose: PropTypes.func.isRequired,\r\n  open: PropTypes.bool.isRequired,\r\n  value: PropTypes.string.isRequired,\r\n};\r\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport { Validations } from \"../../userManagement/editUsers/chagesPassword/style/changesPasswordForm.style\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport Dialog from \"@mui/material/Dialog\";\nimport TextField from \"@mui/material/TextField\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { useMutation } from \"@apollo/client\";\nimport { useHistory } from \"react-router-dom\";\nimport { RESET_PASSWORD } from \"../../../controllers/authenticationController\";\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\n// display password\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\n\nexport const ModalChangePasswordRequired = () => {\n  const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n  const history = useHistory();\n  const { t } = useTranslation();\n  const [open, setOpen] = useState(false);\n  const [changePassword] = useMutation(RESET_PASSWORD);\n  const [openAlert, setOpenAlert] = useState(false);\n  const [textPassword, setTextPassword] = useState(false);\n  const [textPasswordTwo, setTextPasswordTwo] = useState(false);\n\n  const [newPassword, setNewPassword] = useState({\n    pass: \"\",\n    newPass: \"\",\n  });\n  const [validations, setValidations] = useState({\n    length: false,\n    uppercase: false,\n    number: false,\n    specialChar: false,\n    equalPasswords: false,\n  });\n  const validatePassword = (values) => {\n    return {\n      length: values.pass.length >= 8,\n      uppercase: /[A-Z]/.test(values.pass),\n      number: /[0-9]/.test(values.pass),\n      specialChar: /[!@#$%^&*()_\\-+=\\[{\\]};:'\",<.>/?\\\\|~`]/.test(values.pass),\n      equalPasswords: values.pass === values.newPass,\n    };\n  };\n  \n  const validationsOptions = [\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM2\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM3\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM4\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM5\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM6\"),\n  ];\n\n\n  useEffect(() => {\n    const storedValue = localStorage.getItem(\"SecurityPassword\");\n\n    if (JSON.parse(storedValue) === false ) {\n      setOpen(true);\n    }\n  }, []);\n\n  const togglePasswordVisibility = () => {\n    setTextPassword(!textPassword);\n  };\n\n  const togglePasswordVisibilityTwo = () => {\n    setTextPasswordTwo(!textPasswordTwo)\n  }\n\n  function passwordRequirements(objeto) {\n    for (const propiedad in objeto) {\n      if (objeto.hasOwnProperty(propiedad) && objeto[propiedad] !== true) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n\n    openAlert(false);\n  };\n  const refreshState = () => {\n    setTimeout(() => {\n      setValidations({\n        length: false,\n        uppercase: false,\n        number: false,\n        specialChar: false,\n        equalPasswords: false,\n      });\n\n      setNewPassword({\n        pass: \"\",\n        newPass: \"\",\n      });\n      localStorage.clear();\n      window.location.reload();\n      history.push(\"/\");\n      setOpen(false);\n    }, \"5000\");\n  };\n  const colorSpan = (position) => {\n    const error = \"#EDBABA\";\n    const success = \"#B2E5B7\";\n    const normal = \"#847F7F\";\n    if (newPassword?.pass !== undefined) {\n      switch (position) {\n        case 0:\n          return validations.length ? success : error;\n        case 1:\n          return validations.uppercase ? success : error;\n        case 2:\n          return validations.number ? success : error;\n        case 3:\n          return validations.specialChar ? success : error;\n        case 4:\n          return validations.equalPasswords ? success : error;\n      }\n    } else {\n      return normal;\n    }\n  };\n\n  const handleChange = (event) => {\n    const { name, value } = event.target;\n    const updatedValues = { ...newPassword, [name]: value };\n    const updatedValidations = validatePassword(updatedValues);\n    setNewPassword(updatedValues);\n    setValidations(updatedValidations);\n  };\n\n  const validationColor = () => {\n    if (passwordRequirements(validations) === false) {\n      return \"error\";\n    } else {\n      return \"success\";\n    }\n  };\n\n  async function userEdit(e) {\n    const newPass = await encryptData(newPassword.pass, password);\n    const newPassConfirm = await encryptData(newPassword.newPass, password);\n    if (passwordRequirements(validations)) {\n      try {\n        const localDate = new Date();\n        const browserLanguage =\n          typeof Intl === \"undefined\"\n            ? navigator.languages && navigator.languages.length\n              ? navigator.languages[0]\n              : navigator.language\n            : Intl.DateTimeFormat().resolvedOptions().locale;\n        changePassword({\n          variables: {\n            token: localStorage.getItem(\"token\"),\n            password: newPass,\n            confirmPassword: newPassConfirm,\n            // Se envía la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\n            epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\n            offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\n            locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n          },\n        })\n          .then((response) => {\n            setOpenAlert(true);\n            refreshState();\n          })\n          .catch((err) => {});\n      } catch (err) {}\n    }\n  }\n\n  return (\n    <Dialog\n      sx={{\n        \"& .MuiDialog-paper\": {\n          width: \"80%\",\n          maxHeight: 500,\n          borderRadius: \"8px\",\n        },\n      }}\n      maxWidth=\"sm\"\n      open={open}\n    >\n      <DialogTitle\n        sx={{\n          background: \"#3f9948\",\n          height: \"auto\",\n          color: \"white\",\n          textAlign: \"center\",\n          fontFamily: \"Montserrat, sans serif\",\n        }}\n      >\n        <b>{t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.TITLE\")}</b>\n      </DialogTitle>\n      <DialogContent>\n        <p\n          style={{\n            fontFamily: \"Montserrat, sans serif\",\n            textAlign: \"justify\",\n            color: \"black\",\n          }}\n        >\n          <p></p>\n          {t(\n            \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.MODAL_UPDATE_DESCRIPTION\"\n          )}\n        </p>\n        <b>\n          {\" \"}\n          {t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.DESCRIPTION_BOLD\")}\n        </b>\n        <div>\n          <div\n            style={{\n              display: \"flex\",\n              flexDirection: \"row\",\n              gap: \"30px\",\n              justifyC11ontent: \"space-between\",\n            }}\n          >\n            <div\n              style={{ display: \"flex\", flexDirection: \"column\", gap: \"3px\" }}\n            >\n              {validationsOptions?.map((item, key) => (\n                <Validations background={colorSpan(key)}>\n                  <div>\n                    <span>•</span>\n                    {item}\n                  </div>\n                </Validations>\n              ))}\n            </div>\n            <div\n              style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}\n            >\n              <TextField\n                // helperText={}\n                onChange={handleChange}\n                name=\"pass\"\n                color={validationColor()}\n                fullWidth\n                label={t(\n                  \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.NEW_PASSWORD\"\n                )}\n                InputProps={{\n                  endAdornment: (\n                    <InputAdornment position=\"end\">\n                      {textPassword ? (\n                        <VisibilityIcon\n                          sx={{\n                            \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n                          }}\n                          onClick={togglePasswordVisibility}\n                        />\n                      ) : (\n                        <VisibilityOffIcon\n                          onClick={togglePasswordVisibility}\n                          sx={{\n                            \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n                          }}\n                        />\n                      )}\n                    </InputAdornment>\n                  ),\n                  sx: { borderRadius: \"8px\" }, // Estilos adicionales\n                }}\n                type={textPassword ? \"text\" : \"password\"}\n                size=\"small\"\n              />\n              <TextField\n                // helperText={}\n                onChange={handleChange}\n                name=\"newPass\"\n                color={validationColor()}\n                fullWidth\n                label={t(\n                  \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CONFIRM_PASSWORD\"\n                )}\n                InputProps={{\n                  endAdornment: (\n                    <InputAdornment position=\"end\">\n                      {textPasswordTwo ? (\n                        <VisibilityIcon\n                          sx={{\n                            \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n                          }}\n                          onClick={togglePasswordVisibilityTwo}\n                        />\n                      ) : (\n                        <VisibilityOffIcon\n                          onClick={togglePasswordVisibilityTwo}\n                          sx={{\n                            \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n                          }}\n                        />\n                      )}\n                    </InputAdornment>\n                  ),\n                  sx: { borderRadius: \"8px\" }, // Estilos adicionales\n                }}\n                type={textPasswordTwo ? \"text\" : \"password\"}\n                size=\"small\"\n              />\n            </div>\n          </div>\n          <Button\n            fullWidth\n            disabled={!passwordRequirements(validations)}\n            onClick={(e) => {\n              userEdit(e);\n            }}\n            sx={{\n              borderRadius: \"8px\",\n              height: \"35px\",\n              marginTop: \"20px\",\n              marginBottom: \"5px\",\n              backgroundColor: \"#3f9948\",\n              color: \"white\",\n              fontFamily: \"Montserrat, sans serif \",\n              \"&:hover\": {\n                backgroundColor: \"#336535\",\n              },\n              fontSize: \"12px\",\n            }}\n          >\n            <b>\n              {t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CHANGE_PASSWORD\")}\n            </b>\n          </Button>\n        </div>\n      </DialogContent>\n      <Snackbar open={openAlert} autoHideDuration={6000} onClose={handleClose}>\n        <Alert severity=\"success\">\n          {t(\n            \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.SUCCESSFUL_CHANGE_REQUIRED\"\n          )}\n        </Alert>\n      </Snackbar>\n    </Dialog>\n  );\n};\nModalChangePasswordRequired.propTypes = {\n  onClose: PropTypes.func.isRequired,\n  open: PropTypes.bool.isRequired,\n  value: PropTypes.string.isRequired,\n};\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { Switch, Redirect, useHistory } from \"react-router-dom\";\n\n//component\nimport SideBar from \"../../../components/sidebar/SideBar\";\nimport Router_per_Components from \"../../../config/routing/router_per_component\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport AccountMenu from \"../../../components/menu/avatarMenu/AvatarMenu\";\n\n//components\nimport ConfirmationDialog from \"../../../components/modal/ConfirmationModal\";\n\n//multilenguage\nimport LanguageSelect from \"../../../components/languageSelect/LanguageSelect\";\n\n//helpers functions\nimport { ClearLocalStorageExcept } from \"../../../utils/helpers\";\nimport { ModalChangePasswordRequired } from \"../../../components/modal/modalChangePassword/ModalChangePasswordRequired\";\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    width: \"100%\",\n    \"& > * + *\": {\n      marginTop: theme.spacing(2),\n    },\n  },\n}));\nconst Principal = () => {\n  const [alert, setAlert] = useState(false);\n  const [reload, setReload] = useState(false);\n  const classes = useStyles();\n  const [openSidebar, setOpenSidebar] = useState(false);\n  var timeoutID;\n  const { permissionsRoleUser } = useContext(AuthContext);\n  const history = useHistory();\n\n  useEffect(() => {\n    localTime();\n  }, []);\n\n  //indentificate all actions\n  // function setup() {\n  //   document.addEventListener(\"mousemove\", resetTimer, false);\n  //   document.addEventListener(\"mousedown\", resetTimer, false);\n  //   document.addEventListener(\"keypress\", resetTimer, false);\n  //   document.addEventListener(\"DOMMouseScroll\", resetTimer, false);\n  //   document.addEventListener(\"mousewheel\", resetTimer, false);\n  //   document.addEventListener(\"touchmove\", resetTimer, false);\n  //   document.addEventListener(\"MSPointerMove\", resetTimer, false);\n  //   startTimer();\n  // }\n\n  // setup();\n\n  // function startTimer() {\n  //   // wait 2 seconds before calling goInactive\n  //   timeoutID = window.setTimeout(goInactive, 30 * 60 * 1000);\n  // }\n\n  // function resetTimer(e) {\n  //   window.clearTimeout(timeoutID);\n\n  //   goActive();\n  // }\n\n  // function goInactive() {\n  //   // do something\n  //   window.location.reload();\n  //   ClearLocalStorageExcept(\"language\");\n  //   history.push(\"/\");\n  // }\n\n  // function goActive() {\n  //   // do something\n\n  //   startTimer();\n  // }\n\n  const pathname_redirect = () => {\n    history.goBack();\n  };\n\n  const handleOpen = () => {\n    setOpenSidebar(false);\n  };\n\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n\n    setAlert(false);\n  };\n\n  const localTime = () => {\n    let date = new Date();\n    localStorage.setItem(\"localTime\", date.toLocaleDateString());\n  };\n\n  return (\n    <div className=\"principal_container\">\n      <div className=\"principal_container_sidebar\">\n        <SideBar {...{ handleOpen }} />\n      </div>\n      <div className=\"principal_container_content\">\n        <Snackbar open={alert} autoHideDuration={3000} onClose={handleClose}>\n          <Alert onClose={handleClose} severity=\"warning\">\n            Su sesión será cerrada por inactividad{\" \"}\n          </Alert>\n        </Snackbar>\n        <div className=\"navbar_container\">\n          <span className=\"navbar_title\">\n            <span className=\"navbar_menu\" onClick={() => setOpenSidebar(true)}>\n              <i className=\"fas fa-bars\"></i>\n            </span>\n            {openSidebar ? (\n              <div className=\"navbar_close_container\">\n                <span\n                  className=\"navbar_close\"\n                  onClick={() => setOpenSidebar(false)}\n                >\n                  <i className=\"fas fa-times __icon_close__\"></i>\n                </span>\n                <SideBar {...{ handleOpen }} />\n              </div>\n            ) : (\n              <></>\n            )}\n            {window.location.pathname !== \"/app/projects\" &&\n            window.location.pathname !==\n              \"/app/stepperviewmacrometer/description\" &&\n            window.location.pathname !==\n              \"/app/stepperviewmacrometer/description/macrometervariables\" &&\n            window.location.pathname !==\n              \"/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation\" &&\n            window.location.pathname !==\n              \"/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization\" ? (\n              <button\n                className=\"button_back\"\n                onClick={() =>{ pathname_redirect()  \n                   sessionStorage.removeItem(\"resultadoFinal\")\n                  sessionStorage.removeItem(\"macrometerArgos\")}}\n              >\n                <i className=\"zmdi zmdi-long-arrow-left\"></i>\n              </button>\n            ) : (\n              <></>\n            )}\n          </span>\n\n          <div className=\"navbar_btn_logout\">\n            <LanguageSelect\n              color={\"white\"}\n              fontSize={\"18px\"}\n              iconHeight={\"24px\"}\n              iconWidth={\"24px\"}\n              borderRadious={\"20px\"}\n              border={\"none\"}\n            />\n            <AccountMenu />\n          </div>\n        </div>\n        <div\n          className={`${\n            openSidebar ? \"active_menu\" : \"\"\n          } principal_container_views`}\n        >\n          <Switch>{Router_per_Components()}</Switch>\n        </div>\n      </div>\n\n      <ConfirmationDialog />\n      <ModalChangePasswordRequired />\n    </div>\n  );\n};\n\nexport default Principal;\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { Link } from \"react-router-dom\";\nimport { useQuery } from \"@apollo/client\";\nimport PersonAddIcon from '@material-ui/icons/PersonAdd';\n\nexport const AddUser = () => {\n    return (\n        <ListItem button>\n            <ListItemIcon >\n                <PersonAddIcon />\n            </ListItemIcon>\n            <ListItemText\n                primary=\"Crear Usuarios\"               \n            />\n        </ListItem>\n    )\n}\nexport default AddUser;","// react hooks\nimport React from \"react\";\n\n//React router Dom\nimport { Link } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom\";\n\n//Material UI\nimport KeyboardReturnIcon from \"@mui/icons-material/KeyboardReturn\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\n\n//Images\nimport forgot_img from \"../../assets/logo.svg\";\n\n//Apollo Hooks and Queries\nimport { useMutation } from \"@apollo/client\";\nimport { FORGOT_PASSWORD } from \"../../controllers/authenticationController.js\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport LanguageSelect from \"../../components/languageSelect/LanguageSelect\";\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst ForgotPassword = () => {\n  const [toggle, setToggle] = React.useState(\"email\");\n  const [state, setState] = React.useState(\"\");\n  const [email, setEmail] = React.useState(\"\");\n  const [error, setError] = React.useState(null);\n  const [errorEmail, setErrorEmail] = React.useState(null);\n  const [sendEmail] = useMutation(FORGOT_PASSWORD);\n  const [open, setOpen] = React.useState(false);\n  const history = useHistory();\n\n  const { t } = useTranslation();\n\n  const handleState = (e) => {\n    const { value } = e.target;\n    setState(value);\n  };\n\n  const handleStateEmail = (e) => {\n    const { value } = e.target;\n    setEmail(value);\n  };\n\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setOpen(false);\n  };\n\n  const submitEmail = () => {\n    if (toggle === \"user\" && state === \"\") {\n      setError(true);\n    } else if (toggle === \"email\" && email === \"\") {\n      setErrorEmail(true);\n    }\n\n    if (state || email) {\n      try {\n        const localDate = new Date();\n        const browserLanguage =\n          typeof Intl === \"undefined\"\n            ? navigator.languages && navigator.languages.length\n              ? navigator.languages[0]\n              : navigator.language\n            : Intl.DateTimeFormat().resolvedOptions().locale;\n        sendEmail({\n          variables: {\n            user: state,\n            email: email,\n            // Se envía la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\n            epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\n            offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\n            locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n          }\n        })\n          .then((result) => {\n            if (result.data.send_Email.data.enabled) {\n              history.push(\"/confirmation\");\n            } else {\n              setOpen(true);\n            }\n          })\n          .catch((err) => {\n            setOpen(true);\n          });\n      } catch (err) {}\n    } else {\n      console.error(\"\");\n    }\n  };\n\n  React.useEffect(() => {\n    if (state !== \"\") {\n      setError(false);\n    }\n    if (email !== \"\") {\n      setErrorEmail(false);\n    }\n  }, [state]);\n\n  return (\n    <div className=\"main_container\">\n      <div className=\"forgotpass_container\">\n        <Snackbar open={open} autoHideDuration={3000} onClose={handleClose}>\n          <Alert severity=\"error\">\n            {toggle === \"user\"\n              ? t(\"VIEW_FORGOT_PASSWORD.ERROR_USER_ALERT\")\n              : t(\"VIEW_FORGOT_PASSWORD.ERROR_EMAIL_ALERT\")}\n          </Alert>\n        </Snackbar>\n        <div className=\"forgotpass_image_container\">\n          <img className=\"forgotpass_image\" src={forgot_img} alt=\"img\" />\n        </div>\n        <div className=\"forgot_pass_title_container\">\n          <span className=\"forgot_pass_title\">\n            {t(\"VIEW_FORGOT_PASSWORD.TITLE\")}\n          </span>\n        </div>\n        <div className=\"forgot_pass_subtitle_container\">\n          <span className=\"forgot_pass_subtitle\">\n            {t(\"VIEW_FORGOT_PASSWORD.PARAGRAPH\")}\n          </span>\n        </div>\n        <div className=\"forgot_pass_input_container\">\n          <div className=\"forgot_pass_input_and_title_container\">\n            {toggle === \"user\" ? (\n              <>\n                <div className=\"forgot_pass_input_title_container\">\n                  {t(\"VIEW_FORGOT_PASSWORD.USER_INPUT_LABEL\")}\n                </div>\n                <input\n                  className=\"forgot_pass_input\"\n                  type=\"text\"\n                  value={state}\n                  placeholder={t(\"VIEW_FORGOT_PASSWORD.USER_INPUT_PLACEHOLDER\")}\n                  onChange={handleState}\n                />\n              </>\n            ) : (\n              <>\n                <div className=\"forgot_pass_input_title_container\">\n                  {t(\"VIEW_FORGOT_PASSWORD.EMAIL_INPUT_LABEL\")}\n                </div>\n                <input\n                  className=\"forgot_pass_input\"\n                  type=\"email\"\n                  value={email}\n                  placeholder={t(\n                    \"VIEW_FORGOT_PASSWORD.EMAIL_INPUT_PLACEHOLDER\"\n                  )}\n                  onChange={handleStateEmail}\n                />\n              </>\n            )}\n            {(error || errorEmail) && (\n              <div className=\"forgot_pass_span_required_input\">\n                {t(\"VIEW_FORGOT_PASSWORD.ERROR_INPUT\")}\n              </div>\n            )}\n            {toggle === \"user\" ? (\n              <h4\n                className=\"forgot_pass_toggle\"\n                onClick={() => {\n                  setToggle(\"email\");\n                  setState(\"\");\n                }}\n              >\n                {t(\"VIEW_FORGOT_PASSWORD.RECOVERY_BY_EMAIL\")}\n              </h4>\n            ) : (\n              <h4\n                className=\"forgot_pass_toggle\"\n                onClick={() => {\n                  setToggle(\"user\");\n                  setEmail(\"\");\n                }}\n              >\n                {t(\"VIEW_FORGOT_PASSWORD.RECOVERY_BY_USER\")}\n              </h4>\n            )}\n          </div>\n        </div>\n        <div className=\"forgot_pass_submit_container\">\n          <button className=\"forgot_pass_submit\" onClick={submitEmail}>\n            {t(\"VIEW_FORGOT_PASSWORD.RECOVERY_PASSWORD_BUTTON\")}\n          </button>\n        </div>\n        <div className=\"forgot_pass_back_login_container\">\n          <span className=\"forgot_pass_back_login\">\n            <span style={{ display: \"flex\", gap: \"3px\" }}>\n              <Link to=\"/\">\n                <KeyboardReturnIcon sx={{ marginTop: \"2px\" }} />\n              </Link>\n              <Link to=\"/\">{t(\"VIEW_FORGOT_PASSWORD.RETURN_SIGN_IN\")}</Link>\n            </span>\n\n            <LanguageSelect\n              color={\"black\"}\n              fontSize={\"18px\"}\n              width={\"110px\"}\n              iconHeight={\"22px\"}\n              iconWidth={\"22px\"}\n              borderRadious={\"20px\"}\n              border={\"none\"}\n            />\n          </span>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default ForgotPassword;\n","//React hooks\nimport React, { useEffect, useState } from \"react\";\n\n//React router dom elements\nimport { useParams } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom\";\n\n//Material UI\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\n\n//Compoments\nimport { Validations } from \"../../../components/userManagement/editUsers/chagesPassword/style/changesPasswordForm.style\";\n\n//helper functions\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\n\n//Images\nimport reset_password from \"../../../assets/logo.svg\";\n\n//Apollo hooks and Queries\nimport { useMutation } from \"@apollo/client\";\nimport { RESET_PASSWORD } from \"../../../controllers/authenticationController\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction Alert(props) {\n  return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nexport default function ResetPassword() {\n  const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n  const { t } = useTranslation();\n  const { token } = useParams();\n  const [passwords, setPasswords] = useState({ pass: \"\", confirmPass: \"\" });\n  const [open, setOpen] = useState(false);\n  const [openReponseAlert, setOpenResponseAlert] = useState(false);\n  const [response, setResponse] = useState(null);\n  const [error, setError] = useState(null);\n  const [error2, setError2] = useState(null);\n  const [create_Reg_Password] = useMutation(RESET_PASSWORD);\n  const history = useHistory();\n  const [validations, setValidations] = useState({\n    length: false,\n    uppercase: false,\n    number: false,\n    specialChar: false,\n    equalPasswords: false,\n  });\n\n  const handleClose = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setOpen(false);\n  };\n\n  const handleCloseResponse = (event, reason) => {\n    if (reason === \"clickaway\") {\n      return;\n    }\n    setOpen(false);\n  };\n\n  const handleChangePass = (e) => {\n    const { name, value } = e.target;\n    const updatedValues = { ...passwords, [name]: value };\n    const updatedValidations = validatePassword(updatedValues);\n    setPasswords(updatedValues);\n    setValidations(updatedValidations);\n  };\n\n  const validatePassword = (values) => {\n    return {\n      length: values.pass.length >= 8,\n      uppercase: /[A-Z]/.test(values.pass),\n      number: /[0-9]/.test(values.pass),\n      specialChar: /[!@#$%^&*()_\\-+=\\[{\\]};:'\",<.>/?\\\\|~`]/.test(values.pass),\n      equalPasswords:\n        values.pass !== \"\" &&\n        values.confirmPassword !== \"\" &&\n        values.pass === values.confirmPass,\n    };\n  };\n\n  const validationsOptions = [\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM2\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM3\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM4\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM5\"),\n    t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM6\"),\n  ];\n\n  const colorSpan = (position) => {\n    const error = \"#EDBABA\";\n    const success = \"#B2E5B7\";\n    const normal = \"#847F7F\";\n    if (passwords?.pass !== undefined) {\n      switch (position) {\n        case 0:\n          return validations.length ? success : error;\n        case 1:\n          return validations.uppercase ? success : error;\n        case 2:\n          return validations.number ? success : error;\n        case 3:\n          return validations.specialChar ? success : error;\n        case 4:\n          return validations.equalPasswords ? success : error;\n      }\n    } else {\n      return normal;\n    }\n  };\n\n  function passwordRequirements(objeto) {\n    for (const propiedad in objeto) {\n      if (objeto.hasOwnProperty(propiedad) && objeto[propiedad] !== true) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  const handleSubmit = async () => {\n    const { pass, confirmPass } = passwords;\n    const newPassword = await encryptData(pass, password);\n    const newPasswordConfirm = await encryptData(confirmPass, password);\n    if (passwordRequirements(validations)) {\n      try {\n        const localDate = new Date();\n        const browserLanguage =\n          typeof Intl === \"undefined\"\n            ? navigator.languages && navigator.languages.length\n              ? navigator.languages[0]\n              : navigator.language\n            : Intl.DateTimeFormat().resolvedOptions().locale;\n        create_Reg_Password({\n          variables: {\n            token: token,\n            password: newPassword,\n            confirmPassword: newPasswordConfirm,\n            // Se envía la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\n            epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\n            offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\n            locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n          },\n        })\n          .then((result) => {\n            if (\n              result?.data?.create_Reg_Password?.message ===\n                \"Password updated\" &&\n              result?.data?.create_Reg_Password?.success\n            ) {\n              history.push(\"/password_updated\");\n            } else {\n              setResponse(\"error\");\n              setOpenResponseAlert(true);\n            }\n          })\n          .catch((err) => {\n            if (err) {\n              setResponse(\"error\");\n              setOpenResponseAlert(true);\n            }\n          });\n      } catch (err) {}\n    } else {\n      console.error(\"\");\n    }\n  };\n\n  React.useEffect(() => {\n    const { password, new_password } = passwords;\n    if (password !== \"\") setError(false);\n    if (new_password !== \"\") setError2(false);\n  }, [passwords]);\n\n  return (\n    <div className=\"resetPassword_container\">\n      <Snackbar\n        open={open && !error && !error2}\n        autoHideDuration={3000}\n        onClose={handleClose}\n      >\n        <Alert severity=\"error\">\n          {t(\"VIEW_RESET_PASSWORD.PASSWORDS_DONOT_MATCH\")}\n        </Alert>\n      </Snackbar>\n      <Snackbar\n        open={openReponseAlert}\n        autoHideDuration={3000}\n        onClose={handleCloseResponse}\n      >\n        <Alert severity={response}>\n          {t(\"VIEW_RESET_PASSWORD.SOMTHING_WENT_WRONG\")}\n        </Alert>\n      </Snackbar>\n      <div className=\"resetPassword_hero\">\n        <img className=\"resetPassword_image\" src={reset_password} alt=\"img\" />\n      </div>\n      <div\n        style={{\n          width: \"100%\",\n          placeItems: \"center\",\n          marginTop: \"-20px\",\n          marginBottom: \"10px\",\n        }}\n      >\n        {validationsOptions?.map((item, key) => (\n          <Validations background={colorSpan(key)}>\n            <div style={{ width: \"300px\" }}>\n              <span\n                style={{ justifyContent: \"space-between\", marginRight: \"10px\" }}\n              >\n                •\n              </span>\n              {item}\n            </div>\n          </Validations>\n        ))}\n      </div>\n      <div className=\"resetPassword_input_container\">\n        <div className=\"resetPassword_input_and_title_container\">\n          <div className=\"resetPassword_input_title_container\">\n            {t(\"VIEW_RESET_PASSWORD.NEW_PASSWORD_INPUT\")}\n          </div>\n          <input\n            className=\"resetPassword_input\"\n            type=\"password\"\n            placeholder={t(\"VIEW_RESET_PASSWORD.NEW_PASSWORD_INPUT\")}\n            name=\"pass\"\n            onChange={handleChangePass}\n          />\n          {error && (\n            <div className=\"resetPassword_span_required_input\">\n              {t(\"VIEW_RESET_PASSWORD.REQUIRED_FIELD\")}\n            </div>\n          )}\n        </div>\n      </div>\n      <div className=\"resetPassword_input_container\">\n        <div className=\"resetPassword_input_and_title_container\">\n          <div className=\"resetPassword_input_title_container\">\n            {t(\"VIEW_RESET_PASSWORD.REPEAT_NEW_PASSWORD\")}\n          </div>\n          <input\n            className=\"resetPassword_input\"\n            type=\"password\"\n            name=\"confirmPass\"\n            placeholder={t(\"VIEW_RESET_PASSWORD.REPEAT_NEW_PASSWORD\")}\n            onChange={handleChangePass}\n          />\n          {error2 && (\n            <div className=\"resetPassword_span_required_input\">\n              {t(\"VIEW_RESET_PASSWORD.REQUIRED_FIELD\")}\n            </div>\n          )}\n        </div>\n      </div>\n      <div className=\"resetPassword_submit_container\">\n        <button className=\"resetPassword_submit\" onClick={handleSubmit}>\n          {t(\"VIEW_RESET_PASSWORD.SAVE\")}\n        </button>\n      </div>\n    </div>\n  );\n}\n","import React from \"react\";\n\nexport default function ConfirmationIcon({ src }) {\n  return (\n    <lottie-player\n      style={{\n        width: 100,\n      }}\n      className='_logo'\n      src={src}\n      background='transparent'\n      speed='1'\n      loop\n      autoplay\n    ></lottie-player>\n  );\n}\n","import Login from \"../../views/login/Login.jsx\";\nimport Dashboard from \"../../views/private/dashboard/Principal.jsx\";\nimport Projects from \"../../views/private/projects/Projects.jsx\";\nimport Areas from \"../../views/private/areas/Areas.jsx\";\nimport Controllers from \"../../views/private/controllers/Controllers.jsx\";\nimport Occupation from \"../../components/highcharts/Occupation.jsx\";\nimport Devices from \"../../views/private/devices/Devices.jsx\";\nimport Measurers from \"../../views/private/measurer/Measurers.jsx\";\nimport AddUser from \"../../components/userManagement/addUser.js\";\nimport ForgotPassword from \"../../views/forgotPassword/forgotPassword.jsx\";\nimport ResetPassword from \"../../views/private/resetPassword/ResetPassword.jsx\";\nimport Confirmation from \"../../views/private/resetPassword/Confirmation\";\n/* import ModifyUser from \"../../components/userManagement/modifyUsers.js\" */\n//import UsersManagements from \"../../views/private/userManagement/usersManagements\";\n//import ProjectManagement from \"../../views/private/projectsManagement/projectManagement\";\nimport RoleManager from \"../../views/private/roleManager/roleManager.jsx\";\nimport PasswordUpdated from \"../../views/private/resetPassword/PasswordUpdated.jsx\";\n//import RoleManager from \"../../views/private/roleManager/roleManager.jsx\";\n\nexport const views = {\n  Login,\n  Dashboard,\n  Projects,\n  Areas,\n  Occupation,\n  Controllers,\n  Devices,\n  Measurers,\n  AddUser,\n  ForgotPassword,\n  ResetPassword,\n  Confirmation,\n  PasswordUpdated,\n  /*   ModifyUser, */\n  // UsersManagements,\n  // ProjectManagement,\n  //RoleManager,\n  /*   ModifyUser, */\n  // UsersManagements,\n  // ProjectManagement,\n  // RoleManager\n};\n","import React from \"react\";\nimport ConfirmationIcon from \"../../../components/loading/ConfirmationIcon\";\nimport { Link } from \"react-router-dom\";\n\nexport default function Confirmation() {\n  return (\n    <div className='confirmation_container'>\n      <div className='confirmation_icon_text'>\n        <span>\n          <ConfirmationIcon src='https://assets7.lottiefiles.com/packages/lf20_b8am0qif.json' />\n        </span>\n      </div>\n      <div className='confirmation_icon_text size_text'>\n        <span>Haz recibido un email con instrucciones para recuperar tu contraseña.</span>\n      </div>\n      <div className='confirmation_back_login_container'>\n        <span className='confirmation_back_login'>\n          <Link to='/'>🡠 Regresar al LogIn</Link>\n        </span>\n      </div>\n    </div>\n  );\n}\n","// React hooks\nimport React from \"react\";\n\n// components\nimport ConfirmationIcon from \"../../../components/loading/ConfirmationIcon\";\n\n//router Dom components\nimport { Link } from \"react-router-dom\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport default function Confirmation() {\n  const { t } = useTranslation();\n  return (\n    <div className=\"confirmation_container\">\n      <div className=\"confirmation_icon_text\">\n        <span>\n          <ConfirmationIcon src=\"https://assets7.lottiefiles.com/packages/lf20_5gstlg6x.json\" />\n        </span>\n      </div>\n      <div className=\"confirmation_icon_text size_text\">\n        <span>\n          {t(\n            \"VIEW_PASSWORD_UPDATED_SUCCESSFULLY.PASSWORD_UPDATED_SUCCESSFULLY\"\n          )}\n        </span>\n      </div>\n      <div className=\"confirmation_back_login_container\">\n        <span className=\"confirmation_back_login\">\n          <Link to=\"/\">\n            {t(\"VIEW_PASSWORD_UPDATED_SUCCESSFULLY.RETURN_TO_LOGIN\")}\n          </Link>\n        </span>\n      </div>\n    </div>\n  );\n}\n","import React from 'react';\nimport { BrowserRouter, Route, Switch, Redirect } from 'react-router-dom';\nimport { views } from './views';\n\n//paths\nimport {\n  LOGIN,\n  DASHBOARD,\n  PROJECT,\n  FORGOT,\n  RESET_PASSWORD,\n  SEND_CONFIRMATION_EMAIL,\n  PASSWORD_UPDATED,\n} from '../../constants/paths';\n\nconst Router_Per_View = () => {\n  return (\n    <BrowserRouter>\n      <Switch>\n        <Route\n          path={LOGIN}\n          render={(props) =>\n            !localStorage.getItem('token') ? (\n              <views.Login {...props} />\n            ) : (\n              <Redirect\n                from=\"/app/projects\"\n                to={PROJECT}\n              />\n            )\n          }\n        />\n        <Route\n          path={DASHBOARD}\n          render={(props) =>\n            localStorage.getItem('token') ? (\n              <views.Dashboard {...props} />\n            ) : (\n              <Redirect\n                from=\"/\"\n                to={LOGIN}\n              />\n            )\n          }\n        />\n        <Route\n          path={FORGOT}\n          render={(props) =>\n            !localStorage.getItem('token') ? (\n              <views.ForgotPassword {...props} />\n            ) : (\n              <Redirect\n                from=\"/\"\n                to={LOGIN}\n              />\n            )\n          }\n        />\n        <Route\n          path={SEND_CONFIRMATION_EMAIL}\n          render={(props) =>\n            !localStorage.getItem('token') ? (\n              <views.Confirmation {...props} />\n            ) : (\n              <Redirect\n                from=\"/\"\n                to={LOGIN}\n              />\n            )\n          }\n        />\n        <Route\n          path={PASSWORD_UPDATED}\n          render={(props) =>\n            !localStorage.getItem('token') ? (\n              <views.PasswordUpdated {...props} />\n            ) : (\n              <Redirect\n                from=\"/\"\n                to={LOGIN}\n              />\n            )\n          }\n        />\n        <Route\n          path={RESET_PASSWORD}\n          render={(props) =>\n            !localStorage.getItem('token') ? (\n              <views.ResetPassword {...props} />\n            ) : (\n              <Redirect\n                from=\"/\"\n                to={LOGIN}\n              />\n            )\n          }\n        />\n        <Redirect\n          from=\"/\"\n          to={LOGIN}\n        />\n      </Switch>\n    </BrowserRouter>\n  );\n};\n\nexport default Router_Per_View;\n","import './App.css';\nimport Router_Per_View from '../../config/routing/router_per_view';\nconst App = () => {\n  return <Router_Per_View />;\n};\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./components/principal/App\";\nimport {\n  ApolloClient,\n  InMemoryCache,\n  ApolloProvider,\n  concat,\n} from \"@apollo/client\";\nimport Providers from \"./context\";\nimport { AbilityContext } from \"./abilities/Abilities\";\nimport { setContext } from \"@apollo/client/link/context\";\nimport { createUploadLink } from \"apollo-upload-client\";\n//i18n multilenguage\nimport i18next from \"i18next\";\nimport { Translation, initReactI18next } from \"react-i18next\";\nimport en from \"./i18n/en.json\";\nimport es from \"./i18n/es.json\";\n\n// Styles\nimport \"./styles/App.scss\";\n\ni18next.use(initReactI18next).init({\n  lng:\n    localStorage.getItem(\"language\") !== undefined &&\n    localStorage.getItem(\"language\") !== null\n      ? localStorage.getItem(\"language\")\n      : navigator.language.split(\"-\")[0],\n  lng:\n    localStorage.getItem(\"language\") !== undefined &&\n    localStorage.getItem(\"language\") !== null\n      ? localStorage.getItem(\"language\")\n      : navigator.language.split(\"-\")[0],\n  interpolation: {\n    escapeValue: false,\n  },\n  resources: {\n    en: {\n      translation: en,\n    },\n    es: {\n      translation: es,\n    },\n  },\n});\nconst authLink = setContext(async (_, { headers }) => {\n  // get the authentication token from local storage if it exists\n  const token = localStorage.getItem(\"token\");\n  // return the headers to the context so httpLink can read them\n  return {\n    headers: {\n      ...headers,\n      authorization: token ? token : \"\",\n    },\n  };\n});\nconst {\n  REACT_APP_URI_DEVELOP,\n  REACT_APP_URI_PRODUCTION,\n  REACT_APP_URI_STAGING,\n  REACT_APP_URI_PRODUCTION_NEW,\n} = process.env;\nconst MICROSERVICE_MEASURER = process.env.REACT_APP_URI_MICROSERVICE_MEASURER;\n//header to upload files\n//replace the link\nconst UploadClient = createUploadLink({\n  uri: `${REACT_APP_URI_PRODUCTION}`,\n  // uri: `${REACT_APP_URI_DEVELOP}`,\n  // uri: `${REACT_APP_URI_STAGING}`,\n  // uri: \"http://10.0.5.189:3301/graphql\",\n});\n//client created\nglobal.client = new ApolloClient({\n  link: concat(authLink, UploadClient),\n  cache: new InMemoryCache(),\n});\n\nexport const secondClient = new ApolloClient({\n  uri: MICROSERVICE_MEASURER,\n\n  cache: new InMemoryCache(),\n});\n\nReactDOM.render(\n  <React.StrictMode>\n    <ApolloProvider client={global.client}>\n      <Providers />\n    </ApolloProvider>\n  </React.StrictMode>,\n  document.getElementById(\"root\") || document.createElement(\"div\")\n);\n","\n\nimport React, { createContext, useState, useEffect } from \"react\";\nimport { addDays } from \"date-fns\";\nimport permissions from \"./schema/permission.json\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_USER_ROLE } from \"../controllers/usersControllers\";\n\nexport const AuthContext = createContext({});\n\nexport const AuthProvider = ({ children }) => {\n  const permissionsDatos = { permissions };\n  const PermissionsConfig = {\n    config: false,\n    proy: false,\n    GesUser: false,\n    GesUserVer: false,\n    GesUserCrear: false,\n    GesUserEditar: false,\n    GesUserDes: false,\n    GesRol: false,\n    GesRolVer: false,\n    GesRolCrear: false,\n    GesRolEditar: false,\n    GesRolDes: false,\n    GesProject: false,\n    GesProjectVer: false,\n    GesProjectCrear: false,\n    GesProjectEdit: false,\n    GesProjectDes: false,\n    GesDevices: false,\n    GesDevicesVer: false,\n    Med: false,\n    MedRdf: false,\n    MedRpfVer: false,\n    MedRpfDes: false,\n    MedRmg: false,\n    MedRmgVer: false,\n    MedRmgDes: false,\n    Mac: false,\n    MedMacVer: false,\n    Area: false,\n    OptionAreas: false,\n    AreaCreate: false,\n    AreaEdit: false,\n    AreaVer: false,\n    AreaRoa: false,\n    AreaRoaVer: false,\n    AreaRoaDes: false,\n    AreaRpta: false,\n    AreaRptaVer: false,\n    AreaDisp: false,\n    AreaDispVer: false,\n    AreaDispMan: false,\n    AreaDispEdit: false,\n    AreaRpog: false,\n    AreaRpogVer: false,\n    AreaRpogDes: false,\n    AreaMed: false,\n    AreaMedVer: false,\n    AreaRpdf: false,\n    AreaRpdfver: false,\n    Ctl: false,\n    CtlVer: false,\n    CtlCreateVirtual: false,\n    CtlEdit: false,\n  };\n\n  const { data, loading, error, refetch } = useQuery(GET_USER_ROLE, {\n    fetchPolicy: \"cache-and-network\",\n    variables: {\n      id: parseInt(localStorage.getItem(\"np\")),\n    },\n  });\n\n  //userLenguaje\n  const [userLanguaje, setUserLanguage] = useState();\n\n  //Roles access and permits\n  const [permissionsRole, setPermissionsRoles] = useState(PermissionsConfig);\n  const [newPermissionsRole, setNewPermissionsRole] = useState(permissionsRole);\n  const [permissionsRoleUser, setPermissionsRoleUser] = useState();\n\n  //components\n  const [inputField, setInputField] = useState();\n  const [dateMUI, setDateMUI] = useState(Date.parse(new Date()));\n\n  useEffect(() => {\n    if (data) {\n      setPermissionsRoleUser(data?.getAllUsers[0]?.Role.components[0]);\n    }\n    setPermissionsRoleUser(data?.getAllUsers[0]?.Role.components[0]);\n  }, [data]);\n\n  useEffect(() => {\n    // comprueba si ya existe un idioma en el localStorage\n    const storedLanguage = localStorage.getItem(\"language\");\n\n    if (storedLanguage) {\n      setUserLanguage(storedLanguage);\n    } else {\n      // Si no hay un idioma almacenado, utiliza la lógica del navegador\n      const languageCode = navigator.language.split(\"-\")[0];\n\n      if (languageCode === \"es\") {\n        setUserLanguage(languageCode);\n        localStorage.setItem(\"language\", languageCode);\n      } else {\n        setUserLanguage(\"en\");\n        localStorage.setItem(\"language\", \"en\");\n      }\n    }\n  }, []);\n  // Login\n  const [user, setUser] = useState(\"\");\n  const [np, setNp] = useState();\n\n  // Areas\n  const [areas, setAreas] = useState([]);\n  const [area, setArea] = useState();\n  const [idArea, setIdArea] = useState();\n  const [roomId, setRoomId] = useState(\"\");\n  const [occupationAreaName, setOccupationAreaName] = useState(\"\");\n\n  //Pdfs\n  const [graphic, setGraphic] = useState(\"\");\n  const [pie, setPie] = useState(\"\");\n  const [roomPdf, setRoomPdf] = useState({ rooms: [] });\n  const [startTimes, setStartTimes] = useState(\"\");\n  const [finishTimes, setFinishTimes] = useState(\"\");\n  const [datePrint, setDatePrint] = useState(\"\");\n  const [loadingPdf, setLoadingPdf] = useState(false);\n  const [downloadGeneralOcupation, setDownloadGeneralOcupation] = useState();\n\n  //Modal\n  const [openModal, setOpenModal] = useState(false);\n  const [openModalOcup, setOpenModalOcup] = useState(false);\n  const [openCreateUserModal, setOpenCreateUserModal] = useState(false);\n  const [openEditUserModal, setOpenEditUserModal] = useState(false);\n  const [openChangeUserStatusModal, setOpenChangeUserStatusModal] =\n    useState(false);\n  const [openChangeProjectStatusModal, setOpenChangeProjectStatusModal] =\n    useState(false);\n\n  //Alerts Form\n  const [alertEdit, setAlertEdit] = useState(false);\n  const [successfulAlert, setSuccessfulAlert] = useState(false);\n\n  //Message Register\n  const [openMessage, setOpenMessage] = useState(false);\n  const [openMessage2, setOpenMessage2] = useState(false);\n\n  // Devices\n  const [infoMessage, setInfoMessage] = useState(false);\n  const [successMessage, setSuccessMessage] = useState(false);\n  const [errorMessage, setErrorMessage] = useState(false);\n  const [warningMessage, setWarningMessage] = useState(false);\n  const [deviceFailsCount, setDeficeFailsCount] = useState(0);\n\n  //// Devices management view\n  const [selectedDevice, setSelectedDevice] = useState(0);\n  const [selectedProject, setSelectedProject] = useState(null);\n  const [projectIdStepper, setProjectIdStepper] = useState(null);\n  const [openNewMetersModal, setOpenNewMetersModal] = useState(false);\n  const [openCancelInstallation, setOpenCancelInstallation] = useState(false);\n  const [validFirstVariables, setValidFirstVariables] = useState(false);\n  const [validSecondVariables, setValidSecondVariables] = useState(false);\n  const [confirmMettersExists, setConfirmMettersExists] = useState(0);\n  ////VRF Management\n  const [tokenvrf, setTokenvrf] = useState();\n  useEffect(() => {\n    const tokenVrf = localStorage.getItem(\"tokenvrf\");\n    if (tokenVrf !== undefined && tokenVrf !== null && tokenVrf !== \"\") {\n      setTokenvrf(tokenVrf);\n    }\n  }, []);\n  //Projects\n  const [projects, setProjects] = useState([]);\n  const [project, setProject] = useState([]);\n  const [stateId, setStateId] = useState(0);\n  const [page, setPage] = useState(1);\n  const [variablePage, setVariablePage] = useState(0);\n  const [controllerId, setControllerId] = useState(null);\n  const [projectid, setProjectID] = useState();\n  const [modalCreateOrEditProject, setModalCreateorEditProject] =\n    useState(false);\n\n  //Const report\n  const [measurer_data, setMeasurerData] = useState([]);\n  const [event, setEvent] = useState(0); // socket\n\n  // User and Roles Status\n  const [createRole, setCreateRole] = useState(false);\n  const [editRole, setEditRole] = useState(false);\n  const [enabledOrDisabledRole, setEnabledOrDisabledRole] = useState(false);\n  const [roles, setRoles] = useState([]);\n  const [nameRol, setNameRol] = React.useState(\"\");\n  const [createOrEditRole, setCreateOrEditRole] = useState(\"\");\n  const [roleId, setRoleId] = useState();\n  const [roleState, setRoleState] = useState();\n  const [enabledOrDisabledUser, setEnabledOrDisabledUser] = useState(true);\n\n  //State of the component CalendarCustom\n  const [dateCalendar, setDateCalendar] = useState(new Date());\n  const [isOpenCalendarCustom, setIsOpenCalendarCustom] = useState(false);\n  const [dateReport, setDateReport] = useState([\n    {\n      startDate: new Date(),\n      endDate: addDays(new Date(), 0),\n      key: \"selection\",\n    },\n  ]);\n  const [dateCalendarTemp, setDateCalendarTemp] = useState(new Date());\n  const [dateNextTemp, setDateNextTemp] = useState();\n  const [dateBackTemp, setDateBackTemp] = useState();\n\n  //DoorLock\n  const [codesGlobal, setCodesGlobal] = useState([]);\n  const [nameUser, setNameUser] = useState(\"\");\n  const [lastNameUser, setlastNameUser] = useState(\"\");\n  const [email, setEmail] = useState(\"\");\n  const [phone, setPhone] = useState(\"\");\n  const [numberID, setNumberID] = useState(\"\");\n  const [profilePicture, setprofilePicture] = useState(\"\");\n  const [userLogin, setUserLogin] = useState(\"\");\n  const [roll, setRoll] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n  const [passwordTwo, setPasswordTwo] = useState(\"\");\n  const [users, setUsers] = useState([]);\n\n  //Measurer\n  const [serial, setSerial] = useState(\"\");\n  const [zoneP, setZoneP] = useState();\n  const [dateMacrometers, setDateMacrometers] = useState(0);\n  const [macrometer, setMacrometer] = useState({});\n  const [dataMacrometers, setDataMacrometer] = useState();\n  const [dataMacrometerVariables, setDataMacrometerVariables] = useState();\n  const [dateMacrometersTwo, setDateMacrometersTwo] = useState(0);\n  const [valueDatepicker, setValueDatepicker] = useState(\n    Date.parse(new Date())\n  );\n  const [seeGraphic, setSeeGraphic] = useState(true);\n  const [datePerDay, setDatePerDay] = useState(new Date());\n\n  //Datecustom prev and next\n\n  const [rangeTable, setRangeTable] = useState([\n    {\n      startDate: new Date(),\n      endDate: addDays(new Date(), 0),\n      key: \"selection\",\n    },\n  ]);\n  const [openDateCustom, setOpenDateCustom] = useState(false);\n  const [activeNextBack, setactiveNextBack] = useState(false);\n\n  //Bathroom\n  const [stateBathroom, setStateBathroom] = useState({\n    26128: null,\n    26127: null,\n    26126: null,\n  });\n\n  // Global DatePicker\n  const compare_date = new Date();\n  const day_compare = compare_date?.toString()?.substring(0, 16);\n  const day_before = new Date(day_compare).getTime() - 86400000;\n  const [rangeDatePicker, setRangeDatePicker] = useState([\n    {\n      startDate: new Date(day_before),\n      endDate: new Date(day_before),\n      key: \"selection\",\n    },\n  ]); // type: range\n\n  const [rangeDatePickerToday, setRangeDatePickerToday] = useState([\n    {\n      startDate: new Date(day_before),\n      endDate: new Date(day_before),\n      key: \"selection\",\n    },\n  ]);\n  const [calendarDatePickerToday, setCalendarDatePickerToday] = useState(\n    new Date()\n  );\n\n  // ReactDateRange\n  const [globalReactDateRange, setGlobalReactDateRange] = useState([\n    {\n      startDate: new Date(),\n      endDate: new Date(),\n      key: \"selection\",\n    },\n  ]);\n\n  const [globalCalendarDay, setGlobalCalendarDay] = useState(new Date());\n  const [calendarDatePicker, setCalendarDatePicker] = useState(new Date()); // type: calendar\n  const [nameHeaderOcupation, setNameHeaderOcupation] = useState(\"\");\n  const [idHeaderOcupation, setIdHeaderOcupation] = useState(null);\n\n  const [socketConection, setSocketConection] = useState(false);\n\n  return (\n    <AuthContext.Provider\n      value={{\n        user,\n        setUser,\n        np,\n        setNp,\n        serial,\n        setSerial,\n        areas,\n        setAreas,\n        area,\n        setArea,\n        idArea,\n        setIdArea,\n        roomId,\n        setRoomId,\n        infoMessage,\n        setInfoMessage,\n        successMessage,\n        setSuccessMessage,\n        errorMessage,\n        setErrorMessage,\n        projects,\n        setProjects,\n        dateReport,\n        setDateReport,\n        event,\n        setEvent,\n        measurer_data,\n        setMeasurerData,\n        openDateCustom,\n        setOpenDateCustom,\n        nameUser,\n        setNameUser,\n        lastNameUser,\n        setlastNameUser,\n        email,\n        setEmail,\n        phone,\n        setPhone,\n        numberID,\n        setNumberID,\n        profilePicture,\n        setprofilePicture,\n        userLogin,\n        setUserLogin,\n        roll,\n        setRoll,\n        password,\n        setPassword,\n        passwordTwo,\n        setPasswordTwo,\n        users,\n        setUsers,\n        roles,\n        setRoles,\n        activeNextBack,\n        setactiveNextBack,\n        rangeTable,\n        setRangeTable,\n        dateCalendar,\n        setDateCalendar,\n        isOpenCalendarCustom,\n        setIsOpenCalendarCustom,\n        downloadGeneralOcupation,\n        setDownloadGeneralOcupation,\n        graphic,\n        setGraphic,\n        pie,\n        setPie,\n        roomPdf,\n        setRoomPdf,\n        startTimes,\n        setStartTimes,\n        finishTimes,\n        setFinishTimes,\n        datePrint,\n        setDatePrint,\n        openModal,\n        setOpenModal,\n        loadingPdf,\n        setLoadingPdf,\n        project,\n        setProject,\n        page,\n        setPage,\n        variablePage,\n        setVariablePage,\n        openModalOcup,\n        setOpenModalOcup,\n        controllerId,\n        setControllerId,\n        deviceFailsCount,\n        setDeficeFailsCount,\n        stateId,\n        setStateId,\n        openMessage,\n        setOpenMessage,\n        openMessage2,\n        setOpenMessage2,\n        codesGlobal,\n        setCodesGlobal,\n        zoneP,\n        setZoneP,\n        dateMacrometers,\n        setDateMacrometers,\n        dateMacrometersTwo,\n        setDateMacrometersTwo,\n        valueDatepicker,\n        setValueDatepicker,\n        permissionsRole,\n        setPermissionsRoles,\n        createOrEditRole,\n        setCreateOrEditRole,\n        projectid,\n        setProjectID,\n        seeGraphic,\n        setSeeGraphic,\n        nameRol,\n        setNameRol,\n        createRole,\n        setCreateRole,\n        editRole,\n        setEditRole,\n        enabledOrDisabledRole,\n        setEnabledOrDisabledRole,\n        roleId,\n        setRoleId,\n        roleState,\n        setRoleState,\n        PermissionsConfig,\n        modalCreateOrEditProject,\n        setModalCreateorEditProject,\n        newPermissionsRole,\n        setNewPermissionsRole,\n        stateBathroom,\n        setStateBathroom,\n        permissionsRoleUser,\n        alertEdit,\n        setAlertEdit,\n        successfulAlert,\n        setSuccessfulAlert,\n        openCreateUserModal,\n        setOpenCreateUserModal,\n        openEditUserModal,\n        setOpenEditUserModal,\n        enabledOrDisabledUser,\n        setEnabledOrDisabledUser,\n        openChangeUserStatusModal,\n        setOpenChangeUserStatusModal,\n        openChangeProjectStatusModal,\n        setOpenChangeProjectStatusModal,\n        selectedDevice,\n        setSelectedDevice,\n        selectedProject,\n        setSelectedProject,\n        projectIdStepper,\n        setProjectIdStepper,\n        inputField,\n        setInputField,\n        setDateCalendarTemp,\n        dateCalendarTemp,\n        dateNextTemp,\n        setDateNextTemp,\n        dateBackTemp,\n        setDateBackTemp,\n        datePerDay,\n        setDatePerDay,\n        openNewMetersModal,\n        setOpenNewMetersModal,\n        validFirstVariables,\n        setValidFirstVariables,\n        validSecondVariables,\n        setValidSecondVariables,\n        openCancelInstallation,\n        setOpenCancelInstallation,\n        confirmMettersExists,\n        setConfirmMettersExists,\n        dateMUI,\n        setDateMUI,\n        rangeDatePicker,\n        setRangeDatePicker,\n        calendarDatePicker,\n        setCalendarDatePicker,\n        occupationAreaName,\n        setOccupationAreaName,\n        socketConection,\n        setSocketConection,\n        macrometer,\n        setMacrometer,\n        dataMacrometers,\n        setDataMacrometer,\n        setMacrometer,\n        dataMacrometerVariables,\n        setDataMacrometerVariables,\n        nameHeaderOcupation,\n        setNameHeaderOcupation,\n        idHeaderOcupation,\n        setIdHeaderOcupation,\n        tokenvrf,\n        setTokenvrf,\n        rangeDatePickerToday,\n        setRangeDatePickerToday,\n        calendarDatePickerToday,\n        setCalendarDatePickerToday,\n        warningMessage,\n        setWarningMessage,\n        globalReactDateRange,\n        setGlobalReactDateRange,\n        globalCalendarDay,\n        setGlobalCalendarDay,\n      }}\n    >\n      {children}\n    </AuthContext.Provider>\n  );\n};\n","import React from \"react\";\nimport { AuthProvider } from \"./AuthProvider\";\nimport App from \"../components/principal/App\";\nexport default function Providers() {\n  return (\n    <AuthProvider>\n      <App />\n    </AuthProvider>\n  );\n}\n","import { createContextualCan } from \"@casl/react\";\nimport React from \"react\";\n\nexport const AbilityContext = React.createContext();\nexport const Can = createContextualCan(AbilityContext.Consumer);\n","import gql from \"graphql-tag\";\n\nexport const CREATE_USER = gql`\n  mutation CreateUser(\n    $name: String!\n    $last_name: String!\n    $identification_number: String\n    $email: String!\n    $cellPhone: String\n    $countryCode: String\n    $user: String!\n    $password: String!\n    $img: String\n    $RoleId: Int!\n    $ProjectId: [Int!]\n  ) {\n    CreateUser(\n      name: $name\n      last_name: $last_name\n      identification_number: $identification_number\n      email: $email\n      cellPhone: $cellPhone\n      countryCode: $countryCode\n      user: $user\n      password: $password\n      img: $img\n      RoleId: $RoleId\n      ProjectId: $ProjectId\n    ) {\n      id\n      name\n      last_name\n      identification_number\n      email\n      cellPhone\n      countryCode\n      img\n    }\n  }\n`;\n\nexport const GET_ROLE = gql`\n  query getRole {\n    getAllProjects\n    getAllRoles {\n      id\n      name\n    }\n  }\n`;\n\nexport const GET_USER_ROLE = gql`\n  query ($id: Int) {\n    getAllUsers(id: $id) {\n      Role {\n        id\n        name\n        components\n      }\n      Project {\n        id\n        name\n      }\n    }\n    getAllRoles {\n      id\n      name\n    }\n  }\n`;\nexport const GET_ALL_USER = gql`\n  query getUsers {\n    getAllUsers {\n      id\n      name\n      last_name\n      user\n      cellPhone\n      countryCode\n      Project {\n        name\n        id\n      }\n      Role {\n        id\n        name\n        components\n      }\n      identification_number\n      email\n      enabled\n    }\n  }\n`;\n\nexport const UPDATE_ENABLED_USER = gql`\n  mutation UpdateEnabledUser($id: Int!, $enabled: Boolean) {\n    UpdateEnabledUser(id: $id, enabled: $enabled) {\n      id\n    }\n  }\n`;\n\nexport const UPDATE_MANY_USERS = gql`\n  mutation UpdateManyUsers($input: [ManyUsers]) {\n    UpdateManyUsers(input: $input)\n  }\n`;\n\nexport const EDIT_USER = gql`\n  query ($id: Int!) {\n    getAllUsers(id: $id) {\n      id\n      name\n      last_name\n      identification_number\n      cellPhone\n      countryCode\n      email\n      user\n      enabled\n      Role {\n        id\n        name\n      }\n      Project {\n        name\n        id\n      }\n    }\n    getAllProjects\n    getAllProjectsByUser\n    getAllRoles {\n      id\n      name\n    }\n  }\n`;\n\nexport const UPDATE_USER = gql`\n  mutation UpdateUser(\n    $id: Int!\n    $name: String\n    $last_name: String\n    $email: String\n    $cellPhone: String\n    $countryCode: String\n    $user: String\n    $RoleId: Int\n    $ProjectId: [Int]\n    $currentPassword: String\n    $newPassword: String\n    $confirmPassword: String,\n    $epochTime: Float,\n    $offset: Int,\n    $locale: String\n  ) {\n    UpdateUser(\n      id: $id\n      name: $name\n      last_name: $last_name\n      email: $email\n      cellPhone: $cellPhone\n      countryCode: $countryCode\n      user: $user\n      RoleId: $RoleId\n      ProjectId: $ProjectId\n      currentPassword: $currentPassword\n      newPassword: $newPassword\n      confirmPassword: $confirmPassword,\n      epochTime: $epochTime,\n      offset: $offset,\n      locale: $locale\n    ) {\n      id\n    }\n  }\n`;\n\nexport const GET_METTERS_PROJECTS_LOGGED_USER = gql`\n  query GetMettersLoggedUser($id: Int!) {\n    getMettersProjectsUsers(userId: $id)\n    getAllProjectsByUser\n  }\n`;\n"],"sourceRoot":""}