{"version":3,"sources":["helpers/auth.js","helpers/responsive.js","components/TopNavigationBar/SimpleNav.js","components/TopNavigationBar/MultiNav.js","components/TopNavigationBar/TopNavigationBar.js","components/SideNavigationBar/SideNavigationBar.js","helpers/api.js","components/Grid/GridControls.js","components/Grid/IndividualRecord/MultiDropDown.js","components/Grid/FilterPopup.js","helpers/general.js","components/Grid/UploadPopup.js","components/Grid/Grid.js","components/Grid/IndividualRecord/Dropdown.js","components/Grid/IndividualRecord/Checkbox.js","components/Grid/IndividualRecord/DatePickerInput.js","components/Grid/IndividualRecord/DatePicker.js","components/Grid/IndividualRecord/Autocomplete.js","components/Grid/IndividualRecord/RelationTable.js","components/Grid/IndividualRecord/List.js","components/Grid/IndividualRecord/IndividualRecord.js","components/PowerBiEmbed/BookMarksMenu.js","components/PowerBiEmbed/BookMarkModal.js","components/PowerBiEmbed/BookMarkManagerModal.js","components/PowerBiEmbed/InfoModal.js","components/PowerBiEmbed/PowerBiCustomEmbed.js","components/Card/SimpleCard.js","components/ScreenEditor/components/Text.js","components/ScreenEditor/components/Space.js","components/ScreenEditor/components/Divider.js","components/ScreenEditor/components/Image.js","components/ScreenEditor/components/PowerBiEmbed.js","components/ScreenEditor/components/Card.js","components/ScreenEditor/components/BlankComponent.js","components/ScreenEditor/helpers/colorPicker.js","components/ScreenEditor/FoundationsPlugin.js","components/ScreenEditor/ScreenEditor.js","components/HierarchyManager/EditPopup.js","components/HierarchyManager/AddPopup.js","components/HierarchyManager/AddDataPopup.js","components/HierarchyManager/EditDataPopup.js","components/HierarchyManager/HierarchyManager.js","components/Text/TextComponent.js","components/ReportManager/ReportSelector.js","components/ReportManager/ReportManager.js","components/Video/VideoComponent.js","components/Button/ButtonComponent.js","components/Screen/ScreenComponent.js","components/Screen/Screen.js","components/TopNavigationBar/SimpleMobileNav.js","components/TopNavigationBar/MultiMobileNav.js","components/TopNavigationBar/BottomNavigationBar.js","components/Module/Module.js","helpers/context.js","App.js","webpack:///./components/PowerBiEmbed/pbi.css?c6c9","components/PowerBiEmbed/pbi.css","webpack:///./components/ScreenEditor/screenEditor.css?807b","components/ScreenEditor/screenEditor.css"],"names":["loginUrl","Constants","manifest","extra","webUrl","b2cLoginUrl","basicLoginUrl","loginDisplayInfoUrl","getAzureInfo","loginResponse","config","codeVerifier","a","async","type","getAuthToken","params","code","param","tokenParameters","client_id","clientId","redirect_uri","redirectUri","grant_type","code_verifier","requestBody","encodedKey","encodeURIComponent","encodedValue","push","join","tokenResponse","fetch","tenantId","method","headers","body","then","response","json","catch","error","console","access_token","basicLogin","creds","username","password","JSON","stringify","token","getB2CUser","b2cLoginResponse","credentials","getUserInfo","powerforceLoginResponse","getLoginDisplayInfo","loginDisplayInfoResponse","Desktop","children","useMediaQuery","minWidth","isDesktop","Tablet","maxWidth","Mobile","SimpleNav","props","View","style","styles","navBar","nativeID","navItems","map","navItem","index","Pressable","onPress","navigation","navigate","route","screenName","screen","Feather","name","icon","size","color","Text","text","fontSize","mobileNavText","StyleSheet","create","textAlign","padding","flex","flexDirection","flexWrap","alignItems","overflow","whiteSpace","textOverflow","MultiNav","React","setSelectedCompany","routes","getState","url","length","currentCompany","companies","find","x","includes","undefined","currentNav","companyUrl","selectedCompany","alignSelf","selectedValue","title","picker","onValueChange","itemValue","itemIndex","company","Item","label","value","filter","logoContainer","justifyContent","userArea","notifications","paddingRight","backgroundColor","borderColor","marginLeft","TopNavigationBar","powerforce","useContext","PowerforceContext","showTopMenu","background","colors","primary","height","minHeight","width","Image","source","uri","logoUrl","resizeMode","topbar","AsyncStorage","removeItem","window","location","reload","userInitials","accent","SideNavigationBar","isTabletOrMobile","query","isMobile","sideNav","secondary","maxHeight","paddingTop","accordion","accordionTitle","listItem","listItemTitle","paddingLeft","bigListItem","bigListItemTitle","showSideMenu","sideNavItems","subNav","ScrollView","dataSet","navitem","Accordion","id","titleStyle","theme","titleNumberOfLines","subNavItem","subIndex","screenUrl","moduleUrl","fetchJson","options","getData","authToken","signal","patchData","values","postData","deleteData","GridControls","filters","filterMenuVisible","setFilterMenuVisible","closeFilterMenu","activeFilter","editText","setEditText","permission","Menu","visible","onDismiss","anchor","onFilter","gridButton","marginTop","onSelectFilter","fontStyle","Divider","editActiveFilterButton","onDownload","canCreate","onAdd","MultiDropDown","forwardRef","ref","activeTheme","useTheme","multiSelect","showDropDown","setValue","activeColor","mode","placeholder","inputProps","list","dropDownContainerMaxHeight","dropDownContainerHeight","dropDownStyle","dropDownItemTextStyle","dropDownItemStyle","dropDownItemSelectedStyle","dropDownItemSelectedTextStyle","accessibilityLabel","useState","displayValue","setDisplayValue","y","inputLayout","setInputLayout","useEffect","_labels","_","indexOf","_label","isActive","useCallback","currentValue","setActive","log","valueIndex","newValue","isString","substring","split","TouchableRipple","onLayout","event","nativeEvent","layout","pointerEvents","TextInput","right","Icon","bounces","_item","_index","custom","contentStyle","Checkbox","Android","status","FilterPopup","isFilterPopupVisible","setIsFilterPopupVisible","setRowData","filterData","rowData","setTitle","hideFilterPopup","onClose","matchConditionText","setMatchConditionText","debounceChangeTitle","debounce","newTitle","editFilterDataRow","rowId","key","newRowData","createFilterQueryFromValues","filterQuery","i","operation","column","value2","Portal","Dialog","marginRight","Title","Content","editable","onChangeText","row","marginBottom","Button","rowDatum","columns","changeColumn","data","changeOperation","changeValue","changeValue2","rowToRemoveId","splice","removeFilterDataRow","onColumnSelection","selectedColumn","Actions","newFilterData","deleteFilter","button","saveAndApplyFilter","ConditionRow","changeOperationsValue","operationValueType","setOperationValueType","operationList","debounceChangeValue","debounceChangeValue2","newOperation","createColumnList","newColumn","ConditionRowCreator","creator","FilterDropdown","setVisible","newVal","columnArray","display","flexGrow","alignContent","randomKey","max","possible","charAt","Math","floor","random","alasql","utils","isBrowserify","global","XLSX","UploadPopup","isUploadPopupVisible","setIsUploadPopupVisible","hasFileBeenUploaded","setHasFileBeenUploaded","updates","setUpdates","additions","setAdditions","deletions","setDeletions","hasImportButtonBeenClicked","setHasImportButtonBeenClicked","isImportDone","setIsImportDone","allowedMimeTypes","chooseFile","DocumentPicker","copyToCacheDirectory","nameParts","fileType","mimeType","Papa","file","header","complete","results","createChangesList","promise","fileData","result","record","Object","entries","toLowerCase","ExcelDateToJSDate","changes","serial","utc_days","date_info","Date","fractional_day","total_seconds","seconds","hours","minutes","returnDate","getFullYear","getMonth","getDate","toLocaleDateString","importDoneText","onImportDone","ActivityIndicator","animating","paddingBottom","items","executeImport","ChangesAccordion","expanded","setExpanded","left","ChangesTable","allData","keys","headerData","numberOfItemsPerPageList","slice","tableData","setTableData","page","setPage","numberOfItemsPerPage","onItemsPerPageChange","from","to","min","newData","DataTable","Header","datum","Row","cellId","Cell","Pagination","numberOfPages","ceil","onPageChange","changePage","selectPageDropdownLabel","Grid","useNavigation","pagination","gridTitle","grid","position","borderRadius","margin","boxShadow","tableHeader","cursor","cell","borderLeftWidth","borderTopWidth","iconCell","iconEndCell","textInCell","scrollView","searchBar","border","container","snackbar","addRecord","setParams","recordID","tableName","baseTable","opacity","setAllData","setheaderData","allDataBak","currentCommand","setCurrentCommand","snackbarVisible","setSnackbarVisible","snackbarText","setSnackbarText","onDismissSnackBar","filterPopupVisible","setFilterPopupVisible","setFilters","setActiveFilter","uploadPopupVisible","setUploadPopupVisible","setImportDoneText","currentlyDeletingId","setCurrentlyDeletingId","reorganizing","setReorganizing","debounceChangeSearchText","textsAsArray","searchResults","obj","some","val","String","toggleFilterPopup","applyFilter","toggleUploadPopup","cloneColumn","cloneRecord","deleteColumn","isCurrentlyDeleting","canDelete","gridCode","detail","findIndex","csv","keysAmount","keysCounter","string","uncapitalizeFirstLetter","replace","trim","link","document","createElement","setAttribute","appendChild","querySelector","click","remove","onUpload","selectFilterFromDropdown","Searchbar","newFilters","filterIndexToEdit","tempId","filterIndexToDelete","refresh","horizontal","contentContainerStyle","e","command","setTimeout","clickGridHead","toUpperCase","capitalizeFirstLetter","isDeleting","constructor","Array","doOnPress","urlDataSource","urlPrefix","open","focus","editCell","reduce","b","isFinite","prev","Number","next","total","isNaN","onSubmitEditing","el","target","Snackbar","action","Dropdown","relationTable","item","relationColumn","filled","valueId","selectedItem","multi","formattedVal","isEmpty","isArray","onChange","dataSource","sectionIndex","smallLabel","bigLabel","itemStyle","pickerItem","onFocus","multiline","numberOfLines","disabled","marginHorizontal","textInput","listItemContainer","zIndex","borderRightWidth","borderBottomWidth","borderBottomColor","top","CheckboxInput","checked","setChecked","forwardedRef","getLabel","withDateFormatInLabel","inputFormat","root","input","calendarButton","locale","validRange","inputMode","withModal","rest","useDateInput","formattedValue","onChangeRef","useLatest","onInnerConfirm","date","current","keyboardType","mask","keyboardAppearance","dark","IconButton","HelperText","DatePickerModal","onConfirm","dateMode","DatePicker","d","toISOString","loadFont","Autocomplete","loading","setLoading","suggestionsList","setSuggestionsList","setSelectedItem","dropdownController","useRef","readyForSaving","setReadyForSaving","prepUrl","URL","protocol","isValidHttpUrl","getSuggestions","q","filterToken","suggestions","onClearPress","onOpenSuggestionsList","isOpened","setFilled","onFill","Platform","select","ios","controller","initialValue","direction","onSelectItem","suggestionsListMaxHeight","Dimensions","get","onClear","onBlur","useFilter","textInputProps","autoCorrect","autoCapitalize","outlineColor","outlineWidth","containerStyle","inputContainerStyle","renderItem","ChevronIconComponent","ClearIconComponent","EmptyResultComponent","inputHeight","showChevron","showClear","clearOnFocus","bottom","RelationTable","selectedData","setSelectedData","selectedNumberOfItemsPerPageList","selectedTableData","setSelectedTableData","selectedPage","setSelectedPage","selectedNumberOfItemsPerPage","onSelectedItemsPerPageChange","selectedFrom","selectedTo","selectedItems","allItems","isEqual","selectAllItems","setSelectAllItems","checkboxValue","changeSource","newSelectedData","newSelectedTableData","rerender","selectedChangePage","CheckboxGridInput","AccordionList","apiUrl","description","summary","cwid","registerTranslation","en","IndividualRecord","justifyItems","titleText","sectionHeader","sectionHeaderText","section","saveSection","inputContainer","fullwidthInputContainer","checkBoxContainer","primaryButton","secondaryButton","disabledButton","dangerButton","dangerText","snackbarContainer","maskedInput","borderWidth","sectionContainer","dropdownSectionContainer","setData","structure","setStructure","update","setUpdate","fetchError","setFetchError","errorText","setErrorText","showSaveButton","setShowSaveButton","showAfterSaveActionButton","setShowAfterSaveActionButton","showCancelButton","setShowCancelButton","saveButtonText","setSaveButtonText","afterSaveActionButtonText","setAfterSaveActionButtonText","cancelButtonText","setCancelButtonText","isCancelPopupVisible","setIsCancelPopupVisible","showPopup","hidePopup","isTermPopupVisible","setIsTermPopupVisible","hideTermPopup","isSaving","setIsSaving","reloadCount","setReloadCount","snackbarReloadOnClose","setSnackbarReloadOnClose","snackbarReloadOnCloseRecordId","setSnackbarReloadOnCloseRecordId","currentCount","fieldRefs","recordId","fetchedData","newUpdate","sections","cloneExclusions","extractDataForClone","fetchedDataWithDefualtValues","defaultValue","extractDefaultDataForAddUpdateState","changeRecordItem","itemName","forceRefresh","dataBeforeCalcs","applyCalculations","checkConditionsOnUpdate","dataAfterCalcs","nextIndex","findNextHighestIndex","debounceChangeRecordItem","passedIndex","array","returnedIndex","calculateFunction","calculate","conditionChange","conditionKey","conditionOp","saveChanges","doAftersave","required","every","unrequiredItems","afterSaveAction","afterSaveActionData","trace","line","alert","format","requiredObjects","unfilledFieldsArray","unfilledFieldsString","getUnfilledRequiredFields","cancelChanges","createQuickAccessBarItem","barItem","conditionOperators","conditionValue","sectionClone","functionName","calculateFunctions","relatedDropdownItems","setRelatedDropdownItems","relatedValue","calculateArgs","relatedDropdownItemsClone","newItems","notBeforeThisDate","valueDate","humanReadableLabel","parse","calculateMeta","applyStyles","styleObject","styleObjectClone","borderLeft","createSection","originalSection","writeOnly","onPressAction","inputType","numberMask","numberUnmask","unMask","render","quickAccessBar","Paragraph","afterSaveActionButton","saveButton","cancelButton","today","onPressData","message","sendOnPressAction","BookmarksMenu","BookmarkModal","setText","saving","setSaving","Provider","Modal","activeUnderlineColor","marginVertical","onSave","labelStyle","Bookmark","bookmark","setLabel","deleteThis","setDeleteThis","newLabel","updateBookmarkLabel","textDecoration","onUnmarkForDeletion","onMarkForDeletion","BookmarkManagerModal","bookmarks","bookMarks","setBookMarks","markForDeletion","bookMarksUpdated","unmarkForDeletion","objIndex","InfoModal","refreshData","refreshValue","startTime","toLocaleString","timeZoneName","PowerBiCustomEmbed","isPortrait","report","setReport","modalVisible","setModalVisible","managerModalVisible","setManagerModalVisible","infoModalVisible","setInfoModalVisible","setBookmarks","saveBookmark","bookmarksManager","capture","personalizeVisuals","capturedBookmark","state","tempBookmarks","manageBookMarks","applyBookmark","applyState","getHeight","setHeight","getWidth","fullScreenIcon","setFullScreenIcon","toggleFullScreen","toggleTopMenu","toggleSideMenu","refreshFilters","FullScreen","Info","accessToken","reportType","bookMarksModal","bookMarksManagerModal","embedConfig","reportId","dashboardId","embedUrl","tokenType","models","TokenType","Embed","settings","panes","fields","pageNavigation","selection","syncSlicers","visualizations","bars","statusBar","actionBar","BackgroundType","Transparent","personalBookmarksEnabled","eventHandlers","Map","embeddedReport","getFilters","getActivePage","getPages","cssClassName","getEmbeddedComponent","SimpleCard","onPressActions","args","match","module","href","setBorderColor","onPressFunction","cursorStyle","displayText","setDisplayText","onPressFunctionArgs","onMouseEnter","onMouseLeave","transition","coverUri","flexShrink","fontWeight","content","script","Space","ImageMethods","editor","model","defaults","tagName","droppable","attributes","componentId","traits","updated","property","prevValue","this","views","view","editorType","addRoleCheckboxes","roles","on","newModel","parent","parentAtts","getAttributes","src","changed","setAttributes","$el","parentElement","backgroundImage","PowerBiEmbed","initLib","feather","onload","Card","BlankComponentMethods","Piklor","sel","self","getElm","openEvent","closeOnBlur","template","elm","cbs","isOpen","addEventListener","ev","close","col","getAttribute","set","autoclose","html","forEach","c","innerHTML","cb","p","FoundationsPlugin","Components","addType","BlockManager","add","TextMethods","SpaceMethods","DividerMethods","DomComponents","unshift","events","getCompanySelectValue","addAttributes","PowerBiEmbedMethods","imageOrIcon","iconName","getElementsByTagName","contentWindow","icons","removed","something","CardMethods","um","UndoManager","removeSubTextEditConfigs","component","components","badgable","draggable","highlightable","hoverable","selectable","subModel","getStack","removeAttributes","userRoles","role","roleKey","addRoleDefaultValuesToNewComponent","asset","rte","RichTextEditor","colorPicker","colorChosen","exec","keymaps","Keymaps","getAll","shortcut","preventDefault","Canvas","getDocument","clipboardData","execCommand","roleCheckBoxConfig","ScreenEditor","swv","obl","ful","prv","editScreenSettingsPanel","moduleScreenSelector","selectedModule","modules","selectedScreen","currentEditScreen","showNewScreenModal","sender","modal","modalHtml","onceOpen","getElementById","classList","moduleId","innerText","changeComponentsForSelectedScreen","class","editSideNavItemsButtonOptions","className","active","run","sideNavHtml","editMenuInnerHtml","sideNavItem","parentTitle","parentSortOrder","sortOrder","securityReadInnerHtml","securityWriteInnerHtml","pluginsOpts","readValue","readChecked","readRoles","writeValue","writeChecked","writeRoles","editMenuDiv","Panels","getPanel","trigger","stop","changeScreenOptions","selectEl","screenDropdownOptions","screens","spinner","screenChanger","setComponents","sideNavContainer","getElementsByClassName","panelManager","removeButton","panelOptions","addButton","data-code","GrapesEditor","showDevices","onInit","moduleDropDownHtml","moduleDropdownOptions","newlySelectedModule","screenDropDownHtml","newlySelectedScreen","changeEditorComponentsButton","loadingEditorComponentsSpinner","helperTextEl","cmdButtonDiv","prepend","append","richTextEditor","stylePrefix","adjustToolbar","actions","storageManager","showOffsets","allowScripts","canvas","assetManager","assets","showUrlInput","upload","plugins","panels","buttons","context","floppy1","floppy","getButton","sideNavElements","querySelectorAll","sideNavData","elData","dataset","sidenavid","saveData","getComponents","togglable","onDestroy","data-gjs-highlightable","data-gjs-selectable","data-gjs-hoverable","data-gjs-draggable","data-gjs-droppable","data-gjs-editable","setEditor","selector","GrapesJS","init","fromElement","addStyle","editors","Config","destroy","addListener","EditPopup","isPopupVisible","setIsPopupVisible","parentValue","newParentCategory","setNewParentCategory","newName","setNewName","parentCategories","currentParentCategory","setCurrentParentCategory","selectionColor","labelKey","textColor","AddPopup","newCategoryName","setNewCategoryName","extraData","AddDataPopup","getParentCategory","newParentCategoryId","setNewParentCategoryId","dataTable","hierarchyKey","accountId","setAccountId","mainAccountCode","setMainAccountCode","subAccountCode","setSubAccountCode","accountName","setAccountName","checkedNew","checkedUnassigned","currentParentCategoryId","selectUnassignedAccount","selectedAccount","account","MainAccount","SubAccount","Name","show","onSelect","UnassignedDropDown","rowIndex","EditDataPopup","parentCategoryId","setParentCategoryId","HierarchyManager","hierarchyTable","setHierarchyTable","setDataTable","dataStructure","findItemsByParentId","parentId","lvl1Value","setLvl1Value","lvl2Value","setLvl2Value","lvl2Name","setLvl2Name","lvl3Value","setLvl3Value","lvl3Name","setLvl3Name","accountValue","setAccountValue","lvl2EditPopupVisible","setLvl2EditPopupVisible","lvl2AddPopupVisible","setLvl2AddPopupVisible","lvl3EditPopupVisible","setLvl3EditPopupVisible","lvl3AddPopupVisible","setLvl3AddPopupVisible","dataAddPopupVisible","setDataAddPopupVisible","dataEditPopupVisible","setDataEditPopupVisible","changeParentId","idToChange","newParentId","newHierarchyTable","changeItemIndex","tableType","saveNewCategory","setLvl2Loading","setLvl3Loading","deleteCategory","editDataRecord","newDataTable","accountCode","saveNewDataRecord","lvl2Loading","lvl3Loading","levelTableHeader","textLabel","buttonHolder","lvl2LoadingRow","lvl3LoadingRow","accountTableHeader","tableButtonHolder","deleteDataRecord","accountScrollView","cellIndex","saveOrEdit","borderStyle","TextComponent","nestedTextComponents","textComponent","convertToRnText","keyName","textStyle","textDecorationLine","subComponent","ReportSelector","reportChanges","setReportChanges","selectAll","setSelectAll","updateReports","reportToChange","changeKey","updatedReportChanges","reportKey","updatedReports","reports","updateRoles","newRoles","saveReportsCallback","loadContainer","checkColumn","selectAllReports","smallColumn","ReportRow","reportIndex","datasets","saveReports","friendlyName","setFriendlyName","reportGroup","setReportGroup","datasetId","updateReportsDebounced","tableRow","DatasetDropdown","selectedDataset","textInputBordered","expandedRoleRow","assignRolesTop","roleContainer","roleName","roleRow","setSelectedDataset","ReportManager","selectedWorkspace","setSelectedWorkspace","selectedCompanyReports","setSelectedCompanyReports","selectedCompanyRoles","setSelectedCompanyRoles","selectedCompanyDatasets","setSelectedCompanyDatasets","getReports","toString","callback","VideoComponent","frameBorder","allowFullScreen","fontFamily","controls","ButtonComponent","startsWith","goToLink","ScreenComponent","currentComponentDataUrl","setCurrentComponentDataUrl","setCurrentRouteParams","setError","setErrorMessage","recordData","componentDataUrl","textTransform","pbiType","Screen","screenComponents","setScreenComponents","abort","newAbortController","AbortController","newScreenData","moduleData","decodeURIComponent","removeAppState","SimpleMobileNav","moduleContainer","navText","MultiMobileNav","BottomNavigationBar","screensButton","modulesButton","hideButton","showButton","navItemText","showNav","menuVisible","setMenuVisible","moduleMenuVisible","setModuleMenuVisible","toggleMenuVisibility","onMenuButtonClick","showMobileMenu","Module","menuButton","menuButtonContent","mobileMenu","setShowMobileMenu","toggleMobileMenu","setShowTopMenu","setShowSideMenu","MobileMenu","DefaultTheme","roundness","sso_client_id","ssoClientId","sso_tenant_id","ssoTenantId","b2c_url","ssoDiscoveryUrl","b2cUrl","b2c_client_id","b2cClientId","b2c_signin_param","b2cSignInParam","createContext","PowerforceContextProvider","appState","setAppState","loginDisplayInfo","setLoginDisplayInfo","loginLoading","setLoginLoading","failedAuth","setfailedAuth","failedAuthMessage","setFailedAuthMessage","setCreds","WebBrowser","ssoAuthConfig","scopes","makeRedirectUri","discoveryLink","discovery","useAutoDiscovery","useAuthRequest","request","promptAsync","b2cAuthConfig","b2cdiscovery","authorizationEndpoint","responseType","extraParams","nonce","prompt","b2crequest","b2cpromptAsync","DoubleLoginButton","isSSO","setIsSSO","substr","handleSsoAuth","accentColor","handlB2C","b2cUserToken","userConfig","setItem","newToken","messageKey","handleBasicAuth","basicLoginToken","getItem","displayInfo","newLoginDisplayInfo","hasOwn","updatedUserConfig","LoginPage","loginMethod","primaryColor","newCreds","underlineColor","cursorColor","placeholderTextColor","secureTextEntry","routeConfig","Stack","createNativeStackNavigator","linking","prefixes","Linking","NavigationContainer","fallback","documentTitle","formatter","Navigator","initialRouteName","screenOptions","headerShown","App","api","__esModule","default","exports","locals","___CSS_LOADER_API_IMPORT___"],"mappings":"w1BAIA,IAAMA,EAAWC,IAAUC,SAASC,MAAMC,OAAS,SAC7CC,EAAcJ,IAAUC,SAASC,MAAMC,OAAS,aAChDE,EAAgBL,IAAUC,SAASC,MAAMC,OAAS,eAClDG,EAAsBN,IAAUC,SAASC,MAAMC,OAAS,iBAMjDI,EAAe,SAAMC,EAAeC,EAAQC,GAA7B,SAAAC,EAAAC,OAAA,mDAEA,YAAvBJ,EAAcK,KAFS,yCAIjBC,EAAaN,EAAcO,OAAOC,KAAMP,EAAQC,IAJ/B,mCAQtB,MAAS,+BACNF,IATmB,6DActBM,EAAe,SAAME,EAAMP,EAAQC,GAApB,yBAAAC,EAAAC,OAAA,gDAcnB,IAASK,KAXLC,EAAkB,CACpBC,UAAWV,EAAOW,SAElBJ,KAAMA,EACNK,aAAcZ,EAAOa,YACrBC,WAAY,qBACZC,cAAed,GAIbe,EAAc,GACAP,EACZQ,EAAaC,mBAAmBV,GAChCW,EAAeD,mBAAmBT,EAAgBD,IACtDQ,EAAYI,KAAKH,EAAa,IAAME,GAjBnB,OAmBnBH,EAAcA,EAAYK,KAAK,KAG3BC,EAAgB,KAtBD,WAAApB,EAAA,MAuBbqB,MAAM,qCAAqCvB,EAAOwB,SAAS,qBAAsB,CACrFC,OAAQ,OACRC,QAAS,CACP,eAAgB,qCAElBC,KAAMX,IAELY,MAAK,SAACC,GAAD,OAAcA,EAASC,UAC5BF,MAAK,SAACC,GACLP,EAAgBO,KAEjBE,OAAM,SAACC,GACNC,QAAQD,MAAMA,OAnCC,gCAuCZV,EAAcY,cAvCF,6DA2CRC,EAAa,SAAMC,GAAN,iBAAAlC,EAAAC,OAAA,uDAEpBwB,EAAO,CACT,SAAYS,EAAMC,SAClB,SAAYD,EAAME,UAGhBhB,EAAgB,KAPI,WAAApB,EAAA,MAQlBqB,MAAM3B,EAAe,CACzB6B,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAAMY,KAAKC,UAAUb,KAEpBC,MAAK,SAACC,GAAD,OAAcA,EAASC,UAC5BF,MAAK,SAACC,GAEHP,EADCO,EAASG,MACMH,EAEAA,EAASY,SAG5BV,OAAM,SAACC,GACNV,EAAgBU,MAxBI,gCA2BjBV,GA3BiB,6DA8BboB,EAAa,SAAMC,EAAkB3C,EAAQC,GAAhC,eAAAC,EAAAC,OAAA,uDAEpBmB,EAAgB,KAFI,WAAApB,EAAA,MAIlBqB,MAAM5B,EAAa,CACvB8B,OAAQ,OACRmB,YAAa,cACblB,QAAS,CACP,eAAgB,oBAElBC,KAAMY,KAAKC,UAAU,CACnBG,iBAAkBA,EAClB1C,aAAcA,EACdY,YAAab,EAAOa,gBAGrBe,MAAK,SAACC,GAAD,OAAcA,EAASC,UAC5BF,MAAK,SAACE,GAEHR,EADCQ,EAAKE,MACUF,EAEAA,EAAKW,SAGxBV,OAAM,SAACC,GACNV,EAAgBU,MAzBI,gCA4BjBV,GA5BiB,6DAgCbuB,EAAc,SAAMJ,GAAN,eAAAvC,EAAAC,OAAA,uDAErB2C,EAA0B,KAFL,WAAA5C,EAAA,MAGnBqB,MAAMjC,EAAU,CACpBmC,OAAQ,MACRmB,YAAa,cACblB,QAAS,CACP,eAAgBe,KAGjBb,MAAK,SAACC,GAAD,OAAcA,EAASC,UAC5BF,MAAK,SAACE,GACLgB,EAA0BhB,KAE3BC,OAAM,SAACC,GACNc,EAA0Bd,MAfL,gCAkBlBc,GAlBkB,6DAqBdC,EAAsB,0BAAA7C,EAAAC,OAAA,uDAE7B6C,EAA2B,KAFE,WAAA9C,EAAA,MAG3BqB,MAAM1B,EAAqB,CAC/B4B,OAAQ,MACRmB,YAAa,gBAEZhB,MAAK,SAACC,GAAD,OAAcA,EAASC,UAC5BF,MAAK,SAACE,GACLkB,EAA2BlB,KAE5BC,OAAM,SAACC,GACNgB,EAA2BhB,MAZE,gCAe1BgB,GAf0B,6D,yGCtJtBC,EAAU,SAAC,GAAkB,IAAhBC,EAAe,EAAfA,SAExB,OADkBC,wBAAc,CAAEC,SAAU,MACzBF,EAAW,MAEzB,SAASG,IACd,OAAOF,wBAAc,CAACC,SAAU,MAG3B,IAAME,EAAS,SAAC,GAAkB,IAAhBJ,EAAe,EAAfA,SAEvB,OADiBC,wBAAc,CAAEC,SAAU,IAAKG,SAAU,MACxCL,EAAW,MAElBM,EAAS,SAAC,GAAkB,IAAhBN,EAAe,EAAfA,SAEvB,OADiBC,wBAAc,CAAEI,SAAU,MACzBL,EAAW,M,OCmChBO,EA3CG,SAACC,GAEjB,OAGI,cAACC,EAAA,EAAD,CAAMC,MAAOC,EAAOC,OAAQC,SAAU,SAAtC,SAGIL,EAAMM,SAASC,KAAI,SAACC,EAASC,GAC3B,OACE,eAACC,EAAA,EAAD,CACEC,QAAS,kBAAMX,EAAMY,WAAWC,SAASL,EAAQM,MAAO,CAAEC,WAAYP,EAAQQ,UAC9Ed,MAAOC,EAAOK,QAEdH,SAAU,UAAUG,EAAQM,MAJ9B,UAME,eAAC,EAAD,WACE,cAACG,EAAA,EAAD,CAASC,KAAMV,EAAQW,KAAMC,KAAM,GAAIC,MAAM,UAC7C,cAACC,EAAA,EAAD,CAAMpB,MAAO,CAAEmB,MAAM,WAArB,SAAmCb,EAAQe,UAG7C,eAAC,EAAD,WACE,cAACN,EAAA,EAAD,CAASC,KAAMV,EAAQW,KAAMC,KAAM,GAAIC,MAAM,UAC7C,cAACC,EAAA,EAAD,CAAMpB,MAAO,CAAEmB,MAAM,UAAWG,SAAU,GAA1C,SAAgDhB,EAAQe,UAG1D,eAAC,EAAD,WACE,cAACN,EAAA,EAAD,CAASC,KAAMV,EAAQW,KAAMC,KAAM,GAAIC,MAAM,UAC7C,cAACC,EAAA,EAAD,CAAMpB,MAAOC,EAAOsB,cAApB,SAAoCjB,EAAQe,YAfzCd,SAgCfN,EAASuB,IAAWC,OAAO,CAC/BnB,QAAS,CACPoB,UAAU,SACVC,QAAS,OACTC,KAAM,GAER1B,OAAQ,CACN2B,cAAe,MACfC,SAAU,OACVF,KAAM,EACNG,WAAY,UAEdR,cAAe,CACbJ,MAAM,UACNG,SAAU,EACVU,SAAU,SACVC,WAAY,SACZC,aAAc,c,QCQHC,EAhEE,SAACrC,GAgBhBsC,aAAgB,WACdC,EAZiB,WACjB,IAAIC,EAASxC,EAAMY,WAAW6B,WAAWD,OAErCE,EAAMF,EADSA,EAAOG,OAAS,GACJzB,KAC3B0B,EAAiB5C,EAAM6C,UAAUC,MAAK,SAAAC,GAAC,OAAIL,EAAIM,SAASD,EAAEL,QAC9D,YAAsBO,IAAnBL,EACM,GAEFA,EAIYM,MAClB,CAAClD,IAEJ,IAEkBmD,EAFlB,EAA8Cb,WAAe,IAA7D,WAAOc,EAAP,KAAwBb,EAAxB,KAaA,OACE,eAACtC,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAc,OAA5B,UACE,cAAC9B,EAAA,EAAD,CAAMC,MAAO,CAACmD,UAAU,SAAUxD,SAAU,MAAOH,SAAU,SAA7D,SACE,eAAC,IAAD,CACE4D,cAAeF,EAAkBA,EAAgBG,MAAQ,EACzDrD,MAAOC,EAAOqD,OACdnD,SAAU,gBACVoD,cAAe,SAACC,EAAWC,GACzB,IAAIC,EAAU5D,EAAM6C,UAAUC,MAAK,SAAAC,GAAC,OAAIA,EAAEQ,QAAUG,KACpDnB,EAAmBqB,IANvB,UASE,cAAC,IAAOC,KAAR,CAAaC,MAAO,mBAAoBC,MAAO,IAAS,iBAEvD/D,EAAM6C,UAAUtC,KAAI,SAAAqD,GACnB,OAAO,cAAC,IAAOC,KAAR,CAAaC,MAAOF,EAAQL,MAAOQ,MAAOH,EAAQL,OAAYK,EAAQlB,aAQnF,cAAC,EAAD,CAAWpC,UAlCG6C,EAkCgBC,EAAkBA,EAAgBV,IAAM,GAjCpES,GAGc,SAAfA,IACDA,EAAa,OAEFnD,EAAMM,SAAS0D,QAAO,SAACxD,GAAD,OAAaA,EAAQM,MAAMkC,SAASG,EAAa,SALzE,IAgCkEvC,WAAYZ,EAAMY,iBAU7FT,EAASuB,IAAWC,OAAO,CAC/BsC,cAAe,CACbnC,KAAM,EACNG,WAAY,aACZiC,eAAgB,QAElB1D,QAAS,CACPoB,UAAU,SACVC,QAAS,OACTC,KAAM,GAER1B,OAAQ,CACN2B,cAAe,MACfD,KAAM,EACNG,WAAY,UAEdkC,SAAU,CACRrC,KAAM,EACNC,cAAe,MACfmC,eAAgB,QAChBjC,WAAY,UAEdmC,cAAe,CACbC,aAAc,QAEhBb,OAAS,CACPc,gBAAiB,iBACjBjD,MAAO,OACPQ,QAAS,OACTwC,aAAc,MACdE,YAAa,QACbC,WAAY,OACZ9E,SAAU,WCRC+E,GA3FU,SAACzE,GAExB,IAAM0E,EAAaC,qBAAWC,IAE9B,IAAK5E,EAAM6E,YACT,OAAO,KAkBT,OACE,eAAC5E,EAAA,EAAD,CAAMC,MAAO,CACX6B,cAAc,MACd+C,WAAYJ,EAAWK,OAAOC,QAC9BnD,QAAS,OACToD,OAAQ,OACRC,UAAW,QALb,UASE,cAACjF,EAAA,EAAD,CAAMC,MAAOC,GAAO8D,cAApB,SACE,cAAChE,EAAA,EAAD,CAAMC,MAAO,CACXiF,MAAO,OACPF,OAAQ,QAFV,SAKE,cAACG,EAAA,EAAD,CACEC,OAAQ,CAACC,IAAKZ,EAAWa,SACzBC,WAAW,UACXnF,SAAU,OACVH,MAAO,CACLiF,MAAO,OACPF,OAAQ,OACRC,UAAW,MACXrF,SAAU,eAMlB,cAACI,EAAA,EAAD,CAAMC,MAAOC,GAAOC,OAApB,SA3CCsE,EAAW7B,WAAa6B,EAAW7B,UAAUF,OAAS,EAChD,cAAC,EAAD,CACLrC,SAAUoE,EAAWe,OACrB5C,UAAW6B,EAAW7B,UAAY6B,EAAW7B,UAAY,GACzDjC,WAAYZ,EAAMY,aAGf,cAAC,EAAD,CACLN,SAAUoE,EAAWe,OACrB7E,WAAYZ,EAAMY,eAwClB,eAACX,EAAA,EAAD,CAAMC,MAAOC,GAAOgE,SAApB,UACE,cAACzD,EAAA,EAAD,CACEC,QAAU,oBAAAnE,EAAAC,OAAA,kEAAAD,EAAA,MACFkJ,IAAaC,WAAW,0BADtB,OAERC,OAAOC,SAASC,SAFR,6DADZ,SAME,cAAC7E,EAAA,EAAD,CAASZ,SAAU,SAAUa,KAAK,UAAUE,KAAM,GAAIC,MAAM,QAAQnB,MAAOC,GAAOiE,kBAGpF,cAAC1D,EAAA,EAAD,CACEC,QAAU,oBAAAnE,EAAAC,OAAA,gDACRuD,EAAMY,WAAWC,SAAS,WAAY,CAAEE,WAAY,kBAD5C,6DADZ,SAKE,cAACE,EAAA,EAAD,CAASC,KAAK,WAAWb,SAAU,WAAYe,KAAM,GAAIC,MAAM,QAAQnB,MAAOC,GAAOiE,kBAGvF,cAAC,IAAO9C,KAAR,CACEwC,MAAOY,EAAWqB,aAClB1F,SAAU,SACVe,KAAM,GACNlB,MAAO,CAACoE,gBAAgBI,EAAWK,OAAOiB,iBAY9C7F,GAASuB,IAAWC,OAAO,CAC/BsC,cAAe,CACbnC,KAAM,EACNG,WAAY,aACZiC,eAAgB,QAElB1D,QAAS,CACPoB,UAAU,SACVC,QAAS,OACTC,KAAM,GAER1B,OAAQ,CACN2B,cAAe,MACfD,KAAM,EACNG,WAAY,UAEdkC,SAAU,CACRrC,KAAM,EACNC,cAAe,MACfmC,eAAgB,QAChBjC,WAAY,UAEdmC,cAAe,CACbC,aAAc,UC2CH4B,GApKW,SAACjG,GAEzB,IAAM0E,EAAaC,qBAAWC,IACxBsB,EAAmBzG,wBAAc,CAAE0G,MAAO,wBAC1CC,EAAW3G,wBAAc,CAAE0G,MAAO,uBAElChG,EAASuB,IAAWC,OAAO,CAC/B0E,QAAS,CACP/B,gBAAiBI,EAAWK,OAAOuB,UACnCrB,OAAQ,OACRC,UAAWgB,EAAmB,qBAAuB,OACrDK,UAAWL,EAAmB,qBAAuB,OACrDrG,SAAUuG,EAAW,MAAQ,QAC7BjB,MAAOiB,EAAW,QAAU,OAC5BI,WAAY,QAEdC,UAAW,CACTnC,gBAAiBI,EAAWK,OAAOC,QACnC3D,MAAO,WAGTqF,eAAgB,CACdrF,MAAO,WAETsF,SAAU,CACRrC,gBAAiBI,EAAWK,OAAOC,SAErC4B,cAAe,CACbC,YAAa,OACbxF,MAAO,UACPG,SAAU,QAEZsF,YAAa,CACXxC,gBAAiBI,EAAWK,OAAOC,SAGrC+B,iBAAkB,CAChB1F,MAAO,aAqCX,OAAKrB,EAAMgH,aAINhH,EAAMiH,aAIPjH,EAAMiH,aAAatE,OAAS,GACxB3C,EAAMiH,aAAa,GAAGC,QAAkD,IAAxClH,EAAMiH,aAAa,GAAGC,OAAOvE,OAIjE,cAACwE,EAAA,EAAD,CAAYjH,MAAOC,EAAOkG,QAASe,QAAS,CAAC,KAAO,cAApD,SAGIpH,EAAMiH,aAAa1G,KAAI,SAAC8G,EAAS5G,GAE/B,MAAI,WAAY4G,GAAWA,EAAQH,OAAOvE,OAAS,EAG/C,cAAC,IAAK2E,UAAN,CACE/D,MAAO8D,EAAQ9D,MAEfgE,GAAI9G,EACJP,MAAOC,EAAOsG,UACde,WAAYrH,EAAOuG,eACnBe,MAAO,CAAC1C,OAAQ,CAACxD,KAAM,YACvBmG,mBAAoB,EACpBN,QAAS,CAAC,KAAO,uBAAuBC,EAAQ9D,OAChDlD,SAAU,uBAAuBgH,EAAQ9D,MAT3C,SAYG8D,EAAQH,OAAO3G,KAAI,SAACoH,EAAYC,GAC/B,OACE,cAAC,IAAK/D,KAAN,CAEEN,MAAOoE,EAAWpE,MAClBlD,SAAU,sBAAsBsH,EAAWE,UAC3ClH,QAAS,kBAAMX,EAAMY,WAAWC,SAC9B8G,EAAWG,UACX,CACE/G,WAAY4G,EAAWE,aAK3BL,WAAYrH,EAAOyG,cACnB1G,MAAOC,EAAOwG,SACde,mBAAoB,GAbfjH,EAAQ,IAAMmH,OAbpBnH,GAqCP,cAAC,IAAKoD,KAAN,CAEEN,MAAO8D,EAAQ9D,MAAQ8D,EAAQ9D,MAAQ8D,EAAQnG,KAC/Cb,SAAU,cAAcgH,EAAQQ,UAChClH,QAAS,kBAAMX,EAAMY,WAAWC,SAC9BwG,EAAQS,UACR,CACE/G,WAAYsG,EAAQQ,UAAYR,EAAQQ,UAAYR,EAAQ3E,OAKhE8E,WAAYrH,EAAO4G,iBACnB7G,MAAOC,EAAO2G,YACdY,mBAAoB,GAbfjH,QAwBZ,cAACR,EAAA,EAAD,IAhFA,cAACqB,EAAA,EAAD,yBAJA,M,oBClFX,SAASyG,GAAUrF,EAAKsF,GACtB,OAAOnK,MAAM6E,EAAK,KAAc,CAC9BxD,YAAa,eACZ8I,IACA9J,MAAK,SAAAC,GACJ,OAAOA,EAASC,UAIf,SAAS6J,GAAQvF,GAAsC,IAAjCwF,EAAgC,uDAApB,KAAMC,EAAc,uDAAL,KAEtD,OAAOJ,GAAUrF,EAAK,CACpB3E,OAAQ,MACRC,QAAS,CACP,OAAW,mBACX,eAAgBkK,GAElBC,OAAQA,IAIL,SAASC,GAAU1F,GAA+B,IAA1BwF,EAAyB,uDAAb,KAAMG,EAAO,uCAElDpK,EAAOY,KAAKC,UAAUuJ,GAC1B,OAAON,GAAUrF,EAAK,CACpB3E,OAAQ,QACRE,KAAMA,EACND,QAAS,CACP,OAAW,mBACX,eAAgB,+BAChB,eAAgBkK,KAKf,SAASI,GAAS5F,GAA+B,IAA1BwF,EAAyB,uDAAb,KAAMG,EAAO,uCAEjDpK,EAAOY,KAAKC,UAAUuJ,GAC1B,OAAON,GAAUrF,EAAK,CACpB3E,OAAQ,OACRE,KAAMA,EACND,QAAS,CACP,OAAW,mBACX,eAAgB,mBAChB,eAAgBkK,KAKf,SAASK,GAAW7F,GAA+B,IAA1BwF,EAAyB,uDAAb,KAAMG,EAAO,uCAEnDpK,EAAOY,KAAKC,UAAUuJ,GAC1B,OAAON,GAAUrF,EAAK,CACpB3E,OAAQ,SACRE,KAAMA,EACND,QAAS,CACP,OAAW,mBACX,eAAgB,mBAChB,eAAgBkK,K,sGCrDTM,GAAe,SAACxI,GAE3B,MAA8BsC,WAAetC,EAAMyI,SAAnD,WAAOA,EAAP,KACA,GADA,KACkDnG,YAAe,IAAjE,WAAOoG,EAAP,KAA0BC,EAA1B,KAUMC,EAAkB,kBAAMD,GAAqB,IAEnD,EAAgCrG,WAAetC,EAAM6I,aAAatF,MAAQ,QAAUvD,EAAM6I,aAAatF,MAAQ,UAAY,eAA3H,WAAOuF,EAAP,KAAiBC,EAAjB,KAGAzG,aAAgB,WACdyG,EAAY/I,EAAM6I,aAAatF,MAAQ,QAAUvD,EAAM6I,aAAatF,MAAQ,UAAY,iBACvF,CAACvD,IA+BJ,MAAwB,UAArBA,EAAMgJ,WAEL,eAAC/I,EAAA,EAAD,CAAMC,MAAO,CACX4B,KAAK,EACLC,cAAe,MACfP,SAAS,OACT0C,eAAgB,SAJlB,UASE,eAAC+E,GAAA,EAAD,CACEC,QAASR,EACTS,UAAWP,EACXQ,OACE,cAAC1I,EAAA,EAAD,CACEC,QAAS,WA7DhB8H,EAAQ9F,OAAS,EAClBgG,GAAqB,GAErB3I,EAAMqJ,YA6DEnJ,MAAOC,GAAOmJ,WAJhB,SAME,cAACrI,EAAA,EAAD,CAASC,KAAK,SAASE,KAAM,GAAIC,MAAM,cAG3CnB,MAAO,CACLqJ,UAAW,QAdf,UAiBE,cAACN,GAAA,EAAKpF,KAAN,CACElD,QAAS,WACPX,EAAMwJ,eAAe,MACrBZ,KAEFpB,WAAY,CAACiC,UAAU,UACvBlG,MAAM,eAGPkF,EAAQlI,KAAI,SAAAyD,GACX,OACE,cAACiF,GAAA,EAAKpF,KAAN,CAEEN,MAAOS,EAAOT,MACd5C,QAAS,WACPX,EAAMwJ,eAAexF,GACrB4E,MAJG5E,EAAOuD,OAUlB,cAACmC,GAAA,EAAD,IA/EuB,WAC7B,GAAG1J,EAAM6I,aAAatF,MACpB,OACE,cAAC0F,GAAA,EAAKpF,KAAN,CACElD,QAAS,WACPX,EAAMwJ,eAAe,QACrBZ,KAEFrF,MAAOuF,IAyENa,GAED,cAACV,GAAA,EAAKpF,KAAN,CACElD,QAAS,WACPX,EAAMwJ,eAAe,UACrBZ,KAEFrF,MAAO,yBAKX,cAAC7C,EAAA,EAAD,CACEC,QAAS,kBAAMX,EAAM4J,cACrB1J,MAAOC,GAAOmJ,WAFhB,SAIE,cAACrI,EAAA,EAAD,CAASC,KAAK,WAAWE,KAAM,GAAIC,MAAM,cAY3C,eA/FY,WAChB,OAAGrB,EAAM6J,UAEL,cAACnJ,EAAA,EAAD,CACEC,QAAS,kBAAMX,EAAM8J,SACrB5J,MAAOC,GAAOmJ,WACdlC,QAAS,CAAC,KAAQ,mBAHpB,SAKE,cAACnG,EAAA,EAAD,CAASC,KAAK,cAAcE,KAAM,GAAIC,MAAM,cAI3C,OAmFH,OAKkB,SAArBrB,EAAMgJ,WAEL,eAAC/I,EAAA,EAAD,CAAMC,MAAO,CACX4B,KAAK,EACLC,cAAe,MACfP,SAAS,OACT0C,eAAgB,SAJlB,UAOE,cAACxD,EAAA,EAAD,CACEC,QAAS,kBAAMX,EAAMqJ,YACrBnJ,MAAOC,GAAOmJ,WAFhB,SAIE,cAACrI,EAAA,EAAD,CAASC,KAAK,SAASE,KAAM,GAAIC,MAAM,cAGzC,cAACX,EAAA,EAAD,CACEC,QAAS,kBAAMX,EAAM4J,cACrB1J,MAAOC,GAAOmJ,WAFhB,SAIE,cAACrI,EAAA,EAAD,CAASC,KAAK,WAAWE,KAAM,GAAIC,MAAM,sBApBjD,GA8BIlB,GAASuB,IAAWC,OAAO,CAC/B2H,WAAY,CACVzH,QAAS,U,uoBC1Kb,IAqMekI,GArMOC,sBAAW,SAAChK,EAAOiK,GACvC,IAAMC,EAAcC,eACpB,EAAgVnK,EAAxUoK,mBAAR,SAA6BlB,EAAmTlJ,EAAnTkJ,QAASC,EAA0SnJ,EAA1SmJ,UAAWkB,EAA+RrK,EAA/RqK,aAActG,EAAiR/D,EAAjR+D,MAAOuG,EAA0QtK,EAA1QsK,SAAUC,EAAgQvK,EAAhQuK,YAAaC,EAAmPxK,EAAnPwK,KAAM1G,EAA6O9D,EAA7O8D,MAAO2G,EAAsOzK,EAAtOyK,YAAaC,EAAyN1K,EAAzN0K,WAAYC,EAA6M3K,EAA7M2K,KAAMC,EAAuM5K,EAAvM4K,2BAA4BC,EAA2K7K,EAA3K6K,wBAAyBpD,EAAkJzH,EAAlJyH,MAAOqD,EAA2I9K,EAA3I8K,cAA6DC,GAA8E/K,EAA5HgL,kBAA4HhL,EAAzGiL,0BAAyGjL,EAA9E+K,uBAAuBG,EAAuDlL,EAAvDkL,8BAA+BC,EAAwBnL,EAAxBmL,mBACxT,EAAwCC,mBAAS,IAAjD,WAAOC,EAAP,KAAqBC,EAArB,KACA,EAAsCF,mBAAS,CAC7CnG,OAAQ,EACRE,MAAO,EACPpC,EAAG,EACHwI,EAAG,IAJL,WAAOC,EAAP,KAAoBC,EAApB,KAWAC,qBAAU,WACR,GAAItB,GACF,GAAGrG,EAAM,CACP,IAAM4H,EAAUhB,EACb3G,QAAO,SAAC4H,GAAD,OAAmC,IAA5B7H,EAAM8H,QAAQD,EAAE7H,UAC9BxD,KAAI,SAACqL,GAAD,OAAOA,EAAE9H,SACbnG,KAAK,MAER2N,EAAgBK,QAGf,CAAC,IAAD,EACGG,EAAM,SAAGnB,EAAK7H,MAAK,SAAC8I,GAAD,OAAOA,EAAE7H,QAAUA,WAAhC,EAAG,EAAqCD,MAChDgI,GACFR,EAAgBQ,MAGnB,CAACnB,EAAM5G,IAEV,IAAMgI,EAAWC,uBAAY,SAACC,GAC5B,OAAI7B,IACCrG,IACuC,IAAjCA,EAAM8H,QAAQI,GAOhBlI,IAAUkI,IAElB,CAAClI,IAEEmI,EAAYF,uBAAY,SAACC,GAC7B,GAAI7B,EAAa,CACf7L,QAAQ4N,IAAI,eAAgBF,GAC5B1N,QAAQ4N,IAAI,QAASpI,GAGrB,IAAIqI,GAAc,EASlB,QARanJ,IAAVc,EACDuG,EAAS2B,GAETG,EAAarI,EAAM8H,QAAQI,GAG7B1N,QAAQ4N,IAAI,aAAcC,IAEN,IAAhBA,OAEWnJ,IAAVc,GAAwC,IAAjBA,EAAMpB,OAC9B2H,EAAS,CAAC2B,GAActO,KAAK,MAE7B2M,EAAS,CAACvG,EAAOkI,GAActO,KAAK,UAInC,CAEHY,QAAQ4N,IAAIpI,GACZ,IAAIsI,EAAWtI,EACZuI,oBAASD,KACV9N,QAAQ4N,IAAI,yBACZE,EAAWA,EAASE,UAAU,GAAGC,MAAM,MAEzCH,EAAWA,EAASrI,QAAO,SAACD,GAAD,OAAWA,GAASkI,KAActO,KAAK,KAClEY,QAAQ4N,IAAIE,GACZ/B,EAAS+B,SAKX/B,EAAS2B,KAEV,CAAClI,IAEJ,OACE,cAACkF,GAAA,EAAD,CACEC,QAASA,EACTC,UAAW,kBAAMA,EAAUpF,IAC3B0D,MAAOA,EACP2B,OACE,cAACqD,GAAA,EAAD,CAA+B9L,QAAS0J,EAAcqC,SAtF3C,SAACC,GAChBlB,EAAekB,EAAMC,YAAYC,SAqF6C1B,mBAAoBA,EAA9F,SACE,cAAClL,EAAA,EAAD,CAAM6M,cAAe,OAArB,SACE,cAACC,EAAA,EAAD,IACEhJ,MAAOsH,EACPpB,IAAKA,EACLO,KAAMA,EACN1G,MAAOA,EACP2G,YAAaA,EACbqC,cAAe,OACfrF,MAAOA,EACPuF,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB/L,KAAMgI,EAAU,UAAY,eAC/CwB,QAKZxK,MAAK,IACHL,SAAQ,MAAE2L,OAAF,EAAEA,EAAarG,MACvBA,MAAK,MAAEqG,OAAF,EAAEA,EAAarG,MACpBoE,UAAS,MAAEiC,OAAF,EAAEA,EAAavG,QACrB6F,GAzBP,SA4BA,cAAC3D,EAAA,EAAD,CAAY+F,SAAS,EAAOhN,MAAK,MAC3B2K,EACA,CACA5F,OAAQ4F,GAER,CACAtE,UAAWqE,GAA8B,MAN/C,SASGD,EAAKpK,KAAI,SAAC4M,EAAOC,GAAR,OAAoB,eAAC,WAAD,WAC5B,cAACX,GAAA,EAAD,CACEvM,MAAO,CACL6B,cAAe,MACfE,WAAY,SACZpC,SAAU,QAEZc,QAAS,kBAAMpC,QAAQ4N,IAAIgB,IAN7B,SAgBE,eAAC,WAAD,WACE,cAAClE,GAAA,EAAKpF,KAAN,CACE2D,WAAU,IACRnG,MAAO0K,EAASoB,EAAMpJ,OAClBwG,IAAgB9C,GAASyC,GAAanF,OAAOC,SAC5CyC,GAASyC,GAAanF,OAAOxD,MAC9BwK,EAASoB,EAAMpJ,OACfmH,EACAH,GAGNxH,MAAO4J,EAAME,QAAUF,EAAMrJ,MAE7BwJ,aAAc,CACZnI,MAAO,OACPtF,SAAU,QAGZK,MAAO,CACL4B,KAAM,EACNqD,MAAO,OACPtF,SAAU,QAOZc,QAAS,WACPpC,QAAQ4N,IAAI,cACZD,EAAUiB,EAAMpJ,UAInBqG,GACE,cAACmD,GAAA,EAASC,QAAV,CACC/F,MAAO,CACL1C,OAAQ,CAAEiB,OAAM,MAAEkE,OAAF,EAAEA,EAAanF,OAAOC,UAExCyI,OAAQ1B,EAASoB,EAAMpJ,OAAS,UAAY,YAC5CpD,QAAS,kBAAMuL,EAAUiB,EAAMpJ,eAKvC,cAAC2F,GAAA,EAAD,MA9D2CyD,EAAMpJ,iBC7H5C2J,GAAc,SAAC1N,GAG1B,MAAwDsC,WAAetC,EAAMkJ,SAA7E,WAAOyE,EAAP,KAA6BC,EAA7B,KAGAtL,aAAgB,WACdsL,EAAwB5N,EAAMkJ,SAC9B2E,EAAW7N,EAAM8N,WAAWC,QAAU/N,EAAM8N,WAAWC,QAAU,IACjEC,EAAShO,EAAM8N,WAAWvK,MAAQvD,EAAM8N,WAAWvK,MAAQ,oBAC1D,CAACvD,IAEJ,IACMiO,EAAkB,WACtBL,GAAwB,GACxBC,EAAW,IACX7N,EAAMkO,WAGR,EAAoD5L,WAAetC,EAAM8N,WAAWK,mBAAqBnO,EAAM8N,WAAWK,mBAAqB,kBAA/I,WAAOA,EAAP,KAA2BC,EAA3B,KASA,EAA8B9L,WAAetC,EAAM8N,WAAWC,QAAU/N,EAAM8N,WAAWC,QAAU,IAAnG,WAAOA,EAAP,KAAgBF,EAAhB,KACA,EAA0BvL,WAAetC,EAAM8N,WAAWvK,MAAQvD,EAAM8N,WAAWvK,MAAQ,kBAA3F,WAAOA,EAAP,KAAcyK,EAAd,KAIMK,EAAsBC,qBAHR,SAACC,GACnBP,EAASO,KAEuC,KAclD,SAASC,EAAkBC,EAAOC,EAAKrC,GACrC,IAAIsC,EAAaZ,EAEjBY,EAAWF,GAAOC,GAAOrC,EAEzBwB,EAAW,KAAIc,IAsCjB,SAASC,IACP,IAAIC,EAAc,yBACdC,EAAI,EAuER,OAtEAf,EAAQxN,KAAI,SAAAyD,GAEc,aAArBA,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,YAGT,iBAArBhL,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,gBAGT,gBAArBhL,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAPhL,OAA4BA,EAAOD,MAAM,KAGlC,oBAArBC,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,OAAShL,EAAOD,OAGzB,oBAArBC,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,MAAQhL,EAAOD,OAGxB,gCAArBC,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,OAAShL,EAAOD,OAGzB,iBAArBC,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,MAAQhL,EAAOD,OAGxB,6BAArBC,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,OAAShL,EAAOD,OAGzB,eAArBC,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,YAAchL,EAAOD,MAAQ,QAAUC,EAAOiL,QAGvD,mBAArBjL,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,gBAAkBhL,EAAOD,MAAQ,QAAUC,EAAOiL,QAG3D,gBAArBjL,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,wBAGT,oBAArBhL,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAS,oBAGT,aAArBhL,EAAO+K,YACRF,GAAe7K,EAAOgL,OAAPhL,WAAgCA,EAAOD,MAAM,MAGtC,qBAArBC,EAAO+K,YACRF,GAAe,QAAS7K,EAAOgL,OAAhB,WAAyChL,EAAOD,MAAM,MAIpE+K,IAAMf,EAAQpL,SAEbkM,GADwB,mBAAvBV,EACc,QAEA,QAInBW,OAGKD,EAIT,OAEE,cAACK,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CACEjG,QAASyE,EACTxE,UAAW8E,EACX/N,MAAO,CAACL,SAAS,QAASH,SAAU,MAAO8E,WAAY,OAAQ4K,YAAa,QAH9E,UAKE,cAACD,GAAA,EAAOE,MAAR,4BACA,eAACF,GAAA,EAAOG,QAAR,WACE,cAACvC,EAAA,EAAD,CACEjJ,MAAO,OACPC,MAAOR,EACPgM,UAAU,EACVC,aAAc,SAACjO,GAAD,OAAU8M,EAAoB9M,MAG9C,eAACtB,EAAA,EAAD,CAAMC,MAAOC,GAAOsP,IAApB,UACE,cAACnO,EAAA,EAAD,CACEpB,MAAO,CAACqJ,UAAW,MAAOmG,aAAa,OADzC,kCAKA,cAACC,EAAA,EAAD,CACEhP,QA3KqB,WAE7ByN,EADwB,mBAAvBD,EACqB,yBAEA,mBAwKdjO,MAAO,CAACqJ,UAAU,MAAOmG,aAAa,OAFxC,SAGEvB,OAIFJ,EAAQxN,KAAI,SAACqP,EAAUnP,GACrB,OACE,eAACR,EAAA,EAAD,CAAMC,MAAOC,GAAOsP,IAApB,UACE,cAAC,GAAD,CACEI,QAAS7P,EAAM6P,QACf9B,QAAS6B,EACTE,aAAc,SAACC,GAAD,OAAUvB,EAAkB/N,EAAO,SAAUsP,IAC3DC,gBAAiB,SAACD,GAAD,OAAUvB,EAAkB/N,EAAO,YAAasP,IACjEE,YAAa,SAACF,GAAD,OAAUvB,EAAkB/N,EAAO,QAASsP,IACzDG,aAAc,SAACH,GAAD,OAAUvB,EAAkB/N,EAAO,SAAUsP,MAE7D,cAAC9P,EAAA,EAAD,CAAMC,MAAO,CAAC4B,KAAM,KAAMG,WAAY,SAAUiC,eAAgB,UAAhE,SACE,cAACxD,EAAA,EAAD,CACEC,QAAS,kBA/K7B,SAA6BwP,GAC3B,IAAIxB,EAAaZ,EACjBY,EAAWyB,OAAOD,EAAe,GACjCtC,EAAW,KAAIc,IA4KkB0B,CAAoB5P,IADrC,SAGE,cAACQ,EAAA,EAAD,CAASC,KAAK,WAAWE,KAAM,GAAIC,MAAM,kBAbjBZ,MAqBpC,cAACR,EAAA,EAAD,CAAMC,MAAOC,GAAOsP,IAApB,SACE,cAAC,GAAD,CACEI,QAAS7P,EAAM6P,QACfS,kBAtLZ,SAA0BC,GACxB,IAAI5B,EAAaZ,EACjBY,EAAWjR,KAAK,CAACsR,OAAQuB,IACzB1C,EAAW,KAAIc,YA0LX,eAACQ,GAAA,EAAOqB,QAAR,WAEE,cAACb,EAAA,EAAD,CACEhP,QAAS,kBAhKnB,WAEE,IAAI8P,EAAgB,CAClBlN,MAAOA,EACP4K,mBAAoBA,EACpBhI,MAAOyI,IACPb,QAASA,GAGR/N,EAAM8N,WAAWvG,KAClBkJ,EAAclJ,GAAKvH,EAAM8N,WAAWvG,IAGtC0G,IACAjO,EAAM0Q,aAAaD,GAkJIC,IACfxQ,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,SAKE,cAACvJ,EAAA,EAAD,CAASC,KAAK,QAAQE,KAAM,GAAIC,MAAM,cAGxC,cAACsO,EAAA,EAAD,CACEhP,QAAS,kBAAMsN,KACf/N,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,oBAQA,cAACmF,EAAA,EAAD,CACEhP,QAAS,kBAjMnB,WAEE,IAAI8P,EAAgB,CAClBlN,MAAOA,EACP4K,mBAAoBA,EACpBhI,MAAOyI,IACPb,QAASA,GAGR/N,EAAM8N,WAAWvG,KAClBkJ,EAAclJ,GAAKvH,EAAM8N,WAAWvG,IAGtCvH,EAAM4Q,mBAAmBH,GACzBxC,IAmLuB2C,IACf1Q,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,4BAiBJqG,GAAe,SAAC7Q,GAKpB,IAEwB+D,EAAOkL,EAF/B,EAAoD3M,WAAetC,EAAM+N,QAAQgB,UAAY+B,EAAsB9Q,EAAM+N,QAAQgB,WAAa,QAA9I,WAAOgC,EAAP,KAA2BC,EAA3B,KA4DMC,EAAgB,CAGpB,CAACnN,MAAM,WAAYC,MAAM,YACzB,CAACD,MAAM,eAAgBC,MAAM,gBAC7B,CAACD,MAAM,cAAeC,MAAM,eAC5B,CAACD,MAAM,kBAAmBC,MAAM,mBAChC,CAACD,MAAM,kBAAmBC,MAAM,mBAChC,CAACD,MAAM,8BAA+BC,MAAM,+BAC5C,CAACD,MAAM,eAAgBC,MAAM,gBAC7B,CAACD,MAAM,2BAA4BC,MAAM,4BACzC,CAACD,MAAM,aAAcC,MAAM,cAC3B,CAACD,MAAM,iBAAkBC,MAAM,kBAC/B,CAACD,MAAM,cAAeC,MAAM,eAC5B,CAACD,MAAM,kBAAmBC,MAAM,mBAChC,CAACD,MAAM,WAAYC,MAAM,YACzB,CAACD,MAAM,mBAAoBC,MAAM,qBAoB7BkM,EAAc,SAAC5D,GACnBrM,EAAMiQ,YAAY5D,IAEd6E,EAAsB5C,oBAAS2B,EAAa,KAK5CkB,EAAuB7C,qBAHR,SAACjC,GACpBrM,EAAMkQ,aAAa7D,KAE+B,KAOpD,SAASyE,EAAsBM,GAC7B,MACmB,aAAjBA,GACiB,iBAAjBA,GACiB,gBAAjBA,GACiB,oBAAjBA,EAEO,OAIU,eAAjBA,GACiB,mBAAjBA,EAEO,aAGF,OAMT,OACE,eAACnR,EAAA,EAAD,CAAMC,MAAOC,GAAOsP,IAApB,UACE,cAACxP,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SACE,cAAC,GAAD,CACElL,MAAO,gBACPC,MAAO/D,EAAM+N,QAAQiB,OACrBrE,KAAM0G,GAAiBrR,EAAM6P,SAC7BpM,cAjDa,SAAC6N,GACpBtR,EAAM8P,aAAawB,QAoDjB,cAACrR,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SACE,cAAC,GAAD,CACElL,MAAO,YACPC,MAAO/D,EAAM+N,QAAQgB,UACrBpE,KAAMsG,EACNxN,cA5CgB,SAAC2N,GACvBJ,EAAsBF,EAAsBM,IAC5CpR,EAAMgQ,gBAAgBoB,QA8CpB,cAACnR,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,UAxJoBjL,EAyJF/D,EAAM+N,QAAQhK,MAxJR,SAAvBgN,EAEC,cAAChE,EAAA,EAAD,CACEjJ,MAAO,GACPC,MAAO,GACPwL,UAAU,IAKU,SAAvBwB,EAEC,cAAChE,EAAA,EAAD,CACEjJ,MAAO,QACPC,MAAOA,GAAgB,GACvBwL,UAAU,EACVC,aAAe,SAAAjO,GAAU2P,EAAoB3P,MAKzB,eAAvBwP,EAEC,eAAC9Q,EAAA,EAAD,WACE,cAAC8M,EAAA,EAAD,CACEjJ,MAAO,QACPC,MAAOA,GAAgB,GACvBwL,UAAU,EACVC,aAAe,SAAAjO,GAAU2P,EAAoB3P,MAE/C,cAACwL,EAAA,EAAD,CACEjJ,MAAO,UACPC,MAAOkL,GAAkB,GACzBM,UAAU,EACVC,aAAe,SAAAjO,GAAU4P,EAAqB5P,SAM5B,aAAvBwP,EAEC,cAAC,GAAD,CACEjN,MAAO,QACPC,MAAOA,GAAgB,GACvB4G,KAAMsG,EACNxN,cAAewM,SANrB,SAwHEsB,GAAsB,SAACvR,GAK3B,IAQA,EAA0BsC,WAAe,IAAzC,WAAOyB,EAAP,KAAcuG,EAAd,KAEA,OACE,eAACrK,EAAA,EAAD,CAAMC,MAAOC,GAAOsP,IAApB,UACE,cAACxP,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SACE,cAAC,GAAD,CACElL,MAAO,gBACPC,MAAOA,EACPyN,SAAS,EACT7G,KAAM0G,GAAiBrR,EAAM6P,SAC7BpM,cAAe,SAAA4I,GAAQ,OAlBV,SAACA,GACpB/B,EAAS,IACTtK,EAAMsQ,kBAAkBjE,GAgBSyD,CAAazD,QAI5C,cAACpM,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SACE,cAACjC,EAAA,EAAD,CACEjJ,MAAO,GACPC,MAAO,GACPwL,UAAU,MAId,cAACtP,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SACE,cAACjC,EAAA,EAAD,CACEjJ,MAAO,GACPC,MAAO,GACPwL,UAAU,UASdkC,GAAiB,SAACzR,GAEtB,MAA8BsC,YAAe,GAA7C,WAAO4G,EAAP,KAAgBwI,EAAhB,KACA,EAA0BpP,WAAetC,EAAM+D,OAA/C,WAAOA,EAAP,KAAcuG,EAAd,KAEA,OACE,cAAC,GAAD,CACExG,MAAO9D,EAAM8D,MACb0G,KAAM,OACNJ,aAAa,EACblB,QAASA,EACTmB,aAAc,kBAAMqH,GAAW,IAC/BvI,UAAW,kBAAMuI,GAAW,IAC5B3N,MAAOA,EACPuG,SAAU,SAACqH,GACL3R,EAAMwR,SACRlH,EAASqH,GAEXD,GAAW,GACR1R,EAAMyD,eACPzD,EAAMyD,cAAckO,IAGxBhH,KAAM3K,EAAM2K,QAQlB,SAAS0G,GAAiBO,GACxB,IAAIjH,EAAO,GAIX,OAHAiH,EAAYrR,KAAI,SAAAyO,GACdrE,EAAKjN,KAAK,CAACoG,MAAOkL,EAAQjL,MAAOiL,OAE5BrE,EAMT,IAAMxK,GAASuB,IAAWC,OAAO,CAC/BgP,OAAQ,CACNnM,WAAY,QAEdiL,IAAK,CACHoC,QAAQ,OACRC,SAAU,GACV/P,cAAc,MACdgQ,aAAa,SACbvL,WAAW,QAEbwI,OAAQ,CACN7J,MAAM,MACNiK,YAAa,QC5hBV,SAAS4C,GAAUC,GAIxB,IAHA,IAAI1Q,EAAO,GACP2Q,EAAW,iEAENpD,EAAI,EAAGA,EAAImD,EAAKnD,IACvBvN,GAAQ2Q,EAASC,OAAOC,KAAKC,MAAMD,KAAKE,SAAWJ,EAASvP,SAE9D,OAAOpB,E,kCCATgR,KAAOC,MAAMC,cAAe,EAC5BF,KAAOC,MAAME,OAAOC,KAAOA,GAEpB,IAAMC,GAAc,SAAC5S,GAE1B,IAAM0E,EAAapC,aAAiBsC,IAGpC,EAAwDtC,WAAetC,EAAMkJ,SAA7E,WAAO2J,EAAP,KAA6BC,EAA7B,KACA,EAAsDxQ,YAAe,GAArE,WAAOyQ,EAAP,KAA4BC,EAA5B,KACA,EAA8B1Q,WAAe,IAA7C,WAAO2Q,EAAP,KAAgBC,EAAhB,KACA,EAAkC5Q,WAAe,IAAjD,WAAO6Q,EAAP,KAAkBC,EAAlB,KACA,EAAkC9Q,WAAe,IAAjD,WAAO+Q,EAAP,KAAkBC,EAAlB,KAEA,EAAoEhR,YAAe,GAAnF,WAAOiR,EAAP,KAAmCC,EAAnC,KACA,EAAwClR,WAAetC,EAAMyT,cAA7D,WAAOA,EAAP,KAAqBC,EAArB,KAGApR,aAAgB,WACdwQ,EAAwB9S,EAAMkJ,SAC9BwK,EAAgB1T,EAAMyT,gBACrB,CAACzT,IAEJ,IACMiO,EAAkB,WACtB6E,GAAwB,GACxBE,GAAuB,GACvBQ,GAA8B,GAC9BE,GAAgB,GAChBR,EAAW,IACXE,EAAa,IACbE,EAAa,IACbtT,EAAMkO,WAaR,EAAwB5L,aAAxB,WACMqR,GADN,UACyB,CACvB,WACA,oEACA,6BAGIC,EAAa,oBAAApX,EAAAC,OAAA,kEAAAD,EAAA,MACEqX,KAAgC,CAAEnX,KAAMiX,EAAkBG,sBAAsB,IAAQ5V,MAAK,SAAAC,GAC9G,GAAsB,YAAlBA,EAASzB,KAAoB,CAC/B,IAAIqX,EAAY5V,EAAS+C,KAAKsL,MAAM,KAChCwH,EAAWD,EAAUA,EAAUpR,OAAS,GAG5C,IAAoD,IAAjDgR,EAAiB9H,QAAQ1N,EAAS8V,UAEnC,OAIc,QAAbD,GACDE,SAAW/V,EAASgW,KAAM,CACxBC,QAAQ,EACRC,SAAU,SAASC,GACjBC,EAAkBD,EAAQvE,SAKhB,SAAbiE,GACDzB,KAAOiC,QAAQ,0CAA2C,CAACrW,EAASmH,MAAMpH,MAAK,SAASoW,GACtFC,EAAkBD,MACjBjW,MAAME,QAAQD,OAIH,QAAb0V,GACDzB,KAAOiC,QAAQ,yCAA0C,CAACrW,EAASmH,MAAMpH,MAAK,SAASoW,GACrFC,EAAkBD,MACjBjW,MAAME,QAAQD,YAMnBC,QAAQ4N,IAAI,oBAtCC,2EA2CnB,SAASoI,EAAkBE,GACzB,IAAIC,EAAS,CAACzB,QAAS,GAAIE,UAAW,GAAIE,UAAW,IA2DrD,OA1DAoB,EAASlU,KAAI,SAAAoU,GAEX,cAA2BC,OAAOC,QAAQF,GAA1C,eAAmD,CAAC,IAAD,kBAAvCjG,EAAuC,KAAlC3K,EAAkC,KAC9C2K,EAAIoG,cAAc9R,SAAS,UAC5B2R,EAAOjG,GAAOqG,EAAkBhR,IAIjC4Q,EAAOK,UAC4B,WAAjCL,EAAOK,QAAQF,eAChBJ,EAAOzB,QAAQvV,KAAKiX,GAGc,QAAjCA,EAAOK,QAAQF,eAChBJ,EAAOvB,UAAUzV,KAAKiX,GAGY,WAAjCA,EAAOK,QAAQF,eAChBJ,EAAOrB,UAAU3V,KAAKiX,IAIvBA,EAAM,UACgC,WAApCA,EAAM,QAAYG,eACnBJ,EAAOzB,QAAQvV,KAAKiX,GAGiB,QAApCA,EAAM,QAAYG,eACnBJ,EAAOvB,UAAUzV,KAAKiX,GAGe,WAApCA,EAAM,QAAYG,eACnBJ,EAAOrB,UAAU3V,KAAKiX,IAIvBA,EAAM,UACgC,WAApCA,EAAM,QAAYG,eACnBJ,EAAOzB,QAAQvV,KAAKiX,GAGiB,QAApCA,EAAM,QAAYG,eACnBJ,EAAOvB,UAAUzV,KAAKiX,GAGe,WAApCA,EAAM,QAAYG,eACnBJ,EAAOrB,UAAU3V,KAAKiX,OAO5BzB,EAAW,KAAIwB,EAAOzB,UACtBG,EAAa,KAAIsB,EAAOvB,YACxBG,EAAa,KAAIoB,EAAOrB,YACxBL,GAAuB,GAEhB0B,EAGT,SAASK,EAAkBE,GACzB,IAAIC,EAAY9C,KAAKC,MAAM4C,EAAS,OAEhCE,EAAY,IAAIC,KAAiB,KADV,MAAXF,IAGZG,EAAiBJ,EAAS7C,KAAKC,MAAM4C,GAAU,KAE/CK,EAAgBlD,KAAKC,MAAM,MAAQgD,GAEnCE,EAAUD,EAAgB,GAE9BA,GAAiBC,EAEjB,IAAIC,EAAQpD,KAAKC,MAAMiD,EAAa,MAChCG,EAAUrD,KAAKC,MAAMiD,EAAgB,IAAM,GAE3CI,EAAa,IAAIN,KAAKD,EAAUQ,cAAeR,EAAUS,WAAYT,EAAUU,UAAWL,EAAOC,EAASF,GAASO,qBAOvH,MAJkB,iBAAfJ,IACDA,EAAa,IAAIN,KAAKH,IAGjBS,EAgGT,OAEE,cAACxG,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CACEjG,QAAS2J,EACT1J,UAAW8E,EACX/N,MAAO,CAACL,SAAS,QAASH,SAAU,MAAO8E,WAAY,OAAQ4K,YAAa,QAH9E,UAKE,cAACD,GAAA,EAAOE,MAAR,0BACA,cAACF,GAAA,EAAOG,QAAR,UAnGDmE,EAEC,eAACxT,EAAA,EAAD,WACE,cAACqB,EAAA,EAAD,CAAMpB,MAAO,CAAC0B,UAAU,UAAxB,SAAoC5B,EAAM+V,iBAC1C,cAACpG,EAAA,EAAD,CACEhP,QAAS,kBA7JjBX,EAAMgW,oBACN/H,KA6JQ/N,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,SAKE,cAAClJ,EAAA,EAAD,+BAMLiS,EAEC,eAACtT,EAAA,EAAD,WACE,cAACqB,EAAA,EAAD,CAAMpB,MAAO,CAAC0B,UAAU,UAAxB,uDACA,cAACqU,EAAA,EAAD,CAAmBC,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,aAK/D+N,EAoBF,eAAC9S,EAAA,EAAD,WACE,cAACqB,EAAA,EAAD,CAAMpB,MAAO,CAACiW,cAAe,QAA7B,2FAGA,eAACxG,EAAA,EAAD,CACEhP,QAAS,kBAAMiT,KACf1T,MAAO,CAACwP,aAAa,QACrBlF,KAAM,YAHR,UAKE,cAACvJ,EAAA,EAAD,CAASC,KAAK,YAAYE,KAAM,GAAIC,MAAM,YAC1C,cAACC,EAAA,EAAD,yCAGF,cAAC,GAAD,CACEiC,MAAO,UACPpC,KAAM,sBACNiV,MAAOnD,IAET,cAAC,GAAD,CACE1P,MAAO,YACPpC,KAAM,sBACNiV,MAAOjD,IAET,cAAC,GAAD,CACE5P,MAAO,YACPpC,KAAM,iBACNiV,MAAO/C,IAET,eAAC1D,EAAA,EAAD,CACEhP,QAAS,kBA5Nf6S,GAA8B,QAC9BxT,EAAMqW,cAAcpD,EAASE,EAAWE,IA4NlCnT,MAAO,CAACwP,aAAa,OAAQnG,UAAW,QACxClI,MAAO,UACPmJ,KAAM,YAJR,UAME,cAACvJ,EAAA,EAAD,CAASC,KAAK,YAAYE,KAAM,GAAIC,MAAM,YAC1C,cAACC,EAAA,EAAD,mCArDF,eAACrB,EAAA,EAAD,WACE,cAACqB,EAAA,EAAD,CAAMpB,MAAO,CAACiW,cAAe,QAA7B,2FAGA,eAACxG,EAAA,EAAD,CACEhP,QAAS,kBAAMiT,KACf1T,MAAO,CAACwP,aAAa,QACrBlF,KAAM,YAHR,UAKE,cAACvJ,EAAA,EAAD,CAASC,KAAK,YAAYE,KAAM,GAAIC,MAAM,YAC1C,cAACC,EAAA,EAAD,kCAsEJ,cAAC6N,GAAA,EAAOqB,QAAR,UAEE,cAACb,EAAA,EAAD,CACEhP,QAAS,kBAAMsN,KACf/N,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,SAKE,cAAClJ,EAAA,EAAD,+BAYNgV,GAAmB,SAACtW,GACxB,MAAgCsC,YAAe,GAA/C,WAAOiU,EAAP,KAAiBC,EAAjB,KAIA,OAEI,cAAC,IAAKlP,UAAN,CACE/D,MAAOvD,EAAMuD,MAAQvD,EAAMuD,MAAQ,MAAQvD,EAAMoW,MAAMzT,OAAS,UAChE8T,KAAM,kBAAM,cAAC,IAAKxJ,KAAN,CAAW9L,KAAMnB,EAAMmB,QAEnCoV,SAAUA,EACV5V,QATc,kBAAM6V,GAAaD,IAInC,SAQE,cAAC,GAAD,CACExG,KAAM/P,EAAMoW,WAMhBM,GAAe,SAAC1W,GAEpB,MAA8BsC,WAAetC,EAAM+P,MAAnD,WAAO4G,EAAP,KACA,GADA,KACoCrU,WAAeqU,EAAQ,GAAK/B,OAAOgC,KAAKD,EAAQ,IAAM,KAA1F,WAAOE,EAAP,KAIMC,GAJN,KAIiC,CAAC,GAAI,GAAI,GAAI,MAC9C,EAAkCxU,WAAeqU,EAAQI,MAAM,EAAGD,EAAyB,KAA3F,WAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAwB3U,WAAe,GAAvC,WAAO4U,EAAP,KAAaC,EAAb,KACA,EAAqD7U,WAAewU,EAAyB,IAA7F,WAAOM,EAAP,KAA6BC,EAA7B,KACMC,EAAOJ,EAAOE,EACdG,EAAKnF,KAAKoF,KAAKN,EAAO,GAAKE,EAAsBT,EAAQhU,QAM/DL,aAAgB,WACd,IAAImV,EAAUd,EAAQI,MAAMO,EAAMA,EAAKF,GACvCH,EAAaQ,KACZ,CAACP,IAcJ,OARA5U,aAAgB,WACd6U,EAAQ,GACR,IAAIM,EAAUd,EAAQI,MAAMO,EAAMA,EAAKF,GACvCH,EAAaQ,KACZ,CAACL,IAKF,eAACM,GAAA,EAAD,WACE,cAACA,GAAA,EAAUC,OAAX,UAEId,EAAWtW,KAAI,SAAA6T,GACb,OACE,cAACsD,GAAA,EAAUrI,MAAX,UAIG+E,GAHIA,QAUf,cAACjN,EAAA,EAAD,UAEI6P,EAAUzW,KAAI,SAAAqX,GACZ,OAEE,cAACF,GAAA,EAAUG,IAAX,UAKIhB,EAAWtW,KAAI,SAAA6T,GACb,IACIrQ,EADA+T,EAASF,EAAMrQ,GAAK6M,EAUxB,OALErQ,EADmB,OAAlB6T,EAAMxD,GACC,GAEAwD,EAAMxD,GAId,cAACsD,GAAA,EAAUK,KAAX,UAIGlZ,KAAKC,UAAUiF,IAHX+T,OAjBR9F,GAAU,UA+BzB,cAAC0F,GAAA,EAAUM,WAAX,CACEd,KAAMA,EACNe,cAAe7F,KAAK8F,KAAKvB,EAAQhU,OAASyU,GAC1Ce,aAAc,SAAAjB,GAAI,OA7EL,SAACA,GAClBC,EAAQD,GA4EkBkB,CAAWlB,IACjCpT,MAAUwT,EAAO,EAAZ,IAAiBC,EAAjB,OAA0BZ,EAAQhU,OACvCmU,yBAA0BA,EAC1BM,qBAAsBA,EACtBC,qBAxEqB,SAACD,GAC1BC,EAAqBD,IAwEjBiB,wBAAyB,sBAS3BlY,GAASuB,IAAWC,OAAO,CAC/BgP,OAAQ,CACNnM,WAAY,QAEdiL,IAAK,CACHoC,QAAQ,OACRC,SAAU,GACV/P,cAAc,MACdgQ,aAAa,SACbvL,WAAW,QAEbwI,OAAQ,CACN7J,MAAM,MACNiK,YAAa,Q,qkBC1bjB,IA29BekJ,GA39BF,SAACtY,GAEZ,IAAM0E,EAAapC,aAAiBsC,IAC9BhE,EAAa2X,eAEbpY,EAASuB,IAAWC,OAAO,CAC/B6W,WAAY,CACVtU,eAAgB,OAChBpC,KAAM,GAER2W,UAAW,CACT3W,KAAK,EACLN,SAAU,SACV6B,UAAW,UAEbqV,KAAM,CACJC,SAAU,WACVrU,gBAAiB,UACjBsU,aAAa,OACbC,OAAQ,MACR/G,SAAU,EACVgH,UAAW,gCACX3T,MAAO,MACPX,WAAY,KACZkL,aAAc,KACd7N,QAAQ,GAEVkX,YAAa,CACXzU,gBAAiB,UACjB0U,OAAQ,WAEVC,KAAM,CAEJpZ,SAAU,QAEVsC,WAAY,SACZC,aAAc,WACdF,SAAU,SAEVgX,gBAAiB,EACjBC,eAAgB,EAChBtS,YAAa,OAEfuS,SAAU,CACR1Z,SAAU,OACVG,SAAU,OACVqZ,gBAAiB,EACjBC,eAAgB,EAChBtS,YAAa,OAEfwS,YAAa,CACX3Z,SAAU,OACVG,SAAU,OACV2E,WAAY,OACZ0U,gBAAiB,EACjBC,eAAgB,EAChBtS,YAAa,OAEfyS,WAAW,CACTnX,WAAY,UAEdoX,WAAY,CACVhT,UAAW,OACXtB,OAAQ,OACRC,UAAW,KAGbsU,UAAW,CACT1X,KAAM,EACN2X,OAAQ,iBACRb,aAAc,OACdE,UAAU,QAEZY,UAAW,CACR5X,KAAM,EACNwC,gBAAiB,OACjBrC,WAAY,SACZsH,UAAW,QAEdoQ,SAAS,CACPrV,gBAAiBI,EAAWK,OAAOC,QACnC3D,MAAO,aASX,IAAIrB,EAAM+P,KACR,OACE,cAACkG,EAAA,EAAD,CAAmBC,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,UAKjE,GAAGhF,EAAM+P,KAAKzR,MACZ,OACE,cAACgD,EAAA,EAAD,oBAIJ/C,QAAQ4N,IAAInM,GAGZ,IAAM4Z,EAAY,WAChBhZ,EAAWiZ,UAAU,CACnBC,SAAW,MACXC,UAAY/Z,EAAMga,aAKtB,GAAyB,IAAtBha,EAAM+P,KAAKpN,OACZ,OACE,eAAC1C,EAAA,EAAD,CAAMC,MAAOC,EAAOuZ,UAApB,UACE,cAACpY,EAAA,EAAD,CAAMpB,MAAO,CAACiF,MAAM,MAAOvD,UAAU,UAArC,uCACA,cAAC+N,EAAA,EAAD,CACEhP,QAAS,kBAAMiZ,KACf1Z,MAAO,CAAC+Z,QAAS,EAAG1Q,UAAW,QAC/BiB,KAAM,YACNnJ,MAAOqD,EAAWK,OAAOC,QACzB7D,KAAM,OALR,2CAeNmB,aAAgB,cAEb,IAYHA,aAAgB,WACd4X,EAAWla,EAAM+P,MACjBoK,EAAevF,OAAOgC,KAAK5W,EAAM+P,KAAK,OACrC,CAAC/P,EAAM+P,OAIV,MAA8BzN,WAAetC,EAAM+P,MAAnD,WAAO4G,EAAP,KAAgBuD,EAAhB,KACA,EAAoC5X,WAAetC,EAAM+P,MAAzD,WAAOqK,EAAP,KACA,GADA,KACoC9X,WAAeqU,EAAQ,GAAK/B,OAAOgC,KAAKD,EAAQ,IAAM,KAA1F,WAAOE,EAAP,KAAmBsD,EAAnB,KAEA7X,aAAgB,WACd6U,EAAQ,GACRF,EAAaN,EAAQI,MAAM,EAAGK,MAC7B,CAACT,IAGJ,IAAMG,EAA2B,CAAC,GAAI,IAAK,IAAK,KAChD,EAAwBxU,WAAe,GAAvC,WAAO4U,EAAP,KAAaC,EAAb,KACA,EAAqD7U,WAAewU,EAAyB,IAA7F,WAAOM,EAAP,KAA6BC,EAA7B,KACMC,EAAOJ,EAAOE,EACdG,EAAKnF,KAAKoF,KAAKN,EAAO,GAAKE,EAAsBT,EAAQhU,QAG/D,EAA4CL,WAAe,IAA3D,WAAO+X,EAAP,KAAuBC,EAAvB,KACA,EAAkChY,WAAeqU,EAAQI,MAAM,EAAGD,EAAyB,KAA3F,WAAOE,EAAP,KAAkBC,EAAlB,KAGA,EAA8C3U,YAAe,GAA7D,WAAOiY,EAAP,KAAwBC,EAAxB,KACA,EAAwClY,WAAe,iBAAvD,WAAOmY,EAAP,KAAqBC,EAArB,KACMC,EAAoB,kBAAMH,GAAmB,IAGnD,GAAoDlY,YAAe,GAAnE,aAAOsY,GAAP,MAA2BC,GAA3B,MACA,GAA8BvY,WAAetC,EAAMyI,SAAnD,aAAOA,GAAP,MAAgBqS,GAAhB,MACA,GAAwCxY,WAAe,IAAvD,aAAOuG,GAAP,MAAqBkS,GAArB,MAGA,GAAoDzY,YAAe,GAAnE,aAAO0Y,GAAP,MAA2BC,GAA3B,MACA,GAAwC3Y,YAAe,GAAvD,aAAOmR,GAAP,MAAqBC,GAArB,MACA,GAA4CpR,WAAe,mBAA3D,aAAOyT,GAAP,MAAuBmF,GAAvB,MAGA,GAAsD5Y,WAAe,MAArE,aAAO6Y,GAAP,MAA4BC,GAA5B,MAGA,GAAwC9Y,YAAe,GAAvD,aAAO+Y,GAAP,MAAqBC,GAArB,MAuCMC,GAA2BjN,qBA/BR,SAAC/M,GAExB,GAAY,KAATA,EAAH,CAKA,IAAMia,EAAeja,EAAKuT,cAActI,MAAM,KAExCiP,EAAgBzb,EAAM+P,KAAK/L,QAAO,SAAA0X,GAStC,OAPc9G,OAAOvM,OAAOqT,GAAKC,MAAK,SAAAC,GACpC,IAAI7X,EAAQ8X,OAAOD,GACnB,GAAG7X,EAAM+Q,cAAc9R,SAASzB,EAAKuT,gBAAkB0G,EAAaxY,SAASe,EAAM+Q,eACjF,OAAO,aAOQ7R,IAAlBwY,GAAuD,GAAxBA,EAAc9Y,OAC9CuX,EAAW,CAAC,KAGZA,EAAWuB,QAtBXvB,EAAWla,EAAM+P,QA4BuC,KAStD+L,GAAoB,WACtBjB,IAAuBD,KAyGrBmB,GAAc,SAAClN,GACnB,IAAI6F,EAASnC,KAAO1D,EAAa,CAACuL,IAClCF,EAAWxF,GACX4F,EAAkBzL,IAiEdmN,GAAoB,WACxBf,IAAuBD,KA8HzB1Y,aAAgB,WACd,IAAImV,EAAUd,EAAQI,MAAMO,EAAMA,EAAKF,GACvCH,EAAaQ,KACZ,CAACP,IAMJ5U,aAAgB,WACd6U,EAAQ,GACR,IAAIM,EAAUd,EAAQI,MAAMO,EAAMA,EAAKF,GACvCH,EAAaQ,KACZ,CAACL,IA8BJ,SAAS6E,GAAYrE,GACnB,MAAwB,UAArB5X,EAAMgJ,YAA0BhJ,EAAM6J,UAErC,cAAC6N,GAAA,EAAUK,KAAX,CAEEpX,QAAS,kBAhEI4G,EAgEcqQ,EAAK,QA/DtChX,EAAWiZ,UAAU,CACnBC,SAAWvS,EACXwS,UAAY/Z,EAAMga,UAClBkC,aAAa,IAJG,IAAC3U,GAiEbrH,MAAOC,EAAOkZ,YAHhB,SAKE,cAACpY,EAAA,EAAD,CAASC,KAAK,OAAOE,KAAM,GAAIC,MAAOqD,EAAWK,OAAOC,QAASoC,QAAS,CAAC,KAAQ,cAAcwQ,EAAK,OAJjGA,EAAMf,EAAW,IAAI,SAQzB,KA8BT,SAASsF,GAAavE,EAAOwE,GAE3B,MAAwB,UAArBpc,EAAMgJ,YAA0BhJ,EAAMqc,UAEpCD,EAEC,cAAC1E,GAAA,EAAUK,KAAX,CAEE7X,MAAOC,EAAOkZ,YAFhB,SAIE,cAACpD,EAAA,EAAD,CAAmBC,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,WAHxD4S,EAAMf,EAAW,IAAI,UAS5B,cAACa,GAAA,EAAUK,KAAX,CAEEpX,QAAS,kBAlJG4G,EAkJgBqQ,EAAK,GAjJzCwD,GAAuB7T,QACvBgB,GACE,gBAAgBvI,EAAMga,UAAU,IAAIzS,EACpC7C,EAAWwD,UACX,CAACoU,SAAUtc,EAAMnD,OACjBqB,MAAK,SAAAC,GAIL,GAHAqc,GAAmB,GAGI,MAApBrc,EAASsP,OAAe,CACzBiN,EAAgBvc,EAASoe,QACzB,IAAI5Y,EAAYgT,EAAQ6F,WAAU,SAAAzZ,GAAC,OAAIA,EAAEwE,KAAOA,KAC5CkQ,EAAUd,EACdc,EAAQrH,OAAOzM,EAAW,GAC1BuW,EAAW,KAAIzC,IACf2D,GAAuB,WAGvBV,EAAgB7b,KAAKC,UAAUX,EAASoe,SACxCnB,GAAuB,SApBR,IAAC7T,GAmJZrH,MAAOC,EAAOkZ,YAHhB,SAKE,cAACpY,EAAA,EAAD,CAASC,KAAK,WAAWE,KAAM,GAAIC,MAAM,UAAU+F,QAAS,CAAC,KAAQ,eAAewQ,EAAK,OAJpFA,EAAMf,EAAW,IAAI,UAU3B,KAoBT,OACE,eAAC1P,EAAA,EAAD,WACE,eAACuQ,GAAA,EAAD,CAAWxX,MAAOC,EAAOuY,KAAMtR,QAAS,CAAC,KAAQpH,EAAMnD,MAAvD,UAEE,eAACoD,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAc,SAAUF,QAAQ,QAA9C,UACE,eAAC5B,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAc,MAAOF,QAAQ,QAA3C,UACE,cAACP,EAAA,EAAD,CAAMpB,MAAOC,EAAOsY,UAApB,SAAgCzY,EAAMuD,QAKtC,cAAC,GAAD,SACMvD,GADN,IAEE4J,WAzUW,WAGrB,IAFA,IAAI6S,EAAM,GAEFhN,EAAM,EAAGA,EAAMuH,EAAUrU,OAAQ8M,IAAM,CAC7C,IAAIiN,EAAa9H,OAAOgC,KAAKI,EAAUvH,IAAM9M,OACzCga,EAAc,EAGlB,GAAW,IAARlN,EAAU,CAGX,IAAI,IAAIf,KAAOsI,EAAUvH,GAGvBgN,GFtTH,SAAiCG,GACtC,OAAOA,EAAOzK,OAAO,GAAG2C,cAAgB8H,EAAO7F,MAAM,GAQ9C8F,CE6S0BnO,EF7SKoO,QAAQ,MAAO,IAAIC,SE6ShBJ,EAAY,EAAID,EAAa,IAAM,QACpEC,IAKF,IAAI,IAAIjO,KAFRiO,EAAc,EAEC3F,EAAUvH,GACI,KAAxBuH,EAAUvH,GAAKf,GAChB+N,GAAO,IAAMzF,EAAUvH,GAAKf,GAAO,KAAOiO,EAAY,EAAID,EAAa,IAAM,QAE7ED,GAAO,QAAUE,EAAY,EAAID,EAAa,IAAM,QAEtDC,SAIF,IAAI,IAAIjO,KAAOsI,EAAUvH,GACI,KAAxBuH,EAAUvH,GAAKf,GAChB+N,GAAO,IAAMzF,EAAUvH,GAAKf,GAAO,KAAOiO,EAAY,EAAID,EAAa,IAAM,QAE7ED,GAAO,QAAUE,EAAY,EAAID,EAAa,IAAM,QAEtDC,IAIJA,EAAc,EAIhB,IAAIK,EAAOC,SAASC,cAAc,KAClCF,EAAKzV,GAAK,eACVyV,EAAKG,aAAa,OAAQ,iCAAmC3f,mBAAmBif,IAChFO,EAAKG,aAAa,WAAYnd,EAAMuD,MAAM,QAC1C0Z,SAAShf,KAAKmf,YAAYJ,GAC1BC,SAASI,cAAc,iBAAiBC,QACxCL,SAASI,cAAc,iBAAiBE,UAwR9BzT,MAAO8P,EACPvQ,SAAUyS,GACV0B,SAAUxB,GACVvT,QAASA,GACTI,aAAcA,GACdW,eAAgB,SAACxF,GAAD,OAhcK,SAACA,GAChC,IAAImC,EAEJ,GAAGnC,EAAO,CAER,GAAc,WAAXA,EAGD,OAFA+W,GAAgB,SAChBF,IAAuBD,IAIzB,GAAc,SAAX5W,EAED,YADA6W,IAAuBD,IAKzBzU,EAAQnC,EAAOmC,MACf4U,GAAgB,MAAI/W,SAIpBmC,EAAQ,kBACR4U,GAAgB,IAGlBgB,GAAY5V,GAsa0BsX,CAAyBzZ,UAIzD,cAAC0Z,GAAA,EAAD,CACExd,MAAQC,EAAOqZ,UACf/O,YAAa,YACb+E,aAAc+L,GACdnU,QAAS,CAAC,KAAQ,qBAMpB,cAAC,GAAD,CACE8B,QAAS0R,GACT/K,QAASgH,EACT/I,WAAYjF,GACZ+H,mBAnbiB,SAACH,GAE1B,IAAIkN,EAAalV,GAEjB,GAAGgI,EAAclJ,GAAG,CAGlB,IAAIqW,EAAoBD,EAAWnB,WAAU,SAAAzZ,GAAC,OAAIA,EAAEwE,KAAOkJ,EAAclJ,MACzEoW,EAAWC,GAAqBnN,EAGhCrI,GACE,oBAAoBpI,EAAMnD,KAC1B6H,EAAWwD,UACXuI,GACAvS,MAAK,SAAAC,WAIJ,CAGH,IAAM0f,EAAS,UAAU7L,GAAU,IACnCvB,EAAclJ,GAAKsW,EACnBF,EAAWjgB,KAAK+S,GAGhBnI,GACE,oBAAoBtI,EAAMnD,KAC1B6H,EAAWwD,UACXuI,GACAvS,MAAK,SAAAC,GAEL,IAAIyf,EAAoBnV,GAAQ+T,WAAU,SAAAzZ,GAAC,OAAIA,EAAEwE,KAAOpJ,EAASoe,OAAOsB,UACpEF,EAAalV,GACjBkV,EAAWC,GAAmBrW,GAAKpJ,EAASoe,OAAOhV,GACnDuT,GAAW6C,MAMf7C,GAAW6C,GACX5C,GAAgBtK,GAChBsL,GAAYtL,EAActK,QAwYlBuK,aArYW,SAACD,GAEpB,GAAGA,EAAclJ,GAAI,CAEnB,IAAIoW,EAAalV,GACbqV,EAAsBH,EAAWnB,WAAU,SAAAzZ,GAAC,OAAIA,EAAEwE,KAAOkJ,EAAclJ,MAC3EoW,EAAWvN,OAAO0N,EAAqB,GAEvCvV,GACE,oBAAsBvI,EAAMnD,KAC5B6H,EAAWwD,UACXuI,GACAvS,MAAK,SAAAC,OAIP2c,GAAW6C,GACX5C,GAAgB,IAChBgB,GAAY,qBAoXN7N,QAAS4N,KAMX,cAAC,GAAD,CACE5S,QAAS8R,GACT9M,QAAS8N,GACT3F,cA/SY,SAACpD,EAASE,EAAWE,GACzC/K,GACE,oBAAoBtI,EAAMnD,KAC1B6H,EAAWwD,UACX,CACE+K,QAASA,EACTE,UAAWA,EACXE,UAAWA,IAEbnV,MAAK,SAAAC,GAELuV,IAAgB,GAEbvV,EAASsP,OAAS,KACnByN,GAAkB,oBAAsB/c,EAASoe,YAkS7C9I,aAAcA,GACduC,aA9RW,WACnBhW,EAAM+d,WA8REhI,eAAgBA,QAKpB,cAAC5O,EAAA,EAAD,CACE6W,YAAY,EACZ9d,MAAO,CAACR,SAAU,QAClBue,sBAAuB,CAACve,SAAU,QAHpC,SAKE,eAACO,EAAA,EAAD,CAAMC,MAAO,CAACR,SAAU,QAAxB,UACE,eAACgY,GAAA,EAAUC,OAAX,CAAkBzX,MAAOC,EAAO4Y,YAAhC,UACE,cAACrB,GAAA,EAAUrI,MAAX,CAEEnP,MAAOC,EAAOiZ,SAFhB,SAIwB,UAArBpZ,EAAMgJ,WAAyB,OAAS,QAHpC,cAML6N,EAAWtW,KAAI,SAAA6T,GFtqBxB,IAA6BwI,EEuqBlB,GAAc,OAAXxI,EAGD,OACI,eAACsD,GAAA,EAAUrI,MAAX,CAEE1O,QAAS,SAACud,IAzSZ,SAACA,EAAG9J,GACxB,IAAI+J,EAAU,4BAA8B/J,EAAS,OAClDiG,IAAmB,4BAA6BjG,EAAQ,SACzD+J,EAAU,4BAA6B/J,EAAQ,SAIjDkH,GAAgBlH,GAEhBgK,YAAW,WACT,IAAI1J,EAASnC,KAAO4L,EAAS,CAACxH,IAC9BuD,EAAWxF,GACX4F,EAAkB6D,GAClB7C,IAAgB,KAGf,KAyRoC+C,CAAcH,EAAG9J,IAClClU,MAAOC,EAAO8Y,KAHhB,WF3qBY2D,EEgrBWxI,EFxrBxC,SAA+BwI,GACpC,OAAOA,EAAOzK,OAAO,GAAGmM,cAAgB1B,EAAO7F,MAAM,GAQ9CwH,CAAsB3B,EAAOE,QAAQ,WAAY,OAAOC,SEirBrC1B,KAAiBjH,EAAS,cAAC9S,EAAA,EAAD,CAAMpB,MAAO,CAACsB,SAAU,MAAOqF,YAAa,QAA5C,wBAAyE,KANhGuN,MAlLH,UAArBpU,EAAMgJ,YAA0BhJ,EAAM6J,UAErC,cAAC6N,GAAA,EAAUrI,MAAX,CAEEnP,MAAOC,EAAOkZ,YAFhB,kBACO,eAOJ,KAgCiB,UAArBrZ,EAAMgJ,YAA0BhJ,EAAMqc,UAErC,cAAC3E,GAAA,EAAUrI,MAAX,CAEEnP,MAAOC,EAAOkZ,YAFhB,mBACO,gBAOJ,QA+IC,eAAClS,EAAA,EAAD,CAAYjH,MAAOC,EAAOoZ,WAA1B,UAEEvC,EAAUzW,KAAI,SAAAqX,GAEZ,IAAI4G,GAAa,EAKf,OAJCrD,KAAwBvD,EAAMrQ,KAC/BiX,GAAa,GAKT,eAAC9G,GAAA,EAAUG,IAAX,CAEIlX,QAAS,kBAAMpC,QAAQ4N,IAAI,gBAF/B,UAIE,cAACuL,GAAA,EAAUK,KAAX,CAEEpX,QAAS,kBApTb4G,EAoT8BqQ,EAAK,QAnTrDhX,EAAWiZ,UAAU,CACnBC,SAAWvS,EACXwS,UAAY/Z,EAAMga,YAHH,IAACzS,GAqTIrH,MAAOC,EAAOiZ,SAHhB,SAKE,cAACnY,EAAA,EAAD,CACEC,KAA2B,UAArBlB,EAAMgJ,WAAyB,OAAS,MAC9C5B,QAAS,CAAC,KAAQ,aAAawQ,EAAK,IACpCxW,KAAM,GACNC,MAAOqD,EAAWK,OAAOC,WARtB4S,EAAK,GAAO,QAajBf,EAAWtW,KAAI,SAAA6T,GACb,GAAc,OAAXA,EAAH,CAIA,IAIIrQ,EAJA+T,EAAS1D,EACVwD,EAAMrQ,KACPuQ,EAASF,EAAMrQ,GAAK6M,GAuCF,mBAlClBrQ,EADmB,OAAlB6T,EAAMxD,GACC,QACiBnR,IAAlB2U,EAAMxD,IAAyBwD,EAAMxD,GAAQqK,cAAgBC,MAGxC,IAAzB9G,EAAMxD,GAAQzR,OACP,GAkBAiV,EAAMxD,GAAQzW,KAAK,MAOrBia,EAAMxD,MAMZrQ,EADCA,EACO,MAEA,MAKZ,IAAI4a,GAAY,EAMhB,OALG3e,EAAM4e,gBAAkBxK,IACzBrQ,EAAQ,cAACzC,EAAA,EAAD,CAAMpB,MAAO,CAAEoE,gBAAiBI,EAAWK,OAAOuB,UAAWzE,QAAS,MAAOR,MAAO,WAApF,mBACRsd,GAAY,GAIV,cAACjH,GAAA,EAAUK,KAAX,CAEE7X,MAAOC,EAAO8Y,KACdtY,QAAS,kBAzXxB,SAACge,EAAW3e,EAAO+D,GAClC,GAAK4a,EAAL,CAIApgB,QAAQ4N,IAAInM,GACZ,IAAI0C,EAAMqB,EACP/D,EAAM6e,YACPnc,EAAM1C,EAAM6e,UAAY9a,GAE1B6B,OAAOkZ,KAAKpc,EAAK,UAAUqc,SA+WkBC,CAASL,EAAW3e,EAAO4X,EAAMxD,KAHlD,SAKE,cAAC9S,EAAA,EAAD,CAAMpB,MAAOC,EAAOmZ,WAApB,SAAiCvV,KAJ5B+T,OAUdmE,GAAYrE,GACZuE,GAAavE,EAAO4G,KA3Fd,MAAQ5G,EAAK,OAiG9B,eAACF,GAAA,EAAUG,IAAX,WACE,cAACH,GAAA,EAAUK,KAAX,CACE7X,MAAOC,EAAOiZ,UACT,cAILvC,EAAWtW,KAAI,SAAA6T,GACb,GAAc,OAAXA,EAGH,OACE,cAACsD,GAAA,EAAUK,KAAX,CAEE7X,MAAOC,EAAO8Y,KAFhB,SAKIjC,EAAUiI,QAAO,SAASziB,EAAG0iB,EAAGze,GAC9B,GAAG0e,SAASD,EAAE9K,IAAS,CACrB,IAAIgL,EAAO,IAAIC,OAAO7iB,GAClB8iB,EAAO,IAAID,OAAOH,EAAE9K,IAExB,GAAG3T,IAAUuW,EAAUrU,OAAS,EAAE,CAChC,IAAI4c,EAAQH,EAAOE,EACnB,OAAGE,MAAMD,QACP,EAEO,WAAQA,EAIjB,OAAOH,EAAOE,KAGjB,IArBAlL,MAhSD,UAArBpU,EAAMgJ,YAA0BhJ,EAAM6J,UAErC,cAAC6N,GAAA,EAAUK,KAAX,CACE7X,MAAOC,EAAOkZ,aACT,eAKJ,KAgDiB,UAArBrZ,EAAMgJ,YAA0BhJ,EAAMqc,UAErC,cAAC3E,GAAA,EAAUK,KAAX,CACE7X,MAAOC,EAAOkZ,aACT,gBAKJ,gBAmQH,eAACpZ,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAc,OAA5B,UACE,cAAC2V,GAAA,EAAUM,WAAX,CACId,KAAMA,EACNe,cAAe7F,KAAK8F,KAAKvB,EAAQhU,OAASyU,GAC1Ce,aAAc,SAAAjB,GAAI,OAvYX,SAACA,GAChBC,EAAQD,GAsYsBkB,CAAWlB,IACjCpT,MAAUwT,EAAO,EAAZ,IAAiBC,EAAjB,OAA0BZ,EAAQhU,OAEvCmU,yBAA0BA,EAC1BM,qBAAsBA,EACtBC,qBAnYe,SAACD,GACxBC,EAAqBD,IAmYbiB,wBAAyB,gBACzBnY,MAAOC,EAAOqY,aAGlB,cAACvY,EAAA,EAAD,CAAMC,MAAO,CAAE6B,cAAc,MAAOD,KAAM,UAA1C,SACE,cAAC,KAAD,CACE5B,MAAO,CACL4B,KAAM,EAEND,QAAQ,OACRD,UAAU,SAIZ6d,gBAxYI,SAACC,GACf,IAAIvZ,EAAQuZ,EAAGC,OAAO5b,MACT,UAAVoC,GAA+B,KAAVA,IACtBA,EAAQ,mBAEV,IAAIuO,EAASnC,KAAOpM,EAAO,CAACiU,IAC5BF,EAAWxF,cAqZT,cAACzU,EAAA,EAAD,UACE,cAAC2f,GAAA,EAAD,CACE1W,QAASqR,EACTpR,UAAWwR,EACXza,MAAOC,EAAOwZ,SACdkG,OAAQ,CACN/b,MAAO,UACPnD,QAASga,GANb,SAQGF,U,mBCh+BJ,IAAMqF,GAAWxd,IAAM0H,YAAW,SAAChK,EAAOiK,GAE5B3H,IAAMqC,WAAWC,IAApC,IAEA,EAA8BtC,IAAM8I,UAAS,GAA7C,WAAOlC,EAAP,KAAgBwI,EAAhB,KAEM/G,EAAO,GAEV3K,EAAM+f,cACP/f,EAAMoW,MAAM7V,KAAI,SAACyf,GACf,IAAIrZ,EAAW,CACb7C,MAAOkc,EAAKhgB,EAAMigB,gBAClBlc,MAAOic,EAAKzY,IAEdoD,EAAKjN,KAAKiJ,MAGZ3G,EAAMoW,MAAM7V,KAAI,SAACyf,GACf,IAAIrZ,EAAW,CACb7C,MAAOkc,EAAKhgB,EAAMigB,gBAClBlc,MAAOic,EAAKhgB,EAAMigB,iBAEpBtV,EAAKjN,KAAKiJ,MAKd,IAwBA,EAA0BrE,IAAM8I,SAASpL,EAAM+D,OAA/C,WAAOA,EAAP,KAAcuG,EAAd,KAEA,EAA4BhI,IAAM8I,UAAS,GAA3C,WAAO8U,EAAP,UACA5d,IAAMoJ,WAAU,cAEb,CAAC1L,IAEJ,IAyBQmgB,EAASC,EAjBjB,OAAIpgB,EAAMuP,SA4CPvP,EAAMqgB,MAKL,cAACpgB,EAAA,EAAD,CAAMC,MAAO,CAAC,SAAY,YAA1B,SACE,cAAC,GAAD,CACE4D,MAAO9D,EAAM8D,MACb0G,KAAM,OACNJ,aAAa,EACblB,QAASA,EACTmB,aAAc,kBAAMqH,GAAW,IAC/BvI,UAAW,SAACwI,GAEV,IAAI2O,EADJ5O,GAAW,GAGT4O,EADCC,mBAAQ5O,IAAsB,KAAXA,EACL,GAEZ+M,MAAM8B,QAAQ7O,GACAA,EAEAA,EAAOpF,UAAU,GAAGC,MAAM,KAG7CxM,EAAMygB,SAASzgB,EAAM0gB,WAAYJ,EAActgB,EAAM2gB,eAEvD1W,IAAKA,EACLlG,MAAOA,EACPuG,SAAU,SAACqH,GACTrH,EAASqH,IAEXhH,KAAMA,MAUZ,eAAC1K,EAAA,EAAD,CAAMC,MAAO,CAAC,SAAY,YAA1B,UACE,cAACoB,EAAA,EAAD,CAAMpB,MAAOggB,EAAS/f,GAAOygB,WAAazgB,GAAO0gB,SAAjD,SAA4D7gB,EAAM8D,QAClE,eAAC,IAAD,CACER,cAAeS,GAAgB,GAC/B+c,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SACNP,IAAKA,EAEL+W,QAAS,WAAOziB,QAAQ4N,IAAI,YAE5BjM,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GACzB3D,EAAMygB,SAASzgB,EAAM0gB,WAAYhd,EAAW1D,EAAM2gB,cAClDpiB,QAAQ4N,IAAIzI,GACZ4G,EAAS5G,IAZb,UAeE,cAAC,IAAOG,KAAR,CACEC,MAAM,GACNC,MAAM,MAGR/D,EAAMoW,MAAM7V,KAAI,SAACyf,GACf,OACE,cAAC,IAAOnc,KAAR,CAEEC,MAAOkc,EAAKhgB,EAAMigB,gBAClBlc,MAAO,QAAQ/D,EAAM+f,cAAc,IAAIC,EAAKzY,IAFvCyY,EAAKzY,aA7GjBvH,EAAMqgB,MAIL,cAACtT,EAAA,EAAD,CACEjJ,MAAO9D,EAAM8D,MACbC,MAAO/D,EAAM+D,MACbwL,UAAU,EACV0R,WAAW,EACXC,cAAe,KAQhBlhB,EAAM+D,MAAMf,SAAS,UACtBmd,EAAUd,OAAOrf,EAAM+D,MAAMyI,MAAM,KAAK,IACxC4T,EAAepgB,EAAMoW,MAAMtT,MAAK,SAAAkd,GAC9B,OAAOA,EAAKzY,KAAO4Y,OAGrBC,EAAe,IACFpgB,EAAMigB,gBAAkB,gBAKrC,cAAClT,EAAA,EAAD,CACEjJ,MAAO9D,EAAM8D,MACbC,MAAOqc,EAAapgB,EAAMigB,gBAC1B1Q,UAAU,EACV4R,UAAU,QAmKdhhB,GAASuB,IAAWC,OAAO,CAC/B4X,WAAY,CACV6H,iBAAkB,GAClB7a,UAAW,SAEb8a,UAAW,CACTjS,YAAa,OAEf3I,UAAW,CACTkS,SAAU,YAEZ2I,kBAAoB,CAClB3I,SAAU,WACVxT,MAAO,OACPF,OAAQ,OACRsc,OAAQ,IAEV5a,SAAU,CACRrC,gBAAiB,UACjBqU,SAAU,WACV4I,OAAQ,GAEV/d,OAAS,CACPc,gBAAgB,UAChBjD,MAAO,UACPmF,WAAY,OACZ2P,cAAe,OACftP,YAAa,OACbxC,aAAc,OACd7C,SAAU,OACV2X,eAAgB,IAChBD,gBAAiB,IACjBsI,iBAAkB,IAClBC,kBAAmB,MACnBC,kBAAmB,WAGrBX,WAAa,CACXvf,SAAU,QAEZof,WAAa,CACXpf,SAAU,OACVmgB,IAAK,MACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,QAERoK,SAAW,CACTrf,SAAU,OACVmgB,IAAK,OACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,UC7SKmL,GApBOtf,cAAiB,SAACtC,EAAMiK,GAE5C,MAA8B3H,WAAetC,EAAM+D,OAAnD,WAAO8d,EAAP,KAAgBC,EAAhB,KAEA,OACE,cAACvU,GAAA,EAAD,CACEE,OAAQoU,EAAU,UAAY,YAC9BE,aAAc9X,EACd5I,MAAOrB,EAAMqB,MACb8f,SAAUnhB,EAAMmhB,SAChBxgB,QAAS,WACHX,EAAMmhB,WACRW,GAAYD,GACZ7hB,EAAMygB,SAASzgB,EAAM0gB,YAAamB,EAAS7hB,EAAM2gB,qB,gwBCuF3D,SAASqB,GAAT,GAIsB,IAHFC,EAGC,EAHDA,sBACAC,EAEC,EAFDA,YACApe,EACC,EADDA,MAElB,OAAIme,EACKne,EAAWA,EAAN,KAAgBoe,EAAhB,IAAiCA,EAExCpe,GAAS,GAGlB,IAAM3D,GAASuB,IAAWC,OAAO,CAC/BwgB,KAAM,CACJziB,SAAU,IACVqC,cAAe,MACf4W,SAAU,WACV1W,WAAY,SACZ6P,SAAU,GAEZsQ,MAAO,CACLtQ,SAAU,GAEZuQ,eAAgB,CAAE1J,SAAU,WAAY3L,MAAO,EAAGuU,OAAQ,MAE7Cjf,iBAtHf,WAaE2H,GACC,IAZCnG,EAYF,EAZEA,MACAC,EAWF,EAXEA,MACA0c,EAUF,EAVEA,SACAvgB,EASF,EATEA,MACAoiB,EAQF,EAREA,OACAC,EAOF,EAPEA,WACAC,EAMF,EANEA,UAMF,IALEC,iBAKF,aAJER,6BAIF,SAHKS,EAGL,WACMjb,EAAQ0C,eACd,EAA6DwY,aAAa,CACxEL,SACAve,QACAwe,aACAC,YACA/B,aALMmC,EAAR,EAAQA,eAAgBV,EAAxB,EAAwBA,YAAa1S,EAArC,EAAqCA,aAAclR,EAAnD,EAAmDA,MAQnD,EAA8BgE,YAAe,GAA7C,WAAO4G,EAAP,KAAgBwI,EAAhB,KACMvI,EAAY7G,eAAkB,WAClCoP,GAAW,KACV,CAACA,IACEmR,EAAcC,aAAUrC,GACxBsC,EAAiBzgB,eACrB,YAAe,IAAZ0gB,EAAW,EAAXA,KACDtR,GAAW,GACXmR,EAAYI,QAAQD,KAEtB,CAACtR,EAAYmR,IAIf,OACE,qCACE,eAAC5iB,EAAA,EAAD,CAAMC,MAAOC,GAAOgiB,KAApB,UACE,cAAC,KAAD,SACMO,GADN,IAEEzY,IAAKA,EACLnG,MAAOke,GAAS,CAEdle,QACAoe,cACAD,0BAEFle,MAA0B,eAAnB6e,EAAkCA,EAAiB,GAC1DM,aAAc,aACdzY,YAAayX,EACbiB,KAAMjB,EACN1S,aAAcA,EACdiR,SAAU,SAACvC,GAAO3f,QAAQ4N,IAAI+R,GACN,KAAnBA,EAAEyB,OAAO5b,OACV0c,EAAS,OAGb2C,mBAAoB3b,EAAM4b,KAAO,OAAS,UAC1C/kB,QAASA,EACT4B,MAAO,CAACC,GAAOiiB,MAAOliB,MAEvBuiB,EACC,cAACa,GAAA,EAAD,CACEliB,KAAM,GACNlB,MAAOC,GAAOkiB,eACdlhB,KAAK,WACLR,QAAS,kBAAM+Q,GAAW,MAE1B,QAEN,cAAC6R,GAAA,EAAD,CAAY7mB,KAAK,QAAQwM,UAAW5K,EAAOuD,QAAS,OAAQ3B,MAAO,CAACsG,WAAW,IAAK2P,cAAc,KAAlG,SACG7X,IAGFmkB,EACC,cAACe,GAAA,EAAD,CACER,KAAMjf,EACNyG,KAAK,SACLtB,QAASA,EACTC,UAAWA,EACXsa,UAAWV,EACXT,OAAQA,EACRoB,SAAUlB,EACVD,WAAYA,EACZze,MAAO,kCAEP,WC/FG6f,GAAarhB,IAAM0H,YAAW,SAAChK,EAAOiK,GAEjD,MAA0B3H,IAAM8I,SAASpL,EAAM+D,OAA/C,WAAOA,EAAP,KAAcuG,EAAd,KACA,OACE,cAAC,GAAD,CACEgY,OAAQtiB,EAAMsiB,OACdrY,IAAKA,EACLnG,MAAO9D,EAAM8D,MACbC,MAAOA,EAAQ,IAAIqR,KAAKrR,GAAS,KACjC0c,SAAU,SAACmD,GAET,GADArlB,QAAQ4N,IAAIyX,GACT5jB,EAAMuP,SAAS,CAChBjF,EAASsZ,GACT,IAAIjS,EAASiS,EAAIA,EAAEC,cAAgB,KACnC7jB,EAAMygB,SAASzgB,EAAM0gB,WAAY/O,EAAQ3R,EAAM2gB,gBAGnD6B,UAAU,QACVjT,SAAUvP,EAAMuP,c,qCCbtBtO,KAAQ6iB,WAED,IAAMC,GAAezhB,IAAM0H,YAAW,SAAChK,EAAOiK,GACnD,MAA8BmB,oBAAS,GAAvC,WAAO4Y,EAAP,KAAgBC,EAAhB,KACA,EAA8C7Y,mBAASpL,EAAM+D,MAAQ,CAAC,CAACwD,GAAG,EAAGhE,MAAOvD,EAAM+D,QAAU,MAApG,WAAOmgB,EAAP,KAAwBC,EAAxB,KAEA,EAAwC/Y,mBAASpL,EAAM+D,MAAQ,EAAI,MAAnE,WAAOqc,EAAP,KAAqBgE,EAArB,KACMC,EAAqBC,iBAAO,MAElC,EAA4ClZ,oBAAS,GAArD,WAAOmZ,EAAP,KAAuBC,EAAvB,KAIM9f,EAAapC,IAAMqC,WAAWC,IAEpC,SAAS6f,EAAQ/hB,EAAKyD,GACpB,OP+BG,SAAwByW,GAC7B,IAAIla,EAEJ,IACEA,EAAM,IAAIgiB,IAAI9H,GACd,MAAOhR,GACP,OAAO,EAGT,MAAwB,UAAjBlJ,EAAIiiB,UAAyC,WAAjBjiB,EAAIiiB,SOxClCC,CAAeliB,GAETA,EAGA,SAASA,EAAI,IAAI1C,EAAMsc,SAAS,IAAInW,EAI/C,IAAM0e,EAAiB7Y,uBAAY,SAAM8Y,GAAN,mBAAAtoB,EAAAC,OAAA,mDAC3BsoB,EAAcD,EAAEhQ,gBACL,kBAANgQ,GAAkBA,EAAEniB,OAAS,GAFP,uBAG/BwhB,EAAmB,MAHY,iCAMjCF,GAAW,GANsB,WAAAznB,EAAA,MAObyL,GAAQwc,EAAQzkB,EAAM0C,IAAKoiB,GAAIpgB,EAAWwD,YAP7B,OAO3BkO,EAP2B,OAQjC7X,QAAQ4N,IAAIiK,GAER4O,EAAc,GAEhBA,OADkB/hB,IAAjBmT,EAAM3I,QAAwB2I,EAAM3I,OAAS,IAChC,CAAC,CAAClG,GAAI,EAAGhE,MAAO,gCAEhB6S,EACXpS,QAAO,SAAAgc,GAAI,OAAIA,EAAKzc,MAAMuR,cAAc9R,SAAS+hB,MACjDxkB,KAAI,SAAAyf,GAAI,MAAK,CACZzY,GAAIyY,EAAKzY,GACThE,MAAOyc,EAAKzc,UAKlBvD,EAAMygB,SAASzgB,EAAM0gB,WAAYoE,GACjCX,EAAmBa,GACnBf,GAAW,GAzBsB,+DA2BhC,IAEGgB,EAAejZ,uBAAY,WAC/BmY,EAAmB,QAClB,IAEGe,EAAwBlZ,uBAAY,SAAAmZ,MAAgB,IAE1D,EAA4B/Z,qBAASgV,GAArC,WAAOF,EAAP,KAAekF,EAAf,KAKMC,EAAS,YACC,IAAXnF,EACDkF,GAAU,GAEVjB,EAAmB,OAwBvB,OAbAzY,qBAAU,WAOR,OALA0S,YAAW,WACLmG,GACFC,GAAkB,KAEnB,KACI,WACLA,GAAkB,MAEnB,IAID,mCACE,eAACvkB,EAAA,EAAD,CAGEC,MAAO,CACL,CACEoE,gBAAiB,qBACjBjD,MAAO,qBACPmF,WAAW,OACXK,YAAY,OACZxC,aAAa,OACbsU,SAAU,YAEZ2M,KAASC,OAAO,CAAEC,IAAK,CAAEjE,OAAQ,MAZrC,UAcI,cAAC,KAAD,CACEtX,IAAKA,EACLwb,WAAY,SAAAA,GACVpB,EAAmBpB,QAAUwC,GAE/BC,aAAc1lB,EAAM+D,MAAQ,CAACwD,GAAG,EAAGhE,MAAOvD,EAAM+D,OAAS,KACzD4hB,UAAWL,KAASC,OAAO,CAAEC,IAAK,SAClCpe,QAAS8c,EACT1U,aAAcqV,EACde,aAAc,SAAA5F,GACZA,GAAQoE,EAAgBpE,EAAKzY,IAC1Bgd,GAAkBvE,GACnBhgB,EAAMygB,SAASzgB,EAAM0gB,WAAYV,EAAKzc,MAAOvD,EAAM2gB,eAGvDrS,SAAU,IACVuX,yBAA4D,GAAlCC,KAAWC,IAAI,UAAU9gB,OACnD+gB,QAASf,EACTjE,QAASqE,EACTY,OAvDK,aAyDLf,sBAAuBA,EACvBlB,QAASA,EACTkC,WAAW,EACXC,eAAgB,CACd1b,YAAa,GACb2b,aAAa,EACbC,eAAgB,OAChBnmB,MAAO,CACLiF,MAAO,OACPb,gBAAiB,cACjBgiB,aAAc,qBACdC,aAAc,EACdllB,MAAO,OACPG,SAAU,OACV+f,OAAQ,IAGZiF,eAAgB,CACdliB,gBAAiB,eAEnBmiB,oBAAqB,CACnBniB,gBAAiB,eAEnBoiB,WAAY,SAAC1G,EAAMze,GAAP,OAAgB,cAACD,EAAA,EAAD,CAAMpB,MAAO,CAAEmB,MAAO,OAAQiD,gBAAiB,OAAQzC,QAAS,IAAhE,SAAuEme,EAAKzc,SACxGojB,qBAAsB,cAAC,KAAD,CAASzlB,KAAK,eAAeE,KAAM,GAAIC,MAAM,SACnEulB,mBAAoB,cAAC,KAAD,CAAS1lB,KAAK,WAAWE,KAAM,GAAIC,MAAM,SAC7DwlB,qBAAsB,cAACvlB,EAAA,EAAD,CAAMpB,MAAO,CAAEmB,MAAO,OAAQiD,gBAAiB,OAAQzC,QAAS,IAAhE,wBACtBilB,YAAa,GACbC,aAAa,EACbC,WAAW,EACXC,cAAc,IAGlB,cAAC3lB,EAAA,EAAD,CACEpB,MAAOggB,EAtGU,CAAC1e,SAAU,OAAQH,MAAO,qBAAsBsX,SAAS,WAAYgJ,IAAK,OAAQJ,QAAS,GADzF,CAAC/f,SAAU,OAAQH,MAAO,qBAAuBsX,SAAS,WAAYgJ,IAAK,OAAQJ,QAAS,GAwG/G5gB,QAAS0kB,EAFX,SAIGrlB,EAAM8D,QAEP,cAAC7D,EAAA,EAAD,CAAMC,MAAO,CACXoE,gBAAiB,sBACjBW,OAAQ,MACRE,MAAO,OACPwT,SAAS,WACTuO,OAAO,MACPzQ,KAAK,iBC9KJ0Q,GAAgB,SAACnnB,GAE5B,IAAM0E,EAAapC,aAAiBsC,IAG9BzE,GAFaoY,eAEJ7W,IAAWC,OAAO,CAC/B6W,WAAY,CACVtU,eAAgB,OAChBpC,KAAM,GAER4W,KAAM,CACJC,SAAU,WACVrU,gBAAiB,UACjBsU,aAAa,OACb9G,SAAU,EACVgH,UAAW,gCACX3T,MAAO,MACPiK,YAAa,MAEf2J,YAAa,CACXzU,gBAAiB,UACjB0U,OAAQ,WAEVO,WAAY,CACVhT,UAAW,IACXrB,UAAW,KAEbsU,UAAW,CACT1X,KAAM,EACN2X,OAAQ,iBACRb,aAAc,OACdE,UAAU,QAEZY,UAAW,CACT5X,KAAM,EACNwC,gBAAiB,OACjBrC,WAAY,SACZsH,UAAW,QAEboQ,SAAS,CACPrV,gBAAiBI,EAAWK,OAAOC,QACnC3D,MAAO,cAMX,EAA8BiB,WAAetC,EAAMoW,OAAnD,WAAOO,EAAP,KACMG,GADN,KACiC,CAAC,GAAI,GAAI,GAAI,MAC9C,EAAkCxU,WAAeqU,EAAQI,MAAM,EAAGD,EAAyB,KAA3F,WAAOE,EAAP,KAAkBC,EAAlB,KACA,EAAwB3U,WAAe,GAAvC,WAAO4U,EAAP,KAAaC,EAAb,KACA,EAAqD7U,WAAewU,EAAyB,IAA7F,WAAOM,EAAP,KAA6BC,EAA7B,KACMC,EAAOJ,EAAOE,EACdG,EAAKnF,KAAKoF,KAAKN,EAAO,GAAKE,EAAsBT,EAAQhU,QAM/DL,aAAgB,WACd,IAAImV,EAAUd,EAAQI,MAAMO,EAAMA,EAAKF,GACvCH,EAAaQ,KACZ,CAACP,IAMJ5U,aAAgB,WACd6U,EAAQ,GACR,IAAIM,EAAUd,EAAQI,MAAMO,EAAMA,EAAKF,GACvCH,EAAaQ,KACZ,CAACL,IAIJ,MAAwC9U,WAAetC,EAAM+D,MAAQ/D,EAAM+D,MAAQ,IAAnF,WAAOqjB,EAAP,KAAqBC,EAArB,KAEMC,EAAmC,CAAC,GAAI,GAAI,GAAI,KACtD,EAAkDhlB,WAAe8kB,EAAarQ,MAAM,EAAGuQ,EAAiC,KAAxH,WAAOC,EAAP,KAA0BC,EAA1B,KACA,EAAwCllB,WAAe,GAAvD,WAAOmlB,EAAP,KAAqBC,EAArB,KACA,EAAqEplB,WAAeglB,EAAiC,IAArH,WAAOK,EAAP,KAAqCC,EAArC,KACMC,EAAeJ,EAAeE,EAC9BG,EAAa1V,KAAKoF,KAAKiQ,EAAe,GAAKE,EAA8BP,EAAazkB,QAK5F,IAHwBolB,EAAeC,EAGvC,EAA4C1lB,YAHpBylB,EAGkD/nB,EAAM+D,MAHzCikB,EAGgDhoB,EAAMoW,MAFpF6R,mBAAQF,EAAeC,KAEhC,WAAOE,EAAP,KAAuBC,EAAvB,KAMA7lB,aAAgB,WACd,IAAImV,EAAU2P,EAAarQ,MAAM8Q,EAAcA,EAAaF,GAC5DH,EAAqB/P,KACpB,CAACgQ,IAMJnlB,aAAgB,WAEd,IAAImV,EAAU2P,EAAarQ,MAAM8Q,EAAcA,EAAaF,GAC5DH,EAAqB/P,KACpB,CAACkQ,IAGJ,IAAMlH,EAAW,SAACT,EAAMoI,GAAyC,IAE3D/b,EAFiCgc,EAAyB,uDAAV,MAYpD,GANEhc,EADCrM,EAAM+D,MACI/D,EAAM+D,MAEN,GAIVqkB,EAED/b,EAAS3O,KAAKsiB,OACX,CAEH,IAAMvf,EAAQ4L,EAASmQ,WAAU,SAAAzZ,GAAC,OAAIA,EAAEwE,KAAOyY,EAAKzY,MAEhD9G,GAAS,EACX4L,EAAS+D,OAAO3P,EAAO,GAEvBlC,QAAQ4N,IAAI,kBAIhB,IAAImc,EAAkBlB,EACtB,GAAGgB,EAEGzM,gBAAK2M,EAAiBtI,IACxBsI,EAAgB5qB,KAAKsiB,OAGpB,CAEH,IAAMvf,EAAQ6nB,EAAgB9L,WAAU,SAAAzZ,GAAC,OAAIA,EAAEwE,KAAOyY,EAAKzY,MACvD9G,GAAS,GACX6nB,EAAgBlY,OAAO3P,EAAO,GAC9B0nB,GAAkB,IAElB5pB,QAAQ4N,IAAI,mCAMhBkb,EAAgB,KAAIiB,IACpB,IAAIC,EAAuBnB,EAAarQ,MAAM8Q,EAAcA,EAAaF,GACzEH,EAAqB,KAAIe,IAEzB,IAAI9Q,EAAUd,EAAQI,MAAMO,EAAMA,EAAKF,GACvCH,EAAa,KAAIQ,IAGjB,IAAI+Q,GAAW,EACT/nB,EAAQuW,EAAUwF,WAAU,SAAAzZ,GAAC,OAAIA,EAAEwE,KAAOyY,EAAKzY,MACjD9G,GAAS,GAAsB,aAAjB4nB,IAChBG,GAAW,GAGbxoB,EAAMygB,SAASzgB,EAAM0gB,WAAY4H,EAAiB,KAAME,IAkB1D,OACE,eAACvoB,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAc,OAA5B,UAGE,eAAC2V,GAAA,EAAD,CAAWxX,MAAOC,EAAOuY,KAAzB,UACE,cAACzY,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAc,MAAOF,QAAQ,QAA3C,SACE,eAACP,EAAA,EAAD,CAAMpB,MAAO,CAAC4B,KAAK,EAAGN,SAAU,QAAhC,iBAA8CxB,EAAM8D,WAEtD,eAAC4T,GAAA,EAAUC,OAAX,WACE,cAACD,GAAA,EAAUrI,MAAX,uBAIA,cAACqI,GAAA,EAAUrI,MAAX,UAEGrP,EAAMigB,oBAIX,eAAC9Y,EAAA,EAAD,WACE,eAACuQ,GAAA,EAAUG,IAAX,WACE,cAACH,GAAA,EAAUK,KAAX,UACE,cAAC,GAAD,CACEhU,MAAOmkB,EACPzH,SAtCI,SAAC7I,EAAOiK,GAExB,GAAGA,EAAQ,CACT,IAAIxV,EAAW,GACfsK,EAAQpW,KAAI,SAACkP,GACXpD,EAAS3O,KAAK+R,MAEhBzP,EAAMygB,SAASzgB,EAAM0gB,WAAYrU,EAAU,MAAM,QAEjDrM,EAAMygB,SAASzgB,EAAM0gB,WAAY,GAAI,MAAM,QAgCrC,cAAChJ,GAAA,EAAUK,KAAX,UACE,cAACzW,EAAA,EAAD,8BAIF0V,EAAUzW,KAAI,SAAAqX,GAEZ,OAEE,eAACF,GAAA,EAAUG,IAAX,WAIE,cAACH,GAAA,EAAUK,KAAX,UACE,cAAC,GAAD,CACEhU,MAAO4X,gBAAKyL,EAAcxP,GAC1BA,MAAOA,EACP6I,SAAUA,EACV4H,aAAc,UAGlB,cAAC3Q,GAAA,EAAUK,KAAX,UACGH,EAAM5X,EAAMigB,oBAZVrI,EAAMrQ,UAoBrB,cAACmQ,GAAA,EAAUM,WAAX,CACEd,KAAMA,EACNe,cAAe7F,KAAK8F,KAAKvB,EAAQhU,OAASyU,GAC1Ce,aAAc,SAAAjB,GAAI,OAhMP,SAACA,GAClBC,EAAQD,GA+LoBkB,CAAWlB,IACjCpT,MAAUwT,EAAO,EAAZ,IAAiBC,EAAjB,OAA0BZ,EAAQhU,OACvCmU,yBAA0BA,EAC1BM,qBAAsBA,EACtBC,qBA3LmB,SAACD,GAC1BC,EAAqBD,IA2LfiB,wBAAyB,qBAK7B,eAACX,GAAA,EAAD,CAAWxX,MAAOC,EAAOuY,KAAzB,UACE,cAACzY,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAc,MAAOF,QAAQ,QAA3C,SACE,eAACP,EAAA,EAAD,CAAMpB,MAAO,CAAC4B,KAAK,EAAGN,SAAU,QAAhC,sBAAmDxB,EAAM8D,WAE3D,eAAC4T,GAAA,EAAUC,OAAX,WACE,cAACD,GAAA,EAAUrI,MAAX,uBAIA,cAACqI,GAAA,EAAUrI,MAAX,UAEGrP,EAAMigB,oBAIX,cAAC9Y,EAAA,EAAD,UAEIogB,EAAkBhnB,KAAI,SAAAqX,GACpB,OAEE,eAACF,GAAA,EAAUG,IAAX,WACE,cAACH,GAAA,EAAUK,KAAX,UACE,cAAC,GAAD,CACEhU,OAAO,EACP6T,MAAOA,EACP6I,SAAUA,EACV4H,aAAc,eAGlB,cAAC3Q,GAAA,EAAUK,KAAX,UACGH,EAAM5X,EAAMigB,oBAVGrI,EAAMrQ,SAkBlC,cAACmQ,GAAA,EAAUM,WAAX,CACEd,KAAMuQ,EACNxP,cAAe7F,KAAK8F,KAAKkP,EAAazkB,OAASglB,GAC/CxP,aAAc,SAAAjB,GAAI,OAhNC,SAACA,GAC1BwQ,EAAgBxQ,GA+MYuR,CAAmBvR,IACzCpT,MAAU+jB,EAAe,EAApB,IAAyBC,EAAzB,OAA0CV,EAAazkB,OAC5DmU,yBAA0BwQ,EAC1BlQ,qBAAsBuQ,EACtBtQ,qBA3M2B,SAACD,GAClCwQ,EAA6BxQ,IA2MvBiB,wBAAyB,yBAU7BqQ,GAAoB,SAAC1oB,GAEzB,MAA8BsC,WAAetC,EAAM+D,OAAnD,WAAO8d,EAAP,KAAgBC,EAAhB,KAEA,OACE,cAACvU,GAAA,EAAD,CACEE,OAAQoU,EAAU,UAAY,YAC9BxgB,MAAOrB,EAAMqB,MACb8f,SAAUnhB,EAAMmhB,SAChBxgB,QAAS,WACHX,EAAMmhB,WACRW,GAAYD,GACZ7hB,EAAMygB,SAASzgB,EAAM4X,OAAQiK,EAAS7hB,EAAMqoB,mB,qkBCzU/C,IAAMM,GAAgB,SAAC3oB,GAE5B,MAA0BsC,IAAM8I,SAASpL,EAAMoW,OAA/C,WAAOA,EAAP,KACA,GADA,KACwB9T,IAAM8I,SAASpL,EAAMmB,OAA7C,WAAOA,EAAP,KAEMynB,GAFN,KAEe/sB,IAAUC,SAASC,MAAM6sB,QAelCjiB,EAAW,cAAC,IAAK9C,KAAN,CACfN,MAAO,mCACPslB,YAAa,GACbpS,KAAM,SAAAzW,GAAK,OAAI,cAAC,IAAKiN,KAAN,SAAejN,GAAf,IAAsBmB,KAAM,cAG7C,OACE,cAAClB,EAAA,EAAD,UACE,eAAC,IAAKqH,UAAN,CACE/D,MAAOvD,EAAM8D,MACb+kB,YAAa7oB,EAAMuB,KACnBkV,KAAM,SAAAzW,GAAK,OAAI,cAAC,IAAKiN,KAAN,SAAejN,GAAf,IAAsBmB,KAAMA,MAH7C,UAMEiV,EAAM7V,KAAI,SAAAyf,GAER,OACE,cAAC,IAAKnc,KAAN,CAEEN,MAAOyc,EAAK8I,QACZD,YAAa7I,EAAKtjB,KAClB+Z,KAAM,SAAAzW,GAAK,OAAI,cAAC,IAAKiN,KAAN,SAAejN,GAAf,IAAsBmB,KAAM,kBAC3CR,QAAS,kBAnCL,SAACooB,GACf,IAAIrmB,EAAM,GAERA,EADa,kCAAXkmB,EACI,kCAEA,iCAERlmB,GAAO,kEACPA,GAAO,iBAAiBqmB,EACxBrmB,GAAO,0BACPkD,OAAOkZ,KAAKpc,EAAK,UAyBQ/B,CAAQqf,EAAK+I,QAJvB/I,EAAKzY,OAWE,IAAjB6O,EAAMzT,OAAegE,EAAW,W,y5CCpCzCqiB,aAAoB,KAAMC,MAGnB,IAAMC,GAAmB,SAAClpB,GAE/B,IAAM0E,EAAapC,IAAMqC,WAAWC,IAG9BzE,EAASuB,IAAWC,OAAO,CAC/ByS,OAAS,CACPvC,QAAS,OACT9P,cAAe,MACfonB,aAAc,SACdlnB,WAAY,UAEdmnB,UAAY,CACV5nB,SAAU,MACV4N,YAAa,QAEfia,cAAe,CACb/kB,gBAAiBI,EAAWK,OAAOC,QACnCnD,QAAS,OACT6N,aAAc,OACdnG,UAAW,OACXuI,SAAU,EACV3M,MAAO,MACPiK,YAAa,MAEfka,kBAAoB,CAClBjoB,MAAO,WAETkoB,QAAU,CACR1X,QAAS,OACT9P,cAAe,MACfC,SAAU,QAEZwnB,YAAc,CACZ3X,QAAS,OACT9P,cAAe,MACfwH,UAAW,QAEbkgB,eAAiB,CACf3X,SAAU,EACV3M,MAAO,MACPiK,YAAa,KACbM,aAAc,OACdiJ,SAAS,WACT4I,OAAQ,GAEVmI,wBAA0B,CACxB5X,SAAU,EACV3M,MAAO,OACPiK,YAAa,KACbM,aAAc,OACdiJ,SAAS,WACT4I,OAAQ,GAEVoI,kBAAkB,CAChB9X,QAAS,OACT3N,eAAgB,QAChBnC,cAAe,MACfE,WAAY,SACZgD,OAAQ,QAEV2kB,cAAgB,CACdtlB,gBAAiBI,EAAWK,OAAOC,QACnCG,MAAO,MACPiK,YAAa,MAEfya,gBAAkB,CAChBvlB,gBAAiBI,EAAWK,OAAOuB,UACnCnB,MAAO,MACPiK,YAAa,MAEf0a,eAAiB,CACfxlB,gBAAiB,UACjBa,MAAO,MACPiK,YAAa,MAEf2a,aAAe,CACbzlB,gBAAiB,WAEnB0lB,WAAa,CACX3oB,MAAO,UACPG,SAAU,QAEZyoB,kBAAoB,CAClB1I,OAAQ,MAKV5H,SAAS,CACPrV,gBAAiBI,EAAWK,OAAOuB,UACnCjF,MAAO,UACPkgB,OAAQ,KACR1f,QAAS,QAEXqoB,YAAa,CACXjlB,OAAQ,GACR4T,OAAQ,GACRsR,YAAa,KAIXC,EAAmB,CACrBtY,SAAU,EACVjS,SAAU,MACVsF,MAAO,MACPiK,YAAa,KACbM,aAAc,OACdiJ,SAAS,WACT4I,OAAQ,GAEN8I,EAA2B,CAC/BvY,SAAU,EACVjS,SAAU,MACVsF,MAAO,MACPiK,YAAa,KACbM,aAAc,OACdiJ,SAAS,WACT4I,OAAQ,GAOJ3gB,EAAa2X,eACnB,EAAwBjW,IAAM8I,SAAS,MAAvC,WAAO2E,EAAP,KAAaua,EAAb,KACA,EAAkChoB,IAAM8I,SAAS,MAAjD,WAAOmf,EAAP,KAAkBC,EAAlB,KACA,EAA4BloB,IAAM8I,SAAS,IAA3C,WAAOqf,EAAP,KAAeC,EAAf,KAEA,EAAoCpoB,IAAM8I,UAAS,GAAnD,WAAOuf,EAAP,KAAmBC,EAAnB,KACA,EAAkCtoB,IAAM8I,SAAS,SAAjD,WAAOyf,EAAP,KAAkBC,EAAlB,KAGA,EAA4CxoB,IAAM8I,UAAS,GAA3D,WAAO2f,EAAP,KAAuBC,EAAvB,KACA,EAAkE1oB,IAAM8I,UAAS,GAAjF,WAAO6f,EAAP,KAAkCC,EAAlC,KACA,EAAgD5oB,IAAM8I,UAAS,GAA/D,WAAO+f,EAAP,KAAyBC,EAAzB,KAEA,EAA4C9oB,IAAM8I,SAAS,IAA3D,WAAOigB,EAAP,KAAuBC,EAAvB,KACA,EAAkEhpB,IAAM8I,SAAS,IAAjF,WAAOmgB,EAAP,KAAkCC,GAAlC,KACA,GAAgDlpB,IAAM8I,SAAS,IAA/D,aAAOqgB,GAAP,MAAyBC,GAAzB,MAGA,GAAwDppB,IAAM8I,UAAS,GAAvE,aAAOugB,GAAP,MAA6BC,GAA7B,MACMC,GAAY,kBAAMD,IAAwB,IAC1CE,GAAY,kBAAMF,IAAwB,IAGhD,GAAoDtpB,IAAM8I,UAAS,GAAnE,aAAO2gB,GAAP,MAA2BC,GAA3B,MAEMC,GAAgB,kBAAMD,IAAsB,IAElD,GAAgC1pB,IAAM8I,UAAS,GAA/C,aAAO8gB,GAAP,MAAiBC,GAAjB,MAGA,GAAsC7pB,IAAM8I,SAAS,GAArD,aAAOghB,GAAP,MAAoBC,GAApB,MAGA,GAA8C/pB,IAAM8I,UAAS,GAA7D,aAAOmP,GAAP,MAAwBC,GAAxB,MACA,GAA0DlY,IAAM8I,UAAS,GAAzE,aAAOkhB,GAAP,MAA8BC,GAA9B,MACA,GAA0EjqB,IAAM8I,SAAS,MAAzF,aAAOohB,GAAP,MAAsCC,GAAtC,MACA,GAAwCnqB,IAAM8I,SAAS,iBAAvD,aAAOqP,GAAP,MAAqBC,GAArB,MACMC,GAAoB,WAGxB,GAFAH,IAAmB,GAEhB8R,GAAsB,CACvB1rB,EAAWiZ,UAAU,CACnBC,SAAW0S,GACXzS,UAAY/Z,EAAM+Z,YAGpB,IAAI2S,EAAeN,GACnBM,IACAL,GAAeK,KAKbC,GAAYrqB,IAAMgiB,OAAO,IAE/BhiB,IAAMoJ,WAAU,WAEd,IAAIkhB,EAAW5sB,EAAM4sB,SACC,QAAnB5sB,EAAM4sB,WACPA,EAAW,GAIbtC,EAAQ,MACRE,EAAa,MACbI,GAAc,GAEd3iB,GAAQ,gBAAgBjI,EAAMsc,SAAS,IAAIsQ,EAAUloB,EAAWwD,WAC7DhK,MAAK,SAAA2uB,GACJtuB,QAAQ4N,IAAI0gB,GAETA,EAAYpf,QAAU,MAGvBlP,QAAQ4N,IAAI,SACZye,GAAc,GACdE,EAAa+B,EAAYtQ,SAIxBvc,EAAMkc,aAAqC,SAAtBlc,EAAMkc,cAC5B2Q,EAAYlY,OAyBpB,SAA6BkY,GAC3B,IAAIC,EAAY,GAUhB,OATAD,EAAYtC,UAAUwC,SAASxsB,KAAI,SAAAgpB,GAE7BsD,EAAYG,gBAEPzD,EAAQ7I,aAAemM,EAAYG,gBAAgBhqB,SAASumB,EAAQ7I,cAE3EoM,EAAUvD,EAAQ7I,YAAcmM,EAAYlY,OAAO4U,EAAQ7I,aAH3DoM,EAAUvD,EAAQ7I,YAAcmM,EAAYlY,OAAO4U,EAAQ7I,eAMxDoM,EApCoBG,CAAoBJ,GACzCnC,EAAUmC,EAAYlY,QACtBkY,EAAYtC,UAAUhnB,MAAQ,gBAIV,QAAnBvD,EAAM4sB,WACPC,EAgCR,SAA6CA,GAC3C,IAAIK,EAA4B,MAAOL,GACnCC,EAAYrC,EAQhB,OAPAoC,EAAYtC,UAAUwC,SAASxsB,KAAI,SAAAgpB,GAC9BA,EAAQ4D,eACTD,EAA6BvY,OAAO4U,EAAQ7I,YAAc6I,EAAQ4D,aAClEL,EAAUvD,EAAQ7I,YAAc6I,EAAQ4D,iBAG5CzC,EAAUoC,GACHI,EA1CaE,CAAoCP,IAIpDvC,EAAQuC,EAAYlY,QACpB6V,EAAaqC,EAAYtC,WACzBS,EAAkB6B,EAAY9B,gBAC9BG,EAA6B2B,EAAY5B,2BACzCG,EAAoByB,EAAY1B,kBAChCG,EAAkBuB,EAAYxB,gBAC9BG,GAA6BqB,EAAYtB,2BACzCG,GAAoBmB,EAAYpB,uBAKnC,CAACW,KAiCJ,IAAMiB,GAAmB,SAACC,EAAUjhB,GAAkD,IAAxC5L,EAAuC,uDAA/B,KAAM8sB,EAAyB,wDAE/ET,EAAYrC,EAChBqC,EAAUQ,GAAYjhB,EACtBqe,EAAUoC,GAEV,IAAIrV,EAAU1H,EACd0H,EAAQ6V,GAAYjhB,EACpBie,EAAQ7S,GACR,IAAI+V,EAAe,MAAOzd,GAG1B0d,GAAkBH,EAAUjhB,GAGNqhB,GAAwBJ,EAAUjhB,GAAxD,IAIIshB,EAAc,MAAQ5d,GAC1B,KAAIkY,mBAAQuF,EAAiBG,IAAmBD,GAAwBJ,EAAUjhB,MAEhFie,EAAQ,MAAIqD,IAGTltB,GACD,GAAGksB,GAAU1J,QAAQxiB,GACnB2d,YAAW,kBAAMuO,GAAU1J,QAAQxiB,GAAOse,UAAS,SAChD,CACH,IAAI6O,EAAYC,GAAqBptB,EAAOksB,GAAU1J,SACnD2K,GACDxP,YAAW,kBAAMuO,GAAU1J,QAAQ2K,GAAW7O,UAAS,KAO5DwO,GACDjD,EAAQ,MAAIqD,KAMVG,GAA2Bxf,oBAAS+e,GAAkB,KAE5D,SAASQ,GAAqBE,EAAaC,GAEzC,IADA,IACA,EADIC,GAAgB,EACpB,KAAwBD,EAAMnZ,aAA9B,aAAwC,CAAC,IAAD,qBAA7B/F,EAA6B,KAA1B/K,EAA0B,KACtC,GAAG+K,EAAIif,GAAehqB,EAAM,CAC1BkqB,EAAgBnf,EAChB,OAGJ,OAAOmf,EAOT,SAASR,GAAkBH,EAAUjhB,GACnC,IAAI,IAAIyC,EAAI,EAAGA,EAAIyb,EAAUwC,SAASpqB,OAASmM,IAC7C,GAAGyb,EAAUwC,SAASje,GAAGof,kBAEZC,GAAU5D,EAAUwC,SAASje,IAS9C,SAAS4e,GAAwBJ,EAAUjhB,GAEzC,IAAI+hB,GAAkB,EActB,OAbA7D,EAAUwC,SAASxsB,KAAI,SAACgpB,GAGnBA,EAAQ8E,cAAgB9E,EAAQ+E,aAG9B/E,EAAQ8E,eAAiBf,IAE1Bc,GAAkB,MAKjBA,EA8DT,IAAMG,GAAc,SAACC,GAGnB,GAzDAjwB,QAAQ4N,IAAI,4BAEYoe,EAAUwC,SAAS/oB,QAAO,SAACgc,GAAD,OAAUA,EAAKyO,YAG1CC,OAAM,SAAC1O,GAK5B,OAJAzhB,QAAQ4N,IAAI6T,GACZzhB,QAAQ4N,IAAIse,EAAOzK,EAAKU,aACxBniB,QAAQ4N,IAAI4D,EAAKiQ,EAAKU,kBAESzd,IAA5BwnB,EAAOzK,EAAKU,kBAAuDzd,IAA1B8M,EAAKiQ,EAAKU,oBAIvBzd,IAA5BwnB,EAAOzK,EAAKU,kBACgBzd,IAA1B8M,EAAKiQ,EAAKU,cAEViO,GAAgB3rB,SAASgd,EAAKU,gBAwCrC,CAKAyL,IAAY,GACZ5tB,QAAQ4N,IAAI,gBAAiBoe,EAAUqE,gBAAiBnE,GAExD,IAAImE,EAAkB,KACnBJ,IACDjwB,QAAQ4N,IAAI,2BAA2Boe,EAAUqE,iBACjDA,EAAkBrE,EAAUqE,iBAGR,QAAnB5uB,EAAM4sB,UAAsB5sB,EAAMkc,YAEnC5T,GACE,gBAAgBtI,EAAM+Z,UAAU,KAChCrV,EAAWwD,UACX,CACE0mB,gBAAiBA,EACjBC,oBAAqBpE,EACrBnO,SAAUtc,EAAMsc,WAElBpe,MAAK,SAAAC,GAGL,GAFAguB,IAAY,GAEThuB,EAASsP,OAAS,SAEGxK,IAAnB9E,EAASpC,YAAmDkH,IAA5B9E,EAASpC,MAAM6wB,UAChDlS,GAAgB,4JAA8Jvc,EAASoe,QACvLgQ,IAAyB,GACzBE,GAAiCtuB,EAASpC,MAAM6wB,gBAE1B3pB,IAAnB9E,EAAS2wB,MACVpU,GAAgB,sFAAwFvc,EAASoe,OAAS,kBAAoBpe,EAAS2wB,MAAM,GAAG3a,KAAO,aAAehW,EAAS2wB,MAAM,GAAGC,MAExMrU,GAAgB,sFAAwFvc,EAASoe,QAKrH/B,IAAmB,OAEhB,CAEH5Z,EAAWiZ,UAAU,CACnBC,SAAW3b,EAASpC,MAAM6wB,SAC1B7S,UAAY/Z,EAAM+Z,YAIpB,IAAI2S,EAAeN,GACnBM,IACAL,GAAeK,OAQnBtkB,GACE,gBAAgBpI,EAAM+Z,UAAU,IAAI/Z,EAAM4sB,SAC1CloB,EAAWwD,UACX,CACE0mB,gBAAiBA,EACjBC,oBAAqBpE,EACrBnO,SAAUtc,EAAMsc,WAElBpe,MAAK,SAAAC,GAGL,GAFAguB,IAAY,GAEThuB,EAASsP,OAAS,IACnBiN,GAAgBvc,EAASoe,QACzB/B,IAAmB,QAGnB,GAAGgU,EAAY,CACb,IAAI9B,EAAeN,GACnBM,IACAL,GAAeK,QAEf9rB,EAAWiZ,UAAU,CACnBC,SAAW,KACXC,UAAY,eApFpBiV,MAAM,wCAhCV,WAAqD,IAAlBC,EAAiB,uDAAR,QACpCC,EAAkB3E,EAAUwC,SAAS/oB,QAAO,SAACgc,GAAD,OAAUA,EAAKyO,YAC7DU,EAAsB,GACtBC,EAAuB,GAU3B,OATAF,EAAgB3uB,KAAI,SAACyf,QACY/c,IAA5BwnB,EAAOzK,EAAKU,kBAAuDzd,IAA1B8M,EAAKiQ,EAAKU,cAC9CiO,GAAgB3rB,SAASgd,EAAKU,cAClCyO,EAAoBzxB,KAAKsiB,GACzBoP,GAAwBpP,EAAKlc,MAAQ,UAK7B,UAAXmrB,EACME,EAGK,WAAXF,EACMG,OADT,EAekDC,CAA0B,YAgGxEC,GAAgB,WACpB1uB,EAAWiZ,UAAU,CACnBC,SAAW,KACXC,UAAY,QAQVwV,GAA2B,SAACC,GAChC,MAAoB,WAAjBA,EAAQ9yB,MAUS,eAAjB8yB,EAAQ9yB,KATF,cAACiT,EAAA,EAAD,CAELxO,KAAMquB,EAAQruB,KACdqJ,KAAMglB,EAAQhlB,KACd7J,QAAS,kBAAMpC,QAAQ4N,IAAIqjB,EAAQ7uB,UAJ9B,SAKJ6uB,EAAQjuB,MAJJyQ,GAAU,UAQnB,GAqCIyd,GAAqB,CACzB,IArB2B,SAACpB,EAAcqB,GAE1C,OAAG3f,EAAKse,IAAiBqB,GAoBzB,KAZiC,SAACrB,EAAcqB,GAEhD,OAAG3f,EAAKse,IAAiBqB,IAmBrBvB,GAAY,SAAC5E,GAEjB,IAAIoG,EAAY,MAAQpG,GACpBqG,EAAerG,EAAQ2E,kBAE3B,MAA+C,oBAArC2B,GAAmBD,GACpBC,GAAmBD,GAAcD,IAExCpxB,QAAQ4N,IAAI,2BACLod,IAMX,GAAwDjnB,IAAM8I,SAAS,IAAvE,aAAO0kB,GAAP,MAA6BC,GAA7B,MA0DA,OAA6CztB,IAAM8I,SAAS,IAA5D,aAAOujB,GAAP,YAiBA,IAAMkB,GAAqB,CACzB,6BA3EF,SAAsCtG,GAEpC,IAAIyG,EAAejgB,EAAKwZ,EAAQ0G,eAEhC,KAAK1G,EAAQ7I,cAAcoP,IAAsB,CAC/C,IAAII,EAAyB,MAAQJ,IACrCI,EAA0B3G,EAAQ7I,YAAc,GAChDqP,GAAwBG,GAG1B,IAAIA,EAAyB,MAAQJ,IAEjCK,EAAW5G,EAAQnT,MAAMpS,QAAO,SAAAgc,GAClC,OAAOA,EAAKuJ,EAAQ0G,iBAAmBD,KAYzC,OATAE,EAA0B3G,EAAQ7I,YAAcyP,EAG5ClI,mBAAQiI,EAA2BJ,KACrCC,GAAwBG,GAI1B3G,EAAQnT,MAAQ+Z,EACT5G,GAmDP,cA9CF,SAAuBA,GACrB,IAAI6G,EAAoB,IAAIhb,KAAKrF,EAAKwZ,EAAQ0G,gBAC1CI,EAAY,IAAIjb,KAAKrF,EAAKwZ,EAAQ7I,aAGtC,GAAG3Q,EAAKwZ,EAAQ7I,aACX2P,GAAaD,EAAkB,CAChC,IAAIE,EAAqB/G,EAAQ0G,cAAcnT,QAAQ,WAAY,OAAOC,OAC1EuT,EAAqBA,EAAmB,GAAGhS,cAAgBgS,EAAmB/jB,UAAU,GACxFmO,GAAgB,eAAiB6O,EAAQzlB,MAAQ,WAAawsB,GAC9D9V,IAAmB,GAEnB,IAAI/C,EAAU1H,EACd0H,EAAQ8R,EAAQ7I,YAAc,KAC9B4J,EAAQ7S,GAER,IAAIqV,EAAYrC,SACTqC,EAAUvD,EAAQ7I,YACzBgK,EAAUoC,GAId,OAAOvD,GAyBP,wBAjBF,SAAiCA,GAC/B,IAAIoG,EAAY,MAAQpG,GACpB9R,EAAU1H,EACV+c,EAAYrC,EAQhB,OANIxC,mBAAQxQ,EAAQ8R,EAAQ0G,eAAgBpxB,KAAK0xB,MAAMhH,EAAQiH,kBAC7D/Y,EAAQ8R,EAAQ0G,eAAiBpxB,KAAK0xB,MAAMhH,EAAQiH,eACpD1D,EAAUvD,EAAQ0G,eAAiBpxB,KAAK0xB,MAAMhH,EAAQiH,eACtDlG,EAAQ7S,GACRiT,EAAUoC,IAEL6C,IAaT,SAASc,GAAYlH,EAASmH,GAC5B,IAAIC,EAAgB,MAAOD,GAU3B,OATGnH,EAAQpkB,QACTwrB,EAAiB9wB,SAAW0pB,EAAQpkB,MACpCwrB,EAAiBxrB,MAAQokB,EAAQpkB,OAGhCokB,EAAQkF,WACTkC,EAAiBC,WAAa,aAAelsB,EAAWK,OAAOiB,QAG1D2qB,EAGT,IAAME,GAAgB,SAACC,EAAiBrwB,GAGtC,IAAI8oB,EAAO,MAAQuH,GAGf/sB,EAAQ,GAyBZ,GAxBGwlB,EAAQ4D,eACTppB,EAAQwlB,EAAQ4D,cAIc,OAA7Bpd,EAAKwZ,EAAQ7I,kBAAqDzd,IAA7B8M,EAAKwZ,EAAQ7I,cACnD3c,EAAQgM,EAAKwZ,EAAQ7I,aAIpB6I,EAAQkF,WACTlF,EAAQzlB,MAAQ,aAAeylB,EAAQzlB,OAItCylB,EAAQ2E,oBACT3E,EAAU4E,GAAU5E,KAQC,QAAnBvpB,EAAM4sB,UAA6C,SAAtB5sB,EAAMkc,cAAgD,IAAtBlc,EAAMkc,aACzC,eAAzBqN,EAAQ8E,gBAMU,QAAnBruB,EAAM4sB,UAA4C,SAAtB5sB,EAAMkc,aAAoD,eAAzBqN,EAAQ8E,iBAItEruB,EAAMkc,aAAqC,SAAtBlc,EAAMkc,aAAmD,eAAzBqN,EAAQ8E,iBAK7D9E,EAAQ8E,eAAgB9E,EAAQ+E,aAE7BmB,GAAmBlG,EAAQ+E,aAAa/E,EAAQ8E,aAAc9E,EAAQmG,iBAF5E,CAQA,IAAIngB,GAAW,EAIf,GAHwB,UAArBvP,EAAMgJ,aACPuG,GAAW,GAEW,SAArBvP,EAAMgJ,aAAyBugB,EAAQwH,UAA1C,CAKA,GAAoB,aAAjBxH,EAAQ7sB,KACT,OAAO,cAACuD,EAAA,EAAD,CAA0BC,MAAOC,EAAOkpB,cAAxC,SACL,cAAC/nB,EAAA,EAAD,CAAMpB,MAAOC,EAAOmpB,kBAApB,SAAwCC,EAAQhoB,QADhCyQ,GAAU,KAM9B,GAAoB,UAAjBuX,EAAQ7sB,KACT,OAAO,cAACuD,EAAA,EAAD,CAELC,MAAOuwB,GAAYlH,EAASa,IADvBpY,GAAU,KAOnB,GAAoB,WAAjBuX,EAAQ7sB,KACT,OAAO,cAACuD,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAACza,EAAA,EAAD,CACExO,KAAMooB,EAAQpoB,KACdqJ,KAAM+e,EAAQ/e,KACd7J,QAAU,kBAAMqwB,GAAczH,IAC9BrpB,MAAOgsB,GAAW/rB,EAAO2pB,eAAiB3pB,EAAOopB,EAAQrpB,OACzD8jB,QAASkI,GACT/K,SAAU+K,GANZ,SASG3C,EAAQhoB,QAVKyQ,GAAU,KAgB9B,GAAoB,SAAjBuX,EAAQ7sB,KACT,OAAO,cAACuD,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAAC,GAAD,CACEjpB,KAAMooB,EAAQpoB,KACdI,KAAMgoB,EAAQhoB,KACd6U,MAAOmT,EAAQnT,MACfzV,QAAS4oB,EAAQ5oB,WALHqR,GAAU,KAW9B,GAAoB,oBAAjBuX,EAAQ7sB,MACNqT,EAAKwZ,EAAQ7I,YACd,OAAO,eAACzgB,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,UACL,cAAC9oB,EAAA,EAAD,CAAMpB,MAAOC,EAAOopB,EAAQrpB,OAA5B,SAAqCqpB,EAAQzlB,QAC7C,cAACxC,EAAA,EAAD,UAAOioB,EAAQhoB,SAFCyQ,GAAU,KAQhC,GAAoB,aAAjBuX,EAAQ7sB,MAAwC,kBAAjB6sB,EAAQ7sB,KAAyB,CAEjE,IAAI2jB,GAAQ,EAKZ,MAJoB,kBAAjBkJ,EAAQ7sB,OACT2jB,GAAQ,GAGH,cAACpgB,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASc,GAAtD,SACL,cAACvK,GAAD,CACEhc,MAAOylB,EAAQzlB,MACfC,MAAOA,EACP2c,WAAY6I,EAAQ7I,WACpBD,SAAU4M,GACVjX,MAAOmT,EAAQnT,MACfiK,MAAOA,EACPJ,eAAgBsJ,EAAQtJ,eACxBF,cAAewJ,EAAQxJ,cACvBxQ,WAAUA,GAAWga,EAAQha,SAC7BoR,aAAclgB,EACdwJ,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,MAZxB1N,GAAU,KAkB9B,GAAoB,kBAAjBuX,EAAQ7sB,KACT,OAAO,cAACuD,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAAC,GAAD,CACEtmB,MAAOylB,EAAQzlB,MACfC,MAAOA,EACPkc,eAAgBsJ,EAAQtJ,eACxBF,cAAewJ,EAAQxJ,cACvB3J,MAAOmT,EAAQnT,MACf7G,WAAUA,GAAWga,EAAQha,SAC7BmR,WAAY6I,EAAQ7I,WACpBD,SAAU4M,MATIrb,GAAU,KAe9B,GAAoB,aAAjBuX,EAAQ7sB,KACT,OAAO,cAACuD,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAACrd,EAAA,EAAD,CACEjJ,MAAOylB,EAAQzlB,MACfC,MAAOA,EACPwL,WAAUA,GAAWga,EAAQha,SAE7B0W,OAAQ,SAAC/H,GAAD,OAAOmP,GAAiB9D,EAAQ7I,WAAYxC,EAAEyB,OAAO5b,QAC7Dkd,WAAW,EACXC,cAAe,EACfjX,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,MATxB1N,GAAU,KAe9B,GAAoB,iBAAjBuX,EAAQ7sB,KACT,OAAO,cAACuD,EAAA,EAAD,CAA0BC,MAAK,SAAMuwB,GAAYlH,EAASa,IAA3B,IAA8C7I,OAAQ,IAAI9gB,IAAzF,SACL,cAACsjB,GAAD,CACEjgB,MAAOylB,EAAQzlB,MACfC,MAAOA,EACPrB,IAAK6mB,EAAQ7mB,IACb4Z,SAAUtc,EAAMsc,SAChBoE,WAAY6I,EAAQ7I,WACpBD,SAAU4M,GACV1M,aAAclgB,EACdwJ,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,MATxB1N,GAAU,KAkB9B,GAAoB,UAAjBuX,EAAQ7sB,KAAiB,CAG1B,GAAyB,SAAtB6sB,EAAQ0H,UAET,OAAO,cAAChxB,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAACrd,EAAA,EAAD,CACEjJ,MAAOylB,EAAQzlB,MACfC,MAAOA,EACPwL,WAAUA,GAAWga,EAAQha,SAC7BC,aAAe,SAAAjO,GAAUusB,GAAyBvE,EAAQ7I,WAAYnf,EAAMd,IAC5Egf,gBAAiB,SAACvB,GAAD,OAAOmP,GAAiB9D,EAAQ7I,WAAYxC,EAAEyB,OAAO5b,MAAOtD,IAS7EwJ,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,MAfxB1N,GAAU,KAqB9B,GAAyB,aAAtBuX,EAAQ0H,UAET,OAAO,cAAChxB,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAACrd,EAAA,EAAD,CACEjJ,MAAOylB,EAAQzlB,MACfC,MAAO,GACPwL,WAAUA,GAAWga,EAAQha,SAC7BC,aAAe,SAAAjO,GAAUusB,GAAyBvE,EAAQ7I,WAAYnf,EAAMd,IAC5Egf,gBAAiB,SAACvB,GAAD,OAAOmP,GAAiB9D,EAAQ7I,WAAYxC,EAAEyB,OAAO5b,MAAOtD,IAC7EwJ,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,MAPxB1N,GAAU,KAa9B,GAAyB,WAAtBuX,EAAQ0H,UAAuB,CAChC,IAAIC,EAAa3H,EAAQpG,KAAOA,aAAKpf,EAAOwlB,EAAQpG,MAAQpf,EAC5D,OAAO,cAAC9D,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAACrd,EAAA,EAAD,CACEjJ,MAAOylB,EAAQzlB,MACfof,aAAa,UACbnf,MAAOmtB,EACP3hB,WAAUA,GAAWga,EAAQha,SAC7BkR,SAAW,SAAAvC,GAET,IAAIiT,EAAe5H,EAAQpG,KAAOiO,aAAOlT,EAAEyB,OAAO5b,OAASma,EAAEyB,OAAO5b,MACpE+pB,GAAyBvE,EAAQ7I,WAAYyQ,EAAc1wB,IAE7Dgf,gBAAiB,SAACvB,GAChB,IAAIiT,EAAe5H,EAAQpG,KAAOiO,aAAOlT,EAAEyB,OAAO5b,OAASma,EAAEyB,OAAO5b,MACpEspB,GAAiB9D,EAAQ7I,WAAayQ,EAAc1wB,IAkBtDwJ,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,GAGtC2R,OAAQ,SAAArxB,GACN,OAAGupB,EAAQpG,KACD,cAAC,KAAD,SACFnjB,GADE,IAEN+D,MAAOof,aAAKpf,EAAOmtB,GACnB/N,KAAMoG,EAAQpG,QAEJ,cAAC,KAAD,SACRnjB,GADQ,IAEZ+D,MAAOmtB,EACPhO,aAAa,iBA5CHlR,GAAU,KAuD9B,GAAyB,SAAtBuX,EAAQ0H,UACT,OAAO,cAAChxB,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,cAACzG,GAAD,CACE7f,MAAOylB,EAAQzlB,MACfwe,OAAO,KACPve,MAAOA,EACP2c,WAAY6I,EAAQ7I,WACpBD,SAAU4M,GACV9d,WAAUA,GAAWga,EAAQha,SAC7BoR,aAAclgB,EACdwJ,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,GACtCxf,MAAO,CAAC+E,OAAO,WAVD+M,GAAU,KAiB9B,GAAyB,aAAtBuX,EAAQ0H,UACT,OAAO,cAAChxB,EAAA,EAAD,CAA0BC,MAAOuwB,GAAYlH,EAASa,GAAtD,SACL,eAACnqB,EAAA,EAAD,CAAMC,MAAOC,EAAOwpB,kBAApB,UACE,cAAC,GAAD,CACE7lB,MAAOylB,EAAQzlB,MACfC,MAAOA,EACP2c,WAAY6I,EAAQ7I,WACpBD,SAAU4M,GACVlM,UAAU5R,IAAYga,EAAQha,SAC9BoR,aAAclgB,EACdwJ,IAAK,SAAAyV,GAAE,OAAIiN,GAAU1J,QAAQxiB,GAASif,KAExC,cAACpe,EAAA,EAAD,UAAOioB,EAAQzlB,YAXDkO,GAAU,SAwB5Bgf,GAAgB,SAACzH,GAGE,sBAApBA,EAAQ5oB,SACTqrB,IAAsB,GAGD,YAApBzC,EAAQ5oB,SACTiF,OAAOkZ,KAAKyK,EAAQ7mB,IAAK,WA2D7B,GAAGioB,EACD,OACE,cAACrpB,EAAA,EAAD,UAAOupB,IA2DX,OAAY,OAAT9a,GAA+B,OAAdwa,EAEhB,cAACtU,EAAA,EAAD,CAAmBC,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,UAIvC,UAArBhF,EAAMgJ,WAEL,eAAC/I,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAO,QAAtB,UAEE,eAAClF,EAAA,EAAD,CAAMC,MAAOC,EAAOiU,OAApB,UACE,cAAC9S,EAAA,EAAD,CAAMpB,MAAOC,EAAOipB,UAApB,SAAgCmB,EAAUhnB,QAEzCgnB,EAAU+G,eAAe/wB,KAAI,SAAAivB,GAC5B,OAAOD,GAAyBC,SAKpC,cAACvvB,EAAA,EAAD,CAAMC,MAAOC,EAAOopB,QAApB,SAEIgB,EAAUwC,SAASxsB,KAAI,SAACgpB,EAAS9oB,GAC/B,OAAOowB,GAActH,EAAS9oB,QAKpC,cAACyO,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CAAQjG,QAASqR,GAAiBpR,UAAWwR,GAA7C,UACE,cAACxL,GAAA,EAAOE,MAAR,oBACA,cAACF,GAAA,EAAOG,QAAR,UACE,cAACiiB,GAAA,EAAD,UAAY9W,OAEd,cAACtL,GAAA,EAAOqB,QAAR,UACE,cAACb,EAAA,EAAD,CAAQhP,QAASga,GAAjB,yBAKN,eAAC1a,EAAA,EAAD,CAAMC,MAAOC,EAAOqpB,YAApB,UA3FsB,WAC5B,GAAGyB,EACD,OACE,cAACtb,EAAA,EAAD,CACExO,KAAM,KACNqJ,KAAM,YACNtK,MAAOgsB,GAAW/rB,EAAO2pB,eAAiB3pB,EAAOypB,cACjDjpB,QAAU,kBAAM4tB,IAAY,IAC5BvK,QAASkI,GACT/K,SAAU+K,GANZ,SAQGX,IAkFEiG,GA5EQ,WACjB,GAAGzG,EACD,OACE,cAACpb,EAAA,EAAD,CACExO,KAAM,KACNqJ,KAAM,YACNtK,MAAOgsB,GAAW/rB,EAAO2pB,eAAiB3pB,EAAOypB,cACjDjpB,QAAU,kBAAM4tB,IAAY,IAC5BvK,QAASkI,GACT/K,SAAU+K,GANZ,SAQGb,IAkEEoG,GA5DU,WACnB,GAAGtG,EACD,OACE,cAACxb,EAAA,EAAD,CACExO,KAAM,KACNqJ,KAAM,YACNtK,MAAOgsB,GAAW/rB,EAAO2pB,eAAiB3pB,EAAO0pB,gBACjDlpB,QAASkrB,GACT7H,QAASkI,GACT/K,SAAU+K,GANZ,SAQGT,KAkDEiG,GAED,cAACxiB,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CAAQjG,QAASyiB,GAAsBxiB,UAAW2iB,GAAlD,UACE,cAAC3c,GAAA,EAAOE,MAAR,2BACA,cAACF,GAAA,EAAOG,QAAR,UACE,cAACiiB,GAAA,EAAD,kEAEF,eAACpiB,GAAA,EAAOqB,QAAR,WACE,cAACb,EAAA,EAAD,CAAQhP,QAAS2uB,GAAjB,iBACA,cAAC3f,EAAA,EAAD,CAAQhP,QAASmrB,GAAjB,wBAKN,cAAC5c,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CAAQjG,QAAS6iB,GAAoB5iB,UAAW8iB,GAAhD,UACE,cAAC9c,GAAA,EAAOE,MAAR,uBACA,cAACF,GAAA,EAAOG,QAAR,UACE,cAACiiB,GAAA,EAAD,gOAIF,eAACpiB,GAAA,EAAOqB,QAAR,WACE,cAACb,EAAA,EAAD,CAAQhP,QAnJE,WAExBqrB,IAAsB,GAGtB,IAAI2F,GAAQ,IAAIvc,MAAOyO,cACvBwJ,GAAiB,kBAAmBsE,GAEnB,IAAIvc,MACL,IAAIA,KAAKrF,EAAI,YA5CL,SAACihB,EAAeY,GAExCzF,IAAY,GACZ/jB,GACE,gBAAgBpI,EAAM+Z,UAAU,IAAI/Z,EAAM4sB,SAC1CloB,EAAWwD,UACX,CACEvH,QAASqwB,EACTY,YAAaA,EACbtV,SAAUtc,EAAMsc,WAElBpe,MAAK,SAAAC,GAGL,GAFAguB,IAAY,GAEW,MAApBhuB,EAASsP,OAEViN,GAAgBvc,EAASoe,QACzB/B,IAAmB,QAEf,GAAGrc,EAASsP,OAAS,IAEzBiN,GAAgBvc,EAASoe,OAAOsV,SAChCrX,IAAmB,OAEhB,CAEH,IAAIkS,EAAeN,GACnBM,IACAL,GAAeK,OAkBjBoF,CAAkB,oBAAqB,CAAC,wBAA2B/hB,EAAI,2BAwI3D,iBACA,cAACJ,EAAA,EAAD,CAAQhP,QAASsrB,GAAjB,8BAWU,SAArBjsB,EAAMgJ,WAEL,eAAC/I,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAO,QAAtB,UAEE,eAAClF,EAAA,EAAD,CAAMC,MAAOC,EAAOiU,OAApB,UACE,cAAC9S,EAAA,EAAD,CAAMpB,MAAOC,EAAOipB,UAApB,SAAgCmB,EAAUhnB,QAEzCgnB,EAAU+G,eAAe/wB,KAAI,SAAAivB,GAC5B,OAAOD,GAAyBC,SAKpC,cAACvvB,EAAA,EAAD,CAAMC,MAAOC,EAAOopB,QAApB,SAEIgB,EAAUwC,SAASxsB,KAAI,SAAAgpB,GACrB,OAAOsH,GAActH,QAK3B,cAACtpB,EAAA,EAAD,CAAMC,MAAOC,EAAOqpB,YAApB,SACE,cAAC7Z,EAAA,EAAD,CACExO,KAAM,KACNqJ,KAAM,YACNtK,MAAOC,EAAO0pB,gBACdlpB,QAAS2uB,GAJX,oCAtBR,G,oBChrCWyC,I,OA3DO,SAAC/xB,GAErB,MAA0BsC,WAAe,KAAzC,WAAOyB,EAAP,KAAcuG,EAAd,KAEA,EAA4BhI,aAA5B,WAAe8iB,GAAf,WAYA,OAVA9iB,aAAgB,WAEZ8iB,EADW,MAAVrhB,KAKF,CAACA,IAKF,cAAC9D,EAAA,EAAD,CAAMC,MAAO,CAAC,SAAY,WAAY,SAAY,MAAO,SAAW,SAApE,SAEE,eAAC,IAAD,CACEoD,cAAeS,GAAgB,GAC/B+c,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SAGNwW,QAAS,WAAOziB,QAAQ4N,IAAI,YAE5BjM,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GACR,MAAdD,GACD1D,EAAMygB,SAAS/c,GAEjB4G,EAAS,MAbb,UAgBE,cAAC,IAAOzG,KAAR,CACEC,MAAM,kBACNC,MAAM,MAER,cAAC,IAAOF,KAAR,CACEC,MAAM,gBACNC,MAAM,UAGN/D,EAAMoW,MAAM7V,KAAI,SAACyf,EAAMvf,GACrB,OACE,cAAC,IAAOoD,KAAR,CAEEC,MAAOkc,EAAKlc,MACZC,MAAOic,EAAKjc,OAFPtD,aAcfN,GAASuB,IAAWC,OAAO,CAC/B6B,OAAS,CACPc,gBAAgB,UAChBjD,MAAO,UACPmF,WAAY,OACZ2P,cAAe,OACftP,YAAa,OACbxC,aAAc,OACd7C,SAAU,OACV2X,eAAgB,IAChBD,gBAAiB,IACjBsI,iBAAkB,IAClBC,kBAAmB,MACnBC,kBAAmB,WAGrBX,WAAa,CACXvf,SAAU,QAEZof,WAAa,CACXpf,SAAU,OACVmgB,IAAK,MACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,QAERoK,SAAW,CACTrf,SAAU,OACVmgB,IAAK,OACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,U,mBC/BKub,GA3DO,SAAChyB,GAErB,IAAM0E,EAAaC,qBAAWC,IAI9B,EAAwBtC,WAAe,IAAvC,WAAOf,EAAP,KAAa0wB,EAAb,KACA,EAA4B3vB,YAAe,GAA3C,WAAO4vB,EAAP,KAAeC,EAAf,KAWA,OARA7vB,aAAgB,WAAQ2vB,EAAQ,IAAKE,GAAU,KAAW,CAACnyB,EAAMkJ,UAS/D,cAACkpB,EAAA,EAAD,UACE,cAACljB,GAAA,EAAD,UACE,eAACmjB,GAAA,EAAD,CACEnpB,QAASlJ,EAAMkJ,QACfC,UAAWnJ,EAAMmJ,UACjB8U,sBApBe,CAAC3Z,gBAAiB,QAASzC,QAAS,GAAI0f,OAAQ,IAAK1I,OAAQ,OAAQxV,UAAW,UAqB/FnD,MAAO,CAACqhB,OAAQ,KAJlB,UAME,cAAC7gB,EAAA,EAAD,CACEC,QAASX,EAAMmJ,UACfjJ,MAAO,CAACsE,WAAW,QAFrB,SAIE,cAACvD,EAAA,EAAD,CAASC,KAAM,IAAKE,KAAM,GAAIC,MAAO,WAEvC,cAAC,KAAD,CAAMnB,MAAO,CAACmB,MAAM,SAApB,yCACA,cAAC0L,EAAA,EAAD,CACEjJ,MAAM,GACNC,MAAOxC,EACPiO,aAAc,SAAAjO,GAAI,OAAI0wB,EAAQ1wB,IAC9BkJ,YAAa,0BACb6nB,qBAAsB5tB,EAAWK,OAAOC,QACxC9E,MAAO,CAACqyB,eAAgB,OAAQ7yB,SAAU,WAE5C,cAACiQ,EAAA,EAAD,CACExO,KAAK,eACLqJ,KAAK,YACL7J,QAjCV,WACEX,EAAMwyB,OAAOjxB,GACb4wB,GAAU,GACVF,EAAQ,UAAY1wB,EAAO,SA+BnB4f,SAAU+Q,EACVlO,QAASkO,EACT7wB,MAAOqD,EAAWK,OAAOC,QACzBytB,WAAYP,EAAS,CAAC,MAAQ,QAAU,CAAC,MAAQ,SAPnD,SASGA,EAAS,cAAgB,sBC4CtC,SAASQ,GAAS1yB,GAChB,IAAM0E,EAAaC,qBAAWC,IAE9B,EAA0BtC,WAAetC,EAAM2yB,SAAS7uB,OAAxD,WAAOA,EAAP,KAAc8uB,EAAd,KACA,EAAoCtwB,YAAe,GAAnD,WAAOuwB,EAAP,KAAmBC,EAAnB,KAmCA,OACE,eAAC7yB,EAAA,EAAD,CAAMC,MAAO,CAAC2R,QAAS,OAAQ9P,cAAe,MAAOmC,eAAgB,aAAcjC,WAAY,UAA/F,UACE,cAAC8K,EAAA,EAAD,CACEjJ,MAAM,GACNC,MAAOD,EACP0L,aAAc,SAAAjO,GAAI,OAVHwxB,EAUmBxxB,EATtCvB,EAAMgzB,oBAAoBD,EAAU/yB,EAAM2yB,eAC1CC,EAASG,GAFS,IAACA,GAWftoB,YAAa,0BACb8E,UAAWsjB,EACXP,qBAAsBO,EAAa,MAAQnuB,EAAWK,OAAOC,QAC7D9E,MAAO2yB,EAnCa,CACxBN,eAAgB,MAChB7yB,SAAU,QACVuF,OAAQ,OACRmK,YAAa,OACb9K,gBAAiB,MACjB2uB,eAAe,gBAbG,CAClBV,eAAgB,MAChB7yB,SAAU,QACV0P,YAAa,OACbnK,OAAQ,UAwCN,cAAC0K,EAAA,EAAD,CACExO,KAAK,SACLqJ,KAAK,YACL7J,QAAU,WACKkyB,EA3BjB7yB,EAAMkzB,oBAAoBlzB,EAAM2yB,UAFhC3yB,EAAMmzB,kBAAkBnzB,EAAM2yB,UAKhCG,GAAeD,IA0BXxxB,MAAOqD,EAAWK,OAAOC,QACzBmc,SAAUnhB,EAAMkyB,OAPlB,SASGW,EAAa,cAAgB,cAMvBO,OAhKc,SAACpzB,GAE5B,IAAM0E,EAAaC,qBAAWC,IAI9B,EAAkCtC,WAAetC,EAAMqzB,WAAvD,WAAOC,EAAP,KAAkBC,EAAlB,KACA,EAA4BjxB,YAAe,GAA3C,WAAO4vB,EAAP,KAAeC,EAAf,KAaA,SAASqB,EAAgBb,GACvB,IAAIc,EAAmBH,EACvBG,EAAmBA,EAAiBzvB,QAAO,SAAU0X,GACnD,OAAOA,EAAI3X,QAAU4uB,EAAS5uB,SAEhCxF,QAAQ4N,IAAIsnB,GACZF,EAAaE,GAGf,SAASC,EAAkBf,GACzB,IAAIc,EAAmBH,EACvBG,EAAiB/1B,KAAKi1B,GACtBp0B,QAAQ4N,IAAIsnB,GACZF,EAAaE,GAGf,SAAST,EAAoBlvB,EAAO6uB,GAClC,IAAIc,EAAmBH,EACnBK,EAAWF,EAAiBjX,WAAU,SAAAd,GAAG,OAAIA,EAAI3X,OAAS4uB,EAAS5uB,SACvE0vB,EAAiBE,GAAU7vB,MAAQA,EACnCyvB,EAAaE,GAIf,OAlCAnxB,aAAgB,WACd6vB,GAAU,KACT,CAACnyB,EAAMkJ,UAiCR,cAACkpB,EAAA,EAAD,UACE,cAACljB,GAAA,EAAD,UACE,eAACmjB,GAAA,EAAD,CACEnpB,QAASlJ,EAAMkJ,QACfC,UAAWnJ,EAAMmJ,UACjB8U,sBA9Ce,CAAC3Z,gBAAiB,QAASzC,QAAS,GAAI0f,OAAQ,IAAK1I,OAAQ,OAAQxV,UAAW,UA+C/FnD,MAAO,CAACqhB,OAAQ,KAJlB,UAME,cAAC7gB,EAAA,EAAD,CACEC,QAASX,EAAMmJ,UACfjJ,MAAO,CAACsE,WAAW,QAFrB,SAIE,cAACvD,EAAA,EAAD,CAASC,KAAM,IAAKE,KAAM,GAAIC,MAAO,WAEvC,cAAC,KAAD,CAAMnB,MAAO,CAACmB,MAAM,SAApB,+BACA,cAAC,KAAD,CAAMnB,MAAO,CAACmB,MAAM,QAASG,SAAS,QAAtC,+EACA,cAAC2F,EAAA,EAAD,CAAYjH,MAAO,CAACqG,UAAU,SAA9B,SACGvG,EAAMqzB,UAAU9yB,KAAI,SAACoyB,GAEpB,OADAp0B,QAAQ4N,IAAIwmB,GAEV,cAACD,GAAD,CACEC,SAAUA,EAEVQ,kBAAmBK,EACnBN,oBAAqBQ,EACrBV,oBAAqBA,EACrBd,OAAQA,GAJHS,EAAS5uB,YAUtB,cAAC4L,EAAA,EAAD,CACExO,KAAK,eACLqJ,KAAK,YACL7J,QAlEV,WACEpC,QAAQ4N,IAAImnB,GACZtzB,EAAMwyB,OAAOc,GACbnB,GAAU,IAgEFhR,SAAU+Q,EACVlO,QAASkO,EACT7wB,MAAOqD,EAAWK,OAAOC,QACzBytB,WAAYP,EAAS,CAAC,MAAQ,QAAU,CAAC,MAAQ,SAPnD,SASGA,EAAS,iBAAmB,yBC/B1B0B,GAvDG,SAAC5zB,GAEE2E,qBAAWC,IA+B9B,OACE,cAACwtB,EAAA,EAAD,UACE,cAACljB,GAAA,EAAD,UACE,eAACmjB,GAAA,EAAD,CACEnpB,QAASlJ,EAAMkJ,QACfC,UAAWnJ,EAAMmJ,UACjB8U,sBAnCe,CACrB3Z,gBAAiB,QACjBzC,QAAS,GACTsU,cAAe,GACfoL,OAAQ,IACR1I,OAAQ,OACRxV,UAAW,UA8BLnD,MAAO,CAACqhB,OAAQ,KAJlB,UAME,cAAC7gB,EAAA,EAAD,CACEC,QAASX,EAAMmJ,UACfjJ,MAAO,CAACsE,WAAW,OAAQ2R,cAAc,QAF3C,SAIE,cAAClV,EAAA,EAAD,CAASC,KAAM,IAAKE,KAAM,GAAIC,MAAO,WAEvC,eAjCgB,WAEtB,GAAyB,OAAtBrB,EAAM6zB,kBAAoD5wB,IAA5BjD,EAAM6zB,YAAY9vB,OAA0D,IAAnC/D,EAAM6zB,YAAY9vB,MAAMpB,OAAa,CAC7G,IACImxB,EADO,IAAI1e,KAAKpV,EAAM6zB,YAAY9vB,MAAM,GAAGgwB,WACvBC,eAAe,QAAS,CAACC,aAAc,UAC/D,OACE,eAACh0B,EAAA,EAAD,WACE,eAAC,KAAD,CAAMC,MAAO,CAACiW,cAAc,OAAQ9U,MAAO,SAA3C,6BAAsEyyB,KACtE,eAAC,KAAD,CAAM5zB,MAAO,CAACiW,cAAc,OAAQ9U,MAAO,SAA3C,qBAA8DrB,EAAM6zB,YAAY9vB,MAAM,GAAG0J,aAI7F,OACE,cAAC,KAAD,CAAMvN,MAAO,CAACiW,cAAc,OAAQ9U,MAAO,SAA3C,wCAoBE,YCtCK,SAAS6yB,GAAmBl0B,GAGzC,IAAMm0B,EAAa10B,wBAAc,CAAE0G,MAAO,4BAEpCzB,EAAaC,qBAAWC,IAC9B,EAA4BtC,IAAM8I,WAAlC,WAAOgpB,EAAP,KAAeC,EAAf,KACA,EAAwC/xB,IAAM8I,UAAS,GAAvD,WAAOkpB,EAAP,KAAqBC,EAArB,KACA,EAAsDjyB,IAAM8I,UAAS,GAArE,WAAOopB,EAAP,KAA4BC,EAA5B,KACA,EAAgDnyB,IAAM8I,UAAS,GAA/D,WAAOspB,EAAP,KAAyBC,EAAzB,KAQA,EAAkCryB,IAAM8I,SAASpL,EAAMqzB,WAAvD,WAAOA,EAAP,KAAkBuB,EAAlB,KAEA,SAAeC,EAAa3zB,GAA5B,mBAAA1E,EAAAC,OAAA,kEAAAD,EAAA,MAIiC43B,EAAOU,iBAAiBC,QAAQ,CAAEC,oBAAoB,KAJvF,OAIQC,EAJR,OAOMtC,EAAW,CACb7uB,MAAO5C,EACP6C,MAAOkxB,EAAiBC,QAGtBC,EAAgB9B,GACN31B,KAAKi1B,GAGnBrqB,GAAS,yBAA2BtI,EAAMnD,KAAM6H,EAAWwD,UAAW,CAACmrB,UAAW8B,IAAgBj3B,MAAK,SAAAC,GAGrGy2B,EAAaO,GAGbZ,GAAgB,MAtBpB,4DA2BA,SAASa,EAAgB/B,GACvB/qB,GAAS,yBAA2BtI,EAAMnD,KAAM6H,EAAWwD,UAAW,CAACmrB,UAAWA,IAAYn1B,MAAK,SAAAC,GAGjGy2B,EAAavB,GAGboB,GAAuB,MAI3B,SAAeY,EAAcH,GAA7B,SAAA14B,EAAAC,OAAA,mDACe,UAAVy4B,EADL,kCAAA14B,EAAA,MAEU43B,EAAOtuB,UAFjB,6BAIIsuB,EAAOU,iBAAiBQ,WAAWJ,GAJvC,4DAqEA,MAA4B5yB,IAAM8I,SAASmqB,KAA3C,WAAOtwB,EAAP,KAAeuwB,EAAf,KACA,SAASD,IACP,OAAGv1B,EAAMiF,OACAjF,EAAMiF,OAER,OAGT,SAASwwB,IACP,OAAGz1B,EAAMmF,MACAnF,EAAMmF,MAER,OAGT,IAqCA,EAA4C7C,IAAM8I,SAAS,cAA3D,WAAOsqB,EAAP,KAAuBC,EAAvB,KACMC,EAAmB,WACvB51B,EAAM61B,gBACN71B,EAAM81B,iBAENH,EAD8B,eAAnBD,EAAkC,aAAe,cAGzDzwB,IAAWswB,IACZC,EAAU,QAEVA,EAAUD,MAITQ,EAAiB,oBAAAv5B,EAAAC,OAAA,kEAAAD,EAAA,MAEf43B,EAAOtuB,UAFQ,6DAoBhBkwB,EAAa,WACjB,OACE,cAACt1B,EAAA,EAAD,CACEC,QAASi1B,EACT11B,MAAO,CAACsE,WAAW,QAFrB,SAIE,cAACvD,EAAA,EAAD,CAASC,KAAMw0B,EAAgBt0B,KAAM,GAAIC,MAAO,YAKhD40B,EAAO,WACX,OACE,cAACv1B,EAAA,EAAD,CACEC,QAAS,WAAOg0B,GAAoB,IACpCz0B,MAAO,CAACsE,WAAW,QAFrB,SAIE,cAACvD,EAAA,EAAD,CAASC,KAAM,OAAQE,KAAM,GAAIC,MAAO,YAkD9C,YAAyB4B,IAAtBjD,EAAMk2B,YAEL,cAACj2B,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAOswB,KAAtB,SACE,cAACn0B,EAAA,EAAD,0CAMJ,eAACrB,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAOswB,KAAcruB,QAAS,CAAC,KAAQpH,EAAMnD,MAA5D,UAnJqB,WACrB,GAAwB,kBAArBmD,EAAMm2B,WACP,OACE,cAAC,GAAD,CACEjtB,QAASorB,EACTnrB,UAAW,WAAOorB,GAAgB,IAClC/B,OAAQqC,IA+IXuB,GAzIyB,WAC5B,GAAwB,kBAArBp2B,EAAMm2B,WACP,OACE,cAAC,GAAD,CACEjtB,QAASsrB,EACTrrB,UAAW,WAAOsrB,GAAuB,IACzCjC,OAAQ4C,EACR/B,UAAWA,IAmIdgD,GA3HD,cAAC,GAAD,CACEntB,QAASwrB,EACTvrB,UAAW,WAAOwrB,GAAoB,IACtCd,YAAa7zB,EAAM6zB,cA2HpBM,EAAa,cAAC7yB,EAAA,EAAD,wCAAyC,KAEvD,eAACrB,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAO,OAAQoc,QAAS,GAAvC,UAEE,cAAC,EAAD,UACE,cAACthB,EAAA,EAAD,CAAMC,MAAO,CAAC+E,OAAQ,OAAQE,MAAO,YA9DnB,kBAArBnF,EAAMm2B,WAEL,eAACl2B,EAAA,EAAD,CAAMC,MAAO,CAAE6B,cAAc,MAAOoD,MAAO,QAA3C,UACE,cAAC,GAAD,CACEiR,MAAOid,EACP5S,SAAU4U,IAEZ,eAACp1B,EAAA,EAAD,CAAMC,MAAO,CAACgE,eAAgB,SAAUM,WAAW,OAAQzC,cAAe,OAA1E,UACE,cAAC4N,EAAA,EAAD,CAAQxO,KAAK,gBAAgBqJ,KAAK,YAAY7J,QAAS,WAAO4zB,GAAgB,IAA9E,0BAGA,cAAC5kB,EAAA,EAAD,CAAQxO,KAAK,gBAAgBqJ,KAAK,YAAY7J,QAAS,WAAO8zB,GAAuB,IAASv0B,MAAO,CAACsE,WAAW,QAAjH,iCAMF,cAACyxB,EAAD,IAEA,cAACv1B,EAAA,EAAD,CACEC,QAASo1B,EACT71B,MAAO,CAACsE,WAAW,QAFrB,SAIE,cAACvD,EAAA,EAAD,CAASC,KAAM,aAAcE,KAAM,GAAIC,MAAO,WAGhD,cAAC20B,EAAD,OAMF,cAAC/1B,EAAA,EAAD,CAAMC,MAAO,CAAE6B,cAAc,MAAOoD,MAAO,QAA3C,SACE,eAAClF,EAAA,EAAD,CAAMC,MAAO,CAAEsE,WAAW,OAAQzC,cAAc,OAAhD,UACE,cAACk0B,EAAD,IACA,cAACD,EAAD,SAgCJ,cAAC/1B,EAAA,EAAD,CAAMC,MAAO,CAAE6B,cAAc,MAAOoD,MAAO,OAAQF,OAAQA,EAAQsc,OAAQ,EAAGhY,UAAW,OAAzF,SAEE,cAAC,gBAAD,CACE+sB,YA/OU,SAAft2B,EAAMtD,KACQ,CACbA,KAAMsD,EAAMtD,KACZ6K,GAAIvH,EAAMu2B,SACVC,YAAax2B,EAAMw2B,YACnBC,SAAUz2B,EAAMy2B,SAChBP,YAAal2B,EAAMk2B,YACnBQ,UAAWC,UAAOC,UAAUC,OAGf,CACbn6B,KAAMsD,EAAMtD,KACZ6K,QAAItE,EACJwzB,SAAUz2B,EAAMy2B,SAChBP,YAAal2B,EAAMk2B,YACnBQ,UAAWC,UAAOC,UAAUC,MAC5BC,SAAU,CACRC,MAAO,CACL1D,UAAW,CACTnqB,SAAS,GAEX8tB,OAAQ,CACNzgB,UAAU,GAEZ9N,QAAS,CACP8N,UAAU,EACVrN,SAAS,GAEX+tB,eAAgB,CACd/tB,SAAS,GAEXguB,UAAW,CACThuB,SAAS,GAEXiuB,YAAa,CACXjuB,SAAS,GAEXkuB,eAAgB,CACd7gB,UAAU,IAGd8gB,KAAM,CACJC,UAAW,CACTpuB,SAAS,GAEXquB,UAAW,CACTruB,SAAS,IAGbpE,WAAY6xB,UAAOa,eAAeC,YAClCC,0BAA0B,IA+LxBC,cACE,IAAIC,IAAI,CACN,CAAC,SAAU,SAAgBjrB,EAAOkrB,GAAvB,SAAAr7B,EAAAC,OAAA,kEAAAD,EAAA,MAGiBq7B,EAAeC,cAHhC,gCAAAt7B,EAAA,MAKcq7B,EAAeE,iBAL7B,gCAAAv7B,EAAA,MAOSq7B,EAAeG,YAPxB,4EAUX,CAAC,WAAY,SAAUrrB,EAAOkrB,MAG9B,CAAC,QAAS,SAAUlrB,QAIxBsrB,aAAiB,mBAEjBC,qBAAyB,SAACL,GACxBxD,EAAUwD,cCtVT,SAASM,GAAWn4B,GAyGjC,IAAMo4B,EAAiB,CACrB,iBAxDF,SAA0BC,GACxBzyB,OAAOkZ,KAAKuZ,EAAK,GAAI,WAwDrB,iBArDF,SAA0BA,GACxB,GAAGA,EAAK,GACNr4B,EAAMY,WAAWC,SACfw3B,EAAK,GACL,CACEt3B,WAAYs3B,EAAK,GACjBve,cAAU7W,EACV8W,eAAW9W,QAGZ,CACH,GAAGo1B,EAAK,GAAGC,MAAM,MAAM,CACrB,IAAIt3B,EAASq3B,EAAK,GAAGvb,QAAQ,WAAY,IACrCyb,EAASF,EAAK,GAAGvb,QAAQ,YAAa,IAC1C9c,EAAMY,WAAWC,SACf03B,EACA,CACEx3B,WAAYC,EACZ8Y,cAAU7W,EACV8W,eAAW9W,IAIjBjD,EAAMY,WAAWC,SAASw3B,EAAK,MA+BjC,OA1BF,SAAgBA,GACXA,EAAK,GACNzyB,OAAOC,SAAS2yB,KAAO,UAAYH,EAAK,GAAK,YAAcA,EAAK,GAEhEzyB,OAAOC,SAAS2yB,KAAO,UAAYH,EAAK,IAuB1C,SAnBF,SAAkBA,GAChBrJ,MAAMqJ,EAAK,MAqBb,EAAsC/1B,WAAe,mBAArD,WAAOiC,EAAP,KAAoBk0B,EAApB,KACA,EAAsCn2B,WAA8C,SAA/BtC,EAAM+P,KAAK2oB,gBAA6B,GAAK,WAAlG,WAAOC,EAAP,KACA,GADA,KACsCr2B,YAAe,IAArD,WAAOs2B,EAAP,KAAoBC,EAApB,KAiBA,OACE,cAACn4B,EAAA,EAAD,CACER,MAAO,CACLiF,MAAOxF,IAAcK,EAAM+P,KAAK5K,MAAQ,MACxCuK,aAAc,QAEhB/O,QA1CJ,WACE,IAAIivB,EAAe5vB,EAAM+P,KAAK2oB,gBAC9B,MAA2C,oBAAjCN,EAAexI,GAChBwI,EAAexI,GAAc5vB,EAAM+P,KAAK+oB,0BAE/Cv6B,QAAQ4N,IAAI,4BAsCZ4sB,aArBU,WACsB,SAA/B/4B,EAAM+P,KAAK2oB,iBACZD,EAAe,YAEjBI,GAAe,IAkBbG,aAfY,WACdz6B,QAAQ4N,IAAI,WACZssB,EAAe,mBACfI,GAAe,IAabzxB,QAAS,CAAC,KAAQpH,EAAMnD,MAR1B,SAUE,eAACoD,EAAA,EAAD,CACEC,MAAO,CACL6B,cAAepC,IAAc,MAAQ,SACrCsC,WAAY,SACZgD,OAAQ,OACRsE,UAAU,MACVmG,aAAa,OACblL,WAAW,OACX4K,YAAY,OACZ0J,UAAW,kCACXqR,YAAY,MACZvR,aAAc,MACdqgB,WAAW,WACX10B,YAAaA,EACbyU,OAAQ2f,GAdZ,UA1IC34B,EAAM+P,KAAK5O,KAEV,cAAClB,EAAA,EAAD,CAAMC,MAAO,CACX+E,OAAQ,OACRE,MAAO,QACPjB,eAAgB,UAHlB,SAKE,cAACjD,EAAA,EAAD,CACEC,KAAMlB,EAAM+P,KAAK5O,KACjBC,KAAO,OACPC,MAAM,UACNnB,MAAO,CAAC0B,UAAW,SAAU/B,SAAU,OAAQgC,QAAQ,WAM5D7B,EAAM+P,KAAKmpB,SAGL,cAAC9zB,EAAA,EAAD,CACLC,OAAQ,CAAEC,IAAKtF,EAAM+P,KAAKmpB,UAC1B1zB,WAAY,UACZtF,MAAO,CACLoE,gBAAiB,UACjBzE,SAAU,OACVsF,MAAO,QACPF,OAAQ,QACRpD,QAAQ,MACR0H,UAAW,OACXmG,aAAc,eAbpB,EA2II,eAACzP,EAAA,EAAD,CAAMC,MAAO,CACX6B,cAAe,SACfo3B,WAAW,UAEXj1B,eAAgB,SAChBsC,WAAY,OACZK,YAAalH,IAAc,OAAS,MACpCwW,cAAe,QAPjB,UASE,cAAC7U,EAAA,EAAD,CAAMpB,MAAO,CACXsB,SAAU7B,IAAc,OAAS,OACjCiC,UAAWjC,IAAc,OAAS,SAClCwW,cAAe,OACfijB,WAAY,QAJd,SAMGp5B,EAAM+P,KAAKxM,QAEd,cAACjC,EAAA,EAAD,CAAMpB,MAAO,CACX+4B,WAAW,WACXh0B,OAAQ2zB,EAAc,OAAS,MAC/B3e,QAAS2e,EAAc,OAAS,MAHlC,SAKGA,EAAc54B,EAAM+P,KAAKspB,QAAU,a,uCC1L1CC,GAAS,aAmFFh4B,GAAO,WAkBlB,MAhBW,CACT,KAAQ,OACR,WAAc,CACZ,SAAY,OACZ,UAAa,OACb,MAAS,OACT,MAAS,8BAEX,WAAc,CACZ,CACE,KAAQ,WACR,QAAW,gBChGbg4B,GAAS,aAkEFC,GAAQ,WAiBnB,MAfW,CACT,KAAQ,QACR,WAAc,CACZ,MAAS,OACT,OAAU,OACV,MAAS,0CAEX,WAAc,CACZ,CACE,KAAQ,WACR,QAAW,QC5EbD,GAAS,aA4DF5vB,GAAU,WAmBrB,MAjBW,CACT,KAAQ,UACR,WAAc,CACZ,MAAS,OACT,OAAU,MACV,MAAS,oDAEX,WAAa,EACb,UAAa,EACb,WAAc,CACZ,CACE,KAAQ,WACR,QAAW,Q,+NC5EnB,IAAM4vB,GAAS,aAMFE,GAAe,SAACxxB,EAASyxB,GAEpCl7B,QAAQ4N,IAAInE,GAEZ,IAAI1L,EAAS,CAEXo9B,MAAO,CAELC,SAAU,CACRL,UACAM,QAAS,cACTC,WAAW,EACXC,WAAY,CACV30B,MAAO,MACPF,OAAQ,OACR80B,YAAa,OAEfC,OAAQ,CACN,CACEt9B,KAAM,OACNoH,MAAO,QACP5C,KAAM,SAER,CACExE,KAAM,OACNoH,MAAO,SACP5C,KAAM,UAER,CACExE,KAAM,OACNoH,MAAO,MACP5C,KAAM,SAKZ+4B,QA9BK,SA8BGC,EAAUn2B,EAAOo2B,GACvB57B,QAAQ4N,IAAI,UAAW+tB,EAAUn2B,EAAOo2B,GACvB,WAAbD,IACF37B,QAAQ4N,IAAIiuB,KAAKC,OACjBD,KAAKC,MAAM,GAAG3a,GAAGxf,MAAMiF,MAAQpB,EAAM4b,OAAOma,WAAWA,WAAW30B,MAClEi1B,KAAKC,MAAM,GAAG3a,GAAGxf,MAAM+E,OAASlB,EAAM4b,OAAOma,WAAWA,WAAW70B,UAMzEq1B,KAAM,CACJL,QADI,SACIC,EAAUn2B,EAAOo2B,OAiC7B,MA3B0B,SAAvBnyB,EAAQuyB,aAGTj+B,EAASk+B,GAAkBxyB,EAAQyyB,MAAOn+B,IAK5Cm9B,EAAOiB,GAAG,oBAAoB,SAACC,GAG7B,GAAGA,EAASC,UAAqD,gBAAzCD,EAASC,SAASd,WAAWF,QAA0B,CAG7E,IAAIgB,EAASD,EAASC,SAClBC,EAAaD,EAAOE,gBACxBD,EAAWE,IAAMJ,EAASK,QAAQD,IAClCH,EAAOK,c,mWAAP,IAA0BJ,IAG1BF,EAASL,KAAKY,IAAI,GAAGC,cAAc37B,SAAS,GAAGU,MAAMk7B,gBAAkB,OAAST,EAASK,QAAQD,IAAM,QAOpGz+B,GAYI8I,GAAQ,WAyCnB,MAvCW,CACT,KAAQ,cACR,WAAa,EACb,UAAY,EACZ,YAAc,EACd,QAAW,CACT,eAEF,WAAc,CACZ,MAAS,MACT,OAAU,OACV,IAAO,wBACP,MAAS,8EAEX,WAAc,CACZ,CACE,WAAa,EACb,WAAa,EACb,eAAiB,EACjB,YAAc,EACd,WAAa,EACb,WAAc,CACZ,MAAS,4KAGb,CACE,KAAQ,QACR,WAAa,EACb,UAAY,EACZ,YAAc,EACd,WAAa,EACb,WAAc,CACZ,IAAO,wBACP,MAAS,sFCtIbk0B,GAAS,aAiIF+B,GAAe,WAyB1B,MAvBW,CACT,KAAQ,eACR,WAAc,CACZ,MAAS,GACT,YAAe,GACf,SAAY,GACZ,YAAe,GACf,UAAa,GACb,aAAe,EACf,QAAU,EACV,OAAU,GACV,MAAS,OACT,OAAU,OACV,MAAS,uKAEX,WAAc,CACZ,CACE,KAAQ,WACR,QAAW,QCrJb/B,GAAS,WAIb,IAAMgC,EAAU,WACd11B,OAAO21B,QAAQze,WAGjB,GAA6B,oBAAlBlX,OAAO21B,QAAwB,CACxC,IAAMjC,EAASrc,SAASC,cAAc,UACtCoc,EAAOyB,IAAM,iEACbzB,EAAOkC,OAASF,EAChBre,SAAShf,KAAKmf,YAAYkc,QAG1BgC,KA8HG,IAKMG,GAAO,WAyFlB,MAvFW,CACT,KAAQ,OACR,WAAc,CACZ,cAAiB,OACjB,MAAS,MACT,SAAY,SACZ,YAAe,QACf,MAAS,0BAEX,WAAc,CACZ,CACE,WAAa,EACb,WAAa,EACb,eAAiB,EACjB,YAAc,EACd,WAAa,EACb,WAAc,CACZ,MAAS,yJAEX,WAAc,CACZ,CACE,KAAQ,OACR,WAAa,EACb,YAAc,EACd,WAAc,CACZ,MAAS,uFAEX,WAAc,CACZ,CACE,KAAQ,WACR,QAAW,4BAIjB,CACE,KAAQ,QACR,WAAa,EACb,UAAY,EACZ,WAAa,EACb,YAAc,EACd,QAAW,CACT,cAEF,WAAc,CACZ,IAAO,wBACP,MAAS,+EAGb,CACE,WAAa,EACb,WAAa,EACb,YAAc,EACd,QAAW,CACT,aAEF,WAAc,CACZ,MAAS,iBAEX,WAAc,CACZ,CACE,QAAW,IACX,WAAc,CACZ,eAAgB,SAChB,MAAS,8DAKjB,CACE,KAAQ,OACR,WAAa,EACb,YAAc,EACd,WAAc,CACZ,MAAS,8CAEX,WAAc,CACZ,CACE,KAAQ,WACR,QAAW,gEClOrBnC,GAAS,aAMFoC,GAAwB,SAAC1zB,EAASyxB,GAoC7C,OAlCAl7B,QAAQ4N,IAAInE,GAEC,CAEX0xB,MAAO,CAELC,SAAU,CACRL,UACAM,QAAS,MACTC,WAAW,EACXC,WAAY,CACVC,YAAa,OAKfC,OAAQ,IAGVC,QAfK,SAeGC,EAAUn2B,EAAOo2B,MAO3BG,KAAM,CACJL,QADI,SACIC,EAAUn2B,EAAOo2B,Q,wCChCVwB,G,WAuBnB,WAAYC,EAAK72B,EAAQiD,GAA+B,aACtD,IAAI6zB,EAAOzB,KAEXr1B,EAASA,GAAkB,CACzB,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAFnNiD,EAAUA,GAAoB,IAItB8W,KAAO+c,EAAKC,OAAO9zB,EAAQ8W,MACnC9W,EAAQ+zB,UAAY/zB,EAAQ+zB,WAAa,QACzC/zB,EAAQ9H,MAAQ0U,OAAO5M,EAAQ9H,OAC/B8H,EAAQ9H,MAAM2R,QAAU7J,EAAQ9H,MAAM2R,SAAW,QACjD7J,EAAQg0B,YAAch0B,EAAQg0B,cAAe,EAC7Ch0B,EAAQi0B,SAAWj0B,EAAQi0B,UAAY,oFAEvCJ,EAAKK,IAAML,EAAKC,OAAOF,GACvBC,EAAKM,IAAM,GACXN,EAAKx6B,MAAQ,GACbw6B,EAAKO,QAAS,EACdP,EAAK92B,OAASA,EACd82B,EAAK7zB,QAAUA,EACf6zB,EAAKxK,SAGDrpB,EAAQ8W,MACV9W,EAAQ8W,KAAKud,iBAAiBr0B,EAAQ+zB,WAAW,SAAAO,GAC/CT,EAAKO,OAASP,EAAKU,QAAUV,EAAK/c,UAKtC+c,EAAKK,IAAIG,iBAAiB,SAAS,SAAAC,GACjC,IAAIE,EAAMF,EAAG3c,OAAO8c,aAAa,YAC5BD,IAGLX,EAAKx6B,MAAQm7B,EAEbX,EAAKa,IAAIF,GACTX,EAAKU,YAGHv0B,EAAQg0B,aACVp2B,OAAOy2B,iBAAiB,SAAS,SAAAC,GAE3BA,EAAG3c,QAAU3X,EAAQ8W,MAAQwd,EAAG3c,QAAUkc,EAAKK,KAAOL,EAAKO,QAC7DP,EAAKU,YAKe,IAAtBv0B,EAAQ20B,WACVd,EAAKU,Q,mCAaT,SAAO7c,GACL,MAAkB,kBAAPA,EACFzC,SAASI,cAAcqC,GAEzBA,I,oBAUT,WACE,IAAImc,EAAOzB,KACTwC,EAAO,GAETf,EAAK92B,OAAO83B,SAAQ,SAAAC,GAClBF,GAAQf,EAAK7zB,QAAQi0B,SAASnf,QAAQ,aAAcggB,MAGtDjB,EAAKK,IAAIa,UAAYH,I,mBAUvB,WACExC,KAAK8B,IAAIh8B,MAAM2R,QAAU,OACzBuoB,KAAKgC,QAAS,I,kBAUhB,WACEhC,KAAK8B,IAAIh8B,MAAM2R,QAAUuoB,KAAKpyB,QAAQ9H,MAAM2R,QAC5CuoB,KAAKgC,QAAS,I,yBAWhB,SAAYY,GACV5C,KAAK+B,IAAIz+B,KAAKs/B,K,iBAYhB,SAAIF,EAAGG,GACM7C,KACN/4B,MAAQy7B,GACH,IAANG,IAFO7C,KAKN+B,IAAIU,SAAQ,SAAAG,GACfA,GAAMA,EAAGF,MANA1C,KAQN+B,IAAM,Q,KC7JFe,GAAoB,SAACzD,EAAQzxB,GAKxCyxB,EAAO0D,WAAWC,QAAQ,OAAQ1B,GAAsB1zB,IAMxDyxB,EAAO4D,aAAaC,IAAI,OAAQ,CAACx5B,MRwDV,wIQxD4Bu1B,QAAS/3B,KAC5Dm4B,EAAO0D,WAAWC,QAAQ,ORjBD,SAACp1B,EAASyxB,GAEnCl7B,QAAQ4N,IAAInE,GAEZ,IAAI1L,EAAS,CAEXo9B,MAAO,CAELC,SAAU,CACRL,UACAM,QAAS,MACTC,WAAW,EACXC,WAAY,CACVC,YAAa,OAKfC,OAAQ,CACN,CACEt9B,KAAM,OACNoH,MAAO,QACP5C,KAAM,SAER,CACExE,KAAM,OACNoH,MAAO,YACP5C,KAAM,YAER,CACExE,KAAM,SACNoH,MAAO,aACP5C,KAAM,YACN8G,QAAS,CACP,CAACT,GAAI,OAAQrG,KAAM,QACnB,CAACqG,GAAI,QAASrG,KAAM,SACpB,CAACqG,GAAI,SAAUrG,KAAM,cAM7B+4B,QApCK,SAoCGC,EAAUn2B,EAAOo2B,GAEN,WAAbD,IAEFE,KAAKC,MAAM,GAAG3a,GAAGxf,MAAMiF,MAAQpB,EAAM4b,OAAOma,WAAWA,WAAW30B,MAClEi1B,KAAKC,MAAM,GAAG3a,GAAGxf,MAAMsB,SAAWuC,EAAM4b,OAAOma,WAAWA,WAAWt4B,SACrE44B,KAAKC,MAAM,GAAG3a,GAAGxf,MAAM0B,UAAYmC,EAAM4b,OAAOma,WAAWA,WAAWl4B,aAK5E04B,KAAM,CACJL,QADI,SACIC,EAAUn2B,EAAOo2B,OAW7B,MAL0B,SAAvBnyB,EAAQuyB,aAETj+B,EAASk+B,GAAkBxyB,EAAQyyB,MAAOn+B,IAGrCA,EQhD2BihC,CAAYv1B,IAG9CyxB,EAAO4D,aAAaC,IAAI,QAAS,CAACx5B,MPmCV,uIOnC6Bu1B,QAASE,KAC9DE,EAAO0D,WAAWC,QAAQ,QPrBA,SAACp1B,EAASyxB,GAEpCl7B,QAAQ4N,IAAInE,GAEZ,IAAI1L,EAAS,CAEXo9B,MAAO,CAELC,SAAU,CACRL,UACAM,QAAS,MACTC,WAAW,EACXC,WAAY,CACVC,YAAa,OAKfC,OAAQ,CACN,CACEt9B,KAAM,OACNoH,MAAO,SACP5C,KAAM,YAKZ+4B,QArBK,SAqBGC,EAAUn2B,EAAOo2B,GAEN,WAAbD,IACFE,KAAKC,MAAM,GAAG3a,GAAGxf,MAAM+E,OAASlB,EAAM4b,OAAOma,WAAWA,WAAW70B,UAIzEq1B,KAAM,CACJL,QADI,SACIC,EAAUn2B,EAAOo2B,OAa7B,MAP0B,SAAvBnyB,EAAQuyB,aAETj+B,EAASk+B,GAAkBxyB,EAAQyyB,MAAOn+B,IAG5CiC,QAAQ4N,IAAI7P,GAELA,EO3B4BkhC,CAAax1B,IAGhDyxB,EAAO4D,aAAaC,IAAI,UAAW,CAACx5B,MN2BV,sIM3B+Bu1B,QAAS3vB,KAClE+vB,EAAO0D,WAAWC,QAAQ,UNvBE,SAACp1B,EAASyxB,GAEtCl7B,QAAQ4N,IAAInE,GAEZ,IAAI1L,EAAS,CAEXo9B,MAAO,CAELC,SAAU,CACRL,UACAM,QAAS,MACTC,WAAW,EACXC,WAAY,CACVC,YAAa,OAKfC,OAAQ,IAGVC,QAfK,SAeGC,EAAUn2B,EAAOo2B,GAEN,WAAbD,IACFE,KAAKC,MAAM,GAAG3a,GAAGxf,MAAM+E,OAASlB,EAAM4b,OAAOma,WAAWA,WAAW70B,UAIzEq1B,KAAM,CACJL,QADI,SACIC,EAAUn2B,EAAOo2B,OAa7B,MAP0B,SAAvBnyB,EAAQuyB,aAETj+B,EAASk+B,GAAkBxyB,EAAQyyB,MAAOn+B,IAG5CiC,QAAQ4N,IAAI7P,GAELA,EMnB8BmhC,CAAez1B,IAGpDyxB,EAAO4D,aAAaC,IAAI,cAAe,CAACx5B,ML4DhB,wIK5DmCu1B,QAASj0B,KACpEq0B,EAAO0D,WAAWC,QAAQ,cAAe5D,GAAaxxB,EAASyxB,IAG/DA,EAAO4D,aAAaC,IAAI,eAAgB,CAACx5B,MJsFV,gJItFoCu1B,QAASgC,KAC5E5B,EAAOiE,cAAcN,QAAQ,eJjCI,SAACp1B,EAASyxB,GAE3Cl7B,QAAQ4N,IAAInE,GAEZ,IAAInF,EAAYmF,EAAQnF,UACxBA,EAAU86B,QAAQ,CAACp2B,GAAI,KAAMrG,KAAM,SAEnC,IAAI5E,EAAS,CAEXo9B,MAAO,CAELC,SAAU,CACRL,UACAM,QAAS,MACTC,WAAW,EACXC,WAAY,CACVC,YAAa,OAKfC,OAAQ,CACN,CACEt9B,KAAM,OACNoH,MAAO,QACP5C,KAAM,SAER,CACExE,KAAM,SACNoH,MAAO,UACP5C,KAAM,UACN8G,QAASnF,GAEX,CACEnG,KAAM,OACNoH,MAAO,eACP5C,KAAM,eAER,CACExE,KAAM,OACNoH,MAAO,YACP5C,KAAM,YAER,CACExE,KAAM,OACNoH,MAAO,eACP5C,KAAM,eAER,CACExE,KAAM,OACNoH,MAAO,aACP5C,KAAM,aAER,CACExE,KAAM,WACNoH,MAAO,gBACP5C,KAAM,eAER,CACExE,KAAM,WACNoH,MAAO,WACP5C,KAAM,UAER,CACExE,KAAM,OACNoH,MAAO,UACP5C,KAAM,UAER,CACExE,KAAM,OACNoH,MAAO,QACP5C,KAAM,SAER,CACExE,KAAM,OACNoH,MAAO,SACP5C,KAAM,YAKZ+4B,QAxEK,SAwEGC,EAAUn2B,EAAOo2B,GAEN,WAAbD,IACFE,KAAKC,MAAM,GAAG3a,GAAGxf,MAAMiF,MAAQpB,EAAM4b,OAAOma,WAAWA,WAAW30B,MAClEi1B,KAAKC,MAAM,GAAG3a,GAAGxf,MAAM+E,OAASlB,EAAM4b,OAAOma,WAAWA,WAAW70B,UAIzEq1B,KAAM,CACJL,QADI,SACIC,EAAUn2B,EAAOo2B,GACvB57B,QAAQ4N,IAAI,aAAc+tB,EAAUn2B,EAAOo2B,IAE7CyD,OAAQ,CACNtgB,MAAO,yBAETugB,sBAPI,SAOkBlxB,QACmB1J,IAApC0J,EAAMgT,OAAOma,WAAWl2B,SACzBw2B,KAAKV,MAAMoE,cAAc,CAAC,QAAUnxB,EAAMgT,OAAOma,WAAWl2B,QAAQG,WAa5E,MAP0B,SAAvBiE,EAAQuyB,aAETj+B,EAASk+B,GAAkBxyB,EAAQyyB,MAAOn+B,IAG5CiC,QAAQ4N,IAAI7P,GAELA,EI9EsCyhC,CAAoB/1B,IAGjEyxB,EAAO4D,aAAaC,IAAI,OAAQ,CAACx5B,MHmGV,kJGnG4Bu1B,QAASoC,KAC5DhC,EAAO0D,WAAWC,QAAQ,OHxBD,SAACp1B,EAASyxB,GAEnCl7B,QAAQ4N,IAAInE,GAEZ,IAAI1L,EAAS,CAEXo9B,MAAO,CAELC,SAAU,CACRL,UACAM,QAAS,MACTC,WAAW,EACXC,WAAY,CACVC,YAAa,OAKfC,OAAQ,CACN,CACEt9B,KAAM,OACNoH,MAAO,QACP5C,KAAM,SAER,CACExE,KAAM,SACNoH,MAAO,gBACP5C,KAAM,cACN8G,QAAS,CACP,CAACT,GAAI,QAASrG,KAAM,SACpB,CAACqG,GAAI,OAAQrG,KAAM,UAGvB,CACExE,KAAM,OACNoH,MAAO,YACP5C,KAAM,cAKZ+4B,QAnCK,SAmCGC,EAAUn2B,EAAOo2B,GAEN,WAAbD,IAEFE,KAAKC,MAAM,GAAG3a,GAAGxf,MAAMiF,MAAQpB,EAAM4b,OAAOma,WAAWA,WAAW30B,MAEX,SAAnDpB,EAAM4b,OAAOma,WAAWA,WAAWkE,cACrC5D,KAAKC,MAAM,GAAG3a,GAAGrC,cAAc,eAAend,MAAM2R,QAAU,OAC9DuoB,KAAKC,MAAM,GAAG3a,GAAGrC,cAAc,cAAcnd,MAAM2R,QAAU,QAEzD9N,EAAM4b,OAAOma,WAAWA,WAAWmE,YAAYhhB,SAASihB,qBAAqB,UAAU,GAAGC,cAAc5C,QAAQ6C,OAClHhE,KAAKC,MAAM,GAAG3a,GAAGrC,cAAc,cAAc0f,UA0DlD,oBA1DuEh5B,EAAM4b,OAAOma,WAAWA,WAAWmE,SA0D1G,wEAzDKhhB,SAASihB,qBAAqB,UAAU,GAAGC,cAAc5C,QAAQze,WAEjEkS,MAAM,mCAI6C,UAAnDjrB,EAAM4b,OAAOma,WAAWA,WAAWkE,cACrC5D,KAAKC,MAAM,GAAG3a,GAAGrC,cAAc,cAAcnd,MAAM2R,QAAU,OAC7DuoB,KAAKC,MAAM,GAAG3a,GAAGrC,cAAc,eAAend,MAAM2R,QAAU,WAKpEwsB,QA5DK,SA4DGC,GACN//B,QAAQ4N,IAAI,cAAemyB,MAKjC,GAA0B,SAAvBt2B,EAAQuyB,WAAsB,CAAC,IAAD,GAyB/B,EAAAj+B,EAAOo9B,MAAMC,SAASK,QAAOt8B,KAA7B,QAxB0B,CACtB,CACAhB,KAAM,SACNoH,MAAO,kBACP5C,KAAM,gBACN8G,QAAS,CACP,CAACT,GAAI,OAAQrG,KAAM,QACnB,CAACqG,GAAI,mBAAoBrG,KAAM,oBAC/B,CAACqG,GAAI,mBAAoBrG,KAAM,oBAC/B,CAACqG,GAAI,SAAUrG,KAAM,UACrB,CAACqG,GAAI,WAAYrG,KAAM,cAGzB,CACExE,KAAM,OACNoH,MAAO,gBACP5C,KAAM,uBAER,CACExE,KAAM,OACNoH,MAAO,gBACP5C,KAAM,yBAOZ5E,EAASk+B,GAAkBxyB,EAAQyyB,MAAOn+B,GAG5C,OAAOA,EGhF2BiiC,CAAYv2B,IAG9CyxB,EAAO0D,WAAWC,QAAQ,eAAgB1B,GAAsB1zB,IAGhEyxB,EAAO0D,WAAWC,QAAQ,YAAa1B,GAAsB1zB,IAO7D,IAAMw2B,EAAK/E,EAAOgF,YA6ClB,SAASC,EAAyBC,GAChCA,EAAU7E,WAAW8E,WAAWjI,OAAOkG,SAAQ,SAACnD,GAC9CA,EAAMgD,IAAI,CACRmC,UAAU,EACVC,WAAW,EACXC,eAAe,EACfC,WAAW,EACXC,YAAY,IAEe,SAA1BvF,EAAMI,WAAWp9B,MAClB6B,QAAQ4N,IAAIutB,GAEdA,EAAMI,WAAW8E,WAAWjI,OAAOkG,SAAQ,SAACqC,GAE1CA,EAASxC,IAAI,CACXmC,UAAU,EACVC,WAAW,EACXC,eAAe,EACfC,WAAW,EACXC,YAAY,IAEdP,EAAyBQ,SAjE/BzF,EAAOiB,GAAG,UAAU,SAAC/e,GACnBpd,QAAQ4N,IAAIqyB,EAAGW,eAIjB1F,EAAOiB,GAAG,mBAAmB,SAACC,GAC5BA,EAASyE,iBAAiB,CAAC,cAAe,wBAS5C3F,EAAOiB,GAAG,iBAAiB,SAAChB,GAEqB,QAA5CA,EAAMI,WAAWA,WAAWC,aAsN5B,SAA4CsF,EAAW3F,GAE5D,IAAI,IAAM4F,KAAQD,EAAU,CAC1B,IAAIE,EAAUF,EAAUC,GACxB5F,EAAMI,WAAWA,WAAWyF,IAAW,GAzNrCC,CAAmCx3B,EAAQq3B,UAAW3F,MAM1DD,EAAOiB,GAAG,gBAAgB,SAAC+E,GACzBlhC,QAAQ4N,IAAIszB,GACZlhC,QAAQ4N,IAAInE,GACZO,GAAW,cAAeP,EAAQtD,WAAWwD,UAAWu3B,GACrDvhC,MAAK,SAACC,GACLI,QAAQ4N,IAAIhO,SAKlBs7B,EAAOiB,GAAG,aAAa,SAAC+E,GACtBlhC,QAAQ4N,IAAIszB,GACZlhC,QAAQ4N,IAAInE,MAkCdyxB,EAAOiB,GAAG,mBAAmB,SAACiE,GAES,QAAjCA,EAAU7E,WAAWF,SAAmD,SAA9B+E,EAAU7E,WAAWp9B,MACjEgiC,EAAyBC,MAI7BlF,EAAOiB,GAAG,wBAAwB,SAACiE,GAEI,QAAjCA,EAAU7E,WAAWF,SAAmD,SAA9B+E,EAAU7E,WAAWp9B,MACjEgiC,EAAyBC,MAK7B,IAAMe,EAAMjG,EAAOkG,eACfC,EAAc,KACZ76B,EAAS,CACbiD,EAAQtD,WAAWK,OAAOC,QAC1BgD,EAAQtD,WAAWK,OAAOuB,UAC1B0B,EAAQtD,WAAWK,OAAOiB,OAC1B,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF05B,EAAIpC,IAAI,YAAa,CACnBn8B,KAAK,8IAGL24B,WAAY,CACVvyB,GAAI,iBACJhE,MAAO,cAETmR,OAAQ,SAACgrB,EAAK7f,GACP+f,IAAaA,EAAc,IAAIjE,GAAO,oBAAqB52B,EAAQ,CACtE+Z,KAAM,qCACNkd,aAAa,KAEf4D,EAAYC,aAAY,SAAArD,GAAG,OAAIkD,EAAII,KAAK,YAAatD,SAOzD,IAAMuD,EAAUtG,EAAOuG,QACvBzhC,QAAQ4N,IAAI4zB,GACZxhC,QAAQ4N,IAAI4zB,EAAQE,UACpBF,EAAQzC,IAAI,eAAgB,UAAU,SAAA7D,GACpCl7B,QAAQ4N,IAAI,eAGdstB,EAAOiB,GAAG,eAAe,SAACnzB,EAAI24B,EAAUhiB,GACtC3f,QAAQ4N,IAAI5E,EAAI24B,EAAUhiB,MAK5Bub,EAAOiB,GAAG,cAAc,SAACgF,GACvBnhC,QAAQ4N,IAAI,aAAcuzB,GAC1BA,EAAIhgB,GAAG2c,iBAAiB,SAAS,SAASne,GACxC3f,QAAQ4N,IAAI,QAAS+R,GACrBA,EAAEiiB,iBACF5hC,QAAQ4N,IAAI8Q,UACZ1e,QAAQ4N,IAAIstB,EAAO2G,OAAOC,eAC1B,IAAI9+B,EAAO2c,EAAEoiB,cAAcr4B,QAAQ,cACnCwxB,EAAO2G,OAAOC,cAAcE,YAAY,cAAc,EAAOh/B,SA8BjEk4B,EAAOiB,GAAG,eAAe,SAACgF,GACxBnhC,QAAQ4N,IAAI,cAAeuzB,OAMxB,SAASlF,GAAkBC,EAAOn+B,GAEvC,IAAI,IAAIwS,EAAI,EAAG2rB,EAAM93B,OAASmM,EAAGA,IAAI,CACnC,IAAI0xB,EAAqB,CACvB9jC,KAAM,WACNoH,MAAO22B,EAAM3rB,GACb5N,KAAMu5B,EAAM3rB,IAEdxS,EAAOo9B,MAAMC,SAASK,OAAOt8B,KAAK8iC,GAIpC,OAAOlkC,E,mnBC5PF,IAAMmkC,GAAe,SAACzgC,GAE3B,IAAM0E,EAAapC,IAAMqC,WAAWC,IAE9B87B,EAAM,gBAKNC,EAAM,cACNC,EAAM,aACNC,EAAM,UACRC,EAA0B,KAC1BC,EAAuB,KACvBC,EAAiBhhC,EAAMihC,QAAQ,GAC/BC,EAAiBlhC,EAAMihC,QAAQ,GAAd,QAA4B,GAC7CE,EAAoB,KA8DlBC,EAAqB,SAAC3H,EAAQ4H,GAA0B,IAEtDC,EAAQ7H,EAAOpH,MAQjBkP,EAAS,GACbA,GAAS,olBAeTvhC,EAAMihC,QAAQ1gC,KAAI,SAACg4B,GAEjBgJ,GAAS,6DAE4BhJ,EAAOhxB,GAFnC,0BAE+DgxB,EAAOhxB,GAFtE,oCAGgBgxB,EAAOhxB,GAHvB,KAG8BgxB,EAAOh1B,MAHrC,sCAQXg+B,GAAS,oGAMTD,EAAME,UAAS,WAEbvkB,SAASwkB,eAAe,iBAAiBpF,iBAAiB,SAAS,WACjE,IAAI9D,EAAStb,SAASI,cAAc,gCAChC9Z,EAAQ0Z,SAASwkB,eAAe,mBACtB,OAAXlJ,GAA6B,OAAVh1B,GAAkC,KAAhBA,EAAMQ,MAC5CirB,MAAM,iDAGN/R,SAASwkB,eAAe,sBAAsBC,UAAUnkB,OAAO,UAC/DjV,GACE,kBACA5D,EAAWwD,UACX,CACEy5B,SAAWpJ,EAAOx0B,MAClBR,MAAQA,EAAMQ,QAEhB7F,MAAK,SAAAC,GACkB,MAApBA,EAASsP,OAEVwP,SAASwkB,eAAe,sBAAsBG,UAAYzjC,EAASoe,QAGnE2kB,EAAiB/iC,EAAS6C,OAC1B6gC,EAAkCpI,GAClC6H,EAAM/E,mBAUhB+E,EAAMxiB,KAAK,CACTvb,MAAO,oBACP81B,QAASkI,EACTzH,WAAY,CAAEgI,MAAO,yBAuDzB,IAAIC,EAAgC,WAGlC,OAAKZ,EAMI,CACL55B,GAAI,qBACJy6B,UAAW,eACXlI,WAAY,CAAEv2B,MAAO,mBACrB0+B,QAAQ,EACR9jB,QAAS,CACP+jB,IAAK,SAAUzI,GACb,GAA8B,MAA3BqH,EAAgC,CAIjC,IA6EIqB,EA7EAC,EAAiB,GACrBjB,EAAkBl6B,aAAa1G,KAAI,SAAC8hC,GAGlC,IAAIC,EAAc,GACdC,EAAkB,GACI,OAAvBF,EAAYzH,aAA0C33B,IAAvBo/B,EAAYzH,SAC5C0H,EAAcD,EAAYzH,OAAOr3B,MACjCg/B,EAAkBF,EAAYzH,OAAO4H,WAGvCJ,GAAiB,qDACiBC,EAAY9J,OAAOhxB,GADpC,sDAEiB86B,EAAY96B,GAF7B,mmBAaa86B,EAAY9J,OAAOh1B,MAbhC,4pBAwBgD8+B,EAAY9+B,MAxB5D,mqBAmCoD8+B,EAAYG,UAnChE,mqBA8CiDF,EA9CjD,urBAyD0DC,EAzD1D,gNAoEjBJ,EADuB,KAAtBC,EACa,GAEH,8EAENA,EAFM,8CAOb,IAAIK,EAAqB,GACrBC,EAAsB,GAC1B1iC,EAAM2iC,YAAYlI,MAAMl6B,KAAI,SAAC++B,GAC3B,IAAIsD,GAAY,EACZC,EAAc,GACf1B,EAAkB2B,UAAU9/B,SAASs8B,KACtCsD,GAAY,EACZC,EAAc,WAEhBJ,GAAqB,+QAI2BnD,EAJ3B,2CAKCA,EALD,6VAU8CsD,EAV9C,cAUqEC,EAVrE,oOAkBrB,IAAIE,GAAa,EACbC,EAAe,GAChB7B,EAAkB8B,WAAWjgC,SAASs8B,KACvCyD,GAAa,EACbC,EAAe,WAEjBN,GAAsB,+QAI0BpD,EAJ1B,2CAKAA,EALA,6VAU6CyD,EAV7C,cAUqEC,EAVrE,uOAmBxB,IAAME,EAAcjmB,SAASC,cAAc,OAC3CgmB,EAAYnG,UAAZ,+FAEiBoF,EAFjB,6UAOiBM,EAPjB,iXAYiBC,EAZjB,yDAeWjJ,EAAO0J,OACAC,SAAS,mBACpB1G,IAAI,gBAAiBwG,GAAaG,QAAQ,wBACjDvC,EAA0BoC,EAE5BpC,EAAwB5gC,MAAM2R,QAAU,SAE1CyxB,KAAM,SAAU7J,GACgB,MAA3BqH,IACDA,EAAwB5gC,MAAM2R,QAAU,OACxCivB,EAA0B,SAtL3B,CACLv5B,GAAI,qBACJy6B,UAAW,WA8TXuB,EAAsB,SAAChL,GAC3B,IAAIiL,EAAWvmB,SAASwkB,eAAe,2BACnCgC,EAAqB,GACzBlL,EAAOmL,QAAQnjC,KAAI,SAACg4B,GAClBkL,GAAuB,8BACFlL,EAAOhxB,GADN,KACagxB,EAAOh1B,MADpB,yBAIxBigC,EAASzG,UAAa0G,EACtBvC,EAAiB3I,EAAOmL,QAAQ,IAQ5B7B,EAAoC,SAACpI,GAGzC,IAAIkK,EAAU1mB,SAASwkB,eAAe,8BACtCkC,EAAQjC,UAAUnkB,OAAO,UACzB,IAAIqmB,EAAgB3mB,SAASwkB,eAAe,kBAC5CmC,EAAclC,UAAUpE,IAAI,UAG5Br1B,GACE,gBAAgBi5B,EAAe35B,GAC/B7C,EAAWwD,WACXhK,MAAK,SAAAC,GAML,GAHAwlC,EAAQjC,UAAUpE,IAAI,UACtBsG,EAAclC,UAAUnkB,OAAO,UAE5Bpf,EAASsP,OAAS,IACnBuhB,MAAM,qGACH,CAEHmS,EAAoBhjC,EAAS6C,OAC7Bic,SAASwkB,eAAe,eAAeG,UAAY,WAAazjC,EAAS6C,OAAOuC,MAAQ,aAAcpF,EAASo6B,OAAOh1B,MAAQ,IAC9Hk2B,EAAOoK,cAAc1lC,EAASygC,YAE9B,IAAIkF,EAAmB7mB,SAASwkB,eAAe,4BAC5CqC,GACDA,EAAiBvmB,SAEnBN,SAAS8mB,uBAAuB,wBAAwB,GAAGzmB,QAG3D,IAAM0mB,EAAevK,EAAO0J,OAC5Ba,EAAaC,aAAa,QAAS,sBACnC,IAAIC,EAAenC,IACJiC,EAAaG,UAAU,QAASD,QAQrD,OAAO,mCACL,qBAAKlC,UAAU,mBAAmBoC,YAAWpkC,EAAMnD,KAAnD,SACE,cAACwnC,GAAD,CACE98B,GAAI,SACJ+8B,aAAa,EACbC,OA3LO,SAAC9K,GAGZ,GAA4B,OAAzBsH,EAA8B,CAGE,UAA9BC,EAAeh4B,YAChBiU,SAASI,cAAc,oCAAoCqkB,UAAUpE,IAAI,UAI3E,IAAMkH,EAAqBvnB,SAASC,cAAc,QAClDsnB,EAAmBj9B,GAAK,kBACxBi9B,EAAmBtkC,MAAML,SAAW,QACpC,IAAI4kC,EAAqB,GACzBzkC,EAAMihC,QAAQ1gC,KAAI,SAACg4B,GACjBkM,GAAuB,8BACJlM,EAAOhxB,GADJ,KACWgxB,EAAOh1B,MADlB,yBAIxBihC,EAAmBzH,UAAnB,iMAMU0H,EANV,4LAeAD,EAAmBnI,iBAAiB,UAAU,SAAC1vB,GAC7C,IAAI+3B,EAAsB1kC,EAAMihC,QAAQn+B,MAAK,SAACy1B,GAAa,OAAOA,EAAOhxB,KAAO8X,OAAO1S,EAAMgT,OAAO5b,UACpGw/B,EAAoBmB,GACpB1D,EAAiB0D,EAGqB,UAAnCA,EAAoB17B,WACrBiU,SAASI,cAAc,oCAAoCqkB,UAAUpE,IAAI,UAEzErgB,SAASI,cAAc,oCAAoCqkB,UAAUnkB,OAAO,aAKhF,IAAMonB,EAAqB1nB,SAASC,cAAc,QAClDynB,EAAmBp9B,GAAK,kBACxBo9B,EAAmBzkC,MAAML,SAAW,QACpC,IAAI4jC,EAAqB,GACzBzC,EAAe0C,QAAQnjC,KAAI,SAACg4B,GAC1BkL,GAAuB,8BACJlL,EAAOhxB,GADJ,KACWgxB,EAAOh1B,MADlB,yBAIxBohC,EAAmB5H,UAAnB,4NAKU0G,EALV,4LAcAkB,EAAmBtI,iBAAiB,UAAU,SAAC1vB,GAC7C,IAAIi4B,EAAsB5D,EAAc,QAAYl+B,MAAK,SAAC9B,GAAa,OAAOA,EAAOuG,KAAO8X,OAAO1S,EAAMgT,OAAO5b,UAChHm9B,EAAiB0D,KAInB,IAAMC,EAA+B5nB,SAASC,cAAc,QAC5D2nB,EAA6Bt9B,GAAK,oBAClCs9B,EAA6B9H,UAA7B,8GAGA8H,EAA6BxI,iBAAiB,SAAS,SAAC1vB,GACtDk1B,EAAkCpI,MAIpC,IAAMqL,EAAiC7nB,SAASC,cAAc,QAC9D4nB,EAA+B/H,UAA/B,4IAKA,IAAMgI,EAAe9nB,SAASC,cAAc,QAC5C6nB,EAAax9B,GAAK,cAClBw9B,EAAa7kC,MAAMkP,YAAc,QACjC21B,EAAahI,UAAY,+KAGzB,IAAIiI,EAAe/nB,SAASI,cAAc,oCACvC2nB,IACDA,EAAaC,QAAQJ,GACrBG,EAAaC,QAAQH,GACrBE,EAAaC,QAAQN,GACrBK,EAAaC,QAAQT,GACrBQ,EAAaE,OAAOH,GACpBhE,EAAuByD,KAkFvBW,eAAgB,CACdC,YAAa,OACbC,eAAe,EACfC,QAAS,CAAC,OAAQ,SAAU,YAAa,kBAE3CC,gBAAgB,EAChBC,aAAa,EACbC,aAAc,EACdC,OAAQ,GAKRC,aAAc,CACZC,OAAQ5lC,EAAM4lC,OACdC,cAAc,EACdC,OAAQ,cACR9nC,QAAS,CAGP,eAAgB0G,EAAWwD,YAI/B69B,QAAS,CAAC7I,IACVyF,YAAW,OACRzF,GADQ,SAEJl9B,EAAM2iC,aAFF,IAGPj+B,WAAW,MACNA,MAITshC,OAAQ,CACNrM,SAAU,CAndX35B,EAAMihC,SAAoC,IAAzBjhC,EAAMihC,QAAQt+B,aA+BfM,IA/ByDjD,EAAMihC,QA8B5Dn+B,MAAK,SAACy1B,GAAa,MAA6B,UAAtBA,EAAOvvB,cAhBhD,CACLzB,GAAI,WACJ0+B,QAAS,CACP,CACE1+B,GAAI,iBACJy6B,UAAW,oBACX7jB,QAASijB,EAETtH,WAAY,CAAEv2B,MAAO,qBArBpB,CACLgE,GAAI,WACJ0+B,QAAS,CACP,CACE1+B,GAAI,iBACJy6B,UAAW,2BAGXlI,WAAY,CAAEv2B,MAAO,qBA4crB,CACEgE,GAAI,UACJ0+B,QAAS,CACP,CACEhE,QAAQ,EACR16B,GAAIm5B,EACJsB,UAAW,iBACX7jB,QAASuiB,EACTwF,QAASxF,EACT5G,WAAY,CAAEv2B,MAAO,oBAEvB,CACEgE,GAAIs5B,EACJmB,UAAW,YACX7jB,QAAS0iB,EACTqF,QAASrF,EACT/G,WAAY,CAAEv2B,MAAO,YAEvB,CACEgE,GAAIq5B,EACJoB,UAAW,mBACX7jB,QAASyiB,EACTsF,QAAStF,EACT9G,WAAY,CAAEv2B,MAAO,eAEvB,CACEgE,GAAI,OACJy6B,UAAW,iBACX7jB,QA3oBG,SAACsb,EAAQ4H,GAE1B,GAAyB,OAAtBF,EAAH,CAMA,IAAIwC,EAAU1mB,SAASI,cAAc,4BACjC8oB,EAAUlpB,SAAS8mB,uBAAuB,eAAe,GAEvDC,EAAevK,EAAO0J,OACxBiD,EAASpC,EAAaqC,UAAU,UAAW,QAC/CD,EAAOtM,WAAWkI,UAAY,wBAE9B2B,EAAQjC,UAAUnkB,OAAO,UAEzB,IAAI+oB,EAAkBrpB,SAASspB,iBAAiB,6BAC5CC,EAAc,GAClBF,EAAgBzJ,SAAQ,SAACnd,GACvB,IAAI+mB,EAAS,CACXl/B,GAAImY,EAAGgnB,QAAQC,UACfpjC,MAAOmc,EAAGrC,cAAc,iBAAiBtZ,MACzCy+B,UAAW9iB,EAAGrC,cAAc,qBAAqBtZ,MACjD62B,OAAQlb,EAAGrC,cAAc,kBAAkBtZ,MAC3Cw+B,gBAAiB7iB,EAAGrC,cAAc,2BAA2BtZ,OAE/DyiC,EAAY9oC,KAAK+oC,MAGnB,IAAIG,EAAW,CACbhI,WAAanF,EAAOoN,gBACpBL,YAAaA,GAGfp+B,GACE,sBAAsB+4B,EAAkB55B,GACxC7C,EAAWwD,UACX0+B,GACA1oC,MAAK,SAAAC,GACLwlC,EAAQjC,UAAUpE,IAAI,UACtB8I,EAAOtM,WAAWkI,UAAY,iBAC9BmE,EAAQzE,UAAUnkB,OAAO,UAEtBpf,EAASsP,OAAS,IACnBuhB,MAAM,iGAENyK,EAAOoK,cAAc1lC,EAASsZ,iBA5ChCuX,MAAM,oCA0oBM8K,WAAY,CAAEv2B,MAAO,SAEvB,CACEgE,GAAI,SACJy6B,UAAW,+BACX7jB,QAAS,WAAO5f,QAAQ4N,IAAI,mCAE5B2tB,WAAY,CAAEv2B,MAAO,aAgB3B,CACEgE,GAAI,QACJ0+B,QAAS,CASP,CACE1+B,GA3rBJ,UA4rBIy6B,UAAW,YACX7jB,QA7rBJ,UA8rBI8jB,QAAQ,EACR6E,UAAW,EACXhN,WAAY,CAAEv2B,MAAO,aASvB,CACEgE,GAAIo5B,EACJqB,UAAW,iBACX7jB,QAASwiB,EACTmG,UAAW,EACXhN,WAAY,CAAEv2B,MAAO,gBAEvBw+B,QAKRgF,UAAWxoC,QAAQ4N,IAAI,cACvBvL,WAAYZ,EAAMY,WArIpB,SAuIE,qBAAKomC,yBAAuB,QACvBC,sBAAoB,QACpBC,qBAAmB,QACnBC,qBAAmB,QACnBC,qBAAmB,QACnBC,oBAAkB,QALvB,iFAgBD,SAAShD,GAAarkC,GAC3B,IAAOuH,EAA+CvH,EAA/CuH,GAAIg9B,EAA2CvkC,EAA3CukC,OAAQwC,EAAmC/mC,EAAnC+mC,UAAWvnC,EAAwBQ,EAAxBR,SAAawI,EAA3C,KAAsDhI,EAAtD,IAEA,EAA4BsC,IAAM8I,WAAlC,WAAOquB,EAAP,KAAe6N,EAAf,KAEAhlC,IAAMoJ,WAAU,WACd,IAAM67B,EAAQ,IAAOhgC,EACrB,IAAKkyB,EAAQ,CACX,IAAMA,EAAS+N,KAASC,KAAT,IACb/tB,UAAW6tB,EACXG,cAAeloC,GACZwI,IAELs/B,EAAU7N,GACY,oBAAX8K,GACTA,EAAO9K,GAUTA,EAAOkO,SAAS,2GAChBlO,EAAOkO,SAAS,wFAChBlO,EAAOkO,SAAS,uDAChBlO,EAAOkO,SAAS,6DAIjB,CAACnoC,EAAUi6B,EAAQlyB,EAAIg9B,EAAQv8B,IAElC1F,IAAMoJ,WAAU,WACd,OAAO,WACL,GAAI+tB,EAAQ,CACe,oBAAdsN,GACTA,IAEF,IAAMtmC,EAAQ+mC,KAASI,QAAQprB,WAAU,SAAC0B,GAAD,OAAOA,EAAE2pB,OAAOnuB,YAAc+f,EAAOoO,OAAOnuB,aAChE,kBAAVjZ,GAAsBA,GAAS,GACxC+mC,KAASI,QAAQx3B,OAAO3P,EAAO,GAEjCg5B,EAAOqO,cAGV,CAACrO,EAAQsN,IAEQ/mC,EAAMY,WAAWmnC,YAAY,QAAQ,SAAC7pB,GACxD3f,QAAQ4N,IAAI,WAMd,OACE,qBAAK5E,GAAIA,EAAT,SACG/H,ICzyBA,IAAMwoC,GAAY,SAAChoC,GAELsC,aAAiBsC,IAApC,IAEA,EAA4CtC,WAAetC,EAAMkJ,SAAjE,WAAO++B,EAAP,KAAuBC,EAAvB,KACA,EAAkD5lC,WAAetC,EAAMmoC,aAAvE,WAAOC,EAAP,KAA0BC,EAA1B,KACA,EAA8B/lC,WAAetC,EAAMstB,UAAnD,WAAOgb,EAAP,KAAgBC,EAAhB,KACA,EAA0DjmC,WAAetC,EAAMwoC,iBAAiB1lC,MAAK,SAAA2M,GAAG,OAAc,EAATA,EAAIlI,KAAiC,EAApBvH,EAAMmoC,gBAApI,WAAOM,EAAP,KAA8BC,EAA9B,KAIApmC,aAAgB,WACd4lC,EAAkBloC,EAAMkJ,SACxBq/B,EAAWvoC,EAAMstB,UACjBob,EAAyB1oC,EAAMwoC,iBAAiB1lC,MAAK,SAAA2M,GAAG,OAAc,EAATA,EAAIlI,KAAiC,EAApBvH,EAAMmoC,gBACpFE,EAAqBroC,EAAMmoC,eAC1B,CAACnoC,IAEJ,IACM8rB,EAAY,WAChBoc,GAAkB,GAClBloC,EAAMkO,WAQR,OAEE,cAACgB,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CACEjG,QAAS++B,EACT9+B,UAAW2iB,EACX5rB,MAAO,CAACL,SAAS,QAASH,SAAU,MAAO8E,WAAY,OAAQ4K,YAAa,QAH9E,UAKE,cAACD,GAAA,EAAOE,MAAR,UAAerP,EAAMuD,QACrB,eAAC4L,GAAA,EAAOG,QAAR,WAEE,cAACvC,EAAA,EAAD,CACEjJ,MAAM,gBACNC,MAAOukC,EACP94B,aAAc,SAAAjO,GAAI,OAAIgnC,EAAWhnC,IAGjCrB,MAAO,CAACmB,MAAM,WACdsnC,eAAgB,UAChB37B,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,oBAAoBE,MAAO,cAEzD,cAAC0L,EAAA,EAAD,CACEjJ,MAAM,0BACNC,MAAO0kC,EAAwBA,EAAsBzoC,EAAM4oC,UAAY,OACvEr5B,UAAU,EACV4R,UAAU,EACV0nB,UAAW,UACX77B,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,OAAOE,MAAO,cAE5C,eAACpB,EAAA,EAAD,CAAMC,MAAO,CACX,SAAY,WACZiF,MAAOxF,IAAc,MAAQ,OAC7B4J,UAAW,QAHb,UAKE,cAACjI,EAAA,EAAD,CAAMpB,MAAOC,GAAOygB,WAApB,iCACA,cAAC,IAAD,CACEtd,cAAe8kC,EACftnB,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SACNtK,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GAEzB0kC,EAAqB3kC,IAPzB,SAWI1D,EAAMwoC,iBAAiBjoC,KAAI,SAACkP,GACxB,OACE,cAAC,IAAO5L,KAAR,CAEEC,MAAO2L,EAAIzP,EAAM4oC,UACjB7kC,MAAO0L,EAAIlI,IAFNkI,EAAIlI,eAazB,eAAC4H,GAAA,EAAOqB,QAAR,WAEE,cAACb,EAAA,EAAD,CACEhP,QAAS,WACPX,EAAMwyB,OAAOxyB,EAAM0D,UAAW0kC,EAAmBE,GACjDxc,KAEF5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YANR,SAQE,cAAClJ,EAAA,EAAD,qBAGF,cAACqO,EAAA,EAAD,CACEhP,QAAS,kBAAMmrB,KACf5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,SAKE,cAAClJ,EAAA,EAAD,gCAYNnB,GAASuB,IAAWC,OAAO,CAC/BgP,OAAQ,CACNnM,WAAY,QAEdiL,IAAK,CACHoC,QAAQ,OACRC,SAAU,GACV/P,cAAc,MACdgQ,aAAa,SACbvL,WAAW,QAEbwI,OAAQ,CACN7J,MAAM,MACNiK,YAAa,MAEf5L,OAAS,CACPc,gBAAgB,UAChBjD,MAAO,UACPmF,WAAY,OACZ2P,cAAe,OACftP,YAAa,OACbxC,aAAc,OACd7C,SAAU,OACV2X,eAAgB,IAChBD,gBAAiB,IACjBsI,iBAAkB,IAClBC,kBAAmB,MACnBC,kBAAmB,WAGrBX,WAAa,CACXvf,SAAU,QAEZof,WAAa,CACXpf,SAAU,OACVmgB,IAAK,MACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,UC/JGqyB,GAAW,SAAC9oC,GAEJsC,aAAiBsC,IAApC,IAEA,EAA4CtC,WAAetC,EAAMkJ,SAAjE,WAAO++B,EAAP,KAAuBC,EAAvB,KACA,EAAkD5lC,WAAetC,EAAMmoC,aAAvE,WAAOC,EAAP,KAA0BC,EAA1B,KACA,EAA8C/lC,WAAe,IAA7D,WAAOymC,EAAP,KAAwBC,EAAxB,KAIA1mC,aAAgB,WACd4lC,EAAkBloC,EAAMkJ,SACxBm/B,EAAqBroC,EAAMmoC,eAE1B,CAACnoC,IAEJ,IACM8rB,EAAY,WAChBoc,GAAkB,GAClBloC,EAAMkO,WAQR,OAEE,cAACgB,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CACEjG,QAAS++B,EACT9+B,UAAW2iB,EACX5rB,MAAO,CAACL,SAAS,QAASH,SAAU,MAAO8E,WAAY,OAAQ4K,YAAa,QAH9E,UAKE,cAACD,GAAA,EAAOE,MAAR,UAAerP,EAAMuD,QACrB,eAAC4L,GAAA,EAAOG,QAAR,WAEE,cAACvC,EAAA,EAAD,CACEjJ,MAAM,oBACNC,MAAOglC,EACPv5B,aAAc,SAAAjO,GAAI,OAAIynC,EAAmBznC,MAE3C,eAACtB,EAAA,EAAD,CAAMC,MAAO,CACX,SAAY,WACZiF,MAAOxF,IAAc,MAAQ,OAC7B4J,UAAW,QAHb,UAKE,cAACjI,EAAA,EAAD,CAAMpB,MAAOC,GAAOygB,WAApB,sCACA,cAAC,IAAD,CACEtd,cAAe8kC,EACftnB,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SACNtK,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GAEzB0kC,EAAqB3kC,IAPzB,SAWI1D,EAAMwoC,iBAAiBjoC,KAAI,SAACkP,GACxB,OACE,cAAC,IAAO5L,KAAR,CAEEC,MAAO2L,EAAIzP,EAAM4oC,UACjB7kC,MAAO0L,EAAIlI,IAFNkI,EAAIlI,eAazB,eAAC4H,GAAA,EAAOqB,QAAR,WAEE,cAACb,EAAA,EAAD,CACEhP,QAAS,WACPX,EAAMwyB,OAAOuW,EAAiBX,EAAmBpoC,EAAMipC,WACvDnd,KAEF5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YANR,SAQE,cAAClJ,EAAA,EAAD,qBAGF,cAACqO,EAAA,EAAD,CACEhP,QAAS,kBAAMmrB,KACf5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,SAKE,cAAClJ,EAAA,EAAD,gCAYNnB,GAASuB,IAAWC,OAAO,CAC/BgP,OAAQ,CACNnM,WAAY,QAEdiL,IAAK,CACHoC,QAAQ,OACRC,SAAU,GACV/P,cAAc,MACdgQ,aAAa,SACbvL,WAAW,QAEbwI,OAAQ,CACN7J,MAAM,MACNiK,YAAa,MAEf5L,OAAS,CACPc,gBAAgB,UAChBjD,MAAO,UACPmF,WAAY,OACZ2P,cAAe,OACftP,YAAa,OACbxC,aAAc,OACd7C,SAAU,OACV2X,eAAgB,IAChBD,gBAAiB,IACjBsI,iBAAkB,IAClBC,kBAAmB,MACnBC,kBAAmB,WAGrBX,WAAa,CACXvf,SAAU,QAEZof,WAAa,CACXpf,SAAU,OACVmgB,IAAK,MACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,UChJGyyB,GAAe,SAAClpC,GAERsC,aAAiBsC,IAApC,IAEA,EAA4CtC,WAAetC,EAAMkJ,SAAjE,WAAO++B,EAAP,KAAuBC,EAAvB,KAEA,EAAsD5lC,WAAe6mC,KAArE,WAAOC,EAAP,KAA4BC,EAA5B,KACA,EAAkC/mC,WAAetC,EAAMspC,UAAUxmC,MAAK,SAAC2M,GAAD,OAAqC,OAA5BA,EAAIzP,EAAMupC,iBAA0BvpC,EAAMspC,UAAUxmC,MAAK,SAAC2M,GAAD,OAAqC,OAA5BA,EAAIzP,EAAMupC,iBAAwBhiC,GAAK,MAAxL,WAAOiiC,EAAP,KAAkBC,EAAlB,KACA,EAA8CnnC,WAAe,IAA7D,WAAOonC,EAAP,KAAwBC,EAAxB,KACA,EAA4CrnC,WAAe,IAA3D,WAAOsnC,EAAP,KAAuBC,EAAvB,KACA,EAAsCvnC,WAAe,IAArD,WAAOwnC,EAAP,KAAoBC,EAApB,KACA,EAAoCznC,YAAe,GAAnD,WAAO0nC,EAAP,KACA,GADA,KACkD1nC,YAAe,IAAjE,WAAO2nC,EAAP,UAEA,SAASd,IACP,OAAGnpC,EAAMkqC,wBACAlqC,EAAMkqC,wBAGZlqC,EAAMwoC,kBAAoBxoC,EAAMwoC,iBAAiB7lC,OAAS,EACpD3C,EAAMwoC,iBAAiB,GAAGjhC,GAG5B,KAITjF,aAAgB,WACd4lC,EAAkBloC,EAAMkJ,SACxBmgC,EAAuBF,KACvBgB,EAAwBnqC,EAAMspC,UAAUxmC,MAAK,SAAC2M,GAAD,OAAqC,OAA5BA,EAAIzP,EAAMupC,iBAA0BvpC,EAAMspC,UAAUxmC,MAAK,SAAC2M,GAAD,OAAqC,OAA5BA,EAAIzP,EAAMupC,iBAAwBhiC,GAAK,QAC9J,CAACvH,IAIJ,IACM8rB,EAAY,WAChBoc,GAAkB,GAClBloC,EAAMkO,WAGFi8B,EAA0B,SAACX,GAC/B,IAAIY,EAAkBpqC,EAAMspC,UAAUxmC,MAAK,SAAAunC,GAAO,OAAIA,EAAQ9iC,KAAOiiC,KAClEY,IACDX,EAAaD,GACbG,EAAmBS,EAAgBE,aACnCT,EAAkBO,EAAgBG,WAAaH,EAAgBG,WAAa,IAC5ER,EAAeK,EAAgBI,QASnC,OAEE,cAACt7B,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CACEjG,QAAS++B,EACT9+B,UAAW2iB,EACX5rB,MAAO,CAACL,SAAS,QAASH,SAAU,MAAO8E,WAAY,OAAQ4K,YAAa,QAH9E,UAKE,cAACD,GAAA,EAAOE,MAAR,UAAerP,EAAMuD,QACrB,eAAC4L,GAAA,EAAOG,QAAR,WAoBE,cAAC,GAAD,CACEm7B,MAAM,EACNjB,UAAWA,EACXF,UAAWtpC,EAAMspC,UACjBoB,SAAUP,EACVZ,aAAcvpC,EAAMupC,eAGtB,cAACx8B,EAAA,EAAD,CACEjJ,MAAM,oBACNC,MAAO2lC,EACPl6B,aAAc,SAAAjO,GAAI,OAAIooC,EAAmBpoC,IACzCgO,UAAU,EACV4R,UAAU,EACVnU,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,OAAOE,MAAO,cAE5C,cAAC0L,EAAA,EAAD,CACEjJ,MAAM,mBACNC,MAAO6lC,EACPp6B,aAAc,SAAAjO,GAAI,OAAIsoC,EAAkBtoC,IACxCgO,UAAU,EACV4R,UAAU,EACVnU,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,OAAOE,MAAO,cAE5C,cAAC0L,EAAA,EAAD,CACEjJ,MAAM,eACNC,MAAO+lC,EACPt6B,aAAc,SAAAjO,GAAI,OAAIwoC,EAAexoC,IACrCgO,UAAU,EACV4R,UAAU,EACVnU,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,OAAOE,MAAO,cAG5C,eAACpB,EAAA,EAAD,CAAMC,MAAO,CACX,SAAY,WACZiF,MAAOxF,IAAc,MAAQ,OAC7B4J,UAAW,QAHb,UAKE,cAACjI,EAAA,EAAD,CAAMpB,MAAOC,GAAOygB,WAApB,iCACA,cAAC,IAAD,CACEtd,cAAe8lC,EACftoB,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SACNtK,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GACzB0lC,EAAuB3lC,IAN3B,SAUI1D,EAAMwoC,iBAAiBjoC,KAAI,SAACkP,GACxB,OACE,cAAC,IAAO5L,KAAR,CAEEC,MAAO2L,EAAIzP,EAAM4oC,UACjB7kC,MAAO0L,EAAIlI,IAFNkI,EAAIlI,eAazB,eAAC4H,GAAA,EAAOqB,QAAR,WAEE,cAACb,EAAA,EAAD,CACEhP,QAAS,WACJspC,GACDjqC,EAAMwyB,OAAO,OAAQ,CAACgX,EAAWE,EAAiBE,EAAgBE,EAAaV,IAG9EY,GACDhqC,EAAMwyB,OAAO,OAAQ,CAACkX,EAAiBE,EAAgBE,EAAaV,IAGtEtd,KAEF5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YAbR,SAeE,cAAClJ,EAAA,EAAD,qBAGF,cAACqO,EAAA,EAAD,CACEhP,QAAS,kBAAMmrB,KACf5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,SAKE,cAAClJ,EAAA,EAAD,gCAYNqpC,GAAqB,SAAC3qC,GAE1B,OAAGA,EAAMyqC,KAEL,eAACxqC,EAAA,EAAD,CAAMC,MAAO,CACX,SAAY,WACZiF,MAAOxF,IAAc,MAAQ,OAC7B4J,UAAW,QAHb,UAKE,cAACjI,EAAA,EAAD,CAAMpB,MAAOC,GAAOygB,WAApB,gCACA,cAAC,IAAD,CACEtd,cAAetD,EAAMwpC,UACrB1oB,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SACNtK,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GAEzB3D,EAAM0qC,SAAShnC,IAPnB,SAWI1D,EAAMspC,UAAU/oC,KAAI,SAACkP,EAAKm7B,GACxB,GAA+B,OAA5Bn7B,EAAIzP,EAAMupC,cACX,OACE,cAAC,IAAO1lC,KAAR,CAEEC,MAAO2L,EAAG,KACV1L,MAAO0L,EAAIlI,IAFN,eAAiBkI,EAAIlI,GAAK,IAAMqjC,WAWhD,MAGHzqC,GAASuB,IAAWC,OAAO,CAC/BgP,OAAQ,CACNnM,WAAY,QAEdiL,IAAK,CACHoC,QAAQ,OACRC,SAAU,GACV/P,cAAc,MACdgQ,aAAa,SACbvL,WAAW,QAEbwI,OAAQ,CACN7J,MAAM,MACNiK,YAAa,MAEf5L,OAAS,CACPc,gBAAgB,UAChBjD,MAAO,UACPmF,WAAY,OACZ2P,cAAe,OACftP,YAAa,OACbxC,aAAc,OACd7C,SAAU,OACV2X,eAAgB,IAChBD,gBAAiB,IACjBsI,iBAAkB,IAClBC,kBAAmB,MACnBC,kBAAmB,WAGrBX,WAAa,CACXvf,SAAU,QAEZof,WAAa,CACXpf,SAAU,OACVmgB,IAAK,MACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,UCxQGo0B,GAAgB,SAAC7qC,GAETsC,aAAiBsC,IAApC,IAEA,EAA4CtC,WAAetC,EAAMkJ,SAAjE,WAAO++B,EAAP,KAAuBC,EAAvB,KAEA,EAAgD5lC,WAAetC,EAAM+P,KAAO/P,EAAM+P,KAAK/P,EAAMupC,cAAgB,IAA7G,WAAOuB,EAAP,KAAyBC,EAAzB,KACA,EAA8CzoC,WAAetC,EAAM+P,KAAO/P,EAAM+P,KAAN,YAA4B,IAAtG,WAAO25B,EAAP,KAAwBC,EAAxB,KACA,EAA4CrnC,WAAetC,EAAM+P,KAAO/P,EAAM+P,KAAN,WAA2B,IAAnG,WAAO65B,EAAP,KAAuBC,EAAvB,KACA,EAAsCvnC,WAAetC,EAAM+P,KAAO/P,EAAM+P,KAAN,KAAqB,IAAvF,WAAO+5B,EAAP,KAAoBC,EAApB,KAGAznC,aAAgB,WACd4lC,EAAkBloC,EAAMkJ,SACxB6hC,EAAoB/qC,EAAM+P,KAAO/P,EAAM+P,KAAK/P,EAAMupC,cAAgB,IAClEI,EAAmB3pC,EAAM+P,KAAO/P,EAAM+P,KAAN,YAA4B,IAC5D85B,EAAkB7pC,EAAM+P,KAAO/P,EAAM+P,KAAN,WAA2B,IAC1Dg6B,EAAe/pC,EAAM+P,KAAO/P,EAAM+P,KAAN,KAAqB,MAChD,CAAC/P,IAEJ,IACM8rB,EAAY,WAChBoc,GAAkB,GAClBloC,EAAMkO,WAQR,OAEE,cAACgB,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CACEjG,QAAS++B,EACT9+B,UAAW2iB,EACX5rB,MAAO,CAACL,SAAS,QAASH,SAAU,MAAO8E,WAAY,OAAQ4K,YAAa,QAH9E,UAKE,cAACD,GAAA,EAAOE,MAAR,UAAerP,EAAMuD,QACrB,eAAC4L,GAAA,EAAOG,QAAR,WAEE,cAACvC,EAAA,EAAD,CACEjJ,MAAM,oBACNC,MAAO2lC,EACPl6B,aAAc,SAAAjO,GAAI,OAAIooC,EAAmBpoC,IACzCgO,UAAU,EACV4R,UAAU,EACVnU,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,OAAOE,MAAO,cAE5C,cAAC0L,EAAA,EAAD,CACEjJ,MAAM,mBACNC,MAAO6lC,EACPp6B,aAAc,SAAAjO,GAAI,OAAIsoC,EAAkBtoC,IACxCgO,UAAU,EACV4R,UAAU,EACVnU,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,OAAOE,MAAO,cAE5C,cAAC0L,EAAA,EAAD,CACEjJ,MAAM,eACNC,MAAO+lC,EACPt6B,aAAc,SAAAjO,GAAI,OAAIwoC,EAAexoC,IACrCgO,UAAU,EACV4R,UAAU,EACVnU,MAAO,cAACD,EAAA,EAAUE,KAAX,CAAgB9L,KAAK,OAAOE,MAAO,cAG5C,eAACpB,EAAA,EAAD,CAAMC,MAAO,CACX,SAAY,WACZiF,MAAOxF,IAAc,MAAQ,OAC7B4J,UAAW,QAHb,UAKE,cAACjI,EAAA,EAAD,CAAMpB,MAAOC,GAAOygB,WAApB,iCACA,cAAC,IAAD,CACEtd,cAAewnC,EACfhqB,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SACNtK,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GACzBonC,EAAoBrnC,IANxB,SAUI1D,EAAMwoC,iBAAiBjoC,KAAI,SAACkP,GACxB,OACE,cAAC,IAAO5L,KAAR,CAEEC,MAAO2L,EAAIzP,EAAM4oC,UACjB7kC,MAAO0L,EAAIlI,IAFNkI,EAAIlI,eAazB,eAAC4H,GAAA,EAAOqB,QAAR,WAEE,cAACb,EAAA,EAAD,CACEhP,QAAS,WACPX,EAAMwyB,OAAOxyB,EAAM+P,KAAKxI,GAAImiC,EAAiBE,EAAgBE,EAAagB,GAC1Ehf,KAEF5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YANR,SAQE,cAAClJ,EAAA,EAAD,qBAGF,cAACqO,EAAA,EAAD,CACEhP,QAAS,kBAAMmrB,KACf5rB,MAAOC,GAAOwQ,OACdnG,KAAM,YAHR,SAKE,cAAClJ,EAAA,EAAD,gCAYNnB,GAASuB,IAAWC,OAAO,CAC/BgP,OAAQ,CACNnM,WAAY,QAEdiL,IAAK,CACHoC,QAAQ,OACRC,SAAU,GACV/P,cAAc,MACdgQ,aAAa,SACbvL,WAAW,QAEbwI,OAAQ,CACN7J,MAAM,MACNiK,YAAa,MAEf5L,OAAS,CACPc,gBAAgB,UAChBjD,MAAO,UACPmF,WAAY,OACZ2P,cAAe,OACftP,YAAa,OACbxC,aAAc,OACd7C,SAAU,OACV2X,eAAgB,IAChBD,gBAAiB,IACjBsI,iBAAkB,IAClBC,kBAAmB,MACnBC,kBAAmB,WAGrBX,WAAa,CACXvf,SAAU,QAEZof,WAAa,CACXpf,SAAU,OACVmgB,IAAK,MACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,UCrKK,SAASu0B,GAAiBhrC,GAEvC,IAAM0E,EAAapC,aAAiBsC,IAEpC,EAA4CtC,WAAetC,EAAMirC,gBAAjE,WAAOA,EAAP,KAAuBC,EAAvB,KACA,EAAkC5oC,WAAetC,EAAMspC,WAAvD,WAAOA,EAAP,KAAkB6B,EAAlB,KAKMvC,EAAW,eAIXwC,EAAgB,CACpB,CACEtnC,MAAO,eACPkL,OAAQ,WAEV,CACElL,MAAO,eACPkL,OAAQ,SAIZ,QAAsB/L,IAAnBgoC,EACD,OAAQ,cAAC3pC,EAAA,EAAD,yBAGV,SAAS+pC,EAAoBC,GAC3B,OAAOL,EAAenoC,MAAK,SAAA2M,GAAG,OAAwB,EAAnBA,EAAG,WAAuB67B,KAG/D,MAAkChpC,WAAe+oC,EAAoB,GAAKA,EAAoB,GAAG9jC,GAAK,MAAtG,WAAOgkC,EAAP,KAAkBC,EAAlB,KACA,EAAkClpC,WAAe+oC,EAAiC,EAAZE,GAAkBF,EAAiC,EAAZE,GAAgBhkC,GAAK,MAAlI,WAAOkkC,EAAP,KAAkBC,EAAlB,KACA,EAAgCppC,WAAe+oC,EAAiC,EAAZE,GAAkBF,EAAiC,EAAZE,GAAgB3C,GAAY,MAAvI,WAAO+C,EAAP,KAAiBC,EAAjB,KACA,EAAkCtpC,WAAe+oC,EAAiC,EAAZI,GAAkBJ,EAAiC,EAAZI,GAAgBlkC,GAAK,MAAlI,WAAOskC,EAAP,KAAkBC,EAAlB,KACA,EAAgCxpC,WAAe+oC,EAAiC,EAAZI,GAAkBJ,EAAiC,EAAZI,GAAgB7C,GAAY,MAAvI,WAAOmD,EAAP,KAAiBC,EAAjB,KACA,EAAwC1pC,WAAe,MAAvD,WAAO2pC,EAAP,KAAqBC,EAArB,KAEA5pC,aAAgB,WACdopC,EAAaL,EAAiC,EAAZE,GAAkBF,EAAiC,EAAZE,GAAgBhkC,GAAK,MAC9FqkC,EAAYP,EAAiC,EAAZE,GAAkBF,EAAiC,EAAZE,GAAgB3C,GAAY,MACpGkD,EAAaT,EAAiC,EAAZI,GAAkBJ,EAAiC,EAAZI,GAAgBlkC,GAAK,MAC9FykC,EAAYX,EAAiC,EAAZI,GAAkBJ,EAAiC,EAAZI,GAAgB7C,GAAY,MACpGsD,EAAgB,QACf,CAACX,IAEJjpC,aAAgB,WACdwpC,EAAaT,EAAiC,EAAZI,GAAkBJ,EAAiC,EAAZI,GAAgBlkC,GAAK,MAC9FykC,EAAYX,EAAiC,EAAZI,GAAkBJ,EAAiC,EAAZI,GAAgB7C,GAAY,MACpGsD,EAAgB,QACf,CAACT,IAEJnpC,aAAgB,WACd4pC,EAAgB,QACf,CAACL,IAGJ,MAAwDvpC,YAAe,GAAvE,WAAO6pC,EAAP,KAA6BC,EAA7B,KACA,EAAsD9pC,YAAe,GAArE,WAAO+pC,GAAP,KAA4BC,GAA5B,KACA,GAAwDhqC,YAAe,GAAvE,aAAOiqC,GAAP,MAA6BC,GAA7B,MACA,GAAsDlqC,YAAe,GAArE,aAAOmqC,GAAP,MAA4BC,GAA5B,MACA,GAAsDpqC,YAAe,GAArE,aAAOqqC,GAAP,MAA4BC,GAA5B,MACA,GAAwDtqC,YAAe,GAAvE,aAAOuqC,GAAP,MAA6BC,GAA7B,MAEMC,GAAiB,SAACC,EAAYC,EAAa3E,GAC/C,IAAI4E,EAAoBjC,EAAejnC,QAAO,kBAAM,KAChDmpC,EAAkBD,EAAkB1wB,WAAU,SAAC/M,GAAD,OAASA,EAAIlI,KAAOylC,KACtEE,EAAkBC,GAAlB,SAAkDF,EAClDC,EAAkBC,GAAiBvE,GAAYN,EAE/C4C,EAAkB,KAAIgC,IAGtB,IAAIn9B,EAAOm9B,EAAkBC,GAC7Bp9B,EAAKq9B,UAAY,YACjBhlC,GACE,mBAAmBpI,EAAMnD,KACzB6H,EAAWwD,UACX6H,GACA7R,MAAK,SAAAC,QAkBHkvC,GAAkB,SAACtE,EAAiBkE,EAAahE,GAErD,IAAIl5B,EAAO,CACT,aAAiBg5B,EACjB,SAAakE,EACb,UAAc,aAIC,SAAdhE,IACDqE,IAAe,GACfv9B,EAAI,QAAc,QAClBA,EAAI,iBAAuB,KAGZ,SAAdk5B,IACDsE,IAAe,GACfx9B,EAAI,QAAc,QAClBA,EAAI,iBAAuB,KAGH,cAAvB/P,EAAMupC,eACPx5B,EAAI,KAAW,aAES,WAAvB/P,EAAMupC,eACPx5B,EAAI,KAAW,OAKjBzH,GACE,mBAAmBtI,EAAMnD,KACzB6H,EAAWwD,UACX6H,GACA7R,MAAK,SAAAC,GAEL,GAAuB,MAApBA,EAASsP,OACVuhB,MAAM,WACH,CACH,IAAIke,EAAoBjC,EAAejnC,QAAO,kBAAM,KACpDkpC,EAAkBxvC,KAAK,CACrB,aAAiBqrC,EACjB,SAAakE,EACb,GAAO9uC,EAASpC,MAAM6wB,WAExBse,EAAkBgC,GAEpBI,IAAe,GACfC,IAAe,OAgBbC,GAAiB,SAACjmC,GACtB,IAAI2lC,EAAoBjC,EAAejnC,QAAO,SAACyL,GAAD,OAASA,EAAIlI,KAAOA,KAClE2jC,EAAkB,KAAIgC,IAEtB,IAAIn9B,EAAO,CAAExI,GAAIA,EAAI6lC,UAAW,aAChC7kC,GACE,mBAAmBvI,EAAMnD,KACzB6H,EAAWwD,UACX6H,GACA7R,MAAK,SAAAC,GAEFA,EAASsP,OAAS,KACnBuhB,MAAM,+EAMNye,GAAiB,SAACT,EAAYtD,EAAiBE,EAAgBE,EAAaV,GAChF,IAAIsE,EAAepE,EAAUtlC,QAAO,kBAAM,KACtCmpC,EAAkBO,EAAalxB,WAAU,SAAC/M,GAAD,OAASA,EAAIlI,KAAOylC,KAE7DW,EAAcjE,EAAkB,IAAME,EACtCA,GAAqC,KAAnBA,IACpB+D,EAAcjE,GAGhBgE,EAAaP,GAAoB,CAC/B,KAASrD,EAET,YAAgBJ,EAChB,WAAeE,EACf,QAAY+D,EACZ,GAAOX,GAGTU,EAAaP,GAAiBntC,EAAMupC,cAAgBH,EAEpD+B,EAAa,KAAIuC,IAGjB,IAAI39B,EAAO29B,EAAaP,GACxBp9B,EAAKq9B,UAAY,OACjBhlC,GACE,mBAAmBpI,EAAMnD,KACzB6H,EAAWwD,UACX6H,GACA7R,MAAK,SAAAC,QAKHyvC,GAAoB,SAAClE,EAAiBE,EAAgBE,EAAaV,GAIvE,IAAIsE,EAAepE,EAAUtlC,QAAO,kBAAM,KAEtC2pC,EAAcjE,EAAkB,IAAME,EACtCA,GAAqC,KAAnBA,IACpB+D,EAAcjE,GAGhB,IAAIjyB,EAAU,CACZ,KAASqyB,EAET,YAAgBJ,EAChB,WAAeE,EACf,QAAY+D,EACZ,GAAOD,EAAa/qC,OAAS,KAE/B8U,EAAQzX,EAAMupC,cAAgBH,EAE9BsE,EAAahwC,KAAK+Z,GAElB0zB,EAAauC,IAkCf,GAAsCprC,YAAe,GAArD,aAAOurC,GAAP,MAAoBP,GAApB,MACA,GAAsChrC,YAAe,GAArD,aAAOwrC,GAAP,MAAoBP,GAApB,MA2BA,OACE,eAACttC,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAO,QAAUiC,QAAS,CAAC,KAAQpH,EAAMnD,MAAxD,UACE,cAACyE,EAAA,EAAD,CAAMpB,MAAO,CAACsB,SAAS,OAAQ2U,cAAc,QAA7C,SAAuDnW,EAAMuD,QAE7D,eAACtD,EAAA,EAAD,CAAMC,MAAO,CACX,SAAY,WACZiF,MAAOxF,IAAc,MAAQ,QAF/B,UAIE,cAAC2B,EAAA,EAAD,CAAMpB,MAAOC,GAAOygB,WAApB,qBACA,cAAC,IAAD,CACEtd,cAAeioC,EACfzqB,UAAW3gB,GAAO4gB,WAClBvW,KAAM,SACNwW,QAAS,WAAOziB,QAAQ4N,IAAI,YAC5BjM,MAAOC,GAAOqD,OACdC,cAAe,SAACC,EAAWC,GACzB6nC,EAAa9nC,IAPjB,SAWIunC,EAAe1qC,KAAI,SAACkP,GAClB,GAAuB,EAAnBA,EAAG,WAAuB,EAC5B,OACE,cAAC,IAAO5L,KAAR,CAEEC,MAAO2L,EAAIm5B,GACX7kC,MAAO0L,EAAIlI,IAFN,OAASkI,EAAIlI,YAahC,eAACtH,EAAA,EAAD,CAAMC,MAAO,CACXiF,MAAO,OACPjB,eAAgB,gBAChBnC,cAAepC,IAAc,MAAQ,SACrC6G,WAAY,QAJd,UAQE,eAACvG,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAOxF,IAAc,MAAQ,QAA5C,UAEE,eAACM,EAAA,EAAD,CAAMC,MAAOC,GAAO4tC,iBAApB,UACE,cAACzsC,EAAA,EAAD,CAAMpB,MAAOC,GAAO6tC,UAApB,qBACA,eAAC/tC,EAAA,EAAD,CAAMC,MAAOC,GAAO8tC,aAApB,UAEE,cAACvtC,EAAA,EAAD,CACEC,QAAS,WAAO2rC,IAAuB,IACvCpsC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,cAAcE,KAAM,GAAIC,MAAM,cAG9C,cAACX,EAAA,EAAD,CACEC,QAAS,WAAOyrC,GAAwB,IACxClsC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,OAAOE,KAAM,GAAIC,MAAM,cAGvC,cAACX,EAAA,EAAD,CACEC,QAAS,WApNrB6sC,GAoN+C/B,GAnN/CC,EAAa,OAoNDxrC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,UAAUE,KAAM,GAAIC,MAAM,oBAO9C,cAAC8F,EAAA,EAAD,CAAYjH,MAAOC,GAAOoZ,WAA1B,SACE,eAAC7B,GAAA,EAAD,WAGIuzB,EAAe1qC,KAAI,SAACkP,GAClB,GAAuB,EAAnBA,EAAG,WAAoC,EAAZ87B,EAC7B,OACE,cAAC7zB,GAAA,EAAUG,IAAX,CAEElX,QAAS,SAACgM,GAAW++B,EAAaj8B,EAAIlI,IAAKqkC,EAAYn8B,EAAIm5B,KAC3D1oC,MAAkB,EAATuP,EAAIlI,KAAyB,EAAZkkC,EAAiB,CAACnnC,gBAAiBI,EAAWK,OAAOiB,QAAU,GAH3F,SAKE,cAAC0R,GAAA,EAAUK,KAAX,UAAiBtI,EAAIm5B,MAJhB,OAASn5B,EAAIlI,OA7GjB,WACrB,GAAGsmC,GACD,OACE,cAACn2B,GAAA,EAAUG,IAAX,UACE,cAACH,GAAA,EAAUK,KAAX,UACE,cAAC9B,EAAA,EAAD,CAAmBC,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,cAmH1DkpC,QAIL,cAAC,GAAD,CACE3qC,MAAO,iBACPqlC,SAAUA,EACV1/B,QAASijC,EACTj+B,QAAU,WAAQk+B,GAAwB,IAC1C5Z,OA7TW,SAACwa,EAAYC,EAAa3E,GAC7CyE,GAAeC,EAAYC,EAAa3E,GACxCkD,EAAayB,GACbrB,EAAYtD,IA2TJH,YAAaoD,EACb7nC,UAAW+nC,EACXne,SAAUqe,EACVnD,iBAAkByC,EAAejnC,QAAO,SAAAyL,GAAG,OAAwB,EAAnBA,EAAG,WAAuB,OAE5E,cAAC,GAAD,CACElM,MAAO,uBACPqlC,SAAUA,EACV1/B,QAASmjC,GACTn+B,QAAU,WAAQo+B,IAAuB,IACzC9Z,OAAQ6a,GACRpE,UAAW,OACXd,YAAaoD,EACb/C,iBAAkByC,EAAejnC,QAAO,SAAAyL,GAAG,OAAwB,EAAnBA,EAAG,WAAuB,UAK9E,eAACxP,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAOxF,IAAc,MAAQ,QAA5C,UAEE,eAACM,EAAA,EAAD,CAAMC,MAAOC,GAAO4tC,iBAApB,UACE,cAACzsC,EAAA,EAAD,CAAMpB,MAAOC,GAAO6tC,UAApB,qBACA,eAAC/tC,EAAA,EAAD,CAAMC,MAAOC,GAAO8tC,aAApB,UAEE,cAACvtC,EAAA,EAAD,CACEC,QAAS,WAAO+rC,IAAuB,IACvCxsC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,cAAcE,KAAM,GAAIC,MAAM,cAG9C,cAACX,EAAA,EAAD,CACEC,QAAS,WAAO6rC,IAAwB,IACxCtsC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,OAAOE,KAAM,GAAIC,MAAM,cAGvC,cAACX,EAAA,EAAD,CACEC,QAAS,WA7RrB6sC,GA6R+C3B,GA5R/CC,EAAa,OA6RD5rC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,UAAUE,KAAM,GAAIC,MAAM,oBAO9C,cAAC8F,EAAA,EAAD,CAAYjH,MAAOC,GAAOoZ,WAA1B,SACE,eAAC7B,GAAA,EAAD,WAGIuzB,EAAe1qC,KAAI,SAACkP,GAClB,GAAiB,OAAdg8B,EAGH,OAAuB,EAAnBh8B,EAAG,WAAoC,EAAZg8B,EAE3B,cAAC/zB,GAAA,EAAUG,IAAX,CAEElX,QAAS,SAACgM,GAAWm/B,EAAar8B,EAAIlI,IAAKykC,EAAYv8B,EAAIm5B,KAC3D1oC,MAAkB,EAATuP,EAAIlI,KAAyB,EAAZskC,EAAiB,CAACvnC,gBAAiBI,EAAWK,OAAOiB,QAAU,GAH3F,SAKE,cAAC0R,GAAA,EAAUK,KAAX,UAAiBtI,EAAIm5B,MAJhB,OAASn5B,EAAIlI,SAHxB,KA/KO,WACrB,GAAGumC,GACD,OACE,cAACp2B,GAAA,EAAUG,IAAX,UACE,cAACH,GAAA,EAAUK,KAAX,UACE,cAAC9B,EAAA,EAAD,CAAmBC,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,cAwL1DmpC,QAIL,cAAC,GAAD,CACE5qC,MAAO,iBACPqlC,SAAUA,EACV1/B,QAASqjC,GACTr+B,QAAU,WAAQs+B,IAAwB,IAC1Cha,OAxYW,SAACwa,EAAYC,EAAa3E,GAC7CyE,GAAeC,EAAYC,EAAa3E,GACxCoD,EAAauB,GACbjB,EAAY1D,IAsYJH,YAAasD,EACb/nC,UAAWmoC,EACXve,SAAUye,EAEVvD,iBAAkByC,EAAejnC,QAAO,SAAAyL,GACtC,MAAmC,MAA5BA,EAAG,sBAGd,cAAC,GAAD,CACElM,MAAO,uBACPqlC,SAAUA,EACV1/B,QAASujC,GACTv+B,QAAU,WAAQw+B,IAAuB,IACzCla,OAAQ6a,GACRpE,UAAW,OACXd,YAAasD,EAIbjD,iBAAkByC,EAAejnC,QAAO,SAAAyL,GACtC,MAAmC,MAA5BA,EAAG,4BASlB,eAACxP,EAAA,EAAD,CAAMC,MAAO,CACXiF,MAAO,OACPqB,WAAY,QAFd,UAKE,cAACvG,EAAA,EAAD,CAAMC,MAAO,CAAEiF,MAAO,QAAtB,SAEE,eAACuS,GAAA,EAAD,WACE,eAACA,GAAA,EAAUC,OAAX,CAAkBzX,MAAOC,GAAOiuC,mBAAhC,UACGhD,EAAc7qC,KAAK,SAAC0Y,EAAMxY,GACzB,OAAO,cAACiX,GAAA,EAAUrI,MAAX,UAA0C4J,EAAKnV,OAAzB,UAAYrD,MAE3C,cAACiX,GAAA,EAAUrI,MAAX,kCAGF,eAACpP,EAAA,EAAD,CAAMC,MAAOC,GAAOkuC,kBAApB,UACE,cAAC3tC,EAAA,EAAD,CACEC,QAAS,WAAOisC,IAAuB,IACvC1sC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,cAAcE,KAAM,GAAIC,MAAM,cAE9C,cAACX,EAAA,EAAD,CACEC,QAAS,WAAOmsC,IAAwB,IACxC5sC,MAAOC,GAAOwQ,OACdwQ,UAAW8qB,EAHb,SAKE,cAAChrC,EAAA,EAAD,CAASC,KAAK,OAAOE,KAAM,GAAIC,MAAM,cAGvC,cAACX,EAAA,EAAD,CACEC,QAAS,YArSE,SAAC4G,GACxB,IAAImmC,EAAepE,EAAUtlC,QAAO,SAACyL,GAAD,OAASA,EAAIlI,KAAOA,KACxD4jC,EAAa,KAAIuC,IACjBxB,EAAgB,MAEhB,IAAIn8B,EAAO,CAAExI,GAAIA,EAAI6lC,UAAW,QAChC7kC,GACE,mBAAmBvI,EAAMnD,KACzB6H,EAAWwD,UACX6H,GACA7R,MAAK,SAAAC,GAEFA,EAASsP,OAAS,KACnBuhB,MAAM,8EAwRkBsf,CAAiBrC,IACjC/rC,MAAOC,GAAOwQ,OAFhB,SAIE,cAAC1P,EAAA,EAAD,CAASC,KAAK,UAAUE,KAAM,GAAIC,MAAM,iBAI5C,cAAC8F,EAAA,EAAD,CAAYjH,MAAOC,GAAOouC,kBAA1B,SAEEjF,EAAU/oC,KAAI,SAACkP,EAAKm7B,GAClB,GAAiB,OAAdiB,GAAiD,EAA1Bp8B,EAAIzP,EAAMupC,gBAAoC,EAAZsC,EAC1D,OACE,eAACn0B,GAAA,EAAUG,IAAX,CAEElX,QAAS,SAACgM,GAAWu/B,EAAgBz8B,EAAIlI,KACzCrH,MAAkB,EAATuP,EAAIlI,KAA4B,EAAf0kC,EAAoB,CAAC3nC,gBAAiBI,EAAWK,OAAOiB,QAAU,GAH9F,UAKGolC,EAAc7qC,KAAK,SAAC0Y,EAAMu1B,GACzB,OAAO,cAAC92B,GAAA,EAAUK,KAAX,UAAmEtI,EAAIwJ,EAAKjK,SAAvD,SAAW47B,EAAW,UAAY4D,MAEhE,cAAC92B,GAAA,EAAUK,KAAX,UAAiBg0B,MAPZ,YAAct8B,EAAIlI,GAAK,IAAMqjC,aAkBhD,cAAC,GAAD,CACErnC,MAAO,eACPqlC,SAAUA,EACV1/B,QAAS2jC,GACTtD,aAAcvpC,EAAMupC,aACpBx5B,KAAMu5B,EAAUxmC,MAAK,SAAA2M,GAAG,OAAc,EAATA,EAAIlI,KAA4B,EAAf0kC,KAC9C/9B,QAAU,WAAQ4+B,IAAwB,IAC1Cta,OAASib,GAETjF,iBAAkByC,EAAejnC,QAAO,SAAAyL,GACtC,MAAmC,MAA5BA,EAAG,sBAId,cAAC,GAAD,CACElM,MAAO,iBACPqlC,SAAUA,EACV1/B,QAASyjC,GACTpD,aAAcvpC,EAAMupC,aACpBr7B,QAAU,WAAQ0+B,IAAuB,IACzCpa,OApWW,SAACic,EAAY1+B,GAEZ,SAAf0+B,GACDb,GAAiB,WAAjB,OAAqB79B,IAGL,SAAf0+B,GACDhB,GAAc,WAAd,OAAkB19B,KA8Vdm6B,wBAAyB2B,EAEzBrD,iBAAkByC,EAAejnC,QAAO,SAAAyL,GACtC,MAAmC,MAA5BA,EAAG,oBAEZ65B,UAAWA,UAWrB,IAAMnpC,GAASuB,IAAWC,OAAO,CAC/B4X,WAAY,CACVtU,OAAQ,QACRV,YAAa,qBACb4lB,YAAa,EACbukB,YAAa,QACbv1B,eAAgB,GAElBo1B,kBAAmB,CACjBhoC,UAAW,SAEb8a,UAAW,CACTjS,YAAa,OAEf3I,UAAW,CACTkS,SAAU,YAEZ2I,kBAAoB,CAClB3I,SAAU,WACVxT,MAAO,OACPF,OAAQ,OACRsc,OAAQ,IAEV5a,SAAU,CACRrC,gBAAiB,UACjBqU,SAAU,WACV4I,OAAQ,GAEV/d,OAAS,CACPc,gBAAgB,UAChBjD,MAAO,UACPmF,WAAY,OACZ2P,cAAe,OACftP,YAAa,OACbxC,aAAc,OACd7C,SAAU,OACV2X,eAAgB,IAChBD,gBAAiB,IACjBsI,iBAAkB,IAClBC,kBAAmB,MACnBC,kBAAmB,WAGrBX,WAAa,CACXvf,SAAU,QAEZof,WAAa,CACXpf,SAAU,OACVmgB,IAAK,MACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,QAERoK,SAAW,CACTrf,SAAU,OACVmgB,IAAK,OACLhJ,SAAU,WACVtX,MAAO,UACPoV,KAAM,QAERu3B,UAAY,CACV1pC,gBAAiB,qBACjBjD,MAAO,UACPQ,QAAS,QAEXusC,mBAAqB,CACnB9pC,gBAAiB,qBACjBjD,MAAO,WAET0sC,iBAAmB,CACjBzpC,gBAAiB,qBACjBjD,MAAO,UACPU,cAAe,MACfmC,eAAgB,iBAElB+pC,aAAe,CACblsC,cAAe,MACfyE,WAAY,OAEd6nC,kBAAoB,CAClBtsC,cAAe,MACfsB,UAAW,WACXsV,SAAU,WACVgJ,IAAK,OACL3U,MAAO,QAET2D,OAAQ,CACNnM,WAAY,SCpsBD,SAASmqC,GAAc3uC,GA2DpC,OACE,eAACsB,EAAA,EAAD,CAAM8F,QAAS,CAAC,KAAQpH,EAAMnD,MAAOqD,MAAOF,EAAME,MAAlD,UACGF,EAAMuB,KAELvB,EAAM4uC,qBAAuB5uC,EAAM4uC,qBAAqBruC,KAAI,SAACsuC,EAAe//B,EAAGkf,GAC7E,OA9DR,SAAS8gB,EAAgBD,EAAe//B,EAAGigC,GAKzC,GAJAxwC,QAAQ4N,IAAI2C,GACZvQ,QAAQ4N,IAAI4iC,GACZxwC,QAAQ4N,IAAI0iC,GAEc,aAAvBA,EAAcnyC,KACf,OACE,cAAC4E,EAAA,EAAD,UAAeutC,EAAcxV,SAAlBvqB,GAET,GAA6B,OAA1B+/B,EAAcjV,QACrB,OACE,cAACt4B,EAAA,EAAD,UAAyB,KAAdytC,EAAUjgC,GAEnB,GAA0B,SAAvB+/B,EAAcnyC,MACgB,MAA1BmyC,EAAcjV,SACY,MAA1BiV,EAAcjV,SACY,MAA1BiV,EAAcjV,SACY,WAA1BiV,EAAcjV,SACY,SAA1BiV,EAAcjV,QAC1B,CAEC,IAAIoV,EAAY,GAiBhB,GAhB6B,MAA1BH,EAAcjV,UACfoV,EAAY,CAAC5V,WAAW,SAEG,MAA1ByV,EAAcjV,UACfoV,EAAY,CAACvlC,UAAU,WAEI,MAA1BolC,EAAcjV,UACfoV,EAAY,CAACC,mBAAmB,cAEL,WAA1BJ,EAAcjV,UACfoV,EAAY,CAACC,mBAAmB,iBAEL,SAA1BJ,EAAcjV,UACfoV,EAAY,CAAC3tC,MAAMwtC,EAAc/U,WAAWz4B,QAGP,IAApCwtC,EAAcjQ,WAAWj8B,QAAqD,aAArCksC,EAAcjQ,WAAW,GAAGliC,KACtE,OACE,cAAC4E,EAAA,EAAD,CAAMpB,MAAO8uC,EAAb,SAA2CH,EAAcjQ,WAAW,GAAGvF,SAA1C0V,EAAUjgC,GAGzCvQ,QAAQ4N,IAAI,gBAAiB4iC,EAASF,EAAcjQ,YACpD,IAAIvF,EAAUwV,EAAcjQ,WAAWr+B,KAAI,SAAC2uC,EAAcpgC,EAAGkf,GAC3D,OAAO8gB,EAAgBI,EAAcpgC,EAAG,MAAQigC,MAGlD,OADAxwC,QAAQ4N,IAAIktB,GAEV,cAAC/3B,EAAA,EAAD,CAAMpB,MAAO8uC,EAAb,SAA2C3V,GAAd0V,EAAUjgC,IAahCggC,CAAgBD,EAAe//B,EAAG,UACtC,Q,4kBC7DE,SAASqgC,GAAenvC,GAEnC,IAAM0E,EAAapC,aAAiBsC,IAEpC,EAA0CtC,WAAe,IAAzD,WAAO8sC,EAAP,KAAsBC,EAAtB,KACA,EAAkC/sC,YAAe,GAAjD,WAAOgtC,EAAP,KAAkBC,EAAlB,KAIMC,EAAgB,SAACC,EAAgBC,EAAWz/B,GAG9C,IAAI0/B,EAAuBP,EAEvBO,EAAqBF,EAAeG,aACpCD,EAAqBF,EAAeG,WAApC,MAAqDH,IAGzDE,EAAqBF,EAAeG,WAAWF,GAAaz/B,EAE5Do/B,EAAiBM,GACjBpxC,QAAQ4N,IAAIijC,GAGZ,IAAIS,EAAiB7vC,EAAM8vC,QAC3BD,EAAe/sC,MAAK,SAACsxB,EAAQ3zB,GACzB,OAAI2zB,EAAOwb,YAAcH,EAAeG,YACpCC,EAAepvC,GAAOivC,GAAaz/B,GAC5B,MAMfjQ,EAAMwvC,cAAcK,IAmBlBE,EAAc,SAACN,EAAgBnQ,GACjC/gC,QAAQ4N,IAAIsjC,EAAgBnQ,GAC5B,IAAI0Q,EAAWP,EAAehV,MAG3BgV,EAAehV,MAAMz3B,SAASs8B,GAC7B0Q,EAAWA,EAAShsC,QAAO,SAAAgc,GAAI,OAAIA,IAASsf,KAG5C0Q,EAAStyC,KAAK4hC,GAGpB/gC,QAAQ4N,IAAI6jC,GACVR,EAAcC,EAAgB,QAASO,IAIrCC,EAAsB,WACxBZ,EAAiB,IACjB9wC,QAAQ4N,IAAI,cAKhB,OAAGnM,EAAMgkB,QAED,cAAC/jB,EAAA,EAAD,CAAMC,MAAOC,GAAO+vC,cAApB,SACI,cAACj6B,EAAA,EAAD,CAAmB7U,KAAK,QAAQ8U,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,YAKjE,OAAlBhF,EAAM8vC,QACE,cAAC7vC,EAAA,EAAD,UAAM,cAACqB,EAAA,EAAD,0EAIf,eAACrB,EAAA,EAAD,CAAMC,MAAO,CAAC2R,QAAS,QAAS1M,MAAO,QAAvC,UAEI,eAAClF,EAAA,EAAD,CAAMC,MAAOC,GAAO4Y,YAApB,UAEE,cAAC9Y,EAAA,EAAD,CAAMC,MAAOC,GAAOgwC,YAApB,SACI,cAAC5iC,GAAA,EAAD,CACIE,OAAQ6hC,EAAY,UAAY,YAChCjuC,MAAOrB,EAAMqB,MACb8f,UAAU,EACVxgB,QAAS,YA9DA,WACrB,IAAIkvC,EAAiB7vC,EAAM8vC,QAGvB/rC,GAAQ,EACTurC,IACCvrC,GAAQ,GAGZ8rC,EAAetvC,KAAI,SAAA6zB,GACfob,EAAcpb,EAAQ,SAAUrwB,MAGpCwrC,GAAcD,GAkDEc,QAIZ,cAACnwC,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SAA4B,cAAC1N,EAAA,EAAD,6BAC5B,cAACrB,EAAA,EAAD,CAAMC,MAAOC,GAAOkwC,YAApB,SAAiC,cAAC/uC,EAAA,EAAD,qBAC/B,cAACrB,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SAA4B,cAAC1N,EAAA,EAAD,0CAC9B,cAACrB,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SAA4B,cAAC1N,EAAA,EAAD,gCAG7BtB,EAAM8vC,QAAQvvC,KAAI,SAAC6zB,EAAQ3zB,GACxB,OACE,cAAC6vC,GAAD,CACIlc,OAAQA,EACRqG,MAAOz6B,EAAMy6B,MACb8V,YAAa9vC,EAEbsvC,YAAaA,EACbP,cAAeA,EACfgB,SAAUxwC,EAAMwwC,UAHX/vC,MAQf,cAACR,EAAA,EAAD,CAAMC,MAAO,CAAC2R,QAAQ,QAAShS,SAAS,QAAS0J,UAAU,QAA3D,SACI,cAACoG,EAAA,EAAD,CACIxO,KAAM,KACNqJ,KAAM,YACN7J,QAAS,WACLpC,QAAQ4N,IAAI,gBACZ5N,QAAQ4N,IAAIijC,GACZpvC,EAAMywC,YAAN,MAAuBrB,GAAiBa,IANhD,uBAoBd,SAASK,GAAUtwC,GAGf,MAAgCsC,YAAe,GAA/C,WAAOiU,EAAP,KAAiBC,EAAjB,KACA,EAAwClU,WAAetC,EAAMo0B,OAAOsc,cAApE,WAAOA,EAAP,KAAqBC,EAArB,KACA,EAAsCruC,WAAetC,EAAMo0B,OAAOwc,aAAlE,WAAOA,EAAP,KAAoBC,EAApB,KACA,EAAkCvuC,WAAetC,EAAMo0B,OAAO0c,WAA9D,WAGMC,GAHN,UAG+B/kC,sBAC3BsC,oBAAStO,EAAMwvC,cAAe,IAAM,CAChC,SAAW,EACX,UAAY,IACZ,KAoDR,OACI,eAACvvC,EAAA,EAAD,CAAMC,MAAOC,GAAO6wC,SAApB,UACI,cAAC/wC,EAAA,EAAD,CAAMC,MAAOC,GAAOgwC,YAApB,SACI,cAAC5iC,GAAA,EAAD,CACIE,OAAQzN,EAAMo0B,OAAO6N,OAAS,UAAY,YAC1C5gC,MAAOrB,EAAMqB,MACb8f,UAAU,EACVxgB,QAAS,WACLpC,QAAQ4N,IAAInM,EAAMo0B,QAClBp0B,EAAMwvC,cAAcxvC,EAAMo0B,OAAQ,UAAWp0B,EAAMo0B,OAAO6N,aAKtE,eAAChiC,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,UACI,cAAC,KAAD,CACIjL,MAAO/D,EAAMo0B,OAAOlzB,KAAOlB,EAAMo0B,OAAOlzB,KAAO,GAC/CqO,UAAU,EACVC,aAAe,SAAAjO,KACfke,gBAAiB,SAACvB,KAClBhe,MAAOC,GAAOkhB,YAEpB,cAAC4vB,GAAD,CACEC,gBAAiBlxC,EAAMo0B,OAAO0c,UAC9BN,SAAUxwC,EAAMwwC,SAChB9zC,KAAMsD,EAAMo0B,OAAO13B,KACnB03B,OAAQp0B,EAAMo0B,OACd3T,SAAUzgB,EAAMwvC,mBAIpB,cAACvvC,EAAA,EAAD,CAAMC,MAAOC,GAAOkwC,YAApB,SACI,cAAC,KAAD,CACItsC,MAAO/D,EAAMo0B,OAAO13B,KAAOsD,EAAMo0B,OAAO13B,KAAO,GAC/C6S,UAAU,EACVC,aAAe,SAAAjO,KACfke,gBAAiB,SAACvB,KAClBhe,MAAOC,GAAOkhB,cAItB,cAACphB,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SACI,cAAC,KAAD,CACIjL,MAAO2sC,GAA8B,GACrCnhC,SAAUvP,EAAMo0B,OAAO6N,OACvBx3B,YAAa,gBACb+E,aAAe,SAAAjO,GACXovC,EAAgBpvC,GAChBwvC,EAAuB/wC,EAAMo0B,OAAQ,eAAgB7yB,IAEzDrB,MAAOC,GAAOgxC,sBAItB,cAAClxC,EAAA,EAAD,CAAMC,MAAOC,GAAO6O,OAApB,SACI,cAAC,KAAD,CACIjL,MAAO6sC,GAA4B,GACnCrhC,SAAUvP,EAAMo0B,OAAO6N,OACvBx3B,YAAa,eACb+E,aAAe,SAAAjO,GACXsvC,EAAetvC,GACfwvC,EAAuB/wC,EAAMo0B,OAAQ,cAAe7yB,IAEzDrB,MAAOC,GAAOgxC,sBAKrB,eAnHM,SAACnxC,GACX,OAAIuW,EAeA,eAACtW,EAAA,EAAD,CAAMC,MAAOC,GAAOixC,gBAApB,UACI,eAACnxC,EAAA,EAAD,CAAMC,MAAOC,GAAOkxC,eAApB,UACI,cAAC/vC,EAAA,EAAD,CAAMpB,MAAO,CAACsB,SAAS,QAAS6C,aAAa,QAA7C,0BACA,cAACsL,EAAA,EAAD,CACIxO,KAAM,KACNqJ,KAAM,OACN7J,QAAS,kBAAM6V,GAAY,IAH/B,2BASHxW,EAAMy6B,MAAMl6B,KAAI,SAAC++B,EAAM7+B,GACpB,OACI,eAACR,EAAA,EAAD,CAAMC,MAAOC,GAAOmxC,cAApB,UACI,cAAC/jC,GAAA,EAAD,CACIE,OAAQzN,EAAMo0B,OAAOqG,MAAMz3B,SAASs8B,GAAQ,UAAY,YACxDj+B,MAAOrB,EAAMqB,MACb8f,UAAU,EACVxgB,QAAS,WACLX,EAAM+vC,YAAY/vC,EAAMo0B,OAAQkL,MAGxC,cAACh+B,EAAA,EAAD,CAAMpB,MAAOC,GAAOoxC,SAApB,SAA+BjS,MATK7+B,SA3BhD,cAACR,EAAA,EAAD,CAAMC,MAAOC,GAAOqxC,QAApB,SACI,cAAC7hC,EAAA,EAAD,CACIxO,KAAM,KACNqJ,KAAM,YACN7J,QAAS,kBAAM6V,GAAY,IAH/B,4BA+GR,MAAWxW,MAnEoBA,EAAMuwC,aAyEjD,SAASU,GAAgBjxC,GACvB,MAA8CsC,aAAetC,EAAMkxC,iBAAkBlxC,EAAMkxC,iBAA3F,WAAOA,EAAP,KAAwBO,EAAxB,KAIA,MAAkB,qBAAfzxC,EAAMtD,KACA,KAIP,eAAC,IAAD,CACE4G,cAAe4tC,EACfztC,cAAe,SAACC,EAAWC,GACzB8tC,EAAmB/tC,GACnB1D,EAAMygB,SAASzgB,EAAMo0B,OAAQ,YAAa1wB,IAJ9C,UAQE,cAAC,IAAOG,KAAR,CAAaC,MAAM,aAAaC,MAAM,SAErC/D,EAAMwwC,SAASjwC,KAAI,SAAAmmC,GAClB,OAAO,cAAC,IAAO7iC,KAAR,CAAaC,MAAO4iC,EAAQxlC,KAAM6C,MAAO2iC,EAAQn/B,IAASm/B,EAAQn/B,UAQjF,IAAMpH,GAASuB,IAAWC,OAAO,CAC/BuuC,cAAe,CACXjuC,WAAY,SACZiC,eAAgB,SAChBe,OAAQ,QAEZ8T,YAAa,CACXhX,cAAe,MACfoD,MAAO,OACPb,gBAAiB,UACjBkC,WAAY,OACZ2P,cAAe,QAEjB66B,SAAU,CACRjvC,cAAe,MACfC,SAAU,OACVmD,MAAO,OACPuc,kBAAmB,UACnBD,kBAAmB,MACnBjb,WAAY,OACZ2P,cAAe,QAEjBnH,OAAQ,CACN7J,MAAO,MACPX,WAAY,QAEd6rC,YAAa,CACTlrC,MAAO,MACPX,WAAY,QAEhB2rC,YAAa,CACThrC,MAAO,KACPX,WAAY,QAEhB6c,UAAW,CACPlc,MAAO,OACPqB,WAAY,MACZ2P,cAAe,MACftP,YAAa,OAEjBsqC,kBAAmB,CACjBhsC,MAAO,OACPqB,WAAY,MACZ2P,cAAe,MACftP,YAAa,MACbsjB,YAAa,MACb5lB,YAAa,WAEfitC,QAAS,CACLrsC,MAAO,MACPX,WAAY,MAEhB4sC,gBAAiB,CACbjsC,MAAO,OACPpD,cAAe,MACfC,SAAU,OACVwE,WAAY,OACZnC,aAAc,OACd8R,cAAe,OACftP,YAAa,OACbvC,gBAAiB,WAGrBgtC,cAAe,CACXvvC,cAAe,MACfrC,SAAU,OAEd6xC,SAAS,CACL/qC,WAAY,MACZ2P,cAAe,OAEnBk7B,eAAgB,CACZlsC,MAAM,OACNgR,cAAe,OACftP,YAAY,OACZ9E,cAAe,SCtYN,SAAS2vC,GAAc1xC,GAGlC,IAAM0E,EAAapC,aAAiBsC,IAEpC,EAA8CtC,WAAetC,EAAM6C,UAAU,IAA7E,WAAOO,EAAP,KAAwBb,EAAxB,KACA,EAAkDD,WAAe,WAAjE,WAAOqvC,EAAP,KAA0BC,EAA1B,KACA,EAA4DtvC,WAAe,MAA3E,WAAOuvC,EAAP,KAA+BC,EAA/B,KACA,EAAwDxvC,WAAe,MAAvE,WAAOyvC,EAAP,KAA6BC,EAA7B,KACA,EAA8D1vC,WAAe,MAA7E,WAAO2vC,EAAP,KAAgCC,EAAhC,KACA,EAA8B5vC,YAAe,GAA7C,WAAO0hB,EAAP,KAAgBC,EAAhB,KAEMkuB,EAAa,WACfluB,GAAW,GACXhc,GACE,uBAAyB7E,EAAgBmE,GAAK,IAAMoqC,EACpDjtC,EAAWwD,WACXhK,MAAK,SAAAC,GACLI,QAAQ4N,IAAIhO,GAEW,MAApBA,EAASsP,OACVuhB,MAAM,4BAEN8iB,EAA0B3zC,EAAS2xC,SACnCkC,EAAwB7zC,EAASs8B,OACjCyX,EAA2B/zC,EAASqyC,WAEtCvsB,GAAW,OAkCjB,OACE,eAAChkB,EAAA,EAAD,CAAMC,MAAO,CAAC2R,QAAS,QAAS1M,MAAO,QAASiC,QAAS,CAAC,KAAQpH,EAAMnD,MAAxE,UAEE,eAACoD,EAAA,EAAD,CAAMC,MAAO,CAAC6B,cAAe,MAAO2N,aAAa,QAAjD,UACE,cAACpO,EAAA,EAAD,CAAMpB,MAAOC,GAAO6tC,UAApB,uBACA,eAAC,IAAD,CACE1qC,cAAeF,EAAkBA,EAAgBmE,GAAK,EACtD9D,cAAe,SAACC,EAAWC,GACvBpF,QAAQ4N,IAAIzI,GACZnF,QAAQ4N,IAAInM,EAAM6C,WAClB,IAAIe,EAAU5D,EAAM6C,UAAUC,MAAK,SAAAC,GAAC,OAAIA,EAAEwE,GAAG6qC,aAAe1uC,EAAU0uC,cACtE7zC,QAAQ4N,IAAIvI,GACZrB,EAAmBqB,IAPzB,UAUE,cAAC,IAAOC,KAAR,CAAaC,MAAO,mBAAoBC,MAAO,GAAQ,GAEtD/D,EAAM6C,UAAUtC,KAAI,SAAAqD,GACnB,OAAO,cAAC,IAAOC,KAAR,CAAaC,MAAOF,EAAQL,MAAOQ,MAAOH,EAAQ2D,IAAS3D,EAAQ2D,UAK9E,cAACjG,EAAA,EAAD,CAAMpB,MAAOC,GAAO6tC,UAApB,yBACA,eAAC,IAAD,CACE1qC,cAAequC,EACfluC,cAAe,SAACC,EAAWC,GACzBiuC,EAAqBluC,IAHzB,UAOE,cAAC,IAAOG,KAAR,CAAaC,MAAM,UAAUC,MAAM,YACnC,cAAC,IAAOF,KAAR,CAAaC,MAAM,YAAYC,MAAM,iBAIvC,cAAC4L,EAAA,EAAD,CACExO,KAAM,KACNqJ,KAAM,YACN7J,QAASwxC,EACTjyC,MAAO,CAACsE,WAAY,QAJtB,4BAYF,cAAC2qC,GAAD,CACEW,QAAS+B,EACTpX,MAAOsX,EACPtB,YA3Ec,SAACrB,EAAeiD,GAChCpuB,GAAW,GAEX1lB,QAAQ4N,IAAI,gBAAiBijC,GAC7B9mC,GACI,uBAAyBlF,EAAgBmE,GAAK,IAAMoqC,EACpDjtC,EAAWwD,UACXknC,GACFlxC,MAAK,SAAAC,GACHI,QAAQ4N,IAAIhO,GAEW,MAApBA,EAASsP,QACRuhB,MAAM,kCAAoC7wB,EAASoe,QACnD81B,IACAF,MAEAE,IACAF,SA2DN3C,cAjFgB,SAACK,GACrBtxC,QAAQ4N,IAAI0jC,GACViC,EAA0B,KAAIjC,KAgF5B7rB,QAASA,EACTwsB,SAAUyB,OAUpB,IAAM9xC,GAASuB,IAAWC,OAAO,CAC7BqsC,UAAW,CACPxnC,WAAY,OACZ2P,cAAe,OACftP,YAAa,UCtIN,SAASyrC,GAAetyC,GAErC,IAEMmF,EAFmB1F,wBAAc,CAAE0G,MAAO,wBAEf,OAASnG,EAAM+P,KAAK5K,MAErD,OAAGnF,EAAM+P,KAAK1K,OAAOrC,SAAS,QAE1B,qBAAKohC,YAAWpkC,EAAMnD,KAAMqD,MAAO,CAACiF,MAAO,OAAQvD,UAAW,SAAUqD,OAAQjF,EAAM+P,KAAK9K,OAAQuB,WAAY,OAAQ2P,cAAc,QAArI,SACE,wBAAQ4kB,IAAK/6B,EAAM+P,KAAK1K,OAAQJ,OAAQjF,EAAM+P,KAAK9K,OAAQE,MAAOA,EAAOotC,YAAY,IAAIC,iBAAe,MAM5G,sBAAKpO,YAAWpkC,EAAMnD,KAAMqD,MAAO,CAACiF,MAAO,OAAQvD,UAAW,SAAUqD,OAAQjF,EAAM+P,KAAK9K,QAA3F,UACE,qBAAK/E,MAAO,CAACuyC,WAAY,yDAA0Dt8B,cAAc,OAAQ3P,WAAY,QAArH,SAA+HxG,EAAM+P,KAAKxM,QAC1I,wBAAOmvC,UAAQ,EAACvtC,MAAOA,EAAvB,UAEE,wBAAQ41B,IAAK/6B,EAAM+P,KAAK1K,OAAQ3I,KAAK,cAFvC,eAKE,mBAAG87B,KAAMx4B,EAAM+P,KAAK1K,OAApB,iBALF,eCbS,SAASstC,GAAgB3yC,GAEtC,IAAM0E,EAAapC,aAAiBsC,IA2CpC,OACE,cAAC+K,EAAA,EAAD,CACExO,KAAMnB,EAAM+P,KAAK5O,KACjBqJ,KAAK,YACL7J,QAAS,kBA7CI,SAACqc,GAEhB,GAAGhd,EAAM+P,KAAKpP,QACZpC,QAAQ4N,IAAI,YAEZ7D,GAAS,gBAAkBtI,EAAM+P,KAAKlT,KAAM6H,EAAWwD,UAAW,CAACvH,SAAS,IAAOzC,MAAK,SAAAC,GACtFI,QAAQ4N,IAAIhO,GACZ6wB,MAAM7wB,WAKR,GAAG6e,EAAK41B,WAAW,QACjBhtC,OAAOC,SAAS2yB,KAAOx4B,EAAM+P,KAAKrN,SAGlC,GAAGsa,EAAKsb,MAAM,MAAM,CAElB,IAAIC,EAASvb,EAAKF,QAAQ,YAAa,IAEnC9b,EAASgc,EAAKF,QAAQ,WAAY,IACnC9b,EAAO4xC,WAAW,OACnB5xC,OAASiC,GAGXjD,EAAMY,WAAWC,SACf03B,EACA,CACEx3B,WAAYC,EACZ8Y,cAAU7W,EACV8W,eAAW9W,SAIfjD,EAAMY,WAAWC,SAASmc,GAWf61B,CAAS7yC,EAAM+P,KAAKrN,MACnC0E,QAAS,CAAC,KAAQpH,EAAMnD,MAJ1B,SAMGmD,EAAM+P,KAAKxO,O,qkBCxCH1F,IAAUC,SAASC,MAAMC,OAEzB,SAAS82C,GAAgB9yC,GAEtC,IAAM0E,EAAapC,IAAMqC,WAAWC,IAEpC,EAAwBtC,IAAM8I,SAAS,MAAvC,WAAO2E,EAAP,KAAaua,EAAb,KACA,EAA8DhoB,IAAM8I,SAAS,IAA7E,WAAO2nC,EAAP,KAAgCC,EAAhC,KACA,EAAoD1wC,IAAM8I,SAAS,IAAnE,WAA2B6nC,GAA3B,WACA,EAA0B3wC,IAAM8I,SAAS,MAAzC,WAAO9M,EAAP,KAAc40C,EAAd,KACA,EAAwC5wC,IAAM8I,SAAS,IAAvD,WAAqB+nC,GAArB,WA8CA,GAPA7wC,IAAMoJ,WAAU,WACdwnC,GAAS,GACTC,EAAgB,IAChB7oB,EAAQtqB,EAAM2+B,aAEb,CAAC3+B,EAAM2+B,UAAW3+B,EAAMc,MAAMlE,SAE9B0B,EACD,OAAQ,cAACgD,EAAA,EAAD,iCAMV,IAAIyO,EACF,OACE,cAACkG,EAAA,EAAD,CAAmBC,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,UAKjE,GAA4B,SAAzBhF,EAAM2+B,UAAUjiC,KAAgB,CAGjC,GAAGsD,EAAMc,MAAMlE,QACboD,EAAMc,MAAMlE,OAAOkd,UACnB9Z,EAAMc,MAAMlE,OAAOmd,UACpB,CACC,GAAG/Z,EAAMc,MAAMlE,OAAOmd,YAAchK,EAAKiK,UAAU,CACjD,IAAMo5B,EAAarjC,EAAKA,KAAKjN,MAAK,SAAAC,GAAC,OAAIA,EAAEwE,KAAOvH,EAAMc,MAAMlE,OAAOkd,YACnE,OACE,cAAC,GAAD,CACEs5B,WAAYA,EACZpqC,WAAchJ,EAAM2+B,UAAU31B,WAC9BsT,SAAYvM,EAAKlT,KACjB+vB,SAAY5sB,EAAMc,MAAMlE,OAAOkd,SAC/BC,UAAW/Z,EAAMc,MAAMlE,OAAOmd,UAC9BmC,YAAalc,EAAMc,MAAMlE,OAAOsf,cAIpC,MAAO,GAKT,OACE,cAAC,GAAD,SACMnM,GADN,IAEEgO,QAtFmB,WAKtBg1B,IAA4B/yC,EAAM2+B,UAAU0U,mBAG7C/oB,EAAQ,MACR0oB,EAA2BhzC,EAAM2+B,UAAU0U,kBAC3CJ,EAAsBjzC,EAAMc,MAAMlE,QAE9BoD,EAAMc,MAAMlE,QAAYoD,EAAMc,MAAMlE,OAAOkd,UAAa9Z,EAAMc,MAAMlE,OAAOmd,WAE7E9R,GAAQjI,EAAM2+B,UAAU0U,iBAAkB3uC,EAAWwD,WAAWhK,MAAK,SAAA2uB,GAKhEA,EAAYpf,QAAU,MACvBylC,GAAS,GACTC,EAAgBtmB,EAAYtQ,QAEF,MAAvBsQ,EAAYpf,QACb5H,SAASC,UAKbwkB,EAAQuC,QA0DRtpB,MAASvD,EAAM2+B,UAAUp7B,MACzByF,WAAchJ,EAAM2+B,UAAU31B,WAC9BlI,MAASd,EAAMc,SAMjB,MAA4B,kBAAzBd,EAAM2+B,UAAUjiC,KAErB,cAACg1C,GAAD,CACE70C,KAAQmD,EAAM2+B,UAAU9hC,KACxB0G,MAASvD,EAAM2+B,UAAUp7B,MACzByF,WAAchJ,EAAM2+B,UAAU31B,WAC9BnG,UAAa7C,EAAM2+B,UAAU97B,YAKD,cAAzB7C,EAAM2+B,UAAUjiC,KAUS,SAAzBsD,EAAM2+B,UAAUjiC,KAErB,cAACiyC,GAAD,CACEzuC,MAAK,IACHiF,MAAO4K,EAAK5K,MAAQ4K,EAAK5K,MAAQ,OACjC3D,SAAUuO,EAAKvO,SAAWuO,EAAKvO,SAAW,OAC1CiI,UAAWsG,EAAKtG,UAAYsG,EAAKtG,UAAY,GAC7C2vB,WAAYrpB,EAAKqpB,WAAarpB,EAAKqpB,WAAa,SAChD/3B,MAAO0O,EAAK1O,MAAQ0O,EAAK1O,MAAQ,UACjCO,UAAWmO,EAAKnO,UAAYmO,EAAKnO,UAAY,OAC7C0xC,cAAevjC,EAAKujC,cAAgBvjC,EAAKujC,cAAgB,QACtDvjC,EAAK7P,OAEVqB,KAAMwO,EAAKxO,KACXqtC,qBAAsB7+B,EAAK6+B,qBAC3B/xC,KAAOkT,EAAKlT,OAKgB,UAAzBmD,EAAM2+B,UAAUjiC,KAErB,cAACuD,EAAA,EAAD,CAAMC,MAAO,CAAC+E,OAAO8K,EAAK9K,OAAOE,MAAM,QAASiC,QAAS,CAAC,KAAQ2I,EAAKlT,QAIzC,cAAzBmD,EAAM2+B,UAAUjiC,KAErB,cAACsuC,GAAD,CACE1B,UAAYv5B,EAAKu5B,UACjB2B,eAAiBl7B,EAAKk7B,eACtB1B,aAAex5B,EAAKw5B,aACpBhmC,MAAQwM,EAAKxM,MACb1G,KAAOkT,EAAKlT,OAKgB,iBAAzBmD,EAAM2+B,UAAUjiC,KAEpBqT,EAAKkxB,QAEJ,cAAC,GAAD,CACErgC,WAAYZ,EAAMY,WAClBqgC,QAASlxB,EAAKkxB,QACd2E,OAAQ71B,EAAK61B,OACbjD,YAAa5yB,EAAK4yB,YAClB9lC,KAAOkT,EAAKlT,OAGT,GAMuB,iBAAzBmD,EAAM2+B,UAAUjiC,KAGrB,cAACw3B,GAAD,CACEuC,SAAU1mB,EAAK0mB,SACfP,YAAanmB,EAAKmmB,YAClBx5B,KAAMqT,EAAKwjC,QACXpd,WAAYpmB,EAAKomB,WACjB9C,UAAWtjB,EAAKsjB,UAChBx2B,KAAMmD,EAAM2+B,UAAU9hC,KACtB05B,SAAUxmB,EAAKwmB,SACfC,YAAazmB,EAAKymB,YAClBrxB,MAAO4K,EAAK5K,MACZF,OAAQ8K,EAAK9K,OACb6wB,eAAgB91B,EAAM81B,eACtBD,cAAe71B,EAAM61B,cACrBhC,YAAa9jB,EAAK8jB,cAKU,YAAzB7zB,EAAM2+B,UAAUjiC,KAErB,cAACgN,GAAA,EAAD,CAAS7M,KAAOkT,EAAKlT,KAAOqD,MAAO,CAACiF,MAAM,OAAQF,OAAO,MAAOH,WAAWJ,EAAWK,OAAOiB,UAI/D,UAAzBhG,EAAM2+B,UAAUjiC,KAErB,cAAC0I,EAAA,EAAD,CACElF,MAAO,CACLiF,MAAO4K,EAAK5K,MACZF,OAAQ8K,EAAK9K,OACbpF,SAAU,OACV6P,aAAc,QAEhB7S,KAAOkT,EAAKlT,KACZ2I,WAAY,UACZH,OAAQ,CACNC,IAAKyK,EAAKzK,OAMgB,WAAzBtF,EAAM2+B,UAAUjiC,KAGrB,cAACi2C,GAAD,CACE5iC,KAAMA,EACNnP,WAAYZ,EAAMY,WAClB/D,KAAOkT,EAAKlT,OAKgB,SAAzBmD,EAAM2+B,UAAUjiC,KAErB,cAACy7B,GAAD,CACEpoB,KAAMA,EACNnP,WAAYZ,EAAMY,WAClB/D,KAAOkT,EAAKlT,OAIgB,UAAzBmD,EAAM2+B,UAAUjiC,KAErB,cAAC41C,GAAD,CACEviC,KAAMA,EACNnP,WAAYZ,EAAMY,WAClB/D,KAAOkT,EAAKlT,OAMd,cAACyE,EAAA,EAAD,+CA9IE,EAsJOI,IAAWC,OAAO,CAC/B+X,UAAW,CACT5X,KAAM,EAENG,WAAY,SACZiC,eAAgB,SAChBrC,QAAS,UC5RE,SAAS2xC,GAAOxzC,GAE7B,IAAM0E,EAAaC,qBAAWC,IAE9B,EAAgDtC,IAAM8I,SAAS,MAA/D,WAAOqoC,EAAP,KAAyBC,EAAzB,KACA,EAA8BpxC,IAAM8I,UAAS,GAA7C,WAAO4Y,EAAP,KAAgBC,EAAhB,KACA,EAAwC3hB,IAAM8I,SAAS,MAAvD,WAIMnB,GAJN,UAIY3H,IAAMgiB,OAAO,OACzBhiB,IAAMoJ,WAAU,WACXzB,EAAIgZ,SACLhZ,EAAIgZ,QAAQ0wB,MAAM,qBAKnB,IAyDH,OAhDArxC,IAAMoJ,WAAU,WAGXzB,EAAIgZ,SACLhZ,EAAIgZ,QAAQ0wB,MAAM,QAEpB,IAAMC,EAAqB,IAAIC,gBAC/B5pC,EAAIgZ,QAAS2wB,EAEb,IAAIzrC,EAAS8B,EAAIgZ,QAAQ9a,OAErB2rC,EAAgB9zC,EAAM+zC,WAAWrQ,QAAQ,GAE1C1jC,EAAMc,OAASd,EAAMc,MAAMlE,QAAUoD,EAAMc,MAAMlE,OAAOmE,aACzD+yC,EAAgB9zC,EAAM+zC,WAAWrQ,QAAQ5gC,MAAK,SAAAC,GAAC,OAAIA,EAAEL,MAAQsxC,mBAAmBh0C,EAAMc,MAAMlE,OAAOmE,gBAIjG0yC,GAAqBzzC,EAAMc,MAAMlE,SAAYoD,EAAMc,MAAMlE,OAAOkd,UAAa9Z,EAAMc,MAAMlE,OAAOmd,aAClGkK,GAAW,GACXhc,GAAQ,WAAa6rC,EAAchsC,UAAY,IAAMgsC,EAAcpxC,IAAKgC,EAAWwD,UAAWC,GAC3FjK,MAAK,SAAA2uB,GAGsB,MAAvBA,EAAYpf,OAEb/I,EAAWuvC,iBAGkB,MAAvBpnB,EAAYpf,QAClBuhB,MAAM,yBACN0kB,EAAoB,IACpBzvB,GAAW,KAGXyvB,EAAoB7mB,GACpB5I,GAAW,UAUlB,CAACjkB,EAAMc,QAEPkjB,EAEC,cAAC/jB,EAAA,EAAD,CAAMC,MAAOC,GAAO+vC,cAApB,SACE,cAACj6B,EAAA,EAAD,CAAmB7U,KAAK,QAAQ8U,WAAW,EAAM7U,MAAOqD,EAAWK,OAAOC,YAO5E,cAAC/E,EAAA,EAAD,CAAMC,MAAOC,GAAOuZ,UAApB,SAII+5B,EAAiBlzC,KAAI,SAACo+B,EAAWl+B,GAC/B,OACE,cAACqyC,GAAD,CAEEnU,UAAWA,EACX79B,MAAOd,EAAMc,MACbF,WAAYZ,EAAMY,WAClBk1B,eAAgB91B,EAAM81B,eACtBD,cAAe71B,EAAM61B,eALhBp1B,QAoBrB,IAAMN,GAASuB,IAAWC,OAAO,CAC/B+X,UAAW,CACT5X,KAAM,EACNqD,MAAM,OACNtD,QAAS,OACTE,cAAe,MACfC,SAAU,QAEZkuC,cAAe,CACbjuC,WAAY,SACZiC,eAAgB,SAChBe,OAAQ,UCtFGivC,GArCS,SAACl0C,GAEvB,OAAIA,EAAMyqC,KAON,cAACxqC,EAAA,EAAD,CAAMC,MAAOC,GAAOg0C,gBAAiB9zC,SAAU,SAA/C,SACE,cAACJ,EAAA,EAAD,CAAMC,MAAOC,GAAOC,OAApB,SAGIJ,EAAMM,SAASC,KAAI,SAACC,EAASC,GAC3B,OACE,eAACC,EAAA,EAAD,CACEC,QAAS,kBAAMX,EAAMY,WAAWC,SAASL,EAAQM,MAAO,CAAEC,WAAYP,EAAQQ,UAC9Ed,MAAOC,GAAOK,QAEdH,SAAU,UAAUG,EAAQM,MAJ9B,UAMI,cAACG,EAAA,EAAD,CAASC,KAAMV,EAAQW,KAAMC,KAAM,GAAIC,MAAM,UAC7C,cAACC,EAAA,EAAD,CAAMpB,MAAOC,GAAOi0C,QAApB,SAA8B5zC,EAAQe,SAJnCd,UAfZ,MAoCLN,GAASuB,IAAWC,OAAO,CAC/BnB,QAAS,CACPoB,UAAU,SACVC,QAAS,OACTC,KAAM,GAERsyC,QAAS,CACP/yC,MAAM,UACNG,SAAU,EACVU,SAAU,SACVC,WAAY,SACZC,aAAc,YAEhBhC,OAAQ,CACN2B,cAAe,MACfC,SAAU,OACVF,KAAM,EACNG,WAAY,UAEdkyC,gBAAiB,CACfpyC,cAAc,MACd4W,SAAS,QACTuO,OAAQ,OACR5iB,gBAAiB,iBACjBmS,KAAM,MACNzJ,MAAO,MACP4L,aAAc,UCQHy7B,GAlEQ,SAACr0C,GAEtB,IAAIA,EAAMyqC,KACR,OAAO,KAGT,IAAMvnC,EAAa,WACjB,IAAIV,EAASxC,EAAMY,WAAW6B,WAAWD,OAErCE,EAAMF,EADSA,EAAOG,OAAS,GACJzB,KAC3B0B,EAAiB5C,EAAM6C,UAAUC,MAAK,SAAAC,GAAC,OAAIL,EAAIM,SAASD,EAAEL,QAC9D,YAAsBO,IAAnBL,EACM,GAEFA,GAGTN,aAAgB,WACdC,EAAmBW,OAClB,CAAClD,IAEJ,IAEkBmD,EAFlB,EAA8Cb,WAAeY,KAA7D,WAAOE,EAAP,KAAwBb,EAAxB,KAUA,OACE,eAACtC,EAAA,EAAD,CAAMC,MAAOC,GAAOg0C,gBAApB,UACE,cAACl0C,EAAA,EAAD,CAAMC,MAAO,CAACmD,UAAU,SAAUxD,SAAU,OAA5C,SACE,eAAC,IAAD,CACEyD,cAAeF,EAAkBA,EAAgBG,MAAQ,EACzDrD,MAAOC,GAAOqD,OACdnD,SAAU,gBACVoD,cAAe,SAACC,EAAWC,GACzB,IAAIC,EAAU5D,EAAM6C,UAAUC,MAAK,SAAAC,GAAC,OAAIA,EAAEQ,QAAUG,KACpDnB,EAAmBqB,IANvB,UASE,cAAC,IAAOC,KAAR,CAAaC,MAAO,mBAAoBC,MAAO,IAAS,iBAEvD/D,EAAM6C,UAAUtC,KAAI,SAAAqD,GACnB,OAAO,cAAC,IAAOC,KAAR,CAAaC,MAAOF,EAAQL,MAAOQ,MAAOH,EAAQL,OAAYK,EAAQlB,aAQnF,cAAC,EAAD,CACEpC,UAhCY6C,EAgCOC,EAAkBA,EAAgBV,IAAM,GA/B3DS,EAGSnD,EAAMM,SAAS0D,QAAO,SAACxD,GAAD,OAAaA,EAAQM,MAAMkC,SAASG,EAAa,QAF3E,IA+BLvC,WAAYZ,EAAMY,iBAYpBT,GAASuB,IAAWC,OAAO,CAC/BsC,cAAe,CACbnC,KAAM,EACNG,WAAY,aACZiC,eAAgB,QAElB1D,QAAS,CACPoB,UAAU,SACVC,QAAS,OACTC,KAAM,GAERqyC,gBAAiB,CACfpyC,cAAc,MACd4W,SAAS,QACTuO,OAAQ,OACR5iB,gBAAiB,iBACjBmS,KAAM,MACNzJ,MAAO,MACP4L,aAAc,QAEhBxY,OAAQ,CACN2B,cAAe,MACfD,KAAM,EACNG,WAAY,UAEdkC,SAAU,CACRrC,KAAM,EACNC,cAAe,MACfmC,eAAgB,QAChBjC,WAAY,UAEdmC,cAAe,CACbC,aAAc,QAEhBb,OAAS,CACPc,gBAAiB,iBACjBjD,MAAO,OACPQ,QAAS,OACTwC,aAAc,MACdE,YAAa,QACbC,WAAY,UC2HD8vC,GA3Oa,SAACt0C,GAE3B,IAAM0E,EAAaC,qBAAWC,IAEtBzE,EAASuB,IAAWC,OAAO,CAC7BsC,cAAe,CACbnC,KAAM,EACNG,WAAY,aACZiC,eAAgB,QAElBqwC,cAAe,CACb3yC,UAAU,SACVE,KAAM,EACNN,SAAU,MACV8C,gBAAiBI,EAAWK,OAAOC,QACnCnF,SAAU,OACV+Y,aAAc,MACd3T,OAAQ,OACRmK,YAAa,OACb5K,WAAY,OACZN,eAAgB,SAChBjC,WAAY,UAEduyC,cAAe,CACb5yC,UAAU,SACVE,KAAM,EACNN,SAAU,MACV8C,gBAAiBI,EAAWK,OAAOC,QACnCnF,SAAU,QACV+Y,aAAc,OACd3T,OAAQ,OACRuB,WAAY,MACZ2P,cAAe,MACf9R,aAAc,OACdwC,YAAa,OACbuI,YAAa,QAEfqlC,WAAY,CACV7yC,UAAU,SACVE,KAAM,EACNN,SAAU,MACV8C,gBAAiBI,EAAWK,OAAOC,QACnCR,WAAY,OACZ3E,SAAU,OACV+Y,aAAc,MACd3T,OAAQ,OACRmK,YAAa,OACblL,eAAgB,SAChBjC,WAAY,UAEdyyC,WAAY,CACV9yC,UAAU,SACVE,KAAM,EACNN,SAAU,MACV0C,eAAgB,UAQlBywC,YAAa,CACX/yC,UAAU,SACVJ,SAAU,MACVH,MAAM,WAERjB,OAAQ,CACN2B,cAAe,MACfC,SAAS,OACTF,KAAM,EACNG,WAAY,UAEdkC,SAAU,CACRrC,KAAM,EACNC,cAAe,MACfmC,eAAgB,QAChBjC,WAAY,UAEdmC,cAAe,CACbC,aAAc,QAEhBuwC,QAAS,CACP9yC,KAAM,EACN6W,SAAU,QACV3L,MAAO,OACP1I,gBAAiBI,EAAWK,OAAOC,QACnCkiB,OAAQ,MACRtO,aAAc,MACd3T,OAAQ,OACRE,MAAO,OACPjB,eAAgB,SAChBjC,WAAY,YAIpB,EAAsCmJ,oBAAS,GAA/C,WAAOypC,EAAP,KAAoBC,EAApB,KACA,EAAkD1pC,oBAAS,GAA3D,WAAO2pC,EAAP,KAA0BC,EAA1B,KAEMC,EAAuB,WACzBH,GAAe,SAAA7xB,GAAO,OAAKA,MA2H/B,OACE,cAAChjB,EAAA,EAAD,CAAMC,MAAQ20C,EAAc,KAAO10C,EAAOy0C,QAA1C,SAGKC,EAtDD,cAAC50C,EAAA,EAAD,CAAMC,MAAO,CAAC+E,OAAO,QAArB,SACI,cAAChF,EAAA,EAAD,CAAMC,MAAO,CACT6B,cAAc,MAEd4W,SAAU,QACVuO,OAAQ,MACR/hB,MAAO,OAEPqB,WAAY,OACZkJ,aAAc,OARlB,SAWI,eAACzP,EAAA,EAAD,CAAMC,MAAOC,EAAOC,OAApB,UAEE,cAACM,EAAA,EAAD,CACEC,QAASX,EAAMk1C,kBACfh1C,MAAOC,EAAOo0C,cAFhB,SAIE,cAACtzC,EAAA,EAAD,CAASC,KAAM,OAAQE,KAAM,GAAIC,MAAOrB,EAAMm1C,eAAiB,mBAAqB,YAtFjGzwC,EAAW7B,WAAa6B,EAAW7B,UAAUF,OAAS,EAErD,eAAC1C,EAAA,EAAD,CAAMI,SAAU,SAAhB,UAEE,cAAC,EAAD,UACE,cAACJ,EAAA,EAAD,CAAMC,MAAO,CAAC4E,WAAYJ,EAAWK,OAAOC,QAAS4T,aAAc,QAAnE,SACE,cAAC,EAAD,CACEtY,SAAUoE,EAAWe,OACrB5C,UAAW6B,EAAW7B,UAAY6B,EAAW7B,UAAY,GACzDjC,WAAYZ,EAAMY,iBAKxB,eAAC,EAAD,WACE,cAAC,GAAD,CACEN,SAAUoE,EAAWe,OACrB5C,UAAW6B,EAAW7B,UAAY6B,EAAW7B,UAAY,GACzDjC,WAAYZ,EAAMY,WAClB6pC,KAAMsK,IAER,eAACr0C,EAAA,EAAD,CACEC,QAAS,kBAAMq0C,GAAsBD,IACrC70C,MAAOC,EAAOq0C,cAFhB,UAIE,cAACvzC,EAAA,EAAD,CAASC,KAAM,SAAUE,KAAM,GAAIC,MAAO0zC,EAAoB,mBAAqB,UACnF,cAACzzC,EAAA,EAAD,CAAMpB,MAAO60C,EAAoB,CAAE1zC,MAAM,mBAAoBG,SAAU,GAAM,CAAEH,MAAM,UAAWG,SAAU,GAA1G,8BASR,eAACvB,EAAA,EAAD,CAAMI,SAAU,SAAhB,UAEE,cAAC,EAAD,UACE,cAACJ,EAAA,EAAD,CAAMC,MAAO,CAAC4E,WAAYJ,EAAWK,OAAOC,QAAS4T,aAAc,QAAnE,SACE,cAAC,EAAD,CACEtY,SAAUoE,EAAWe,OACrB7E,WAAYZ,EAAMY,iBAKxB,eAAC,EAAD,WACE,cAAC,GAAD,CACEN,SAAUoE,EAAWe,OACrB7E,WAAYZ,EAAMY,WAClB6pC,KAAMsK,IAER,eAACr0C,EAAA,EAAD,CACEC,QAAS,kBAAMq0C,GAAsBD,IACrC70C,MAAOC,EAAOq0C,cAFhB,UAIE,cAACvzC,EAAA,EAAD,CAASC,KAAM,SAAUE,KAAM,GAAIC,MAAO0zC,EAAoB,mBAAqB,UACnF,cAACzzC,EAAA,EAAD,CAAMpB,MAAO60C,EAAoB,CAAE1zC,MAAM,mBAAoBG,SAAU,GAAM,CAAEH,MAAM,UAAWG,SAAU,GAA1G,8BAmCM,cAACd,EAAA,EAAD,CACIC,QAASs0C,EACT/0C,MAAOC,EAAOs0C,WAFlB,SAIE,cAACxzC,EAAA,EAAD,CAASC,KAAM,qBAAsBE,KAAM,GAAIC,MAAM,mBAY/D,cAACX,EAAA,EAAD,CACIC,QAASs0C,EACT/0C,MAAOC,EAAOu0C,WAFlB,SAII,cAACzzC,EAAA,EAAD,CAASC,KAAM,oBAAqBE,KAAM,GAAIC,MAAM,eC1NnD,SAAS+zC,GAAOp1C,GAE7B,IAAMkG,EAAmBzG,wBAAc,CAAE0G,MAAO,wBAE1ChG,EAASuB,IAAWC,OAAO,CAC/B+X,UAAW,CACT5X,KAAM,EACNwC,gBAAiB,OACjBW,OAAQiB,EAAmB,qBAAuB,QAEpDmvC,WAAY,CACV18B,SAAS,QACTuO,OAAQ,QACRzQ,KAAM,OAER6+B,kBAAmB,CACjBnwC,MAAO,OACPF,OAAQ,OACRlD,cAAe,eAEjBwzC,WAAY,CACV58B,SAAU,QACVlC,KAAM,MACNkL,IAAK,SAKL4W,EADe5zB,qBAAWC,IACNq8B,QAAQn+B,MAAK,SAAAC,GAAC,OAAIA,EAAEL,MAAQ1C,EAAMc,MAAMI,QAG5D+F,EAAesxB,EAAOlyB,QAAQ1D,OAAS,EAAI41B,EAAOlyB,QAAUkyB,EAAOmL,QAEvE,EAA4Ct4B,oBAAS,GAArD,WAAO+pC,EAAP,KAAuBK,EAAvB,KACMC,EAAmB,WACvBD,GAAkB,SAAAvyB,GAAO,OAAKA,MAGhC,EAAsC7X,oBAAS,GAA/C,WAAOvG,EAAP,KAAoB6wC,EAApB,KAKA,EAAwCtqC,oBAAS,GAAjD,WAAOpE,EAAP,KAAqB2uC,EAArB,KAMMC,EAAa,WACjB,OAAGT,EAEC,cAACl1C,EAAA,EAAD,CAAMC,MAAOC,EAAOo1C,WAApB,SACE,cAAC,GAAD,CACE30C,WAAYZ,EAAMY,WAClBqG,aAAcA,EACdD,aAAcA,MAKb,cAAC/G,EAAA,EAAD,CAAMC,MAAO,CAAC2R,QAAQ,WAIjC,OAEE,eAAC5R,EAAA,EAAD,WAEE,cAAC,EAAD,UACE,cAAC,GAAD,CAAkBW,WAAYZ,EAAMY,WAAYiE,YAAaA,MAG/D,eAAC5E,EAAA,EAAD,CAAMC,MAAO,CAAE6B,cAAc,OAA7B,UAEE,cAAC,EAAD,UACE,cAAC,GAAD,CACEnB,WAAYZ,EAAMY,WAClBqG,aAAcA,EACdD,aAAcA,MAIlB,cAACG,EAAA,EAAD,CAAYjH,MAAOC,EAAOuZ,UAA1B,SAEE,cAAC85B,GAAD,CAAQO,WAAYxb,EACZz3B,MAAOd,EAAMc,MACbF,WAAYZ,EAAMY,WAClBk1B,eA5CO,WACrB6f,GAAgB,SAAA1yB,GAAO,OAAKA,MA4Cd4S,cAlDM,WACpB6f,GAAe,SAAAzyB,GAAO,OAAKA,aAwDzB,eAAC,EAAD,WACE,cAAC2yB,EAAD,IACA,cAAC,GAAD,CACEh1C,WAAYZ,EAAMY,WAClBu0C,eAAgBA,EAChBD,kBAAmB,kBAAMO,UAI7B,eAAC,EAAD,WACE,cAACG,EAAD,IACA,cAAC,GAAD,CACEh1C,WAAYZ,EAAMY,WAClBu0C,eAAgBA,EAChBD,kBAAmB,kBAAMO,a,qkBCxGnC,IAAMhuC,GAAK,SACNouC,KADM,IAETC,UAAW,EACX/wC,OAAO,SACF8wC,IAAa9wC,QADZ,IAEJC,QAAS,UACTgB,OAAQ,cAIN+vC,GAAgBl6C,IAAUC,SAASC,MAAMi6C,YACzCC,GAAgBp6C,IAAUC,SAASC,MAAMm6C,YAEzCC,IADoBt6C,IAAUC,SAASC,MAAMq6C,gBACnCv6C,IAAUC,SAASC,MAAMs6C,QACnCC,GAAgBz6C,IAAUC,SAASC,MAAMw6C,YACzCC,GAAmB36C,IAAUC,SAASC,MAAM06C,eAE5Cz6C,GAASH,IAAUC,SAASC,MAAMC,OAE3B4I,GAAoB8xC,0BAisBlBC,OA/rBf,SAAmC32C,GAEjC,MAAgCoL,mBAAS,MAAzC,WAAOwrC,EAAP,KAAiBC,EAAjB,KACA,EAAgDzrC,mBAAS,MAAzD,WAAO0rC,EAAP,KAAyBC,EAAzB,KACA,EAAwC3rC,oBAAS,GAAjD,WAAO4rC,EAAP,KAAqBC,EAArB,KACA,EAAoC7rC,mBAAS,MAA7C,WAAO8rC,EAAP,KAAmBC,EAAnB,KACA,EAAkD/rC,mBAAS,MAA3D,WAAOgsC,EAAP,KAA0BC,EAA1B,KAGA,EAA0BjsC,mBAAS,CAACzM,SAAU,GAAIC,SAAU,KAA5D,WAAOF,EAAP,KAAc44C,EAAd,KAMAC,MAGA,IAAMC,EAAgB,CACpBv6C,SAAU84C,GACV0B,OAAQ,CAAC,SAAU,UAAW,QAAS,kBACvCt6C,YAAau6C,cACb55C,SAAUm4C,GACV0B,cAAe,qCAAuC1B,GAAgB,SAOhE2B,EAAYC,YAAiBL,EAAcG,eACjD,EAAyCG,YACvC,CACE76C,SAAUu6C,EAAcv6C,SACxBw6C,OAAQD,EAAcC,OACtBt6C,YAAau6C,eAEfE,GANF,WAAOG,EAAP,KAA0BC,IAA1B,WAWIC,GAAgB,CACpBh7C,SAAUq5C,GACVmB,OAAQ,CAAC,SAAU,kBACnBt6C,YAAanB,IAETk8C,GAAe,CACnBC,sBAAwBhC,GAAU,0BAEpC,GAAkD2B,YAChD,CACE76C,SAAUg7C,GAAch7C,SACxBw6C,OAAQQ,GAAcR,OACtBW,aAAc,OACdj7C,YAAa86C,GAAc96C,YAC3Bk7C,YAAa,CACXpb,EAAGuZ,GACH8B,MAAO,eACPC,OAAQ,UAGZL,IAZF,aAAOM,GAAP,MAAgCC,IAAhC,aAgBMC,GAAoB,WACxB,MAA0BttC,oBAAS,GAAnC,WAAOutC,EAAP,KAAcC,EAAd,KASA,OAPAltC,qBAAU,WAEc,QADD9F,OAAOC,SAAS2yB,KAAKqgB,OAAOjzC,OAAOC,SAAS2yB,KAAK71B,OAAS,IAE7Ei2C,GAAS,KAEV,IAEAD,EAEC,eAAC14C,EAAA,EAAD,CAAMC,MAAO,CAAC+B,WAAW,UAAzB,UACE,cAAC0N,EAAA,EAAD,CACEwR,SAAU61B,EACVxsC,KAAK,YACL7J,QAASm4C,GACTz3C,MAAOy1C,EAAiBiC,YACxB74C,MAAO,CAACsB,SAAU,OAAQ+H,UAAW,OAAQmG,aAAc,QAL7D,+BASA,cAACpO,EAAA,EAAD,CACEpB,MAAO,CAACsB,SAAS,OAAQH,MAAO,UAAWO,UAAW,UACtDjB,QAAS,WAAOi4C,GAAS,IAF3B,qCAUF,eAAC34C,EAAA,EAAD,CAAMC,MAAO,CAAC+B,WAAW,UAAzB,UACE,cAAC0N,EAAA,EAAD,CACEwR,SAAU61B,EACVxsC,KAAK,YACL7J,QAASq4C,GACT33C,MAAOy1C,EAAiBiC,YACxB74C,MAAO,CAACsB,SAAU,OAAQ+H,UAAW,OAAQmG,aAAc,QAL7D,mBASA,cAACpO,EAAA,EAAD,CACEpB,MAAO,CAACsB,SAAS,OAAQH,MAAO,UAAWO,UAAW,UACtDjB,QAAS,WAAOi4C,GAAS,IAF3B,8CA2DFI,GAAW,8BAAAx8C,EAAAC,OAAA,uDAEfw6C,GAAgB,GAFD,WAAAz6C,EAAA,MAGci8C,MAHd,UAMc,aAHzBx5C,EAHW,QAMKvC,KANL,gBAOby6C,GAAc,GACdE,EAAqB,wFARR,0CAAA76C,EAAA,MAWYwC,EAAWC,EAAkBg5C,GAAeO,GAAWj8C,eAXnE,WAaa,WAFtB08C,EAXS,QAaG36C,MAbH,iBAeX64C,GAAc,GACdE,EAAqB4B,EAAapnB,SAhBvB,2CAAAr1B,EAAA,MAoBY2C,EAAY85C,IApBxB,aAoBPC,EApBO,QAsBG56C,MAtBH,iBAyBT64C,GAAc,GAEY,KAAvB+B,EAAWrnB,QACZwlB,EAAqB6B,EAAW38B,QAEhC86B,EAAqB,yBA9Bd,2CAAA76C,EAAA,MAuCHkJ,IAAayzC,QAAQ,wBAAyBt6C,KAAKC,UAAUo6C,KAvC1D,QA2CTrC,EAAYqC,GA3CH,QAoDfjC,GAAgB,GApDD,8DAyDX6B,GAAgB,8BAAAt8C,EAAAC,OAAA,uDACpBw6C,GAAgB,GADI,WAAAz6C,EAAA,MAGMw7C,MAHN,UAMM,aAHtB37C,EAHgB,QAMHK,KANG,gBAOlBy6C,GAAc,GACdE,EAAqB,wFARH,0CAAA76C,EAAA,MAWGJ,EAAaC,EAAem7C,EAAeO,EAAQx7C,eAXtD,eAWd68C,EAXc,mBAAA58C,EAAA,MAYK2C,EAAYi6C,IAZjB,aAYdF,EAZc,QAcJ56C,MAdI,iBAiBhB64C,GAAc,GACX+B,EAAWG,WACZhC,EAAqB6B,EAAWG,YAEhChC,EAAqB6B,GArBP,2CAAA18C,EAAA,MA8BVkJ,IAAayzC,QAAQ,wBAAyBt6C,KAAKC,UAAUo6C,KA9BnD,QAiChBrC,EAAYqC,GAjCI,QAuCpBjC,GAAgB,GAvCI,8DA4ChBqC,GAAkB,4BAAA98C,EAAAC,OAAA,uDACtBw6C,GAAgB,GADM,WAAAz6C,EAAA,MAGMiC,EAAWC,IAHjB,YAGlB66C,EAHkB,QAKHj7C,MALG,uBAMpB64C,GAAc,GACdE,EAAqBkC,EAAgBj7C,OAPjB,6CAAA9B,EAAA,MAWC2C,EAAYo6C,IAXb,aAWlBL,EAXkB,QAYR56C,MAZQ,iBAepB64C,GAAc,GACdE,EAAqB6B,GAhBD,2CAAA18C,EAAA,MAsBdkJ,IAAayzC,QAAQ,wBAAyBt6C,KAAKC,UAAUo6C,KAtB/C,QAyBpBrC,EAAYqC,GAzBQ,QA4BtBjC,GAAgB,GA5BM,8DAgCxBvrC,qBAAU,kCAAAlP,EAAAC,OAAA,uDAER8B,QAAQ4N,IAAI,sBAFJ,WAAA3P,EAAA,MAGgBkJ,IAAa8zC,QAAQ,gBAHrC,cAGJC,EAHI,OAMRl7C,QAAQ4N,IAAI,0CANJ,WAAA3P,EAAA,MAOekJ,IAAa8zC,QAAQ,0BAPpC,UAOJN,EAPI,OASJQ,EAAsB,MACvBD,EAVK,iBAWNC,EAAsB76C,KAAK0xB,MAAMkpB,GACjC1C,EAAoB2C,GAZd,2CAAAl9C,EAAA,MAcsB6C,KAdtB,eAcNq6C,EAdM,mBAAAl9C,EAAA,MAeAkJ,IAAayzC,QAAQ,cAAet6C,KAAKC,UAAU46C,KAfnD,QAgBN3C,EAAoB2C,GAhBd,YAoBLR,EApBK,oBAuBN36C,QAAQ4N,IAAI,yCACZ+sC,EAAar6C,KAAK0xB,MAAM2oB,IAGV56C,QAASiiB,mBAAQ24B,IAAgBtkC,OAAO+kC,OAAOT,EAAY,WA3BnE,wBA6BJ36C,QAAQ4N,IAAI,4EA7BR,YAAA3P,EAAA,MA8BEkJ,IAAaC,WAAW,0BA9B1B,eAgCJkxC,EAAY,MAhCR,YAAAr6C,EAAA,MAiC4B6C,KAjC5B,QAiCAq6C,EAjCA,OAkCJ3C,EAAoB2C,GAlChB,+BAsCJn7C,QAAQ4N,IAAI,iCACZ0qC,EAAYqC,GAEZ36C,QAAQ4N,IAAI,yBAzCR,YAAA3P,EAAA,MA0C0B2C,EAAY+5C,EAAWhxC,YA1CjD,WA0CA0xC,EA1CA,OA2CA3xB,mBAAQ2xB,EAAmBV,GA3C3B,wBA6CF36C,QAAQ4N,IAAI,8BAIZ0qC,EAAY,MAAI+C,IAjDd,YAAAp9C,EAAA,MAkDIkJ,IAAayzC,QAAQ,wBAAyBt6C,KAAKC,UAAU86C,KAlDjE,2BAAAp9C,EAAA,MA2DoB6C,KA3DpB,eA2DRq6C,EA3DQ,mBAAAl9C,EAAA,MA4DFkJ,IAAayzC,QAAQ,cAAet6C,KAAKC,UAAU46C,KA5DjD,eA6DR3C,EAAoB2C,GA7DZ,mBAiED,WACL3C,EAAoB2C,MAlEd,+DAqEP,IAIH,IAAMG,GAAY,WAChB,MAAoC,QAAjC/C,EAAiBgD,YAGhB,eAAC75C,EAAA,EAAD,CAAMC,MAAO,CACXgE,eAAgB,SAChBjC,WAAY,SACZqC,gBAAiBwyC,EAAiBiD,aAClC90C,OAAQ,SAJV,UAME,cAACG,EAAA,EAAD,CACEC,OAAQ,CAACC,IAAKwxC,EAAiBvxC,SAC/BrF,MAAO,CACLiF,MAAO,IACPF,OAAQ,MAGZ,cAAC0K,EAAA,EAAD,CACEwR,SAAU61B,EACVxsC,KAAK,YACL7J,QAASm4C,GACTz3C,MAAOy1C,EAAiBiC,YACxB74C,MAAO,CAACsB,SAAU,OAAQ+H,UAAW,OAAQmG,aAAc,QAL7D,mBASA,cAACuG,EAAA,EAAD,CACE7U,KAAK,QACLC,MAAOy1C,EAAiBiC,YACxB74C,MAAQ82C,EAAe,GAAK,CAACnlC,QAAQ,aAKH,QAAjCilC,EAAiBgD,YAEtB,eAAC75C,EAAA,EAAD,CAAMC,MAAO,CACXgE,eAAgB,SAChBjC,WAAY,SACZqC,gBAAiBwyC,EAAiBiD,aAClC90C,OAAQ,SAJV,UAME,cAACG,EAAA,EAAD,CACEC,OAAQ,CAACC,IAAKwxC,EAAiBvxC,SAC/BrF,MAAO,CACLiF,MAAO,IACPF,OAAQ,MAGZ,cAAC0K,EAAA,EAAD,CACEwR,SAAU61B,EACVxsC,KAAK,YACL7J,QAASq4C,GACT33C,MAAOy1C,EAAiBiC,YACxB74C,MAAO,CAACsB,SAAU,OAAQ+H,UAAW,OAAQmG,aAAc,QAL7D,mBASA,cAACuG,EAAA,EAAD,CACE7U,KAAK,QACLC,MAAOy1C,EAAiBiC,YACxB74C,MAAQ82C,EAAe,GAAK,CAACnlC,QAAQ,aAIH,YAAjCilC,EAAiBgD,YAGtB,eAAC75C,EAAA,EAAD,CAAMC,MAAO,CACXgE,eAAgB,SAChBjC,WAAY,SACZqC,gBAAiBwyC,EAAiBiD,aAClC90C,OAAQ,SAJV,UAME,cAACG,EAAA,EAAD,CACEC,OAAQ,CAACC,IAAKwxC,EAAiBvxC,SAC/BrF,MAAO,CACLiF,MAAO,IACPF,OAAQ,MAGZ,cAACyzC,GAAD,IACA,cAACziC,EAAA,EAAD,CACE7U,KAAK,QACLC,MAAOy1C,EAAiBiC,YACxB74C,MAAQ82C,EAAe,GAAK,CAACnlC,QAAQ,aAOzC,eAAC5R,EAAA,EAAD,CAAMC,MAAO,CACXgE,eAAgB,SAChBjC,WAAY,SACZqC,gBAAiBwyC,EAAiBiD,aAClC14C,MAAOy1C,EAAiBiC,YACxB9zC,OAAQ,SALV,UAOE,cAACG,EAAA,EAAD,CACEC,OAAQ,CAACC,IAAKwxC,EAAiBvxC,SAC/BrF,MAAO,CACLiF,MAAO,IACPF,OAAQ,MAGZ,cAAC8H,EAAA,EAAD,CACEhJ,MAAOrF,EAAMC,SACb6Q,aAAc,SAACjO,GACb,IAAIy4C,EAAWt7C,EACfs7C,EAASr7C,SAAW4C,EACpB+1C,EAAS0C,IAEXvvC,YAAa,WACbvK,MAAO,CACLoE,gBAAiBwyC,EAAiBiD,aAClCxwC,UAAW,QAEb9B,MAAO,CAAE1C,OAAQ,CAAExD,KAAMu1C,EAAiBiC,cAC1CkB,eAAgBnD,EAAiBiC,YACjCmB,YAAapD,EAAiBiC,YAC9BzmB,qBAAsBwkB,EAAiBiC,YACvCoB,qBAAsBrD,EAAiBiC,cAEzC,cAAChsC,EAAA,EAAD,CACEhJ,MAAOrF,EAAME,SACb4Q,aAAc,SAACjO,GACb,IAAIy4C,EAAWt7C,EACfs7C,EAASp7C,SAAW2C,EACpB+1C,EAAS0C,IAEXvvC,YAAa,WACb2vC,iBAAiB,EACjBl6C,MAAO,CACLoE,gBAAiBwyC,EAAiBiD,aAClCxwC,UAAW,QAEb9B,MAAO,CAAE1C,OAAQ,CAAExD,KAAMu1C,EAAiBiC,cAC1CkB,eAAgBnD,EAAiBiC,YACjCzmB,qBAAsBwkB,EAAiBiC,YACvCmB,YAAapD,EAAiBiC,YAC9BoB,qBAAsBrD,EAAiBiC,YACvCt5B,gBAAiB65B,KAEnB,cAAC3pC,EAAA,EAAD,CACEwR,SAAU61B,EACVxsC,KAAK,YACL7J,QAAS24C,GACTj4C,MAAOy1C,EAAiBiC,YACxB74C,MAAO,CAACsB,SAAU,OAAQ+H,UAAW,OAAQmG,aAAc,QAL7D,mBASA,cAACuG,EAAA,EAAD,CACE7U,KAAK,QACLC,MAAOy1C,EAAiBiC,YACxB74C,MAAQ82C,EAAe,GAAK,CAACnlC,QAAQ,cA4B/C,GAAGqlC,EACD,OACE,eAACj3C,EAAA,EAAD,CAAMC,MAAO,CACXgE,eAAgB,SAChBjC,WAAY,SACZqC,gBAAiBwyC,EAAiBiD,aAClC14C,MAAOy1C,EAAiBiC,YACxB9zC,OAAQ,SALV,UAOE,cAACG,EAAA,EAAD,CACEC,OAAQ,CAACC,IAAKwxC,EAAiBvxC,SAC/BrF,MAAO,CACLiF,MAAO,IACPF,OAAQ,GACRkR,cAAe,QAGnB,cAAC7U,EAAA,EAAD,CAAMpB,MAAO,CAACsB,SAAS,GAAI2U,cAAe,KAAM9U,MAAOy1C,EAAiBiC,aAAxE,mCAGA,cAACz3C,EAAA,EAAD,CAAMpB,MAAO,CAACsB,SAAS,GAAI2U,cAAe,KAAM9U,MAAOy1C,EAAiBiC,aAAxE,SACGl6C,KAAKC,UAAUs4C,KAElB,cAACznC,EAAA,EAAD,CACEnF,KAAK,YACL7J,QAAU,WAAOw2C,EAAc,MAAOF,GAAgB,IACtD51C,MAAOy1C,EAAiBiC,YACxB74C,MAAO,CAACsB,SAAU,OAAQ+H,UAAW,OAAQmG,aAAc,QAJ7D,sBAYN,GAAIknC,EAYC,CAMH,GAAGA,EAASt4C,OAASiiB,mBAAQq2B,GAC3B,OAAS,cAACiD,GAAD,IAGX,GAAGt5B,mBAAQq2B,EAASyD,YAAY3W,SAC5B,OACE,eAACzjC,EAAA,EAAD,CAAMC,MAAO,CACXgE,eAAgB,SAChBjC,WAAY,SACZgD,OAAQ,SAHV,UAKE,cAAC3D,EAAA,EAAD,kGAGA,cAACZ,EAAA,EAAD,CACEC,QAAU,oBAAAnE,EAAAC,OAAA,kEAAAD,EAAA,MACFkJ,IAAaC,WAAW,0BADtB,OAERC,OAAOC,SAASC,SAFR,6DAIV5F,MAAO,CAACqJ,UAAU,OAAQsI,QAAQ,OAAQ9P,cAAc,MAAOuC,gBAAiBwyC,EAAiBiC,YAAal3C,QAAS,MAAO+W,aAAc,QAL9I,SAOE,cAACtX,EAAA,EAAD,0BAQV,IAAMg5C,GAAQC,cACRj+C,GAASs6C,EAASyD,YAElBG,GAAU,CACdC,SAAU,CAACC,IAAkB,KAAM7+C,IAAUC,SAASC,MAAMC,QAC5DM,WAMF,OAFAs6C,EAAS3C,eAlGY,WACrB11C,QAAQ4N,IAAI,+BACZ0qC,EAAY,OAmGV,cAACjyC,GAAkBwtB,SAAnB,CAA4BruB,MAAO6yC,EAAnC,SACE,cAAC,IAAD,CAAenvC,MAAOA,GAAtB,SACE,cAACkzC,EAAA,EAAD,CACEH,QAASA,GACTI,SAAU,cAACt5C,EAAA,EAAD,yBACVu5C,cAAe,CACbC,UAAW,SAAC9yC,EAASlH,GAAV,OACTA,EAAMI,KAAKod,cAAgB,uBALjC,SAQE,cAACg8B,GAAMS,UAAP,CACEC,iBAAiB,OACjBC,cAAe,CACbC,aAAa,GAHjB,SASItE,EAAS3V,QAAQ1gC,KAAI,SAACg4B,EAAQ93B,GAE5B,OACE,cAAC65C,GAAM9G,OAAP,CAEEtyC,KAAMq3B,EAAO71B,IACbi8B,UAAWyW,IAFN30C,cAhFrB,OAAIq2C,EAMO,cAAC+C,GAAD,IAJF,eA3DO,WAClB,OACI,cAAC55C,EAAA,EAAD,CAAMC,MAAO,CACXgE,eAAgB,SAChBjC,WAAY,SACZgD,OAAQ,SAHV,SAKE,cAACgR,EAAA,EAAD,CAAmB7U,KAAK,QAAQC,MAAM,gBAoDjC,KCtnBA,SAAS85C,KAEtB,OAEE,cAAC,GAAD,M,kLCRJ,IAAIC,EAAM,EAAQ,KACF/hB,EAAU,EAAQ,KAIC,kBAFvBA,EAAUA,EAAQgiB,WAAahiB,EAAQiiB,QAAUjiB,KAG/CA,EAAU,CAAC,CAACd,EAAOzpB,EAAIuqB,EAAS,MAG9C,IAAIrxB,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEPozC,EAAI/hB,EAASrxB,GAI1BuwB,EAAOgjB,QAAUliB,EAAQmiB,QAAU,I,qBChBnCD,EADkC,EAAQ,IAChCE,EAA4B,IAE9B/9C,KAAK,CAAC66B,EAAOzpB,EAAI,+IAAgJ,KAEzKypB,EAAOgjB,QAAUA,G,oBCNjB,IAAIH,EAAM,EAAQ,KACF/hB,EAAU,EAAQ,KAIC,kBAFvBA,EAAUA,EAAQgiB,WAAahiB,EAAQiiB,QAAUjiB,KAG/CA,EAAU,CAAC,CAACd,EAAOzpB,EAAIuqB,EAAS,MAG9C,IAAIrxB,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEPozC,EAAI/hB,EAASrxB,GAI1BuwB,EAAOgjB,QAAUliB,EAAQmiB,QAAU,I,qBChBnCD,EADkC,EAAQ,IAChCE,EAA4B,IAE9B/9C,KAAK,CAAC66B,EAAOzpB,EAAI,myEAAwyE,KAEj0EypB,EAAOgjB,QAAUA,I","file":"static/js/app.07f69bf0.chunk.js","sourcesContent":["import Constants from 'expo-constants';\n\n\n//Variables needed\nconst loginUrl = Constants.manifest.extra.webUrl + '/login';\nconst b2cLoginUrl = Constants.manifest.extra.webUrl + '/login/b2c';\nconst basicLoginUrl = Constants.manifest.extra.webUrl + '/login/basic';\nconst loginDisplayInfoUrl = Constants.manifest.extra.webUrl + '/login/display';\n\n\n// TODO REDO SSO\n//Initiates popup and logs in\n//Then initiates getAuthToken if successful\nexport const getAzureInfo = async(loginResponse, config, codeVerifier) => {\n\n if(loginResponse.type === 'success'){\n\n return getAuthToken(loginResponse.params.code, config, codeVerifier);\n\n }else{\n return {\n \"error\": \"Authentication unsuccessful\",\n ...loginResponse\n }\n }\n}\n\nconst getAuthToken = async(code, config, codeVerifier) => {\n\n //Get Params for URL\n let tokenParameters = {\n client_id: config.clientId,\n //scope: config.scopes,\n code: code,\n redirect_uri: config.redirectUri,\n grant_type: 'authorization_code',\n code_verifier: codeVerifier\n }\n\n //Create request body\n let requestBody = [];\n for (let param in tokenParameters) {\n let encodedKey = encodeURIComponent(param);\n let encodedValue = encodeURIComponent(tokenParameters[param]);\n requestBody.push(encodedKey + '=' + encodedValue);\n }\n requestBody = requestBody.join('&');\n\n //Send request to MS for User Info\n let tokenResponse = null;\n await fetch('https://login.microsoftonline.com/'+config.tenantId+'/oauth2/v2.0/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: requestBody,\n })\n .then((response) => response.json())\n .then((response) => {\n tokenResponse = response;\n })\n .catch((error) => {\n console.error(error);\n });\n\n //return await getUserInfo(tokenResponse.access_token);\n return tokenResponse.access_token;\n\n}\n\nexport const basicLogin = async(creds) => {\n\n let body = {\n \"username\": creds.username,\n \"password\": creds.password\n };\n\n let tokenResponse = null;\n await fetch(basicLoginUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(body),\n })\n .then((response) => response.json())\n .then((response) => {\n if(response.error){\n tokenResponse = response;\n }else{\n tokenResponse = response.token;\n }\n })\n .catch((error) => {\n tokenResponse = error;\n });\n\n return tokenResponse;\n}\n\nexport const getB2CUser = async(b2cLoginResponse, config, codeVerifier) => {\n\n let tokenResponse = null;\n\n await fetch(b2cLoginUrl, {\n method: 'POST',\n credentials: 'same-origin',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n b2cLoginResponse: b2cLoginResponse,\n codeVerifier: codeVerifier,\n redirectUri: config.redirectUri,\n })\n })\n .then((response) => response.json())\n .then((json) => {\n if(json.error){\n tokenResponse = json;\n }else{\n tokenResponse = json.token;\n }\n })\n .catch((error) => {\n tokenResponse = error;\n });\n\n return tokenResponse;\n\n}\n\nexport const getUserInfo = async(token) => {\n\n let powerforceLoginResponse = null;\n await fetch(loginUrl, {\n method: 'GET',\n credentials: 'same-origin',\n headers: {\n 'X-AUTH-TOKEN': token,\n }\n })\n .then((response) => response.json())\n .then((json) => {\n powerforceLoginResponse = json;\n })\n .catch((error) => {\n powerforceLoginResponse = error;\n });\n\n return powerforceLoginResponse;\n}\n\nexport const getLoginDisplayInfo = async() => {\n\n let loginDisplayInfoResponse = null;\n await fetch(loginDisplayInfoUrl, {\n method: 'GET',\n credentials: 'same-origin',\n })\n .then((response) => response.json())\n .then((json) => {\n loginDisplayInfoResponse = json;\n })\n .catch((error) => {\n loginDisplayInfoResponse = error;\n });\n\n return loginDisplayInfoResponse;\n}\n\n\n","import {useMediaQuery} from \"react-responsive\";\n\n\nexport const Desktop = ({ children }) => {\n const isDesktop = useMediaQuery({ minWidth: 992 })\n return isDesktop ? children : null\n}\nexport function isDesktop(){\n return useMediaQuery({minWidth: 992});\n}\n\nexport const Tablet = ({ children }) => {\n const isTablet = useMediaQuery({ minWidth: 768, maxWidth: 991 })\n return isTablet ? children : null\n}\nexport const Mobile = ({ children }) => {\n const isMobile = useMediaQuery({ maxWidth: 767 })\n return isMobile ? children : null\n}\nexport const Default = ({ children }) => {\n const isNotMobile = useMediaQuery({ minWidth: 768 })\n return isNotMobile ? children : null\n}\n","import * as React from 'react';\nimport {Pressable, Text, StyleSheet} from 'react-native';\nimport {View, Image} from \"react-native-web\";\nimport { Feather } from '@expo/vector-icons';\nimport {Desktop, Tablet, Mobile } from '../../helpers/responsive'\n\n\n\n\nconst SimpleNav = (props) => {\n\n return (\n\n\n \n\n {\n props.navItems.map((navItem, index) => {\n return(\n props.navigation.navigate(navItem.route, { screenName: navItem.screen})}\n style={styles.navItem}\n key={index}\n nativeID={'topnav-'+navItem.route}\n >\n \n \n {navItem.text}\n \n\n \n \n {navItem.text}\n \n\n \n \n {navItem.text}\n \n\n \n )\n })\n }\n\n \n\n\n )\n\n}\n\nexport default SimpleNav;\n\nconst styles = StyleSheet.create({\n navItem: {\n textAlign:'center',\n padding: '10px',\n flex: 1\n },\n navBar: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n flex: 8,\n alignItems: \"center\"\n },\n mobileNavText: {\n color:'#ffffff',\n fontSize: 9,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n },\n});\n","import * as React from 'react';\nimport {Pressable, Text, StyleSheet} from 'react-native';\nimport {View, Image} from \"react-native-web\";\nimport { Avatar } from 'react-native-paper';\nimport { Feather } from '@expo/vector-icons';\nimport {useContext} from \"react\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\nimport {Picker} from \"@react-native-picker/picker\";\nimport SimpleNav from \"./SimpleNav\";\nimport {Desktop, Tablet, Mobile } from '../../helpers/responsive'\n\n\n\n\nconst MultiNav = (props) => {\n\n //const powerforce = useContext(PowerforceContext);\n //const [companies, setCompanies] = React.useState(powerforce.companies ? powerforce.companies : []);\n\n const currentNav = () => {\n let routes = props.navigation.getState().routes;\n let lastRouteKey = routes.length - 1;\n let url = routes[lastRouteKey].name;\n let currentCompany = props.companies.find(x => url.includes(x.url))\n if(currentCompany === undefined){\n return '';\n }\n return currentCompany;\n }\n\n React.useEffect(() => {\n setSelectedCompany(currentNav())\n }, [props])\n\n const [selectedCompany, setSelectedCompany] = React.useState('');\n\n const navItems = (companyUrl) => {\n if(!companyUrl){\n return [];\n }\n if(companyUrl === 'eag-'){\n companyUrl = 'eag';\n }\n let result = props.navItems.filter((navItem) => navItem.route.includes(companyUrl + '-'));\n return result;\n }\n\n return (\n \n \n {\n let company = props.companies.find(x => x.title === itemValue)\n setSelectedCompany(company)\n }}\n >\n \n\n {props.companies.map(company => {\n return()\n })}\n\n \n \n\n\n\n \n\n\n \n )\n\n}\n\nexport default MultiNav;\n\nconst styles = StyleSheet.create({\n logoContainer: {\n flex: 2,\n alignItems: \"flex-start\",\n justifyContent: 'left',\n },\n navItem: {\n textAlign:'center',\n padding: '10px',\n flex: 1\n },\n navBar: {\n flexDirection: \"row\",\n flex: 8,\n alignItems: \"center\"\n },\n userArea: {\n flex: 2,\n flexDirection: \"row\",\n justifyContent: 'right',\n alignItems: \"center\"\n },\n notifications: {\n paddingRight: '20px',\n },\n picker : {\n backgroundColor: 'rgb(0, 38, 77)',\n color: '#fff',\n padding: '10px',\n paddingRight: '0px',\n borderColor: 'white',\n marginLeft: '10px',\n minWidth: '140px'\n }\n});\n","import * as React from 'react';\nimport {Pressable, Text, StyleSheet} from 'react-native';\nimport {View, Image} from \"react-native-web\";\nimport { Avatar } from 'react-native-paper';\nimport { Feather } from '@expo/vector-icons';\nimport {useContext} from \"react\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\nimport SimpleNav from \"./SimpleNav\";\nimport MultiNav from \"./MultiNav\";\n\n\n\n\nconst TopNavigationBar = (props) => {\n\n const powerforce = useContext(PowerforceContext);\n\n if (!props.showTopMenu) {\n return null;\n }\n\n const navPicker = () => {\n\n if(powerforce.companies && powerforce.companies.length > 1){\n return \n }\n return ;\n }\n\n return (\n \n\n \n \n \n \n \n\n \n\n {navPicker()}\n\n \n\n \n {\n await AsyncStorage.removeItem('foundationsUserConfig');\n window.location.reload();\n } }\n >\n \n \n\n {\n props.navigation.navigate('settings', { screenName: 'release-notes'})\n } }\n >\n \n \n\n \n \n\n\n \n )\n\n}\n\nexport default TopNavigationBar;\n\nconst styles = StyleSheet.create({\n logoContainer: {\n flex: 2,\n alignItems: \"flex-start\",\n justifyContent: 'left',\n },\n navItem: {\n textAlign:'center',\n padding: '10px',\n flex: 1\n },\n navBar: {\n flexDirection: \"row\",\n flex: 8,\n alignItems: \"center\"\n },\n userArea: {\n flex: 2,\n flexDirection: \"row\",\n justifyContent: 'right',\n alignItems: \"center\"\n },\n notifications: {\n paddingRight: '20px',\n }\n});\n","import * as React from 'react';\nimport {Text, StyleSheet, View} from 'react-native';\nimport {ScrollView} from \"react-native\";\nimport { List } from 'react-native-paper';\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {useContext} from \"react\";\nimport {useMediaQuery} from \"react-responsive\";\n\n\nconst SideNavigationBar = (props) => {\n\n const powerforce = useContext(PowerforceContext);\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 1224px)' })\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' })\n\n const styles = StyleSheet.create({\n sideNav: {\n backgroundColor: powerforce.colors.secondary,\n height: '100%',\n minHeight: isTabletOrMobile ? 'calc(100vh - 57px)' : '90vh',\n maxHeight: isTabletOrMobile ? 'calc(100vh - 57px)' : '90vh',\n maxWidth: isMobile ? '90%' : '250px',\n width: isMobile ? '350px' : 'auto',\n paddingTop: '10px'\n },\n accordion: {\n backgroundColor: powerforce.colors.primary,\n color: '#ffffff',\n //marginBottom: '10px'\n },\n accordionTitle: {\n color: '#ffffff',\n },\n listItem: {\n backgroundColor: powerforce.colors.primary,\n },\n listItemTitle: {\n paddingLeft: '20px',\n color: '#ffffff',\n fontSize: '14px'\n },\n bigListItem: {\n backgroundColor: powerforce.colors.primary,\n //marginBottom: '10px'\n },\n bigListItemTitle: {\n color: '#ffffff',\n }\n });\n\n\n /*let sideNavFakeValue = [\n {\n title: 'Something 1',\n moduleUrl: 'eag-admin',\n screenUrl: 'companies',\n subNav: []\n },\n {\n title: 'Something 2',\n moduleUrl: 'eag-admin',\n screenUrl: 'companies',\n subNav: []\n },\n {\n title: 'Dropdown',\n moduleUrl: null,\n screenUrl: null,\n subNav: [\n {\n title: 'Sub 1',\n moduleUrl: 'eag-admin',\n screenUrl: 'companies',\n },\n {\n title: 'Sub 2',\n moduleUrl: 'eag-admin',\n screenUrl: 'companies',\n },\n ]\n }\n ];*/\n\n if (!props.showSideMenu) {\n return null;\n }\n\n if (!props.sideNavItems) {\n return Loading...\n }\n\n if (props.sideNavItems.length > 1\n || (props.sideNavItems[0].subNav && props.sideNavItems[0].subNav.length !== 0)\n ) {\n\n return (\n \n\n {\n props.sideNavItems.map((navitem, index) => {\n //sideNavFakeValue.map((navitem, index) => {\n if ('subNav' in navitem && navitem.subNav.length > 0) {\n //Accordion\n return (\n \n {navitem.subNav.map((subNavItem, subIndex) => {\n return (\n props.navigation.navigate(\n subNavItem.moduleUrl,\n {\n screenName: subNavItem.screenUrl,\n //recordID: undefined, //Trick to reload grid\n //tableName: null,\n }\n )}\n titleStyle={styles.listItemTitle}\n style={styles.listItem}\n titleNumberOfLines={0}\n />\n )\n })\n\n }\n \n )\n } else {\n // Not An Accordion\n return (\n props.navigation.navigate(\n navitem.moduleUrl,\n {\n screenName: navitem.screenUrl ? navitem.screenUrl : navitem.url,\n //recordID: null, //Trick to reload grid\n //tableName: null,\n }\n )}\n titleStyle={styles.bigListItemTitle}\n style={styles.bigListItem}\n titleNumberOfLines={0}\n />\n )\n }\n\n })\n }\n\n \n )\n }else{\n return ;\n }\n\n}\n\nexport default SideNavigationBar;\n\n\n","import React from \"react\";\n\nfunction fetchJson(url, options) {\n return fetch(url, Object.assign({\n credentials: 'same-origin',\n }, options))\n .then(response => {\n return response.json();\n });\n}\n\nexport function getData(url, authToken = null, signal = null){\n\n return fetchJson(url, {\n method: 'GET',\n headers: {\n 'Accept' : \"application/json\",\n 'X-AUTH-TOKEN': authToken,\n },\n signal: signal\n })\n}\n\nexport function patchData(url, authToken = null, values){\n\n let body = JSON.stringify(values);\n return fetchJson(url, {\n method: 'PATCH',\n body: body,\n headers: {\n 'Accept' : \"application/json\",\n 'Content-Type': \"application/merge-patch+json\",\n 'X-AUTH-TOKEN': authToken,\n }\n })\n}\n\nexport function postData(url, authToken = null, values){\n\n let body = JSON.stringify(values);\n return fetchJson(url, {\n method: 'POST',\n body: body,\n headers: {\n 'Accept' : \"application/json\",\n 'Content-Type': \"application/json\",\n 'X-AUTH-TOKEN': authToken,\n }\n })\n}\n\nexport function deleteData(url, authToken = null, values){\n\n let body = JSON.stringify(values);\n return fetchJson(url, {\n method: 'DELETE',\n body: body,\n headers: {\n 'Accept' : \"application/json\",\n 'Content-Type': \"application/json\",\n 'X-AUTH-TOKEN': authToken,\n }\n })\n}\n\n","import {View} from \"react-native-web\";\nimport {Pressable, StyleSheet} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\nimport * as React from \"react\";\nimport {Divider, Menu} from \"react-native-paper\";\n\n\nexport const GridControls = (props) => {\n\n const [filters, setFilters] = React.useState(props.filters);\n const [filterMenuVisible, setFilterMenuVisible] = React.useState(false);\n\n const clickFilterMenu = () => {\n if(filters.length > 0){\n setFilterMenuVisible(true);\n }else{\n props.onFilter()\n }\n };\n\n const closeFilterMenu = () => setFilterMenuVisible(false);\n\n const [editText, setEditText] = React.useState(props.activeFilter.title ? 'Edit ' + props.activeFilter.title + ' Filter' : \"Edit Filter\");\n\n //Props change\n React.useEffect(() => {\n setEditText(props.activeFilter.title ? 'Edit ' + props.activeFilter.title + ' Filter' : \"Edit Filter\")\n }, [props]);\n\n const editActiveFilterButton = () => {\n if(props.activeFilter.title){\n return(\n {\n props.onSelectFilter('edit')\n closeFilterMenu()\n }}\n title={editText}\n />\n )\n }\n }\n\n const AddButton = () => {\n if(props.canCreate){\n return (\n props.onAdd()}\n style={styles.gridButton}\n dataSet={{'code': 'grid_add_button'}}\n >\n \n \n );\n }\n return null;\n }\n\n if(props.permission === 'write'){\n return(\n \n\n\n\n {\n clickFilterMenu()\n }}\n style={styles.gridButton}\n >\n \n \n }\n style={{\n marginTop: '33px'\n }}\n >\n {\n props.onSelectFilter(null)\n closeFilterMenu()\n }}\n titleStyle={{fontStyle:'italic'}}\n title=\"Filter Off\"\n />\n\n {filters.map(filter => {\n return(\n {\n props.onSelectFilter(filter)\n closeFilterMenu()\n }}\n />\n )\n })}\n\n \n\n {editActiveFilterButton()}\n\n {\n props.onSelectFilter('create')\n closeFilterMenu()\n }}\n title={\"Create New Filter\"}\n />\n\n \n\n props.onDownload()}\n style={styles.gridButton}\n >\n \n \n\n {/* TODO Revisit upload functionality with error handling\n props.onUpload()}\n style={styles.gridButton}\n >\n \n \n */}\n\n \n \n )\n }\n\n if(props.permission === 'read'){\n return(\n \n\n props.onFilter()}\n style={styles.gridButton}\n >\n \n \n\n props.onDownload()}\n style={styles.gridButton}\n >\n \n \n\n \n )\n }\n\n}\n\n\nconst styles = StyleSheet.create({\n gridButton: {\n padding: '10px',\n }\n});\n\n","import { ScrollView, View, } from \"react-native\";\nimport { Checkbox, Divider, Menu, TextInput, TouchableRipple, useTheme, } from \"react-native-paper\";\nimport React, { forwardRef, useEffect, useState, useCallback, Fragment, } from \"react\";\nimport {isString} from 'lodash';\n\nconst MultiDropDown = forwardRef((props, ref) => {\n const activeTheme = useTheme();\n const { multiSelect = false, visible, onDismiss, showDropDown, value, setValue, activeColor, mode, label, placeholder, inputProps, list, dropDownContainerMaxHeight, dropDownContainerHeight, theme, dropDownStyle, dropDownItemStyle, dropDownItemSelectedStyle, dropDownItemTextStyle, dropDownItemSelectedTextStyle, accessibilityLabel, } = props;\n const [displayValue, setDisplayValue] = useState(\"\");\n const [inputLayout, setInputLayout] = useState({\n height: 0,\n width: 0,\n x: 0,\n y: 0,\n });\n\n const onLayout = (event) => {\n setInputLayout(event.nativeEvent.layout);\n };\n\n useEffect(() => {\n if (multiSelect) {\n if(value){\n const _labels = list\n .filter((_) => value.indexOf(_.value) !== -1)\n .map((_) => _.label)\n .join(\", \");\n\n setDisplayValue(_labels);\n }\n }\n else {\n const _label = list.find((_) => _.value === value)?.label;\n if (_label) {\n setDisplayValue(_label);\n }\n }\n }, [list, value]);\n\n const isActive = useCallback((currentValue) => {\n if (multiSelect) {\n if(value){\n return value.indexOf(currentValue) !== -1;\n }else{\n //setValue([]);\n return false;\n }\n }\n else {\n return value === currentValue;\n }\n }, [value]);\n\n const setActive = useCallback((currentValue) => {\n if (multiSelect) {\n console.log('currentValue', currentValue);\n console.log('value', value);\n\n //For starting off blank\n let valueIndex = -1;\n if(value === undefined){\n setValue(currentValue);\n }else{\n valueIndex = value.indexOf(currentValue);\n }\n\n console.log('valueIndex', valueIndex);\n\n if (valueIndex === -1) {\n //Add\n if(value === undefined || value.length === 0){\n setValue([currentValue].join(\",\"));\n }else{\n setValue([value, currentValue].join(\",\"));\n }\n\n }\n else {\n //Remove\n console.log(value);\n let newValue = value;\n if(isString(newValue)){\n console.log('newValue is a string!');\n newValue = newValue.substring(0).split(\",\")\n }\n newValue = newValue.filter((value) => value != currentValue).join(\",\");\n console.log(newValue);\n setValue(newValue);\n }\n\n }\n else {\n setValue(currentValue);\n }\n }, [value]);\n\n return (\n onDismiss(value)}\n theme={theme}\n anchor={\n \n \n }\n {...inputProps}\n />\n \n \n }\n style={{\n maxWidth: inputLayout?.width,\n width: inputLayout?.width,\n marginTop: inputLayout?.height,\n ...dropDownStyle,\n }}\n >\n \n {list.map((_item, _index) => (\n console.log(_item)}\n /*onPress={(e) => {\n console.log('ripplePress', e);\n setActive(_item.value);\n if (onDismiss) {\n console.log('dismiss ripplePress');\n onDismiss();\n }\n }}*/\n >\n \n {\n console.log('item press')\n setActive(_item.value)\n //if(!multiSelect) { setActive(_item.value)}\n }}\n />\n {multiSelect &&\n ( setActive(_item.value)}\n />)\n }\n \n \n \n ))}\n \n \n );\n});\nexport default MultiDropDown;\n","import {View} from \"react-native-web\";\nimport {Pressable, StyleSheet, Text} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\nimport * as React from \"react\";\nimport {Button, Dialog, Portal, TextInput} from \"react-native-paper\";\nimport MultiDropDown from \"./IndividualRecord/MultiDropDown\";\nimport {debounce } from \"lodash\";\n\n\nexport const FilterPopup = (props) => {\n\n //State for Filter popup\n const [isFilterPopupVisible, setIsFilterPopupVisible] = React.useState(props.visible);\n\n //For Changing Props\n React.useEffect(() => {\n setIsFilterPopupVisible(props.visible);\n setRowData(props.filterData.rowData ? props.filterData.rowData : []);\n setTitle(props.filterData.title ? props.filterData.title : 'Unnamed Filter')\n }, [props]);\n\n const showFilterPopup = () => setIsFilterPopupVisible(true);\n const hideFilterPopup = () => {\n setIsFilterPopupVisible(false);\n setRowData([]);\n props.onClose();\n }\n\n const [matchConditionText, setMatchConditionText] = React.useState(props.filterData.matchConditionText ? props.filterData.matchConditionText : 'all conditions');\n const changeMatchConditionText = () => {\n if(matchConditionText === 'all conditions'){\n setMatchConditionText('at least one condition');\n }else{\n setMatchConditionText('all conditions');\n }\n };\n\n const [rowData, setRowData] = React.useState(props.filterData.rowData ? props.filterData.rowData : []);\n const [title, setTitle] = React.useState(props.filterData.title ? props.filterData.title : 'Unnamed Filter');\n const changeTitle = (newTitle) => {\n setTitle(newTitle)\n }\n const debounceChangeTitle = debounce(changeTitle, 500)\n\n function removeFilterDataRow(rowToRemoveId){\n let newRowData = rowData;\n newRowData.splice(rowToRemoveId, 1);\n setRowData([...newRowData])\n }\n\n function addFilterDataRow(selectedColumn){\n let newRowData = rowData;\n newRowData.push({column: selectedColumn});\n setRowData([...newRowData])\n }\n\n function editFilterDataRow(rowId, key, newValue){\n let newRowData = rowData;\n\n newRowData[rowId][key] = newValue;\n\n setRowData([...newRowData])\n\n }\n\n function saveAndApplyFilter(){\n\n let newFilterData = {\n title: title,\n matchConditionText: matchConditionText,\n query: createFilterQueryFromValues(),\n rowData: rowData\n }\n\n if(props.filterData.id){\n newFilterData.id = props.filterData.id;\n }\n\n props.saveAndApplyFilter(newFilterData);\n hideFilterPopup();\n }\n\n function deleteFilter(){\n\n let newFilterData = {\n title: title,\n matchConditionText: matchConditionText,\n query: createFilterQueryFromValues(),\n rowData: rowData\n }\n\n if(props.filterData.id){\n newFilterData.id = props.filterData.id;\n }\n\n hideFilterPopup()\n props.deleteFilter(newFilterData)\n }\n\n function createFilterQueryFromValues(){\n let filterQuery = 'SELECT * FROM ? WHERE ';\n let i = 1;\n rowData.map(filter => {\n\n if(filter.operation === 'is blank'){\n filterQuery += filter.column + ' IS NULL';\n }\n\n if(filter.operation === 'is not blank'){\n filterQuery += filter.column + ' IS NOT NULL';\n }\n\n if(filter.operation === 'is equal to'){\n filterQuery += filter.column + ' = ' + '\"'+filter.value+'\"';\n }\n\n if(filter.operation === 'is not equal to'){\n filterQuery += filter.column + ' != ' + filter.value;\n }\n\n if(filter.operation === 'is greater than'){\n filterQuery += filter.column + ' > ' + filter.value;\n }\n\n if(filter.operation === 'is greater than or equal to'){\n filterQuery += filter.column + ' >= ' + filter.value;\n }\n\n if(filter.operation === 'is less than'){\n filterQuery += filter.column + ' < ' + filter.value;\n }\n\n if(filter.operation === 'is less than or equal to'){\n filterQuery += filter.column + ' <= ' + filter.value;\n }\n\n if(filter.operation === 'is between'){\n filterQuery += filter.column + ' BETWEEN ' + filter.value + ' AND ' + filter.value2;\n }\n\n if(filter.operation === 'is not between'){\n filterQuery += filter.column + ' NOT BETWEEN ' + filter.value + ' AND ' + filter.value2;\n }\n\n if(filter.operation === 'is a number'){\n filterQuery += filter.column + ' NOT LIKE \"%[^0-9]%\"';\n }\n\n if(filter.operation === 'is not a number'){\n filterQuery += filter.column + ' LIKE \"%[^0-9]%\"';\n }\n\n if(filter.operation === 'contains'){\n filterQuery += filter.column + ' LIKE ' + '\"%'+filter.value+'%\"';\n }\n\n if(filter.operation === 'does not contain'){\n filterQuery += ' NOT '+ filter.column + ' LIKE ' + '\"%'+filter.value+'%\"';\n }\n\n //Put AND or OR after all statements except the last filter\n if(i !== rowData.length){\n if(matchConditionText === 'all conditions'){\n filterQuery += ' AND ';\n }else{\n filterQuery += ' OR ';\n }\n }\n\n i++;\n })\n\n return filterQuery;\n\n }\n\n return (\n\n \n \n Filter Editor\n \n debounceChangeTitle(text)}\n />\n\n \n \n Show rows that match\n \n {matchConditionText}\n \n\n {\n rowData.map((rowDatum, index) => {\n return (\n \n editFilterDataRow(index, 'column', data)}\n changeOperation={(data) => editFilterDataRow(index, 'operation', data)}\n changeValue={(data) => editFilterDataRow(index, 'value', data)}\n changeValue2={(data) => editFilterDataRow(index, 'value2', data)}\n />\n \n removeFilterDataRow(index)}\n >\n \n \n \n \n )\n })\n }\n\n \n \n \n\n\n \n\n \n\n deleteFilter()}\n style={styles.button}\n mode={'contained'}\n >\n \n \n\n hideFilterPopup()}\n style={styles.button}\n mode={'contained'}\n >\n Cancel\n \n\n saveAndApplyFilter()}\n style={styles.button}\n mode={'contained'}\n >\n Apply\n \n\n \n\n \n \n\n )\n\n}\n\nconst ConditionRow = (props) => {\n\n /**\n * Operation Value\n */\n const [operationValueType, setOperationValueType] = React.useState(props.rowData.operation ? changeOperationsValue(props.rowData.operation) : 'none');\n\n const operationValue = (value, value2) => {\n if(operationValueType === 'none'){\n return(\n \n )\n }\n\n if(operationValueType === 'text'){\n return(\n { debounceChangeValue(text)} }\n />\n )\n }\n\n if(operationValueType === 'doubleText'){\n return(\n \n { debounceChangeValue(text)} }\n />\n { debounceChangeValue2(text)} }\n />\n \n )\n }\n\n if(operationValueType === 'dropdown'){\n return(\n \n )\n }\n\n }\n\n /**\n * Lists\n */\n\n const operationList = [\n //{label:'is one of', value:'is one of'},\n //{label:'is not one of', value:'is not one of'},\n {label:'is blank', value:'is blank'},\n {label:'is not blank', value:'is not blank'},\n {label:'is equal to', value:'is equal to'},\n {label:'is not equal to', value:'is not equal to'},\n {label:'is greater than', value:'is greater than'},\n {label:'is greater than or equal to', value:'is greater than or equal to'},\n {label:'is less than', value:'is less than'},\n {label:'is less than or equal to', value:'is less than or equal to'},\n {label:'is between', value:'is between'},\n {label:'is not between', value:'is not between'},\n {label:'is a number', value:'is a number'},\n {label:'is not a number', value:'is not a number'},\n {label:'contains', value:'contains'},\n {label:'does not contain', value:'does not contain'},\n ]\n\n\n const columnList = () => {\n\n let list = [];\n props.columns.map(column => {\n list.push({label: column, value: column})\n })\n return list;\n }\n\n /**\n * Changing Values\n */\n const changeColumn = (newColumn) => {\n props.changeColumn(newColumn)\n }\n\n const changeValue = (newValue) => {\n props.changeValue(newValue)\n }\n const debounceChangeValue = debounce(changeValue, 500)\n\n const changeValue2 = (newValue) => {\n props.changeValue2(newValue)\n }\n const debounceChangeValue2 = debounce(changeValue2, 500)\n\n const changeOperation = (newOperation) => {\n setOperationValueType(changeOperationsValue(newOperation));\n props.changeOperation(newOperation)\n }\n\n function changeOperationsValue(newOperation){\n if(\n newOperation === 'is blank' ||\n newOperation === 'is not blank' ||\n newOperation === 'is a number' ||\n newOperation === 'is not a number'\n ){\n return 'none';\n }\n\n if(\n newOperation === 'is between' ||\n newOperation === 'is not between'\n ){\n return 'doubleText';\n }\n\n return 'text';\n }\n\n /**\n * Display\n */\n return(\n \n \n \n \n\n \n \n \n\n \n {operationValue(props.rowData.value)}\n \n\n \n )\n\n}\n\nconst ConditionRowCreator = (props) => {\n\n /**\n * Changing Values\n */\n const changeColumn = (newValue) => {\n setValue('');\n props.onColumnSelection(newValue)\n }\n\n /**\n * Display\n */\n const [value, setValue] = React.useState('');\n\n return(\n \n \n changeColumn(newValue)}\n />\n \n\n \n \n \n\n \n \n \n\n \n )\n\n}\n\nconst FilterDropdown = (props) => {\n\n const [visible, setVisible] = React.useState(false);\n const [value, setValue] = React.useState(props.value);\n\n return (\n setVisible(true)}\n onDismiss={() => setVisible(false)}\n value={value}\n setValue={(newVal) => {\n if(!props.creator){\n setValue(newVal)\n }\n setVisible(false)\n if(props.onValueChange){\n props.onValueChange(newVal)\n }\n }}\n list={props.list}\n />\n )\n\n}\n\n\n//Used for creating dropdown lists based on column headers\nfunction createColumnList(columnArray){\n let list = [];\n columnArray.map(column => {\n list.push({label: column, value: column})\n })\n return list;\n}\n\n\n\n\nconst styles = StyleSheet.create({\n button: {\n marginLeft: '10px',\n },\n row: {\n display:'flex',\n flexGrow: 10,\n flexDirection:'row',\n alignContent:'center',\n paddingTop:'20px'\n },\n column: {\n width:'32%',\n marginRight: '1%'\n }\n});\n","\nexport function getIdfromApiString(apiString){\n\n}\n\nexport function randomKey(max){\n let text = \"\";\n let possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (let i = 0; i < max; i++)\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n\n return text;\n}\n\n\nfunction padTo2Digits(num) {\n return num.toString().padStart(2, '0');\n}\n\nexport function formatDate(date) {\n return (\n [\n date.getFullYear(),\n padTo2Digits(date.getMonth() + 1),\n padTo2Digits(date.getDate()),\n ].join('-') +\n 'T' +\n [\n padTo2Digits(date.getHours()),\n padTo2Digits(date.getMinutes()),\n padTo2Digits(date.getSeconds()),\n ].join(':')\n );\n}\n\nexport function formatDate2(date) {\n let d = new Date(date),\n month = '' + (d.getMonth() + 1),\n day = '' + d.getDate(),\n year = d.getFullYear();\n\n if (month.length < 2)\n month = '0' + month;\n if (day.length < 2)\n day = '0' + day;\n\n let dateTimeString = [year, month, day].join('-');\n dateTimeString = dateTimeString + 'T'\n + (\"00\" + d.getHours()).slice(-2) + \":\"\n +(\"00\" + d.getMinutes()).slice(-2) + \":\"\n + (\"00\" + d.getSeconds()).slice(-2);\n return [year, month, day].join('-');\n}\n\nexport function isValidHttpUrl(string) {\n let url;\n\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n\n\nexport function inputMask(value, maskPattern){\n\n let number = value.replace(/[^0-9]/g, '');\n number = '(' + number[0] + number[1] + number[2] + ')';\n\n return number;\n}\n\nexport function stripInputMask(value, maskPattern){\n let number = value.replace(/[^0-9]/g, '');\n return number;\n}\n\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function uncapitalizeFirstLetter(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\nexport function formatFromCamelCase(string){\n return capitalizeFirstLetter(string.replace(/([A-Z])/g, ' $1').trim());\n}\n\nexport function formatToCamelCase(string){\n return uncapitalizeFirstLetter(string.replace(/\\s/g, '').trim());\n}\n\nexport function objectToString(o) {\n let string;\n for (let [key, value] of Object.entries(o)) {\n if(value){\n string = string + ' ' + value;\n }\n }\n\n return string;\n}\n\n","import {ScrollView, View} from \"react-native-web\";\nimport {StyleSheet, Text} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\nimport * as React from \"react\";\nimport {Button, Dialog, Portal, List, DataTable, ActivityIndicator} from \"react-native-paper\";\nimport * as DocumentPicker from \"expo-document-picker\";\nimport * as Papa from \"papaparse/papaparse\"\nimport alasql from \"alasql\";\nimport * as XLSX from 'xlsx';\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {randomKey} from \"../../helpers/general\";\n\nalasql.utils.isBrowserify = false;\nalasql.utils.global.XLSX = XLSX;\n\nexport const UploadPopup = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n //State for Filter popup\n const [isUploadPopupVisible, setIsUploadPopupVisible] = React.useState(props.visible);\n const [hasFileBeenUploaded, setHasFileBeenUploaded] = React.useState(false);\n const [updates, setUpdates] = React.useState([]);\n const [additions, setAdditions] = React.useState([]);\n const [deletions, setDeletions] = React.useState([]);\n\n const [hasImportButtonBeenClicked, setHasImportButtonBeenClicked] = React.useState(false);\n const [isImportDone, setIsImportDone] = React.useState(props.isImportDone);\n\n //For Changing Props\n React.useEffect(() => {\n setIsUploadPopupVisible(props.visible);\n setIsImportDone(props.isImportDone);\n }, [props]);\n\n const showFilterPopup = () => setIsUploadPopupVisible(true);\n const hideFilterPopup = () => {\n setIsUploadPopupVisible(false);\n setHasFileBeenUploaded(false);\n setHasImportButtonBeenClicked(false);\n setIsImportDone(false);\n setUpdates([]);\n setAdditions([]);\n setDeletions([]);\n props.onClose();\n }\n const importDoneAndHideFilterPopup = () => {\n props.onImportDone();\n hideFilterPopup();\n }\n\n const executeImport = () => {\n setHasImportButtonBeenClicked(true)\n props.executeImport(updates, additions, deletions);\n }\n\n //Document State\n const [file, setFile] = React.useState();\n const allowedMimeTypes = [\n \"text/csv\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-excel\"\n ];\n\n const chooseFile = async () => {\n let result = await DocumentPicker.getDocumentAsync({ type: allowedMimeTypes, copyToCacheDirectory: true }).then(response => {\n if (response.type === 'success') {\n let nameParts = response.name.split('.');\n let fileType = nameParts[nameParts.length - 1];\n\n //Check if we allow the type of file that has been uploaded\n if(allowedMimeTypes.indexOf(response.mimeType) === -1){\n //console.log('NOT ALLOWED FILETYPE')\n return;\n }\n\n //Parse CSV with Papa - It's REAL fast\n if(fileType === 'csv'){\n Papa.parse(response.file, {\n header: true,\n complete: function(results) {\n createChangesList(results.data);\n }\n });\n }\n //Accept XLSX with alasql and xlsx\n if(fileType === 'xlsx'){\n alasql.promise('SELECT * FROM xlsx(?, {autoExt: false})', [response.uri]).then(function(results){\n createChangesList(results);\n }).catch(console.error);\n }\n\n //Accept XLS with alasql and xlsx\n if(fileType === 'xls'){\n alasql.promise('SELECT * FROM xls(?, {autoExt: false})', [response.uri]).then(function(results){\n createChangesList(results);\n }).catch(console.error);\n }\n\n\n }else{\n //ERROR Upon uploading here\n console.log('UPLOAD ERROR')\n }\n });\n }\n\n function createChangesList(fileData){\n let result = {updates: [], additions: [], deletions: []};\n fileData.map(record => {\n\n for (const [key, value] of Object.entries(record)) {\n if(key.toLowerCase().includes('date')){\n record[key] = ExcelDateToJSDate(value);\n }\n }\n\n if(record.changes){\n if(record.changes.toLowerCase() === 'update'){\n result.updates.push(record);\n }\n\n if(record.changes.toLowerCase() === 'add'){\n result.additions.push(record);\n }\n\n if(record.changes.toLowerCase() === 'delete'){\n result.deletions.push(record);\n }\n }\n\n if(record['Changes']){\n if(record['Changes'].toLowerCase() === 'update'){\n result.updates.push(record);\n }\n\n if(record['Changes'].toLowerCase() === 'add'){\n result.additions.push(record);\n }\n\n if(record['Changes'].toLowerCase() === 'delete'){\n result.deletions.push(record);\n }\n }\n\n if(record['CHANGES']){\n if(record['CHANGES'].toLowerCase() === 'update'){\n result.updates.push(record);\n }\n\n if(record['CHANGES'].toLowerCase() === 'add'){\n result.additions.push(record);\n }\n\n if(record['CHANGES'].toLowerCase() === 'delete'){\n result.deletions.push(record);\n }\n }\n\n })\n\n //Set Data\n setUpdates([...result.updates])\n setAdditions([...result.additions])\n setDeletions([...result.deletions])\n setHasFileBeenUploaded(true);\n\n return result;\n }\n\n function ExcelDateToJSDate(serial) {\n let utc_days = Math.floor(serial - 25569);\n let utc_value = utc_days * 86400;\n let date_info = new Date(utc_value * 1000);\n\n let fractional_day = serial - Math.floor(serial) + 0.0000001;\n\n let total_seconds = Math.floor(86400 * fractional_day);\n\n let seconds = total_seconds % 60;\n\n total_seconds -= seconds;\n\n let hours = Math.floor(total_seconds / (60 * 60));\n let minutes = Math.floor(total_seconds / 60) % 60;\n\n let returnDate = new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds).toLocaleDateString();\n\n //If return date is invalid, try regular JS date functionality\n if(returnDate === 'Invalid Date'){\n returnDate = new Date(serial);\n }\n\n return returnDate;\n }\n\n //Dependent Views\n const content = () => {\n\n if(isImportDone){\n return (\n \n {props.importDoneText}\n importDoneAndHideFilterPopup()}\n style={styles.button}\n mode={'contained'}\n >\n Close Popup\n \n \n );\n }\n\n if(hasImportButtonBeenClicked){\n return (\n \n Importing Data... Do not leave this page.\n \n \n );\n }\n\n if(!hasFileBeenUploaded){\n return(\n \n \n Upload a file to make mass changes. Accepted file types are CSV, XLSX, & XLS.\n \n chooseFile()}\n style={{marginBottom:'20px'}}\n mode={'contained'}\n >\n \n Choose File\n \n\n \n );\n }\n\n return(\n \n \n Upload a file to make mass changes. Accepted file types are CSV, XLSX, & XLS.\n \n chooseFile()}\n style={{marginBottom:'20px'}}\n mode={'contained'}\n >\n \n Choose a different file\n \n\n \n \n \n executeImport()}\n style={{marginBottom:'20px', marginTop: '30px'}}\n color={'#FF0000'}\n mode={'contained'}\n >\n \n Execute Import\n \n \n )\n\n }\n\n /**\n * Display\n */\n\n return (\n\n \n \n Import Data\n \n\n {content()}\n\n\n \n\n \n\n hideFilterPopup()}\n style={styles.button}\n mode={'contained'}\n >\n Cancel\n \n\n \n\n \n \n\n )\n\n}\n\nconst ChangesAccordion = (props) => {\n const [expanded, setExpanded] = React.useState(false);\n\n const handlePress = () => setExpanded(!expanded);\n\n return (\n\n }\n //right={() => {props.items.length}}\n expanded={expanded}\n onPress={handlePress}\n //style={{marginTop: '20px', marginBottom: '20px'}}\n >\n \n \n );\n};\n\nconst ChangesTable = (props) => {\n\n const [allData, setAllData] = React.useState(props.data);\n const [headerData, setheaderData] = React.useState(allData[0] ? Object.keys(allData[0]) : []);\n\n\n //State For Pagination\n const numberOfItemsPerPageList = [10, 20, 50, 100];\n const [tableData, setTableData] = React.useState(allData.slice(0, numberOfItemsPerPageList[0]));\n const [page, setPage] = React.useState(0);\n const [numberOfItemsPerPage, onItemsPerPageChange] = React.useState(numberOfItemsPerPageList[0]);\n const from = page * numberOfItemsPerPage;\n const to = Math.min((page + 1) * numberOfItemsPerPage, allData.length);\n\n //Change Page\n const changePage = (page) => {\n setPage(page);\n }\n React.useEffect(() => {\n let newData = allData.slice(from, from+numberOfItemsPerPage);\n setTableData(newData);\n }, [page]);\n\n //Change Items Per Page\n const changeItemsPerPage = (numberOfItemsPerPage) => {\n onItemsPerPageChange(numberOfItemsPerPage);\n }\n React.useEffect(() => {\n setPage(0);\n let newData = allData.slice(from, from+numberOfItemsPerPage);\n setTableData(newData);\n }, [numberOfItemsPerPage]);\n\n\n\n return (\n \n \n {\n headerData.map(header => {\n return(\n {clickGridHead(e)}}\n >\n {header}\n \n )\n })\n }\n \n\n \n {\n tableData.map(datum => {\n return (\n\n console.log('row pressed')}\n >\n {\n headerData.map(header => {\n let cellId = datum.id + header;\n let value;\n\n //Make sure value isn;t null\n if(datum[header] === null){\n value = '';\n }else{\n value = datum[header];\n }\n\n return(\n editCell(datum['id'], value)}\n >\n {JSON.stringify(value)}\n \n )\n })\n }\n \n )\n })\n }\n \n\n changePage(page)}\n label={`${from + 1}-${to} of ${allData.length}`}\n numberOfItemsPerPageList={numberOfItemsPerPageList}\n numberOfItemsPerPage={numberOfItemsPerPage}\n onItemsPerPageChange={changeItemsPerPage}\n selectPageDropdownLabel={'Rows per page'}\n />\n \n );\n\n\n}\n\n\nconst styles = StyleSheet.create({\n button: {\n marginLeft: '10px',\n },\n row: {\n display:'flex',\n flexGrow: 10,\n flexDirection:'row',\n alignContent:'center',\n paddingTop:'20px'\n },\n column: {\n width:'32%',\n marginRight: '1%'\n }\n});\n","import * as React from 'react';\nimport {\n DataTable,\n ActivityIndicator,\n Button,\n Searchbar,\n Snackbar,\n} from 'react-native-paper';\nimport { StyleSheet, ScrollView} from 'react-native';\nimport alasql from 'alasql';\nimport {View, Text} from \"react-native-web\";\nimport { TextInput } from 'react-native-web';\nimport {Feather} from \"@expo/vector-icons\";\nimport { deleteData, postData, patchData} from \"../../helpers/api\";\nimport {GridControls} from \"./GridControls\";\nimport { useNavigation } from '@react-navigation/native';\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {FilterPopup} from \"./FilterPopup\";\nimport {randomKey, formatFromCamelCase, formatToCamelCase} from \"../../helpers/general\";\nimport {UploadPopup} from \"./UploadPopup\";\nimport {debounce} from \"lodash\";\n\n//Actual Export\nconst Grid = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n const navigation = useNavigation();\n\n const styles = StyleSheet.create({\n pagination: {\n justifyContent: 'left',\n flex: 1\n },\n gridTitle: {\n flex:1,\n fontSize: '1.4rem',\n alignSelf: 'center'\n },\n grid: {\n position: 'relative',\n backgroundColor: '#ffffff',\n borderRadius:'15px',\n margin: '5px',\n flexGrow: 1,\n boxShadow: 'rgb(0 0 0 / 24%) 0px 3px 4px;',\n width: '98%',\n marginLeft: '1%',\n marginBottom: '1%',\n padding:0\n },\n tableHeader: {\n backgroundColor: '#eeeeee',\n cursor: 'pointer'\n },\n cell: {\n //minWidth: '160px',\n maxWidth: '500px',\n //maxHeight: '100px',\n whiteSpace: 'normal',\n textOverflow: 'ellipses',\n overflow: 'hidden',\n //border: '1px solid rgba(0, 0, 0, 0.6)',\n borderLeftWidth: 0,\n borderTopWidth: 0,\n paddingLeft: '5px',\n },\n iconCell: {\n minWidth: '50px',\n maxWidth: '50px',\n borderLeftWidth: 0,\n borderTopWidth: 0,\n paddingLeft: '5px'\n },\n iconEndCell: {\n minWidth: '50px',\n maxWidth: '50px',\n marginLeft: 'auto',\n borderLeftWidth: 0,\n borderTopWidth: 0,\n paddingLeft: '5px'\n },\n textInCell:{\n whiteSpace: 'normal'\n },\n scrollView: {\n maxHeight: '50vh',\n height: '100%',\n minHeight: 400,\n //minWidth: '70vw'\n },\n searchBar: {\n flex: 2,\n border: '2px solid grey',\n borderRadius: '50px',\n boxShadow:'none'\n },\n container: {\n flex: 1,\n backgroundColor: '#fff',\n alignItems: 'center',\n marginTop: '10vh'\n },\n snackbar:{\n backgroundColor: powerforce.colors.primary,\n color: '#ffffff'\n }\n });\n\n /**\n * Loading, errors, or no data\n * */\n\n //Loading\n if(!props.data){\n return (\n \n )\n }\n\n //Error Catch\n if(props.data.error){\n return (\n ERROR\n )\n }\n\n console.log(props);\n\n //Add New Record - this needs to be above function below\n const addRecord = () => {\n navigation.setParams({\n recordID : 'add',\n tableName : props.baseTable,\n })\n }\n\n //If there is no data\n if(props.data.length === 0){\n return (\n \n No results for this table\n addRecord()}\n style={{opacity: 1, marginTop: '20px'}}\n mode={'contained'}\n color={powerforce.colors.primary}\n icon={'plus'}\n >\n Add a record to this table\n \n \n\n )\n }\n\n //If we're coming from an Individual Record, refresh the information\n React.useEffect(() => {\n //props.refresh();\n }, [])\n\n /**\n * References\n * */\n //const deleteButtonRefs = React.useRef([]);\n\n /**\n * State\n * */\n\n //For Changing Props\n React.useEffect(() => {\n setAllData(props.data);\n setheaderData( Object.keys(props.data[0]));\n }, [props.data]);\n\n\n //State Data\n const [allData, setAllData] = React.useState(props.data);\n const [allDataBak, setAllDataBak] = React.useState(props.data);\n const [headerData, setheaderData] = React.useState(allData[0] ? Object.keys(allData[0]) : []);\n\n React.useEffect(() => {\n setPage(0);\n setTableData(allData.slice(0, numberOfItemsPerPage));\n }, [allData]);\n\n //State For Pagination\n const numberOfItemsPerPageList = [50, 100, 250, 500];\n const [page, setPage] = React.useState(0);\n const [numberOfItemsPerPage, onItemsPerPageChange] = React.useState(numberOfItemsPerPageList[0]);\n const from = page * numberOfItemsPerPage;\n const to = Math.min((page + 1) * numberOfItemsPerPage, allData.length);\n\n //State For ALASQL\n const [currentCommand, setCurrentCommand] = React.useState('');\n const [tableData, setTableData] = React.useState(allData.slice(0, numberOfItemsPerPageList[0]));\n\n //State for banner\n const [snackbarVisible, setSnackbarVisible] = React.useState(false);\n const [snackbarText, setSnackbarText] = React.useState('Snackbar Text');\n const onDismissSnackBar = () => setSnackbarVisible(false);\n\n //State for Filter popup\n const [filterPopupVisible, setFilterPopupVisible] = React.useState(false);\n const [filters, setFilters] = React.useState(props.filters);\n const [activeFilter, setActiveFilter] = React.useState({});\n\n //State for Upload popup\n const [uploadPopupVisible, setUploadPopupVisible] = React.useState(false);\n const [isImportDone, setIsImportDone] = React.useState(false);\n const [importDoneText, setImportDoneText] = React.useState('Importing Done!');\n\n //State for Deleting\n const [currentlyDeletingId, setCurrentlyDeletingId] = React.useState(null);\n\n //State for browser reorganizing data\n const [reorganizing, setReorganizing] = React.useState(false);\n\n\n /**\n * Search Bar\n * */\n\n //Search Bar\n const changeSearchText = (text) => {\n\n if(text === ''){\n setAllData(props.data);\n return;\n }\n\n const textsAsArray = text.toLowerCase().split(' ');\n\n const searchResults = props.data.filter(obj => {\n\n let results = Object.values(obj).some(val => {\n let value = String(val);\n if(value.toLowerCase().includes(text.toLowerCase()) || textsAsArray.includes(value.toLowerCase())){\n return true;\n }\n })\n\n return results;\n });\n\n if(searchResults === undefined || searchResults.length == 0){\n setAllData([{}]);\n //setTableData([{}]);\n }else{\n setAllData(searchResults);\n //setTableData(searchResults);\n }\n\n }\n\n const debounceChangeSearchText = debounce(changeSearchText, 300);\n\n /**\n * Right side Grid Controls\n * */\n\n /**\n * FILTER - Right side Grid Controls\n * */\n const toggleFilterPopup = () => {\n setFilterPopupVisible(!filterPopupVisible);\n }\n\n const selectFilterFromDropdown = (filter) => {\n let query;\n\n if(filter){\n\n if(filter === 'create'){\n setActiveFilter({})\n setFilterPopupVisible(!filterPopupVisible);\n return;\n }\n\n if(filter === 'edit'){\n setFilterPopupVisible(!filterPopupVisible);\n return;\n }\n\n //Not creating or editing - apply filter\n query = filter.query;\n setActiveFilter({...filter})\n\n }else{\n\n query = 'SELECT * FROM ?';\n setActiveFilter({})\n\n }\n applyFilter(query)\n\n }\n\n //Save (Create or Edit) and Apply Filter\n const saveAndApplyFilter = (newFilterData) => {\n\n let newFilters = filters;\n\n if(newFilterData.id){\n\n //Edit Filter\n let filterIndexToEdit = newFilters.findIndex(x => x.id === newFilterData.id);\n newFilters[filterIndexToEdit] = newFilterData;\n\n //Ajax PATCH to Save\n patchData(\n '/data/gridfilter/'+props.code,\n powerforce.authToken,\n newFilterData\n ).then(response => {\n //console.log(response); //recordId\n })\n\n }else{\n\n //Create Filter\n const tempId = 'TEMPID_'+randomKey(12);\n newFilterData.id = tempId;\n newFilters.push(newFilterData);\n\n //Ajax POST to create\n postData(\n '/data/gridfilter/'+props.code,\n powerforce.authToken,\n newFilterData\n ).then(response => {\n //console.log(response); //recordId\n let filterIndexToEdit = filters.findIndex(x => x.id === response.detail.tempId);\n let newFilters = filters;\n newFilters[filterIndexToEdit].id = response.detail.id;\n setFilters(newFilters);\n })\n\n }\n\n //Apply to State and To Grid\n setFilters(newFilters)\n setActiveFilter(newFilterData)\n applyFilter(newFilterData.query)\n }\n\n const deleteFilter = (newFilterData) => {\n\n if(newFilterData.id) {\n\n let newFilters = filters;\n let filterIndexToDelete = newFilters.findIndex(x => x.id === newFilterData.id);\n newFilters.splice(filterIndexToDelete, 1)\n\n deleteData(\n '/data/gridfilter/' + props.code,\n powerforce.authToken,\n newFilterData\n ).then(response => {\n //console.log(response); //recordId\n })\n\n setFilters(newFilters)\n setActiveFilter({})\n applyFilter('SELECT * FROM ?')\n\n }\n }\n\n //Execute AlaSQL from filter\n const applyFilter = (filterQuery) => {\n let result = alasql(filterQuery, [allDataBak]);\n setAllData(result);\n setCurrentCommand(filterQuery);\n }\n\n /**\n * DOWNLOAD - Right side Grid Controls\n * */\n\n //Download as CSV\n const handleDownload = () => {\n let csv = '';\n\n for(let row = 0; row < tableData.length; row++){\n let keysAmount = Object.keys(tableData[row]).length\n let keysCounter = 0\n\n // If this is the first row, generate the headings first\n if(row === 0){\n\n // Loop each property of the object\n for(let key in tableData[row]){\n // This is to not add a comma at the last cell\n // The '\\r\\n' adds a new line\n csv += formatToCamelCase(key) + (keysCounter+1 < keysAmount ? ',' : '\\r\\n' )\n keysCounter++\n }\n\n keysCounter = 0;\n\n for(let key in tableData[row]){\n if(tableData[row][key] !== ''){\n csv += '\"' + tableData[row][key] + '\"' + (keysCounter+1 < keysAmount ? ',' : '\\r\\n' )\n }else{\n csv += 'null' + (keysCounter+1 < keysAmount ? ',' : '\\r\\n' )\n }\n keysCounter++\n }\n\n }else{\n for(let key in tableData[row]){\n if(tableData[row][key] !== ''){\n csv += '\"' + tableData[row][key] + '\"' + (keysCounter+1 < keysAmount ? ',' : '\\r\\n' )\n }else{\n csv += 'null' + (keysCounter+1 < keysAmount ? ',' : '\\r\\n' )\n }\n keysCounter++\n }\n }\n\n keysCounter = 0\n }\n\n //This will only work on the web\n let link = document.createElement('a')\n link.id = 'download-csv'\n link.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(csv));\n link.setAttribute('download', props.title+'.csv');\n document.body.appendChild(link)\n document.querySelector('#download-csv').click()\n document.querySelector('#download-csv').remove() //remove it to be able to download again\n\n }\n\n /**\n * UPLOAD - Right side Grid Controls\n * */\n const toggleUploadPopup = () => {\n setUploadPopupVisible(!uploadPopupVisible);\n }\n\n const executeImport = (updates, additions, deletions) => {\n postData(\n '/data/gridupload/'+props.code,\n powerforce.authToken,\n {\n updates: updates,\n additions: additions,\n deletions: deletions,\n }\n ).then(response => {\n //Set isImportDone\n setIsImportDone(true);\n\n if(response.status > 200){\n setImportDoneText('Error Importing: ' + response.detail);\n }\n })\n }\n\n const onImportDone = () => {\n props.refresh();\n }\n\n /**\n * ADD RECORD - Right side Grid Controls\n * */\n //Add Record\n //Located above 'No Data' display\n\n\n /**\n * Controls on Grid\n * */\n\n //Click on grid header to sort ASC or DESC\n const clickGridHead = (e, header) => {\n let command = 'select * from ? order by ' + header + ' ASC';\n if(currentCommand === 'select * from ? order by '+ header +' ASC'){\n command = 'select * from ? order by '+ header +' DESC';\n }\n //let result = alasql(command, [allData]);\n\n setReorganizing(header);\n\n setTimeout(() => {\n let result = alasql(command, [allData]);\n setAllData(result);\n setCurrentCommand(command);\n setReorganizing(false);\n //console.log(result);\n //console.log(allData);\n }, 250)\n\n //setReorganizing(false);\n }\n\n //Edit Individual Record\n const editRecord = (id) => {\n navigation.setParams({\n recordID : id,\n tableName : props.baseTable,\n })\n }\n\n //Edit cell\n const editCell = (doOnPress, props, value) => {\n if(! doOnPress){\n return;\n }\n\n console.log(props);\n let url = value;\n if(props.urlPrefix){\n url = props.urlPrefix + value;\n }\n window.open(url, '_blank').focus();\n\n }\n\n //Delete record\n const deleteRecord = (id) => {\n setCurrentlyDeletingId(id);\n deleteData(\n '/data/record/'+props.baseTable+'/'+id,\n powerforce.authToken,\n {gridCode: props.code}\n ).then(response => {\n setSnackbarVisible(true);\n\n //Remove from alldata\n if(response.status === 200){\n setSnackbarText(response.detail);\n let itemIndex = allData.findIndex(x => x.id === id);\n let newData = allData;\n newData.splice(itemIndex, 1);\n setAllData([...newData]);\n setCurrentlyDeletingId(null);\n }else{\n //ERR\n setSnackbarText(JSON.stringify(response.detail));\n setCurrentlyDeletingId(null);\n }\n\n })\n }\n\n //Clone Individual Record\n const cloneRecord = (id) => {\n navigation.setParams({\n recordID : id,\n tableName : props.baseTable,\n cloneRecord: true\n })\n }\n\n /**\n * Grid Bottom Controls\n * */\n\n //Change Page\n const changePage = (page) => {\n setPage(page);\n }\n React.useEffect(() => {\n let newData = allData.slice(from, from+numberOfItemsPerPage);\n setTableData(newData);\n }, [page]);\n\n //Change Items Per Page\n const changeItemsPerPage = (numberOfItemsPerPage) => {\n onItemsPerPageChange(numberOfItemsPerPage);\n }\n React.useEffect(() => {\n setPage(0);\n let newData = allData.slice(from, from+numberOfItemsPerPage);\n setTableData(newData);\n }, [numberOfItemsPerPage]);\n\n //Execute ALASql from debug bar\n const execSQL = (el) => {\n let query = el.target.value;\n if(query === 'query' || query === ''){\n query = 'SELECT * FROM ?'\n }\n let result = alasql(query, [allDataBak]);\n setAllData(result);\n }\n\n /**\n * Delete & Clone Columns on Grid\n * */\n\n function cloneColumnHead(){\n if(props.permission === 'write' && props.canCreate) {\n return (\n \n Clone\n \n )\n }\n return null;\n }\n\n function cloneColumn(datum){\n if(props.permission === 'write' && props.canCreate) {\n return (\n cloneRecord(datum['id'])} //Make cloneRecord\n style={styles.iconEndCell}\n >\n \n \n )\n }\n return null;\n }\n\n function cloneColumnFoot(){\n if(props.permission === 'write' && props.canCreate) {\n return (\n \n\n \n )\n }\n return null;\n }\n\n function deleteColumnHead(){\n if(props.permission === 'write' && props.canDelete) {\n return (\n \n Delete\n \n )\n }\n return null;\n }\n\n function deleteColumn(datum, isCurrentlyDeleting){\n\n if(props.permission === 'write' && props.canDelete) {\n\n if(isCurrentlyDeleting){\n return (\n \n \n \n\n )\n }else{\n return (\n deleteRecord(datum['id'])}\n style={styles.iconEndCell}\n >\n \n \n )\n }\n\n }\n return null;\n }\n\n function deleteColumnFoot(){\n if(props.permission === 'write' && props.canDelete) {\n return (\n \n\n \n )\n }\n return null;\n }\n\n /**\n * SHOW TABLE\n * */\n\n return (\n \n \n\n \n \n {props.title}\n\n {\n //Grid Controls\n }\n selectFilterFromDropdown(filter)}\n />\n \n\n \n\n {\n //Filter Popup\n }\n \n\n {\n //Upload Popup\n }\n \n\n \n\n \n \n \n \n {props.permission === 'write' ? 'Edit' : 'View'}\n \n {\n headerData.map(header => {\n if(header === 'id'){\n return;\n }\n return(\n {clickGridHead(e, header)}}\n style={styles.cell}\n >\n {formatFromCamelCase(header)}\n { /*reorganizing === header ? : '' */}\n { reorganizing === header ? Loading... : '' }\n \n )\n })\n }\n\n {cloneColumnHead()}\n {deleteColumnHead()}\n\n \n\n \n {\n tableData.map(datum => {\n\n let isDeleting = false;\n if(currentlyDeletingId === datum.id){\n isDeleting = true;\n }\n\n return (\n\n console.log('row pressed')}\n >\n editRecord(datum['id'])}\n style={styles.iconCell}\n >\n \n \n\n {\n headerData.map(header => {\n if(header === 'id'){\n return;\n }\n\n let cellId = header;\n if(datum.id){\n cellId = datum.id + header;\n }\n let value;\n\n if(datum[header] === null){\n value = '';\n }else if(datum[header] !== undefined && datum[header].constructor === Array){\n\n //Cell value is an array, is it empty?\n if(datum[header].length === 0){\n value = '';\n }\n\n //See if its an IRI\n /*\n else if(datum[header][0].includes('/api/')){\n value = '';\n //Its an IRI. Loop through and fetch\n datum[header].map(arrayItem => {\n getIRI(arrayItem).then(fetchedData => {\n console.log(fetchedData);\n value += fetchedData.title + ', ';\n });\n })\n\n }*/\n else{\n //Not an IRI. Simply join with columns\n value = datum[header].join(', ');\n\n }\n\n\n }else{\n //Cell Value is not an array\n value = datum[header];\n }\n\n // If value is bool\n if(typeof value === \"boolean\"){\n if(value){\n value = 'Yes';\n }else{\n value = 'No';\n }\n }\n\n //If header is equal to button data source make it a button\n let doOnPress = false;\n if(props.urlDataSource === header){\n value = Go To;\n doOnPress = true;\n }\n\n return(\n editCell(doOnPress, props, datum[header])} // Possibly do the onclick here\n >\n {value}\n \n )\n })\n }\n\n {cloneColumn(datum)}\n {deleteColumn(datum, isDeleting)}\n\n \n )\n })\n }\n \n \n\n \n {\n headerData.map(header => {\n if(header === 'id'){\n return;\n }\n return(\n \n {\n tableData.reduce(function(a, b, index){\n if(isFinite(b[header])){\n let prev = new Number(a);\n let next = new Number(b[header]);\n\n if(index === tableData.length - 1){\n let total = prev + next;\n if(isNaN(total)){\n return;\n }else{\n return 'Σ: ' + total;\n }\n\n }else{\n return prev + next;\n }\n }\n }, 0)\n }\n \n\n )\n })\n }\n {cloneColumnFoot()}\n {deleteColumnFoot()}\n \n \n\n\n \n \n\n \n changePage(page)}\n label={`${from + 1}-${to} of ${allData.length}`}\n //showFastPaginationControls\n numberOfItemsPerPageList={numberOfItemsPerPageList}\n numberOfItemsPerPage={numberOfItemsPerPage}\n onItemsPerPageChange={changeItemsPerPage}\n selectPageDropdownLabel={'Rows per page'}\n style={styles.pagination}\n />\n\n \n \n {/*\n \n */}\n\n \n\n \n\n \n\n {\n //Snackbar notifications\n }\n \n \n {snackbarText}\n \n \n\n\n \n );\n}\n\nexport default Grid;\n\n\n\n","import React from \"react\";\nimport { Menu, TextInput, List} from \"react-native-paper\";\nimport {StyleSheet, ScrollView, View, Text} from \"react-native\";\nimport {PowerforceContext} from \"../../../helpers/context\";\nimport {Picker} from '@react-native-picker/picker';\nimport MultiDropDown from \"./MultiDropDown\";\nimport {isEmpty} from 'lodash';\n\n\nexport const Dropdown = React.forwardRef((props, ref) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [visible, setVisible] = React.useState(false);\n\n const list = [];\n //If there is a relation table change the values to match api url\n if(props.relationTable){\n props.items.map((item) => {\n let listItem = {\n label: item[props.relationColumn],\n value: item.id,\n }\n list.push(listItem);\n })\n }else{\n props.items.map((item) => {\n let listItem = {\n label: item[props.relationColumn],\n value: item[props.relationColumn],\n }\n list.push(listItem);\n })\n }\n\n\n const prepareValue = (unpreparedValue) => {\n //If it's an array, convert to string\n if(Array.isArray(unpreparedValue)){\n //console.log(unpreparedValue);\n //Unless it has no items\n if(unpreparedValue.length === 0){\n return '';\n }\n\n let valueArray = [];\n unpreparedValue.map((item) => {\n let labelObject = list.find(x => x.value === item);\n let valueItem = {\n label: labelObject.label,\n value: item,\n }\n valueArray.push(valueItem);\n })\n return valueArray;\n\n }\n\n return unpreparedValue;\n }\n const [value, setValue] = React.useState(props.value);\n\n const [filled, setFilled] = React.useState(true);\n React.useEffect(() => {\n //setFilled(props.value ? true : false);\n }, [props])\n\n const prepareValueForSave = (unpreparedValue) => {\n let valueArray = [];\n unpreparedValue.map((item) => {\n valueArray.push(item.value);\n })\n return valueArray;\n }\n\n if(!props.editable){\n if(props.multi){\n\n return (\n\n \n\n )\n }else{\n\n //Get title of selected item instead of api string (api/something/01)\n let valueId, selectedItem;\n if(props.value.includes('/api/')){\n valueId = Number(props.value.split('/')[3]);\n selectedItem = props.items.find(item => {\n return item.id === valueId;\n })\n }else{\n selectedItem = {};\n selectedItem[props.relationColumn] = 'None Selected'\n }\n\n return (\n\n \n\n )\n\n }\n }\n\n\n\n if(props.multi){\n\n\n //Paper dropdown (wierd render thing)\n return(\n \n setVisible(true)}\n onDismiss={(newVal) => {\n setVisible(false);\n let formattedVal;\n if(isEmpty(newVal) || newVal === ''){\n formattedVal = [];\n }else{\n if(Array.isArray(newVal)){\n formattedVal = newVal;\n }else{\n formattedVal = newVal.substring(0).split(\",\")\n }\n }\n props.onChange(props.dataSource, formattedVal, props.sectionIndex)\n }}\n ref={ref}\n value={value}\n setValue={(newVal) => {\n setValue(newVal)\n }}\n list={list}\n />\n \n )\n\n }\n\n\n //Picker - not styled consistently\n return(\n \n {props.label}\n {console.log('onfocus')}}\n //onBlur={}\n style={styles.picker}\n onValueChange={(itemValue, itemIndex) => {\n props.onChange(props.dataSource, itemValue, props.sectionIndex );\n console.log(itemValue);\n setValue(itemValue);\n }\n }>\n \n {\n props.items.map((item) => {\n return(\n \n );\n })\n }\n \n \n )\n\n //Accordion Try\n return (\n \n }\n >\n \n {\n props.items.map((item) => {\n return(\n {\n props.onChange(props.dataSource, item[props.relationColumn], true);\n setVisible(false)\n }}\n title={item[props.relationColumn]}\n style={styles.listItem}\n />\n );\n })\n }\n \n \n \n );\n\n //Menu Try\n const openMenu = () => setVisible(true);\n const closeMenu = () => setVisible(false);\n\n let dropDownAnchor = }\n />;\n\n return (\n\n \n \n \n {\n props.items.map((item) => {\n return(\n {\n props.onChange(props.dataSource, item[props.relationColumn], true);\n setVisible(false)\n }}\n title={item[props.relationColumn]}\n />\n );\n })\n }\n \n\n \n \n\n );\n})\n\n\nconst styles = StyleSheet.create({\n scrollView: {\n marginHorizontal: 20,\n maxHeight: '300px'\n },\n textInput: {\n marginRight: '0px'\n },\n accordion: {\n position: 'relative',\n },\n listItemContainer : {\n position: 'absolute',\n width: '100%',\n height: '100%',\n zIndex: 99\n },\n listItem: {\n backgroundColor: '#ff0000',\n position: 'relative',\n zIndex: 9\n },\n picker : {\n backgroundColor:'#e7e7e7',\n color: '#6a6a6a',\n paddingTop: '29px',\n paddingBottom: '14px',\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '16px',\n borderTopWidth: '0',\n borderLeftWidth: '0',\n borderRightWidth: '0',\n borderBottomWidth: '1px',\n borderBottomColor: '#ababab',\n //marginRight: '10px',\n },\n pickerItem : {\n fontSize: '16px'\n },\n smallLabel : {\n fontSize: '12px',\n top: '5px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n bigLabel : {\n fontSize: '16px',\n top: '18px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n});\n","import * as React from 'react';\nimport { Checkbox } from 'react-native-paper';\n\nconst CheckboxInput = React.forwardRef((props,ref) => {\n\n const [checked, setChecked] = React.useState(props.value);\n\n return (\n {\n if(!props.disabled){\n setChecked(!checked);\n props.onChange(props.dataSource, !checked, props.sectionIndex )\n }\n }}\n />\n );\n});\n\nexport default CheckboxInput;\n","import * as React from 'react'\n\nimport TextInputWithMask from 'react-native-paper-dates/src/TextInputMask'\nimport { HelperText, IconButton, useTheme } from 'react-native-paper'\nimport { View, StyleSheet } from 'react-native'\nimport DatePickerModal from 'react-native-paper-dates/src/Date/DatePickerModal'\nimport useDateInput from 'react-native-paper-dates/src/Date/inputUtils'\nimport { useLatest } from 'react-native-paper-dates/src/utils'\n\nfunction DatePickerInput(\n {\n label,\n value,\n onChange,\n style,\n locale,\n validRange,\n inputMode,\n withModal = true,\n withDateFormatInLabel = true,\n ...rest\n },\n ref\n) {\n const theme = useTheme()\n const { formattedValue, inputFormat, onChangeText, error } = useDateInput({\n locale,\n value,\n validRange,\n inputMode,\n onChange,\n })\n\n const [visible, setVisible] = React.useState(false)\n const onDismiss = React.useCallback(() => {\n setVisible(false)\n }, [setVisible])\n const onChangeRef = useLatest(onChange)\n const onInnerConfirm = React.useCallback(\n ({ date }) => {\n setVisible(false)\n onChangeRef.current(date)\n },\n [setVisible, onChangeRef]\n )\n\n\n return (\n <>\n \n {console.log(e)\n if(e.target.value === ''){\n onChange(null);\n }\n }}\n keyboardAppearance={theme.dark ? 'dark' : 'default'}\n error={!!error}\n style={[styles.input, style]}\n />\n {withModal ? (\n setVisible(true)}\n />\n ) : null}\n \n \n {error}\n \n\n {withModal ? (\n \n ) : null}\n \n )\n}\n\nfunction getLabel({\n withDateFormatInLabel,\n inputFormat,\n label,\n }) {\n if (withDateFormatInLabel) {\n return label ? `${label} (${inputFormat})` : inputFormat\n }\n return label || ''\n}\n\nconst styles = StyleSheet.create({\n root: {\n minWidth: 150,\n flexDirection: 'row',\n position: 'relative',\n alignItems: 'center',\n flexGrow: 1,\n },\n input: {\n flexGrow: 1,\n },\n calendarButton: { position: 'absolute', right: 0, zIndex: 10 },\n})\nexport default React.forwardRef(DatePickerInput)\n","import DatePickerInput from \"./DatePickerInput\";\nimport React from \"react\";\n\nexport const DatePicker = React.forwardRef((props, ref) => {\n\n const [value, setValue] = React.useState(props.value);\n return (\n {\n console.log(d)\n if(props.editable){\n setValue(d);\n let newVal = d ? d.toISOString() : null;\n props.onChange(props.dataSource, newVal, props.sectionIndex);\n }\n }}\n inputMode=\"start\"\n editable={props.editable}\n />\n )\n\n})\n","import React, { useCallback, useEffect, useRef, useState} from 'react'\nimport { Dimensions, Text, View, Platform } from 'react-native'\nimport { AutocompleteDropdown } from 'react-native-autocomplete-dropdown'\n\nimport Feather from 'react-native-vector-icons/Feather'\nimport {isValidHttpUrl} from \"../../../helpers/general\";\nimport {getData} from \"../../../helpers/api\";\nimport {PowerforceContext} from \"../../../helpers/context\";\nFeather.loadFont()\n\nexport const Autocomplete = React.forwardRef((props, ref) => {\n const [loading, setLoading] = useState(false)\n const [suggestionsList, setSuggestionsList] = useState(props.value ? [{id:1, title: props.value}] : null)\n\n const [selectedItem, setSelectedItem] = useState(props.value ? 1 : null)\n const dropdownController = useRef(null)\n\n const [readyForSaving, setReadyForSaving] = useState(false)\n\n //const searchRef = useRef(ref)\n\n const powerforce = React.useContext(PowerforceContext);\n\n function prepUrl(url, query){\n if(isValidHttpUrl(url)){\n //External URL\n return url;\n }else{\n //Internal URL\n return '/data/'+url+'/'+props.gridCode+'/'+query;\n }\n }\n\n const getSuggestions = useCallback(async q => {\n const filterToken = q.toLowerCase()\n if (typeof q !== 'string' || q.length < 3) {\n setSuggestionsList(null)\n return\n }\n setLoading(true)\n const items = await getData(prepUrl(props.url, q), powerforce.authToken)\n console.log(items);\n //const items = await response.json()\n let suggestions = [];\n if(items.status !== undefined && items.status > 200){\n suggestions = [{id: 0, title: 'Error getting autocomplete.'}]\n }else{\n suggestions = items\n .filter(item => item.title.toLowerCase().includes(filterToken))\n .map(item => ({\n id: item.id,\n title: item.title,\n }))\n }\n\n // First let's save the text, then open suggestions list\n props.onChange(props.dataSource, q);\n setSuggestionsList(suggestions)\n setLoading(false)\n\n }, [])\n\n const onClearPress = useCallback(() => {\n setSuggestionsList(null)\n }, [])\n\n const onOpenSuggestionsList = useCallback(isOpened => {}, [])\n\n const [filled, setFilled] = useState(selectedItem ? true : false)\n const unfilledLabelStyle = {fontSize: '16px', color: 'rgb(106, 106, 106)', position:'absolute', top: '20px', zIndex: -1};\n const filledLabelStyle = {fontSize: '11px', color: 'rgb(106, 106, 106)', position:'absolute', top: '10px', zIndex: -1};\n\n\n const onFill = () => {\n if(filled === false){\n setFilled(true)\n }else{\n setSuggestionsList(null)\n }\n }\n\n const onBlur = () => {\n if(!selectedItem){\n //setFilled(false)\n }\n }\n\n //Delay for 1 sec after first load to not save this value every time\n useEffect(() => {\n //setReadyForSaving(true);\n setTimeout(() => {\n if(!readyForSaving){\n setReadyForSaving(true);\n }\n }, 250)\n return () => {\n setReadyForSaving(false);\n }\n }, [])\n\n\n return (\n <>\n \n {\n dropdownController.current = controller\n }}\n initialValue={props.value ? {id:1, title: props.value} : null}\n direction={Platform.select({ ios: 'down' })}\n dataSet={suggestionsList}\n onChangeText={getSuggestions}\n onSelectItem={item => {\n item && setSelectedItem(item.id)\n if(readyForSaving && item){\n props.onChange(props.dataSource, item.title, props.sectionIndex);\n }\n }}\n debounce={600}\n suggestionsListMaxHeight={Dimensions.get('window').height * 0.4}\n onClear={onClearPress}\n onFocus={onFill}\n onBlur={onBlur}\n // onSubmit={(e) => onSubmitSearch(e.nativeEvent.text)}\n onOpenSuggestionsList={onOpenSuggestionsList}\n loading={loading}\n useFilter={false} // set false to prevent rerender twice\n textInputProps={{\n placeholder: '',\n autoCorrect: false,\n autoCapitalize: 'none',\n style: {\n width: '100%',\n backgroundColor: 'transparent',\n outlineColor: 'rgb(231, 231, 231)',\n outlineWidth: 0,\n color: '#000',\n fontSize: '16px',\n zIndex: 2\n },\n }}\n containerStyle={{\n backgroundColor: 'transparent',\n }}\n inputContainerStyle={{\n backgroundColor: 'transparent',\n }}\n renderItem={(item, text) => {item.title}}\n ChevronIconComponent={}\n ClearIconComponent={}\n EmptyResultComponent={No results}\n inputHeight={50}\n showChevron={false}\n showClear={false}\n clearOnFocus={false}\n //closeOnBlur={true}\n />\n \n {props.label}\n \n \n \n \n )\n})\n","import * as React from \"react\";\nimport {Checkbox, DataTable} from \"react-native-paper\";\nimport {ScrollView, Text} from \"react-native-web\";\nimport {StyleSheet, View} from \"react-native\";\nimport {PowerforceContext} from \"../../../helpers/context\";\nimport {useNavigation} from \"@react-navigation/native\";\nimport {some, isEqual} from 'lodash';\n\n\nexport const RelationTable = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n const navigation = useNavigation();\n\n const styles = StyleSheet.create({\n pagination: {\n justifyContent: 'left',\n flex: 1\n },\n grid: {\n position: 'relative',\n backgroundColor: '#ffffff',\n borderRadius:'15px',\n flexGrow: 1,\n boxShadow: 'rgb(0 0 0 / 24%) 0px 3px 4px;',\n width: '48%',\n marginRight: '1%'\n },\n tableHeader: {\n backgroundColor: '#eeeeee',\n cursor: 'pointer'\n },\n scrollView: {\n maxHeight: 600,\n minHeight: 400\n },\n searchBar: {\n flex: 2,\n border: '2px solid grey',\n borderRadius: '50px',\n boxShadow:'none'\n },\n container: {\n flex: 1,\n backgroundColor: '#fff',\n alignItems: 'center',\n marginTop: '10vh'\n },\n snackbar:{\n backgroundColor: powerforce.colors.primary,\n color: '#ffffff'\n }\n });\n\n\n //STATE FOR ALL\n const [allData, setAllData] = React.useState(props.items);\n const numberOfItemsPerPageList = [10, 20, 50, 100];\n const [tableData, setTableData] = React.useState(allData.slice(0, numberOfItemsPerPageList[0]));\n const [page, setPage] = React.useState(0);\n const [numberOfItemsPerPage, onItemsPerPageChange] = React.useState(numberOfItemsPerPageList[0]);\n const from = page * numberOfItemsPerPage;\n const to = Math.min((page + 1) * numberOfItemsPerPage, allData.length);\n\n //Change Page\n const changePage = (page) => {\n setPage(page);\n }\n React.useEffect(() => {\n let newData = allData.slice(from, from+numberOfItemsPerPage);\n setTableData(newData);\n }, [page]);\n\n //Change Items Per Page\n const changeItemsPerPage = (numberOfItemsPerPage) => {\n onItemsPerPageChange(numberOfItemsPerPage);\n }\n React.useEffect(() => {\n setPage(0);\n let newData = allData.slice(from, from+numberOfItemsPerPage);\n setTableData(newData);\n }, [numberOfItemsPerPage]);\n\n\n //STATE FOR SELECTED\n const [selectedData, setSelectedData] = React.useState(props.value ? props.value : []);\n\n const selectedNumberOfItemsPerPageList = [10, 20, 50, 100];\n const [selectedTableData, setSelectedTableData] = React.useState(selectedData.slice(0, selectedNumberOfItemsPerPageList[0]));\n const [selectedPage, setSelectedPage] = React.useState(0);\n const [selectedNumberOfItemsPerPage, onSelectedItemsPerPageChange] = React.useState(selectedNumberOfItemsPerPageList[0]);\n const selectedFrom = selectedPage * selectedNumberOfItemsPerPage;\n const selectedTo = Math.min((selectedPage + 1) * selectedNumberOfItemsPerPage, selectedData.length);\n\n function areAllSelected(selectedItems, allItems){\n return isEqual(selectedItems, allItems);\n }\n const [selectAllItems, setSelectAllItems] = React.useState(areAllSelected(props.value, props.items));\n\n //Change Page\n const selectedChangePage = (page) => {\n setSelectedPage(page);\n }\n React.useEffect(() => {\n let newData = selectedData.slice(selectedFrom, selectedFrom+selectedNumberOfItemsPerPage);\n setSelectedTableData(newData);\n }, [selectedPage]);\n\n //Change Items Per Page\n const changeSelectedItemsPerPage = (numberOfItemsPerPage) => {\n onSelectedItemsPerPageChange(numberOfItemsPerPage);\n }\n React.useEffect(() => {\n //setSelectedPage(0);\n let newData = selectedData.slice(selectedFrom, selectedFrom+selectedNumberOfItemsPerPage);\n setSelectedTableData(newData);\n }, [selectedNumberOfItemsPerPage]);\n\n //Checkbox functionality\n const onChange = (item, checkboxValue, changeSource = 'all') => {\n\n let newValue;\n\n // Make sure we have an array to work with\n if(props.value){\n newValue = props.value;\n }else{\n newValue = [];\n }\n\n\n if(checkboxValue){\n // If checkbox is true then add it\n newValue.push(item);\n }else{\n // If checkbox is false, find index and remove it\n const index = newValue.findIndex(x => x.id === item.id);\n\n if (index > -1) { // only splice array when item is found\n newValue.splice(index, 1);\n }else{\n console.log('no index found')\n }\n }\n\n let newSelectedData = selectedData;\n if(checkboxValue){\n // Make sure the array does not already contain the object\n if(!some(newSelectedData, item)){\n newSelectedData.push(item);\n }\n\n }else{\n\n const index = newSelectedData.findIndex(x => x.id === item.id);\n if (index > -1) { // only splice array when item is found\n newSelectedData.splice(index, 1);\n setSelectAllItems(false);\n }else{\n console.log('no index found for selectedData')\n }\n\n }\n\n\n setSelectedData([...newSelectedData]);\n let newSelectedTableData = selectedData.slice(selectedFrom, selectedFrom+selectedNumberOfItemsPerPage);\n setSelectedTableData([...newSelectedTableData]);\n\n let newData = allData.slice(from, from+numberOfItemsPerPage);\n setTableData([...newData]);\n\n // Force Rerender if on the page where data is shown\n let rerender = false;\n const index = tableData.findIndex(x => x.id === item.id);\n if (index > -1 && changeSource === 'selected') {\n rerender = true;\n }\n\n props.onChange(props.dataSource, newSelectedData, null, rerender);\n\n }\n\n const selectAll = (datum, checked) => {\n\n if(checked){\n let newValue = [];\n allData.map((row) => {\n newValue.push(row);\n })\n props.onChange(props.dataSource, newValue, null, true);\n }else{\n props.onChange(props.dataSource, [], null, true);\n }\n\n }\n\n return (\n \n\n {/*ALL ITEMS*/}\n \n \n All {props.label}\n \n \n \n Selected\n \n \n {props.relationColumn}\n \n \n\n \n \n \n \n \n \n Select All\n \n \n {\n tableData.map(datum => {\n\n return (\n\n console.log('row pressed')}\n >\n \n \n \n \n {datum[props.relationColumn]}\n \n \n )\n })\n }\n \n\n changePage(page)}\n label={`${from + 1}-${to} of ${allData.length}`}\n numberOfItemsPerPageList={numberOfItemsPerPageList}\n numberOfItemsPerPage={numberOfItemsPerPage}\n onItemsPerPageChange={changeItemsPerPage}\n selectPageDropdownLabel={'Rows per page'}\n />\n \n\n {/*SELECTED ITEMS*/}\n \n \n Selected {props.label}\n \n \n \n Selected\n \n \n {props.relationColumn}\n \n \n\n \n {\n selectedTableData.map(datum => {\n return (\n\n \n \n \n \n \n {datum[props.relationColumn]}\n \n \n )\n })\n }\n \n\n selectedChangePage(page)}\n label={`${selectedFrom + 1}-${selectedTo} of ${selectedData.length}`}\n numberOfItemsPerPageList={selectedNumberOfItemsPerPageList}\n numberOfItemsPerPage={selectedNumberOfItemsPerPage}\n onItemsPerPageChange={changeSelectedItemsPerPage}\n selectPageDropdownLabel={'Rows per page'}\n />\n \n\n \n );\n\n\n}\n\nconst CheckboxGridInput = (props) => {\n\n const [checked, setChecked] = React.useState(props.value);\n\n return (\n {\n if(!props.disabled){\n setChecked(!checked);\n props.onChange(props.datum, !checked, props.changeSource)\n }\n }}\n />\n );\n};\n","import { List } from 'react-native-paper';\nimport React from \"react\";\nimport {View} from \"react-native\";\nimport Constants from \"expo-constants\";\n\n\nexport const AccordionList = (props) => {\n\n const [items, setItems] = React.useState(props.items);\n const [icon, setIcon] = React.useState(props.icon);\n\n const apiUrl = Constants.manifest.extra.apiUrl;\n\n const onPress = (cwid) => {\n let url = '';\n if( apiUrl === 'https://eagpowerforce.com/api'){\n url = 'https://connect.eag1source.com/';\n }else{\n url = 'https://cwtest.eag1source.com/';\n }\n url += 'v4_6_release/services/system_io/Service/fv_sr100_request.rails?';\n url += 'service_recid='+cwid;\n url += '&companyName=eag1source';\n window.open(url, '_blank')\n }\n //No list items, item\n const listItem = }\n />;\n\n return (\n \n }\n >\n {\n items.map(item => {\n\n return(\n }\n onPress={() => onPress(item.cwid)}\n />\n )\n\n })\n }\n\n {items.length === 0 ? listItem : null}\n \n \n\n )\n\n}\n","import {StyleSheet, Text, View} from \"react-native\";\nimport {TextInput as TextInputNormal} from \"react-native\";\nimport {ActivityIndicator, Button, Dialog, Paragraph, Portal, TextInput} from \"react-native-paper\";\nimport React from \"react\";\nimport {PowerforceContext} from \"../../../helpers/context\";\nimport {getData, patchData, postData} from \"../../../helpers/api\";\nimport {useNavigation} from \"@react-navigation/native\";\nimport {en, registerTranslation} from 'react-native-paper-dates';\nimport {Dropdown} from \"./Dropdown\";\nimport CheckboxInput, {Checkbox} from \"./Checkbox\";\nimport {randomKey} from \"../../../helpers/general\";\nimport {DatePicker} from \"./DatePicker\";\nimport {debounce} from \"lodash\";\nimport {Autocomplete} from \"./Autocomplete\";\nimport {RelationTable} from \"./RelationTable\";\nimport {AccordionList, List} from \"./List\";\nimport { MaskedTextInput, unMask, mask } from \"react-native-mask-text\";\nimport { isEqual } from \"lodash\";\n\nregisterTranslation('en', en);\n\n\nexport const IndividualRecord = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n //Style that use pf globals\n const styles = StyleSheet.create({\n header : {\n display: 'flex',\n flexDirection: 'row',\n justifyItems: 'center',\n alignItems: 'center'\n },\n titleText : {\n fontSize: '2em',\n marginRight: '30px'\n },\n sectionHeader: {\n backgroundColor: powerforce.colors.primary,\n padding: '15px',\n marginBottom: '10px',\n marginTop: '30px',\n flexGrow: 1,\n width: '99%',\n marginRight: '1%'\n },\n sectionHeaderText : {\n color: '#ffffff',\n },\n section : {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: \"wrap\"\n },\n saveSection : {\n display: 'flex',\n flexDirection: 'row',\n marginTop: '50px'\n },\n inputContainer : {\n flexGrow: 1,\n width: '32%',\n marginRight: '1%',\n marginBottom: '15px',\n position:\"relative\",\n zIndex: 1,\n },\n fullwidthInputContainer : {\n flexGrow: 1,\n width: '100%',\n marginRight: '1%',\n marginBottom: '15px',\n position:\"relative\",\n zIndex: 1,\n },\n checkBoxContainer:{\n display: 'flex',\n justifyContent: 'start',\n flexDirection: 'row',\n alignItems: 'center',\n height: '100%'\n },\n primaryButton : {\n backgroundColor: powerforce.colors.primary,\n width: '32%',\n marginRight: '1%'\n },\n secondaryButton : {\n backgroundColor: powerforce.colors.secondary,\n width: '32%',\n marginRight: '1%'\n },\n disabledButton : {\n backgroundColor: '#959595',\n width: '32%',\n marginRight: '1%'\n },\n dangerButton : {\n backgroundColor: '#ff0000',\n },\n dangerText : {\n color: '#ff0000',\n fontSize: '24px',\n },\n snackbarContainer : {\n zIndex: 9999,\n //position: 'relative',\n //top: '30%',\n //width: '100%'\n },\n snackbar:{\n backgroundColor: powerforce.colors.secondary,\n color: '#ffffff',\n zIndex: 9999,\n padding: '30px'\n },\n maskedInput: {\n height: 40,\n margin: 12,\n borderWidth: 1,\n },\n });\n\n const sectionContainer = {\n flexGrow: 1,\n maxWidth: '32%',\n width: '32%',\n marginRight: '1%',\n marginBottom: '15px',\n position:\"relative\",\n zIndex: 1,\n }\n const dropdownSectionContainer = {\n flexGrow: 1,\n maxWidth: '32%',\n width: '32%',\n marginRight: '1%',\n marginBottom: '15px',\n position:\"relative\",\n zIndex: 1,\n //paddingRight: '10px'\n }\n\n\n //Fetch Ind Record Data and create based on information\n // User route params to fetch correct data\n const navigation = useNavigation();\n const [data, setData] = React.useState(null)\n const [structure, setStructure] = React.useState(null);\n const [update, setUpdate] = React.useState({})\n\n const [fetchError, setFetchError] = React.useState(false)\n const [errorText, setErrorText] = React.useState('Error')\n\n //Buttons\n const [showSaveButton, setShowSaveButton] = React.useState(false)\n const [showAfterSaveActionButton, setShowAfterSaveActionButton] = React.useState(false)\n const [showCancelButton, setShowCancelButton] = React.useState(false)\n\n const [saveButtonText, setSaveButtonText] = React.useState('')\n const [afterSaveActionButtonText, setAfterSaveActionButtonText] = React.useState('')\n const [cancelButtonText, setCancelButtonText] = React.useState('')\n\n //Cancel Popup\n const [isCancelPopupVisible, setIsCancelPopupVisible] = React.useState(false);\n const showPopup = () => setIsCancelPopupVisible(true);\n const hidePopup = () => setIsCancelPopupVisible(false);\n\n //Termination Popup\n const [isTermPopupVisible, setIsTermPopupVisible] = React.useState(false);\n const showTermPopup = () => setIsTermPopupVisible(true);\n const hideTermPopup = () => setIsTermPopupVisible(false);\n\n const [isSaving, setIsSaving] = React.useState(false)\n\n //In case we need to refresh the data\n const [reloadCount, setReloadCount] = React.useState(1)\n\n //State for banner\n const [snackbarVisible, setSnackbarVisible] = React.useState(false);\n const [snackbarReloadOnClose, setSnackbarReloadOnClose] = React.useState(false);\n const [snackbarReloadOnCloseRecordId, setSnackbarReloadOnCloseRecordId] = React.useState(null);\n const [snackbarText, setSnackbarText] = React.useState('Snackbar Text');\n const onDismissSnackBar = () => {\n setSnackbarVisible(false);\n\n if(snackbarReloadOnClose){\n navigation.setParams({\n recordID : snackbarReloadOnCloseRecordId,\n tableName : props.tableName,\n })\n\n let currentCount = reloadCount;\n currentCount++;\n setReloadCount(currentCount);\n }\n\n };\n\n const fieldRefs = React.useRef([]);\n\n React.useEffect(() => {\n\n let recordId = props.recordId;\n if(props.recordId === 'add'){\n recordId = 0;\n }\n\n //Set data and structure to null so spinner shows\n setData(null)\n setStructure(null);\n setFetchError(false);\n\n getData('/data/record/'+props.gridCode+'/'+recordId, powerforce.authToken)\n .then(fetchedData => {\n console.log(fetchedData);\n\n if(fetchedData.status >= 400){\n //setError(true)\n //setErrorMessage(fetchedData.detail);\n console.log('error');\n setFetchError(true);\n setErrorText(fetchedData.detail);\n }\n\n //If we are cloning add the data to update & change title\n if(props.cloneRecord && props.cloneRecord !== 'null'){\n fetchedData.record = extractDataForClone(fetchedData);\n setUpdate(fetchedData.record)\n fetchedData.structure.title = 'Clone Record';\n }\n\n //Add default value to update\n if(props.recordId === 'add'){\n fetchedData = extractDefaultDataForAddUpdateState(fetchedData);\n }\n\n //Set state\n setData(fetchedData.record)\n setStructure(fetchedData.structure);\n setShowSaveButton(fetchedData.showSaveButton);\n setShowAfterSaveActionButton(fetchedData.showAfterSaveActionButton);\n setShowCancelButton(fetchedData.showCancelButton);\n setSaveButtonText(fetchedData.saveButtonText);\n setAfterSaveActionButtonText(fetchedData.afterSaveActionButtonText);\n setCancelButtonText(fetchedData.cancelButtonText);\n\n });\n\n\n }, [reloadCount]);\n\n function extractDataForClone(fetchedData){\n let newUpdate = {};\n fetchedData.structure.sections.map(section => {\n // If there are no exclusions\n if(!fetchedData.cloneExclusions){\n newUpdate[section.dataSource] = fetchedData.record[section.dataSource];\n }else if(section.dataSource && !fetchedData.cloneExclusions.includes(section.dataSource)){\n // If there are exclusions, make sure the exclusions do not get included\n newUpdate[section.dataSource] = fetchedData.record[section.dataSource];\n }\n })\n return newUpdate;\n }\n\n function extractDefaultDataForAddUpdateState(fetchedData){\n let fetchedDataWithDefualtValues = {...fetchedData};\n let newUpdate = update;\n fetchedData.structure.sections.map(section => {\n if(section.defaultValue){\n fetchedDataWithDefualtValues.record[section.dataSource] = section.defaultValue;\n newUpdate[section.dataSource] = section.defaultValue;\n }\n })\n setUpdate(newUpdate);\n return fetchedDataWithDefualtValues;\n }\n\n /**\n * When Records are changed\n * */\n\n const changeRecordItem = (itemName, newValue, index = null, forceRefresh = false) => {\n\n let newUpdate = update;\n newUpdate[itemName] = newValue;\n setUpdate(newUpdate);\n\n let newData = data;\n newData[itemName] = newValue;\n setData(newData);\n let dataBeforeCalcs = {...data};\n\n //Apply Calculations\n applyCalculations(itemName, newValue);\n\n //Check conditions\n let conditionChange = checkConditionsOnUpdate(itemName, newValue);\n //If there's a difference in data after applying calculations\n // Or there is a condition change\n // then we need to rerender\n let dataAfterCalcs = { ...data };\n if(!isEqual(dataBeforeCalcs, dataAfterCalcs) || checkConditionsOnUpdate(itemName, newValue)){\n\n setData({...dataAfterCalcs});\n\n //Set focus back to field, or to next field\n if(index){\n if(fieldRefs.current[index]){\n setTimeout(() => fieldRefs.current[index].focus(), 250);\n }else{\n let nextIndex = findNextHighestIndex(index, fieldRefs.current);\n if(nextIndex){\n setTimeout(() => fieldRefs.current[nextIndex].focus(), 250);\n }\n }\n }\n\n }\n //If we need to force a refresh - like in a relation table\n if(forceRefresh){\n setData({...dataAfterCalcs});\n }\n\n\n }\n\n const debounceChangeRecordItem = debounce(changeRecordItem, 300);\n\n function findNextHighestIndex(passedIndex, array){\n let returnedIndex = false;\n for(const [i, value] of array.entries()){\n if(i > passedIndex && value){\n returnedIndex = i;\n break;\n }\n }\n return returnedIndex;\n }\n\n /**\n * Apply Calculations on Value Change\n * */\n\n function applyCalculations(itemName, newValue){\n for(let i = 0; i < structure.sections.length ; i++){\n if(structure.sections[i].calculateFunction) {\n //If there's a section with calculate, rerender and end\n let calc = calculate(structure.sections[i]);\n }\n }\n }\n\n /**\n * Condition Checker on Value Change\n * */\n\n function checkConditionsOnUpdate(itemName, newValue){\n\n let conditionChange = false;\n structure.sections.map((section) => {\n\n //See if it has all condition args\n if(section.conditionKey && section.conditionOp){\n\n //Check if the conditionKey is equal to the update key\n if(section.conditionKey === itemName){\n\n conditionChange = true;\n\n }\n }\n })\n return conditionChange;\n\n }\n\n /**\n * Check if required fields are filled\n * */\n function checkRequiredFieldsAreComplete(){\n console.log('Checking required fields');\n // Get required objects based off structure array\n const requiredObjects = structure.sections.filter((item) => item.required);\n // Returns true if every item in the array return true\n // Also checks against 'unrequiredItems'\n return requiredObjects.every((item) => {\n console.log(item);\n console.log(update[item.dataSource]);\n console.log(data[item.dataSource]);\n\n if(update[item.dataSource] !== undefined || data[item.dataSource] !== undefined){\n return true;\n }\n\n if(update[item.dataSource] === undefined\n && data[item.dataSource] === undefined\n ){\n if(unrequiredItems.includes(item.dataSource)){\n return true;\n }\n }\n\n return false;\n })\n }\n\n function getUnfilledRequiredFields(format = 'array'){\n const requiredObjects = structure.sections.filter((item) => item.required);\n let unfilledFieldsArray = [];\n let unfilledFieldsString = '';\n requiredObjects.map((item) => {\n if(update[item.dataSource] === undefined && data[item.dataSource] === undefined){\n if( ! unrequiredItems.includes(item.dataSource)){\n unfilledFieldsArray.push(item);\n unfilledFieldsString += item.label + ', ';\n }\n }\n })\n\n if(format === 'array'){\n return unfilledFieldsArray;\n }\n\n if(format === 'string'){\n return unfilledFieldsString;\n }\n\n }\n\n /**\n * Bottom Buttons - SAVE AND CANCEL\n * */\n\n //Save Changes and generate workflows\n const saveChanges = (doAftersave) => {\n\n // CHeck required fields\n if( ! checkRequiredFieldsAreComplete() ){\n alert('Please complete all required fields: ' + getUnfilledRequiredFields('string'));\n return;\n }\n\n setIsSaving(true);\n console.log('SAVE CHANGES!', structure.afterSaveAction, update);\n\n let afterSaveAction = null;\n if(doAftersave){\n console.log('Doing aftersave action: '+structure.afterSaveAction);\n afterSaveAction = structure.afterSaveAction;\n }\n\n if(props.recordId === 'add' || props.cloneRecord){\n\n postData(\n '/data/record/'+props.tableName+'/0',\n powerforce.authToken,\n {\n afterSaveAction: afterSaveAction,\n afterSaveActionData: update,\n gridCode: props.gridCode\n }\n ).then(response => {\n setIsSaving(false);\n\n if(response.status > 200){\n\n if(response.extra !== undefined && response.extra.recordId !== undefined){\n setSnackbarText('The record was created but there was an error generating workflows. This page will direct you to the new record after closing this popup. Error Details: ' + response.detail);\n setSnackbarReloadOnClose(true);\n setSnackbarReloadOnCloseRecordId(response.extra.recordId);\n }else{\n if(response.trace !== undefined){\n setSnackbarText('The record was created but there was an error generating workflows. Error Details: ' + response.detail + ' | TRACE file: ' + response.trace[0].file + ' --- line:' + response.trace[0].line);\n }else{\n setSnackbarText('The record was created but there was an error generating workflows. Error Details: ' + response.detail);\n }\n\n }\n\n setSnackbarVisible(true);\n\n }else{\n\n navigation.setParams({\n recordID : response.extra.recordId,\n tableName : props.tableName,\n //cloneRecord: null\n })\n\n let currentCount = reloadCount;\n currentCount++;\n setReloadCount(currentCount);\n\n }\n\n })\n\n }else{\n\n patchData(\n '/data/record/'+props.tableName+'/'+props.recordId,\n powerforce.authToken,\n {\n afterSaveAction: afterSaveAction,\n afterSaveActionData: update,\n gridCode: props.gridCode\n }\n ).then(response => {\n setIsSaving(false);\n\n if(response.status > 200){\n setSnackbarText(response.detail);\n setSnackbarVisible(true);\n }else{\n\n if(doAftersave){\n let currentCount = reloadCount;\n currentCount++;\n setReloadCount(currentCount);\n }else{\n navigation.setParams({\n recordID : null,\n tableName : null,\n })\n }\n\n }\n\n })\n }\n\n }\n\n //Cancel\n const cancelChanges = () => {\n navigation.setParams({\n recordID : null,\n tableName : null,\n })\n }\n\n\n /**\n * QA Bar Factory\n * */\n const createQuickAccessBarItem = (barItem) => {\n if(barItem.type === 'button'){\n return console.log(barItem.onPress)}>\n {barItem.text}\n ;\n }\n\n if(barItem.type === 'dropdownnn'){\n return console.log(barItem.onPress)}>\n {barItem.text}\n ;\n }\n\n\n }\n\n /**\n * Conditions\n * */\n\n const applyEqualsCondition = (conditionKey, conditionValue) => {\n\n if(data[conditionKey] == conditionValue){\n return true;\n }else{\n return false;\n }\n\n }\n\n const applyDoesNotEqualCondition = (conditionKey, conditionValue) => {\n\n if(data[conditionKey] != conditionValue){\n return true;\n }else{\n return false;\n }\n\n }\n\n const conditionOperators = {\n '=': applyEqualsCondition,\n '!=': applyDoesNotEqualCondition\n }\n\n /**\n * Calculations\n * All Calculate functions manipulate data and must return the section\n * */\n\n\n const calculate = (section) => {\n\n let sectionClone = { ...section };\n let functionName = section.calculateFunction;\n\n if(typeof calculateFunctions[functionName] === 'function' ){\n return calculateFunctions[functionName](sectionClone);\n }else{\n console.log('function does not exist');\n return section;\n }\n\n }\n\n //Show related DropDown values\n const [relatedDropdownItems, setRelatedDropdownItems] = React.useState({})\n function onlyShowRelatedDropdownItems(section){\n\n let relatedValue = data[section.calculateArgs];\n\n if(!(section.dataSource in relatedDropdownItems)){\n let relatedDropdownItemsClone = { ...relatedDropdownItems };\n relatedDropdownItemsClone[section.dataSource] = [];\n setRelatedDropdownItems(relatedDropdownItemsClone);\n }\n\n let relatedDropdownItemsClone = { ...relatedDropdownItems };\n\n let newItems = section.items.filter(item => {\n return item[section.calculateArgs] === relatedValue;\n })\n\n relatedDropdownItemsClone[section.dataSource] = newItems;\n\n //CHeck if we need to rerender\n if(!isEqual(relatedDropdownItemsClone, relatedDropdownItems)){\n setRelatedDropdownItems(relatedDropdownItemsClone);\n }\n\n //Set section items and return\n section.items = newItems;\n return section;\n }\n\n\n //Set a date to not be before another date\n function notBeforeDate(section){\n let notBeforeThisDate = new Date(data[section.calculateArgs]);\n let valueDate = new Date(data[section.dataSource]);\n\n //Make sure we have a value here to prevent infinite re-renders\n if(data[section.dataSource]){\n if(valueDate <= notBeforeThisDate){\n let humanReadableLabel = section.calculateArgs.replace(/([A-Z])/g, ' $1').trim();\n humanReadableLabel = humanReadableLabel[0].toUpperCase() + humanReadableLabel.substring(1);\n setSnackbarText('Can not set ' + section.label + ' before ' + humanReadableLabel);\n setSnackbarVisible(true);\n\n let newData = data;\n newData[section.dataSource] = null;\n setData(newData);\n\n let newUpdate = update;\n delete newUpdate[section.dataSource];\n setUpdate(newUpdate);\n }\n }\n\n return section;\n }\n\n\n //Don't require this field if there's no equipment requirements\n const [unrequiredItems, setUnequiredItems] = React.useState([])\n\n //Add hidden value to record, must actually exist in record\n function addHiddenValuesToRecord(section){\n let sectionClone = { ...section };\n let newData = data;\n let newUpdate = update;\n\n if(!isEqual(newData[section.calculateArgs], JSON.parse(section.calculateMeta))){\n newData[section.calculateArgs] = JSON.parse(section.calculateMeta);\n newUpdate[section.calculateArgs] = JSON.parse(section.calculateMeta);\n setData(newData);\n setUpdate(newUpdate);\n }\n return sectionClone;\n }\n\n const calculateFunctions = {\n 'onlyShowRelatedDropdownItems': onlyShowRelatedDropdownItems,\n 'notBeforeDate': notBeforeDate,\n 'addHiddenValuesToRecord': addHiddenValuesToRecord,\n }\n\n\n /**\n * Section Factory\n * */\n function applyStyles(section, styleObject){\n let styleObjectClone = {...styleObject}\n if(section.width){\n styleObjectClone.maxWidth = section.width;\n styleObjectClone.width = section.width;\n }\n\n if(section.required){\n styleObjectClone.borderLeft = '2px solid ' + powerforce.colors.accent;\n }\n\n return styleObjectClone;\n }\n\n const createSection = (originalSection, index) => {\n\n //Trick to clone and keep original structure\n let section = { ...originalSection};\n\n //Value & Default Value\n let value = '';\n if(section.defaultValue){\n value = section.defaultValue;\n }\n\n //If we have data in the datasource, use it\n if(data[section.dataSource] !== null && data[section.dataSource] !== undefined){\n value = data[section.dataSource];\n }\n\n //Alter Label for required fields\n if(section.required){\n section.label = 'Required: ' + section.label;\n }\n\n //Calculations\n if(section.calculateFunction) {\n section = calculate(section);\n }\n\n /*\n Conditions\n */\n\n //Create Only - Only when adding a record\n if((props.recordId !== 'add' && (props.cloneRecord !== 'true' && props.cloneRecord !== true))\n && section.conditionKey === 'createOnly'\n ){\n return;\n }\n\n //Write only - AKA only show when editing\n if((props.recordId === 'add' || props.cloneRecord === 'true') && section.conditionKey === 'updateOnly'){\n return;\n }\n\n if(props.cloneRecord && props.cloneRecord !== 'null' && section.conditionKey === 'updateOnly'){\n return;\n }\n\n //If condition exists\n if(section.conditionKey && section.conditionOp){\n //If condition is true, show field, if not don't show\n if(!conditionOperators[section.conditionOp](section.conditionKey, section.conditionValue)){\n return;\n }\n }\n\n //Permissions\n let editable = false;\n if(props.permission === 'write'){\n editable = true;\n }\n if(props.permission === 'read' && section.writeOnly){\n return;\n }\n\n //TITLE BAR\n if(section.type === 'titleBar'){\n return \n {section.text}\n \n }\n\n //SPACE\n if(section.type === 'space'){\n return \n \n }\n\n //BUTTON\n if(section.type === 'button'){\n return \n onPressAction(section)}\n style={isSaving ? styles.disabledButton : styles[section.style]}\n loading={isSaving}\n disabled={isSaving}\n //ref={el => fieldRefs.current[index] = el}\n >\n {section.text}\n \n \n }\n\n //LIST\n if(section.type === 'list'){\n return \n \n \n }\n\n //booleanShowText\n if(section.type === 'booleanShowText'){\n if(data[section.dataSource]){\n return \n {section.label}\n {section.text}\n \n }\n }\n\n //DROPDOWN - RELATION\n if(section.type === 'dropdown' || section.type === 'multiDropdown'){\n\n let multi = false;\n if(section.type === 'multiDropdown'){\n multi = true;\n }\n\n return \n fieldRefs.current[index] = el}\n />\n \n }\n\n //Checkbox grid - Relation Table\n if(section.type === 'relationTable'){\n return \n \n \n }\n\n //Textarea\n if(section.type === 'textarea'){\n return \n { debounceChangeRecordItem(section.dataSource, text)} }\n onBlur={(e) => changeRecordItem(section.dataSource, e.target.value)}\n multiline={true}\n numberOfLines={5}\n ref={el => fieldRefs.current[index] = el}\n />\n \n }\n\n //autoComplete\n if(section.type === 'autoComplete'){\n return \n fieldRefs.current[index] = el}\n //editable={editable ? section.editable : false}\n //onChangeText={ text => { debounceChangeRecordItem(section.dataSource, text)} }\n //onBlur={(e) => changeRecordItem(section.dataSource, e.target.value)}\n />\n \n }\n\n //Input\n if(section.type === 'input'){\n\n //Text Input\n if(section.inputType === 'text'){\n //let textMask = section.mask ? section.mask : 'SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS';\n return \n { debounceChangeRecordItem(section.dataSource, text, index)} }\n onSubmitEditing={(e) => changeRecordItem(section.dataSource, e.target.value, index)}\n //onBlur={(e) => changeRecordItem(section.dataSource, e.target.value)}\n /*onKeyPress={(e) => {\n console.log(e)\n if(e.key === \"Tab\"){\n changeRecordItem(section.dataSource, e.target.value, findNextHighestIndex(index, fieldRefs.current));\n }\n }}*/\n //onBlur={(e) => console.log(e)}\n ref={el => fieldRefs.current[index] = el}\n />\n \n }\n\n //Password Text Input - same as text but never show old value\n if(section.inputType === 'password'){\n //let textMask = section.mask ? section.mask : 'SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS';\n return \n { debounceChangeRecordItem(section.dataSource, text, index)} }\n onSubmitEditing={(e) => changeRecordItem(section.dataSource, e.target.value, index)}\n ref={el => fieldRefs.current[index] = el}\n />\n \n }\n\n //Number\n if(section.inputType === 'number'){\n let numberMask = section.mask ? mask(value, section.mask) : value;\n return \n {\n //let number = stripInputMask(text, 'nopatternyet');\n let numberUnmask = section.mask ? unMask(e.target.value) : e.target.value;\n debounceChangeRecordItem(section.dataSource, numberUnmask, index)\n }}\n onSubmitEditing={(e) => {\n let numberUnmask = section.mask ? unMask(e.target.value) : e.target.value;\n changeRecordItem(section.dataSource, numberUnmask, index)\n }}\n /*onBlur={(e) => {\n console.log(e);\n changeRecordItem(section.dataSource, unMask(e.target.value))\n }}*/\n /*\n onKeyPress={(e) => {\n console.log(e)\n if(e.key === \"Tab\"){\n //console.log('unmask', unMask(e.target.value));\n e.preventDefault();\n changeRecordItem(section.dataSource, unMask(e.target.value), findNextHighestIndex(index, fieldRefs.current));\n }\n }}\n */\n\n //onBlur={(e) => console.log(e)}\n ref={el => fieldRefs.current[index] = el}\n //mask={section.mask ? section.mask : '9999999999999999999999999'}\n //The part below is WAY more performant, but it causes calculations to destroy page\n render={props => {\n if(section.mask){\n return ()\n }else{ return }\n\n }\n }\n />\n \n }\n\n //Date Input\n if(section.inputType === 'date'){\n return \n fieldRefs.current[index] = el}\n style={{height:'100%'}}\n />\n \n\n }\n\n //Checkbox\n if(section.inputType === 'checkbox'){\n return \n \n fieldRefs.current[index] = el}\n />\n {section.label}\n \n \n\n }\n\n }\n }\n\n /**\n * OnPress Actions\n * */\n\n const onPressAction = (section) => {\n\n\n if(section.onPress === 'terminateEmployee'){\n setIsTermPopupVisible(true);\n }\n\n if(section.onPress === 'goToUrl'){\n window.open(section.url, '_blank');\n }\n\n }\n\n const sendOnPressAction = (onPressAction, onPressData) => {\n\n setIsSaving(true);\n patchData(\n '/data/record/'+props.tableName+'/'+props.recordId,\n powerforce.authToken,\n {\n onPress: onPressAction,\n onPressData: onPressData,\n gridCode: props.gridCode\n }\n ).then(response => {\n setIsSaving(false);\n\n if(response.status === 500){\n\n setSnackbarText(response.detail);\n setSnackbarVisible(true);\n\n }else if(response.status > 200){\n\n setSnackbarText(response.detail.message);\n setSnackbarVisible(true);\n\n }else{\n //Trigger Reload\n let currentCount = reloadCount;\n currentCount++;\n setReloadCount(currentCount);\n }\n\n })\n\n }\n\n const terminateEmployee = () => {\n\n setIsTermPopupVisible(false);\n\n //if no snackbar errors, do the action\n let today = new Date().toISOString();\n changeRecordItem('terminationDate', today);\n\n let todayAgain = new Date();\n let startDate = new Date(data['startDate']);\n if(todayAgain >= startDate){\n sendOnPressAction('terminateEmployee', {'terminationInstructions': data['terminationInstructions']});\n }\n\n }\n\n /**\n * Show the record\n * */\n if(fetchError){\n return (\n {errorText}\n )\n }\n\n /**\n * Bottom Buttons\n * */\n const afterSaveActionButton = () => {\n if(showAfterSaveActionButton){\n return(\n saveChanges(true)}\n loading={isSaving}\n disabled={isSaving}\n >\n {afterSaveActionButtonText}\n \n )\n }\n }\n\n const saveButton = () => {\n if(showSaveButton){\n return(\n saveChanges(true)}\n loading={isSaving}\n disabled={isSaving}\n >\n {saveButtonText}\n \n )\n }\n }\n\n const cancelButton = () => {\n if(showCancelButton){\n return(\n \n {cancelButtonText}\n \n )\n }\n }\n\n\n if(data === null || structure === null ){\n return (\n \n )\n }else{\n\n if(props.permission === 'write'){\n return(\n \n\n \n {structure.title}\n\n {structure.quickAccessBar.map(barItem => {\n return createQuickAccessBarItem(barItem);\n })}\n\n \n\n \n {\n structure.sections.map((section, index) => {\n return createSection(section, index);\n })\n }\n \n\n \n \n Alert\n \n {snackbarText}\n \n \n \n \n \n \n\n \n\n {afterSaveActionButton()}\n {saveButton()}\n {cancelButton()}\n\n \n \n Cancel Alert\n \n Do you want to clear the form and lose your work?\n \n \n \n \n \n \n \n\n \n \n Warning!\n \n \n Are you sure that you want to terminate this user immediately? Doing so will generate tickets that will deactivate building and account access. Click \"Yes\" to continue with the termination or \"No\" to cancel.\n \n \n \n \n \n \n \n \n\n \n \n\n )\n }\n\n if(props.permission === 'read'){\n return(\n \n\n \n {structure.title}\n\n {structure.quickAccessBar.map(barItem => {\n return createQuickAccessBarItem(barItem);\n })}\n\n \n\n \n {\n structure.sections.map(section => {\n return createSection(section);\n })\n }\n \n\n \n \n Back to Grid\n \n\n \n \n\n )\n }\n\n\n }\n\n}\n\n\n","import * as React from 'react';\nimport {StyleSheet, Text, View} from 'react-native';\nimport { Button, Menu, Divider, Provider } from 'react-native-paper';\nimport {Picker} from \"@react-native-picker/picker\";\n\nconst BookmarksMenu = (props) => {\n\n const [value, setValue] = React.useState(' ');\n\n const [filled, setFilled] = React.useState();\n\n React.useEffect(() => {\n if(value !== ' '){\n setFilled(true);\n }else{\n setFilled(false);\n }\n }, [value])\n\n\n\n return (\n \n {/*Saved Bookmarks*/}\n {console.log('onfocus')}}\n //onBlur={}\n style={styles.picker}\n onValueChange={(itemValue, itemIndex) => {\n if(itemValue !== ' ') {\n props.onChange(itemValue);\n }\n setValue(' ');\n }\n }>\n \n \n {\n props.items.map((item, index) => {\n return(\n \n );\n })\n }\n \n \n );\n};\n\nexport default BookmarksMenu;\n\nconst styles = StyleSheet.create({\n picker : {\n backgroundColor:'#e7e7e7',\n color: '#6a6a6a',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '16px',\n borderTopWidth: '0',\n borderLeftWidth: '0',\n borderRightWidth: '0',\n borderBottomWidth: '1px',\n borderBottomColor: '#ababab',\n //marginRight: '10px',\n },\n pickerItem : {\n fontSize: '16px'\n },\n smallLabel : {\n fontSize: '12px',\n top: '5px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n bigLabel : {\n fontSize: '16px',\n top: '18px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n});\n","import * as React from 'react';\nimport { Modal, Portal, Text, Button, Provider, TextInput } from 'react-native-paper';\nimport {useContext} from \"react\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {Feather} from \"@expo/vector-icons\";\nimport {Pressable} from \"react-native\";\n\nconst BookmarkModal = (props) => {\n\n const powerforce = useContext(PowerforceContext);\n\n const containerStyle = {backgroundColor: 'white', padding: 20, zIndex: 999, margin: '20px', alignSelf: 'center'};\n\n const [text, setText] = React.useState(\"\");\n const [saving, setSaving] = React.useState(false);\n\n // Reset text on modal close/open\n React.useEffect(() => { setText(''); setSaving(false); }, [props.visible])\n\n function save(){\n props.onSave(text);\n setSaving(true)\n setText('Saving ' + text + ' ...');\n }\n\n return (\n \n \n \n \n \n \n Enter a name for this view:\n setText(text)}\n placeholder={'Example: Q4 Projections'}\n activeUnderlineColor={powerforce.colors.primary}\n style={{marginVertical: '20px', minWidth: '300px'}}\n />\n \n {saving ? 'Saving View' : 'Save View'}\n \n \n \n \n );\n};\n\nexport default BookmarkModal;\n","import * as React from 'react';\nimport { Modal, Portal, Text, Button, Provider, TextInput } from 'react-native-paper';\nimport {useContext} from \"react\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {Pressable, ScrollView, View} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\n\nconst BookmarkManagerModal = (props) => {\n\n const powerforce = useContext(PowerforceContext);\n\n const containerStyle = {backgroundColor: 'white', padding: 20, zIndex: 999, margin: '20px', alignSelf: 'center'};\n\n const [bookMarks, setBookMarks] = React.useState(props.bookmarks); //Stays in background and keeps track of bookmarks\n const [saving, setSaving] = React.useState(false);\n\n // Reset text on modal close/open\n React.useEffect(() => {\n setSaving(false);\n }, [props.visible])\n\n function save(){\n console.log(bookMarks);\n props.onSave(bookMarks)\n setSaving(true);\n }\n\n function markForDeletion(bookmark){\n let bookMarksUpdated = bookMarks;\n bookMarksUpdated = bookMarksUpdated.filter(function( obj ) {\n return obj.value !== bookmark.value;\n });\n console.log(bookMarksUpdated);\n setBookMarks(bookMarksUpdated);\n }\n\n function unmarkForDeletion(bookmark){\n let bookMarksUpdated = bookMarks;\n bookMarksUpdated.push(bookmark);\n console.log(bookMarksUpdated);\n setBookMarks(bookMarksUpdated);\n }\n\n function updateBookmarkLabel(label, bookmark){\n let bookMarksUpdated = bookMarks;\n let objIndex = bookMarksUpdated.findIndex(obj => obj.value == bookmark.value);\n bookMarksUpdated[objIndex].label = label;\n setBookMarks(bookMarksUpdated);\n }\n\n\n return (\n \n \n \n \n \n \n Bookmarks Manager\n Changes are only saved when the 'Save Changes' button is clicked.\n \n {props.bookmarks.map((bookmark) => {\n console.log(bookmark);\n return(\n \n )\n })}\n \n\n \n {saving ? 'Saving Changes' : 'Save Changes'}\n \n\n \n \n \n );\n};\n\nfunction Bookmark(props){\n const powerforce = useContext(PowerforceContext);\n\n const [label, setLabel] = React.useState(props.bookmark.label);\n const [deleteThis, setDeleteThis] = React.useState(false);\n\n let textBoxStyles = {\n marginVertical: '5px',\n minWidth: '100px',\n marginRight: '10px',\n height: '50px'\n };\n\n let deleteTextBoxStyles = {\n marginVertical: '5px',\n minWidth: '100px',\n height: '50px',\n marginRight: '10px',\n backgroundColor: 'red',\n textDecoration:'line-through'\n };\n\n const markOrUnmark = (markForDeletion) => {\n\n if(!markForDeletion){\n props.onMarkForDeletion(props.bookmark)\n }else {\n props.onUnmarkForDeletion(props.bookmark)\n }\n\n setDeleteThis(!deleteThis);\n\n }\n\n const updateLabel = (newLabel) => {\n props.updateBookmarkLabel(newLabel, props.bookmark);\n setLabel(newLabel)\n }\n\n return (\n \n updateLabel(text)}\n placeholder={'Example: Q4 Projections'}\n editable={!deleteThis}\n activeUnderlineColor={deleteThis ? 'red' : powerforce.colors.primary}\n style={deleteThis ? deleteTextBoxStyles : textBoxStyles}\n />\n {\n markOrUnmark(deleteThis);\n }}\n color={powerforce.colors.primary}\n disabled={props.saving}\n >\n {deleteThis ? 'Undo Delete' : 'Delete'}\n \n \n );\n}\n\nexport default BookmarkManagerModal;\n","import * as React from 'react';\nimport { Modal, Portal, Text, Button, Provider, TextInput } from 'react-native-paper';\nimport {useContext} from \"react\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {Pressable, View} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\n\nconst InfoModal = (props) => {\n\n const powerforce = useContext(PowerforceContext);\n\n const containerStyle = {\n backgroundColor: 'white',\n padding: 20,\n paddingBottom: 40,\n zIndex: 999,\n margin: '20px',\n alignSelf: 'center'\n };\n\n\n\n const LastRefreshInfo = () => {\n\n if(props.refreshData !== null && props.refreshData.value !== undefined && props.refreshData.value.length !== 0){\n let date = new Date(props.refreshData.value[0].startTime);\n let refreshValue = date.toLocaleString(\"en-US\", {timeZoneName: \"short\"});\n return(\n \n Latest Refresh: {refreshValue}\n Status: {props.refreshData.value[0].status}\n \n )\n }else{\n return (\n No extra data available.\n )\n }\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default InfoModal;\n","import {Pressable, StyleSheet, Text, View} from \"react-native\";\nimport React, {useContext} from \"react\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {PowerBIEmbed} from \"powerbi-client-react\";\nimport {models} from \"powerbi-client\";\nimport './pbi.css';\nimport { Mobile } from '../../helpers/responsive'\nimport BookmarksMenu from \"./BookMarksMenu\";\nimport {Button} from \"react-native-paper\";\nimport BookmarkModal from \"./BookMarkModal\";\nimport {getData, postData} from \"../../helpers/api\";\nimport { useMediaQuery } from 'react-responsive'\nimport {Feather} from \"@expo/vector-icons\";\nimport BookmarkManagerModal from \"./BookMarkManagerModal\";\nimport InfoModal from \"./InfoModal\";\n\n\nexport default function PowerBiCustomEmbed(props) {\n\n // For displaying \"Best in landscape mode.\"\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' })\n\n const powerforce = useContext(PowerforceContext);\n const [report, setReport] = React.useState();\n const [modalVisible, setModalVisible] = React.useState(false);\n const [managerModalVisible, setManagerModalVisible] = React.useState(false);\n const [infoModalVisible, setInfoModalVisible] = React.useState(false);\n\n let fakeBookmarks = [\n {\"label\": \"test 1\", \"value\": \"H4sIAAAAAAAAA+1aW0/rOBD+K1VeeAkol155K21hzx4O9ECXFVqhykkmrc9x46zjFLoo/31tJ4G0TS/cCkJIVUl8GX/zzYw9nnKveTgKCZqdoQloh9oRpb8niP2umJquBfNtvuM6jVbdrdp21W81oGqbjhhFQ45pEGmH9xpHbAT8CkcxIlKgaPznRtcQIX00km8+IhHoWggsogEi+D9IB4suzmJIdA3uQkIZkiIvOeIgxU7FcPEuoJgHtlgRuRxP4RJcnrZeQEgZz991LUqfFKT5PtHgY8KFPPnoZFrfa8eqEYHrVA2/0bAt8BE4ddOuyt6MhzWDdI3PQjmmIyCPKMMuIqIxXUuKuMpVsHTtmNGJIOZeyzhHYmQv4JjPxEvbdWkc8Ei0DZRIIxEM/j0GBmpOhwYeznX5pr57dyGDKEo1VkNIPFnokW+XNGYuXID/+KJWTwTtfUaFURQCuaxClsiVrxCJlR2F4FMs9SdKH9ksBu8dIYICFyqXYwC+J+fcJOIrtWRh8a1ALbOwGpuujelth4Eg3NMOzUS2TJUzCYo4wkFmZKsKyGy0oNFoNpHXsDyraS/5gcSkuJszdc13arZh2k4Tmk1H+L1ThZeZ2i+a+hgHmZ4njMbhdiY/o3yZxNfwA3+R63anc/7X2WA4uO73tvKFICYkd4CXu8ASO+vhzbuDkej35XZ6C6/M2o9T/VcjaXtTGSveEoz2aMRghHIb916A8eQ0i8gOIu4i0DOxOStjyfbjOMg2RWM39G2y6I/2n+cXw0570Ds5v7jekU03gvp2ti2oleb9A4tQYe54dgpTIMvIHvqXu3IkV4jh9FDM4nU77YbdQSVTDwejSlceqFKFbDt6kKrN6fwwrABMNVYeG2R3po52DYg921yfnZyfMWLyZPjip5yfH+K0Hn/FVRk1XTQrIUYerJFYlWS5s8qQ1VOaPWghnlI+QA6RyQp1foncV6Y5SZ44C0S/ihkyvX1CvvDs8/nNTwuRoKQrpNp8dufIN93Pr2lhB/38yubbYZY+oyDKb8KpWzNK1FMatsLniZyY9v0bA5sJ2Kp/MX4O5gJSTMQeKNW+w2wH8S8XjPo4COQmlt71NwFeiHAlQWAkKIxyIc8QOp/PPUtofg84KCb+ZZKk1oymN7ac7vwSJW9LuuaOMfEYBMoAi0PWX7PkegM6EufAw2rSbYQVmtUWMu2a5TVty6tDtQ4ttPrK++op9apAKYuKJx5tEcGu2AmKx5o2ATZSQTyCIOVKKBWma2GIHhWff1p3TR8Wr+ll6mxzU28HnvxzCj5POZyEYouIckbzt+9YjrP0wsCnXNuHK6m9wKOxEljiQ54YxPEE9izDMvcN+RkYxqH6yCLO3Pz1yO33Q27tG/Vl5Kr2kKgAEYNRiTtEXBwo3ay4CCoOnseSiJPAe6IgAbq2by8JmlBvk5S9I+C3AEGmpgp1yjxgRzOlZBezvMxp6i8qImwfwZLl0qyysIe91do3iji/1UIt8FqGD4ZfNxwAs77DzU6FQzBbhFhs/ph7nFvc43K4uyo6L1WmHvnaouZsGkZlv5JNqfRFMMtir145Pe0UKtBrt4Btwq0rZnj0di7eXtfXNzpP6uL1muOaDjSh6TiW6dbNWsvZoYtvKHt2JJUfogBb+svAVwH2FRKz96i8vkOB/7NXqHcHSlwqh5eU8R3BWRt0RyjC0Y6AvH46wGUhr3c3X8qTcizfRGD60ICq2azV/UajCh/nVFjxY9jLsp8PfZhvR0j642hSrh+NeRQiF/oogBI9VT3IA2+DruqfLB7UTJL/AQduzJHkIQAA\"},\n {label: 'test 2', value: 'val2'},\n {label: 'test 3', value: 'val3'},\n ]\n\n const [bookmarks, setBookmarks] = React.useState(props.bookmarks);\n\n async function saveBookmark(name)\n {\n\n // Capture the report's current state with personalized visuals\n const capturedBookmark = await report.bookmarksManager.capture({ personalizeVisuals: true });\n\n // Build bookmark\n let bookmark = {\n label: name,\n value: capturedBookmark.state\n }\n\n let tempBookmarks = bookmarks;\n tempBookmarks.push(bookmark)\n\n // Add to backend here\n postData('/data/powerBiBookmark/' + props.code, powerforce.authToken, {bookmarks: tempBookmarks}).then(response => {\n\n // Add to dropdown\n setBookmarks(tempBookmarks)\n\n // Close modal\n setModalVisible(false);\n });\n\n }\n\n function manageBookMarks(bookmarks){\n postData('/data/powerBiBookmark/' + props.code, powerforce.authToken, {bookmarks: bookmarks}).then(response => {\n\n // Add to dropdown\n setBookmarks(bookmarks)\n\n // Close modal\n setManagerModalVisible(false);\n });\n }\n\n async function applyBookmark(state){\n if(state === 'reset'){\n await report.reload();\n }else{\n report.bookmarksManager.applyState(state);\n }\n\n }\n\n function getEmbedConfigs(){\n let embedConfigs;\n if(props.type === 'tile'){\n embedConfigs = {\n type: props.type, // Supported types: report, dashboard, tile, visual and qna\n id: props.reportId,\n dashboardId: props.dashboardId,\n embedUrl: props.embedUrl,\n accessToken: props.accessToken, // Keep as empty string, null or undefined\n tokenType: models.TokenType.Embed,\n }\n }else{\n embedConfigs = {\n type: props.type, // Supported types: report, dashboard, tile, visual and qna\n id: undefined,\n embedUrl: props.embedUrl,\n accessToken: props.accessToken, // Keep as empty string, null or undefined\n tokenType: models.TokenType.Embed,\n settings: {\n panes: {\n bookmarks: {\n visible: false\n },\n fields: {\n expanded: true\n },\n filters: {\n expanded: false,\n visible: true\n },\n pageNavigation: {\n visible: true\n },\n selection: {\n visible: true\n },\n syncSlicers: {\n visible: true\n },\n visualizations: {\n expanded: true\n }\n },\n bars: {\n statusBar: {\n visible: true\n },\n actionBar: {\n visible: true\n }\n },\n background: models.BackgroundType.Transparent,\n personalBookmarksEnabled: true\n }\n }\n }\n\n return embedConfigs;\n }\n\n const [height, setHeight] = React.useState(getHeight());\n function getHeight(){\n if(props.height){\n return props.height;\n }\n return '80vh';\n }\n\n function getWidth(){\n if(props.width){\n return props.width;\n }\n return '100%';\n }\n\n const bookMarksModal = () => {\n if(props.reportType === 'PowerBIReport'){\n return (\n {setModalVisible(false);}}\n onSave={saveBookmark}\n />\n )\n }\n }\n\n const bookMarksManagerModal = () => {\n if(props.reportType === 'PowerBIReport'){\n return (\n {setManagerModalVisible(false);}}\n onSave={manageBookMarks}\n bookmarks={bookmarks}\n />\n )\n }\n }\n\n const infoModal = () => {\n return (\n {setInfoModalVisible(false);}}\n refreshData={props.refreshData}\n />\n )\n }\n\n\n\n const [fullScreenIcon, setFullScreenIcon] = React.useState('maximize-2');\n const toggleFullScreen = () => {\n props.toggleTopMenu();\n props.toggleSideMenu();\n let icon = fullScreenIcon === 'maximize-2' ? 'minimize-2' : 'maximize-2';\n setFullScreenIcon(icon);\n\n if(height === getHeight()){\n setHeight('90vh')\n }else{\n setHeight(getHeight())\n }\n }\n\n const refreshFilters = async () => {\n\n await report.reload();\n /*console.log('refreshFilters');\n await report.updateFilters(models.FiltersOperations.RemoveAll);\n let activePage = await report.getActivePage();\n\n let reportFilters = await activePage.getFilters();\n console.log(reportFilters);\n\n console.log(activePage);\n await activePage.updateFilters(models.FiltersOperations.RemoveAll);\n\n let visuals = await activePage.getVisuals();\n visuals.map(function (visual) {\n console.log(visual);\n visual.updateFilters(models.FiltersOperations.RemoveAll)\n })*/\n }\n\n const FullScreen = () => {\n return(\n \n \n \n )\n }\n\n const Info = () => {\n return (\n {setInfoModalVisible(true)}}\n style={{marginLeft:\"auto\"}}\n >\n \n \n )\n }\n\n\n\n const bookMarksMenu = () => {\n if(props.reportType === 'PowerBIReport'){\n return (\n \n \n \n \n \n \n\n\n \n\n \n \n \n\n \n\n \n )\n }else{\n return(\n \n \n \n \n \n \n )\n }\n }\n\n if(props.accessToken === undefined){\n return (\n \n Could not get PBI Report.\n \n )\n }\n\n return (\n \n\n {bookMarksModal()}\n {bookMarksManagerModal()}\n {infoModal()}\n\n {isPortrait ? Best viewed in landscape. : null }\n\n \n\n \n \n \n\n {bookMarksMenu()}\n\n \n\n {\n setReport(embeddedReport);\n\n }}\n />\n\n\n \n \n \n );\n\n}\n\n","import * as React from 'react';\nimport { Card, Paragraph } from 'react-native-paper';\nimport { Feather } from '@expo/vector-icons';\nimport {Image, Pressable, Text, View} from \"react-native\";\nimport {isDesktop} from '../../helpers/responsive'\n\nexport default function SimpleCard(props){\n\n //Create Image or Icon\n const image = () => {\n if(props.data.icon){\n return (\n \n \n \n );\n }\n\n if(props.data.coverUri){\n\n\n return \n\n\n // Old version. May remove later.\n /*return */\n }\n\n }\n\n //OnPress Functions - arguments will always be an array\n function goToExternalLink(args){\n window.open(args[0], '_blank');\n }\n\n function goToInternalLink(args){\n if(args[1]){\n props.navigation.navigate(\n args[0],\n {\n screenName: args[1],\n recordID: undefined,\n tableName: undefined,\n }\n )\n }else{\n if(args[0].match(/\\//)){\n let screen = args[0].replace(/^[^/]+\\//, '');\n let module = args[0].replace(/\\/[^\\/]+$/, '');\n props.navigation.navigate(\n module,\n {\n screenName: screen,\n recordID: undefined,\n tableName: undefined,\n }\n )\n }\n props.navigation.navigate(args[0]);\n }\n\n }\n\n function mailTo(args){\n if(args[1]){\n window.location.href = \"mailto:\" + args[0] + \"?subject=\" + args[1];\n }else{\n window.location.href = \"mailto:\" + args[0];\n }\n }\n\n function alertWeb(args){\n alert(args[0]);\n }\n\n //Enabling dynamic OnPress Functions\n function doOnPressAction(){\n let functionName = props.data.onPressFunction;\n if(typeof onPressActions[functionName] === 'function' ){\n return onPressActions[functionName](props.data.onPressFunctionArgs);\n }else{\n console.log('function does not exist');\n return;\n }\n\n }\n const onPressActions = {\n 'goToExternalLink' : goToExternalLink,\n 'goToInternalLink' : goToInternalLink,\n 'mailTo' : mailTo,\n 'alertWeb' : alertWeb\n }\n\n const [borderColor, setBorderColor] = React.useState('rgba(0,0,0,.25)');\n const [cursorStyle, setCursorStyle] = React.useState(props.data.onPressFunction === 'none' ? '' : 'pointer');\n const [displayText, setDisplayText] = React.useState(false);\n\n\n const hover = () => {\n if(props.data.onPressFunction !== 'none'){\n setBorderColor('0,0,0,.5');\n }\n setDisplayText(true);\n }\n\n const unHover = () => {\n console.log('unhover');\n setBorderColor('rgba(0,0,0,.25)');\n setDisplayText(false);\n }\n\n\n return(\n \n \n { image() }\n \n \n {props.data.title}\n \n \n {displayText ? props.data.content : ''}\n \n \n \n\n\n\n \n )\n\n\n //Old style card kept for posterity, may remove later if not needed.\n /*return(\n \n \n \n { image() }\n \n {props.data.content}\n \n \n \n )*/\n\n}\n","import {addRoleCheckboxes, addRoleDefaultValues, addRoleDefaultValuesToNewComponent} from \"../FoundationsPlugin\";\n\nconst script = function() {\n\n //console.log('### Text Script ###');\n\n}\n\nexport const TextMethods = (options, editor) => {\n\n console.log(options);\n\n let config = {\n // Model definition\n model: {\n // Default properties\n defaults: {\n script,\n tagName: 'div',\n droppable: false, // Can't drop other elements inside\n attributes: { // Default attributes\n componentId: 'add',\n //type: 'text',\n //name: 'default-name',\n //placeholder: 'Insert text here',\n },\n traits: [\n {\n type: 'text',\n label: 'Width',\n name: 'width',\n },\n {\n type: 'text',\n label: 'Font Size',\n name: 'fontSize',\n },\n {\n type: 'select',\n label: 'Text Align',\n name: 'textAlign',\n options: [ // Array of options\n {id: 'left', name: 'left'},\n {id: 'right', name: 'right'},\n {id: 'center', name: 'center'},\n ]\n },\n ],\n\n },\n updated(property, value, prevValue) {\n //console.log('updated', property, value, prevValue);\n if (property === 'traits') {\n\n this.views[0].el.style.width = value.target.attributes.attributes.width;\n this.views[0].el.style.fontSize = value.target.attributes.attributes.fontSize;\n this.views[0].el.style.textAlign = value.target.attributes.attributes.textAlign;\n\n }\n }\n },\n view: {\n updated(property, value, prevValue) {\n //console.log('updateView', property, value, prevValue);\n }\n }\n }\n\n if(options.editorType === 'full'){\n //Add role checkboxes\n config = addRoleCheckboxes(options.roles, config);\n }\n\n return config;\n}\n\n\n\n/* Label for sidebar*/\n\nexport const TextLabel = '
' +\n '
Text
' +\n '
'\n\n/* Component structure */\nexport const Text = () => {\n\n let json = {\n \"type\": \"text\",\n \"attributes\": {\n \"fontSize\": \"14px\",\n \"textAlign\": \"left\",\n \"width\": \"100%\",\n \"style\": \"font-size:14px;width:100%;\"\n },\n \"components\": [\n {\n \"type\": \"textnode\",\n \"content\": \"Text Here\"\n }\n ]\n };\n\n return json;\n\n\n}\n","import {addRoleCheckboxes, addRoleDefaultValues, addRoleDefaultValuesToNewComponent} from \"../FoundationsPlugin\";\n\nconst script = function() {\n\n //console.log('### Blank Script ###');\n\n}\n\nexport const SpaceMethods = (options, editor) => {\n\n console.log(options);\n\n let config = {\n // Model definition\n model: {\n // Default properties\n defaults: {\n script,\n tagName: 'div',\n droppable: false, // Can't drop other elements inside\n attributes: { // Default attributes\n componentId: 'add',\n //type: 'text',\n //name: 'default-name',\n //placeholder: 'Insert text here',\n },\n traits: [\n {\n type: 'text',\n label: 'Height',\n name: 'height',\n },\n ],\n\n },\n updated(property, value, prevValue) {\n //console.log('updated', property, value, prevValue);\n if (property === 'traits') {\n this.views[0].el.style.height = value.target.attributes.attributes.height;\n }\n }\n },\n view: {\n updated(property, value, prevValue) {\n //console.log('updateView', property, value, prevValue);\n }\n }\n }\n\n if(options.editorType === 'full'){\n //Add role checkboxes\n config = addRoleCheckboxes(options.roles, config);\n }\n\n console.log(config);\n\n return config;\n}\n\n\n\n/* Label for sidebar*/\n\nexport const SpaceLabel = '
' +\n '
Space
' +\n '
'\n\n/* Component structure */\nexport const Space = () => {\n\n let json = {\n \"type\": \"space\",\n \"attributes\": {\n \"width\": \"100%\",\n \"height\": \"32px\",\n \"style\": \"font-size:14px;width:100%;height:32px;\"\n },\n \"components\": [\n {\n \"type\": \"textnode\",\n \"content\": \" \"\n }\n ]\n };\n\n return json;\n\n\n}\n","import {addRoleCheckboxes, addRoleDefaultValues, addRoleDefaultValuesToNewComponent} from \"../FoundationsPlugin\";\nimport * as React from \"react\";\nimport {PowerforceContext} from \"../../../helpers/context\";\n\nconst script = function() {\n\n //console.log('### Blank Script ###');\n\n}\n\nexport const DividerMethods = (options, editor) => {\n\n console.log(options);\n\n let config = {\n // Model definition\n model: {\n // Default properties\n defaults: {\n script,\n tagName: 'div',\n droppable: false, // Can't drop other elements inside\n attributes: { // Default attributes\n componentId: 'add',\n //type: 'text',\n //name: 'default-name',\n //placeholder: 'Insert text here',\n },\n traits: [],\n\n },\n updated(property, value, prevValue) {\n //console.log('updated', property, value, prevValue);\n if (property === 'traits') {\n this.views[0].el.style.height = value.target.attributes.attributes.height;\n }\n }\n },\n view: {\n updated(property, value, prevValue) {\n //console.log('updateView', property, value, prevValue);\n }\n }\n }\n\n if(options.editorType === 'full'){\n //Add role checkboxes\n config = addRoleCheckboxes(options.roles, config);\n }\n\n console.log(config);\n\n return config;\n}\n\n\n\n/* Label for sidebar*/\n\nexport const DividerLabel = '
' +\n '
Divider
' +\n '
'\n\n/* Component structure */\nexport const Divider = () => {\n\n let json = {\n \"type\": \"divider\",\n \"attributes\": {\n \"width\": \"100%\",\n \"height\": \"5px\",\n \"style\": \"background-color: #f05d2a;width:100%;height:5px;\"\n },\n \"removable\": true,\n \"editable\" : true,\n \"components\": [\n {\n \"type\": \"textnode\",\n \"content\": \" \"\n }\n ]\n };\n\n return json;\n\n\n}\n","import {addRoleCheckboxes, addRoleDefaultValues, addRoleDefaultValuesToNewComponent} from \"../FoundationsPlugin\";\n\nconst script = function() {\n\n //console.log('### Image Script ###');\n\n}\n\nexport const ImageMethods = (options, editor) => {\n\n console.log(options);\n\n let config = {\n // Model definition\n model: {\n // Default properties\n defaults: {\n script,\n tagName: 'imageHolder', //change to IMG?\n droppable: false, // Can't drop other elements inside\n attributes: { // Default attributes\n width: '25%',\n height: '25vh',\n componentId: 'add',\n },\n traits: [\n {\n type: 'text',\n label: 'Width',\n name: 'width',\n },\n {\n type: 'text',\n label: 'Height',\n name: 'height',\n },\n {\n type: 'text',\n label: 'URI',\n name: 'src',\n },\n ],\n\n },\n updated(property, value, prevValue) {\n console.log('updated', property, value, prevValue);\n if (property === 'traits') {\n console.log(this.views);\n this.views[0].el.style.width = value.target.attributes.attributes.width;\n this.views[0].el.style.height = value.target.attributes.attributes.height;\n\n }\n },\n\n },\n view: {\n updated(property, value, prevValue) {\n //console.log('updateView', property, value, prevValue);\n }\n }\n }\n\n if(options.editorType === 'full'){\n\n //Add role checkboxes\n config = addRoleCheckboxes(options.roles, config);\n\n }\n\n\n editor.on('component:update', (newModel) => {\n\n //Make sure this only fires on 'imageHolders'\n if(newModel.parent() && newModel.parent().attributes.tagName === \"imageHolder\"){\n\n //For saving change the parent element trait\n let parent = newModel.parent();\n let parentAtts = parent.getAttributes();\n parentAtts.src = newModel.changed.src;\n parent.setAttributes({ ...parentAtts })\n\n //For viewing, change the divs backgroundimage\n newModel.view.$el[0].parentElement.children[0].style.backgroundImage = 'url(' + newModel.changed.src + ')';\n\n //For saving change the parent element trait\n //newModel.view.$el[0].parentElement.setAttribute('src', newModel.changed.src);\n }\n });\n\n return config;\n}\n\n\n\n/* Label for sidebar*/\n\nexport const ImageLabel = '
' +\n '
Image
' +\n '
'\n\n/* Component structure */\nexport const Image = () => {\n\n let json = {\n \"type\": \"imageHolder\",\n \"draggable\": true,\n \"editable\": true,\n \"selectable\": true,\n \"classes\": [\n \"basic-image\"\n ],\n \"attributes\": {\n \"width\": \"25%\",\n \"height\": \"25vh\",\n \"src\": \"/media/smartsheet.png\",\n \"style\": \"overflow:hidden;width:25%;height:25vh;position: relative;min-height: 10px;\"\n },\n \"components\": [\n {\n \"draggable\": false,\n \"droppable\": false,\n \"highlightable\": false,\n \"selectable\": false,\n \"hoverable\": false,\n \"attributes\": {\n \"style\": \"z-index:1;width:100%;height:100%;background-size:contain;background-image:url('/media/smartsheet.png');background-position: center center;background-repeat: no-repeat;\",\n },\n },\n {\n \"type\": \"image\",\n \"draggable\": false,\n \"editable\": true,\n \"selectable\": false,\n \"resizable\": false,\n \"attributes\": {\n \"src\": \"/media/smartsheet.png\",\n \"style\": \"position:absolute;top:0px;left:0px;height:100%;width:100%;opacity:0;z-index:2;\"\n },\n }\n ]\n };\n\n return json;\n\n\n}\n","import {addRoleCheckboxes, addRoleDefaultValues, addRoleDefaultValuesToNewComponent} from \"../FoundationsPlugin\";\n\nconst script = function() {\n\n //console.log('### Blank Script ###');\n\n}\n\nexport const PowerBiEmbedMethods = (options, editor) => {\n\n console.log(options);\n\n let companies = options.companies;\n companies.unshift({id: null, name: 'None'})\n\n let config = {\n // Model definition\n model: {\n // Default properties\n defaults: {\n script,\n tagName: 'div',\n droppable: false, // Can't drop other elements inside\n attributes: { // Default attributes\n componentId: 'add',\n //type: 'text',\n //name: 'default-name',\n //placeholder: 'Insert text here',\n },\n traits: [\n {\n type: 'text',\n label: 'Title',\n name: 'title',\n },\n {\n type: 'select',\n label: 'Company',\n name: 'company',\n options: companies\n },\n {\n type: 'text',\n label: 'Workspace Id',\n name: 'workspaceId',\n },\n {\n type: 'text',\n label: 'Report Id',\n name: 'reportId',\n },\n {\n type: 'text',\n label: 'Report Group',\n name: 'reportGroup',\n },\n {\n type: 'text',\n label: 'Dataset Id',\n name: 'datasetId',\n },\n {\n type: 'checkbox',\n label: 'Is Dashboard?',\n name: 'isDashboard',\n },\n {\n type: 'checkbox',\n label: 'Is Tile?',\n name: 'isTile',\n },\n {\n type: 'text',\n label: 'Tile Id',\n name: 'tileId',\n },\n {\n type: 'text',\n label: 'Width',\n name: 'width',\n },\n {\n type: 'text',\n label: 'Height',\n name: 'height',\n },\n ],\n\n },\n updated(property, value, prevValue) {\n //console.log('updated', property, value, prevValue);\n if (property === 'traits') {\n this.views[0].el.style.width = value.target.attributes.attributes.width;\n this.views[0].el.style.height = value.target.attributes.attributes.height;\n }\n }\n },\n view: {\n updated(property, value, prevValue) {\n console.log('updateView', property, value, prevValue);\n },\n events: {\n click: 'getCompanySelectValue',\n },\n getCompanySelectValue(event){\n if(event.target.attributes.company !== undefined){\n this.model.addAttributes({'company':event.target.attributes.company.value})\n }\n }\n }\n }\n\n if(options.editorType === 'full'){\n //Add role checkboxes\n config = addRoleCheckboxes(options.roles, config);\n }\n\n console.log(config);\n\n return config;\n}\n\n\n\n/* Label for sidebar*/\n\nexport const PowerBiEmbedLabel = '
' +\n '
PowerBi Embed
' +\n '
'\n\n/* Component structure */\nexport const PowerBiEmbed = () => {\n\n let json = {\n \"type\": \"powerBiEmbed\",\n \"attributes\": {\n \"title\": \"\",\n \"workspaceId\": \"\",\n \"reportId\": \"\",\n \"reportGroup\": \"\",\n \"datasetId\": \"\",\n \"isDashboard\": false,\n \"isTile\": false,\n \"tileId\": \"\",\n \"width\": \"100%\",\n \"height\": \"80vh\",\n \"style\": \"font-size:14px;width:100%;height:80vh;background-size:contain;background-repeat: no-repeat;background-position: center;background-image:url('/media/pbi_logo.jpg');\"\n },\n \"components\": [\n {\n \"type\": \"textnode\",\n \"content\": \" \"\n }\n ]\n };\n\n return json;\n\n\n}\n","import {addRoleCheckboxes, addRoleDefaultValues, addRoleDefaultValuesToNewComponent} from \"../FoundationsPlugin\";\n\nconst script = function() {\n\n //console.log('### Card Script ###');\n\n const initLib = function() {\n window.feather.replace();\n };\n\n if (typeof window.feather == 'undefined') {\n const script = document.createElement('script');\n script.src = 'https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js';\n script.onload = initLib;\n document.body.appendChild(script);\n\n } else {\n initLib();\n }\n}\n\nexport const CardMethods = (options, editor) => {\n\n console.log(options);\n\n let config = {\n // Model definition\n model: {\n // Default properties\n defaults: {\n script,\n tagName: 'div',\n droppable: false, // Can't drop other elements inside\n attributes: { // Default attributes\n componentId: 'add',\n //type: 'text',\n //name: 'default-name',\n //placeholder: 'Insert text here',\n },\n traits: [\n {\n type: 'text',\n label: 'Width',\n name: 'width',\n },\n {\n type: 'select',\n label: 'Image or Icon',\n name: 'imageOrIcon',\n options: [ // Array of options\n {id: 'image', name: 'image'},\n {id: 'icon', name: 'icon'},\n ]\n },\n {\n type: 'text',\n label: 'Icon Name',\n name: 'iconName',\n }\n ],\n\n },\n updated(property, value, prevValue) {\n //console.log('updated', property, value, prevValue);\n if (property === 'traits') {\n\n this.views[0].el.style.width = value.target.attributes.attributes.width;\n\n if (value.target.attributes.attributes.imageOrIcon === 'icon') {\n this.views[0].el.querySelector('.card-image').style.display = 'none';\n this.views[0].el.querySelector('.card-icon').style.display = 'block';\n\n if (value.target.attributes.attributes.iconName in document.getElementsByTagName('iframe')[0].contentWindow.feather.icons) {\n this.views[0].el.querySelector('.card-icon').innerHTML = iconHtml(value.target.attributes.attributes.iconName);\n document.getElementsByTagName('iframe')[0].contentWindow.feather.replace()\n } else {\n alert('That is not a valid icon name.');\n }\n }\n\n if (value.target.attributes.attributes.imageOrIcon === 'image') {\n this.views[0].el.querySelector('.card-icon').style.display = 'none';\n this.views[0].el.querySelector('.card-image').style.display = 'block';\n }\n\n }\n },\n removed(something){\n console.log('removed!!!!', something);\n }\n }\n };\n\n if(options.editorType === 'full'){\n let fullConfigAdditions = [\n {\n type: 'select',\n label: 'On Press Action',\n name: 'onPressAction',\n options: [ // Array of options\n {id: 'none', name: 'none'},\n {id: 'goToExternalLink', name: 'goToExternalLink'},\n {id: 'goToInternalLink', name: 'goToInternalLink'},\n {id: 'mailTo', name: 'mailTo'},\n {id: 'alertWeb', name: 'alertWeb'},\n ]\n },\n {\n type: 'text',\n label: 'OnPress Arg 1',\n name: 'onPressFunctionArg1',\n },\n {\n type: 'text',\n label: 'OnPress Arg 2',\n name: 'onPressFunctionArg2',\n }\n ];\n config.model.defaults.traits.push(...fullConfigAdditions);\n\n //Add the users roles as default attributes\n //Add the checkboxes\n config = addRoleCheckboxes(options.roles, config);\n }\n\n return config;\n}\n\n\n\nfunction iconHtml(iconName){\n return '';\n}\n\n/* Label for sidebar*/\n\nexport const CardLabel = '
' +\n '
Card
' +\n '
'\n\n/* Component structure */\nexport const Card = () => {\n\n let json = {\n \"type\": \"card\",\n \"attributes\": {\n \"onPressAction\": \"none\",\n \"width\": \"25%\",\n \"iconName\": \"circle\",\n \"imageOrIcon\": \"image\",\n \"style\": \"padding:5px;width:25%;\"\n },\n \"components\": [\n {\n \"draggable\": false,\n \"droppable\": false,\n \"highlightable\": false,\n \"selectable\": false,\n \"hoverable\": false,\n \"attributes\": {\n \"style\": \"height:100%;border-color: rgba(0, 0, 0, 0.12);border-style: solid;border-radius: 5px;border-width: 1px;box-shadow: rgb(0 0 0 / 24%) 0px 0.5px 0.75px;\"\n },\n \"components\": [\n {\n \"type\": \"text\",\n \"draggable\": false,\n \"selectable\": false,\n \"attributes\": {\n \"style\": \"font-size:20px;padding-left:16px;min-height:50px;align-items: center;display: flex;\"\n },\n \"components\": [\n {\n \"type\": \"textnode\",\n \"content\": \"This is a simple title\"\n }\n ]\n },\n {\n \"type\": \"image\",\n \"draggable\": false,\n \"editable\": true,\n \"resizable\": false,\n \"selectable\": false,\n \"classes\": [\n \"card-image\"\n ],\n \"attributes\": {\n \"src\": \"/media/smartsheet.png\",\n \"style\": \"max-height:175px; display:block; margin:auto; padding:10px;max-width:100%;\"\n }\n },\n {\n \"draggable\": false,\n \"droppable\": false,\n \"selectable\": false,\n \"classes\": [\n \"card-icon\"\n ],\n \"attributes\": {\n \"style\": \"display:none;\"\n },\n \"components\": [\n {\n \"tagName\": \"i\",\n \"attributes\": {\n \"data-feather\": \"circle\",\n \"style\": \"height:150px;width:100%;text-align:center;padding:10px;\"\n }\n }\n ]\n },\n {\n \"type\": \"text\",\n \"draggable\": false,\n \"selectable\": false,\n \"attributes\": {\n \"style\": \"padding:0px 16px 16px 16px;font-size:14px;\"\n },\n \"components\": [\n {\n \"type\": \"textnode\",\n \"content\": \"This is just a Lorem text: Lorem ipsum dolor sit amet\"\n }\n ]\n }\n ]\n }\n ]\n };\n\n return json;\n\n /* We can also use JSX for components, but it's easier to keep it consistent\n with the ScreenEditorService object if it's JSON */\n\n /* return (\n\n \n \n \n This is a simple title\n \n \n \n {Icon({iconName:'circle'})}\n \n \n This is just a Lorem text: Lorem ipsum dolor sit amet\n \n \n \n )*/\n}\n\nconst Icon = ({iconName}) => {\n return (\n \n );\n}\n","import {addRoleCheckboxes, addRoleDefaultValues, addRoleDefaultValuesToNewComponent} from \"../FoundationsPlugin\";\n\nconst script = function() {\n\n //console.log('### Blank Script ###');\n\n}\n\nexport const BlankComponentMethods = (options, editor) => {\n\n console.log(options);\n\n let config = {\n // Model definition\n model: {\n // Default properties\n defaults: {\n script,\n tagName: 'div',\n droppable: false, // Can't drop other elements inside\n attributes: { // Default attributes\n componentId: 'add',\n //type: 'text',\n //name: 'default-name',\n //placeholder: 'Insert text here',\n },\n traits: [],\n\n },\n updated(property, value, prevValue) {\n //console.log('updated', property, value, prevValue);\n if (property === 'traits') {\n\n }\n }\n },\n view: {\n updated(property, value, prevValue) {\n //console.log('updateView', property, value, prevValue);\n }\n }\n }\n\n\n return config;\n}\n\n\n\n/* Label for sidebar*/\n\nexport const BlankComponentLabel = '
' +\n '
Blank
' +\n '
'\n\n/* Component structure */\nexport const BlankComponent = () => {\n\n let json = {\n \"type\": \"text\",\n \"attributes\": {\n \"fontSize\": \"14px\",\n \"textAlign\": \"left\",\n \"width\": \"100%\",\n \"style\": \"font-size:14px;width:100%;\"\n },\n \"components\": [\n {\n \"type\": \"textnode\",\n \"content\": \" \"\n }\n ]\n };\n\n return json;\n\n\n}\n","//The MIT License (MIT)\n//\n//Copyright (c) 2015-16 jillix , https://github.com/jillix/piklor.js/\n//Modified to work Copyright (c) 2020-21 Brendon Ngirazi\n\nexport default class Piklor {\n\n /**\n * Piklor\n * Creates a new `Piklor` instance.\n *\n * @name Piklor\n * @function\n * @param {String|Element} sel The element where the color picker will live.\n * @param {Array} colors An array of strings representing colors.\n * @param {Object} options An object containing the following fields:\n *\n * - `open` (String|Element): The HTML element or query selector which will open the picker.\n * - `openEvent` (String): The open event (default: `\"click\"`).\n * - `style` (Object): Some style options:\n * - `display` (String): The display value when the picker is opened (default: `\"block\"`).\n * - `template` (String): The color item template. The `{color}` snippet will be replaced\n * with the color value (default: `\"
\"`).\n * - `autoclose` (Boolean): If `false`, the color picker will not be hided by default (default: `true`).\n * - `closeOnBlur` (Boolean): If `true`, the color picker will be closed when clicked outside of it (default: `false`).\n *\n * @return {Piklor} The `Piklor` instance.\n */\n constructor(sel, colors, options, /*event = 'pick'*/ ) {\n var self = this;\n options = options ? options : {};\n colors = colors ? colors : [\n \"#1abc9c\", \"#2ecc71\", \"#3498db\", \"#9b59b6\", \"#34495e\", \"#16a085\", \"#27ae60\", \"#2980b9\", \"#8e44ad\", \"#2c3e50\", \"#f1c40f\", \"#e67e22\", \"#e74c3c\", \"#ecf0f1\", \"#95a5a6\", \"#f39c12\", \"#d35400\", \"#c0392b\", \"#bdc3c7\", \"#7f8c8d\"\n ];\n options.open = self.getElm(options.open);\n options.openEvent = options.openEvent || \"click\";\n options.style = Object(options.style);\n options.style.display = options.style.display || \"block\";\n options.closeOnBlur = options.closeOnBlur || false;\n options.template = options.template || \"
\";\n //self.pick = new Event(event);\n self.elm = self.getElm(sel);\n self.cbs = [];\n self.color = '';\n self.isOpen = true;\n self.colors = colors;\n self.options = options;\n self.render();\n\n // Handle the open element and event.\n if (options.open) {\n options.open.addEventListener(options.openEvent, ev => {\n self.isOpen ? self.close() : self.open();\n });\n }\n\n // Click on colors\n self.elm.addEventListener(\"click\", ev => {\n var col = ev.target.getAttribute(\"data-col\");\n if (!col) {\n return;\n }\n self.color = col;\n //self.elm.dispatchEvent(self.pick);\n self.set(col);\n self.close();\n });\n\n if (options.closeOnBlur) {\n window.addEventListener(\"click\", ev => {\n // check if we didn't click 'open' and 'color pallete' elements\n if (ev.target != options.open && ev.target != self.elm && self.isOpen) {\n self.close();\n }\n });\n }\n\n if (options.autoclose !== false) {\n self.close();\n }\n };\n\n /**\n * getElm\n * Finds the HTML element.\n *\n * @name getElm\n * @function\n * @param {String|Element} el The HTML element or query selector.\n * @return {HTMLElement} The selected HTML element.\n */\n getElm(el) {\n if (typeof el === \"string\") {\n return document.querySelector(el);\n }\n return el;\n };\n\n /**\n * render\n * Renders the colors.\n *\n * @name render\n * @function\n */\n render() {\n var self = this,\n html = \"\";\n\n self.colors.forEach(c => {\n html += self.options.template.replace(/\\{color\\}/g, c);\n });\n\n self.elm.innerHTML = html;\n };\n\n /**\n * close\n * Closes the color picker.\n *\n * @name close\n * @function\n */\n close() {\n this.elm.style.display = \"none\";\n this.isOpen = false;\n };\n\n /**\n * open\n * Opens the color picker.\n *\n * @name open\n * @function\n */\n open() {\n this.elm.style.display = this.options.style.display;\n this.isOpen = true;\n };\n\n /**\n * colorChosen\n * Adds a new callback in the colorChosen callback buffer.\n *\n * @name colorChosen\n * @function\n * @param {Function} cb The callback function called with the selected color.\n */\n colorChosen(cb) {\n this.cbs.push(cb);\n };\n\n /**\n * set\n * Sets the color picker color.\n *\n * @name set\n * @function\n * @param {String} c The color to set.\n * @param {Boolean} p If `false`, the `colorChosen` callbacks will not be called.\n */\n set(c, p) {\n var self = this;\n self.color = c;\n if (p === false) {\n return;\n }\n self.cbs.forEach(cb => {\n cb && cb(c);\n });\n self.cbs = [];\n //self.elm.dispatchEvent(self.pick);\n };\n};\n","//import {Grid, GridLabel, GridMethods, GridStyles} from \"./components/Grid\";\nimport {Text, TextLabel, TextMethods} from \"./components/Text\";\nimport {Space, SpaceLabel, SpaceMethods} from \"./components/Space\";\nimport {Divider, DividerLabel, DividerMethods} from \"./components/Divider\";\nimport {Image, ImageLabel, ImageMethods} from \"./components/Image\";\nimport {PowerBiEmbed, PowerBiEmbedLabel, PowerBiEmbedMethods} from \"./components/PowerBiEmbed\";\nimport {Card, CardLabel, CardMethods} from \"./components/Card\";\n\nimport {BlankComponent, BlankComponentLabel, BlankComponentMethods} from \"./components/BlankComponent\";\nimport {deleteData} from \"../../helpers/api\";\nimport Piklor from \"./helpers/colorPicker\";\nimport React from 'react';\n\nexport const FoundationsPlugin = (editor, options) => {\n\n // Components\n\n //Grid - Block and Type\n editor.Components.addType('grid', BlankComponentMethods(options, editor));\n //editor.BlockManager.add('grid', {label: BlankComponentLabel, content: BlankComponent,})\n //editor.Components.addType('grid', BlankComponentMethods(options, editor));\n //editor.addStyle(GridStyles);\n\n //Text\n editor.BlockManager.add('text', {label: TextLabel, content: Text,})\n editor.Components.addType('text', TextMethods(options, editor));\n\n //Space\n editor.BlockManager.add('space', {label: SpaceLabel, content: Space,})\n editor.Components.addType('space', SpaceMethods(options, editor));\n\n //Divider\n editor.BlockManager.add('divider', {label: DividerLabel, content: Divider,})\n editor.Components.addType('divider', DividerMethods(options, editor));\n\n //Image - Block and Type\n editor.BlockManager.add('imageHolder', {label: ImageLabel, content: Image,})\n editor.Components.addType('imageHolder', ImageMethods(options, editor));\n\n //PowerBiEmbed - Block and Type\n editor.BlockManager.add('powerBiEmbed', {label: PowerBiEmbedLabel, content: PowerBiEmbed,})\n editor.DomComponents.addType('powerBiEmbed', PowerBiEmbedMethods(options, editor));\n\n //Card\n editor.BlockManager.add('card', {label: CardLabel, content: Card,})\n editor.Components.addType('card', CardMethods(options, editor));\n\n //Screeneditor\n editor.Components.addType('screenEditor', BlankComponentMethods(options, editor));\n\n //Hierarchy\n editor.Components.addType('hierarchy', BlankComponentMethods(options, editor));\n\n\n\n //Add Roles to all Components\n //console.log(editor.getComponents());\n\n const um = editor.UndoManager;\n editor.on('update', (some) => {\n console.log(um.getStack());\n })\n\n //This makes sure no IDs are cloned\n editor.on('component:clone', (newModel) => {\n newModel.removeAttributes(['componentId', 'adminComponentId']);\n });\n\n //Update event - could be useful later\n /*editor.on('component:update', (newModel) => {\n console.log(newModel);\n });*/\n\n // When adding a new component, add the user's roles to the component\n editor.on('component:add', (model) => {\n // Auto add user's roles when creating a new component\n if(model.attributes.attributes.componentId === 'add'){\n addRoleDefaultValuesToNewComponent(options.userRoles, model)\n }\n });\n\n //Asset Manager\n // We are passed our authtoken from ScreenEditor\n editor.on('asset:remove', (asset) => {\n console.log(asset);\n console.log(options);\n deleteData('/data/media', options.powerforce.authToken, asset)\n .then((response) => {\n console.log(response);\n });\n })\n\n //add asset\n editor.on('asset:add', (asset) => {\n console.log(asset);\n console.log(options);\n })\n\n /*** RTE ***/\n // When mounting or deslecting a subtext component (using the RTE)\n // make sure it is not selectable or draggable\n\n // Function to make sure text components children are not badgeable or selecteable\n function removeSubTextEditConfigs(component){\n component.attributes.components.models.forEach((model) => {\n model.set({\n badgable: false,\n draggable: false,\n highlightable: false,\n hoverable: false,\n selectable: false,\n })\n if(model.attributes.type === 'font'){\n console.log(model);\n }\n model.attributes.components.models.forEach((subModel) => {\n //console.log('submodel', subModel)\n subModel.set({\n badgable: false,\n draggable: false,\n highlightable: false,\n hoverable: false,\n selectable: false,\n })\n removeSubTextEditConfigs(subModel)\n });\n })\n }\n\n editor.on('component:mount', (component) => {\n // Check if mounted component is a 'text' component\n if (component.attributes.tagName === 'div' && component.attributes.type === 'text') {\n removeSubTextEditConfigs(component);\n }\n })\n\n editor.on('component:deselected', (component) => {\n // Check if mounted component is a 'text' component\n if (component.attributes.tagName === 'div' && component.attributes.type === 'text') {\n removeSubTextEditConfigs(component);\n }\n });\n\n // https://grapesjs.com/docs/api/rich_text_editor.html#add\n const rte = editor.RichTextEditor;\n let colorPicker = null;\n const colors = [\n options.powerforce.colors.primary,\n options.powerforce.colors.secondary,\n options.powerforce.colors.accent,\n \"#67c8f2\",\n \"#b0b0b0\",\n \"#1abc9c\",\n \"#2ecc71\",\n \"#3498db\",\n \"#9b59b6\",\n \"#34495e\",\n \"#16a085\",\n \"#27ae60\",\n \"#2980b9\",\n \"#8e44ad\",\n \"#2c3e50\",\n \"#f1c40f\",\n \"#e67e22\",\n \"#e74c3c\",\n \"#ecf0f1\",\n \"#95a5a6\",\n \"#f39c12\",\n \"#d35400\",\n \"#c0392b\",\n \"#bdc3c7\",\n \"#7f8c8d\"\n ];\n rte.add('fontColor', {\n icon: `A\n
\n `,\n attributes: {\n id: 'rte-font-color',\n title: 'Font Color'\n },\n result: (rte, action) => {\n if (!colorPicker) colorPicker = new Piklor(\"#foreColor-picker\", colors, {\n open: \"span#rte-font-color.gjs-rte-action\",\n closeOnBlur: true\n });\n colorPicker.colorChosen(col => rte.exec('foreColor', col));\n },\n })\n\n\n /*** Keymaps ***/\n\n const keymaps = editor.Keymaps;\n console.log(keymaps);\n console.log(keymaps.getAll());\n keymaps.add('ns:my-keymap', 'ctrl+v', editor => {\n console.log('do stuff');\n });\n\n editor.on('keymap:emit', (id, shortcut, e) => {\n console.log(id, shortcut, e);\n });\n\n\n // Only allow plaintext to be pasted\n editor.on('rte:enable', (rte) => {\n console.log('rte:enable', rte);\n rte.el.addEventListener(\"paste\", function(e){\n console.log('PASTE', e);\n e.preventDefault();\n console.log(document);\n console.log(editor.Canvas.getDocument());\n let text = e.clipboardData.getData(\"text/plain\");\n editor.Canvas.getDocument().execCommand('insertText', false, text);\n\n });\n });\n\n function getCaretPosition(editableDiv) {\n var caretPos = 0,\n sel, range;\n if (window.getSelection) {\n sel = window.getSelection();\n if (sel.rangeCount) {\n range = sel.getRangeAt(0);\n if (range.commonAncestorContainer.parentNode == editableDiv) {\n caretPos = range.endOffset;\n }\n }\n } else if (document.selection && document.selection.createRange) {\n range = document.selection.createRange();\n if (range.parentElement() == editableDiv) {\n var tempEl = document.createElement(\"span\");\n editableDiv.insertBefore(tempEl, editableDiv.firstChild);\n var tempRange = range.duplicate();\n tempRange.moveToElementText(tempEl);\n tempRange.setEndPoint(\"EndToEnd\", range);\n caretPos = tempRange.text.length;\n }\n }\n return caretPos;\n }\n\n editor.on('rte:disable', (rte) => {\n console.log('rte:disable', rte);\n //rte.el.removeEventListener(\"paste\", pastePlainText);\n });\n\n}\n\nexport function addRoleCheckboxes(roles, config){\n\n for(let i = 0; roles.length > i; i++){\n let roleCheckBoxConfig = {\n type: 'checkbox',\n label: roles[i],\n name: roles[i],\n }\n config.model.defaults.traits.push(roleCheckBoxConfig)\n\n }\n\n return config;\n\n}\n\nexport function addRoleDefaultValues(userRoles, config){\n console.log(userRoles);\n\n for(let i = 0; userRoles.length > i; i++){\n let roleKey = userRoles[i];\n console.log(roleKey);\n console.log(userRoles[i]);\n config.model.defaults.attributes[roleKey] = true;\n }\n\n for(const role in userRoles){\n console.log(role);\n console.log(userRoles[role]);\n\n let roleKey = userRoles[role];\n config.model.defaults.attributes[roleKey] = true;\n }\n\n console.log(config);\n console.log(config.model.defaults.attributes);\n return config;\n}\n\nexport function addRoleDefaultValuesToNewComponent(userRoles, model){\n\n for(const role in userRoles){\n let roleKey = userRoles[role];\n model.attributes.attributes[roleKey] = true;\n }\n\n return model;\n}\n","import 'grapesjs/dist/css/grapes.min.css';\nimport './screenEditor.css'\nimport GrapesJS from \"grapesjs\";\nimport React from 'react';\nimport {FoundationsPlugin} from \"./FoundationsPlugin\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {deleteData, patchData, getData, postData} from \"../../helpers/api\";\nimport {Text, View} from \"react-native\";\nimport {Picker} from \"@react-native-picker/picker\";\n\n\nexport const ScreenEditor = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n const swv = 'sw-visibility';\n const expt = 'export-template';\n const osm = 'open-sm';\n const otm = 'open-tm';\n const ola = 'open-layers';\n const obl = 'open-blocks';\n const ful = 'fullscreen';\n const prv = 'preview';\n let editScreenSettingsPanel = null;\n let moduleScreenSelector = null;\n let selectedModule = props.modules[0];\n let selectedScreen = props.modules[0]['screens'][0];\n let currentEditScreen = null;\n\n const saveScreen = (editor, sender, options = {}) => {\n\n if(currentEditScreen === null){\n alert('Please select a screen to edit.');\n return;\n }\n\n //let floppy = document.querySelector('.fa-floppy-o')[0];\n let spinner = document.querySelector('.gjs-pn-options .fa-spin');\n let floppy1 = document.getElementsByClassName('fa-floppy-o')[0];\n\n const panelManager = editor.Panels;\n let floppy = panelManager.getButton('options', 'save');\n floppy.attributes.className = 'fa fa-floppy-o d-none';\n\n spinner.classList.remove('d-none');\n\n let sideNavElements = document.querySelectorAll('.sideNav-editor-container');\n let sideNavData = [];\n sideNavElements.forEach((el) => {\n let elData = {\n id: el.dataset.sidenavid,\n title: el.querySelector('.sideNavTitle').value,\n sortOrder: el.querySelector('.sideNavSortOrder').value,\n parent: el.querySelector('.sideNavParent').value,\n parentSortOrder: el.querySelector('.sideNavParentSortOrder').value,\n }\n sideNavData.push(elData);\n })\n\n let saveData = {\n components : editor.getComponents(),\n sideNavData: sideNavData\n }\n\n patchData(\n '/data/screenEditor/'+currentEditScreen.id,\n powerforce.authToken,\n saveData\n ).then(response => {\n spinner.classList.add('d-none');\n floppy.attributes.className = 'fa fa-floppy-o';\n floppy1.classList.remove('d-none');\n\n if(response.status > 399){\n alert('Something went wrong. Please select a different page to edit, or try refreshing the web page.');\n }else{\n editor.setComponents(response.newData)\n }\n\n })\n }\n\n const logJSON = (editor, sender, options = {}) => {\n console.log(editor.getComponents());\n console.log(JSON.stringify(editor.getComponents()));\n console.log(editor.getProjectData());\n console.log(JSON.stringify(editor.getProjectData()));\n }\n\n const showNewScreenModal = (editor, sender, options = {}) => {\n // Declare modal\n const modal = editor.Modal;\n\n //Save Function\n const saveNewScreen = (event) => {\n modal.close()\n }\n\n // Create HTML for modal\n let modalHtml = ``;\n modalHtml += `\n
\n Creating new screen...\n
\n
\n
\n
New Screen Title:
\n
\n
\n
\n
\n
\n
\n Select a module:\n `;\n props.modules.map((module) => {\n //modalHtml += module.title;\n modalHtml += `\n
\n \n \n
\n `;\n })\n\n modalHtml += `\n
\n \n
\n `;\n\n modal.onceOpen(() => {\n\n document.getElementById('saveNewScreen').addEventListener('click', () => {\n let module = document.querySelector('input[name=\"module\"]:checked');\n let title = document.getElementById('new-screen-name');\n if(module === null || title === null || title.value === ''){\n alert('You must create a name and select a module. ');\n }else{\n // Display loading information\n document.getElementById('new-screen-loading').classList.remove('d-none')\n postData(\n '/data/newscreen',\n powerforce.authToken,\n {\n moduleId: module.value,\n title: title.value\n }\n ).then(response => {\n if(response.status !== 200){\n //alert(response.detail);\n document.getElementById('new-screen-loading').innerText = response.detail;\n }else{\n //window.location.href = response.redirectUrl\n selectedScreen = response.screen;\n changeComponentsForSelectedScreen(editor);\n modal.close()\n }\n\n //modal.close()\n })\n }\n })\n });\n\n //Select and open Modal\n modal.open({\n title: 'Create New Screen',\n content: modalHtml,\n attributes: { class: 'add-new-page-modal' },\n });\n\n }\n\n // Don't show add page button if they don't have any modules to assign\n /**\n * Gets the options for the commands panel.\n *\n * If there are no modules, it will not output the add screen button.\n *\n * @returns {{}|{buttons: [{className: string, attributes: {title: string}, id: string, command: showNewScreenModal}], id: string}}\n */\n let moduleScreenSwitcherPanelOptions = () => {\n if( !props.modules || props.modules.length === 0 || ! hasAccessToAWriteModule(props.modules)){\n return {\n id: 'commands',\n buttons: [\n {\n id: 'add-new-screen',\n className: 'd-none fa fa-plus-circle',\n //command: showNewScreenModal,\n //context: ful,\n attributes: { title: 'Add New Screen' },\n }\n ],\n };\n }else{\n return {\n id: 'commands',\n buttons: [\n {\n id: 'add-new-screen',\n className: 'fa fa-plus-circle',\n command: showNewScreenModal,\n //context: ful,\n attributes: { title: 'Add New Screen' },\n }\n ],\n }\n }\n }\n\n function hasAccessToAWriteModule(modules){\n let hasAccess = modules.find((module) => { return module.permission === 'write' });\n return hasAccess !== undefined;\n }\n\n /**\n * Gets the options for the Menu Appearance Settings Button.\n *\n * If a screen has no side nav items, nothing will display.\n *\n * @returns {{className: string, id: string}|{active: boolean, className: string, attributes: {title: string}, id: string, command: {stop: command.stop, run: command.run}}}\n */\n let editSideNavItemsButtonOptions = () => {\n\n\n if( !currentEditScreen ){\n return {\n id: 'editScreenSettings',\n className: 'd-none'\n };\n }else{\n return {\n id: 'editScreenSettings',\n className: 'fa fa-square',\n attributes: { title: \"Screen Settings\"},\n active: false,\n command: {\n run: function (editor) {\n if(editScreenSettingsPanel == null){\n\n //loop through sidenav and allow editing of info\n // gather all info on save and save\n let editMenuInnerHtml = ``;\n currentEditScreen.sideNavItems.map((sideNavItem) => {\n\n //In case there is not a parent\n let parentTitle = '';\n let parentSortOrder = '';\n if(sideNavItem.parent !== null && sideNavItem.parent !== undefined){\n parentTitle = sideNavItem.parent.title;\n parentSortOrder = sideNavItem.parent.sortOrder;\n }\n\n editMenuInnerHtml += `\n
\n\n
\n
\n
Module
\n
\n
\n
\n ${sideNavItem.module.title}\n
\n
\n
\n\n
\n
\n
Title
\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
Menu Order
\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
Parent
\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
Parent Menu Order
\n
\n
\n
\n \n
\n
\n
\n\n
\n `;\n\n })\n let sideNavHtml;\n if(editMenuInnerHtml === ''){\n sideNavHtml = '';\n }else{\n sideNavHtml = `\n

Side Navigation Settings

\n ${editMenuInnerHtml}\n
\n `;\n }\n\n let securityReadInnerHtml = ``;\n let securityWriteInnerHtml = ``;\n props.pluginsOpts.roles.map((role) => {\n let readValue = false;\n let readChecked = '';\n if(currentEditScreen.readRoles.includes(role)){\n readValue = true;\n readChecked = 'checked';\n }\n securityReadInnerHtml += `\n
\n
\n
\n
\n ${role}\n
\n
\n
\n \n
\n
\n
\n `;\n\n let writeValue = false;\n let writeChecked = '';\n if(currentEditScreen.writeRoles.includes(role)){\n writeValue = true;\n writeChecked = 'checked';\n }\n securityWriteInnerHtml += `\n
\n
\n
\n
\n ${role}\n
\n
\n
\n \n
\n
\n
\n `;\n })\n\n const editMenuDiv = document.createElement('div')\n editMenuDiv.innerHTML = `\n
\n ${sideNavHtml}\n

Screen Security Settings

\n

Read Roles

\n

Which roles can view this screen

\n

(Note: Display ONLY. This is not currently Editable)

\n ${securityReadInnerHtml}\n
\n

Write Roles

\n

Which roles can edit this screen

\n

(Note: Display ONLY. This is not currently Editable)

\n ${securityWriteInnerHtml}\n
\n `\n const pn = editor.Panels;\n const panels = pn.getPanel('views-container')\n panels.set('appendContent', editMenuDiv).trigger('change:appendContent')\n editScreenSettingsPanel = editMenuDiv\n }\n editScreenSettingsPanel.style.display = 'block'\n },\n stop: function (editor) {\n if(editScreenSettingsPanel != null){\n editScreenSettingsPanel.style.display = 'none'\n editScreenSettingsPanel = null\n }\n }\n\n }\n }\n }\n\n }\n\n /**\n * Fires when the editor is initiated.\n *\n * Used to add in custom editing elements, such as the Module and Screen selector dropdowns.\n *\n * @param editor\n */\n let onInit = (editor) => {\n\n // Add Module and Screen Selector Dropdowns\n if(moduleScreenSelector === null){\n\n // Hide add screen if needed\n if(selectedModule.permission !== 'write'){\n document.querySelector('.gjs-pn-commands .fa-plus-circle').classList.add('d-none');\n }\n\n // Build Module Selector Dropdown\n const moduleDropDownHtml = document.createElement('span')\n moduleDropDownHtml.id = 'selected-module';\n moduleDropDownHtml.style.maxWidth = '190px';\n let moduleDropdownOptions = ``;\n props.modules.map((module) => {\n moduleDropdownOptions+= `\n \n `;\n })\n moduleDropDownHtml.innerHTML = `\n
\n\n
\n
\n \n
\n
\n
\n
\n
\n
\n `;\n moduleDropDownHtml.addEventListener('change', (event) => {\n let newlySelectedModule = props.modules.find((module) => { return module.id === Number(event.target.value)});\n changeScreenOptions(newlySelectedModule);\n selectedModule = newlySelectedModule;\n\n // Hide the plus button if needed\n if(newlySelectedModule.permission !== 'write'){\n document.querySelector('.gjs-pn-commands .fa-plus-circle').classList.add('d-none');\n }else{\n document.querySelector('.gjs-pn-commands .fa-plus-circle').classList.remove('d-none');\n }\n })\n\n // Build Screen Selector Dropdown\n const screenDropDownHtml = document.createElement('span')\n screenDropDownHtml.id = 'selected-screen';\n screenDropDownHtml.style.maxWidth = '190px';\n let screenDropdownOptions = ``;\n selectedModule.screens.map((module) => {\n screenDropdownOptions+= `\n \n `;\n })\n screenDropDownHtml.innerHTML = `\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n `;\n screenDropDownHtml.addEventListener('change', (event) => {\n let newlySelectedScreen = selectedModule['screens'].find((screen) => { return screen.id === Number(event.target.value)});\n selectedScreen = newlySelectedScreen;\n })\n\n // Build Swap Screen button\n const changeEditorComponentsButton = document.createElement('span');\n changeEditorComponentsButton.id = 'change-components';\n changeEditorComponentsButton.innerHTML = `\n \n `;\n changeEditorComponentsButton.addEventListener('click', (event) => {\n changeComponentsForSelectedScreen(editor);\n })\n\n // Build Loading Icon\n const loadingEditorComponentsSpinner = document.createElement('span');\n loadingEditorComponentsSpinner.innerHTML = `\n \n `;\n\n //Create helper text element\n const helperTextEl = document.createElement('span');\n helperTextEl.id = 'helper-text';\n helperTextEl.style.marginRight = '150px';\n helperTextEl.innerHTML = 'Select a screen to edit, and click the Change Screen button ().';\n\n // Add the elements created above to the commands panel\n let cmdButtonDiv = document.querySelector('.gjs-pn-commands .gjs-pn-buttons');\n if(cmdButtonDiv){\n cmdButtonDiv.prepend(changeEditorComponentsButton);\n cmdButtonDiv.prepend(loadingEditorComponentsSpinner);\n cmdButtonDiv.prepend(screenDropDownHtml);\n cmdButtonDiv.prepend(moduleDropDownHtml);\n cmdButtonDiv.append(helperTextEl);\n moduleScreenSelector = moduleDropDownHtml;\n }\n }\n // END Add Module and Screen Selector Dropdowns\n\n }\n\n /**\n * Changes the screen options in the Screen Selector Dropdown when a Module is changed in the Module Selector Dropdown.\n *\n * This function is only used when building the Module and Screen Selector Dropdown\n *\n * @param module\n */\n const changeScreenOptions = (module) => {\n let selectEl = document.getElementById('selected-screen-options');\n let screenDropdownOptions = ``;\n module.screens.map((module) => {\n screenDropdownOptions+= `\n \n `;\n })\n selectEl.innerHTML = screenDropdownOptions;\n selectedScreen = module.screens[0];\n }\n\n /**\n * Changes components of the editor after the 'Change screen' button is pressed.\n *\n * @param editor\n */\n const changeComponentsForSelectedScreen = (editor) => {\n\n // Hide swap button and show spinner\n let spinner = document.getElementById('loading-components-spinner');\n spinner.classList.remove('d-none');\n let screenChanger = document.getElementById('screen-changer');\n screenChanger.classList.add('d-none');\n\n // Use the selected screen id to get the components from the server\n getData(\n '/data/screen/'+selectedScreen.id,\n powerforce.authToken,\n ).then(response => {\n\n // Show swap button and hide spinner\n spinner.classList.add('d-none');\n screenChanger.classList.remove('d-none');\n\n if(response.status > 400){\n alert('Something went wrong. Please select a different page to edit, or try refreshing the web page.');\n }else{\n // Change currentEditScreen, helper text, and editor components\n currentEditScreen = response.screen;\n document.getElementById('helper-text').innerText = 'Editing ' + response.screen.title + ' (Module: '+ response.module.title + ')';\n editor.setComponents(response.components);\n\n let sideNavContainer = document.getElementById('menu-appearance-settings');\n if(sideNavContainer){\n sideNavContainer.remove()\n }\n document.getElementsByClassName('gjs-pn-btn fa fa-cog')[0].click();\n\n //Remove and add back the Edit Side Nav panel\n const panelManager = editor.Panels;\n panelManager.removeButton('views', 'editScreenSettings');\n let panelOptions = editSideNavItemsButtonOptions();\n let newPanel = panelManager.addButton('views', panelOptions);\n }\n\n\n\n })\n }\n\n return <>\n
\n {console.log('Wait until the saving is done.');},\n //context: ful,\n attributes: { title: 'Saving' },\n },\n /*{\n id: expt,\n className: 'fa fa-code',\n command: expt,\n attributes: { title: 'View code' },\n },\n {\n id: 'json',\n className: 'fa fa-code',\n command: logJSON,\n attributes: { title: 'Log JSON' },\n },*/\n ],\n },\n {\n id: 'views',\n buttons: [\n /*{\n id: osm,\n className: 'fa fa-paint-brush',\n command: osm,\n active: true,\n togglable: 0,\n attributes: { title: 'Open Style Manager' },\n },*/\n {\n id: otm,\n className: 'fa fa-cog',\n command: otm,\n active: true,\n togglable: 0,\n attributes: { title: 'Settings' },\n },\n /*{\n id: ola,\n className: 'fa fa-bars',\n command: ola,\n togglable: 0,\n attributes: { title: 'Open Layer Manager' },\n },*/\n {\n id: obl,\n className: 'fa fa-th-large',\n command: obl,\n togglable: 0,\n attributes: { title: 'Open Blocks' },\n },\n editSideNavItemsButtonOptions()\n ],\n },\n ],\n }}\n onDestroy={console.log('DESTROY!!!')}\n navigation={props.navigation}\n >\n
\n Use the dropdowns above to select a screen to begin editing.\n
\n\n \n
\n \n}\n\n\nexport function GrapesEditor(props){\n const {id, onInit, onDestroy, children, ...options} = props;\n\n const [editor, setEditor] = React.useState();\n\n React.useEffect(() => {\n const selector = `#${id}`;\n if (!editor) {\n const editor = GrapesJS.init({\n container: selector,\n fromElement: !!children,\n ...options\n });\n setEditor(editor);\n if (typeof onInit === 'function') {\n onInit(editor);\n }\n\n\n //Add Previous components\n //if(props.components !== undefined){\n //editor.addComponents(props.components);\n //}\n\n //Content Area Styling\n editor.addStyle('body{font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;}');\n editor.addStyle('div[data-gjs-type=\"wrapper\"]{display:flex;flex-wrap:wrap;align-content: flex-start;}');\n editor.addStyle('.gjs-dashed *[data-gjs-highlightable]{padding:4px;}');\n editor.addStyle('.gjs-dashed div[data-gjs-type=\"default\"]{padding:0px;}');\n\n\n }\n }, [children, editor, id, onInit, options]);\n\n React.useEffect(() => {\n return function cleanup() {\n if (editor) {\n if (typeof onDestroy === 'function') {\n onDestroy();\n }\n const index = GrapesJS.editors.findIndex((e) => e.Config.container === editor.Config.container);\n if (typeof index === 'number' && index >= 0) {\n GrapesJS.editors.splice(index, 1);\n }\n editor.destroy();\n }\n }\n }, [editor, onDestroy]);\n\n const unsubscribe = props.navigation.addListener('blur', (e) => {\n console.log('blur');\n if (editor) {\n //editor.refresh();\n }\n });\n\n return (\n
\n {children}\n
\n );\n\n\n}\n","import {ScrollView, View} from \"react-native-web\";\nimport {StyleSheet, Text} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\nimport * as React from \"react\";\nimport {Button, Dialog, Portal, List, DataTable, ActivityIndicator, TextInput} from \"react-native-paper\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {randomKey} from \"../../helpers/general\";\nimport {isDesktop} from \"../../helpers/responsive\";\nimport {Picker} from \"@react-native-picker/picker\";\n\n\nexport const EditPopup = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [isPopupVisible, setIsPopupVisible] = React.useState(props.visible);\n const [newParentCategory, setNewParentCategory] = React.useState(props.parentValue);\n const [newName, setNewName] = React.useState(props.itemName);\n const [currentParentCategory, setCurrentParentCategory] = React.useState(props.parentCategories.find(row => (row.id * 1) === (props.parentValue * 1)));\n\n\n //For Changing Props\n React.useEffect(() => {\n setIsPopupVisible(props.visible);\n setNewName(props.itemName);\n setCurrentParentCategory(props.parentCategories.find(row => (row.id * 1) === (props.parentValue * 1)));\n setNewParentCategory(props.parentValue);\n }, [props]);\n\n const showPopup = () => setIsPopupVisible(true);\n const hidePopup = () => {\n setIsPopupVisible(false);\n props.onClose();\n }\n\n\n /**\n * Display\n */\n\n return (\n\n \n \n {props.title}\n \n\n setNewName(text)}\n //editable={false}\n //disabled={false}\n style={{color:'#6a6a6a'}}\n selectionColor={'#ff0000'}\n right={}\n />\n }\n />\n \n New Parent Category\n {\n //props.onChange(props.dataSource, itemValue, props.sectionIndex );\n setNewParentCategory(itemValue);\n }\n }>\n {\n props.parentCategories.map((row) => {\n return(\n \n );\n })\n }\n \n \n\n\n \n\n \n\n {\n props.onSave(props.itemValue, newParentCategory, newName)\n hidePopup()\n } }\n style={styles.button}\n mode={'contained'}\n >\n Save\n \n\n hidePopup()}\n style={styles.button}\n mode={'contained'}\n >\n Cancel\n \n\n \n\n \n \n\n )\n\n}\n\nconst styles = StyleSheet.create({\n button: {\n marginLeft: '10px',\n },\n row: {\n display:'flex',\n flexGrow: 10,\n flexDirection:'row',\n alignContent:'center',\n paddingTop:'20px'\n },\n column: {\n width:'32%',\n marginRight: '1%'\n },\n picker : {\n backgroundColor:'#e7e7e7',\n color: '#000000',\n paddingTop: '29px',\n paddingBottom: '14px',\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '16px',\n borderTopWidth: '0',\n borderLeftWidth: '0',\n borderRightWidth: '0',\n borderBottomWidth: '1px',\n borderBottomColor: '#ababab',\n //marginRight: '10px',\n },\n pickerItem : {\n fontSize: '16px'\n },\n smallLabel : {\n fontSize: '12px',\n top: '5px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n});\n","import {ScrollView, View} from \"react-native-web\";\nimport {StyleSheet, Text} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\nimport * as React from \"react\";\nimport {Button, Dialog, Portal, TextInput} from \"react-native-paper\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {randomKey} from \"../../helpers/general\";\nimport {isDesktop} from \"../../helpers/responsive\";\nimport {Picker} from \"@react-native-picker/picker\";\n\n\nexport const AddPopup = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [isPopupVisible, setIsPopupVisible] = React.useState(props.visible);\n const [newParentCategory, setNewParentCategory] = React.useState(props.parentValue);\n const [newCategoryName, setNewCategoryName] = React.useState(\"\");\n\n\n //For Changing Props\n React.useEffect(() => {\n setIsPopupVisible(props.visible);\n setNewParentCategory(props.parentValue)\n //console.log(newParentCategory);\n }, [props]);\n\n const showPopup = () => setIsPopupVisible(true);\n const hidePopup = () => {\n setIsPopupVisible(false);\n props.onClose();\n }\n\n\n /**\n * Display\n */\n\n return (\n\n \n \n {props.title}\n \n\n setNewCategoryName(text)}\n />\n \n New Parent Category Name\n {\n //console.log(itemValue);\n setNewParentCategory(itemValue);\n }\n }>\n {\n props.parentCategories.map((row) => {\n return(\n \n );\n })\n }\n \n \n\n\n \n\n \n\n {\n props.onSave(newCategoryName, newParentCategory, props.extraData)\n hidePopup()\n } }\n style={styles.button}\n mode={'contained'}\n >\n Save\n \n\n hidePopup()}\n style={styles.button}\n mode={'contained'}\n >\n Cancel\n \n\n \n\n \n \n\n )\n\n}\n\nconst styles = StyleSheet.create({\n button: {\n marginLeft: '10px',\n },\n row: {\n display:'flex',\n flexGrow: 10,\n flexDirection:'row',\n alignContent:'center',\n paddingTop:'20px'\n },\n column: {\n width:'32%',\n marginRight: '1%'\n },\n picker : {\n backgroundColor:'#e7e7e7',\n color: '#000000',\n paddingTop: '29px',\n paddingBottom: '14px',\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '16px',\n borderTopWidth: '0',\n borderLeftWidth: '0',\n borderRightWidth: '0',\n borderBottomWidth: '1px',\n borderBottomColor: '#ababab',\n //marginRight: '10px',\n },\n pickerItem : {\n fontSize: '16px'\n },\n smallLabel : {\n fontSize: '12px',\n top: '5px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n});\n","import {ScrollView, View} from \"react-native-web\";\nimport {Pressable, StyleSheet, Text} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\nimport * as React from \"react\";\nimport {Button, Checkbox, Dialog, Portal, TextInput} from \"react-native-paper\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {randomKey} from \"../../helpers/general\";\nimport {isDesktop} from \"../../helpers/responsive\";\nimport {Picker} from \"@react-native-picker/picker\";\n\n\nexport const AddDataPopup = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [isPopupVisible, setIsPopupVisible] = React.useState(props.visible);\n\n const [newParentCategoryId, setNewParentCategoryId] = React.useState(getParentCategory());\n const [accountId, setAccountId] = React.useState(props.dataTable.find((row) => row[props.hierarchyKey] === null) ? props.dataTable.find((row) => row[props.hierarchyKey] === null).id : null);\n const [mainAccountCode, setMainAccountCode] = React.useState(\"\");\n const [subAccountCode, setSubAccountCode] = React.useState(\"\");\n const [accountName, setAccountName] = React.useState(\"\");\n const [checkedNew, setCheckedNew] = React.useState(false);\n const [checkedUnassigned, setCheckedUnassigned] = React.useState(true);\n\n function getParentCategory(){\n if(props.currentParentCategoryId){\n return props.currentParentCategoryId;\n }\n\n if(props.parentCategories && props.parentCategories.length > 1){\n return props.parentCategories[0].id;\n }\n\n return null;\n }\n\n //For Changing Props\n React.useEffect(() => {\n setIsPopupVisible(props.visible);\n setNewParentCategoryId(getParentCategory());\n selectUnassignedAccount(props.dataTable.find((row) => row[props.hierarchyKey] === null) ? props.dataTable.find((row) => row[props.hierarchyKey] === null).id : null);\n }, [props]);\n\n\n\n const showPopup = () => setIsPopupVisible(true);\n const hidePopup = () => {\n setIsPopupVisible(false);\n props.onClose();\n }\n\n const selectUnassignedAccount = (accountId) => {\n let selectedAccount = props.dataTable.find(account => account.id === accountId)\n if(selectedAccount){\n setAccountId(accountId);\n setMainAccountCode(selectedAccount.MainAccount);\n setSubAccountCode(selectedAccount.SubAccount ? selectedAccount.SubAccount : '');\n setAccountName(selectedAccount.Name);\n }\n\n }\n\n /**\n * Display\n */\n\n return (\n\n \n \n {props.title}\n \n {/* \n {\n setCheckedUnassigned(false)\n setCheckedNew(!checkedNew);\n }}\n />\n {\n setCheckedNew(false);\n setCheckedUnassigned(!checkedUnassigned);\n }}\n />\n */}\n\n \n\n setMainAccountCode(text)}\n editable={false}\n disabled={false}\n right={}\n />\n setSubAccountCode(text)}\n editable={false}\n disabled={false}\n right={}\n />\n setAccountName(text)}\n editable={false}\n disabled={false}\n right={}\n />\n\n \n Lvl 3 Category Name\n {\n setNewParentCategoryId(itemValue);\n }\n }>\n {\n props.parentCategories.map((row) => {\n return(\n \n );\n })\n }\n \n \n\n\n \n\n \n\n {\n if(checkedUnassigned){\n props.onSave('edit', [accountId, mainAccountCode, subAccountCode, accountName, newParentCategoryId]);\n }\n\n if(checkedNew){\n props.onSave('save', [mainAccountCode, subAccountCode, accountName, newParentCategoryId]);\n }\n\n hidePopup()\n } }\n style={styles.button}\n mode={'contained'}\n >\n Save\n \n\n hidePopup()}\n style={styles.button}\n mode={'contained'}\n >\n Cancel\n \n\n \n\n \n \n\n )\n\n}\n\nconst UnassignedDropDown = (props) => {\n\n if(props.show){\n return (\n \n Unassigned Account\n {\n //setNewParentCategoryId(itemValue);\n props.onSelect(itemValue)\n }\n }>\n {\n props.dataTable.map((row, rowIndex) => {\n if(row[props.hierarchyKey] === null){\n return(\n \n );\n }\n })\n }\n \n );\n }\n return null;\n}\n\nconst styles = StyleSheet.create({\n button: {\n marginLeft: '10px',\n },\n row: {\n display:'flex',\n flexGrow: 10,\n flexDirection:'row',\n alignContent:'center',\n paddingTop:'20px'\n },\n column: {\n width:'32%',\n marginRight: '1%'\n },\n picker : {\n backgroundColor:'#e7e7e7',\n color: '#000000',\n paddingTop: '29px',\n paddingBottom: '14px',\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '16px',\n borderTopWidth: '0',\n borderLeftWidth: '0',\n borderRightWidth: '0',\n borderBottomWidth: '1px',\n borderBottomColor: '#ababab',\n //marginRight: '10px',\n },\n pickerItem : {\n fontSize: '16px'\n },\n smallLabel : {\n fontSize: '12px',\n top: '5px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n});\n","import {ScrollView, View} from \"react-native-web\";\nimport {StyleSheet, Text} from \"react-native\";\nimport {Feather} from \"@expo/vector-icons\";\nimport * as React from \"react\";\nimport {Button, Checkbox, Dialog, Portal, TextInput} from \"react-native-paper\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {randomKey} from \"../../helpers/general\";\nimport {isDesktop} from \"../../helpers/responsive\";\nimport {Picker} from \"@react-native-picker/picker\";\n\n\nexport const EditDataPopup = (props) => {\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [isPopupVisible, setIsPopupVisible] = React.useState(props.visible);\n\n const [parentCategoryId, setParentCategoryId] = React.useState(props.data ? props.data[props.hierarchyKey] : '');\n const [mainAccountCode, setMainAccountCode] = React.useState(props.data ? props.data['MainAccount'] : '');\n const [subAccountCode, setSubAccountCode] = React.useState(props.data ? props.data['SubAccount'] : '');\n const [accountName, setAccountName] = React.useState(props.data ? props.data['Name'] : '');\n\n //For Changing Props\n React.useEffect(() => {\n setIsPopupVisible(props.visible);\n setParentCategoryId(props.data ? props.data[props.hierarchyKey] : '');\n setMainAccountCode(props.data ? props.data['MainAccount'] : '');\n setSubAccountCode(props.data ? props.data['SubAccount'] : '');\n setAccountName(props.data ? props.data['Name'] : '');\n }, [props]);\n\n const showPopup = () => setIsPopupVisible(true);\n const hidePopup = () => {\n setIsPopupVisible(false);\n props.onClose();\n }\n\n\n /**\n * Display\n */\n\n return (\n\n \n \n {props.title}\n \n\n setMainAccountCode(text)}\n editable={false}\n disabled={false}\n right={}\n />\n setSubAccountCode(text)}\n editable={false}\n disabled={false}\n right={}\n />\n setAccountName(text)}\n editable={false}\n disabled={false}\n right={}\n />\n\n \n Lvl 3 Category Name\n {\n setParentCategoryId(itemValue);\n }\n }>\n {\n props.parentCategories.map((row) => {\n return(\n \n );\n })\n }\n \n \n\n\n \n\n \n\n {\n props.onSave(props.data.id, mainAccountCode, subAccountCode, accountName, parentCategoryId)\n hidePopup()\n } }\n style={styles.button}\n mode={'contained'}\n >\n Save\n \n\n hidePopup()}\n style={styles.button}\n mode={'contained'}\n >\n Cancel\n \n\n \n\n \n \n\n )\n\n}\n\nconst styles = StyleSheet.create({\n button: {\n marginLeft: '10px',\n },\n row: {\n display:'flex',\n flexGrow: 10,\n flexDirection:'row',\n alignContent:'center',\n paddingTop:'20px'\n },\n column: {\n width:'32%',\n marginRight: '1%'\n },\n picker : {\n backgroundColor:'#e7e7e7',\n color: '#000000',\n paddingTop: '29px',\n paddingBottom: '14px',\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '16px',\n borderTopWidth: '0',\n borderLeftWidth: '0',\n borderRightWidth: '0',\n borderBottomWidth: '1px',\n borderBottomColor: '#ababab',\n //marginRight: '10px',\n },\n pickerItem : {\n fontSize: '16px'\n },\n smallLabel : {\n fontSize: '12px',\n top: '5px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n});\n","import * as React from 'react';\nimport {Card, Paragraph, DataTable, ActivityIndicator} from 'react-native-paper';\nimport { Feather } from '@expo/vector-icons';\nimport {Pressable, ScrollView, StyleSheet, Text, View} from \"react-native\";\nimport {isDesktop} from '../../helpers/responsive'\nimport {Picker} from \"@react-native-picker/picker\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {EditPopup} from \"./EditPopup\";\nimport {AddPopup} from \"./AddPopup\";\nimport {AddDataPopup} from \"./AddDataPopup\";\nimport {EditDataPopup} from \"./EditDataPopup\";\nimport {deleteData, patchData, postData} from \"../../helpers/api\";\n\nexport default function HierarchyManager(props){\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [hierarchyTable, setHierarchyTable] = React.useState(props.hierarchyTable);\n const [dataTable, setDataTable] = React.useState(props.dataTable);\n\n //TODO Abstract this\n // Hierarchy Info\n const parentIdKey = 'ParentID';\n const labelKey = 'Account_Type';\n //const hierarchyKey = 'LOS_ID';\n\n // Data Info\n const dataStructure = [\n {\n label: 'Account Code',\n column: 'Account'\n },\n {\n label: 'Account Name',\n column: 'Name'\n }\n ]\n\n if(hierarchyTable === undefined){\n return (Loading...);\n }\n\n function findItemsByParentId(parentId){\n return hierarchyTable.find(row => (row[parentIdKey] * 1) === parentId);\n }\n\n const [lvl1Value, setLvl1Value] = React.useState(findItemsByParentId(0) ? findItemsByParentId(0).id : null);\n const [lvl2Value, setLvl2Value] = React.useState(findItemsByParentId((lvl1Value * 1)) ? findItemsByParentId((lvl1Value * 1)).id : null);\n const [lvl2Name, setLvl2Name] = React.useState(findItemsByParentId((lvl1Value * 1)) ? findItemsByParentId((lvl1Value * 1))[labelKey] : null);\n const [lvl3Value, setLvl3Value] = React.useState(findItemsByParentId((lvl2Value * 1)) ? findItemsByParentId((lvl2Value * 1)).id : null);\n const [lvl3Name, setLvl3Name] = React.useState(findItemsByParentId((lvl2Value * 1)) ? findItemsByParentId((lvl2Value * 1))[labelKey] : null);\n const [accountValue, setAccountValue] = React.useState(null);\n\n React.useEffect(() => {\n setLvl2Value(findItemsByParentId((lvl1Value * 1)) ? findItemsByParentId((lvl1Value * 1)).id : null);\n setLvl2Name(findItemsByParentId((lvl1Value * 1)) ? findItemsByParentId((lvl1Value * 1))[labelKey] : null);\n setLvl3Value(findItemsByParentId((lvl2Value * 1)) ? findItemsByParentId((lvl2Value * 1)).id : null);\n setLvl3Name(findItemsByParentId((lvl2Value * 1)) ? findItemsByParentId((lvl2Value * 1))[labelKey] : null);\n setAccountValue(null)\n }, [lvl1Value]);\n\n React.useEffect(() => {\n setLvl3Value(findItemsByParentId((lvl2Value * 1)) ? findItemsByParentId((lvl2Value * 1)).id : null);\n setLvl3Name(findItemsByParentId((lvl2Value * 1)) ? findItemsByParentId((lvl2Value * 1))[labelKey] : null);\n setAccountValue(null)\n }, [lvl2Value]);\n\n React.useEffect(() => {\n setAccountValue(null)\n }, [lvl3Value]);\n\n\n const [lvl2EditPopupVisible, setLvl2EditPopupVisible] = React.useState(false);\n const [lvl2AddPopupVisible, setLvl2AddPopupVisible] = React.useState(false);\n const [lvl3EditPopupVisible, setLvl3EditPopupVisible] = React.useState(false);\n const [lvl3AddPopupVisible, setLvl3AddPopupVisible] = React.useState(false);\n const [dataAddPopupVisible, setDataAddPopupVisible] = React.useState(false);\n const [dataEditPopupVisible, setDataEditPopupVisible] = React.useState(false);\n\n const changeParentId = (idToChange, newParentId, newName) => {\n let newHierarchyTable = hierarchyTable.filter(() => true);\n let changeItemIndex = newHierarchyTable.findIndex((row) => row.id === idToChange);\n newHierarchyTable[changeItemIndex][parentIdKey] = newParentId;\n newHierarchyTable[changeItemIndex][labelKey] = newName;\n\n setHierarchyTable([...newHierarchyTable]);\n\n // Fetch and save\n let data = newHierarchyTable[changeItemIndex];\n data.tableType = 'hierarchy'; // This is to differentiate if we are updating the data table or the hierarchy table\n patchData(\n '/data/hierarchy/'+props.code,\n powerforce.authToken,\n data\n ).then(response => {\n //console.log(response); //recordId\n })\n\n }\n\n const lvl2EditSave = (idToChange, newParentId, newName) => {\n changeParentId(idToChange, newParentId, newName);\n setLvl1Value(newParentId);\n setLvl2Name(newName);\n }\n\n const lvl3EditSave = (idToChange, newParentId, newName) => {\n changeParentId(idToChange, newParentId, newName);\n setLvl2Value(newParentId);\n setLvl3Name(newName);\n }\n\n const saveNewCategory = (newCategoryName, newParentId, extraData) => {\n\n let data = {\n 'Account_Type' : newCategoryName,\n 'ParentID' : newParentId,\n 'tableType' : 'hierarchy',\n }\n\n //TODO ABSTRACT THIS\n if(extraData === 'lvl2'){\n setLvl2Loading(true)\n data['Subtype'] = 'Major';\n data['Subtype_Sequence'] = '2';\n }\n\n if(extraData === 'lvl3'){\n setLvl3Loading(true)\n data['Subtype'] = 'Minor';\n data['Subtype_Sequence'] = '3';\n }\n\n if(props.hierarchyKey === 'FinMap_ID'){\n data['Type'] = 'Financial';\n }\n if(props.hierarchyKey === 'LOS_ID'){\n data['Type'] = 'LOS';\n }\n // THIS ENDS\n\n //Fetch, and create. Get New ID from db\n postData(\n '/data/hierarchy/'+props.code,\n powerforce.authToken,\n data\n ).then(response => {\n //console.log(response); //recordId\n if(response.status === 500){\n alert('500');\n }else{\n let newHierarchyTable = hierarchyTable.filter(() => true);\n newHierarchyTable.push({\n 'Account_Type' : newCategoryName,\n 'ParentID' : newParentId,\n 'id' : response.extra.recordId,\n });\n setHierarchyTable(newHierarchyTable);\n }\n setLvl2Loading(false)\n setLvl3Loading(false)\n\n })\n\n }\n\n const deleteLvl2Category = (id) => {\n deleteCategory(id);\n setLvl2Value(null);\n }\n\n const deleteLvl3Category = (id) => {\n deleteCategory(id);\n setLvl3Value(null);\n }\n\n const deleteCategory = (id) => {\n let newHierarchyTable = hierarchyTable.filter((row) => row.id !== id);\n setHierarchyTable([...newHierarchyTable]);\n\n let data = { id: id, tableType: 'hierarchy'};\n deleteData(\n '/data/hierarchy/'+props.code,\n powerforce.authToken,\n data\n ).then(response => {\n //console.log(response); //recordId\n if(response.status > 399){\n alert('Something went wrong deleting a catgeory. PLease refresh and try again.');\n }\n })\n }\n\n\n const editDataRecord = (idToChange, mainAccountCode, subAccountCode, accountName, newParentCategoryId) => {\n let newDataTable = dataTable.filter(() => true);\n let changeItemIndex = newDataTable.findIndex((row) => row.id === idToChange);\n\n let accountCode = mainAccountCode + '.' + subAccountCode;\n if(!subAccountCode || subAccountCode === ''){\n accountCode = mainAccountCode;\n }\n\n newDataTable[changeItemIndex] = {\n 'Name' : accountName,\n //'FinMap_ID' : newParentCategoryId,\n 'MainAccount' : mainAccountCode,\n 'SubAccount' : subAccountCode,\n 'Account' : accountCode,\n 'id' : idToChange,\n }\n\n newDataTable[changeItemIndex][props.hierarchyKey] = newParentCategoryId;\n\n setDataTable([...newDataTable]);\n\n //Fetch and update\n let data = newDataTable[changeItemIndex];\n data.tableType = 'data'; // This is to differentiate if we are updating the data table or the hierarchy table\n patchData(\n '/data/hierarchy/'+props.code,\n powerforce.authToken,\n data\n ).then(response => {\n //console.log(response); //recordId\n })\n }\n\n const saveNewDataRecord = (mainAccountCode, subAccountCode, accountName, newParentCategoryId) => {\n\n //fetch and get ID from db\n\n let newDataTable = dataTable.filter(() => true);\n\n let accountCode = mainAccountCode + '.' + subAccountCode;\n if(!subAccountCode || subAccountCode === ''){\n accountCode = mainAccountCode;\n }\n\n let newData = {\n 'Name' : accountName,\n //'FinMap_ID' : newParentCategoryId,\n 'MainAccount' : mainAccountCode,\n 'SubAccount' : subAccountCode,\n 'Account' : accountCode,\n 'id' : newDataTable.length + 100,\n };\n newData[props.hierarchyKey] = newParentCategoryId;\n\n newDataTable.push(newData);\n\n setDataTable(newDataTable);\n }\n\n const saveOrEdit = (saveOrEdit, data) => {\n\n if(saveOrEdit === 'save'){\n saveNewDataRecord(...data);\n }\n\n if(saveOrEdit === 'edit'){\n editDataRecord(...data);\n }\n\n }\n\n const deleteDataRecord = (id) => {\n let newDataTable = dataTable.filter((row) => row.id !== id);\n setDataTable([...newDataTable]);\n setAccountValue(null);\n\n let data = { id: id, tableType: 'data'};\n deleteData(\n '/data/hierarchy/'+props.code,\n powerforce.authToken,\n data\n ).then(response => {\n //console.log(response); //recordId\n if(response.status > 399){\n alert('Something went wrong deleting an account. PLease refresh and try again.');\n }\n })\n }\n\n\n const [lvl2Loading, setLvl2Loading] = React.useState(false);\n const [lvl3Loading, setLvl3Loading] = React.useState(false);\n\n const lvl2LoadingRow = () => {\n if(lvl2Loading){\n return(\n \n \n \n \n \n )\n }\n }\n\n const lvl3LoadingRow = () => {\n if(lvl3Loading){\n return(\n \n \n \n \n \n )\n }\n }\n\n\n return(\n \n {props.title}\n {/*** Level 1 ***/}\n \n Level 1\n {console.log('onfocus')}}\n style={styles.picker}\n onValueChange={(itemValue, itemIndex) => {\n setLvl1Value(itemValue);\n }\n }>\n {\n hierarchyTable.map((row) => {\n if((row[parentIdKey] * 1) === 0){\n return(\n \n );\n }\n })\n }\n \n \n\n {/*** Levels 2 & 3 ***/}\n\n \n\n {/*** Level 2 ***/}\n \n\n \n Level 2\n \n\n {setLvl2AddPopupVisible(true)}}\n style={styles.button}\n >\n \n \n\n {setLvl2EditPopupVisible(true)}}\n style={styles.button}\n >\n \n \n\n {deleteLvl2Category(lvl2Value)}}\n style={styles.button}\n >\n \n \n\n \n\n \n\n \n \n\n {\n hierarchyTable.map((row) => {\n if((row[parentIdKey] * 1) === (lvl1Value * 1)){\n return(\n {setLvl2Value(row.id); setLvl2Name(row[labelKey]);}}\n style={ (row.id * 1) === (lvl2Value * 1) ? {backgroundColor: powerforce.colors.accent} : {}}\n >\n {row[labelKey]}\n \n );\n }\n })\n }\n\n {lvl2LoadingRow()}\n\n \n \n { setLvl2EditPopupVisible(false) }}\n onSave={ lvl2EditSave }\n parentValue={lvl1Value}\n itemValue={lvl2Value}\n itemName={lvl2Name}\n parentCategories={hierarchyTable.filter(row => (row[parentIdKey] * 1) === 0)}\n />\n { setLvl2AddPopupVisible(false) }}\n onSave={saveNewCategory}\n extraData={'lvl2'}\n parentValue={lvl1Value}\n parentCategories={hierarchyTable.filter(row => (row[parentIdKey] * 1) === 0)}\n />\n \n\n {/*** Level 3 ***/}\n \n\n \n Level 3\n \n\n {setLvl3AddPopupVisible(true)}}\n style={styles.button}\n >\n \n \n\n {setLvl3EditPopupVisible(true)}}\n style={styles.button}\n >\n \n \n\n {deleteLvl3Category(lvl3Value)}}\n style={styles.button}\n >\n \n \n\n \n\n \n\n \n \n\n {\n hierarchyTable.map((row) => {\n if(lvl2Value === null){\n return;\n }\n if((row[parentIdKey] * 1) === (lvl2Value * 1)){\n return(\n {setLvl3Value(row.id); setLvl3Name(row[labelKey]);}}\n style={ (row.id * 1) === (lvl3Value * 1) ? {backgroundColor: powerforce.colors.accent} : {}}\n >\n {row[labelKey]}\n \n );\n }\n })\n }\n\n {lvl3LoadingRow()}\n\n \n \n { setLvl3EditPopupVisible(false) }}\n onSave={ lvl3EditSave }\n parentValue={lvl2Value}\n itemValue={lvl3Value}\n itemName={lvl3Name}\n //parentCategories={hierarchyTable.filter(row => (row[parentIdKey] * 1) === (lvl1Value * 1))}\n parentCategories={hierarchyTable.filter(row => {\n return row['Subtype_Sequence'] === '2'\n })}\n />\n { setLvl3AddPopupVisible(false) }}\n onSave={saveNewCategory}\n extraData={'lvl3'}\n parentValue={lvl2Value}\n /*parentCategories={hierarchyTable.filter(row => {\n return (row[parentIdKey] * 1) === (lvl1Value * 1)\n })}*/\n parentCategories={hierarchyTable.filter(row => {\n return row['Subtype_Sequence'] === '2'\n })}\n />\n \n\n \n\n {/*** Accounts ***/}\n\n \n\n \n\n \n \n {dataStructure.map( (cell, index) => {\n return({cell.label})\n })}\n Level 3 Category\n \n\n \n {setDataAddPopupVisible(true)}}\n style={styles.button}\n >\n \n \n {setDataEditPopupVisible(true)}}\n style={styles.button}\n disabled={!accountValue}\n >\n \n \n\n {deleteDataRecord(accountValue)}}\n style={styles.button}\n >\n \n \n \n\n \n {\n dataTable.map((row, rowIndex) => {\n if(lvl3Value !== null && (row[props.hierarchyKey] * 1) === (lvl3Value * 1)){\n return(\n {setAccountValue(row.id)}}\n style={ (row.id * 1) === (accountValue * 1) ? {backgroundColor: powerforce.colors.accent} : {}}\n >\n {dataStructure.map( (cell, cellIndex ) => {\n return({row[cell.column]})\n })}\n {lvl3Name}\n \n );\n }\n })\n }\n \n\n \n \n\n (row.id * 1) === (accountValue * 1))}\n onClose={ () => { setDataEditPopupVisible(false) }}\n onSave={ editDataRecord }\n //parentCategories={hierarchyTable.filter(row => (row[parentIdKey] * 1) === (lvl2Value * 1))}\n parentCategories={hierarchyTable.filter(row => {\n return row['Subtype_Sequence'] === '3'\n })}\n />\n\n { setDataAddPopupVisible(false) }}\n onSave={ saveOrEdit }\n currentParentCategoryId={lvl3Value}\n //parentCategories={hierarchyTable.filter(row => (row[parentIdKey] * 1) === (lvl2Value * 1))}\n parentCategories={hierarchyTable.filter(row => {\n return row['Subtype_Sequence'] === '3'\n })}\n dataTable={dataTable}\n />\n\n \n\n\n \n )\n\n}\n\nconst styles = StyleSheet.create({\n scrollView: {\n height: '300px',\n borderColor: 'rgb(231, 231, 231)',\n borderWidth: 2,\n borderStyle: 'solid',\n borderTopWidth: 0\n },\n accountScrollView: {\n maxHeight: '350px'\n },\n textInput: {\n marginRight: '0px'\n },\n accordion: {\n position: 'relative',\n },\n listItemContainer : {\n position: 'absolute',\n width: '100%',\n height: '100%',\n zIndex: 99\n },\n listItem: {\n backgroundColor: '#ff0000',\n position: 'relative',\n zIndex: 9\n },\n picker : {\n backgroundColor:'#e7e7e7',\n color: '#6a6a6a',\n paddingTop: '29px',\n paddingBottom: '14px',\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '16px',\n borderTopWidth: '0',\n borderLeftWidth: '0',\n borderRightWidth: '0',\n borderBottomWidth: '1px',\n borderBottomColor: '#ababab',\n //marginRight: '10px',\n },\n pickerItem : {\n fontSize: '16px'\n },\n smallLabel : {\n fontSize: '12px',\n top: '5px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n bigLabel : {\n fontSize: '16px',\n top: '18px',\n position: 'absolute',\n color: '#6a6a6a',\n left: '12px'\n },\n textLabel : {\n backgroundColor: 'rgb(231, 231, 231)',\n color: '#6a6a6a',\n padding: '10px',\n },\n accountTableHeader : {\n backgroundColor: 'rgb(231, 231, 231)',\n color: '#6a6a6a',\n },\n levelTableHeader : {\n backgroundColor: 'rgb(231, 231, 231)',\n color: '#6a6a6a',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n buttonHolder : {\n flexDirection: 'row',\n paddingTop: '5px'\n },\n tableButtonHolder : {\n flexDirection: 'row',\n alignSelf: 'flex-end',\n position: 'absolute',\n top: '10px',\n right: '15px'\n },\n button: {\n marginLeft: '4px'\n }\n});\n","import * as React from 'react';\nimport { Card, Paragraph } from 'react-native-paper';\nimport { Feather } from '@expo/vector-icons';\nimport {Text, View} from \"react-native\";\nimport {isDesktop} from '../../helpers/responsive'\n\nexport default function TextComponent(props){\n\n function convertToRnText(textComponent, i, keyName){\n console.log(i);\n console.log(keyName);\n console.log(textComponent);\n\n if(textComponent.type === 'textnode'){\n return (\n {textComponent.content}\n )\n }else if(textComponent.tagName === 'br'){\n return (\n {' '}\n )\n }else if(textComponent.type === 'text'\n || textComponent.tagName === 'b'\n || textComponent.tagName === 'i'\n || textComponent.tagName === 'u'\n || textComponent.tagName === 'strike'\n || textComponent.tagName === 'font'\n ){\n // Get style from tagName\n let textStyle = {};\n if(textComponent.tagName === \"b\"){\n textStyle = {fontWeight:'bold'};\n }\n if(textComponent.tagName === \"i\"){\n textStyle = {fontStyle:'italic'};\n }\n if(textComponent.tagName === \"u\"){\n textStyle = {textDecorationLine:'underline'};\n }\n if(textComponent.tagName === \"strike\"){\n textStyle = {textDecorationLine:'line-through'};\n }\n if(textComponent.tagName === \"font\"){\n textStyle = {color:textComponent.attributes.color};\n }\n\n if(textComponent.components.length === 1 && textComponent.components[0].type === 'textnode'){\n return (\n {textComponent.components[0].content}\n )\n }else{\n console.log('GOING FURTHER', keyName, textComponent.components);\n let content = textComponent.components.map((subComponent, i, array) => {\n return convertToRnText(subComponent, i, 'sub' + keyName)\n })\n console.log(content);\n return (\n {content}\n )\n }\n\n\n }\n }\n\n return (\n \n {props.text}\n {\n props.nestedTextComponents ? props.nestedTextComponents.map((textComponent, i, array) => {\n return convertToRnText(textComponent, i, 'key');\n }) : null\n }\n \n\n )\n\n}\n","import * as React from 'react';\nimport {Picker} from \"@react-native-picker/picker\";\nimport {View, TextInput, Text, StyleSheet} from \"react-native\";\nimport {ActivityIndicator, Button, Checkbox} from \"react-native-paper\";\nimport {PowerforceContext} from \"../../helpers/context\";\nimport {getData, postData} from \"../../helpers/api\";\nimport {debounce} from \"lodash\";\nimport {useCallback} from \"react\";\nimport DropDown from \"react-native-paper-dropdown\";\n\nexport default function ReportSelector(props){\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [reportChanges, setReportChanges] = React.useState([]);\n const [selectAll, setSelectAll] = React.useState(false);\n\n // =========== Updating Reports ============\n\n const updateReports = (reportToChange, changeKey, changeValue) => {\n\n // Copy state array\n let updatedReportChanges = reportChanges;\n // Add report to changes array if it doesn't exist\n if(!updatedReportChanges[reportToChange.reportKey]){\n updatedReportChanges[reportToChange.reportKey] = {...reportToChange};\n }\n // Change the specified value\n updatedReportChanges[reportToChange.reportKey][changeKey] = changeValue;\n // Set changes to state\n setReportChanges(updatedReportChanges);\n console.log(reportChanges);\n\n // Update all reports props and send to ReportManager\n let updatedReports = props.reports;\n updatedReports.find((report, index) => {\n if (report.reportKey === reportToChange.reportKey) {\n updatedReports[index][changeKey] = changeValue;\n return true; // stop searching\n }\n return false;\n });\n\n // Callback to ReportManager. Must be full array of reports with changes.\n props.updateReports(updatedReports)\n }\n\n const selectAllReports = () => {\n let updatedReports = props.reports;\n\n // If selectAll was true, make them all unselected\n let value = true;\n if(selectAll){\n value = false;\n }\n\n updatedReports.map(report => {\n updateReports(report, 'active', value);\n })\n\n setSelectAll(!selectAll);\n }\n\n const updateRoles = (reportToChange, role) => {\n console.log(reportToChange, role);\n let newRoles = reportToChange.roles;\n\n // We need to remove it if it is already in the array\n if(reportToChange.roles.includes(role)){\n newRoles = newRoles.filter(item => item !== role)\n }else{\n // We need to add the report to the role if it is not in the array\n newRoles.push(role);\n }\n // Now update the report\n console.log(newRoles);\n updateReports(reportToChange, 'roles', newRoles)\n }\n // =========== Saving Reports ============\n\n const saveReportsCallback = () => {\n setReportChanges([]);\n console.log('callback!');\n }\n\n // =========== RETURN ============\n\n if(props.loading){\n return(\n \n \n \n );\n }\n\n if(props.reports === null){\n return(Select a Company and a Workspace then click \"Get Reports\");\n }\n\n return (\n \n\n \n\n \n {\n selectAllReports()\n }}\n />\n \n PowerBI Name\n Type\n Foundations Friendly Name\n Report Group\n \n\n {props.reports.map((report, index) => {\n return(\n \n )\n })}\n\n \n {\n console.log('saveReports!');\n console.log(reportChanges);\n props.saveReports({ ...reportChanges }, saveReportsCallback)\n }}\n >\n Save\n \n \n\n \n\n\n )\n\n}\n\nfunction ReportRow(props){\n\n // report, roles\n const [expanded, setExpanded] = React.useState(false);\n const [friendlyName, setFriendlyName] = React.useState(props.report.friendlyName);\n const [reportGroup, setReportGroup] = React.useState(props.report.reportGroup);\n const [datasetId, setDatasetId] = React.useState(props.report.datasetId);\n\n\n const updateReportsDebounced = useCallback(\n debounce(props.updateReports, 1000, {\n 'leading': false,\n 'trailing': true\n }), []\n )\n\n //debounceUpdateFriendlyName(props.report, 'friendlyName', text)\n\n const Roles = (props) => {\n if(!expanded){\n return (\n \n setExpanded(true)}\n >\n Show Roles\n \n \n );\n }\n\n return(\n \n \n Assign Roles\n setExpanded(false)}\n >\n Hide Roles\n \n \n\n {props.roles.map((role, index) => {\n return(\n \n {\n props.updateRoles(props.report, role)\n }}\n />\n {role}\n \n )\n })}\n \n )\n }\n\n return (\n \n \n {\n console.log(props.report);\n props.updateReports(props.report, 'active', !props.report.active)\n }}\n />\n \n\n \n { } }\n onSubmitEditing={(e) => {} }\n style={styles.textInput}\n />\n \n \n\n \n { } }\n onSubmitEditing={(e) => {} }\n style={styles.textInput}\n />\n \n\n \n {\n setFriendlyName(text);\n updateReportsDebounced(props.report, 'friendlyName', text)\n } }\n style={styles.textInputBordered}\n />\n \n\n \n {\n setReportGroup(text);\n updateReportsDebounced(props.report, 'reportGroup', text)\n } }\n style={styles.textInputBordered}\n />\n \n\n\n \n\n \n )\n}\n\nfunction DatasetDropdown(props){\n const [selectedDataset, setSelectedDataset] = React.useState(props.selectedDataset ? props.selectedDataset : false);\n\n //console.log(props);\n\n if(props.type !== 'Paginated Report'){\n return null;\n }\n\n return(\n {\n setSelectedDataset(itemValue)\n props.onChange(props.report, 'datasetId', itemValue)\n }}\n >\n\n \n\n {props.datasets.map(dataset => {\n return()\n })}\n\n \n )\n}\n\n\nconst styles = StyleSheet.create({\n loadContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n height: '50vh'\n },\n tableHeader: {\n flexDirection: \"row\",\n width: \"100%\",\n backgroundColor: '#c0c0c0',\n paddingTop: '10px',\n paddingBottom: '10px',\n },\n tableRow: {\n flexDirection: \"row\",\n flexWrap: 'wrap',\n width: \"100%\",\n borderBottomColor: '#c0c0c0',\n borderBottomWidth: '2px',\n paddingTop: '10px',\n paddingBottom: '10px',\n },\n column: {\n width: '20%',\n marginLeft: '10px'\n },\n smallColumn: {\n width: '10%',\n marginLeft: '10px'\n },\n checkColumn: {\n width: '5%',\n marginLeft: '10px'\n },\n textInput: {\n width: \"100%\",\n paddingTop: '5px',\n paddingBottom: '5px',\n paddingLeft: '2px',\n },\n textInputBordered: {\n width: \"100%\",\n paddingTop: '5px',\n paddingBottom: '5px',\n paddingLeft: '2px',\n borderWidth: '1px',\n borderColor: '#c0c0c0',\n },\n roleRow: {\n width: '14%',\n marginLeft: '1%'\n },\n expandedRoleRow: {\n width: '100%',\n flexDirection: 'row',\n flexWrap: 'wrap',\n paddingTop: '20px',\n paddingRight: '20px',\n paddingBottom: '20px',\n paddingLeft: '20px',\n backgroundColor: '#dadada',\n\n },\n roleContainer: {\n flexDirection: 'row',\n minWidth: '20%'\n },\n roleName:{\n paddingTop: '6px',\n paddingBottom: '5px',\n },\n assignRolesTop: {\n width:'100%',\n paddingBottom: '20px',\n paddingLeft:'10px',\n flexDirection: 'row',\n }\n})\n","import * as React from 'react';\nimport {Picker} from \"@react-native-picker/picker\";\nimport {View, Text, StyleSheet} from \"react-native\";\nimport ReportSelector from \"./ReportSelector\";\nimport {Button} from \"react-native-paper\";\nimport {getData, postData} from \"../../helpers/api\";\nimport {PowerforceContext} from \"../../helpers/context\";\n\nexport default function ReportManager(props){\n\n\n const powerforce = React.useContext(PowerforceContext);\n\n const [selectedCompany, setSelectedCompany] = React.useState(props.companies[0]);\n const [selectedWorkspace, setSelectedWorkspace] = React.useState('primary');\n const [selectedCompanyReports, setSelectedCompanyReports] = React.useState(null);\n const [selectedCompanyRoles, setSelectedCompanyRoles] = React.useState(null);\n const [selectedCompanyDatasets, setSelectedCompanyDatasets] = React.useState(null);\n const [loading, setLoading] = React.useState(false);\n\n const getReports = () => {\n setLoading(true)\n getData(\n '/data/reportManager/' + selectedCompany.id + '/' + selectedWorkspace,\n powerforce.authToken\n ).then(response => {\n console.log(response);\n\n if(response.status !== 200){\n alert('Error fetching reports.');\n }else{\n setSelectedCompanyReports(response.reports);\n setSelectedCompanyRoles(response.roles);\n setSelectedCompanyDatasets(response.datasets);\n }\n setLoading(false)\n\n })\n }\n\n const updateReports = (updatedReports) => {\n console.log(updatedReports);\n setSelectedCompanyReports([...updatedReports]);\n }\n\n const saveReports = (reportChanges, callback) => {\n setLoading(true)\n\n console.log('reportChanges', reportChanges);\n postData(\n '/data/reportManager/' + selectedCompany.id + '/' + selectedWorkspace,\n powerforce.authToken,\n reportChanges\n ).then(response => {\n console.log(response);\n\n if(response.status !== 200){\n alert('Error saving reports. Details: ' + response.detail);\n callback()\n getReports()\n }else{\n callback()\n getReports()\n }\n\n\n })\n }\n\n return (\n \n\n \n Company: \n {\n console.log(itemValue);\n console.log(props.companies);\n let company = props.companies.find(x => x.id.toString() === itemValue.toString())\n console.log(company);\n setSelectedCompany(company)\n }}\n >\n \n\n {props.companies.map(company => {\n return()\n })}\n\n \n\n Workspace: \n {\n setSelectedWorkspace(itemValue)\n }}\n >\n\n \n \n\n \n\n \n Get Reports\n \n \n\n\n\n \n\n \n\n\n )\n\n}\n\nconst styles = StyleSheet.create({\n textLabel: {\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '10px',\n },\n})\n","import * as React from 'react';\nimport {useMediaQuery} from \"react-responsive\";\n\nexport default function VideoComponent(props){\n\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 1224px)' })\n\n const width = isTabletOrMobile ? '100%' : props.data.width;\n\n if(props.data.source.includes('http')){\n return (\n
\n