{"version":3,"sources":["containers/Home.jsx","components/LoaderButton.js","containers/Login.js","containers/NotFound.js","containers/Confirmation.jsx","containers/Admin.jsx","components/contstants/Locations.js","containers/SetRoadTestDates.jsx","containers/ManageRoadLessons.jsx","containers/ViewAllRoadLessons.jsx","containers/SetRoadTestInstructors.jsx","containers/SetRoadPackages.jsx","containers/SetRoadLocations.jsx","containers/ModifyStudentData.jsx","containers/Table.jsx","containers/AttendeeList.jsx","containers/ExportTransactions.jsx","containers/About.jsx","containers/Contact.jsx","containers/Appointments.jsx","containers/ErrorFocus.jsx","containers/RegistrationForm.jsx","components/AppliedRoute.js","components/AuthenticatedRoute.js","components/UnauthenticatedRoute.js","Routes.js","App.js","registerServiceWorker.js","config.js","index.js","logo.png"],"names":["Registration","_React$Component","props","_this","_classCallCheck","state","startDate","moment","packages","avaliableDates","westonDates","westRoxburyDates","locationDates","handleChange","bind","_inherits","_createClass","key","value","date","this","setState","that","fetch","headers","method","then","handleErrors","response","json","data","console","log","JSON","parse","Object","keys","filter","x","isAfter","map","sort","a","b","avaliableDatesKeys","toISOString","forEach","locations","f","toUpperCase","dateText","location","day","format","length","slice","join","push","datetext","roadTestDates","React","createElement","className","Carousel","Item","alt","src","Caption","strong","Alert","variant","Heading","Row","Col","datedata","package","price","replace","Link","to","href","Component","_ref","isLoading","text","loadingText","_ref$className","_ref$disabled","disabled","_objectWithoutProperties","_excluded","Button","assign","concat","_regeneratorRuntime","e","t","r","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","Error","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","Login","_Component","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","apply","event","re","target","id","test","password1Err","_defineProperty","password2Err","handleSubmit","_asyncToGenerator","_callee","user","_context","preventDefault","Auth","signIn","email","password","challengeName","loading","userHasAuthenticated","t0","alert","message","_x","arguments","handlePWChange","_ref2","_callee2","result","_context2","password1","password2","completeNewPassword","_x2","onSubmit","FormGroup","controlId","bsSize","FormControl","autoFocus","onChange","autoComplete","LoaderButton","block","validateForm","Modal","show","onHide","handleHide","dialogClassName","Body","required","placeholder","bsStyle","Confirmation","ok","statusText","showConfirmation","student","APIError","qs","search","ignoreQueryPrefix","dateStart","token","encodeURI","studentData","momentDate","daysToAdd","indexOf","weekendDate","add","subtract","fName","role","Image","responsive","Admin","_callSuper","style","margin","Locations","InputFeedback","error","RadioButton","_ref2$field","field","onBlur","label","checked","classnames","htmlFor","RadioButtonGroup","_ref3","touched","children","classes","RoadTestDates","_ref4","newRoadTestDates","selectedDays","session","options","showToast","toastMesssage","includes","currentSession","body","idToken","jwtToken","API","post","toastType","status","stringify","addLocation","dayOfWeek","isoWeekday","_toConsumableArray","Set","subtractLocation","handleDayClick","Date","_ref5","selected","refreshStatus","dateError","selectedIndex","findIndex","selectedDay","DateUtils","isSameDay","splice","startOf","toDate","_this2","_this$state","onClose","dismissible","position","top","right","zIndex","width","DayPicker","onDayClick","formatDate","parseDate","numberOfMonths","Table","striped","bordered","hover","size","index","parsedDate","longDate","selectedLocations","Badge","pill","onClick","Formik","ref","formikRef","initialValues","bindSubmitForm","errors","setFieldValue","setFieldTouched","roadTestDateOption","roadTestDate","getDay","Field","component","momentLocalizer","withDragAndDrop","Calendar","RoadLessonManager","handleSetLocationAndGetData","loadingDay","selectedLocation","fetchSlotData","handleSwapLessons","lessonsToSwap","lessonsToModify","selectedInstructorToSwapTo","slots","slot","selectedInstructors","instructor","slotName","has","lessonToSwap","locationTime","resourceId","bookedStudents","timestamp","swapInstructorError","_callee3","results","startId","events","_context3","handleGetSlotsbyDay","startTime","title","start","end","endTime","parseInt","color","_callee4","queryData","specificLocationData","_context4","split","generateSlots","_callee5","selectedDate","existingSlots","stateSlotNames","startIndex","endIndex","existingNames","missingOriginalsSlots","missingOriginals","_context5","timeFromInt","generateInstructorSlots","sortSlots","_x3","generateTypicalSlots","_ref6","_callee6","typicalRange","ranges","startRange","endRange","_index","_context6","_x4","handlePick","selectedOption","localSlots","selectedSlot","bookedInstructors","newInstructors","every","val","toastMessage","handleInstructorGeneratorPick","handleInstructorSwapPick","activeKey","daysWithLessons","undefined","instructors","listViewMode","listGroupViewMode","handleStartTimeChange","handleEndtimeTimeChange","handleSlotSave","deleteOldLesson","handleSelectedLessonChange","handleSelectAllLessons","decryptedInstructors","decryptedName","crypto","AES","decrypt","resourceTitle","toString","enc","Utf8","fetchRoadTestInstructors","_deleteOldLesson","_callee7","studentDate","studentTimestamp","lessonDate","lessonLocationTime","_context7","request","_x5","_x6","_x7","_x8","_x9","array","timeToInt","_handleDayClick","_callee8","_ref7","_context8","_x10","_x11","clear","flatMap","string","evt","lessonId","delete","_handleSlotDelete","_callee9","lessons","input","_context9","_x12","time","_handleSlotSave","_callee10","_context10","phone","substr","groupMode","_this3","instructorDivision","instructorName","instructorKeys","instructorSlots","instructorSlot","toLocaleString","hour","minute","hour12","formatPhone","_this4","roadTestLessonDate","studentName","studentTime","_this5","Form","Check","Select","menuPlacement","studentNames","_this6","Accordion","defaultActiveKey","Card","Toggle","as","Header","eventKey","Collapse","showOutsideDays","TimePicker","step","sm","isMulti","handleSlotClear","handleSlotDelete","renderStudent","renderClearStudents","renderSwapStudents","ButtonToolbar","renderInstructor","RoadLessonViewer","handleGetFutureLessons","unsortedLessons","l","lesson","sortedLessons","get","String","sortString","localeCompare","attemptedToLoadData","students","eventkey","renderRow","addNewInstructor","localInstructors","maxId","Math","max","packageError","deleteInstructor","encryptedInstructors","encryptedName","encrypt","warn","_ref$field","addNewPackage","localPackages","deletePackage","fetchRoadTestPackages","editName","roadTestPackage","fetchRoadTestLocations","address","city","zipcode","ModifyStudentData","handleEditChange","_e$target","editedStudent","handleParkwayUpdate","drivingSchool","findStudents","getFilteredStudents","resetFilters","lName","filterYear","selectedStudent","filters","isValid","loadedData","filteredStudents","handleUpdateUser","oldStudent","mode","item","stopPropagation","moveError","emailInitalState","emailRoadTestPassedState","emailRoadTestSlotConfirmed","emailRoadTestSlotState","validateToken","avaliableOptions","yearOptions","cols","accessor","handleStudentEdit","currentYear","year","selectedPackage","currentTarget","certPaymentStatus","Label","Control","parentEmailAddress","scheduledLessons","noValidate","Group","Feedback","onLocationChange","InputGroup","Append","dob","permitNo","permitDate","emailAddress","note","inline","onCertificateChange","actualDateAdjustment","filteredData","scheduledLesson","columns","handleFilterDownload","reactTableTransaction","getResolvedState","sortedData","renderDownload","filterCSVLink","link","click","fetchedData","_componentDidMount","CSVLink","filename","ReactTable","defaultSorted","desc","minRows","defaultPageSize","pageSizeOptions","AttendeeList","dateNeeded","formatPhoneNumbers","fetchedStudents","APIDateStudentResults","unslotedMembers","selectedDaysRange","dataDirty","onDateChange","handleSelect","selectedWeekenedDates","selectedWeekday","weekArray","weekendArray","dayOfExam","unsavedManuallyAddedStudents","arrayOfStudents","studentWithPhoneNumberToUpdate","match","unslotTime","cost","fullPricing","reduce","transactionDate","height","frameBorder","allowFullScreen","rel","processLocationSlots","preSlottedFolks","selectedLocationSet","selectedDateLocations","unslotTimes","person","selectedTimeSlot","slotTime","unslotedGroupTimes","filteredAPIDateStudentResults","totalProgram","paymentType","initalPayment","handleModalInputChange","subtractUnslottedTime","selectedUnslottedTimeslotName","responseHandler","lessonName","newLesson","self","nonce","messages","resultCode","code","CCLessonsWanted","selectedLessonStudent","CCLessonsPrice","CCErrors","opaqueData","dataValue","CCFirstName","CCLastName","CCAddress","CCCity","CCState","CCZip","CCCountry","lessonPrice","showAddLessons","CCExpiration","CCCode","CCNumber","addLessonValidated","skipExtraLessonsPayment","uuidv4","getRandomValues","Uint8Array","copyStudentEmailsToClipboard","textField","document","innerText","appendChild","select","execCommand","remove","copyParentEmailsToClipboard","copyAllPhoneNumbersToClipboard","handleStudentPick","personValue","handleUnslottedStudentPick","selectedOptions","localUnslotedMembers","finalizedSlots","selectedStudentsWithTimestampSet","selectedStudentsWithoutTimestampSet","handleChangeRoadTestStatus","quantity","useSlots","shownStudents","_studentData","handleSkipStudentLessons","handleConfirmRegularScheduleLessons","handleChangeRoadTestCertificateStatus","_ref8","usesStudentSlots","_ref9","_x13","generateUnslottedGroupTimes","_ref10","_x14","fillLeftovers","_ref11","_callee11","remainingslots","difference","newSlots","j","newdata","unslotedMembersData","_context11","_x15","deleteNewLesson","newLessonsToAdd","handleAddLessonDate","selectedLessonValue","handleLessonDateChange","loadRoadTestLessonDates","inputValue","callback","rawRoadTestLessons","foundLocations","foundLocationOptions","isBefore","loadOptions","allTimes","timeSlot","loadWalpoleOptions","_ref12","_callee12","_context12","_x16","addModalErrors","roadTestMembers","addModalValidated","dateOptions","selectedRealDays","preSlottedMembers","fetchingStudents","showAPIResponse","refreshing","emailSendDateData","showModal","modalView","showManageLessons","selectedLessonLocation","selectedLessonStudentIndex","firstName","lastName","dateOfBirth","permitNumber","permitIssueDate","phoneNumber","roadTestPackageOption","addCompletionCertificate","emailsToCopy","disabledButtons","newCopyMoveDate","newEditMoveDate","copyError","deleteError","timesToStudentMap","Map","handleFirstNextButton","handleDayOfWeekButton","handleModalChange","onRadioPackageChange","addNewStudents","handleMoveStudent","handleCopyStudent","handleDeleteStudent","handleAddNewUser","handleAddNewLessons","handleUnslottedTimeSave","checkEmailDate","renderLessonState","renderUnslottedStudentTimes","addAdditionalLessons","handleNewMoveDateChoice","handleNewCopyDateChoice","sendInitalEmailBulk","sendRoadTestPassedEmailsBulk","sendRoadTestFailedEmailsBulk","sendRoadTestSlotEmailsBulk","sendRoadTestTimeEmailsBulk","script","_callee13","_ref13","_context13","_x17","_x18","view","form","checkValidity","packageChoice","now","transactionID","paymentStatus","bookedLessons","secureData","authData","clientKey","apiLoginID","cardData","cardNumber","month","substring","cardCode","zip","fullName","window","Accept","dispatchData","_addNewStudents","_callee14","newStudents","_context14","_handleMoveStudent","_callee15","_context15","_handleCopyStudent","_callee16","dow","_context16","_handleDeleteStudent","_callee17","_context17","_sendEmail","_callee18","params","_context18","_x19","_sendInitalEmailBulk","_callee19","emailRecipient","emailRecipients","dynamoDBDetails","defaultTemplate","lengthOfSelectedDays","weekType","formData","lessonText","extraLocationText","weekendStartText","ReplacementTemplateData","dbDetails","finalData","_context19","Source","Template","DefaultTemplateData","ReplyToAddresses","Destinations","lessonData","sendEmail","_x20","_sendRoadTestSlotEmailsBulk","_callee20","finalTime","_context20","_x21","_sendRoadTestTimeEmailsBulk","_callee21","_context21","_x22","_sendRoadTestPassedEmailsBulk","_callee22","slotMode","_context22","EmailError","roadTestPassed","roadTestLicenseEmailSent","_x23","_sendRoadTestFailedEmailsBulk","_callee23","_context23","parentEmail","_x24","examDate","movement","currPosition","newPosition","slotLocalCopy","upperSlot","lowerSlot","currPosition1","newPosition1","slotLocalCopy1","upperSlot1","lowerSlot1","_callee24","pos","allStudents","tempStudents","studentKeys","studentIndex","_context24","_handleUnslottedTimeSave","_callee25","_context25","_refreshStatus","_callee26","newKey","_context26","_x25","_saveNewLessons","_callee28","newLessons","_context28","_ref14","_callee27","_context27","_x26","_callee29","removedLesson","newStudent","_context29","_x27","_addAdditionalLessons","_callee31","_context31","_ref15","_callee30","_context30","_x28","lessonsRequired","lessonsScheduled","failedScheduledLessons","matchedPackage","failedLessons","AsyncSelect","cacheOptions","defaultOptions","noOptionsMessage","saveNewLessons","confirmScheduledRegular","skipStudentLessons","validated","Text","studentsWithoutSlots","existingStudents","set","styles","menuPortal","base","_objectSpread","timeOptions","handleLessonModalChange","selectedGroupTime","handleSlotDurationChange","renderWeekdayChoices","handleSlotMove","closeButton","Title","AsyncCreatableSelect","Footer","ErrorFocus","_len","args","Array","_key","getKeysRecursively","object","isObject","currentKey","prevProps","_prevProps$formik","formik","isSubmitting","isValidating","selectorKey","selector","errorElement","querySelector","focus","connect","tz","setDefault","TextInput","handleBlur","display","FastField","DOBTextInput","_React$Component2","_len2","_key2","inputDate","CCTextInput","_React$Component3","_len3","_key3","CCField","Payment","fns","formatCardNumber","first","Checkbox","_ref2$form","addCompletionCertificateCheckBox","_ref3$field","_ref3$form","_excluded2","RadioButtonDateLocation","_React$Component4","_len4","_key4","fullRoadTestDateOption","DrivingSchoolRadioButtonChoice","_React$Component5","_len5","_key5","RoadTestLessonDisplayButton","_React$Component6","_this7","_len6","_key6","clearLesson","selectedLessonChoices","_this8","selectedLesson","RoadTestRadioButtonChoice","_React$Component7","_this9","_len7","_key7","handleLessonChange","_this10","sublabel","sourceOptions","FormikSelect","_React$Component8","_this11","_len8","_key8","entries","FormikSelectRoadLessonDate","_React$Component9","_this12","_len9","_key9","allLessonData","fetchedLessons","roadTestLessonDates","FormikAddLesson","_React$Component10","_this13","_len10","_key10","selectedDayLessonOptions","_this14","lessonDateSlot","FormikSelectRoadLessonDateSlot","_React$Component11","_this15","_len11","_key11","RegistrationForm","_React$Component12","_this16","formikVals","current","parsedDOBDate","parsedPermitDate","roadTestChoiceDate","source","lessonsNeeded","resetForm","setSubmitting","setErrors","apiResponseError","validNumber","validateCardNumber","validExpiration","validateCardExpiry","validCVC","validateCardCVC","cardType","confemail","showParentConf","confParentEmail","selectedLessons","roadTestDatesFile","createRef","option","scrollTo","_this17","RegForm","drivingSchoolChoice","focused","confirmCheck","innerRef","validateOnChange","validationSchema","Yup","shape","min","sourceText","typeError","oneOf","submitCount","drivingSchoolRadio","Cards","number","expiry","cvc","acceptedCards","C","cProps","rest","Route","render","isAuthenticated","Redirect","pathname","redirect","url","regex","RegExp","exec","decodeURIComponent","querystring","childProps","Switch","AppliedRoute","path","exact","Home","About","Contact","UnauthenticatedRoute","AuthenticatedRoute","RoadTestDatePicker","RoadPackagePicker","RoadLocationPicker","Appointment","studentTable","Transactions","RoadLessonInstructors","NotFound","require","polyfill","App","authenticated","handleLogout","signOut","history","isAuthenticating","Navbar","bg","expand","Brand","logo","aria-controls","Nav","LinkContainer","NavItem","Routes","withRouter","Boolean","hostname","config","process","REACT_APP_STAGE","cognito","REGION","USER_POOL_ID","APP_CLIENT_ID","IDENTITY_POOL_ID","MAX_ATTACHMENT_SIZE","Amplify","configure","mandatorySignIn","region","userPoolId","identityPoolId","userPoolWebClientId","endpoints","endpoint","ReactDOM","Router","getElementById","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":";ykFAIoB,IAGCA,EAAY,SAAAC,GAE7B,SAAAD,EAAYE,GAAQ,IAADC,E,MAUkC,OAVlCC,YAAA,KAAAJ,G,EACf,K,EAAAA,E,EAAA,CAAME,G,kBAANC,E,iGACKE,MAAQ,CACTC,UAAWC,MACXC,SAAU,GACVC,eAAgB,GAChBC,YAAa,GACbC,iBAAkB,GAClBC,cAAe,IAEnBT,EAAKU,aAAeV,EAAKU,aAAaC,KAAIX,GAAOA,EACpD,OAAAY,YAAAf,EAAAC,GAAAe,YAAAhB,EAAA,EAAAiB,IAAA,eAAAC,MACD,SAAaC,GACTC,KAAKC,SAAS,CACVf,UAAWa,MAElB,CAAAF,IAAA,oBAAAC,MACD,WACI,IAAMI,EAAOF,KACbG,MAAM,6DAA8D,CAChEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACdC,QAAQC,IAAIF,GACZR,EAAKD,SAAS,CAAEb,SAAUsB,OAIlCP,MAAM,0DAA2D,CAC7DC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GAGd,GAFAA,EAAOG,KAAKC,MAAMJ,GAClBC,QAAQC,IAAIF,GACC,OAATA,EAAe,CACf,IAAIrB,EAAiB0B,OAAOC,KAAKN,GAAMO,QAAO,SAAAC,GAAC,OAAI/B,IAAO+B,GAAGC,QAAQhC,UAChEiC,KAAI,SAAAF,GAAC,OAAI/B,IAAO+B,MAChBG,MAAK,SAAUC,EAAGC,GAAK,OAAOD,EAAIC,KACvCZ,QAAQC,IAAIF,EAAMrB,GAElB,IAAImC,EAAqBnC,EAAe+B,KAAI,SAAAF,GAAC,OAAIA,EAAEO,iBAE/CjC,EAAgB,GAEpBgC,EAAmBE,SAAQ,SAAU3B,GACjCY,QAAQC,IAAIb,GACZ,IAAI4B,EAAYjB,EAAKX,GAAM4B,UAAUP,KAAI,SAAAQ,GAAC,OAAIA,EAAEC,iBAC5CC,EAAW,GACXC,EAAW,GAEXD,EADuB,IAAvB3C,IAAOY,GAAMiC,MACF,cAAgB7C,IAAOY,GAAMkC,OAAO,OAEpC,YAAc9C,IAAOY,GAAMkC,OAAO,OAAS,IAAM9C,IAAOY,GAAMkC,OAAO,OAEpFH,GAAY,MACRH,EAAUO,OAAS,GACnBH,GAAYJ,EAAUQ,MAAM,EAAGR,EAAUO,OAAS,GAAGE,KAAK,MAC1DL,GAAY,QACZA,GAAYJ,EAAUQ,MAAMR,EAAUO,OAAS,EAAGP,EAAUO,SAE5DH,GAAYJ,EAAUS,KAAK,SAE/B5C,EAAc6C,KAAK,CACfC,SAAUR,EACVC,SAAUA,OAKlB7B,EAAKD,SAAS,CAAEZ,eAAgBA,EAAgBkD,cAAe7B,EAAMlB,wBAKrF,CAAAK,IAAA,SAAAC,MACA,WACI,OAEI0C,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,qBACJD,IAAAC,cAAA,MAAIC,UAAU,aAAY,2DAC1BF,IAAAC,cAACE,IAAQ,KACLH,IAAAC,cAACE,IAASC,KAAI,KACVJ,IAAAC,cAAA,OACIC,UAAU,4BACVG,IAAI,UACJC,IAA8B,gBAElCN,IAAAC,cAACE,IAASI,QAAO,KACbP,IAAAC,cAAA,QAAMC,UAAU,iBAAgB,iCAChCF,IAAAC,cAAA,KAAGC,UAAU,oBAAmB,6CAGxCF,IAAAC,cAACE,IAASC,KAAI,KACVJ,IAAAC,cAAA,OACIC,UAAU,4BAEVG,IAAI,UACJC,IAA8B,gBAElCN,IAAAC,cAACE,IAASI,QAAO,KACbP,IAAAC,cAAA,QAAMC,UAAU,iBAAgB,kCAChCF,IAAAC,cAAA,KAAGC,UAAU,oBAAmB,gDAGxCF,IAAAC,cAACE,IAASC,KAAI,KACVJ,IAAAC,cAAA,OACIC,UAAU,4BAEVG,IAAI,UACJC,IAA8B,gBAElCN,IAAAC,cAACE,IAASI,QAAO,KACbP,IAAAC,cAAA,QAAMC,UAAU,iBAAgB,uBAChCF,IAAAC,cAAA,KAAGC,UAAU,oBAAmB,yEAI5CF,IAAAC,cAAA,MAAIC,UAAU,iBAAgB,+CAC9BF,IAAAC,cAAA,WACID,IAAAC,cAAA,OAAKC,UAAU,mBAAkB,kMAG7BF,IAAAC,cAAA,WACAD,IAAAC,cAAA,SAAG,mCACHD,IAAAC,cAAA,KAAGC,UAAU,QAAO,oGACpBF,IAAAC,cAAA,KAAGO,QAAM,EAACN,UAAU,cAAa,iJACjCF,IAAAC,cAAA,YAAM,mGAGND,IAAAC,cAAA,SAAG,IAACD,IAAAC,cAAA,YAAM,mFAIdD,IAAAC,cAAA,WACAD,IAAAC,cAAA,WAEAD,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACXV,IAAAC,cAACQ,IAAME,QAAO,KAAC,wCACfX,IAAAC,cAAA,SAAG,gHAGHD,IAAAC,cAAA,UAEAD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACCrD,KAAKf,MAAMO,cAAc0C,OAAS,EAC/BM,IAAAC,cAAA,WACKzC,KAAKf,MAAMO,cAAc4B,KAAI,SAACkC,EAAUzD,GACrC,OAAO2C,IAAAC,cAAA,OAAK5C,IAAKA,GAAMyD,EAAShB,SAAS,KAAEE,IAAAC,cAAA,QAAMC,UAAU,QAAQY,EAASvB,eAGlF,wCAMtBS,IAAAC,cAAA,WACCzC,KAAKf,MAAMG,SAAS8C,OAAS,EAAIM,IAAAC,cAACW,IAAG,KAClCZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,OAAKC,UAAU,2BAA0B,6BACV1C,KAAKf,MAAMG,SAAS6B,QAAO,SAAAC,GAAC,MAAkB,mBAAdA,EAAEqC,WAA8B,GAAGC,MAAMC,QAAQ,IAAK,IAAI,IACrHjB,IAAAC,cAAA,SAAG,mEACHD,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,2DACJD,IAAAC,cAAA,UAAI,iDACJD,IAAAC,cAAA,UAAI,iEAKhBD,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,OAAKC,UAAU,2BAA0B,sCACD1C,KAAKf,MAAMG,SAAS6B,QAAO,SAAAC,GAAC,MAAkB,4BAAdA,EAAEqC,WAAuC,GAAGC,MAAMC,QAAQ,IAAK,IAAI,IAEvIjB,IAAAC,cAAA,SAAG,0KACHD,IAAAC,cAAA,SAAG,2BACHD,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,iCACJD,IAAAC,cAAA,UAAI,0CACJD,IAAAC,cAAA,UAAI,2DAIhBD,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,OAAKC,UAAU,2BAA0B,+DAGrCF,IAAAC,cAAA,SAAG,mEACHD,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,iDACJD,IAAAC,cAAA,UAAI,iDACJD,IAAAC,cAAA,UAAI,8DACJD,IAAAC,cAAA,UAAI,iEAKX,KAETD,IAAAC,cAAA,WACAD,IAAAC,cAAA,OAAKC,UAAU,UAAS,2GAEpBF,IAAAC,cAACiB,OAAI,CAACC,GAAG,gBAAgBjB,UAAU,wBAAuB,2BAI9DF,IAAAC,cAAA,WAEAD,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,CAACX,UAAU,UACXF,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAAQ,WAAgB,mBAC7BD,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAAQ,oBAAyB,mBACtCD,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAAQ,WAAgBD,IAAAC,cAAA,KAAGmB,KAAK,wCAAuC,kCAC5EpB,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAAQ,aAAkB,0CAE/BD,IAAAC,cAAA,aAGRD,IAAAC,cAAA,YAGJD,IAAAC,cAAA,iBAjPa,CAASD,IAAMqB,W,4HCHjC,WAAAC,GAAA,IACbC,EAASD,EAATC,UACAC,EAAIF,EAAJE,KACAC,EAAWH,EAAXG,YAAWC,EAAAJ,EACXpB,iBAAS,IAAAwB,EAAG,GAAEA,EAAAC,EAAAL,EACdM,gBAAQ,IAAAD,GAAQA,EACbrF,EAAKuF,YAAAP,EAAAQ,GAAA,OAER9B,IAAAC,cAAC8B,IAAMxD,OAAAyD,OAAA,CACL9B,UAAS,gBAAA+B,OAAkB/B,GAC3B0B,SAAUA,GAAYL,GAClBjF,GAEHiF,EACCA,EAAmBE,EAAPD,I,qBCjBlBU,EAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAGqB,IAEA0F,EAAK,SAAAC,GACxB,SAAAD,EAAYvL,GAAQ,IAADC,EANrB6F,EAAAK,EAAAN,EAgBM,OAVe3F,YAAA,KAAAqL,GANrBzF,EAOI,KAPJK,EAOIoF,EAPJ1F,EAOI,CAAM7F,GAPVmG,EAAAsF,YAAAtF,IAOIlG,EAPJyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAuBElF,aAAe,SAAAoL,GACb,IAAIC,EAAK,sCACT,OAAQD,EAAME,OAAOC,IACnB,IAAK,YACCF,EAAGG,KAAKJ,EAAME,OAAOjL,QACvBf,EAAKkB,SAAS,CAAEiL,aAAc,KAC9BnM,EAAKkB,SAAQkL,YAAC,GACXN,EAAME,OAAOC,GAAKH,EAAME,OAAOjL,UAIlCf,EAAKkB,SAAQkL,YAAC,GACXN,EAAME,OAAOC,GAAKH,EAAME,OAAOjL,QAElCf,EAAKkB,SAAS,CAAEiL,aAAc,0CAEhC,MACF,IAAK,YACCJ,EAAGG,KAAKJ,EAAME,OAAOjL,QACvBf,EAAKkB,SAAS,CAAEmL,aAAc,KAC9BrM,EAAKkB,SAAQkL,YAAC,GACXN,EAAME,OAAOC,GAAKH,EAAME,OAAOjL,UAIlCf,EAAKkB,SAAQkL,YAAC,GACXN,EAAME,OAAOC,GAAKH,EAAME,OAAOjL,QAElCf,EAAKkB,SAAS,CAAEmL,aAAc,0CAEhC,MACF,QACErM,EAAKkB,SAAQkL,YAAC,GACXN,EAAME,OAAOC,GAAKH,EAAME,OAAOjL,UAIvCf,EAEDsM,aAAY,eAAAvH,EAAAwH,YAAA5G,IAAA0E,MAAG,SAAAmC,EAAMV,GAAK,IAAAW,EAAA,OAAA9G,IAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAIW,OAHnCyC,EAAMa,iBAGN3M,EAAKkB,SAAS,CAAE8D,WAAW,IAAQ0H,EAAA7B,KAAA,EAAA6B,EAAArD,KAAA,EAGduD,IAAKC,OAAO7M,EAAKE,MAAM4M,MAAO9M,EAAKE,MAAM6M,UAAU,KAAD,EAC1C,2BADrBN,EAAIC,EAAA5D,MACDkE,eACPpL,QAAQC,IAAI,mCACZ7B,EAAKkB,SAAS,CAAE+L,SAAS,EAAMR,KAAMA,KAGrCzM,EAAKD,MAAMmN,sBAAqB,GAElCtL,QAAQC,IAAI4K,GAAKC,EAAArD,KAAA,iBAAAqD,EAAA7B,KAAA,GAAA6B,EAAAS,GAAAT,EAAA,SAEjBU,MAAMV,EAAAS,GAAEE,SACRrN,EAAKkB,SAAS,CAAE8D,WAAW,IAAS,yBAAA0H,EAAA3B,UAAAyB,EAAA,mBAEvC,gBAAAc,GAAA,OAAAvI,EAAA8G,MAAA,KAAA0B,YApBW,GAoBXvN,EAEDwN,eAAc,eAAAC,EAAAlB,YAAA5G,IAAA0E,MAAG,SAAAqD,EAAM5B,GAAK,IAAA6B,EAAA,OAAAhI,IAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,OAEtBrJ,EAAKE,MAAM2N,YAAc7N,EAAKE,MAAM4N,WAC7B,sCACF5B,KAAKlM,EAAKE,MAAM2N,aAClBF,EAASf,IAAKmB,oBAAoB/N,EAAKE,MAAMuM,KAAMzM,EAAKE,MAAM2N,UAAW,IAC7EjM,QAAQC,IAAI8L,GACZ3N,EAAKkB,SAAS,CAAC+L,SAAS,KAEzBrL,QAAQC,IAAI7B,EAAKE,MAAM2N,UAAW7N,EAAKE,MAAM4N,YAG7C9N,EAAKkB,SAAS,CAAEmL,aAAc,6BAE/B,wBAAAuB,EAAA7C,UAAA2C,OACF,gBAAAM,GAAA,OAAAP,EAAA5B,MAAA,KAAA0B,YAfa,GA3EZvN,EAAKE,MAAQ,CACX8E,WAAW,EACX8H,MAAO,GACPC,SAAU,GACVE,SAAS,EACTY,UAAW,GACXC,UAAW,IACX9N,EACH,OAAAY,YAAA0K,EAAAC,GAAA1K,YAAAyK,EAAA,EAAAxK,IAAA,eAAAC,MAED,WACE,OAAOE,KAAKf,MAAM4M,MAAM3J,OAAS,GAAKlC,KAAKf,MAAM6M,SAAS5J,OAAS,IACpE,CAAArC,IAAA,SAAAC,MAgFD,WACE,OACE0C,IAAAC,cAAA,OAAKC,UAAU,SACbF,IAAAC,cAAA,QAAMuK,SAAUhN,KAAKqL,cACnB7I,IAAAC,cAACwK,IAAS,CAACC,UAAU,QAAQC,OAAO,SAClC3K,IAAAC,cAAA,WAAK,SACLD,IAAAC,cAAC2K,UAAW,CACVC,WAAS,EACTjH,KAAK,QACLtG,MAAOE,KAAKf,MAAM4M,MAClByB,SAAUtN,KAAKP,gBAInB+C,IAAAC,cAACwK,IAAS,CAACC,UAAU,WAAWC,OAAO,SACrC3K,IAAAC,cAAA,WAAK,YACLD,IAAAC,cAAC2K,UAAW,CACVtN,MAAOE,KAAKf,MAAM6M,SAClBwB,SAAUtN,KAAKP,aACf2G,KAAK,WACLmH,aAAa,sBAGjB/K,IAAAC,cAAC+K,EAAY,CACXC,OAAK,EACLN,OAAO,QACP/I,UAAWpE,KAAK0N,eAChBtH,KAAK,SACLrC,UAAW/D,KAAKf,MAAM8E,UACtBC,KAAK,QACLC,YAAY,sBAGhBzB,IAAAC,cAACkL,IAAK,CACJC,KAAM5N,KAAKf,MAAM+M,QACjB6B,OAAQ7N,KAAK8N,WACbC,gBAAgB,gBAEhBvL,IAAAC,cAACkL,IAAMK,KAAI,KACTxL,IAAAC,cAAA,WACAD,IAAAC,cAAA,KAAGC,UAAU,UAAS,kCACtBF,IAAAC,cAAA,KAAGC,UAAU,UAAS,yCACtBF,IAAAC,cAAA,KAAGC,UAAU,UAAS,2EACtBF,IAAAC,cAAA,QAAMuK,SAAUhN,KAAKuM,gBACnB/J,IAAAC,cAACwK,IAAS,CAACC,UAAU,aACnB1K,IAAAC,cAAA,WAAK,gBACLD,IAAAC,cAAC2K,UAAW,CAACa,UAAQ,EACnB9E,KAAK,YACL/C,KAAK,WACLtG,MAAOE,KAAKf,MAAM2N,UAClBsB,YAAY,aACZZ,SAAUtN,KAAKP,aACf8N,aAAa,eAEdvN,KAAKf,MAAMiM,aACV1I,IAAAC,cAAA,OAAKC,UAAU,SAAS1C,KAAKf,MAAMiM,cAAsB,MAG7D1I,IAAAC,cAACwK,IAAS,CAACC,UAAU,aACnB1K,IAAAC,cAAA,WAAK,oBACLD,IAAAC,cAAC2K,UAAW,CAACa,UAAQ,EACnB9E,KAAK,YACL/C,KAAK,WACLtG,MAAOE,KAAKf,MAAM4N,UAClBqB,YAAY,aACZZ,SAAUtN,KAAKP,aACf8N,aAAa,gBAEf/K,IAAAC,cAAA,WACCzC,KAAKf,MAAMmM,aACV5I,IAAAC,cAAA,OAAKC,UAAU,SAAS1C,KAAKf,MAAMmM,cAAsB,MAE7D5I,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/H,KAAK,UAAS,kBAxK5B,CAASvC,aCHpB,G,QAAA,kBACbrB,IAAAC,cAAA,OAAKC,UAAU,YACbF,IAAAC,cAAA,UAAI,6B,4BCDuC,IA+HhC2L,EA9HG,SAAAvP,GACd,SAAAuP,EAAYtP,GAAQ,IAADC,E,MAQb,OARaC,YAAA,KAAAoP,G,EACf,K,EAAAA,E,EAAA,CAAMtP,G,kBAANC,E,iGAuEJwB,aAAe,SAACC,GAIZ,OAHKA,EAAS6N,IACV1N,QAAQC,IAAIJ,EAAS8N,YAElB9N,GA1EPzB,EAAKE,MAAQ,CACTsP,kBAAkB,EAClBvC,SAAS,EACTwC,QAAS,GACTC,SAAU,GACV1O,KAAM,IACRhB,EACL,OAAAY,YAAAyO,EAAAvP,GAAAe,YAAAwO,EAAA,EAAAvO,IAAA,oBAAAC,MACD,WACI,IAAMkH,EAAS0H,IAAG5N,MAAMd,KAAKlB,MAAMiD,SAAS4M,OAAQ,CAAEC,mBAAmB,IACzE5O,KAAKC,SAAS,CAAEF,KAAMZ,IAAO6H,EAAO6H,WAAW5M,OAAO,gBACtD,IAAM/B,EAAOF,KACTgH,EAAO6H,WAAa7H,EAAO8H,MAC3B3O,MAAM,sFAAwF4O,UAAU/H,EAAO6H,WAAa,UAAYE,UAAU/H,EAAO8H,OAAQ,CAC7J1O,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACd,GAAkB,YAAdA,EAAK0F,KAAoB,CACzB,IAAI4I,EAActO,EAAK8N,QACnBS,EAAa9P,IAAOe,EAAKjB,MAAMc,MAGnC,GAAyB,IAArBkP,EAAWjN,MAAa,CACxB,IAAIkN,EAHW,CAAC,WAAY,SAAU,SAAU,UAAW,YAAa,WAAY,UAGvDC,QAAQH,EAAYI,aACjDH,EAAaA,EAAWI,IAAIH,EAAW,YAEvC,OAAQF,EAAYI,aAChB,IAAK,UACDH,EAAaA,EAAWI,IAAI,EAAG,OAC/B,MACJ,IAAK,YACDJ,EAAaA,EAAWI,IAAI,EAAG,OAC/B,MACJ,IAAK,WACDJ,EAAaA,EAAWI,IAAI,EAAG,OAC/B,MACJ,IAAK,SACDJ,EAAaA,EAAWI,IAAI,EAAG,OAC/B,MACJ,IAAK,WACDJ,EAAaA,EAAWK,SAAS,EAAG,OACpC,MACJ,IAAK,SACDL,EAAaA,EAAWK,SAAS,EAAG,OAOhDpP,EAAKD,SAAS,CAAEuO,QAAS9N,EAAK8N,QAASzO,KAAMkP,EAAWhN,OAAO,qBAG/D/B,EAAKD,SAAS,CAAEwO,SAAU,oEAE9BvO,EAAKD,SAAS,CAAEsO,kBAAkB,QAI1C5N,QAAQC,IAAI,kBACZZ,KAAKC,SAAS,CAAEsO,kBAAkB,EAAME,SAAU,kGAEzD,CAAA5O,IAAA,SAAAC,MAQD,WACI,OACI0C,IAAAC,cAAA,OAAKC,UAAU,UACV1C,KAAKf,MAAMsP,iBAAmB/L,IAAAC,cAAA,WAC3BD,IAAAC,cAAA,WACKzC,KAAKf,MAAMwP,SACRjM,IAAAC,cAAA,WACID,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACXV,IAAAC,cAAA,cAASzC,KAAKf,MAAMwP,YAI5BjM,IAAAC,cAAA,WACID,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACXV,IAAAC,cAAA,cAAQ,4BAEZD,IAAAC,cAAA,SAAG,UAAQzC,KAAKf,MAAMuP,QAAQe,MAAM,gEACpC/M,IAAAC,cAAA,KAAGmB,KAAK,IAAIlB,UAAU,4BAA4B8M,KAAK,UAAS,iBAM5EhN,IAAAC,cAAA,SAAO2D,KAAK,SAAS+C,KAAK,WAAWrJ,MAAM,KAC3C0C,IAAAC,cAAA,SAAO2D,KAAK,SAAS+C,KAAK,eAAerJ,MAAM,KAC/C0C,IAAAC,cAAA,SAAO2D,KAAK,SAAS+C,KAAK,SAASrJ,MAAM,MAGpC0C,IAAAC,cAAA,WACLD,IAAAC,cAACgN,IAAK,CAAC/M,UAAU,cAAcI,IAA8B,mBAAoB4M,YAAU,IAC3FlN,IAAAC,cAAA,WACAD,IAAAC,cAAA,KAAGC,UAAU,UAAS,+CACtBF,IAAAC,cAAA,KAAGC,UAAU,UAAS,sBAhHxB,CAASF,IAAMqB,W,0ICHU,IAEtB8L,EAAK,SAAA9Q,GAAA,SAAA8Q,IAAA,OAAA3Q,YAAA,KAAA2Q,GAAAC,EAAA,KAAAD,EAAArD,WAAA,OAAA3M,YAAAgQ,EAAA9Q,GAAAe,YAAA+P,EAAA,EAAA9P,IAAA,SAAAC,MAEtB,WACI,OACI0C,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,kBAAmB,0BAGvBD,IAAAC,cAAA,WAASD,IAAAC,cAAA,WAAS,uCAElBD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAAQ,0BACbD,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,iBAAiBlB,UAAU,6BAA6B8M,KAAK,UAAS,2BAC9GhN,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,gBAAgBlB,UAAU,6BAA6B8M,KAAK,UAAS,wBAC7GhN,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,gBAAgBlB,UAAU,6BAA6B8M,KAAK,UAAS,oCAC7GhN,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,oBAAoBlB,UAAU,6BAA6B8M,KAAK,UAAS,4BACjHhN,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,qBAAqBlB,UAAU,6BAA6B8M,KAAK,UAAS,4BAElHhN,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,UAAUlB,UAAU,6BAA6B8M,KAAK,UAAS,wBACvGhN,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,gBAAgBlB,UAAU,6BAA6B8M,KAAK,UAAS,0BAC7GhN,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,gBAAgBlB,UAAU,6BAA6B8M,KAAK,UAAS,kCAGjHhN,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAAQ,qBACbD,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAU,IAACtN,IAAAC,cAAA,KAAGmB,KAAK,qBAAqBlB,UAAU,6BAA6B8M,KAAK,UAAS,4BACnHhN,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,sBAAsBlB,UAAU,6BAA6B8M,KAAK,UAAS,0BACnHhN,IAAAC,cAACW,IAAG,CAACyM,MAAO,CAAEC,OAAQ,SAAUtN,IAAAC,cAAA,KAAGmB,KAAK,yBAAyBlB,UAAU,6BAA6B8M,KAAK,UAAS,qCAK9HhN,IAAAC,cAAA,gBApCU,CAASD,IAAMqB,W,oFCJ5BkM,GAAY,CAAC,eAAgB,UAAW,eAAgB,oBAAqB,oBAAqB,0BAA2B,sB,6DCC1IrL,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAUA,IAAMqL,GAAgB,SAAHlM,GAAA,IAAMmM,EAAKnM,EAALmM,MAAK,OAC1BA,EAAQzN,IAAAC,cAAA,OAAKC,UAAU,kBAAkBuN,GAAe,MAGtDC,GAAc,SAAH1D,GAMV,IAAD2D,EAAA3D,EALF4D,MAASjH,EAAIgH,EAAJhH,KAAMrJ,EAAKqQ,EAALrQ,MAAOwN,EAAQ6C,EAAR7C,SAAU+C,EAAMF,EAANE,OAChCrF,EAAEwB,EAAFxB,GACAsF,EAAK9D,EAAL8D,MAEGxR,GADM0N,EAAT9J,UACQ2B,YAAAmI,EAAAlI,KAER,OACI9B,IAAAC,cAAA,WACID,IAAAC,cAAA,QAAA1B,OAAAyD,OAAA,CACI2E,KAAMA,EACN6B,GAAIA,EACJ5E,KAAK,QACLtG,MAAOkL,EACPuF,QAASvF,IAAOlL,EAChBwN,SAAUA,EACV+C,OAAQA,EACR3N,UAAW8N,IAAW,iBAClB1R,IAER0D,IAAAC,cAAA,SAAOgO,QAASzF,GAAKsF,KAO3BI,GAAmB,SAAHC,GAQf,IAPH7Q,EAAK6Q,EAAL7Q,MACAmQ,EAAKU,EAALV,MACAW,EAAOD,EAAPC,QAEAN,GADEK,EAAF3F,GACK2F,EAALL,OACA5N,EAASiO,EAATjO,UACAmO,EAAQF,EAARE,SAEMC,EAAUN,IACZ,cACA,CACI,aAAc1Q,IAAWmQ,GAASW,EAClC,aAAcX,GAElBvN,GAEJ,OACIF,IAAAC,cAAA,OAAKC,UAAWoO,GACZtO,IAAAC,cAAA,gBACID,IAAAC,cAAA,cAAS6N,GACRO,EACAD,GAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOA,OAO7Bc,GAAa,SAAAlS,GAC9B,SAAAkS,EAAYjS,GAAQ,IAADC,EAvEvB6F,EAAAK,EAAAN,EAkFU,OAXa3F,YAAA,KAAA+R,GAvEvBnM,EAwEQ,KAxERK,EAwEQ8L,EAxERpM,EAwEQ,CAAM7F,GAxEdmG,EAAAsF,YAAAtF,IAwEQlG,EAxERyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KA2GI0G,aAAY,eAAA2F,EAAA1F,YAAA5G,KAAA0E,MAAG,SAAAmC,EAAMV,GAAK,IAAA3K,EAAA+Q,EAAA1O,EAAA2O,EAAAC,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OASnB,OARHrJ,EAAKkB,SAAS,CAAEoR,WAAW,EAAOC,cAAe,KAC3CpR,EAAInB,EACNkS,EAAmB,GACnB1O,EAAgBxD,EAAKE,MAAMsD,cAC3B2O,EAAenS,EAAKE,MAAMiS,aAAa9P,KAAI,SAAAF,GAAC,OAAIA,EAAEO,iBAClCV,OAAOC,KAAKuB,GAAetB,QAAO,SAAAC,GAAC,OAAIgQ,EAAaK,SAASrQ,MACnEQ,SAAQ,SAAA3B,GAClBkR,EAAiBlR,GAAQwC,EAAcxC,MACxC0L,EAAArD,KAAA,EACiBuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO1F,EAAA5D,KACPuJ,EAAU,CACVK,KAAMR,EACN7Q,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzC5S,EAAKkB,SAAS,CAAE+L,SAAS,IACzB4F,IAAIC,KAAK,aAAc,uBAAwBT,GAC1C9Q,MAAK,SAAUI,GACZR,EAAKD,SAAS,CAAE+L,SAAS,EAAOqF,WAAW,EAAMS,UAAW,UAAWR,cAAe,6BACvFnH,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACkB,MAA1BA,EAAMzP,SAASuR,OACf7R,EAAKD,SAAS,CAAE+L,SAAS,EAAOqF,WAAW,EAAMS,UAAW,UAAWR,cAAe,+CAGtFpR,EAAKD,SAAS,CAAE+L,SAAS,EAAOqF,WAAW,EAAMS,UAAW,UAAWR,cAAe,8GAAgHzQ,KAAKmR,UAAU/B,EAAMzP,eAE/N,yBAAAiL,EAAA3B,UAAAyB,OACX,gBAAAc,GAAA,OAAA2E,EAAApG,MAAA,KAAA0B,YAhCW,GAgCXvN,EAEDkT,YAAc,SAAClS,EAAMgC,GACjB,IAAIQ,EAAgBxD,EAAKE,MAAMsD,cAE/B,IAAKR,EAASwP,SAAS,OAAQ,CAC3B,IAAIW,EAAY/S,IAAOY,GAAMiC,MACzBkQ,GAAa,GAAKA,GAAa,IAC/BnS,EAAOZ,IAAOY,GAAMoS,WAAW,GAAG1Q,eAIrCc,EAAcxC,KACfwC,EAAcxC,GAAQ,IAErBwC,EAAcxC,GAAM4B,YACrBY,EAAcxC,GAAM4B,UAAY,IAEpCY,EAAcxC,GAAM4B,UAAUU,KAAKN,GACnCQ,EAAcxC,GAAM4B,UAAYyQ,YAAI,IAAIC,IAAI9P,EAAcxC,GAAM4B,YAAYN,OAC5EtC,EAAKkB,SAAS,CAAEsC,mBACnBxD,EAEDuT,iBAAmB,SAACvS,EAAMgC,GACtB,IAAIQ,EAAgBxD,EAAKE,MAAMsD,cAC/B5B,QAAQC,IAAIb,GACZwC,EAAcxC,GAAM4B,UAAYY,EAAcxC,GAAM4B,UAAUV,QAAO,SAAAC,GAAC,OAAIA,IAAMa,KAC5EQ,EAAcxC,GAAM4B,WAAqD,GAAxCY,EAAcxC,GAAM4B,UAAUO,eACxDK,EAAcxC,GAEzBhB,EAAKkB,SAAS,CAAEsC,mBAhGhBxD,EAAKwT,eAAiBxT,EAAKwT,eAAe7S,KAAIX,GAC9CA,EAAKE,MAAQ,CACTiS,aAAc,GACdlF,SAAS,EACTqF,WAAW,EACXS,UAAW,UACXR,cAAe,GACf/O,cAAe,GACfZ,UAAWoO,IACbhR,EACL,OAAAY,YAAAoR,EAAAlS,GAAAe,YAAAmR,EAAA,EAAAlR,IAAA,oBAAAC,MAED,WACI,IAAMI,EAAOF,KACbG,MAAM,0DAA2D,CAC7DC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GAEd,GAAa,QADbA,EAAOG,KAAKC,MAAMJ,IACC,CACf,IAAIwQ,EAAenQ,OAAOC,KAAKN,GAAMU,KAAI,SAAAF,GAAC,OAAI,IAAIsR,KAAKtR,MACvDhB,EAAKD,SAAS,CAAEiR,aAAcA,EAAc3O,cAAe7B,UAI1E,CAAAb,IAAA,iBAAAC,MAoED,SAAekC,EAAGyQ,GAAiB,IAAbC,EAAQD,EAARC,SAClB1S,KAAKC,SAAS,CAAE0S,cAAe,GAAIC,UAAW,KAE9C,IAAQ1B,EAAiBlR,KAAKf,MAAtBiS,aACR,GAAIwB,EAAU,CACV,IAAMG,EAAgB3B,EAAa4B,WAAU,SAAAC,GAAW,OACpDC,aAAUC,UAAUF,EAAa/Q,MAErCkP,EAAagC,OAAOL,EAAe,OAChC,CACH,IAAIX,EAAY/S,IAAO6C,GAAKA,MACV,IAAdkQ,IACAlQ,EAAM7C,IAAO6C,GAAKsN,SAAS,EAAG,OAAO6D,QAAQ,OAAOC,UAEpDlB,GAAa,GAAKA,GAAa,IAC/BlQ,EAAM7C,IAAO6C,GAAKoR,WAMC,IAHDlC,EAAa4B,WAAU,SAAAC,GAAW,OACpDC,aAAUC,UAAUF,EAAa/Q,QAGjCA,EAAM7C,IAAO6C,GAAKmR,QAAQ,OAAOC,SACjClC,EAAa7O,KAAKL,IAG1BhC,KAAKC,SAAS,CAAEiR,mBACnB,CAAArR,IAAA,SAAAC,MACD,WAAU,IAADuT,EAAA,KACLC,EAAgDtT,KAAKf,MAA7CoS,EAASiC,EAATjC,UAAWC,EAAagC,EAAbhC,cAAeQ,EAASwB,EAATxB,UAElC,OACItP,IAAAC,cAAA,OAAKC,UAAU,UACV2O,EACG7O,IAAAC,cAAA,WACmB,YAAdqP,EACGtP,IAAAC,cAACQ,IAAK,CAACC,QAAS,UAAWqQ,QAAS,WAAF,OAAQF,EAAKpT,SAAS,CAAEoR,WAAW,KAAUmC,aAAW,EAAC3D,MAAO,CAC9F4D,SAAU,QACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,MAAO,QAEPrR,IAAAC,cAACQ,IAAME,QAAO,KAAE2O,GACfR,GACM,KACA,YAAdQ,EACGtP,IAAAC,cAACQ,IAAK,CAACC,QAAS,UAAWqQ,QAAS,WAAF,OAAQF,EAAKpT,SAAS,CAAEoR,WAAW,KAAUmC,aAAW,EAAC3D,MAAO,CAC9F4D,SAAU,QACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,MAAO,QAEPrR,IAAAC,cAACQ,IAAME,QAAO,KAAE2O,GACfR,GACM,MAEV,KACb9O,IAAAC,cAAA,UAAI,uBACJD,IAAAC,cAACqR,KAAS,CACN5C,aAAclR,KAAKf,MAAMiS,aACzB6C,WAAY/T,KAAKuS,eACjByB,WAAYA,aACZC,UAAWA,YACXC,eAAgB,IAEpB1R,IAAAC,cAAA,WAAK,+BAGDD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,sBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMiS,aACRlR,KAAKf,MAAMiS,aACN7P,MAAK,SAAUC,EAAGC,GAAK,OAAOD,EAAIC,KAClCH,KAAI,SAACrB,EAAMyU,GACR,IAAIC,EAAa1U,EAAK0B,cAClBiT,EAAWvV,IAAOY,GAAMkC,OAAO,qBAC/BiQ,EAAY/S,IAAOY,GAAMiC,MACzB2S,EAAoB,GAKxB,OAJItB,EAAKpU,MAAMsD,cAAckS,IAAepB,EAAKpU,MAAMsD,cAAckS,GAAY9S,YAC7EgT,EAAoBtB,EAAKpU,MAAMsD,cAAckS,GAAY9S,WAIzDa,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UACKiS,GAELlS,IAAAC,cAAA,UACmB,IAAdyP,EACG1P,IAAAC,cAACmS,KAAK,CAACC,MAAI,EAAC3R,QAAQ,UAAUrD,IAAK2U,GAC9B,WAELhS,IAAAC,cAACmS,KAAK,CAACC,MAAI,EAAC3R,QAAQ,UAAUrD,IAAK2U,GAC9B,YAGbhS,IAAAC,cAAA,UACKkS,EAAkBvT,KAAI,SAACW,EAAUyS,GAC9B,OACIhS,IAAAC,cAACmS,KAAK,CAACC,MAAI,EAAC3R,QAAQ,UAAUrD,IAAK2U,EAAQzS,GACtCA,OAMjBS,IAAAC,cAAA,UACK4Q,EAAKpU,MAAM0C,UAAUP,KAAI,SAACW,GACvB,OAAiB,GAAbmQ,GAA+B,GAAbA,GAOdnQ,EAASwP,SAAS,OANlBoD,EAAkBpD,SAASxP,GACpBS,IAAAC,cAAC8B,IAAM,CAACgQ,KAAK,KAAKrR,QAAQ,SAASkB,UAAWuQ,EAAkBpD,SAASxP,GAAW+S,QAAS,WAAF,OAAQzB,EAAKf,iBAAiBmC,EAAY1S,KAAW,IAAEA,GAElJS,IAAAC,cAAC8B,IAAM,CAACgQ,KAAK,KAAKrR,QAAQ,OAAOkB,SAAUuQ,EAAkBpD,SAASxP,GAAW+S,QAAS,WAAF,OAAQzB,EAAKpB,YAAYwC,EAAY1S,KAAW,KAAGA,QAGtJ,UAc1B,QAKlBS,IAAAC,cAAA,WACID,IAAAC,cAACsS,IAAM,CACHC,IAAKhV,KAAKiV,UACVC,cAAe,GAGflI,SAAUhN,KAAKmV,iBAGd,SAAArW,GACG,IACIkI,EAMAlI,EANAkI,OACA4J,EAKA9R,EALA8R,QACAwE,EAIAtW,EAJAsW,OACA/J,EAGAvM,EAHAuM,aACAgK,EAEAvW,EAFAuW,cACAC,EACAxW,EADAwW,gBAEJ,OACI9S,IAAAC,cAAA,QAAMuK,SAAU3B,GACZ7I,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUkB,SAAUiP,EAAKpU,MAAM+M,QAAS8I,QAASzB,EAAKhI,cAAc,cACpF7I,IAAAC,cAAA,WACAD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,SAAG,0FAEHD,IAAAC,cAAA,SAAG,4EACHD,IAAAC,cAAA,SAAG,wCAEHD,IAAAC,cAACiO,GAAgB,CACb1F,GAAG,qBACHsF,MAAM,+CACNxQ,MAAOkH,EAAOuO,mBACdtF,MAAOmF,EAAOG,mBACd3E,QAASA,EAAQ2E,mBACjBjI,SAAU+H,EACVhF,OAAQiF,GAEPjC,EAAKpU,MAAMiS,aAAajQ,QAAO,SAAAC,GAAC,OAAI/B,IAAO+B,GAAGmO,IAAI,EAAG,SAASC,SAAS,GAAI,QAAQnO,QAAQhC,UACvFkC,MAAK,SAAUC,EAAGC,GAAK,OAAOD,EAAIC,KAClCH,KAAI,SAACoU,GACF,IAAIf,EAAae,EAAa/T,cAC1BE,EAAY,GAIhB,OAHI0R,EAAKpU,MAAMsD,cAAckS,IAAepB,EAAKpU,MAAMsD,cAAckS,GAAY9S,YAC7EA,EAAY0R,EAAKpU,MAAMsD,cAAckS,GAAY9S,WAEvB,IAA1B6T,EAAaC,SAET9T,EAAUP,KAAI,SAACW,EAAUlC,GACrB,OACI2C,IAAAC,cAACiT,IAAK,CACF7V,IAAK2V,EAAezT,EAAWlC,EAC/B8V,UAAWzF,GACX/G,KAAK,qBACL6B,GAAIwK,EAAa/T,cACjB6O,MAAO,eAAiBnR,IAAOqW,GAAcvT,OAAO,OAAS,iBAAmBF,OAS5FJ,EAAUP,KAAI,SAACW,EAAUlC,GACrB,OAAIkC,EAASwP,SAAS,OAEd/O,IAAAC,cAACiT,IAAK,CACF7V,IAAK2V,EAAezT,EAAWlC,EAC/B8V,UAAWzF,GACX/G,KAAK,qBACL6B,GAAIwK,EAAa/T,cACjB6O,MAAO,cAAgBnR,IAAOqW,GAAcvT,OAAO,aAAe,OAASF,IAK/ES,IAAAC,cAACiT,IAAK,CACF7V,IAAK2V,EAAezT,EAAWlC,EAC/B8V,UAAWzF,GACX/G,KAAK,qBACL6B,GAAIwK,EAAa/T,cACjB6O,MAAO,WAAanR,IAAOqW,GAAcrD,WAAW,GAAGlQ,OAAO,OAAS,MAAQ9C,IAAOqW,GAAcrD,WAAW,GAAGlQ,OAAO,OAAS,iBAAmBF,EAAW,uCAxUtM,CAASS,IAAMqB,W,6KCtEjDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAkBkBiR,aAAgBzW,KACd0W,KAAgBC,MADpC,IAGqBC,GAAiB,SAAAlX,GAClC,SAAAkX,EAAYjX,GAAQ,IAADC,EAtBvB6F,EAAAK,EAAAN,EAwD6E,OAlCtD3F,YAAA,KAAA+W,GAtBvBnR,EAuBQ,KAvBRK,EAuBQ8Q,EAvBRpR,EAuBQ,CAAM7F,GAvBdmG,EAAAsF,YAAAtF,IAuBQlG,EAvBRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAoKIqR,4BAA2B,eAAAlS,EAAAwH,YAAA5G,KAAA0E,MAAG,SAAAmC,EAAOxJ,GAAQ,OAAA2C,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OACzCrJ,EAAKkB,SAAS,CAAEgW,YAAY,EAAMC,iBAAkBnU,GAAYhD,EAAKoX,eAAe,wBAAA1K,EAAA3B,UAAAyB,OACvF,gBAAAc,GAAA,OAAAvI,EAAA8G,MAAA,KAAA0B,YAF0B,GAE1BvN,EA0BDqX,kBAAiB9K,YAAA5G,KAAA0E,MAAG,SAAAqD,IAAA,IAAA4J,EAAAnW,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,OAgCN,OA/B6B,GAAnCrJ,EAAKE,MAAMqX,gBAAgB/B,MAAmE,GAAtDxT,OAAOC,KAAKjC,EAAKE,MAAMsX,6BAC/D5V,QAAQC,IAAI,kBAEZyV,EAAgB,GACpBtX,EAAKE,MAAMuX,MAAMpV,KAAI,SAACqV,EAAMjC,GACxB,OACIiC,EAAKC,oBAAoBtV,KAAI,SAACuV,EAAYnC,GACtC,IAAIxJ,EAAKjM,EAAKE,MAAMiX,iBAAmB,IAAMO,EAAKG,SAAW,IAAMD,EAAWrG,MAC9E,GAAIvR,EAAKE,MAAMqX,gBAAgBO,IAAI7L,GAAK,CACpC,IAAI8L,EAAe,CACf,WAAcL,EAAK1W,KACnB,aAAgB0W,EAAKM,aACrB,cAAiBJ,EAAWrG,MAC5B,cAAiBvR,EAAKE,MAAMsX,2BAA2BjG,MACvD,cAAiBqG,EAAWK,WAC5B,cAAiBjY,EAAKE,MAAMsX,2BAA2BS,YAI3D,GAAIP,EAAKQ,eAAejS,eAAe2R,EAAWrG,OAAQ,CACtD,IAAI9B,EAAUiI,EAAKQ,eAAeN,EAAWrG,OAC7CvP,OAAOyD,OAAOsS,EAAc,CAAE,iBAAoBtI,EAAQ0I,YAC1DnW,OAAOyD,OAAOsS,EAAc,CAAE,YAAetI,EAAQzO,OAGzDsW,EAAchU,KAAKyU,UAKnC/X,EAAKkB,SAAS,CAAE+L,SAAS,EAAMmL,oBAAqB,KAC9CjX,EAAInB,EAAA4N,EAAAvE,KAAA,EACUuD,IAAK6F,iBAAiB,KAAD,EAQxC,OARGL,EAAOxE,EAAA9E,KACPuJ,EAAU,CACVK,KAAM4E,EACNjW,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExChF,EAAA/C,KAAA,EAAA+C,EAAAvE,KAAA,GAEuBwJ,IAAIC,KAAK,aAAc,wBAAyBT,GAAS,KAAD,GAAjEzE,EAAA9E,KACX3H,EAAKD,SAAS,CAAE+L,SAAS,EAAO2G,cAAe,wBAAyB2D,gBAAiB,IAAIjE,IAAOkE,2BAA4B,KAChIrW,EAAK8V,4BAA4B9V,EAAKjB,MAAMiX,kBAAkBvJ,EAAAvE,KAAA,iBAc7D,OAd6DuE,EAAA/C,KAAA,GAAA+C,EAAAT,GAAAS,EAAA,SAG9DhM,QAAQC,IAAG+L,EAAAT,IACPS,EAAAT,GAAM1L,SACwB,MAA1BmM,EAAAT,GAAM1L,SAASuR,OACf7R,EAAKD,SAAS,CAAE+L,SAAS,EAAOmL,oBAAqB,+CAGrDjX,EAAKD,SAAS,CAAE+L,SAAS,EAAOmL,oBAAqB,gHAAkHtW,KAAKmR,UAAUrF,EAAAT,GAAM1L,SAASE,KAAKuP,SAI9M/P,EAAKD,SAAS,CAAE+L,SAAS,EAAOmL,oBAAqB,mBACxDxK,EAAA3E,OAAA,SAEO,IAAI,KAAF,oBAAA2E,EAAA7C,UAAA2C,EAAA,mBAGjB1N,EACDoX,cAAa7K,YAAA5G,KAAA0E,MAAG,SAAAgO,IAAA,IAAAC,EAAAb,EAAAc,EAAAC,EAAAxE,EAAA,OAAArO,KAAAoB,MAAA,SAAA0R,GAAA,cAAAA,EAAA5N,KAAA4N,EAAApP,MAAA,WACRrJ,EAAKE,MAAM8T,YAAY,CAADyE,EAAApP,KAAA,gBAAAoP,EAAApP,KAAA,EACFrJ,EAAK0Y,oBAAoB1Y,EAAKE,MAAM8T,aAAa,KAAD,EAAhEsE,EAAOG,EAAA3P,KAGX2O,GADIA,EAAQa,EAAQpW,QAAO,SAAAC,GAAC,OAAIA,EAAEwV,qBAAuBxV,EAAEwV,oBAAoBxU,OAAS,MAC1Eb,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAEoW,UAAYnW,EAAEmW,UAAa,GAAK,KAChE/W,QAAQC,IAAI4V,GAIRc,EAAU,EACVC,EAAS,GACTxE,EAAc5T,IAAOJ,EAAKE,MAAM8T,aAAa9Q,OAAO,eACxDuU,EAAM9U,SAAQ,SAAA+U,GAEVA,EAAKC,oBAAoBhV,SAAQ,SAAAiV,GAC7B,IAAIjW,EAAO,GAEP+V,EAAKQ,eAAejS,eAAe2R,EAAWrG,QAC9C5P,EACA,CACIsK,GAAIsM,EACJK,MAAO,gBACPnJ,QAASiI,EAAKQ,eAAeN,EAAWrG,OAAOnH,KAC/CyO,MAAO,IAAIpF,KAAKO,EAAc0D,EAAKiB,WACnCG,IAAK,IAAIrF,KAAKO,EAAc0D,EAAKqB,SACjCd,WAAYe,SAASpB,EAAW7W,OAChCkY,MAAO,SAEXT,EAAOlV,KAAK3B,GACZ4W,MAGA5W,EACA,CACIsK,GAAIsM,EACJK,MAAO,cACPnJ,QAAS,YACToJ,MAAO,IAAIpF,KAAKO,EAAc0D,EAAKiB,WACnCG,IAAK,IAAIrF,KAAKO,EAAc0D,EAAKqB,SACjCd,WAAYe,SAASpB,EAAW7W,OAChCkY,MAAO,WAEXT,EAAOlV,KAAK3B,GACZ4W,WAIZvY,EAAKkB,SAAS,CACVgW,YAAY,EACZO,MAAOA,EACPe,OAAQA,IACT,yBAAAC,EAAA1N,UAAAsN,OAEVrY,EAED0Y,oBAAmB,eAAAzG,EAAA1F,YAAA5G,KAAA0E,MAAG,SAAA6O,EAAOjW,GAAG,IAAAjC,EAAAmY,EAAAhY,EAAAiR,EAAAC,EAAA1Q,EAAAyX,EAAA,OAAAzT,KAAAoB,MAAA,SAAAsS,GAAA,cAAAA,EAAAxO,KAAAwO,EAAAhQ,MAAA,OAMlB,OALNrI,EAAOiC,EAAIP,cAAc4W,MAAM,KAAK,GAEpCH,EAAY,CACZ,MAASnY,GAEPG,EAAInB,EAAAqZ,EAAAhQ,KAAA,EACUuD,IAAK6F,iBAAiB,KAAD,EAQxC,OARGL,EAAOiH,EAAAvQ,KACPuJ,EAAU,CACVK,KAAMyG,EACN9X,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExCyG,EAAAxO,KAAA,EAAAwO,EAAAhQ,KAAA,GAEoBwJ,IAAIC,KAAK,aAAc,iBAAkBT,GAAS,KAAD,GAEQ,OAFtE1Q,EAAI0X,EAAAvQ,KACJsQ,EAAuBzX,EAAKO,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAa7B,EAAKjB,MAAMiX,oBACtEhW,EAAKD,SAAS,CAAE+L,SAAS,EAAO2G,cAAe,0BAA2ByF,EAAApQ,OAAA,SACnEmQ,GAAoB,QAc1B,OAd0BC,EAAAxO,KAAA,GAAAwO,EAAAlM,GAAAkM,EAAA,SAG3BzX,QAAQC,IAAGwX,EAAAlM,IACPkM,EAAAlM,GAAM1L,SACwB,MAA1B4X,EAAAlM,GAAM1L,SAASuR,OACf7R,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,+CAG3C1S,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,8GAAgH/R,KAAKmR,UAAUoG,EAAAlM,GAAM1L,YAIpLN,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,mBAC9CwF,EAAApQ,OAAA,SAEO,IAAI,KAAF,oBAAAoQ,EAAAtO,UAAAmO,EAAA,mBAGjB,gBAAAlL,GAAA,OAAAiE,EAAApG,MAAA,KAAA0B,YAvCkB,GAuClBvN,EAEDuZ,cAAa,eAAA7F,EAAAnH,YAAA5G,KAAA0E,MAAG,SAAAmP,EAAM1N,GAAK,IAAA2N,EAAAC,EAAAjC,EAAAkC,EAAAC,EAAAC,EAAAzT,EAAAyR,EAAAlW,EAAA+S,EAAAoF,EAAArE,EAAAmC,EAAAmC,EAAAC,EAAA,OAAArU,KAAAoB,MAAA,SAAAkT,GAAA,cAAAA,EAAApP,KAAAoP,EAAA5Q,MAAA,OAUvB,IATIoQ,EAAezZ,EAAKE,MAAM8T,YAAYtR,cAAc4W,MAAM,KAAK,GAC/DI,EAAgB1Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAC5CJ,EAAQ,GAERkC,EAAiB3Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAE7C+B,EAAaZ,SAAShZ,EAAKE,MAAMyY,WACjCkB,EAAWb,SAAShZ,EAAKE,MAAM6Y,SAE1B3S,EAAIwT,EAAYxT,GAAKyT,EAAUzT,GAAQ,KAAM,CAGlD,GAFIyR,EAAWqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACpCvB,EAAO,GACP+X,EAAclH,SAASqF,GAAW,CAIlC,GAHInD,EAAWiF,EAAevJ,QAAQyH,GACtClW,EAAO3B,EAAKE,MAAMuX,MAAM/C,GAEpB1U,EAAKE,MAAMia,wBAAwBhX,OAAS,EAE5C,IADI2W,EAAgBnY,EAAKgW,oBAAoBtV,KAAI,SAAAF,GAAC,OAAIA,EAAEoP,SAC/CkE,EAAQ,EAAGA,EAAQzV,EAAKE,MAAMia,wBAAwBhX,OAAQsS,IAC7DmC,EAAa5X,EAAKE,MAAMia,wBAAwB1E,GACjDqE,EAActH,SAASoF,EAAWrG,QACnC5P,EAAKgW,oBAAoBrU,KAAKsU,GAK1CjW,EAAKgW,oBAAsBhW,EAAKgW,oBAAoBrV,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAEgP,MAAQ/O,EAAE+O,MAAS,GAAK,UAI9F5P,EAAO,CACHX,KAAMyY,EACNzB,aAAchY,EAAKE,MAAMiX,iBAAmB,IAAM+C,uBAAY9T,EAAG,CAAElD,OAAQ,KAC3EF,SAAUhD,EAAKE,MAAMiX,iBACrBU,SAAUqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACnCyU,oBAAqB3X,EAAKE,MAAMia,wBAA0Bna,EAAKE,MAAMia,wBAA0B,GAC/FxB,UAAWuB,uBAAY9T,EAAG,CAAElD,OAAQ,KACpC6V,QAASmB,uBAAY9T,EAAI,KAAM,CAAElD,OAAQ,KACzCgV,eAAgB,IAGxBT,EAAMnU,KAAK3B,GAEfC,QAAQC,IAAI4V,GAGRsC,EAAwBL,EAAcxX,QAAO,SAAA0D,GAAC,OAAK6R,EAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAAUrF,SAAS5M,MACvFoU,EAAmBha,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAI4X,EAAsBvH,SAASrQ,EAAE0V,aACrFJ,EAAM/R,OAAOsU,GAEbha,EAAKkB,SAAS,CAAEuW,MAAOzX,EAAKoa,UAAU3C,EAAM/R,OAAOsU,GAAmB,cAAe,yBAAAC,EAAAlP,UAAAyO,OACxF,gBAAAa,GAAA,OAAA3G,EAAA7H,MAAA,KAAA0B,YApDY,GAoDZvN,EAEDsa,qBAAoB,eAAAC,EAAAhO,YAAA5G,KAAA0E,MAAG,SAAAmQ,EAAM1O,GAAK,IAAA2N,EAAAC,EAAAjC,EAAAkC,EAAAc,EAAAhF,EAAAiF,EAAAC,EAAAC,EAAAxU,EAAAyR,EAAAlW,EAAA+S,EAAAoF,EAAAe,EAAAjD,EAAAmC,EAAAC,EAAA,OAAArU,KAAAoB,MAAA,SAAA+T,GAAA,cAAAA,EAAAjQ,KAAAiQ,EAAAzR,MAAA,OAS9B,IAPIoQ,EAAezZ,EAAKE,MAAM8T,YAAYtR,cAAc4W,MAAM,KAAK,GAC/DI,EAAgB1Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAC5CJ,EAAQ,GACRkC,EAAiB3Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAG7C4C,EAAe,CAAC,CAAC,MAAO,OAAQ,CAAC,MAAO,QACnChF,EAAQ,EAAGA,EAAQgF,EAAatX,OAAQsS,IAI7C,IAFMkF,GADAD,EAASD,EAAahF,IACF,GACpBmF,EAAWF,EAAO,GACftU,EAAI4S,SAAS2B,GAAavU,GAAK4S,SAAS4B,GAAWxU,GAAQ,KAAM,CAGtE,GAFIyR,EAAWqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACpCvB,EAAO,GACP+X,EAAclH,SAASqF,GAAW,CAIlC,GAHInD,EAAWiF,EAAevJ,QAAQyH,GACtClW,EAAO3B,EAAKE,MAAMuX,MAAM/C,GAEpB1U,EAAKE,MAAMia,wBAAwBhX,OAAS,EAE5C,IADI2W,EAAgBnY,EAAKgW,oBAAoBtV,KAAI,SAAAF,GAAC,OAAIA,EAAEoP,SAC/CkE,EAAQ,EAAGA,EAAQzV,EAAKE,MAAMia,wBAAwBhX,OAAQsS,IAC7DmC,EAAa5X,EAAKE,MAAMia,wBAAwB1E,GACjDqE,EAActH,SAASoF,EAAWrG,QACnC5P,EAAKgW,oBAAoBrU,KAAKsU,GAK1CjW,EAAKgW,oBAAsBhW,EAAKgW,oBAAoBrV,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAEgP,MAAQ/O,EAAE+O,MAAS,GAAK,UAI9F5P,EAAO,CACHX,KAAMyY,EACNzB,aAAchY,EAAKE,MAAMiX,iBAAmB,IAAM+C,uBAAY9T,EAAG,CAAElD,OAAQ,KAC3EF,SAAUhD,EAAKE,MAAMiX,iBACrBU,SAAUqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACnCyU,oBAAqB3X,EAAKE,MAAMia,wBAA0Bna,EAAKE,MAAMia,wBAA0B,GAC/FxB,UAAWuB,uBAAY9T,EAAG,CAAElD,OAAQ,KACpC6V,QAASmB,uBAAY9T,EAAI,KAAM,CAAElD,OAAQ,KACzCgV,eAAgB,IAGxBT,EAAMnU,KAAK3B,GAGnBC,QAAQC,IAAI4V,GAGRsC,EAAwBL,EAAcxX,QAAO,SAAA0D,GAAC,OAAK6R,EAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAAUrF,SAAS5M,MACvFoU,EAAmBha,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAI4X,EAAsBvH,SAASrQ,EAAE0V,aACrFJ,EAAM/R,OAAOsU,GAGbha,EAAKkB,SAAS,CAAEuW,MAAOzX,EAAKoa,UAAU3C,EAAM/R,OAAOsU,GAAmB,cAAe,yBAAAc,EAAA/P,UAAAyP,OACxF,gBAAAO,GAAA,OAAAR,EAAA1O,MAAA,KAAA0B,YAzDmB,GAyDnBvN,EAqFDgb,WAAa,SAACC,EAAgBxF,GAC1B,IAAIyF,EAAalb,EAAKE,MAAMuX,MACxB0D,EAAeD,EAAWzF,GAC1B2F,EAAoBpZ,OAAOC,KAAKkZ,EAAajD,gBAC7CmD,EAAiB,GACE,OAAnBJ,IACAI,EAAiBJ,EAAe5Y,KAAI,SAAAF,GAAC,OAAIA,EAAEoP,UAGjB6J,EAAkBE,OAAM,SAAAC,GAAG,OAAIF,EAAe7I,SAAS+I,OAEjFJ,EAAaxD,oBAAsBsD,EACnCjb,EAAKkB,SAAS,CAAEuW,MAAOyD,KAGvBlb,EAAKkB,SAAS,CAAEuW,MAAOyD,EAAYnI,UAAW,UAAWyI,aAAc,kDAAmDlJ,WAAW,KAE5ItS,EAEDyb,8BAAgC,SAACR,GAC7BrZ,QAAQC,IAAIoZ,GACZjb,EAAKkB,SAAS,CAAEiZ,wBAAyBc,KAC5Cjb,EAGD0b,yBAA2B,SAACT,GACxBrZ,QAAQC,IAAIoZ,GACZjb,EAAKkB,SAAS,CAAEsW,2BAA4ByD,KAziB5Cjb,EAAKE,MAAQ,CACTyb,UAAW,IACXC,gBAAiB,GACjBzJ,aAAc,GACdlF,SAAS,EACTiK,YAAY,EACZlD,iBAAa6H,EACb1E,iBAAkB,GAClBwB,UAAW,QACXI,QAAS,QACTtB,MAAO,GACP0C,wBAAyB,GACzB2B,YAAa,GACbC,aAAc,MACdC,kBAAmB,aACnB1J,WAAW,EACXkJ,aAAc,GACdjE,gBAAiB,IAAIjE,IACrBkE,2BAA4B,GAC5BY,oBAAqB,GACrBrL,SAAU,mEACVnK,UAAW,CAAC,eAAgB,YAGhC5C,EAAKic,sBAAwBjc,EAAKic,sBAAsBtb,KAAIX,GAC5DA,EAAKkc,wBAA0Blc,EAAKkc,wBAAwBvb,KAAIX,GAChEA,EAAKmc,eAAiBnc,EAAKmc,eAAexb,KAAIX,GAC9CA,EAAKwT,eAAiBxT,EAAKwT,eAAe7S,KAAIX,GAC9CA,EAAKiX,4BAA8BjX,EAAKiX,4BAA4BtW,KAAIX,GACxEA,EAAKoX,cAAgBpX,EAAKoX,cAAczW,KAAIX,GAC5CA,EAAKoc,gBAAkBpc,EAAKoc,gBAAgBzb,KAAIX,GAChDA,EAAKqc,2BAA6Brc,EAAKqc,2BAA2B1b,KAAIX,GACtEA,EAAKsc,uBAAyBtc,EAAKsc,uBAAuB3b,KAAIX,GAAOA,EACxE,OAAAY,YAAAoW,EAAAlX,GAAAe,YAAAmW,EAAA,EAAAlW,IAAA,2BAAAC,MAED,WACI,IAAMI,EAAOF,KACbG,MAAM,gEAAiE,CACnEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACd,GAAsB,qBAAVA,EACRR,EAAKD,SAAS,CAAE4a,YAAa,SAE5B,CAED,IADA,IAAIS,EAAuB,GAClBnW,EAAI,EAAGA,EAAIzE,EAAKwB,OAAQiD,IAAK,CAClC,IAAIwR,EAAajW,EAAKyE,GAClBoW,EAAgBC,KAAOC,IAAIC,QAAQ/E,EAAWgF,cAAezb,EAAKjB,MAAM6M,UAAU8P,SAASJ,KAAOK,IAAIC,MAC1GR,EAAqBjZ,KACjB,CAAE2U,WAAYL,EAAWK,WAAY2E,cAAeJ,EAAezb,MAAOyb,EAAejL,MAAOiL,IAGxGrb,EAAKD,SAAS,CAAE4a,YAAaS,UAI5C,CAAAzb,IAAA,oBAAAC,MAED,WAEIE,KAAK+b,6BACR,CAAAlc,IAAA,kBAAAC,MAAA,eAAAkc,EAAA1Q,YAAA5G,KAAA0E,MAED,SAAA6S,EAAsBC,EAAaC,EAAkBxF,EAAYyF,EAAYC,GAAkB,IAAA3b,EAAAR,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAwW,GAAA,cAAAA,EAAA1S,KAAA0S,EAAAlU,MAAA,OAc1E,OAbb1H,EAAO,CACP,KAAQ,sCACR,QAAW,CACP,KAAQwb,EACR,UAAaC,EACb,WAAcxF,EACd,WAAcxX,IAAOid,GAAYna,OAAO,cACxC,aAAgBoa,IAKxBrc,KAAKC,SAAS,CAAE+L,SAAS,IACnB9L,EAAOF,KAAIsc,EAAAlU,KAAA,EAEGuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAOmL,EAAAzU,KACPuJ,EAAU,CACVK,KAAM,CAAC/Q,GAEPN,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzChR,QAAQC,IAAIwQ,GACZQ,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KACpClG,EAAK8V,4BAA4B9V,EAAKjB,MAAMiX,kBAG5CvV,QAAQC,IAAI,wBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,wBAAAkQ,EAAAxS,UAAAmS,EAAA,UA/CU,OAgDpB,SAhDoBO,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAZ,EAAApR,MAAC,KAAD0B,YAFpB,IAEoB,CAAAzM,IAAA,YAAAC,MAkDrB,SAAU+c,EAAOhd,GACb,OAAqB,IAAjBgd,EAAM3a,OACC,GAEJ2a,EAAMxb,MAAK,SAAUC,EAAGC,GAC3B,IAAIL,EAAI4b,qBAAUxb,EAAEzB,IAAW4G,EAAIqW,qBAAUvb,EAAE1B,IAC/C,OAASqB,EAAIuF,GAAM,EAAMvF,EAAIuF,EAAK,EAAI,OAE7C,CAAA5G,IAAA,iBAAAC,MAAA,eAAAid,EAAAzR,YAAA5G,KAAA0E,MACD,SAAA4T,EAAqBhb,EAAGib,GAAA,IAAAvK,EAAA,OAAAhO,KAAAoB,MAAA,SAAAoX,GAAA,cAAAA,EAAAtT,KAAAsT,EAAA9U,MAAA,OAAIsK,EAAQuK,EAARvK,SACxB1S,KAAKC,SAAS,CACV8S,YAAaL,OAAWkI,EAAY5Y,IAGnC0Q,GACD1S,KAAKgW,4BAA4BhW,KAAKf,MAAMiX,kBAC/C,wBAAAgH,EAAApT,UAAAkT,EAAA,UAPe,OASnB,SATmBG,EAAAC,GAAA,OAAAL,EAAAnS,MAAC,KAAD0B,YADnB,IACmB,CAAAzM,IAAA,yBAAAC,MAapB,WAA0B,IAADuT,EAAA,KACjBiD,EAAkBtW,KAAKf,MAAMqX,gBACjCA,EAAgB+G,QAChBrd,KAAKf,MAAMuX,MAAMpV,KAAI,SAACqV,EAAMjC,GACxB,OACIiC,EAAKC,oBAAoBtV,KAAI,SAACuV,EAAYnC,GACtC,OAAOnB,EAAKpU,MAAMiX,iBAAmB,IAAMO,EAAKG,SAAW,IAAMD,EAAWrG,YAGrFgN,SAAQ,SAAAC,GAAM,OAAIA,KAAQnc,KAAI,SAAAmc,GAAM,OAAIjH,EAAgBjH,IAAIkO,MAC/Dvd,KAAKC,SAAS,CAAEqW,sBACnB,CAAAzW,IAAA,6BAAAC,MAED,SAA2B0d,GACvB,IAAIlH,EAAkBtW,KAAKf,MAAMqX,gBAC7BmH,EAAWD,EAAIzS,OAAOC,GACtBsL,EAAgBO,IAAI4G,GACpBnH,EAAgBoH,OAAOD,GAEvBnH,EAAgBjH,IAAIoO,GAGxBzd,KAAKC,SAAS,CAAEqW,sBACnB,CAAAzW,IAAA,kBAAAC,MAqRD,SAAgB0U,GACZ,IAAIyF,EAAaja,KAAKf,MAAMuX,MACxB0D,EAAeD,EAAWzF,GAC1B2F,EAAoBpZ,OAAOC,KAAKkZ,EAAajD,gBAC7CkD,EAAkBjY,OAAS,GAC3BgY,EAAaxD,oBAAsBwD,EAAaxD,oBAAoBzV,QAAO,SAAAC,GAAC,OAAIiZ,EAAkB5I,SAASrQ,EAAEoP,UAC7G2J,EAAWzF,GAAS0F,EACpBla,KAAKC,SAAS,CAAEuW,MAAOyD,EAAYnI,UAAW,UAAWyI,aAAc,8FAA+FlJ,WAAW,MAGjL4I,EAAWzF,GAAOkC,oBAAsB,GACxC1W,KAAKC,SAAS,CAAEuW,MAAOyD,OAE9B,CAAApa,IAAA,mBAAAC,MAAA,eAAA6d,EAAArS,YAAA5G,KAAA0E,MAED,SAAAwU,EAAuBpJ,GAAK,IAAAtU,EAAA+Z,EAAAC,EAAAC,EAAA0D,EAAAC,EAAA3M,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAiY,GAAA,cAAAA,EAAAnU,KAAAmU,EAAA3V,MAAA,OAKO,GAJ3BlI,EAAOF,KACPia,EAAaja,KAAKf,MAAMuX,MACxB0D,EAAeD,EAAWzF,GAC1B2F,EAAoBpZ,OAAOC,KAAKkZ,EAAajD,gBACjDtW,QAAQC,IAAIuZ,KACRA,EAAkBjY,OAAS,GAAC,CAAA6b,EAAA3V,KAAA,SAG8J,OAF1L8R,EAAaxD,oBAAsBwD,EAAaxD,oBAAoBzV,QAAO,SAAAC,GAAC,OAAIiZ,EAAkB5I,SAASrQ,EAAEoP,UAC7G2J,EAAWzF,GAAS0F,EACpBla,KAAKC,SAAS,CAAEuW,MAAOyD,EAAYnI,UAAW,UAAWyI,aAAc,+FAAgGlJ,WAAW,IAAQ0M,EAAA/V,OAAA,kBAYtK,OARhB6V,EAAU,GACVC,EAAQ,CACR,KAAQ,SACR,OAAU,CACN,KAAQ5D,EAAana,KACrB,aAAgBC,KAAKf,MAAMiX,iBAAmB,IAAMgE,EAAatD,WAGzEiH,EAAQxb,KAAKyb,GAAOC,EAAA3V,KAAA,GACAuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAO4M,EAAAlW,KACPuJ,EAAU,CACVK,KAAMoM,EACNzd,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KACpClG,EAAKD,SAAS,CAAEuW,MAAOyD,IAIvBtZ,QAAQC,IAAI,wBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,QAGX6N,EAAW/G,OAAOsB,EAAO,GACzBxU,KAAKC,SAAS,CAAEuW,MAAOyD,IAAc,yBAAA8D,EAAAjU,UAAA8T,EAAA,UAxDnB,OAyDrB,SAzDqBI,GAAA,OAAAL,EAAA/S,MAAC,KAAD0B,YAFrB,IAEqB,CAAAzM,IAAA,wBAAAC,MA2DtB,SAAsBme,GAClBtd,QAAQC,IAAIqd,GACZje,KAAKC,SAAS,CAAEyX,UAAWuG,EAAMnG,QAASmG,EAAO,QACpD,CAAApe,IAAA,0BAAAC,MACD,SAAwBme,GACpBtd,QAAQC,IAAIqd,GACZje,KAAKC,SAAS,CAAE6X,QAASmG,MAC5B,CAAApe,IAAA,iBAAAC,MAAA,eAAAoe,EAAA5S,YAAA5G,KAAA0E,MAgCD,SAAA+U,IAAA,IAAAje,EAAAsY,EAAAhC,EAAAe,EAAAsG,EAAArJ,EAAAiC,EAAAqH,EAAA3M,EAAAC,EAAAkG,EAAA,OAAA5S,KAAAoB,MAAA,SAAAsY,GAAA,cAAAA,EAAAxU,KAAAwU,EAAAhW,MAAA,OAQI,IAPIlI,EAAOF,KACXA,KAAKC,SAAS,CAAE+L,SAAS,IACrBwM,EAAexY,KAAKf,MAAM8T,YAAYtR,cAAc4W,MAAM,KAAK,GAAK,IACpE7B,EAAQxW,KAAKf,MAAMuX,MACnBe,EAAS,GACTsG,EAAU,GAELrJ,EAAQ,EAAGA,EAAQgC,EAAMtU,OAAQsS,IAChCiC,EAAOD,EAAMhC,GACfsJ,EAAQ,GAERA,EADArH,EAAKC,qBAA2D,IAApCD,EAAKC,oBAAoBxU,OAC7C,CACJ,KAAQ,SACR,OAAUuU,GAIN,CACJ,KAAQ,SACR,OAAUA,GAGlBoH,EAAQxb,KAAKyb,GAChB,OAAAM,EAAAhW,KAAA,EACmBuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAOiN,EAAAvW,KACPuJ,EAAU,CACVK,KAAMoM,EACNzd,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KACpClG,EAAKD,SAAS,CAAE+L,SAAS,EAAOqF,WAAW,EAAMS,UAAW,UAAWyI,aAAc,yBAA2Bra,EAAKiW,gBAIrHjW,EAAKD,SAAS,CAAE+L,SAAS,EAAOqF,WAAW,EAAMS,UAAW,UAAWyI,aAAc,+CACrF5Z,QAAQC,IAAI,yBAEjBuJ,OAAM,SAAU8F,GACf/P,EAAKD,SAAS,CAAE+L,SAAS,IAEzBrL,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAIvCoK,EAAQxW,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAIA,EAAEwV,qBAAuBxV,EAAEwV,oBAAoBxU,OAAS,KAEzFoV,EAAU,EACdd,EAAM9U,SAAQ,SAAA+U,GACVA,EAAKC,oBAAoBhV,SAAQ,SAAAiV,GAC7B,IAAIjW,EAAO,GAEP+V,EAAKQ,eAAejS,eAAe2R,EAAWrG,QAC9C5P,EACA,CACIsK,GAAIsM,EACJK,MAAO,gBACPnJ,QAASiI,EAAKQ,eAAeN,EAAWrG,OAAOnH,KAC/CyO,MAAO,IAAIpF,KAAKgG,EAAe/B,EAAKiB,WACpCG,IAAK,IAAIrF,KAAKgG,EAAe/B,EAAKqB,SAClCd,WAAYe,SAASpB,EAAW7W,OAChCkY,MAAO,SAEXT,EAAOlV,KAAK3B,GACZ4W,MAGA5W,EACA,CACIsK,GAAIsM,EACJK,MAAO,cACPnJ,QAAS,YACToJ,MAAO,IAAIpF,KAAKgG,EAAe/B,EAAKiB,WACpCG,IAAK,IAAIrF,KAAKgG,EAAe/B,EAAKqB,SAClCd,WAAYe,SAASpB,EAAW7W,OAChCkY,MAAO,WAEXT,EAAOlV,KAAK3B,GACZ4W,WAIZtX,KAAKC,SAAS,CAAEsX,OAAQA,IAAU,yBAAA6G,EAAAtU,UAAAqU,EAAA,UAjGlB,OAmGnB,WAnGmB,OAAAD,EAAAtT,MAAC,KAAD0B,YAhCnB,IAgCmB,CAAAzM,IAAA,0BAAAC,MAsGpB,SAAwBb,EAAOuV,GAC3B7T,QAAQC,IAAI3B,EAAOuV,KACtB,CAAA3U,IAAA,cAAAC,MAED,SAAYue,GACR,OAAqB,KAAjBA,EAAMnc,OACC,IAAMmc,EAAMC,OAAO,EAAG,GAAK,KAAOD,EAAMC,OAAO,EAAG,GAAK,IAAMD,EAAMC,OAAO,GAE9ED,IACV,CAAAxe,IAAA,mBAAAC,MAED,SAAiBgb,EAAcyD,GAAY,IAADC,EAAA,KAClChI,EAAQxW,KAAKf,MAAMuX,MACnBgC,EAAexY,KAAKf,MAAM8T,YAAYtR,cAAc4W,MAAM,KAAK,GAAK,IACpEoG,EAAqB,GASzB,GAPqB,WAAjB3D,IACAtE,EAAQA,EAAMvV,QAAO,SAAAC,GAAC,OAAIH,OAAOC,KAAKE,EAAE+V,gBAAgB/U,OAAS,MAEhD,SAAjB4Y,IACAtE,EAAQA,EAAMvV,QAAO,SAAAC,GAAC,OAA6C,IAAzCH,OAAOC,KAAKE,EAAE+V,gBAAgB/U,WAGvC,IAAjBsU,EAAMtU,OACN,OAAQM,IAAAC,cAAA,WAAK,qBAGb,GAAkB,eAAd8b,EAiEA,OACI/b,IAAAC,cAAA,WACK+T,EAAMpV,KAAI,SAAAqV,GACP,OACIjU,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAASgU,EAAKG,WAEfH,EAAKC,oBAAoBtV,KAAI,SAAAuV,GACzB,IAAI+H,EAAiB/H,EAAWrG,MAChC,OAAImG,EAAKQ,eAAejS,eAAe0Z,GAE/Blc,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACCqb,GAELlc,IAAAC,cAACY,IAAG,KACCoT,EAAKQ,eAAeyH,GAAgBvV,MAEzC3G,IAAAC,cAACY,IAAG,KACCoT,EAAKQ,eAAeyH,GAAgBL,QAO7C7b,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACCqb,GAELlc,IAAAC,cAACY,IAAG,KAAC,eAGLb,IAAAC,cAACY,IAAG,KAAC,iBAOlB,IAACb,IAAAC,cAAA,gBAxG5B+T,EAAM9U,SAAQ,SAAA+U,GACVA,EAAKC,oBAAoBhV,SAAQ,SAAAiV,GACxB8H,EAAmBzZ,eAAe2R,EAAWrG,SAC9CmO,EAAmB9H,EAAWrG,OAAS,IAE3C,IAAI5P,EAAO,GAEPA,EADA+V,EAAKQ,eAAejS,eAAe2R,EAAWrG,OAE9C,CACI+N,MAAO5H,EAAKQ,eAAeN,EAAWrG,OAAO+N,MAC7ClV,KAAMsN,EAAKQ,eAAeN,EAAWrG,OAAOnH,KAC5CyO,MAAO,IAAIpF,KAAKgG,EAAe/B,EAAKiB,WACpCG,IAAK,IAAIrF,KAAKgG,EAAe/B,EAAKqB,SAClCd,WAAYe,SAASpB,EAAW7W,QAKpC,CACIue,MAAO,YACPlV,KAAM,cACNyO,MAAO,IAAIpF,KAAKgG,EAAe/B,EAAKiB,WACpCG,IAAK,IAAIrF,KAAKgG,EAAe/B,EAAKqB,SAClCd,WAAYe,SAASpB,EAAW7W,QAIxC2e,EAAmB9H,EAAWrG,OAAOjO,KAAK3B,SAGlD,IAAIie,EAAiB5d,OAAOC,KAAKyd,GAAoBpd,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAIC,EAAK,GAAK,KACnF,OAAIod,EAAezc,OAAS,EACjByc,EAAevd,KAAI,SAAAuV,GACtB,IAAIiI,EAAkBH,EAAmB9H,GACzC,OAAIiI,GAAmBA,EAAgB1c,OAAS,EAExCM,IAAAC,cAAA,OAAK5C,IAAK8W,GACNnU,IAAAC,cAAA,WAAKD,IAAAC,cAAA,cAASkU,IAEViI,EAAgBxd,KAAI,SAACyd,EAAgBrK,GACjC,OACIhS,IAAAC,cAACW,IAAG,CAACvD,IAAK2U,GACNhS,IAAAC,cAACY,IAAG,KACCwb,EAAejH,MAAMkH,eAAe,QAAS,CAAEC,KAAM,UAAWC,OAAQ,UAAWC,QAAQ,KAEhGzc,IAAAC,cAACY,IAAG,KACCwb,EAAe1V,MAEpB3G,IAAAC,cAACY,IAAG,KACCmb,EAAKU,YAAYL,EAAeR,YAKrD7b,IAAAC,cAAA,YAIL,QAwDhB,OACV,CAAA5C,IAAA,sBAAAC,MAED,WAAuB,IAADqf,EAAA,KACd3I,EAAQxW,KAAKf,MAAMuX,MAEvB,OAAqB,KADrBA,EAAQA,EAAMvV,QAAO,SAAAC,GAAC,OAAIH,OAAOC,KAAKE,EAAE+V,gBAAgB/U,OAAS,MACvDA,OACEM,IAAAC,cAAA,WAAK,6BAGbD,IAAAC,cAAA,WACID,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,aACJD,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,UAAI,kBACJD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACK+T,EAAMpV,KAAI,SAACqV,EAAMjC,GACd,OACIiC,EAAKC,oBAAoBtV,KAAI,SAACuV,EAAYnC,GACtC,IAAIkK,EAAiB/H,EAAWrG,MAC5B8O,EAAqBD,EAAKlgB,MAAM8T,YAChCyC,EAAeiB,EAAKQ,eAAeyH,GAAgB3e,MAAQ,GAE3Dsf,EAAc5I,EAAKQ,eAAeyH,GAAgBvV,MAAQ,GAC1DmW,EAAc7I,EAAKQ,eAAeyH,GAAgBxH,WAAa,GAEnE,OACI1U,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKgU,EAAKG,UACVpU,IAAAC,cAAA,UAAKic,GACLlc,IAAAC,cAAA,UAAK+S,GACLhT,IAAAC,cAAA,UAAK4c,GACL7c,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAAS4R,QAAS,WAAF,OAAQqK,EAAKhE,gBAAgB3F,EAAc8J,EAAaZ,EAAgBU,EAAoBD,EAAKlgB,MAAMiX,iBAAmB,IAAMO,EAAKG,YAAW,uBAa3N,CAAA/W,IAAA,qBAAAC,MAED,WAAsB,IAADyf,EAAA,KACb/I,EAAQxW,KAAKf,MAAMuX,MACvB,OAAqB,IAAjBA,EAAMtU,OACEM,IAAAC,cAAA,WAAK,6BAGbD,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAACuQ,QAAS9U,KAAKqb,wBAAwB,qCAC9C7Y,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,YACJD,IAAAC,cAAA,UAAI,aACJD,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,UAAI,kBACJD,IAAAC,cAAA,UAAI,kBAGZD,IAAAC,cAAA,aACK+T,EAAMpV,KAAI,SAACqV,EAAMjC,GACd,OACIiC,EAAKC,oBAAoBtV,KAAI,SAACuV,EAAYnC,GACtC,IAAIkK,EAAiB/H,EAAWrG,MAC5BkF,EAAe,GACf6J,EAAc,GAGd5I,EAAKQ,eAAejS,eAAe0Z,KACnClJ,EAAeiB,EAAKQ,eAAeyH,GAAgB3e,KACnDsf,EAAc5I,EAAKQ,eAAeyH,GAAgBvV,KACpCsN,EAAKQ,eAAeyH,GAAgBxH,WAGtD,IAAIlM,EAAKuU,EAAKtgB,MAAMiX,iBAAmB,IAAMO,EAAKG,SAAW,IAAM8H,EAGnE,OACIlc,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAI,IAACD,IAAAC,cAAC+c,KAAKC,MAAK,CACZrZ,KAAK,WACL4E,GAAIA,EACJuF,QAASgP,EAAKtgB,MAAMqX,gBAAgBO,IAAI7L,GACxC8J,QAASyK,EAAKnE,8BAGlB5Y,IAAAC,cAAA,UAAKgU,EAAKG,UACVpU,IAAAC,cAAA,UAAKic,GACLlc,IAAAC,cAAA,UAAK+S,GACLhT,IAAAC,cAAA,UAAK4c,YAYhCrf,KAAKf,MAAMqX,gBAAgB/B,KAAO,EAAI/R,IAAAC,cAAA,WAAK,yBACjBzC,KAAKf,MAAMqX,gBAAgB/B,KAAO,EAAI,QAAU,OAAO,IAAEvU,KAAKf,MAAMqX,gBAAgB/B,KAAK,UAAQvU,KAAKf,MAAMqX,gBAAgB/B,KAAO,EAAI,IAAM,GAAG,wBACvK/R,IAAAC,cAACid,KAAM,CACH5f,MAAOE,KAAKf,MAAMsX,2BAClBjJ,SAAU,SAAC5M,GAAI,OAAK6e,EAAK9E,yBAAyB/Z,IAClD0Q,QAASpR,KAAKf,MAAM4b,YACpB8E,cAAc,QAIlBnd,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAKoW,mBAAmB,gDACvE5T,IAAAC,cAAA,WAECzC,KAAKf,MAAMkY,qBAGP3U,IAAAC,cAAA,WAAK,4CAGzB,CAAA5C,IAAA,gBAAAC,MAGD,SAAc2W,GACV,IAAImJ,EAAe,GAEnB,IAAK,IAAMjJ,KAAcF,EAAKQ,eACtBR,EAAKQ,eAAeN,GAAY3R,eAAe,SAC/C4a,EAAavd,KAAKoU,EAAKQ,eAAeN,GAAYxN,MAI1D,OAAIyW,EAAa1d,OAAS,EACf0d,EAAaxe,KAAI,SAAAie,GAAiB,OAAQ7c,IAAAC,cAAA,WAAM4c,MAEhD,OAEd,CAAAxf,IAAA,SAAAC,MAED,WAAU,IAAD+f,EAAA,KACLvM,EAA4DtT,KAAKf,MAAzD8T,EAAWO,EAAXP,YAAa1B,EAASiC,EAATjC,UAAWS,EAASwB,EAATxB,UAAWyI,EAAYjH,EAAZiH,aAE3C,OACI/X,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,4BACH4O,EACG7O,IAAAC,cAAA,WACmB,YAAdqP,EACGtP,IAAAC,cAACQ,IAAK,CAACC,QAAS,UAAWqQ,QAAS,WAAF,OAAQsM,EAAK5f,SAAS,CAAEoR,WAAW,KAAUmC,aAAW,EAAC3D,MAAO,CAC9F4D,SAAU,QACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,MAAO,QAEPrR,IAAAC,cAACQ,IAAME,QAAO,KAAE2O,GACfyI,GACM,KACA,YAAdzI,EACGtP,IAAAC,cAACQ,IAAK,CAACC,QAAS,UAAWqQ,QAAS,WAAF,OAAQsM,EAAK5f,SAAS,CAAEoR,WAAW,KAAUmC,aAAW,EAAC3D,MAAO,CAC9F4D,SAAU,QACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,MAAO,QAEPrR,IAAAC,cAACQ,IAAME,QAAO,KAAE2O,GACfyI,GACM,MAEV,KAIb/X,IAAAC,cAACqd,KAAS,CAACC,iBAAiB,IAAIrF,UAAW1a,KAAKf,MAAMyb,WAClDlY,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,IAAItL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,QACrF1a,KAAKf,MAAM8T,YAAcvQ,IAAAC,cAAA,WACrBtD,IAAOa,KAAKf,MAAM8T,aAAa9Q,OAAO,MAGtCjC,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAAI,OAASlC,KAAKf,MAAMiX,iBAAmB,IAC5E,cAEb1T,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACL+E,EAAc,KAAOvQ,IAAAC,cAAA,WAAK,yEAC3BD,IAAAC,cAAA,WACID,IAAAC,cAACqR,KAAS,CACNI,eAAgB,EAChBhD,aAAc6B,EACduN,iBAAe,EACfvM,WAAY/T,KAAKuS,kBAIxBQ,EACGvQ,IAAAC,cAAA,WACKzC,KAAKf,MAAMgX,WACRzT,IAAAC,cAAA,WAAK,yDACLD,IAAAC,cAAA,WACID,IAAAC,cAAA,WACCzC,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAAIM,IAAAC,cAAA,WAAK,4BAA0BzC,KAAKf,MAAMiX,kBAA0B1T,IAAAC,cAAA,WAAK,qCAClHzC,KAAKf,MAAM0C,UAAUP,KAAI,SAACW,EAAUyS,GACjC,OACIhS,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAMiX,mBAAqBnU,EAAU+S,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4BjU,KAAYA,MAI/H/B,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAClCM,IAAAC,cAAA,WACID,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACID,IAAAC,cAAA,WACAD,IAAAC,cAAA,WAAK,2BAAyBtD,IAAO4T,GAAa9Q,OAAO,uBACzDO,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC8d,KAAU,CAAC3I,MAAM,OAAOC,IAAI,QAAQ2I,KAAM,GAAIlT,SAAUtN,KAAKgb,sBAAuBlb,MAAOE,KAAKf,MAAMyY,aAE3GlV,IAAAC,cAACY,IAAG,CAACod,GAAI,GAAG,MACZje,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC8d,KAAU,CAAC3I,MAAOqB,uBAAYlB,SAAS/X,KAAKf,MAAMyY,WAAa,MAAOG,IAAI,QAAQ2I,KAAM,GAAIlT,SAAUtN,KAAKib,wBAAyBnb,MAAOE,KAAKf,MAAM6Y,WAE3JtV,IAAAC,cAACY,IAAG,CAACod,GAAI,GAAG,8BAGZje,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACid,KAAM,CACH5f,MAAOE,KAAKf,MAAMia,wBAClBwH,SAAO,EACPpT,SAAU,SAAC5M,GAAI,OAAKmf,EAAKrF,8BAA8B9Z,IACvD0Q,QAASpR,KAAKf,MAAM4b,YACpB8E,cAAc,WAI1Bnd,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,aAAa0B,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAKsY,eAAe,kBAC1F9V,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,aAAa0B,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAKqZ,sBAAsB,+BAErG7W,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACID,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,MAAIC,UAAU,UACVF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,aACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,eACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,WACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,cAG9BF,IAAAC,cAAA,aACKzC,KAAKf,MAAMuX,MAAMpV,KAAI,SAACF,EAAGsT,GACtB,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,EAAO9R,UAAU,UACtBF,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAE0V,UACzBpU,IAAAC,cAAA,MAAIC,UAAU,SACVF,IAAAC,cAACid,KAAM,CACH5f,MAAO+f,EAAK5gB,MAAMuX,MAAMhC,GAAOkC,oBAC/BgK,SAAO,EACPpT,SAAU,SAAC5M,GAAI,OAAKmf,EAAK9F,WAAWrZ,EAAM8T,IAC1CpD,QAASyO,EAAK5gB,MAAM4b,YAAYzZ,KAAI,SAAUF,GAAK,MAAO,CAAEpB,MAAOoB,EAAEpB,MAAOwQ,MAAOpP,EAAEoP,UACrFqP,cAAc,UAGtBnd,IAAAC,cAAA,MAAIC,UAAU,SACVF,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKc,gBAAgBnM,IAAQD,KAAK,MAAK,cAC5F/R,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKe,iBAAiBpM,IAAQD,KAAK,MAAK,gBAEjG/R,IAAAC,cAAA,MAAIC,UAAU,SACTmd,EAAKgB,cAAc3f,UAS5CsB,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUR,UAAU,aAAa0B,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAKkb,gBAAgB,mBAAiBlb,KAAKf,MAAMiX,iBAAiB,OAGzJ,OAQzB,QAKhB1T,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,IAAItL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,QAAQ,iBAGlGlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACoB,MAAzBhO,KAAKf,MAAMyb,UACRlY,IAAAC,cAAA,WACKzC,KAAK8gB,uBACD,QAOzBte,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,IAAItL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,QAAQ,+BAGlGlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACoB,MAAzBhO,KAAKf,MAAMyb,UACRlY,IAAAC,cAAA,WACKzC,KAAK+gB,sBACD,QAOzBve,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,IAAItL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,QAAQ,0BAGlGlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACoB,MAAzBhO,KAAKf,MAAMyb,UACRlY,IAAAC,cAAA,WACID,IAAAC,cAACue,KAAa,KACVxe,IAAAC,cAAC8B,IAAM,CAACH,SAAsC,QAA5BpE,KAAKf,MAAM6b,aAAwBhG,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAE6a,aAAc,SAAU5X,QAAQ,mBAAkB,YACtIV,IAAAC,cAAC8B,IAAM,CAACH,SAAsC,WAA5BpE,KAAKf,MAAM6b,aAA2BhG,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAE6a,aAAc,YAAa5X,QAAQ,mBAAkB,oBAC5IV,IAAAC,cAAC8B,IAAM,CAACH,SAAsC,SAA5BpE,KAAKf,MAAM6b,aAAyBhG,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAE6a,aAAc,UAAW5X,QAAQ,mBAAkB,mBAE5IV,IAAAC,cAACue,KAAa,KACVxe,IAAAC,cAAC8B,IAAM,CAACH,SAA2C,eAAjCpE,KAAKf,MAAM8b,kBAAoCjG,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAE8a,kBAAmB,gBAAiB7X,QAAQ,mBAAkB,uBAC9JV,IAAAC,cAAC8B,IAAM,CAACH,SAA2C,SAAjCpE,KAAKf,MAAM8b,kBAA8BjG,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAE8a,kBAAmB,UAAW7X,QAAQ,mBAAkB,kBAGrJ6P,EACGvQ,IAAAC,cAAA,WAAK,wBAAsBtD,IAAO4T,GAAa9Q,OAAO,sBAAsB,OAAKjC,KAAKf,MAAMiX,iBACxF1T,IAAAC,cAAA,WACCzC,KAAKihB,iBAAiBjhB,KAAKf,MAAM6b,aAAc9a,KAAKf,MAAM8b,oBAE7D,MAED,SAc7BvY,IAAAC,cAAA,WACAD,IAAAC,cAAA,YAKAD,IAAAC,cAAA,iBAtqCsB,CAASD,IAAMqB,W,cCrBrDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAOwC,IAEnBuc,GAAgB,SAAAriB,GACjC,SAAAqiB,EAAYpiB,GAAQ,IAADC,EAVvB6F,EAAAK,EAAAN,EAoBU,OAVa3F,YAAA,KAAAkiB,GAVvBtc,EAWQ,KAXRK,EAWQic,EAXRvc,EAWQ,CAAM7F,GAXdmG,EAAAsF,YAAAtF,IAWQlG,EAXRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAqEIwc,uBAAsB7V,YAAA5G,KAAA0E,MAAG,SAAAmC,IAAA,IAAArL,EAAAiR,EAAAC,EAAA1Q,EAAA0gB,EAAAjc,EAAAkc,EAAAC,EAAAC,EAAA,OAAA7c,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAEX,OADVrJ,EAAKkB,SAAS,CAAE+L,SAAS,IACnB9L,EAAInB,EAAA0M,EAAArD,KAAA,EACUuD,IAAK6F,iBAAiB,KAAD,EAOxC,OAPGL,EAAO1F,EAAA5D,KACPuJ,EAAU,CACVhR,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExClG,EAAA7B,KAAA,EAAA6B,EAAArD,KAAA,EAEoBwJ,IAAI4P,IAAI,aAAc,uBAAwBpQ,GAAS,KAAD,EAEvE,IAFI1Q,EAAI+K,EAAA5D,KACJuZ,EAAkB,GACbjc,EAAI,EAAGkc,EAAI3gB,EAAKwB,OAAQiD,EAAIkc,EAAGlc,KAChCmc,EAAS5gB,EAAKyE,IACC,WAAImc,EAAOvhB,KAAOuhB,EAAO5J,UAC5C0J,EAAgB/e,KAAKif,GAErBC,EAAgBH,EAAgB/f,MAAK,SAACC,EAAGC,GAAC,OAAKkgB,OAAOngB,EAAEogB,YAAYC,cAAcpgB,EAAEmgB,eACxFxhB,EAAKD,SAAS,CAAEshB,cAAeA,EAAevV,SAAS,EAAO2G,cAAe,wBAAyBiP,qBAAqB,IAAQnW,EAAArD,KAAA,iBAclI,OAdkIqD,EAAA7B,KAAA,GAAA6B,EAAAS,GAAAT,EAAA,SAGnI9K,QAAQC,IAAG6K,EAAAS,IACPT,EAAAS,GAAM1L,SACwB,MAA1BiL,EAAAS,GAAM1L,SAASuR,OACf7R,EAAKD,SAAS,CAAE+L,SAAS,EAAO4V,qBAAqB,EAAMhP,UAAW,+CAGtE1S,EAAKD,SAAS,CAAE+L,SAAS,EAAO4V,qBAAqB,EAAMhP,UAAW,8GAAgH/R,KAAKmR,UAAUvG,EAAAS,GAAM1L,YAI/MN,EAAKD,SAAS,CAAE+L,SAAS,EAAO4V,qBAAqB,EAAMhP,UAAW,mBACzEnH,EAAAzD,OAAA,SAEO,IAAI,KAAF,oBAAAyD,EAAA3B,UAAAyB,EAAA,mBA7FdxM,EAAKE,MAAQ,CACTyb,UAAW,IACX6G,cAAe,GACfvV,SAAS,EACTqF,WAAW,EACXkJ,aAAc,GACdqH,qBAAqB,EACrB9V,SAAU,oEACZ/M,EACL,OAAAY,YAAAuhB,EAAAriB,GAAAe,YAAAshB,EAAA,EAAArhB,IAAA,2BAAAC,MAED,WACI,IAAMI,EAAOF,KACbG,MAAM,gEAAiE,CACnEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACd,GAAsB,qBAAVA,EACRR,EAAKD,SAAS,CAAE4a,YAAa,SAE5B,CAED,IADA,IAAIS,EAAuB,GAClBnW,EAAI,EAAGA,EAAIzE,EAAKwB,OAAQiD,IAAK,CAClC,IAAIwR,EAAajW,EAAKyE,GAClBoW,EAAgBC,KAAOC,IAAIC,QAAQ/E,EAAWgF,cAAezb,EAAKjB,MAAM6M,UAAU8P,SAASJ,KAAOK,IAAIC,MAC1GR,EAAqBjZ,KACjB,CAAE2U,WAAYL,EAAWK,WAAY2E,cAAeJ,EAAezb,MAAOyb,EAAejL,MAAOiL,IAGxGrb,EAAKD,SAAS,CAAE4a,YAAaS,UAI5C,CAAAzb,IAAA,oBAAAC,MAED,WAEIE,KAAK+b,2BACL/b,KAAKmhB,2BAER,CAAAthB,IAAA,cAAAC,MAGD,SAAYue,GACR,OAAqB,KAAjBA,EAAMnc,OACC,IAAMmc,EAAMC,OAAO,EAAG,GAAK,KAAOD,EAAMC,OAAO,EAAG,GAAK,IAAMD,EAAMC,OAAO,GAE9ED,IACV,CAAAxe,IAAA,YAAAC,MA2CD,SAAU2W,EAAMjC,GACZ,IAAIqN,EAAW,GACX1H,EAAoB,GAExB,IAAK,IAAMxD,KAAcF,EAAKQ,eAC1BkD,EAAkB9X,KAAKsU,GACnBF,EAAKQ,eAAeN,GAAY3R,eAAe,SAC/C6c,EAASxf,KAAK,CACV,KAAQoU,EAAK1W,KACb,SAAY0W,EAAKG,SACjB,KAAQH,EAAKQ,eAAeN,GAAYxN,KACxC,MAASnJ,KAAKkf,YAAYzI,EAAKQ,eAAeN,GAAY0H,OAC1D,SAAY5H,EAAK1U,SACjB,WAAc4U,IAI1B,IAAK,IAAMA,KAAcF,EAAKC,oBACrByD,EAAkB5I,SAASkF,EAAKC,oBAAoBC,GAAYrG,QACjEuR,EAASxf,KAAK,CACV,KAAQoU,EAAK1W,KACb,SAAY0W,EAAKG,SACjB,KAAQ,GACR,MAAS,GACT,SAAYH,EAAK1U,SACjB,WAAc0U,EAAKC,oBAAoBC,GAAYrG,QAM/D,OAAOuR,EAASzgB,KAAI,SAAAoN,GAChB,OAAQhM,IAAAC,cAAA,MAAI5C,IAAK2U,EAAQhG,EAAQmI,WAAYjU,UAAU,UACnDF,IAAAC,cAAA,MAAIC,UAAU,SACT8L,EAAQzO,MAEbyC,IAAAC,cAAA,MAAIC,UAAU,SACT8L,EAAQzM,UAEbS,IAAAC,cAAA,MAAIC,UAAU,SACT8L,EAAQoI,UAEbpU,IAAAC,cAAA,MAAIC,UAAU,SACT8L,EAAQrF,MAEb3G,IAAAC,cAAA,MAAIC,UAAU,SACT8L,EAAQ6P,OAEb7b,IAAAC,cAAA,MAAIC,UAAU,SACT8L,EAAQmI,kBAIxB,CAAA9W,IAAA,SAAAC,MAED,WAAU,IAADuT,EAAA,KACLC,EAA+CtT,KAAKf,MAA5CoS,EAASiC,EAATjC,UAAWS,EAASwB,EAATxB,UAAWyI,EAAYjH,EAAZiH,aAE9B,OACI/X,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,wCACH4O,EACG7O,IAAAC,cAAA,WACmB,YAAdqP,EACGtP,IAAAC,cAACQ,IAAK,CAACC,QAAS,UAAWqQ,QAAS,WAAF,OAAQF,EAAKpT,SAAS,CAAEoR,WAAW,KAAUmC,aAAW,EAAC3D,MAAO,CAC9F4D,SAAU,QACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,MAAO,QAEPrR,IAAAC,cAACQ,IAAME,QAAO,KAAE2O,GACfyI,GACM,KACA,YAAdzI,EACGtP,IAAAC,cAACQ,IAAK,CAACC,QAAS,UAAWqQ,QAAS,WAAF,OAAQF,EAAKpT,SAAS,CAAEoR,WAAW,KAAUmC,aAAW,EAAC3D,MAAO,CAC9F4D,SAAU,QACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,MAAO,QAEPrR,IAAAC,cAACQ,IAAME,QAAO,KAAE2O,GACfyI,GACM,MAEV,KAIb/X,IAAAC,cAACqd,KAAS,CAACC,iBAAiB,IAAIrF,UAAW1a,KAAKf,MAAMyb,WAClDlY,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAS,CAACgC,SAAS,KAEhBtf,IAAAC,cAACud,KAAKhS,KAAI,KACLhO,KAAKf,MAAM2iB,oBAERpf,IAAAC,cAAA,WAAMzC,KAAKf,MAAMsiB,cAAcrf,OAAS,EAAIM,IAAAC,cAAA,WAExCD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,MAAIC,UAAU,UACVF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,QACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,YACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,aACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,WACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,SACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,gBAG9BF,IAAAC,cAAA,aACKzC,KAAKf,MAAMsiB,cAAcngB,KAAI,SAACF,EAAGsT,GAC9B,OAAOnB,EAAK0O,UAAU7gB,EAAGsT,SAKpBhS,IAAAC,cAAA,SAAG,kBAIxBD,IAAAC,cAAA,WAAK,oCAOzBD,IAAAC,cAAA,gBArOqB,CAASD,IAAMqB,W,sBCTpDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAKsC,IAEjB/F,GAAY,SAAAC,GAC7B,SAAAD,EAAYE,GAAQ,IAADC,EARvB6F,EAAAK,EAAAN,EAmBU,OAXa3F,YAAA,KAAAJ,GARvBgG,EASQ,KATRK,EASQrG,EATR+F,EASQ,CAAM7F,GATdmG,EAAAsF,YAAAtF,IASQlG,EATRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAuEIqd,iBAAmB,WACf,IAAIC,EAAmBljB,EAAKE,MAAM4b,YAC9BqH,EAAQC,KAAKC,IAAIxX,MAAM,EAAGqX,EAAiB7gB,KAAI,SAAAF,GAAC,OAAIA,EAAE8V,eAAe,EAEzEiL,EAAiB5f,KACb,CAAE2U,WAAYkL,EAAOvG,cAAe,GAAI7b,MAAO,GAAIwQ,MAAO,KAE9DvR,EAAKkB,SAAS,CAAE4a,YAAaoH,EAAkBtP,cAAe,GAAI0P,aAAc,MACnFtjB,EAEDujB,iBAAmB,SAAC9N,GAChB,IAAIyN,EAAmBljB,EAAKE,MAAM4b,YAClCoH,EAAiB/O,OAAOsB,EAAO,GAC/BzV,EAAKkB,SAAS,CAAE4a,YAAaoH,EAAkBtP,cAAe,GAAI0P,aAAc,MACnFtjB,EAEDwB,aAAe,SAACC,GAIZ,OAHKA,EAAS6N,IACVtP,EAAKkB,SAAS,CAAE+L,SAAS,EAAOqW,aAAc,uBAAyB7hB,EAAS8N,aAE7E9N,GACVzB,EAEDsM,aAAY,eAAAvH,EAAAwH,YAAA5G,KAAA0E,MAAG,SAAAmC,EAAMV,GAAK,IAAA0X,EAAApd,EAAAwR,EAAA6L,EAAAtiB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAItB,IAHArJ,EAAKkB,SAAS,CAAE+L,SAAS,EAAM2G,cAAe,GAAI0P,aAAc,KAC5DE,EAAuB,GAElBpd,EAAI,EAAGA,EAAIpG,EAAKE,MAAM4b,YAAY3Y,OAAQiD,IAC3CwR,EAAa5X,EAAKE,MAAM4b,YAAY1V,GACpCqd,EAAgBhH,KAAOC,IAAIgH,QAAQ9L,EAAWgF,cAAe5c,EAAKE,MAAM6M,UAAU8P,WACtF2G,EAAqBlgB,KACjB,CAAE2U,WAAYL,EAAWK,WAAY2E,cAAe6G,EAAe1iB,MAAO0iB,EAAelS,MAAOkS,IAG9F,OAAJtiB,EAAInB,EAAA0M,EAAArD,KAAA,EACUuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO1F,EAAA5D,KACPuJ,EAAU,CACVK,KAAM8Q,EACNniB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzChR,QAAQC,IAAI2hB,GACZ3Q,IAAIC,KAAK,aAAc,8BAA+BT,GACjD9Q,MAAK,SAAUI,GACZR,EAAKD,SAAS,CAAE+L,SAAS,EAAO2G,cAAe,0BAC/ChS,QAAQC,IAAI,uCACZD,QAAQC,IAAIF,MACbyJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAX,EAAA3B,UAAAyB,OACV,gBAAAc,GAAA,OAAAvI,EAAA8G,MAAA,KAAA0B,YAxCW,GApFRvN,EAAKuO,SAAWvO,EAAKuO,SAAS5N,KAAIX,GAClCA,EAAKE,MAAQ,CACTG,SAAU,GACVyb,YAAa,GACb7O,SAAS,EACThF,OAAQ,GACRoO,OAAQ,GACRxE,QAAS,GACT9E,SAAU,oEACZ/M,EACL,OAAAY,YAAAf,EAAAC,GAAAe,YAAAhB,EAAA,EAAAiB,IAAA,2BAAAC,MAGD,WACI,IAAMI,EAAOF,KACbG,MAAM,gEAAiE,CACnEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACd,GAAsB,qBAAVA,EACRR,EAAKD,SAAS,CAAE4a,YAAa,SAE5B,CAED,IADA,IAAIS,EAAuB,GAClBnW,EAAI,EAAGA,EAAIzE,EAAKwB,OAAQiD,IAAK,CAClC,IAAIwR,EAAajW,EAAKyE,GAClBoW,EAAgBC,KAAOC,IAAIC,QAAQ/E,EAAWgF,cAAezb,EAAKjB,MAAM6M,UAAU8P,SAASJ,KAAOK,IAAIC,MAC1GR,EAAqBjZ,KACjB,CAAE2U,WAAYL,EAAWK,WAAY2E,cAAeJ,EAAezb,MAAOyb,EAAejL,MAAOiL,IAGxGrb,EAAKD,SAAS,CAAE4a,YAAaS,UAI5C,CAAAzb,IAAA,oBAAAC,MAED,WACIE,KAAK+b,6BACR,CAAAlc,IAAA,WAAAC,MAED,SAAS6E,EAAG6P,EAAOpE,GACfzP,QAAQC,IAAI+D,EAAG6P,EAAOpE,GACtB,IAAI6R,EAAmBjiB,KAAKf,MAAM4b,YAClC,OAAQzK,GACJ,IAAK,gBACD6R,EAAiBzN,GAAOmH,cAAgBhX,EACxC,MACJ,QACIhE,QAAQ+hB,KAAK,6CAErB/hB,QAAQC,IAAIqhB,GACZjiB,KAAKC,SAAS,CAAE4a,YAAaoH,MAChC,CAAApiB,IAAA,SAAAC,MAiED,WAAU,IAADuT,EAAA,KACL,OACI7Q,IAAAC,cAAA,OAAKC,UAAU,UACV1C,KAAKf,MAAMojB,aAAe7f,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACtCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMojB,eACb,KACVriB,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACXnQ,IAAAC,cAAA,WACID,IAAAC,cAAA,UAAI,oCACJD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS9U,KAAKgiB,kBAAkB,WAC1Dxf,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,qBAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAM4b,YACR7a,KAAKf,MAAM4b,YAAYzZ,KAAI,SAACF,EAAGsT,GAC3B,IAAIrL,EAAOjI,EAAEya,cACb,OACInZ,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAID,IAAAC,cAAA,SAAOC,UAAU,aAAa0D,KAAK,OAAOkH,SAAU,SAAA3I,GAAC,OAAI0O,EAAK/F,SAAS3I,EAAEoG,OAAOjL,MAAO0U,EAAO,kBAAkB1U,MAAOqJ,KAC3H3G,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAAS4R,QAAS,WAAF,OAAQzB,EAAKiP,iBAAiB9N,KAAQ,eAIpF,OAGdhS,IAAAC,cAACsS,IAAM,CACHC,IAAKhV,KAAKiV,UACVC,cAAe,GAEflI,SAAUhN,KAAKmV,iBAEd,SAAArW,GAMOA,EAJAkI,OAIAlI,EAHA8R,QAGA9R,EAFAsW,OAHJ,IAII/J,EACAvM,EADAuM,aAEJ,OACI7I,IAAAC,cAAA,QAAMuK,SAAU3B,GACZ7I,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUkB,SAAUiP,EAAKpU,MAAM+M,QAAS8I,QAASzB,EAAKhI,cAAc,8BAlLvF,CAAS7I,IAAMqB,W,6DCPhDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAQA,IAAMuL,GAAc,SAAHpM,GAMV,IAAD6e,EAAA7e,EALFsM,MAASjH,EAAIwZ,EAAJxZ,KAAMrJ,EAAK6iB,EAAL7iB,MAAOwN,EAAQqV,EAARrV,SAAU+C,EAAMsS,EAANtS,OAChCrF,EAAElH,EAAFkH,GACAsF,EAAKxM,EAALwM,MAEGxR,GADMgF,EAATpB,UACQ2B,YAAAP,EAAAQ,KAER,OACI9B,IAAAC,cAAA,WACID,IAAAC,cAAA,QAAA1B,OAAAyD,OAAA,CACI2E,KAAMA,EACN6B,GAAIA,EACJ5E,KAAK,QACLtG,MAAOkL,EACPuF,QAASvF,IAAOlL,EAChBwN,SAAUA,EACV+C,OAAQA,EACR3N,UAAW8N,IAAW,iBAClB1R,IAER0D,IAAAC,cAAA,SAAOgO,QAASzF,GAAKsF,KAK3BN,GAAgB,SAAHxD,GAAA,IAAMyD,EAAKzD,EAALyD,MAAK,OAC1BA,EAAQzN,IAAAC,cAAA,OAAKC,UAAU,kBAAkBuN,GAAe,MAEtDS,GAAmB,SAAHC,GAQf,IAPH7Q,EAAK6Q,EAAL7Q,MACAmQ,EAAKU,EAALV,MACAW,EAAOD,EAAPC,QAEAN,GADEK,EAAF3F,GACK2F,EAALL,OACA5N,EAASiO,EAATjO,UACAmO,EAAQF,EAARE,SAEMC,EAAUN,IACZ,cACA,CACI,aAAc1Q,IAAWmQ,GAASW,EAClC,aAAcX,GAElBvN,GAEJ,OACIF,IAAAC,cAAA,OAAKC,UAAWoO,GACZtO,IAAAC,cAAA,gBACID,IAAAC,cAAA,cAAS6N,GACRO,EACAD,GAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOA,OAK7BrR,GAAY,SAAAC,GAC7B,SAAAD,EAAYE,GAAQ,IAADC,EAhEvB6F,EAAAK,EAAAN,EAyEU,OATa3F,YAAA,KAAAJ,GAhEvBgG,EAiEQ,KAjERK,EAiEQrG,EAjER+F,EAiEQ,CAAM7F,GAjEdmG,EAAAsF,YAAAtF,IAiEQlG,EAjERyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KA2HIie,cAAgB,WACZ,IAAIC,EAAgB9jB,EAAKE,MAAMG,SAC/ByjB,EAAcxgB,KACV,CACI,QAAW,GACX,MAAS,GACT,UAAY,EACZ,QAAW,IAGnBtD,EAAKkB,SAAS,CAAEb,SAAUyjB,EAAelQ,cAAe,GAAI0P,aAAc,MAC7EtjB,EAED+jB,cAAgB,SAACtO,GACb,IAAIqO,EAAgB9jB,EAAKE,MAAMG,SAC/ByjB,EAAc3P,OAAOsB,EAAO,GAC5BzV,EAAKkB,SAAS,CAAEb,SAAUyjB,EAAelQ,cAAe,GAAI0P,aAAc,MAC7EtjB,EAEDwB,aAAe,SAACC,GAIZ,OAHKA,EAAS6N,IACVtP,EAAKkB,SAAS,CAAE+L,SAAS,EAAOqW,aAAc,uBAAyB7hB,EAAS8N,aAE7E9N,GACVzB,EAEDsM,aAAY,eAAA2F,EAAA1F,YAAA5G,KAAA0E,MAAG,SAAAmC,EAAMV,GAAK,IAAAzL,EAAAc,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAGZ,OAFVrJ,EAAKkB,SAAS,CAAE+L,SAAS,EAAM2G,cAAe,GAAI0P,aAAc,KAC5DjjB,EAAWL,EAAKE,MAAMG,SAAS6B,QAAO,SAAAC,GAAC,OAAIA,EAAEqC,QAAQrB,OAAS,KAAGb,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAEiC,QAAUhC,EAAEgC,QAAW,EAAMhC,EAAEgC,QAAUjC,EAAElC,UAAa,EAAI,KAC7Ic,EAAInB,EAAA0M,EAAArD,KAAA,EACUuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO1F,EAAA5D,KACPuJ,EAAU,CACVK,KAAMrS,EACNgB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,2BAA4BT,GAC9C9Q,MAAK,SAAUI,GACZR,EAAKD,SAAS,CAAE+L,SAAS,EAAO2G,cAAe,0BAC/ChS,QAAQC,IAAI,uCACZD,QAAQC,IAAIF,MACbyJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,wBAAAX,EAAA3B,UAAAyB,OACV,gBAAAc,GAAA,OAAA2E,EAAApG,MAAA,KAAA0B,YA/BW,GAnFRvN,EAAKuO,SAAWvO,EAAKuO,SAAS5N,KAAIX,GAClCA,EAAKE,MAAQ,CACTG,SAAU,GACV4M,SAAS,EACThF,OAAQ,GACRoO,OAAQ,GACRxE,QAAS,IACX7R,EACL,OAAAY,YAAAf,EAAAC,GAAAe,YAAAhB,EAAA,EAAAiB,IAAA,wBAAAC,MAGD,WACI,IAAMI,EAAOF,KACbG,MAAM,6DAA8D,CAChEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACdC,QAAQC,IAAIF,GACU,qBAAVA,EACRR,EAAKD,SAAS,CAAEb,SAAU,KAG1Bc,EAAKD,SAAS,CAAEb,SAAUsB,SAGzC,CAAAb,IAAA,oBAAAC,MAED,WACIE,KAAK+iB,0BACR,CAAAljB,IAAA,WAAAC,MAED,SAAS6E,EAAG6P,EAAOpE,GACfzP,QAAQC,IAAI+D,EAAG6P,EAAOpE,GACtB,IAAIyS,EAAgB7iB,KAAKf,MAAMG,SAC/B,OAAQgR,GACJ,IAAK,OACDyS,EAAcrO,GAAOjR,QAAUoB,EAC/B,MACJ,IAAK,QACDke,EAAcrO,GAAOhR,MAAQmB,EAC7B,MACJ,IAAK,UACDke,EAAcrO,GAAOqJ,QAAUlZ,EAC/B,MACJ,QACIhE,QAAQ+hB,KAAK,6CAErB/hB,QAAQC,IAAIiiB,GACZ7iB,KAAKC,SAAS,CAAEb,SAAUyjB,MAC7B,CAAAhjB,IAAA,SAAAC,MA2DD,WAAU,IAADuT,EAAA,KACL,OACI7Q,IAAAC,cAAA,OAAKC,UAAU,UACV1C,KAAKf,MAAMojB,aAAe7f,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACtCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMojB,eACb,KACVriB,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACXnQ,IAAAC,cAAA,WACID,IAAAC,cAAA,UAAI,uBACJD,IAAAC,cAAA,WAAK,uFACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS9U,KAAK4iB,eAAe,WACvDpgB,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,UAAI,YACJD,IAAAC,cAAA,UAAI,WACJD,IAAAC,cAAA,UAAI,YAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMG,SACRY,KAAKf,MAAMG,SAASgC,KAAI,SAACF,EAAGsT,GACxB,IAAIrL,EAAOjI,EAAEqC,QACTC,EAAQtC,EAAEsC,MACVY,GAAYlD,EAAE8hB,UAAY3P,EAAKpU,MAAM+M,QACrC6R,EAAU3c,EAAE2c,QAChB,OACIrb,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAID,IAAAC,cAAA,SAAOC,UAAU,aAAa0D,KAAK,OAAOhC,SAAUA,EAAUkJ,SAAU,SAAA3I,GAAC,OAAI0O,EAAK/F,SAAS3I,EAAEoG,OAAOjL,MAAO0U,EAAO,SAAS1U,MAAOqJ,KACtI3G,IAAAC,cAAA,UAAID,IAAAC,cAAA,SAAOC,UAAU,aAAa0D,KAAK,OAAOkH,SAAU,SAAA3I,GAAC,OAAI0O,EAAK/F,SAAS3I,EAAEoG,OAAOjL,MAAO0U,EAAO,UAAU1U,MAAO0D,KACnHhB,IAAAC,cAAA,UAAID,IAAAC,cAAA,SAAOC,UAAU,aAAa0D,KAAK,OAAOkH,SAAU,SAAA3I,GAAC,OAAI0O,EAAK/F,SAAS3I,EAAEoG,OAAOjL,MAAO0U,EAAO,YAAY1U,MAAO+d,KACrHrb,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASkB,SAAUA,EAAU0Q,QAAS,WAAF,OAAQzB,EAAKyP,cAActO,KAAQ,eAIrG,OAGdhS,IAAAC,cAACsS,IAAM,CACHC,IAAKhV,KAAKiV,UACVC,cAAe,GAEflI,SAAUhN,KAAKmV,iBAEd,SAAArW,GACG,IACIkI,EAIAlI,EAJAkI,OACA4J,EAGA9R,EAHA8R,QACAwE,EAEAtW,EAFAsW,OACA/J,EACAvM,EADAuM,aAEJ,OACI7I,IAAAC,cAAA,QAAMuK,SAAU3B,GACZ7I,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUkB,SAAUiP,EAAKpU,MAAM+M,QAAS8I,QAASzB,EAAKhI,cAAc,iBACpF7I,IAAAC,cAAA,WACAD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAACiO,GAAgB,CACb1F,GAAG,kBACHsF,MAAM,oBACNxQ,MAAOkH,EAAOic,gBACdhT,MAAOmF,EAAO6N,gBACdrS,QAASA,EAAQqS,iBAEhB5P,EAAKpU,MAAMG,SAASgC,KAAI,SAAC6hB,EAAiBpjB,GACvC,OACI2C,IAAAC,cAACiT,IAAK,CACF7V,IAAKojB,EAAgB1f,QAAU1D,EAC/B8V,UAAWzF,GACX/G,KAAK,kBACL6B,GAAIiY,EAAgB1f,QACpB+M,MAAO2S,EAAgB1f,QAAU,MAAQ0f,EAAgBzf,MAAQ,oBAlMpF,CAAShB,IAAMqB,W,cC/DhDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAG+B,IAEV/F,GAAY,SAAAC,GAC7B,SAAAD,EAAYE,GAAQ,IAADC,EANvB6F,EAAAK,EAAAN,EAeU,OATa3F,YAAA,KAAAJ,GANvBgG,EAOQ,KAPRK,EAOQrG,EAPR+F,EAOQ,CAAM7F,GAPdmG,EAAAsF,YAAAtF,IAOQlG,EAPRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAmEIme,cAAgB,SAACtO,GACb,IAAIqO,EAAgB9jB,EAAKE,MAAM0C,UAC/BkhB,EAAc3P,OAAOsB,EAAO,GAC5BzV,EAAKkB,SAAS,CAAE0B,UAAWkhB,EAAelQ,cAAe,GAAI0P,aAAc,MAC9EtjB,EAEDwB,aAAe,SAACC,GAIZ,OAHKA,EAAS6N,IACVtP,EAAKkB,SAAS,CAAE+L,SAAS,EAAOqW,aAAc,uBAAyB7hB,EAAS8N,aAE7E9N,GACVzB,EAEDsM,aAAY,eAAAvH,EAAAwH,YAAA5G,KAAA0E,MAAG,SAAAmC,EAAMV,GAAK,IAAAlJ,EAAAzB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAGZ,OAFVrJ,EAAKkB,SAAS,CAAE+L,SAAS,EAAM2G,cAAe,GAAI0P,aAAc,KAC5D1gB,EAAY5C,EAAKE,MAAM0C,UAAUV,QAAO,SAAAC,GAAC,OAAIA,EAAEqC,QAAQrB,OAAS,KAAGb,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAEiC,QAAUhC,EAAEgC,QAAW,EAAMhC,EAAEgC,QAAUjC,EAAEK,WAAc,EAAI,KAChJzB,EAAInB,EAAA0M,EAAArD,KAAA,EACUuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO1F,EAAA5D,KACPuJ,EAAU,CACVK,KAAM9P,EACNvB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,uBAAwBT,GAC1C9Q,MAAK,SAAUI,GACZR,EAAKD,SAAS,CAAE+L,SAAS,EAAO2G,cAAe,0BAC/ChS,QAAQC,IAAI,uCACZD,QAAQC,IAAIF,MACbyJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,wBAAAX,EAAA3B,UAAAyB,OACV,gBAAAc,GAAA,OAAAvI,EAAA8G,MAAA,KAAA0B,YA/BW,GAxERvN,EAAKuO,SAAWvO,EAAKuO,SAAS5N,KAAIX,GAClCA,EAAKE,MAAQ,CACT0C,UAAW,GACXqK,SAAS,EACThF,OAAQ,GACRoO,OAAQ,GACRxE,QAAS,IACX7R,EACL,OAAAY,YAAAf,EAAAC,GAAAe,YAAAhB,EAAA,EAAAiB,IAAA,yBAAAC,MAGD,WACI,IAAMI,EAAOF,KACbG,MAAM,8DAA+D,CACjEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACdC,QAAQC,IAAIF,GACU,qBAAVA,EACRR,EAAKD,SAAS,CAAE0B,UAAW,MAG3BhB,QAAQC,IAAIF,GACZR,EAAKD,SAAS,CAAE0B,UAAWjB,UAG1C,CAAAb,IAAA,oBAAAC,MAED,WACIE,KAAKkjB,2BACR,CAAArjB,IAAA,WAAAC,MAED,SAAS6E,EAAG6P,EAAOpE,GACfzP,QAAQC,IAAI+D,EAAG6P,EAAOpE,GACtB,IAAIyS,EAAgB7iB,KAAKf,MAAM0C,UAC/B,OAAQyO,GACJ,IAAK,OACDyS,EAAcrO,GAAOjR,QAAUoB,EAC/B,MACJ,IAAK,QACDke,EAAcrO,GAAOhR,MAAQmB,EAC7B,MACJ,IAAK,UACDke,EAAcrO,GAAOqJ,QAAUlZ,EAC/B,MACJ,QACIhE,QAAQ+hB,KAAK,6CAErB/hB,QAAQC,IAAIiiB,GACZ7iB,KAAKC,SAAS,CAAE0B,UAAWkhB,MAC9B,CAAAhjB,IAAA,SAAAC,MA+CD,WAAU,IAADuT,EAAA,KACL,OACI7Q,IAAAC,cAAA,OAAKC,UAAU,UACV1C,KAAKf,MAAMojB,aAAe7f,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACtCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMojB,eACb,KACVriB,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACXnQ,IAAAC,cAAA,WACID,IAAAC,cAAA,UAAI,8BACJD,IAAAC,cAAA,WAAK,4CACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,iBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAM0C,UACR3B,KAAKf,MAAM0C,UAAUP,KAAI,SAACF,EAAGsT,GACzB,IAAIrL,EAAOjI,EAAEiI,KACTga,EAAU,CAACjiB,EAAEiiB,QAASjiB,EAAEkiB,KAAMliB,EAAEjC,MAAOiC,EAAEmiB,SAASjhB,KAAK,KAEvDgC,GAAYlD,EAAE8hB,UAAY3P,EAAKpU,MAAM+M,QACzC,OACIxJ,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAID,IAAAC,cAAA,SAAOC,UAAU,aAAa0D,KAAK,OAAOhC,SAAUA,EAAUkJ,SAAU,SAAA3I,GAAC,OAAI0O,EAAK/F,SAAS3I,EAAEoG,OAAOjL,MAAO0U,EAAO,SAAS1U,MAAOqJ,KACtI3G,IAAAC,cAAA,UAAID,IAAAC,cAAA,SAAOC,UAAU,aAAa0D,KAAK,OAAOhC,SAAUA,EAAUkJ,SAAU,SAAA3I,GAAC,OAAI0O,EAAK/F,SAAS3I,EAAEoG,OAAOjL,MAAO0U,EAAO,YAAY1U,MAAOqjB,KACzI3gB,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASkB,SAAUA,EAAU0Q,QAAS,WAAF,OAAQzB,EAAKyP,cAActO,KAAQ,eAIrG,aA9ID,CAAShS,IAAMqB,W,yBCLhDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAG+D,IAE1C2e,GAAiB,SAAAzkB,GAClC,SAAAykB,EAAYxkB,GAAQ,IAADC,EANvB6F,EAAAK,EAAAN,EAqCyD,OA/BlC3F,YAAA,KAAAskB,GANvB1e,EAOQ,KAPRK,EAOQqe,EAPR3e,EAOQ,CAAM7F,GAPdmG,EAAAsF,YAAAtF,IAOQlG,EAPRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAiGI4e,iBAAmB,SAAA5e,GACfhE,QAAQC,IAAI+D,GACZ,IAAA6e,EAAwB7e,EAAEoG,OAAlB5B,EAAIqa,EAAJra,KAAMrJ,EAAK0jB,EAAL1jB,MACV2jB,EAAgB1kB,EAAKE,MAAMwkB,cAC/BA,EAActa,GAAQrJ,EACtBf,EAAKkB,SAAS,CACVwjB,cAAeA,KAIvB1kB,EACA2kB,oBAAsB,WAClB,IAAID,EAAgB1kB,EAAKE,MAAMwkB,cAC/BA,EAAcE,cAAgB,yBAC9B5kB,EAAKkB,SAAS,CACVwjB,cAAeA,KAEtB1kB,EAQD6kB,aAAYtY,YAAA5G,KAAA0E,MAAG,SAAAmC,IAAA,OAAA7G,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OACXrJ,EAAK8kB,sBAAsB,wBAAApY,EAAA3B,UAAAyB,OAC9BxM,EAED+kB,aAAYxY,YAAA5G,KAAA0E,MAAG,SAAAqD,IAAA,OAAA/H,KAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,OACXrJ,EAAKkB,SAAS,CACVsP,MAAO,GACPwU,MAAO,GACPhkB,KAAM,GACNikB,WAAY,YACZC,gBAAiB,KAClB,wBAAAtX,EAAA7C,UAAA2C,OACN1N,EAGD8kB,oBAAmBvY,YAAA5G,KAAA0E,MAAG,SAAAgO,IAAA,IAAA8M,EAAAhkB,EAAAiR,EAAAC,EAAA1Q,EAAA,OAAAgE,KAAAoB,MAAA,SAAA0R,GAAA,cAAAA,EAAA5N,KAAA4N,EAAApP,MAAA,OAcjB,GAbG8b,EAAU,GACV/kB,IAAOJ,EAAKE,MAAMc,KAAM,cAAc,GAAMokB,YAC5CD,EAAQnkB,KAAOZ,IAAOJ,EAAKE,MAAMc,MAAMkC,OAAO,eAE9ClD,EAAKE,MAAMsQ,OAASxQ,EAAKE,MAAMsQ,MAAMrN,OAAS,IAC9CgiB,EAAQ3U,MAAQxQ,EAAKE,MAAMsQ,OAE3BxQ,EAAKE,MAAM8kB,OAAShlB,EAAKE,MAAM8kB,MAAM7hB,OAAS,IAC9CgiB,EAAQH,MAAQhlB,EAAKE,MAAM8kB,OAG3BhlB,EAAKE,MAAM+kB,YAAuC,aAAzBjlB,EAAKE,MAAM+kB,aACpCE,EAAQF,WAAajlB,EAAKE,MAAM+kB,YAGD,GAA/BjjB,OAAOC,KAAKkjB,GAAShiB,OAAW,CAAAsV,EAAApP,KAAA,QAC2C,OAA3ErJ,EAAKkB,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,+BAAgC4E,EAAAxP,OAAA,iBAK9C,OAD7B9H,EAAInB,GACHkB,SAAS,CAAE+L,SAAS,IAAQwL,EAAApP,KAAA,GACbuD,IAAK6F,iBAAiB,KAAD,GAQxC,OARGL,EAAOqG,EAAA3P,KACPuJ,EAAU,CACVK,KAAMyS,EACN9jB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExC6F,EAAA5N,KAAA,GAAA4N,EAAApP,KAAA,GAEoBwJ,IAAIC,KAAK,aAAc,yBAA0BT,GAAS,KAAD,GAAtE1Q,EAAI8W,EAAA3P,KACR3H,EAAKD,SAAS,CAAES,KAAMA,EAAMsL,SAAS,EAAOoY,YAAY,EAAMC,iBAAkB3jB,EAAMiS,cAAe,8BAAgCjS,EAAKwB,OAAS,kBAAmB0Q,UAAW,KAAM4E,EAAApP,KAAA,iBAAAoP,EAAA5N,KAAA,GAAA4N,EAAAtL,GAAAsL,EAAA,UAGvL7W,QAAQC,IAAG4W,EAAAtL,IACXhM,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,sHAAwH/R,KAAKmR,UAASwF,EAAAtL,MAAW,yBAAAsL,EAAA1N,UAAAsN,EAAA,oBAInMrY,EAEDulB,iBAAgB,eAAAtT,EAAA1F,YAAA5G,KAAA0E,MAAG,SAAA6O,EAAOpN,GAAK,IAAA0Z,EAAA/V,EAAAgW,EAAAC,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAsS,GAAA,cAAAA,EAAAxO,KAAAwO,EAAAhQ,MAAA,OAMY,GALvCrJ,EAAKkB,SAAS,CAAE+L,SAAS,IACzBnB,EAAMa,iBACNb,EAAM6Z,kBAEFH,EAAaxlB,EAAKE,MAAMglB,gBACxBzV,EAAUzP,EAAKE,MAAMwkB,cAEpBtkB,IAAOqP,EAAQzO,KAAM,cAAc,GAAMokB,UAAU,CAAD/L,EAAAhQ,KAAA,QACiB,OAApErJ,EAAKkB,SAAS,CAAE0kB,UAAW,sBAAuB3Y,SAAS,IAASoM,EAAApQ,OAAA,iBA+B9D,OA5BNwc,EAAO,iBACPD,EAAWxkB,MAAQyO,EAAQzO,OAC3BykB,EAAO,qBAE0B,aAA7BhW,EAAQoW,mBACRpW,EAAQoW,iBAAmB,YAEU,aAArCpW,EAAQqW,2BACRrW,EAAQqW,yBAA2B,YAEI,mBAAvCrW,EAAQsW,6BACRtW,EAAQsW,2BAA6B,kBAEF,aAAnCtW,EAAQuW,yBACRvW,EAAQuW,uBAAyB,YAEjCvW,EAAQxJ,eAAe,yBAChBwJ,EAAQwW,cAEfxW,EAAQxJ,eAAe,gBAChBwJ,EAAQiI,KAEfjI,EAAQxJ,eAAe,uBAChBwJ,EAAQY,aAInBqV,EAAO,CAAE,KAAQD,EAAM,QAAWhW,EAAS,QAAWA,EAAQzO,KAAM,QAAWwkB,EAAWxkB,MACxFG,EAAInB,EAAAqZ,EAAAhQ,KAAA,GAEUuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAOiH,EAAAvQ,KACPuJ,EAAU,CACVK,KAAM,CAACgT,GACPrkB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,MACpClG,EAAKD,SAAS,CAAEwjB,cAAe,GAAIQ,gBAAiB,GAAIjY,SAAS,EAAOtL,KAAM,GAAI2jB,iBAAkB,KAAM,kBAAMnkB,EAAK0jB,qBAE1HzZ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,SAE/BlM,EAAKD,SAAS,CAAE+L,SAAS,OAC1B,yBAAAoM,EAAAtO,UAAAmO,OACV,gBAAA5L,GAAA,OAAA2E,EAAApG,MAAA,KAAA0B,YAtEe,GA7KZvN,EAAKE,MAAQ,CACT+M,SAAS,EACTtL,KAAM,GACN2jB,iBAAkB,GAClBJ,gBAAiB,GACjBR,cAAe,GACfwB,iBAAkB,GAClBb,YAAY,EACZ7U,MAAO,GACPwU,MAAO,GACPhkB,KAAM,GACNmlB,YAAa,CAAC,OAAQ,QACtBlB,WAAY,GACZriB,UAAWoO,GACXoV,KAAM,CACF,CACIhF,OAAQ,OACRiF,SAAU,QACX,CACCjF,OAAQ,aACRiF,SAAU,SACX,CACCjF,OAAQ,YACRiF,SAAU,WAGtBrmB,EAAKU,aAAeV,EAAKU,aAAaC,KAAIX,GAC1CA,EAAKsmB,kBAAoBtmB,EAAKsmB,kBAAkB3lB,KAAIX,GACpDA,EAAK+kB,aAAe/kB,EAAK+kB,aAAapkB,KAAIX,GAC1CA,EAAK6kB,aAAe7kB,EAAK6kB,aAAalkB,KAAIX,GAAOA,EACpD,OAAAY,YAAA2jB,EAAAzkB,GAAAe,YAAA0jB,EAAA,EAAAzjB,IAAA,oBAAAC,MAED,WACI,IAAMI,EAAOF,KACTslB,EAAcnmB,MAASkQ,IAAI,IAAK,QAAQkW,OACxCL,EAAc,GAIlB,IAHAA,EAAY7iB,KAAK,aAGVijB,EAAc,MACjBJ,EAAY7iB,KAAKijB,EAAc,IAC/BA,IAGJtlB,KAAKC,SAAS,CAAEilB,cAAalB,WAAY7kB,MAAS8C,OAAO,UACzD9B,MAAM,6DAA8D,CAChEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACdR,EAAKD,SAAS,CAAEglB,iBAAkBvkB,SAE7C,CAAAb,IAAA,eAAAC,MAED,SAAa6E,GACT,IAAI9E,EAAM8E,EAAEoG,OAAOC,GACnBhL,KAAKC,SAAQkL,YAAC,GAAGtL,EAAM8E,EAAEoG,OAAOjL,UACnC,CAAAD,IAAA,uBAAAC,MAED,SAAqB6E,GACjB,IAAI8e,EAAgBzjB,KAAKf,MAAMwkB,cAC/BA,EAAc+B,gBAAkB7gB,EAAE8gB,cAAcza,GAChDhL,KAAKC,SAAS,CACVwjB,oBAEP,CAAA5jB,IAAA,mBAAAC,MAED,SAAiBiC,GACb,IAAI0hB,EAAgBzjB,KAAKf,MAAMwkB,cAC/BA,EAAc1hB,SAAWA,EACzB/B,KAAKC,SAAS,CACVwjB,oBAEP,CAAA5jB,IAAA,sBAAAC,MAED,SAAoBiS,GAChB,IAAI0R,EAAgBzjB,KAAKf,MAAMwkB,cAC/BA,EAAciC,mBAAqB3T,EACnC/R,KAAKC,SAAS,CACVwjB,oBAEP,CAAA5jB,IAAA,oBAAAC,MAqBD,SAAkB0U,GACd,IAAIyP,EAAkBjkB,KAAKf,MAAMolB,iBAAiB7P,GAClD7T,QAAQC,IAAIqjB,GACZjkB,KAAKC,SAAS,CAAEgkB,gBAAiBA,EAAiBR,cAAe5iB,KAAKC,MAAMD,KAAKmR,UAAUiS,QAC9F,CAAApkB,IAAA,SAAAC,MAqID,WAAU,IAADuT,EAAA,KACL,OAEI7Q,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,kCACHzC,KAAKf,MAAM2T,UAAYpQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACnCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM2T,YACb,KACV5S,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACXnQ,IAAAC,cAAA,WACID,IAAAC,cAAA,WACAD,IAAAC,cAAA,UAAI,iBACJD,IAAAC,cAAC+c,KAAI,KACDhd,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,yBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,aACL+W,GAAG,SACHlV,GAAG,aACHsC,SAAUtN,KAAKP,aACfK,MAAOE,KAAKf,MAAM+kB,YAEjBhkB,KAAKf,MAAMimB,YAAY9jB,KAAI,SAAAmkB,GACxB,OACI/iB,IAAAC,cAAA,UAAQ5C,IAAK0lB,EAAMzlB,MAAOylB,GAAOA,QAMjD/iB,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,QACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC1X,YAAY,aAAapO,MAAOE,KAAKf,MAAMc,KAAMuN,SAAUtN,KAAKP,aAAcuL,GAAG,OAAO5E,KAAK,UAE/G5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,cACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC1X,YAAY,aAAapO,MAAOE,KAAKf,MAAMsQ,MAAOjC,SAAUtN,KAAKP,aAAcuL,GAAG,QAAQ5E,KAAK,UAEjH5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,aACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC1X,YAAY,YAAYpO,MAAOE,KAAKf,MAAM8kB,MAAOzW,SAAUtN,KAAKP,aAAcuL,GAAG,QAAQ5E,KAAK,YAIxH5D,IAAAC,cAAA,WAEAD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,aAAa0B,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAK4jB,cAAc,IAAE5jB,KAAKf,MAAM+M,QAAU,aAAe,iBAC/HxJ,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,aAAa0B,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAK8jB,aAAc5gB,QAAS,aAAa,iBAE/GV,IAAAC,cAAA,WACAD,IAAAC,cAAA,WAECzC,KAAKf,MAAMolB,iBAAiBniB,OAAS,EAClCM,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,MAAIC,UAAU,UACVF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,QACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,cACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,aACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,gBACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,WACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,aAG9BF,IAAAC,cAAA,aACKzC,KAAKf,MAAMolB,iBAAiBjjB,KAAI,SAACF,EAAGsT,GACjC,OACIhS,IAAAC,cAAA,YACID,IAAAC,cAAA,MAAI5C,IAAK2U,EAAO9R,UAAU,UACtBF,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEnB,MACzByC,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEqO,OACzB/M,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAE6iB,OACzBvhB,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAE2kB,oBACzBrjB,IAAAC,cAAA,MAAIC,UAAU,SACTxB,EAAEskB,gBAAgBjU,SAAS,UACxB/O,IAAAC,cAAA,WACKvB,EAAE4kB,kBAAoB5kB,EAAE4kB,iBAAiB5jB,OAAS,EAC/CM,IAAAC,cAAA,WACKvB,EAAE4kB,iBAAiB1kB,KAAI,SAAAkgB,GACpB,OACI9e,IAAAC,cAAA,WACKtD,IAAOmiB,EAAOvhB,MAAMkC,OAAO,cAAgB,OAASqf,EAAO1K,SAAW,OAAS0K,EAAOvf,SAAW,SAAWuf,EAAO3K,gBAK3H,yBAGf,OAGVnU,IAAAC,cAAA,MAAIC,UAAU,SAAQF,IAAAC,cAAC8B,IAAM,CAACuQ,QAAS,WAAF,OAAQzB,EAAKgS,kBAAkB7Q,KAAQ,UAE/EzT,OAAOC,KAAKqS,EAAKpU,MAAMglB,iBAAiB/hB,OAAS,GAAKmR,EAAKpU,MAAMglB,iBAAmB/iB,EAAIsB,IAAAC,cAAA,WAAK,uBAAqB1B,OAAOC,KAAKqS,EAAKpU,MAAMglB,iBAAiB/hB,OAAS,EAChKM,IAAAC,cAAA,WACID,IAAAC,cAAA,WACAD,IAAAC,cAAC+c,KAAI,CAACuG,YAAU,EAAC/Y,SAAUqG,EAAKiR,kBAC5B9hB,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,QAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,kBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,OACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAc1jB,KAChCmO,YAAY,aACZZ,SAAU+F,EAAKkQ,mBAEnB/gB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,sCAG1C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,YAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,sBACXtS,EAAKpU,MAAM0C,UAAUP,KAAI,SAACW,GACvB,OACIS,IAAAC,cAAC+c,KAAKC,MAAK,CACPlP,QAASxO,IAAasR,EAAKpU,MAAMwkB,cAAc1hB,SAC/CoH,KAAK,WACL/C,KAAK,QACL4E,GAAIjJ,EACJuL,SAAU,WAAF,OAAQ+F,EAAK6S,iBAAiBnkB,IACtCuO,MAAOvO,OAKnBS,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,8BAG1C5D,IAAAC,cAAC0jB,KAAU,CAACzjB,UAAU,QAClBF,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,gBACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAcE,cAChCzV,YAAY,uCACZZ,SAAU+F,EAAKkQ,mBAEnB/gB,IAAAC,cAAC0jB,KAAWC,OAAM,KACd5jB,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,oBAAoB4R,QAAS,WAAF,OAAQzB,EAAKqQ,wBAAuB,aAIvFlhB,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,cACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,QACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAclU,MAChCrB,YAAY,aACZZ,SAAU+F,EAAKkQ,mBAEnB/gB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,yBAE1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,aACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,QACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAcM,MAChC7V,YAAY,YACZZ,SAAU+F,EAAKkQ,mBAEnB/gB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,0BAG9C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,OAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,iBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,MACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAc4C,IAChCnY,YAAY,aACZZ,SAAU+F,EAAKkQ,mBAEnB/gB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,wBAG1C5D,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,YAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,iBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,WACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAc6C,SAChCpY,YAAY,aACZZ,SAAU+F,EAAKkQ,oBAGvB/gB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,kCAG1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,cAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,qBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,aACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAc8C,WAChCrY,YAAY,aACZZ,SAAU+F,EAAKkQ,mBAEnB/gB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,wCAMlD5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,gBAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,SACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,eACL/C,KAAK,QACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAc+C,aAChCtY,YAAY,aACZZ,SAAU+F,EAAKkQ,iBACfhW,aAAa,UAEjB/K,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,kCAG1C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,sBAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,gBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,qBACL/C,KAAK,QACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAcoC,oBAAsB,GACtD3X,YAAY,aACZZ,SAAU+F,EAAKkQ,iBACfhW,aAAa,UAEjB/K,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,yCAG1C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,SAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,gBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,QACL/C,KAAK,MACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAcpF,MAChCnQ,YAAY,aACZZ,SAAU+F,EAAKkQ,iBACfhW,aAAa,iBAEjB/K,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,iCAI1C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,QAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,SACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,OACL/C,KAAK,OACLtG,MAAOuT,EAAKpU,MAAMwkB,cAAcgD,KAChCvY,YAAY,aACZZ,SAAU+F,EAAKkQ,oBAKvB/gB,IAAAC,cAAC+c,KAAKC,MAAK,CAACrb,UAAQ,EAACsiB,QAAM,EAACpW,MAAM,8BAA8BlK,KAAM,WAAY4E,GAAE,2BAA8BuF,QAAS8C,EAAKpU,MAAMwkB,cAAciC,kBAAmBpY,SAAU,SAAC3I,GAAC,OAAK0O,EAAKsT,oBAAoBtT,EAAKpU,MAAMwkB,cAAciC,sBAAsB,mCAAgCljB,IAAAC,cAAA,WAChSD,IAAAC,cAAC8B,IAAM,CAACH,SAAUiP,EAAKpU,MAAM+M,QAAS5F,KAAK,UAAS,YAEnD,MAEJ5D,IAAAC,cAAA,kBAQ3B,KAEND,IAAAC,cAAA,iBA9gBkB,CAASD,IAAMqB,W,yCCLrDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAQA,IAAIvE,GAAU,CACV,CAAEkQ,MAAO,KAAMzQ,IAAK,iBACpB,CAAEyQ,MAAO,OAAQzQ,IAAK,mBACtB,CAAEyQ,MAAO,cAAezQ,IAAK,QAC7B,CAAEyQ,MAAO,SAAUzQ,IAAK,SAGPkR,GAAa,SAAAlS,GAC9B,SAAAkS,EAAYjS,GAAQ,IAADC,EAhBvB6F,EAAAK,EAAAN,EA2ByD,OAXlC3F,YAAA,KAAA+R,GAhBvBnM,EAiBQ,KAjBRK,EAiBQ8L,EAjBRpM,EAiBQ,CAAM7F,GAjBdmG,EAAAsF,YAAAtF,IAiBQlG,EAjBRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAgDIkf,oBAAmBvY,YAAA5G,KAAA0E,MAAG,SAAAmC,IAAA,IAAAtK,EAAAf,EAAAiR,EAAAC,EAAA1Q,EAAAkmB,EAAAC,EAAA1B,EAAA,OAAAzgB,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAGR,OAFVrJ,EAAKkB,SAAS,CAAE,aAAe,EAAM,SAAW,IAC5CgB,EAAS,CAAE,KAAQlC,EAAKE,MAAM+kB,YAC5B9jB,EAAInB,EAAA0M,EAAArD,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EASxC,OATGL,EAAO1F,EAAA5D,KAEPuJ,EAAU,CACVK,KAAMxQ,EACNb,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExClG,EAAA7B,KAAA,EAAA6B,EAAArD,KAAA,GAGoBwJ,IAAIC,KAAK,aAAc,yBAA0BT,GAAS,KAAD,GACI,GAD1E1Q,EAAI+K,EAAA5D,KACR3H,EAAKD,SAAS,CAAE+L,SAAS,EAAO2G,cAAe,+BAC3B,IAAhBjS,EAAKwB,OAAY,CAAAuJ,EAAArD,KAAA,SACiC,OAAlDlI,EAAKD,SAAS,CAAE2S,UAAW,uBAAuBnH,EAAAzD,OAAA,kBAIhD4e,EAAuB,CACzB,SAAY,EACZ,OAAU,EACV,OAAU,EACV,QAAW,EACX,UAAa,EACb,SAAY,EACZ,OAAU,GAqBdlmB,GAlBAA,EAAOA,EAAKU,KAAI,SAAAF,GACZ,IACQA,EAAEskB,gBAAgBjU,SAAS,kBAC3BrQ,EAAE4lB,gBAAkB,MAGpB5lB,EAAE4lB,gBAAkBrF,OAAOvgB,EAAE4lB,iBAEnC,MAAO7W,GACL/O,EAAE4lB,gBAAkB,UAOxB,OAHA5lB,EAAEnB,KAAOZ,IAAO+B,EAAEnB,MAAMsP,IAAIuX,EAAqB1lB,EAAEkO,aAAc,QAAQnN,OAAO,qBAGzEf,MAECG,MAAK,SAAUC,EAAGC,GAC1B,OAAOA,EAAExB,KAAOuB,EAAEvB,KAAO,EACnBwB,EAAExB,KAAOuB,EAAEvB,MAAQ,EACf,KAGV8mB,EAAenmB,EAAKO,QAAO,SAAAC,GAAC,OAAIA,EAAEqkB,OAASrlB,EAAKjB,MAAM+kB,cAC1D9jB,EAAKD,SAAS,CAAES,KAAMA,EAAMmmB,aAAcA,IAEtC1B,EAAO,CAAC,CACRhF,OAAQ,OACRiF,SAAU,QACX,CACCjF,OAAQ,QACRiF,SAAU,QACX,CACCjF,OAAQ,aACRiF,SAAU,SACX,CACCjF,OAAQ,YACRiF,SAAU,SACX,CACCjF,OAAQ,QACRiF,SAAU,gBAEd,CACIjF,OAAQ,QACRiF,SAAU,SACX,CACCjF,OAAQ,OACRiF,SAAU,QACX,CACCjF,OAAQ,UACRiF,SAAU,mBACX,CACCjF,OAAQ,gBACRiF,SAAU,YACX,CACCjF,OAAQ,gBACRiF,SAAU,OACX,CACCjF,OAAQ,iBACRiF,SAAU,iBAEd,CACIjF,OAAQ,iBACRiF,SAAU,iBACX,CACCjF,OAAQ,SACRiF,SAAU,WAEdllB,EAAKD,SAAS,CAAE8mB,QAAS5B,IAAO1Z,EAAArD,KAAA,iBAAAqD,EAAA7B,KAAA,GAAA6B,EAAAS,GAAAT,EAAA,SAEhC9K,QAAQC,IAAG6K,EAAAS,IACmB,MAA1BT,EAAAS,GAAM1L,SAASuR,OACf7R,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,+CAG3C1S,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,sHAAwH/R,KAAKmR,UAAUvG,EAAAS,GAAM1L,YAE3L,yBAAAiL,EAAA3B,UAAAyB,EAAA,mBAGRxM,EAEDioB,qBAAoB,eAAAxa,EAAAlB,YAAA5G,KAAA0E,MAAG,SAAAqD,EAAM5B,GAAK,OAAAnG,KAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,OAC9BrJ,EAAKkB,SAAS,CAAE+L,SAAS,IAEzBjN,EAAKkB,SAAS,CAAE4mB,aAAc9nB,EAAKkoB,sBAAsBC,mBAAmBC,WAAYC,gBAAgB,IAAQ,WAC5GroB,EAAKsoB,cAAcC,KAAKC,QACxBxoB,EAAKkB,SAAS,CAAE+L,SAAS,OAC3B,wBAAAW,EAAA7C,UAAA2C,OACL,gBAAAJ,GAAA,OAAAG,EAAA5B,MAAA,KAAA0B,YAPmB,GAnJhBvN,EAAKE,MAAQ,CACTuoB,aAAa,EACbxb,SAAS,EACTtL,KAAM,GACNqmB,QAAS,GACTF,aAAc,GACd3B,YAAa,CAAC,OAAQ,QACtBlB,WAAY,QAEhBjlB,EAAKU,aAAeV,EAAKU,aAAaC,KAAIX,GAAOA,EAEpD,OAAAY,YAAAoR,EAAAlS,GAAAe,YAAAmR,EAAA,EAAAlR,IAAA,eAAAC,MAED,SAAa6E,GACT,IAAIoG,EAASpG,EAAEoG,OACf/K,KAAKC,SAAS,CAAE+jB,WAAYjZ,EAAOjL,UACtC,CAAAD,IAAA,oBAAAC,MAAA,eAAA2nB,EAAAnc,YAAA5G,KAAA0E,MAED,SAAAgO,IAAA,IAAAkO,EAAAJ,EAAA,OAAAxgB,KAAAoB,MAAA,SAAA0R,GAAA,cAAAA,EAAA5N,KAAA4N,EAAApP,MAAA,OAII,IAHIkd,EAAcnmB,MAASkQ,IAAI,IAAK,QAAQkW,OACxCL,EAAc,GAEXI,EAAc,MACjBJ,EAAY7iB,KAAKijB,EAAc,IAC/BA,IAEJJ,EAAcA,EAAYxb,UAC1B1J,KAAKC,SAAS,CAAEilB,cAAalB,WAAY7kB,MAAS8C,OAAO,UAAU,wBAAAuV,EAAA1N,UAAAsN,EAAA,UAThD,OAUtB,WAVsB,OAAAqQ,EAAA7c,MAAC,KAAD0B,YAFtB,IAEsB,CAAAzM,IAAA,SAAAC,MAyIvB,WAAU,IAADuT,EAAA,KACL,OAEI7Q,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,wBACHzC,KAAKf,MAAM2T,UAAYpQ,IAAAC,cAACQ,IAAK,CAACkL,QAAQ,WACnC3L,IAAAC,cAAA,cAASzC,KAAKf,MAAM2T,YACb,KACV5S,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACkL,QAAQ,WACvC3L,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACXnQ,IAAAC,cAAA,WACID,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,sBAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,2BACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,eACL+W,GAAG,SACH5S,SAAUtN,KAAKP,aACfK,MAAOE,KAAKf,MAAM+kB,YAEjBhkB,KAAKf,MAAMimB,YAAY9jB,KAAI,SAAAmkB,GACxB,OACI/iB,IAAAC,cAAA,UAAQ5C,IAAK0lB,EAAMzlB,MAAOylB,GAAOA,QAMjD/iB,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/J,SAAUpE,KAAKf,MAAM+M,SAA4C,IAAjChM,KAAKf,MAAM+kB,WAAW9hB,OAAc4S,QAAS9U,KAAK6jB,qBAAqB,oCACjIrhB,IAAAC,cAAA,YAGHzC,KAAKf,MAAMuoB,YAAchlB,IAAAC,cAAA,WACrBzC,KAAKf,MAAMyB,KAAKwB,OAAS,EACtBM,IAAAC,cAAA,WACID,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/J,SAAUpE,KAAKf,MAAM+M,SAAsC,IAA3BhM,KAAKf,MAAMyB,KAAKwB,OAAc4S,QAAS9U,KAAKgnB,sBAAsB,uBAC5HxkB,IAAAC,cAAA,SAAG,sEACHD,IAAAC,cAACilB,WAAO,CAAC1S,IAAK,SAACnQ,GAAC,OAAKwO,EAAKgU,cAAgBxiB,GAAGnE,KAAMV,KAAKf,MAAMyB,KAAMN,QAASA,GAASsC,UAAU,SAASilB,SAAU3nB,KAAKf,MAAM+kB,WAAa,mCAE3IxhB,IAAAC,cAACmlB,KAAU,CACP5S,IAAK,SAACnQ,GAAC,OAAKwO,EAAK4T,sBAAwBpiB,GACzCgjB,cAAe,CACX,CACI7c,GAAI,kBACJ8c,MAAM,IAGdpnB,KAAMV,KAAKf,MAAMyB,KACjBqmB,QAAS/mB,KAAKf,MAAM8nB,QACpBgB,QAAS,EACTC,gBAAiB,IACjBC,gBAAiB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,OAE9CzlB,IAAAC,cAAA,WACID,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/J,SAAUpE,KAAKf,MAAM+M,SAA8C,IAAnChM,KAAKf,MAAM4nB,aAAa3kB,OAAc4S,QAAS9U,KAAKgnB,sBAAsB,uBACpIxkB,IAAAC,cAAA,SAAG,sEACHD,IAAAC,cAACilB,WAAO,CAAC1S,IAAK,SAACnQ,GAAC,OAAKwO,EAAKgU,cAAgBxiB,GAAGnE,KAAMV,KAAKf,MAAMyB,KAAMN,QAASA,GAASsC,UAAU,SAASilB,SAAU3nB,KAAKf,MAAM+kB,WAAa,qCAIjJxhB,IAAAC,cAAA,WAAK,IAAEzC,KAAKf,MAAM+M,QAAU,gCAAkC,sBAC/DxJ,IAAAC,cAAA,WAAK,0CA9NI,CAASD,IAAMqB,W,qBCfjDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAO2B,IACNujB,GAAY,SAAArpB,GAC7B,SAAAqpB,EAAYppB,GAAQ,IAADC,EATvB6F,EAAAK,EAAAN,EA2BqE,OAlB9C3F,YAAA,KAAAkpB,GATvBtjB,EAUQ,KAVRK,EAUQijB,EAVRvjB,EAUQ,CAAM7F,GAVdmG,EAAAsF,YAAAtF,IAUQlG,EAVRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KA8BI8S,oBAAmB,eAAA3T,EAAAwH,YAAA5G,KAAA0E,MAAG,SAAAmC,EAAOvJ,GAAG,IAAAmmB,EAAAjoB,EAAAiR,EAAAC,EAAA1Q,EAAA,OAAAgE,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAGlB,OAFN+f,EAAahpB,IAAO6C,GAAKC,OAAO,cACpClD,EAAKkB,SAAS,CAAEgW,YAAY,IACtB/V,EAAInB,EAAA0M,EAAArD,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EAQxC,OARGL,EAAO1F,EAAA5D,KACPuJ,EAAU,CACVK,KAAM,CAAE,KAAQ0W,GAChB/nB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExClG,EAAA7B,KAAA,EAAA6B,EAAArD,KAAA,GAEoBwJ,IAAIC,KAAK,aAAc,yBAA0BT,GAAS,KAAD,GAGd,OAHxD1Q,EAAI+K,EAAA5D,KACRnH,EAAO3B,EAAKoa,UAAUzY,EAAM,QAC5BA,EAAO3B,EAAKqpB,mBAAmB1nB,GAC/BR,EAAKD,SAAS,CAAEgW,YAAY,EAAOoS,iBAAiB,IAAQ5c,EAAAzD,OAAA,SACrDtH,GAAI,QAII,OAJJ+K,EAAA7B,KAAA,GAAA6B,EAAAS,GAAAT,EAAA,SAIX9K,QAAQC,IAAG6K,EAAAS,IAAIT,EAAAzD,OAAA,SACP,IAAI,KAAF,oBAAAyD,EAAA3B,UAAAyB,EAAA,mBAEjB,gBAAAc,GAAA,OAAAvI,EAAA8G,MAAA,KAAA0B,YA1BkB,GA0BlBvN,EAqDDwB,aAAe,SAACC,GAIZ,OAHKA,EAAS6N,IACV1N,QAAQC,IAAIJ,EAAS8N,YAElB9N,GAtGPzB,EAAKE,MAAQ,CACTuZ,aAAc,GACd8P,sBAAuB,GACvBC,gBAAiB,GACjBxV,YAAa,GACb7B,aAAc,GACdwJ,UAAW,IACX8N,kBAAmB,GACnBC,WAAW,EACX9mB,UAAWoO,IAGfhR,EAAK2pB,aAAe3pB,EAAK2pB,aAAahpB,KAAIX,GAC1CA,EAAKwT,eAAiBxT,EAAKwT,eAAe7S,KAAIX,GAC9CA,EAAK4pB,aAAe5pB,EAAK4pB,aAAajpB,KAAIX,GAC1CA,EAAKoa,UAAYpa,EAAKoa,UAAUzZ,KAAIX,GACpCA,EAAKqpB,mBAAqBrpB,EAAKqpB,mBAAmB1oB,KAAIX,GAAOA,EAChE,OAAAY,YAAAuoB,EAAArpB,GAAAe,YAAAsoB,EAAA,EAAAroB,IAAA,iBAAAC,MAAA,eAAAid,EAAAzR,YAAA5G,KAAA0E,MA6BD,SAAAqD,EAAqB1M,EAAIyM,GAAA,IAAAgc,EAAAtW,EAAAhB,EAAA6B,EAAAuV,EAAAM,EAAAC,EAAAC,EAAAC,EAAA,OAAArkB,KAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,OAoByC,OApB7BoE,EAARkG,SACrB8V,EAAoB,GAEpBtW,EAAYnS,EAAK0V,SACjBvE,EAAe,GACD,IAAdgB,GACAhB,EAAa7O,KAAKlD,IAAOY,GAAMuP,SAAS,EAAG,KAAK8D,UAChDlC,EAAa7O,KAAKlD,IAAOY,GAAMqT,WAEZ,IAAdlB,GACLhB,EAAa7O,KAAKlD,IAAOY,GAAMqT,UAC/BlC,EAAa7O,KAAKlD,IAAOY,GAAMsP,IAAI,EAAG,KAAK+D,WAI3ClC,EAAe,CAACnR,GAEpBC,KAAKC,SAAS,CAAEiR,iBAEZ6B,EAAc7B,EAAa,GAC/BsX,GAAqBrpB,IAAO4T,GAAa9Q,OAAO,MAAQ,MAAM0K,EAAAvE,KAAA,GAE5BpI,KAAKyX,oBAAoB1E,GAAa,KAAD,IAAnEuV,EAAqB3b,EAAA9E,MAEC3F,OAAS,IAE3BomB,EADAA,EAAsB,GAAGtjB,eAAe,QAChBhF,KAAKmZ,UAAUmP,EAAuB,QAEtCtoB,KAAKmZ,UAAUmP,EAAuB,cAE9DM,EAAwB,IAAIvW,IAAIiW,EAAsBrnB,QAAO,SAAAC,GAAC,OAAKA,EAAEkO,eAAchO,KAAI,SAAAF,GAAC,OAAIA,EAAEkO,iBAClGwZ,EAAqBxW,YAAOwW,IACF1mB,OAAS,IAC3B2mB,EAAkBD,EAAsB,GACxCE,EAAY,CAAC,SAAU,UAAW,YAAa,WAAY,UAC3DC,EAAe,CAAC,WAAY,UACd,IAAd7W,EACAlS,KAAKC,SAAS,CAAE+oB,UAAW9X,EAAa6X,EAAa5Z,QAAQ0Z,IAAmBA,oBAGhF7oB,KAAKC,SAAS,CAAE+oB,UAAW9X,EAAa4X,EAAU3Z,QAAQ0Z,IAAmBA,oBAEjF7oB,KAAKC,SAAS,CAAEsoB,gBAAiBD,EAAsBrnB,QAAO,SAAAC,GAAC,OAAKA,EAAEuV,YAG9E+R,GAAqBrpB,IAAO+R,EAAaA,EAAahP,OAAS,IAAID,OAAO,MAE1EjC,KAAKC,SAAS,CACV8S,cAAauV,wBAAuBE,oBAAmBS,6BAA8B,GAAIR,WAAW,IACrG,yBAAA9b,EAAA7C,UAAA2C,EAAA,UAjDa,OAkDnB,SAlDmBM,EAAAqM,GAAA,OAAA2D,EAAAnS,MAAC,KAAD0B,YA7BnB,IA6BmB,CAAAzM,IAAA,YAAAC,MA0DpB,SAAU+c,EAAOhd,GACb,OAAqB,IAAjBgd,EAAM3a,OACC,GAEJ2a,EAAMxb,MAAK,SAAUC,EAAGC,GAC3B,IAAIL,EAAI,EACJuF,EAAI,EAOR,OANInF,EAAE0D,eAAenF,KACjBqB,EAAI4b,qBAAUxb,EAAEzB,KAEhB0B,EAAEyD,eAAenF,KACjB4G,EAAIqW,qBAAUvb,EAAE1B,KAEXqB,EAAIuF,GAAM,EAAMvF,EAAIuF,EAAK,EAAI,OAE7C,CAAA5G,IAAA,qBAAAC,MAED,SAAmBopB,GAEf,IADA,IAAIrH,EAAW,GACN1c,EAAI,EAAGA,EAAI+jB,EAAgBhnB,OAAQiD,IAAK,CAC7C,IAAIgkB,EAAiCD,EAAgB/jB,GAGjDikB,GADW,IADX/K,EAAQ8K,EAA+B9K,QAChB5a,QAAQ,MAAO,IACtB2lB,MAAM,2BAC1B,GAAIA,EAAO,CACP,IAAI/K,EAAQ,IAAM+K,EAAM,GAAK,KAAOA,EAAM,GAAK,IAAMA,EAAM,GAC3DD,EAA+B9K,MAAQA,EAE3C8K,EAA+B9K,MAAQA,EACvCwD,EAASxf,KAAK8mB,GAElB,OAAOtH,IACV,CAAAhiB,IAAA,eAAAC,MAED,SAAa6E,GACT3E,KAAKC,SAAS,CACVuY,aAAc7T,EAAE8gB,cAAc3lB,UAErC,CAAAD,IAAA,eAAAC,MACD,SAAa4a,GACT1a,KAAKC,SAAS,CAAEya,gBACnB,CAAA7a,IAAA,SAAAC,MAED,WAAU,IAADuT,EAAA,KACLC,EAAyFtT,KAAKf,MAAtFyb,EAASpH,EAAToH,UAAWxJ,EAAYoC,EAAZpC,aAAcsX,EAAiBlV,EAAjBkV,kBAAmBF,EAAqBhV,EAArBgV,sBAAuB3mB,EAAS2R,EAAT3R,UAE3E,OACIa,IAAAC,cAAA,OAAKC,UAAU,UAEXF,IAAAC,cAAA,UAAI,4BAA6B,iEAGjCD,IAAAC,cAACqd,KAAS,CAACC,iBAAiB,IAAIrF,UAAWA,GACvClY,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQjd,QAAQ,OAAOkd,SAAS,IAAItL,QAAS,WAAF,OAAQzB,EAAKpT,SAAS,CAAEya,UAAW,QACpG8N,EAAkBtmB,OAAS,EAAIM,IAAAC,cAAA,WAC3B+lB,GACI,eAEbhmB,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACNxL,IAAAC,cAACqR,KAAS,CACNI,eAAgB,EAChBhD,aAAcA,EACdoP,iBAAe,EACfvM,WAAY/T,KAAKuS,iBAErB/P,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMgX,YAAgD,IAAlCjW,KAAKf,MAAM8T,YAAY7Q,OAAcQ,UAAU,aAAaoS,QAAS,WAAF,OAAQzB,EAAKpT,SAAS,CAAEya,UAAW,QAAS1a,KAAKf,MAAMgX,WAAa,mCAAqC,eACtNjW,KAAKf,MAAMwpB,UACRjmB,IAAAC,cAAA,WACK6lB,EAAsBpmB,OAAS,EAAIM,IAAAC,cAAA,WAAK,SAAO6lB,EAAsBpmB,OAAO,aAAkBM,IAAAC,cAAA,WAAK,uBAEtG,QAMlBD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQjd,QAAQ,OAAOkd,SAAS,IAAItL,QAAS,WAAF,OAAQzB,EAAKpT,SAAS,CAAEya,UAAW,QAAQ,UAGjHlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACLrM,EAAUP,KAAI,SAAAW,GACX,GAAIumB,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,KAAUG,OAAS,EACpE,OACIM,IAAAC,cAAA,WACID,IAAAC,cAAA,UAAKV,GACJumB,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,KAAUG,OAAS,EACjEM,IAAAC,cAAA,WACID,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,MAAIC,UAAU,UACVF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,QACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,QACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,SACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,WAG9BF,IAAAC,cAAA,aACK6lB,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,KAAUX,KAAI,SAACF,EAAGsT,GAChE,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,EAAO9R,UAAU,UACtBF,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAE8D,eAAe,QAAU9D,EAAEuV,KAAOvV,EAAEmoB,YAC7D7mB,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,OACzCvhB,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEmd,OACzB7b,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEulB,YAM7CjkB,IAAAC,cAAA,YAIJD,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAS,kDACuCV,EAAS,mBAnOhF,CAASS,IAAMqB,W,cCRhDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAQA,IAAIvE,GAAU,CACV,CAAEkQ,MAAO,KAAMzQ,IAAK,iBACpB,CAAEyQ,MAAO,OAAQzQ,IAAK,mBACtB,CAAEyQ,MAAO,cAAezQ,IAAK,QAC7B,CAAEyQ,MAAO,SAAUzQ,IAAK,SAGPkR,GAAa,SAAAlS,GAC9B,SAAAkS,EAAYjS,GAAQ,IAADC,EAhBvB6F,EAAAK,EAAAN,EA2ByD,OAXlC3F,YAAA,KAAA+R,GAhBvBnM,EAiBQ,KAjBRK,EAiBQ8L,EAjBRpM,EAiBQ,CAAM7F,GAjBdmG,EAAAsF,YAAAtF,IAiBQlG,EAjBRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAiDIkf,oBAAmBvY,YAAA5G,KAAA0E,MAAG,SAAAmC,IAAA,IAAAtK,EAAAf,EAAAiR,EAAAC,EAAA1Q,EAAAmmB,EAAA1B,EAAA,OAAAzgB,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAGR,OAFVrJ,EAAKkB,SAAS,CAAE,aAAe,EAAM,SAAW,IAC5CgB,EAAS,CAAE,KAAQlC,EAAKE,MAAM+kB,YAC5B9jB,EAAInB,EAAA0M,EAAArD,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EASxC,OATGL,EAAO1F,EAAA5D,KAEPuJ,EAAU,CACVK,KAAMxQ,EACNb,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExClG,EAAA7B,KAAA,EAAA6B,EAAArD,KAAA,GAGoBwJ,IAAIC,KAAK,aAAc,yBAA0BT,GAAS,KAAD,GACI,GAD1E1Q,EAAI+K,EAAA5D,KACR3H,EAAKD,SAAS,CAAE+L,SAAS,EAAO2G,cAAe,+BAC3B,IAAhBjS,EAAKwB,OAAY,CAAAuJ,EAAArD,KAAA,SACiC,OAAlDlI,EAAKD,SAAS,CAAE2S,UAAW,uBAAuBnH,EAAAzD,OAAA,kBA6BtDtH,GA1BAA,EAAOA,EAAKU,KAAI,SAAAF,GAwBZ,OAvBIA,EAAEskB,gBAAgBjU,SAAS,kBAC3BrQ,EAAE4lB,gBAAkB,MAGpB5lB,EAAE4lB,gBAAkBrF,OAAOvgB,EAAE4lB,iBAE7B5lB,EAAE8D,eAAe,eACjB9D,EAAEooB,KAAOpoB,EAAEqoB,YAAYnoB,KAAI,SAAAF,GAAC,OAAIA,EAAEsC,SAAOgmB,QAAO,SAACloB,EAAGC,GAAC,OAAKD,EAAIC,IAAG,IAEjEL,EAAEooB,KAAO,uBACT3oB,QAAQC,IAAIM,IAIhBA,EAAEqkB,KAAOpmB,IAAO+B,EAAEgW,WAAWjV,OAAO,QACpCf,EAAEiI,KAAOjI,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MACL,WAAlB7iB,EAAEkO,YACFlO,EAAEnB,KAAOZ,IAAO+B,EAAEnB,MAAMsP,IAAI,EAAG,QAAQpN,OAAO,qBAE9Cf,EAAEnB,KAAOZ,IAAO+B,EAAEnB,MAAMkC,OAAO,qBAEnCf,EAAEuoB,gBAAkBtqB,IAAO+B,EAAEgW,WAAWjV,OAAO,cAC/Cf,EAAEsU,aAAerW,IAAO+B,EAAEnB,MAAMkC,OAAO,cAChCf,MAECG,MAAK,SAAUC,EAAGC,GAC1B,OAAOA,EAAExB,KAAOuB,EAAEvB,KAAO,EACnBwB,EAAExB,KAAOuB,EAAEvB,MAAQ,EACf,KAGV8mB,EAAenmB,EAAKO,QAAO,SAAAC,GAAC,OAAIA,EAAEqkB,OAASrlB,EAAKjB,MAAM+kB,cAC1D9jB,EAAKD,SAAS,CAAES,KAAMA,EAAMmmB,aAAcA,IAEtC1B,EAAO,CAAC,CACRhF,OAAQ,KACRiF,SAAU,iBAEd,CACIjF,OAAQ,mBACRiF,SAAU,mBACX,CACCjF,OAAQ,iBACRiF,SAAU,gBACX,CACCjF,OAAQ,cACRiF,SAAU,QACX,CACCjF,OAAQ,SACRiF,SAAU,SAEdllB,EAAKD,SAAS,CAAE8mB,QAAS5B,IAAO1Z,EAAArD,KAAA,iBAAAqD,EAAA7B,KAAA,GAAA6B,EAAAS,GAAAT,EAAA,SAEhC9K,QAAQC,IAAG6K,EAAAS,IACmB,MAA1BT,EAAAS,GAAM1L,SAASuR,OACf7R,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,+CAG3C1S,EAAKD,SAAS,CAAE+L,SAAS,EAAO4G,UAAW,sHAAwH/R,KAAKmR,UAAUvG,EAAAS,GAAM1L,YAE3L,yBAAAiL,EAAA3B,UAAAyB,EAAA,mBAGRxM,EAEDioB,qBAAoB,eAAAxa,EAAAlB,YAAA5G,KAAA0E,MAAG,SAAAqD,EAAM5B,GAAK,OAAAnG,KAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,OAC9BrJ,EAAKkB,SAAS,CAAE+L,SAAS,IAEzBjN,EAAKkB,SAAS,CAAE4mB,aAAc9nB,EAAKkoB,sBAAsBC,mBAAmBC,WAAYC,gBAAgB,IAAQ,WAC5GroB,EAAKsoB,cAAcC,KAAKC,QACxBxoB,EAAKkB,SAAS,CAAE+L,SAAS,OAC3B,wBAAAW,EAAA7C,UAAA2C,OACL,gBAAAJ,GAAA,OAAAG,EAAA5B,MAAA,KAAA0B,YAPmB,GAxHhBvN,EAAKE,MAAQ,CACTuoB,aAAa,EACbxb,SAAS,EACTtL,KAAM,GACNqmB,QAAS,GACTF,aAAc,GACd3B,YAAa,CAAC,OAAQ,QACtBlB,WAAY,QAEhBjlB,EAAKU,aAAeV,EAAKU,aAAaC,KAAIX,GAAOA,EAEpD,OAAAY,YAAAoR,EAAAlS,GAAAe,YAAAmR,EAAA,EAAAlR,IAAA,eAAAC,MAED,SAAa6E,GACT,IAAIoG,EAASpG,EAAEoG,OACX8b,EAAe7mB,KAAKf,MAAMyB,KAAKO,QAAO,SAAAC,GAAC,OAAIA,EAAEqkB,OAASxa,EAAOjL,SACjEE,KAAKC,SAAS,CAAE4mB,aAAcA,EAAc7C,WAAYjZ,EAAOjL,UAClE,CAAAD,IAAA,oBAAAC,MAAA,eAAA2nB,EAAAnc,YAAA5G,KAAA0E,MAED,SAAAgO,IAAA,IAAAkO,EAAAJ,EAAA,OAAAxgB,KAAAoB,MAAA,SAAA0R,GAAA,cAAAA,EAAA5N,KAAA4N,EAAApP,MAAA,OAII,IAHIkd,EAAcnmB,MAASkQ,IAAI,IAAK,QAAQkW,OACxCL,EAAc,GAEXI,EAAc,MACjBJ,EAAY7iB,KAAKijB,EAAc,IAC/BA,IAEJJ,EAAcA,EAAYxb,UAC1B1J,KAAKC,SAAS,CAAEilB,cAAalB,WAAY7kB,MAAS8C,OAAO,UAAU,wBAAAuV,EAAA1N,UAAAsN,EAAA,UAThD,OAUtB,WAVsB,OAAAqQ,EAAA7c,MAAC,KAAD0B,YAFtB,IAEsB,CAAAzM,IAAA,SAAAC,MA6GvB,WAAU,IAADuT,EAAA,KACL,OAEI7Q,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,wBACHzC,KAAKf,MAAM2T,UAAYpQ,IAAAC,cAACQ,IAAK,CAACkL,QAAQ,WACnC3L,IAAAC,cAAA,cAASzC,KAAKf,MAAM2T,YACb,KACV5S,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACkL,QAAQ,WACvC3L,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACXnQ,IAAAC,cAAA,WACID,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,sBAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,2BACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,eACL+W,GAAG,SACH5S,SAAUtN,KAAKP,aACfK,MAAOE,KAAKf,MAAM+kB,YAEjBhkB,KAAKf,MAAMimB,YAAY9jB,KAAI,SAAAmkB,GACxB,OACI/iB,IAAAC,cAAA,UAAQ5C,IAAK0lB,EAAMzlB,MAAOylB,GAAOA,QAMjD/iB,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/J,SAAUpE,KAAKf,MAAM+M,SAA4C,IAAjChM,KAAKf,MAAM+kB,WAAW9hB,OAAc4S,QAAS9U,KAAK6jB,qBAAqB,gDACjIrhB,IAAAC,cAAA,YAGHzC,KAAKf,MAAMuoB,YAAchlB,IAAAC,cAAA,WACrBzC,KAAKf,MAAM4nB,aAAa3kB,OAAS,EAC9BM,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/J,SAAUpE,KAAKf,MAAM+M,SAA8C,IAAnChM,KAAKf,MAAM4nB,aAAa3kB,OAAc4S,QAAS9U,KAAKgnB,sBAAsB,uBACpIxkB,IAAAC,cAAA,SAAG,sEACHD,IAAAC,cAACilB,WAAO,CAAC1S,IAAK,SAACnQ,GAAC,OAAKwO,EAAKgU,cAAgBxiB,GAAGnE,KAAMV,KAAKf,MAAM4nB,aAAczmB,QAASA,GAASsC,UAAU,SAASilB,SAAU3nB,KAAKf,MAAM+kB,WAAa,mCAEnJxhB,IAAAC,cAACmlB,KAAU,CACP5S,IAAK,SAACnQ,GAAC,OAAKwO,EAAK4T,sBAAwBpiB,GACzCgjB,cAAe,CACX,CACI7c,GAAI,kBACJ8c,MAAM,IAGdpnB,KAAMV,KAAKf,MAAM4nB,aACjBE,QAAS/mB,KAAKf,MAAM8nB,QACpBgB,QAAS,EACTC,gBAAiB,IACjBC,gBAAiB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,OAE9CzlB,IAAAC,cAAA,WACID,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/J,SAAUpE,KAAKf,MAAM+M,SAA8C,IAAnChM,KAAKf,MAAM4nB,aAAa3kB,OAAc4S,QAAS9U,KAAKgnB,sBAAsB,uBACpIxkB,IAAAC,cAAA,SAAG,sEACHD,IAAAC,cAACilB,WAAO,CAAC1S,IAAK,SAACnQ,GAAC,OAAKwO,EAAKgU,cAAgBxiB,GAAGnE,KAAMV,KAAKf,MAAM4nB,aAAczmB,QAASA,GAASsC,UAAU,SAASilB,SAAU3nB,KAAKf,MAAM+kB,WAAa,qCAIzJxhB,IAAAC,cAAA,WAAK,IAAEzC,KAAKf,MAAM+M,QAAU,gCAAkC,sBAC/DxJ,IAAAC,cAAA,WAAK,0CAlMI,CAASD,IAAMqB,W,2ICdA,IAE5BjF,GAAY,SAAAC,GAAA,SAAAD,IAAA,OAAAI,YAAA,KAAAJ,GAAAgR,GAAA,KAAAhR,EAAA0N,WAAA,OAAA3M,YAAAf,EAAAC,GAAAe,YAAAhB,EAAA,EAAAiB,IAAA,SAAAC,MAC7B,WACI,OACI0C,IAAAC,cAAA,OAAKC,UAAU,UAEXF,IAAAC,cAAA,UAAI,YACJD,IAAAC,cAAA,SAAG,oMACHD,IAAAC,cAAA,UAAQkV,MAAM,aAAa9D,MAAM,OAAO6V,OAAO,MAAMC,YAAY,IAAI7mB,IAAI,gIAAgI8mB,iBAAe,IACxNpnB,IAAAC,cAAA,WACID,IAAAC,cAAA,SACID,IAAAC,cAAA,YAAM,mKAEVD,IAAAC,cAAA,SACID,IAAAC,cAAA,YAAM,qGAAwGD,IAAAC,cAAA,YAAMD,IAAAC,cAAA,KAAGmB,KAAK,mBAAmBmH,OAAO,SAAQ,iBAAuBvI,IAAAC,cAAA,YAAM,+BAAkCD,IAAAC,cAAA,YAAMD,IAAAC,cAAA,KAAGmB,KAAK,iHAAiHmH,OAAO,SAAS8e,IAAI,uBAAsB,0BAAgCrnB,IAAAC,cAAA,YAAM,MAEhbD,IAAAC,cAAA,UAAI,4BACJD,IAAAC,cAAA,SACID,IAAAC,cAAA,YAAM,6TAEVD,IAAAC,cAAA,UAAI,uCACJD,IAAAC,cAAA,SAAG,6BACHD,IAAAC,cAAA,UAAI,4CACJD,IAAAC,cAAA,SACID,IAAAC,cAAA,YAAM,6TAGVD,IAAAC,cAACqd,KAAS,KACNtd,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQjd,QAAQ,OAAOkd,SAAS,KAAI,6DAG/D5d,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KAAC,kPAMnBxL,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQjd,QAAQ,OAAOkd,SAAS,KAAI,gEAG/D5d,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KAAC,iMAMnBxL,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQjd,QAAQ,OAAOkd,SAAS,KAAI,iDAG/D5d,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KAAC,gQAMnBxL,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQjd,QAAQ,OAAOkd,SAAS,KAAI,0BAG/D5d,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KAAC,mSAKnBxL,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQjd,QAAQ,OAAOkd,SAAS,KAAI,+CAG/D5d,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,KACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACNxL,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,oBAGJD,IAAAC,cAAA,UAAI,oBAGJD,IAAAC,cAAA,UAAI,8BAGJD,IAAAC,cAAA,UAAI,iBAGJD,IAAAC,cAAA,UAAI,0CAGJD,IAAAC,cAAA,UAAI,2BAGJD,IAAAC,cAAA,UAAI,+CAGJD,IAAAC,cAAA,UAAI,gDAGJD,IAAAC,cAAA,UAAI,iCAGJD,IAAAC,cAAA,UAAI,qFAGJD,IAAAC,cAAA,UAAI,+BAQxBD,IAAAC,cAAA,WAEAD,IAAAC,cAAA,UAAI,kBACJD,IAAAC,cAAA,WAAK,kxBAtHQ,CAASD,IAAMqB,W,2ICD5B,IACCjF,GAAY,SAAAC,GAAA,SAAAD,IAAA,OAAAI,YAAA,KAAAJ,GAAAgR,GAAA,KAAAhR,EAAA0N,WAAA,OAAA3M,YAAAf,EAAAC,GAAAe,YAAAhB,EAAA,EAAAiB,IAAA,SAAAC,MAG7B,WACI,OACI0C,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KAGAb,IAAAC,cAAA,UAAI,aACJD,IAAAC,cAAA,KAAGmB,KAAK,oBAAmB,iBAG/BpB,IAAAC,cAACY,IAAG,KAGAb,IAAAC,cAAA,UAAI,kBACJD,IAAAC,cAAA,KAAGmB,KAAK,oBAAmB,iBAG/BpB,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,UAAI,SACJD,IAAAC,cAAA,KAAGmB,KAAK,wCAAuC,mCAIvDpB,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KAEAb,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,SAAG,mBAGPD,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,UAAI,iBACJD,IAAAC,cAAA,SAAG,iBACHD,IAAAC,cAAA,SAAG,wBAxCM,CAASD,IAAMqB,W,4CCHhDa,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAeA,IAAIvE,GAAU,CACV,CAAEkQ,MAAO,aAAczQ,IAAK,SAC5B,CAAEyQ,MAAO,cAAezQ,IAAK,SAC7B,CAAEyQ,MAAO,YAAazQ,IAAK,SAC3B,CAAEyQ,MAAO,MAAOzQ,IAAK,YACrB,CAAEyQ,MAAO,6BAA8BzQ,IAAK,OAC5C,CAAEyQ,MAAO,gBAAiBzQ,IAAK,gBAC/B,CAAEyQ,MAAO,qBAAsBzQ,IAAK,gBACpC,CAAEyQ,MAAO,eAAgBzQ,IAAK,eAC9B,CAAEyQ,MAAO,kBAAmBzQ,IAAK,kBAGhBjB,GAAY,SAAAC,GAE7B,SAAAD,EAAYE,GAAQ,IAADC,EA7BvB6F,EAAAK,EAAAN,EAqK2E,OAxIpD3F,YAAA,KAAAJ,GA7BvBgG,EA8BQ,KA9BRK,EA8BQrG,EA9BR+F,EA8BQ,CAAM7F,GA9BdmG,EAAAsF,YAAAtF,IA8BQlG,EA9BRyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KA0OImlB,qBAAoBxe,YAAA5G,KAAA0E,MAAG,SAAAmC,IAAA,IAAAid,EAAAzV,EAAAhR,EAAAumB,EAAAzB,EAAArQ,EAAAuT,EAAAC,EAAAC,EAAArB,EAAAC,EAAAE,EAAAmB,EAAA,OAAAxlB,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,OAIuB,OAHtCogB,EAAoB,GAEpBzV,EAAchU,EAAKE,MAAMiS,aAAa,GACtCnP,EAAWhD,EAAKE,MAAMiX,iBAAgBzK,EAAArD,KAAA,EACRrJ,EAAK0Y,oBAAoB1E,GAAa,KAAD,EAAnEuV,EAAqB7c,EAAA5D,KACrBgf,EAAe,GACfrQ,EAAQ,GACRuT,EAAkB,GACE,IAApBhoB,EAASG,SACL8nB,EAAsB,IAAI3X,IAAIiW,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,YAAUX,KAAI,SAAAF,GAAC,OAAIA,EAAEa,aAEtD,KADjCkoB,EAAqB7X,YAAO4X,IACN9nB,SACtBH,EAAWkoB,EAAsB,KAGrCloB,EAASG,OAAS,IAClB2kB,EAAeyB,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,MAGvC,IAAzBgR,EAAY0C,UACZ+S,GAAqBrpB,IAAO4T,GAAa9Q,OAAO,MAC5C4kB,EAAa3kB,OAAS,GAClB0mB,EAAwB,IAAIvW,IAAIwU,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEkO,eAAahO,KAAI,SAAAF,GAAC,OAAIA,EAAEkO,iBAEvFwZ,EAAqBxW,YAAOwW,IACF1mB,OAAS,IAC3B2mB,EAAkBD,EAAsB,IACxCG,EAAe,CAAC,WAAY,WACfxX,SAASsX,IACtBkB,EAAkBlD,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEuV,SACzBvU,OAAS,IACzBsU,EAAQuT,EAAgB3oB,KAAI,SAAUF,GAAK,MAAO,CAAE0V,SAAU1V,EAAEuV,KAAM0T,OAAQjpB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAAOjkB,MAAOoB,MAC9GnC,EAAKkB,SAAS,CAAE+oB,UAAWjqB,EAAKE,MAAMiS,aAAa6X,EAAa5Z,QAAQ0Z,IAAmBA,sBAG/FE,EAAe,CAAC,WAAY,SAAU,SAAU,UAAW,YAAa,WAAY,WACpFgB,EAAkBlD,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEuV,SACzBvU,OAAS,IACzBsU,EAAQuT,EAAgB3oB,KAAI,SAAUF,GAAK,MAAO,CAAE0V,SAAU1V,EAAEuV,KAAM0T,OAAQjpB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAAOjkB,MAAOoB,MAC9GnC,EAAKkB,SAAS,CAAE+oB,UAAW7pB,IAAO4T,GAAa1D,IAAI0Z,EAAa5Z,QAAQ0Z,GAAkB,QAASA,wBAM/G9pB,EAAKkB,SAAS,CAAE+oB,UAAWjW,EAAa8V,gBAAiB,OAG7DL,EAAoBrpB,IAAO4T,GAAa9Q,OAAO,WAC/C8nB,EAAkBlD,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEuV,QACzCoQ,EAAa3kB,OAAS,IAClB0mB,EAAwB,IAAIvW,IAAIwU,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEkO,eAAahO,KAAI,SAAAF,GAAC,OAAIA,EAAEkO,iBAEvFwZ,EAAqBxW,YAAOwW,IACF1mB,OAAS,GAC3B2mB,EAAkBD,EAAsB,GAExCG,EAAe,CAAC,WAAY,SAAU,SAAU,UAAW,YAAa,WAAY,UACxFgB,EAAkBlD,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEuV,QAC7C9V,QAAQC,IAAIioB,GAERkB,EAAgB7nB,OAAS,IACzBsU,EAAQuT,EAAgB3oB,KAAI,SAAUF,GAAK,MAAO,CAAE0V,SAAU1V,EAAEuV,KAAM0T,OAAQjpB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAAOjkB,MAAOoB,MAC9GnC,EAAKkB,SAAS,CAAE+oB,UAAW7pB,IAAO4T,GAAazD,SAAS,EAAG,OAAOD,IAAI0Z,EAAa5Z,QAAQ0Z,GAAkB,QAASA,uBAI1HloB,QAAQC,IAAIzB,IAAO4T,GAAa9Q,OAAO,SACvClD,EAAKkB,SAAQkL,YAAC,CAAE6d,UAAWjW,EAAa8V,gBAAiB1pB,IAAO4T,GAAa9Q,OAAO,QAASumB,qBAAiB,YAAazV,IAC3HhU,EAAKkB,SAAS,CAAEmqB,iBAAkB,CAAE,MAAS,aAAc,MAAS,IAAMC,SAAU,KAChFH,EAAcrD,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,KAAUd,QAAO,SAAAC,GAAC,OAAKA,EAAEuV,QAAMxV,QAAO,SAAAC,GAAC,OAAIA,EAAE8D,eAAe,iBAAe5D,KAAI,SAAAF,GAAC,MAAK,CAAE,SAAYA,EAAEmoB,eAC/Ja,EAAW9X,YAAO,IAAIC,IAAI6X,IAC1BnrB,EAAKkB,SAAS,CAAEqqB,mBAAoBvrB,EAAKoa,UAAU+Q,EAAa,gBAIpEH,EAAgB7nB,OAAS,IACzBsU,EAAQuT,EAAgB3oB,KAAI,SAAUF,GAAK,MAAO,CAAE0V,SAAU1V,EAAEuV,KAAM0T,OAAQjpB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAAOjkB,MAAOoB,QAMtHsV,EAAQzX,EAAKoa,UAAU3C,EAAO,YAC9BzX,EAAKkB,SAAS,CACV8S,cACAuV,wBACAE,oBACAS,6BAA8B,GAC9B/S,iBAAkBnU,EAClBwoB,8BAA+B1D,EAC/B0B,gBAAiB1B,EAAa5lB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,KAAUd,QAAO,SAAAC,GAAC,OAAKA,EAAEuV,QAClFD,UAED,yBAAA/K,EAAA3B,UAAAyB,OACNxM,EAED0Y,oBAAmB,eAAAjL,EAAAlB,YAAA5G,KAAA0E,MAAG,SAAAqD,EAAOzK,GAAG,IAAAmmB,EAAAjoB,EAAAiR,EAAAC,EAAA1Q,EAAA,OAAAgE,KAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,OAGlB,OAFN+f,EAAahpB,IAAO6C,GAAKC,OAAO,cACpClD,EAAKkB,SAAS,CAAEgW,YAAY,IACtB/V,EAAInB,EAAA4N,EAAAvE,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EAQxC,OARGL,EAAOxE,EAAA9E,KACPuJ,EAAU,CACVK,KAAM,CAAE,KAAQ0W,GAChB/nB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAExChF,EAAA/C,KAAA,EAAA+C,EAAAvE,KAAA,GAEoBwJ,IAAIC,KAAK,aAAc,yBAA0BT,GAAS,KAAD,GACd,OADxD1Q,EAAIiM,EAAA9E,KACR3H,EAAKD,SAAS,CAAEgW,YAAY,EAAOoS,iBAAiB,IAAQ1b,EAAA3E,OAAA,SACrDtH,GAAI,QAII,OAJJiM,EAAA/C,KAAA,GAAA+C,EAAAT,GAAAS,EAAA,SAIXhM,QAAQC,IAAG+L,EAAAT,IAAIS,EAAA3E,OAAA,SACP,IAAI,KAAF,oBAAA2E,EAAA7C,UAAA2C,EAAA,mBAEjB,gBAAAJ,GAAA,OAAAG,EAAA5B,MAAA,KAAA0B,YAxBkB,GAwBlBvN,EAmEDioB,qBAAoB,eAAArW,EAAArF,YAAA5G,KAAA0E,MAAG,SAAAgO,EAAMvM,GAAK,IAAAnK,EAAA8T,EAAAhG,EAAA,OAAA9J,KAAAoB,MAAA,SAAA0R,GAAA,cAAAA,EAAA5N,KAAA4N,EAAApP,MAAA,OAK9B,IAJArJ,EAAKkB,SAAS,CAAE+L,SAAS,IAErBtL,EAAO,GAEF8T,EAAQ,EAAGA,EAAQzV,EAAKE,MAAMqpB,sBAAsBpmB,OAAQsS,IAC7DhG,EAAUzP,EAAKE,MAAMqpB,sBAAsB9T,GAC/C7T,QAAQC,IAAI4N,GACZA,EAAQgc,aAAehc,EAAQ+a,YAAYnoB,KAAI,SAAAF,GAAC,OAAIA,EAAEsC,SAAOgmB,QAAO,SAACloB,EAAGC,GAAC,OAAKD,EAAIC,IAAG,GACrFiN,EAAQic,YAAc,cACtBjc,EAAQkc,cAAgBlc,EAAQgc,aAEhC9pB,EAAK2B,KAAKmM,GAMdzP,EAAKkB,SAAS,CAAE4mB,aAAcnmB,EAAM0mB,gBAAgB,IAAQ,WACxDroB,EAAKsoB,cAAcC,KAAKC,QACxBxoB,EAAKkB,SAAS,CAAE+L,SAAS,OAC1B,wBAAAwL,EAAA1N,UAAAsN,OACN,gBAAArK,GAAA,OAAA4D,EAAA/F,MAAA,KAAA0B,YAtBmB,GAwBpBvN,EACA4rB,uBAAyB,SAAAhmB,GACrB,IAAA6e,EAAwB7e,EAAEoG,OAAlB5B,EAAIqa,EAAJra,KAAMrJ,EAAK0jB,EAAL1jB,MACdf,EAAKkB,SAAQkL,YAAC,GACThC,EAAOrJ,KAEff,EA6GD6rB,sBAAwB,SAACC,GACrB,IAAIP,EAAqBvrB,EAAKE,MAAMqrB,mBACpC3pB,QAAQC,IAAI0pB,GACZA,EAAqBA,EAAmBrpB,QAAO,SAAAC,GAAC,OAAIA,EAAE0V,WAAaiU,KAEnE9rB,EAAKkB,SAAS,CAAEqqB,wBACnBvrB,EA8CD+rB,gBAAe,eAAA9Z,EAAA1F,YAAA5G,KAAA0E,MAAG,SAAA6O,EAAOzX,GAAQ,IAAA2E,EAAA4lB,EAAAvc,EAAAwc,EAAAzB,EAAA0B,EAAAC,EAAAzZ,EAAAN,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAsS,GAAA,cAAAA,EAAAxO,KAAAwO,EAAAhQ,MAAA,UAAAgQ,EAAAxO,KAAA,EAEY,UAAjCpJ,EAAS2qB,SAASC,WAAsB,CAAAhT,EAAAhQ,KAAA,QAExC,IADIjD,EAAI,EACDA,EAAI3E,EAAS2qB,SAAS/e,QAAQlK,QACjCvB,QAAQC,IACJJ,EAAS2qB,SAAS/e,QAAQjH,GAAGkmB,KAAO,KACpC7qB,EAAS2qB,SAAS/e,QAAQjH,GAAGnB,MAEjCmB,GAAQ,EACXiT,EAAAhQ,KAAA,gBA+BA,OA3BG2iB,EAAahsB,EAAKE,MAAMqsB,gBAC5BP,GAA4C,GAA9BhsB,EAAKE,MAAMqsB,gBAAuB,gBAAkB,iBAC9D9c,EAAUzP,EAAKE,MAAMssB,sBACrBP,EAAY,CAAE,KAAQD,EAAY,MAAShT,SAAShZ,EAAKE,MAAMusB,iBAC/Dhd,EAAQxJ,eAAe,iBACnBukB,EAAc/a,EAAQ+a,aACdlnB,KAAK2oB,GACjBxc,EAAQ+a,YAAcA,GAEtB/a,EAAQ+a,YAAc,CAACyB,GAE3BjsB,EAAKkB,SAAS,CAAEwrB,SAAU,GAAIzf,SAAS,IACjCif,EAAIlsB,EACNmsB,EAAQ1qB,EAASkrB,WAAWC,UAC5Bla,EAAO,CACPyZ,MAAOA,EACPF,UAAWA,EACXY,YAAa7sB,EAAKE,MAAM2sB,YACxBC,WAAY9sB,EAAKE,MAAM4sB,WACvBC,UAAW/sB,EAAKE,MAAM6sB,UACtBC,OAAQhtB,EAAKE,MAAM8sB,OACnBC,QAASjtB,EAAKE,MAAM+sB,QACpBC,MAAOltB,EAAKE,MAAMgtB,MAClBC,UAAWntB,EAAKE,MAAMitB,UACtB1d,QAASA,EACTuc,WAAYA,EACZoB,YAAaptB,EAAKE,MAAMusB,gBAC3BpT,EAAAhQ,KAAA,GAEmBuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAOiH,EAAAvQ,KACPuJ,EAAU,CACVK,KAAMA,EACNrR,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,4BAA6BT,GAC/C9Q,MAAK,SAAUI,GACM,YAAdA,EAAK0F,KACL6kB,EAAKhrB,SAAS,CACVmsB,gBAAgB,EAChBR,YAAa,GACbC,WAAY,GACZQ,aAAc,GACdC,OAAQ,GACRR,UAAW,GACXC,OAAQ,GACRC,QAAS,GACTC,MAAO,GACPC,UAAW,GACXK,SAAU,GACVjB,gBAAiB,EACjBE,eAAgB,EAChBC,SAAU,GACVzf,SAAS,EACTwgB,oBAAoB,EACpBC,yBAAyB,IAIzB,CAAC,6EAA8E,+EAA+Elb,SAAS7Q,EAAK0L,SAC5KzL,QAAQC,IAAI,kGAIZD,QAAQC,IAAI,iGAAwGF,EAAK0L,YAKnIjC,OAAM,SAAU8F,GACdtP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNyqB,EAAKhrB,SAAS,CAAEwrB,SAAUxb,EAAMzP,SAASE,KAAK0L,UAC9CzL,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,SAE/B6e,EAAKhrB,SAAS,CAAE+L,SAAS,OAC1B,QAAAoM,EAAAhQ,KAAA,iBAAAgQ,EAAAxO,KAAA,GAAAwO,EAAAlM,GAAAkM,EAAA,SAGXzX,QAAQC,IAAGwX,EAAAlM,IAAQ,yBAAAkM,EAAAtO,UAAAmO,EAAA,mBAE1B,gBAAAmB,GAAA,OAAApI,EAAApG,MAAA,KAAA0B,YAzGc,GAyGdvN,EA8OD2tB,OAAS,WACL,OAAQ,CAAC,MAAQ,KAAO,KAAO,KAAO,MAAMjpB,QAAQ,UAAU,SAAA6B,GAAC,OAC1DA,EAAIkW,OAAOmR,gBAAgB,IAAIC,WAAW,IAAI,GAAK,IAAMtnB,EAAI,GAAGsW,SAAS,QAEjF7c,EAED8tB,6BAA+B,WAC3B,IAAIC,EAAYC,SAAStqB,cAAc,YACvCqqB,EAAUE,UAAYjuB,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,MAAM0mB,gBAAcpkB,KAAK,KAC3E2qB,SAAStb,KAAKwb,YAAYH,GAC1BA,EAAUI,SACVH,SAASI,YAAY,QACrBL,EAAUM,UACbruB,EAGDsuB,4BAA8B,WAC1B,IAAIP,EAAYC,SAAStqB,cAAc,YACvCqqB,EAAUE,UAAYjuB,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAIA,EAAEpB,MAAMkF,eAAe,yBAAuB5D,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,MAAM+lB,sBAAoBzjB,KAAK,KAC3I2qB,SAAStb,KAAKwb,YAAYH,GAC1BA,EAAUI,SACVH,SAASI,YAAY,QACrBL,EAAUM,UACbruB,EAEDuuB,+BAAiC,WAC7B,IAAIR,EAAYC,SAAStqB,cAAc,YACvCqqB,EAAUE,UAAYjuB,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAIA,EAAEpB,MAAMkF,eAAe,YAAU5D,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,MAAMue,SAAOjc,KAAK,KACjH2qB,SAAStb,KAAKwb,YAAYH,GAC1BA,EAAUI,SACVH,SAASI,YAAY,QACrBL,EAAUM,UACbruB,EAYDwuB,kBAAoB,SAACvT,EAAgBxF,GACjC,IAAIyF,EAAalb,EAAKE,MAAMuX,MACxBgX,EAAcvT,EAAWzF,GAAO1U,MACpCma,EAAWzF,GAAO2V,OAASnQ,EAAe1J,MAC1C2J,EAAWzF,GAAO1U,MAAQka,EAAela,MACzC,IAAIyoB,EAAkBxpB,EAAKE,MAAMspB,gBAAgBtnB,QAAO,SAAAC,GAAC,OAAIA,EAAEgW,YAAc8C,EAAela,MAAMoX,aAC9FnW,OAAOC,KAAKwsB,GAAatrB,OAAS,GAAKsrB,EAAYtkB,cAAgBnI,QACnEwnB,EAAgBlmB,KAAKmrB,GAEzBzuB,EAAKkB,SAAS,CAAEuW,MAAOyD,EAAYsO,gBAAiBA,KACvDxpB,EAGD0uB,2BAA6B,SAACC,EAAiBzP,EAAMzJ,GACjD7T,QAAQC,IAAI8sB,GACZ,IAAIC,EAAuB5uB,EAAKE,MAAMspB,gBAClCqF,EAAiB,GAErB,GAAuB,MAAnBF,GAAqD,GAA1BA,EAAgBxrB,OAAa,CACxDvB,QAAQC,IAAIqd,GACZ,IAAI4P,EAAmCF,EAAqB1sB,QAAO,SAAAC,GAAC,OAAIA,EAAE8D,eAAe,eAAiB9D,EAAEmoB,YAAcpL,KAAM7c,KAAI,SAAAF,GAAC,OAAIA,EAAEgW,aAC3IvW,QAAQC,IAAIitB,GACZ,IAAK,IAAI1oB,EAAI,EAAGA,EAAIwoB,EAAqBzrB,OAAQiD,IAAK,CAClD,IAAIqJ,EAAUmf,EAAqBxoB,GAC/B0oB,EAAiCtc,SAAS/C,EAAQ0I,mBAC3C1I,EAAQ6a,WAEnBuE,EAAevrB,KAAKmM,QAGrB,CACH,IAAIsf,EAAsCJ,EAAgBzsB,QAAO,SAAAC,GAAC,OAAKA,EAAE8D,eAAe,iBAAe5D,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,MAAMoX,aACxHvW,QAAQC,IAAIktB,GACZ,IAAK,IAAI3oB,EAAI,EAAGA,EAAIwoB,EAAqBzrB,OAAQiD,IAAK,CAC9CqJ,EAAUmf,EAAqBxoB,GAC/B2oB,EAAoCvc,SAAS/C,EAAQ0I,aACrD1I,EAAQ6a,WAAapL,GAEzB2P,EAAevrB,KAAKmM,IAK5BzP,EAAKkB,SAAS,CAAEsoB,gBAAiBqF,KACpC7uB,EAGDwB,aAAe,SAACC,GAIZ,OAHKA,EAAS6N,IACV1N,QAAQC,IAAIJ,EAAS8N,YAElB9N,GACVzB,EA4eDgvB,2BAA0B,eAAAtb,EAAAnH,YAAA5G,KAAA0E,MAAG,SAAAmP,EAAO/D,EAAOgQ,EAAMwJ,EAAUC,GAAQ,IAAApM,EAAAqM,EAAAlf,EAAAyV,EAAA0J,EAAAjuB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAkT,GAAA,cAAAA,EAAApP,KAAAoP,EAAA5Q,MAAA,OA4CrD,OA3CNyZ,EAAW,GACXoM,GACIC,EAAgBnvB,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAC5F,QAAbitB,EACAE,EAAcxsB,SAAQ,SAAU8M,GAC5B,IAAIQ,EAAc,CACd,KAAQR,EAAQ1O,MAAMC,KACtB,UAAayO,EAAQ1O,MAAMoX,WAE3BuN,EAAO,CAAE,KAAQD,EAAM,QAAWxV,GACtC6S,EAASxf,KAAKoiB,OAIdzV,EAAc,CACd,KAAQkf,EAAc1Z,GAAO1U,MAAMC,KACnC,UAAamuB,EAAc1Z,GAAO1U,MAAMoX,WAExCuN,EAAO,CAAE,KAAQD,EAAM,QAAWxV,GACtC6S,EAASxf,KAAKoiB,MAGdyJ,EAAgBnvB,EAAKE,MAAMspB,gBACd,QAAbyF,EACAE,EAAcxsB,SAAQ,SAAU8M,GAC5B,IAAIQ,EAAc,CACd,KAAQR,EAAQzO,KAChB,UAAayO,EAAQ0I,WAErBuN,EAAO,CAAE,KAAQD,EAAM,QAAWxV,GACtC6S,EAASxf,KAAKoiB,OAIdzV,EAAc,CACd,KAAQkf,EAAc1Z,GAAOzU,KAC7B,UAAamuB,EAAc1Z,GAAO0C,WAElCuN,EAAO,CAAE,KAAQD,EAAM,QAAWxV,GACtC6S,EAASxf,KAAKoiB,KAIhBvkB,EAAInB,EAAAia,EAAA5Q,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO6H,EAAAnR,KACPuJ,EAAU,CACVK,KAAMoQ,EACNzhB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KAEpClG,EAAKyS,cAAc,2BAGnBzS,EAAKD,SAAS,CAAEqoB,sBAAuB,KACvC3nB,QAAQC,IAAI,yBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACwB,MAA1ByP,EAAMzP,SAASuR,QACf7R,EAAKD,SAAS,CAAEqoB,sBAAuB,KAE3C3nB,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,wBAAA4M,EAAAlP,UAAAyO,OACV,gBAAAuB,EAAA0C,EAAAC,EAAAC,GAAA,OAAAjK,EAAA7H,MAAA,KAAA0B,YAjFyB,GAiFzBvN,EAEDqvB,yBAAwB,eAAA9U,EAAAhO,YAAA5G,KAAA0E,MAAG,SAAAmQ,EAAOiL,GAAI,IAAAP,EAAApC,EAAA7S,EAAAyV,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA+T,GAAA,cAAAA,EAAAjQ,KAAAiQ,EAAAzR,MAAA,OAUxB,OATN6b,EAAkBllB,EAAKE,MAAMssB,sBAC7B1J,EAAW,GACX7S,EAAc,CACd,KAAQiV,EAAgBlkB,KACxB,UAAakkB,EAAgB/M,WAE7BuN,EAAO,CAAE,KAAQD,EAAM,QAAWxV,GACtC6S,EAASxf,KAAKoiB,GAERvkB,EAAInB,EAAA8a,EAAAzR,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO0I,EAAAhS,KACPuJ,EAAU,CACVK,KAAMoQ,EACNzhB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KAEpClG,EAAKyS,cAAczS,EAAKjB,MAAMyb,YAG9Bxa,EAAKD,SAAS,CAAEqoB,sBAAuB,KACvC3nB,QAAQC,IAAI,yBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACwB,MAA1ByP,EAAMzP,SAASuR,QACf7R,EAAKD,SAAS,CAAEqoB,sBAAuB,KAE3C3nB,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAyN,EAAA/P,UAAAyP,OACV,gBAAAoD,GAAA,OAAArD,EAAA1O,MAAA,KAAA0B,YA/CuB,GA+CvBvN,EAEDsvB,oCAAmC,eAAApR,EAAA3R,YAAA5G,KAAA0E,MAAG,SAAA6S,EAAOuI,GAAI,IAAAP,EAAApC,EAAA7S,EAAAyV,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAwW,GAAA,cAAAA,EAAA1S,KAAA0S,EAAAlU,MAAA,OAUnC,OATN6b,EAAkBllB,EAAKE,MAAMssB,sBAC7B1J,EAAW,GACX7S,EAAc,CACd,KAAQiV,EAAgBlkB,KACxB,UAAakkB,EAAgB/M,WAE7BuN,EAAO,CAAE,KAAQD,EAAM,QAAWxV,GACtC6S,EAASxf,KAAKoiB,GAERvkB,EAAInB,EAAAud,EAAAlU,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAOmL,EAAAzU,KACPuJ,EAAU,CACVK,KAAMoQ,EACNzhB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KAEpClG,EAAKyS,cAAczS,EAAKjB,MAAMyb,YAG9Bxa,EAAKD,SAAS,CAAEqoB,sBAAuB,KACvC3nB,QAAQC,IAAI,yBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACwB,MAA1ByP,EAAMzP,SAASuR,QACf7R,EAAKD,SAAS,CAAEqoB,sBAAuB,KAE3C3nB,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAkQ,EAAAxS,UAAAmS,OACV,gBAAAW,GAAA,OAAAK,EAAArS,MAAA,KAAA0B,YA/CkC,GA+ClCvN,EAGDuvB,sCAAqC,eAAAC,EAAAjjB,YAAA5G,KAAA0E,MAAG,SAAA4T,EAAOxI,EAAOgQ,EAAMgK,GAAgB,IAAA3M,EAAAqM,EAAAlf,EAAAyV,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAoX,GAAA,cAAAA,EAAAtT,KAAAsT,EAAA9U,MAAA,OAe9D,OAdNyZ,EAAW,GACXqM,EAAgB,GAEhBA,EADAM,EACgBzvB,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAASK,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,SAEzGf,EAAKE,MAAMspB,gBAE/BvZ,EAAc,CACd,KAAQkf,EAAc1Z,GAAOzU,KAC7B,UAAamuB,EAAc1Z,GAAO0C,WAElCuN,EAAO,CAAE,KAAQD,EAAM,QAAWxV,GACtC6S,EAASxf,KAAKoiB,GAERvkB,EAAInB,EAAAme,EAAA9U,KAAA,EAEUuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO+L,EAAArV,KACPuJ,EAAU,CACVK,KAAMoQ,EACNzhB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KAEpClG,EAAKyS,cAAc,mBAGnBzS,EAAKD,SAAS,CAAEqoB,sBAAuB,KACvC3nB,QAAQC,IAAI,yBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACwB,MAA1ByP,EAAMzP,SAASuR,QACf7R,EAAKD,SAAS,CAAEqoB,sBAAuB,KAE3C3nB,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAA8Q,EAAApT,UAAAkT,OACV,gBAAAG,EAAAC,EAAAY,GAAA,OAAAuQ,EAAA3jB,MAAA,KAAA0B,YApDoC,GAoDpCvN,EAiODuZ,cAAa,eAAAmW,EAAAnjB,YAAA5G,KAAA0E,MAAG,SAAAwU,EAAM/S,GAAK,IAAA4N,EAAAjC,EAAAkC,EAAAvT,EAAAyR,EAAAlW,EAAA+S,EAAAqF,EAAAC,EAAA,OAAArU,KAAAoB,MAAA,SAAAiY,GAAA,cAAAA,EAAAnU,KAAAmU,EAAA3V,MAAA,OAOvB,IANIqQ,EAAgB1Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAC5CJ,EAAQ,GAERkC,EAAiB3Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAGxCzR,EAAI4S,SAAShZ,EAAKE,MAAMyY,UAAW,IAAKvS,GAAK4S,SAAShZ,EAAKE,MAAM6Y,QAAS,IAAK3S,GAAQ,GAAKpG,EAAKE,MAAMorB,SACxGzT,EAAWqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACpCvB,EAAO,GACP+X,EAAclH,SAASqF,IACnBnD,EAAWiF,EAAevJ,QAAQyH,GACtClW,EAAO3B,EAAKE,MAAMuX,MAAM/C,IAGxB/S,EAAO,CACHkW,SAAUqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACnCkoB,OAAQ,GACRrqB,MAAO,IAGf0W,EAAMnU,KAAK3B,GAIXoY,EAAwBL,EAAcxX,QAAO,SAAA0D,GAAC,OAAK6R,EAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAAUrF,SAAS5M,MACvFoU,EAAmBha,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAI4X,EAAsBvH,SAASrQ,EAAE0V,aACrFJ,EAAM/R,OAAOsU,GAGbha,EAAKkB,SAAS,CAAEuW,MAAOzX,EAAKoa,UAAU3C,EAAM/R,OAAOsU,GAAmB,cAAe,wBAAAgF,EAAAjU,UAAA8T,OACxF,gBAAA8Q,GAAA,OAAAD,EAAA7jB,MAAA,KAAA0B,YA/BY,GA+BZvN,EAED4vB,4BAA2B,eAAAC,EAAAtjB,YAAA5G,KAAA0E,MAAG,SAAA+U,EAAMtT,GAAK,IAAA6N,EAAAlC,EAAArR,EAAAyR,EAAAlW,EAAAoY,EAAAC,EAAA,OAAArU,KAAAoB,MAAA,SAAAsY,GAAA,cAAAA,EAAAxU,KAAAwU,EAAAhW,MAAA,OAMrC,IALyBrJ,EAAKE,MAAMqrB,mBAChC5R,EAAiB3Z,EAAKE,MAAMqrB,mBAAmBlpB,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAE1DJ,EAAQ,GAEHrR,EAAI4S,SAAShZ,EAAKE,MAAMyY,UAAW,IAAKvS,GAAK4S,SAAShZ,EAAKE,MAAM6Y,QAAS,IAAK3S,GAAQ,GAAKpG,EAAKE,MAAMorB,SACxGzT,EAAWqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACpCvB,EAAO,GACNgY,EAAenH,SAASqF,KACzBlW,EAAO,CACHkW,SAAUqC,uBAAY9T,EAAG,CAAElD,OAAQ,MAEvCuU,EAAMnU,KAAK3B,IAOfoY,EAAwBJ,EAAezX,QAAO,SAAA0D,GAAC,OAAK6R,EAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAAUrF,SAAS5M,MACxFoU,EAAmBha,EAAKE,MAAMqrB,mBAAmBrpB,QAAO,SAAAC,GAAC,OAAI4X,EAAsBvH,SAASrQ,EAAE0V,aAClGJ,EAAM/R,OAAOsU,GACbpY,QAAQC,IAAImY,GAEZha,EAAKkB,SAAS,CAAEqqB,mBAAoBvrB,EAAKoa,UAAU3C,EAAM/R,OAAOsU,GAAmB,cAAe,wBAAAqF,EAAAtU,UAAAqU,OACrG,gBAAA0Q,GAAA,OAAAD,EAAAhkB,MAAA,KAAA0B,YA1B0B,GA0B1BvN,EAED+vB,cAAa,eAAAC,EAAAzjB,YAAA5G,KAAA0E,MAAG,SAAA4lB,EAAMnkB,GAAK,IAAAokB,EAAAxW,EAAAC,EAAAhB,EAAAlB,EAAA0Y,EAAA/pB,EAAAyR,EAAAlW,EAAA+S,EAAAqF,EAAAC,EAAAoW,EAAA5G,EAAA6G,EAAAC,EAAAC,EAAA,OAAA5qB,KAAAoB,MAAA,SAAAypB,GAAA,cAAAA,EAAA3lB,KAAA2lB,EAAAnnB,MAAA,OAgBvB,GAfArJ,EAAKkB,SAAS,CAAEwoB,WAAW,IACvBwG,EAAiBlwB,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,MAAiB,KAAbA,EAAEipB,UAAejoB,OAC/DuW,EAAgB1Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAC5C8B,EAAiB3Z,EAAKE,MAAMuX,MAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAE7Cc,EAAY,EACZ3Y,EAAKE,MAAMuX,MAAMtU,OAAS,GAC1BwV,EAAYoF,qBAAU/d,EAAKE,MAAMuX,MAAM,GAAGI,UAC1CjW,QAAQC,IAAIkc,qBAAU/d,EAAKE,MAAMuX,MAAM,GAAGI,YAG1Cc,EAAY,MAGZlB,EAAQ,GACRyY,EAAiBlwB,EAAKE,MAAMspB,gBAAgBrmB,OAG5C,IAFIgtB,EAAanwB,EAAKE,MAAMspB,gBAAgBrmB,OAAS+sB,EAAiB,EACtEtuB,QAAQC,IAAIsuB,GACH/pB,EAAIuS,EAAWvS,GAAKuS,EAA0B,IAAbwX,EAAmB/pB,GAAQ,GAAKpG,EAAKE,MAAMorB,SAC7EzT,EAAWqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACpCvB,EAAO,GACP+X,EAAclH,SAASqF,IACnBnD,EAAWiF,EAAevJ,QAAQyH,GACtClW,EAAO3B,EAAKE,MAAMuX,MAAM/C,GACxByb,KAGAxuB,EAAO,CACHkW,SAAUqC,uBAAY9T,EAAG,CAAElD,OAAQ,KACnCkoB,OAAQ,GACRrqB,MAAO,IAIf0W,EAAMnU,KAAK3B,GAIfoY,EAAwBL,EAAcxX,QAAO,SAAA0D,GAAC,OAAK6R,EAAMpV,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAAUrF,SAAS5M,MACvFoU,EAAmBha,EAAKE,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAI4X,EAAsBvH,SAASrQ,EAAE0V,aACrFJ,EAAQzX,EAAKoa,UAAU3C,EAAM/R,OAAOsU,GAAmB,YAEnDoW,EAAW,GACX5G,EAAkBxpB,EAAKE,MAAMspB,gBAAgB7e,UAExC0lB,EAAI,EAAE,KAAD,QAAEA,EAAI5Y,EAAMtU,QAAM,CAAAqtB,EAAAnnB,KAAA,SACL,GAAnBinB,EAAU7Y,EAAM4Y,GACW,IAA3B7G,EAAgBrmB,OAAY,CAAAqtB,EAAAnnB,KAAA,SACL,OAAvB+mB,EAAS9sB,KAAKgtB,GAASE,EAAAvnB,OAAA,uBAGvBqnB,EAAQlF,SAIJmF,EAAsB/G,EAAgB5e,MAC1C0lB,EAAQlF,OAASmF,EAAoB/f,MAAQ,IAAM+f,EAAoBvL,MACvEsL,EAAQvvB,MAAQwvB,GALhBH,EAAS9sB,KAAKgtB,GAOjB,QAd6BD,IAAGG,EAAAnnB,KAAA,iBAiBrCrJ,EAAKkB,SAAS,CAAEuW,MAAO2Y,IACvBxuB,QAAQC,IAAIquB,GAAgB,yBAAAM,EAAAzlB,UAAAklB,OAC/B,gBAAAQ,GAAA,OAAAT,EAAAnkB,MAAA,KAAA0B,YAjEY,GAiEZvN,EAiMD0wB,gBAAkB,SAAAjb,GACd7T,QAAQC,IAAI4T,GACZ,IAAIkb,EAAkB3wB,EAAKE,MAAMywB,gBACjCA,EAAgBxc,OAAOsB,EAAO,GAC9BzV,EAAKkB,SAAS,CAAEyvB,qBACnB3wB,EAED4wB,oBAAsB,WAClB,IAAID,EAAkB3wB,EAAKE,MAAMywB,gBAC7BE,EAAsB7wB,EAAKE,MAAM2wB,oBACW,IAA5C7uB,OAAOC,KAAK4uB,GAAqB1tB,SAI6C,IAA9EwtB,EAAgBzuB,QAAO,SAAAC,GAAC,OAAIA,EAAEpB,QAAU8vB,EAAoB9vB,SAAOoC,QACnEwtB,EAAgBrtB,KAAKutB,GAGzB7wB,EAAKkB,SAAS,CAAEyvB,kBAAiBE,oBAAqB,OAEzD7wB,EAED8wB,uBAAyB,SAAA/vB,GACrBa,QAAQC,IAAId,EAAOf,EAAKE,MAAMywB,iBAC9B3wB,EAAKkB,SAAS,CAAE2vB,oBAAqB9vB,KACxCf,EAED+wB,wBAA0B,SAACC,EAAYC,GACnC,IAAI9Z,EAAmBnX,EAAKE,MAAMiX,iBAC9BlV,EAAOD,OAAOC,KAAKjC,EAAKE,MAAMgxB,oBAC9BA,EAAqBlxB,EAAKE,MAAMgxB,mBAChCC,EAAiBlvB,EAAKC,QAAO,SAAAlB,GAAI,OAAIkwB,EAAmBlwB,GAAM4B,UAAU4P,SAAS2E,MAErFvV,QAAQC,IAAIsV,EAAkBlV,EAAMivB,GACpC,IAAIE,EAAuBD,EAAe9uB,KAAI,SAAArB,GAAI,OAAIZ,IAAOY,MACxDkB,QAAO,SAAAC,GAAC,OAAI/B,MAASixB,SAASlvB,MAC9BE,KAAI,SAAAF,GAAC,OAAIA,EAAEe,OAAO,iBAClBb,KAAI,SAAAF,GAAO,MAAO,CAAE,MAASA,EAAG,MAASA,MAE9CivB,EAAuBA,EAAqB9uB,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAExB,MAAQyB,EAAEzB,MAAS,GAAK,KAEtFa,QAAQC,IAAIuvB,GACZH,EAASG,IACZpxB,EAEDsxB,YAAc,SAACN,EAAYC,GACvB,IAAI9vB,EAAInB,EACJyW,EAAezW,EAAKE,MAAM8T,YAC9B5S,MAAM,kFAAmF,CACrFC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,OACRoR,KAAM5Q,KAAKmR,UAAU,CAAE,MAASwD,EAAc,SAAY,mBAE3DlV,KAAKJ,EAAKK,cACRD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACd,IAAI4vB,EAAW,GAEfvvB,OAAOC,KAAKN,GAAMgB,SAAQ,SAAA3B,GACtBW,EAAKX,GAAM2B,SAAQ,SAAAuc,GACfqS,EAASjuB,KAAK,CACVvC,MAAO,gBAAuBC,EAAO,IAAMke,EAAKvG,UAChDpH,MAAOnR,IAAOY,GAAMkC,OAAO,OAAS,IAAM9C,IAAOY,GAAMkC,OAAO,cAAgB,OAASgc,EAAKsS,SAC5FxwB,KAAMA,EACNgC,SAAU,eACV0U,KAAMwH,EAAKsS,iBAOvBD,EAAWA,EAASjvB,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAExB,MAAQyB,EAAEzB,MAAS,GAAK,KAC9DkwB,EAASM,OAEpBvxB,EACDyxB,mBAAqB,SAACT,EAAYC,GAC9B,IAAI9vB,EAAInB,EACJyW,EAAezW,EAAKE,MAAM8T,YAC9B5S,MAAM,kFAAmF,CACrFC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,OACRoR,KAAM5Q,KAAKmR,UAAU,CAAE,MAASwD,EAAc,SAAY,cAE3DlV,KAAKJ,EAAKK,cACRD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACd,IAAI4vB,EAAW,GAEfvvB,OAAOC,KAAKN,GAAMgB,SAAQ,SAAA3B,GACtBW,EAAKX,GAAM2B,SAAQ,SAAAuc,GACfqS,EAASjuB,KAAK,CACVvC,MAAO,WAAkBC,EAAO,IAAMke,EAAKvG,UAC3CpH,MAAOnR,IAAOY,GAAMkC,OAAO,OAAS,IAAM9C,IAAOY,GAAMkC,OAAO,cAAgB,OAASgc,EAAKsS,SAC5FxwB,KAAMA,EACNgC,SAAU,UACV0U,KAAMwH,EAAKsS,iBAOvBD,EAAWA,EAASjvB,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAExB,MAAQyB,EAAEzB,MAAS,GAAK,KAC9DkwB,EAASM,OAEpBvxB,EAwcDiX,4BAA2B,eAAAya,EAAAnlB,YAAA5G,KAAA0E,MAAG,SAAAsnB,EAAO3uB,GAAQ,OAAA2C,KAAAoB,MAAA,SAAA6qB,GAAA,cAAAA,EAAA/mB,KAAA+mB,EAAAvoB,MAAA,OACzCrJ,EAAKkB,SAAS,CAAEiW,iBAAkBnU,IAAY,kBAAMhD,EAAK+qB,0BAAwB,wBAAA6G,EAAA7mB,UAAA4mB,OACpF,gBAAAE,GAAA,OAAAH,EAAA7lB,MAAA,KAAA0B,YAF0B,GA9yFvBvN,EAAKE,MAAQ,CACT4xB,eAAgB,GAEhBnW,UAAW,aACX3H,YAAa,GACbsV,iBAAiB,EACjBC,sBAAuB,GACvBiC,8BAA+B,GAC/BrU,iBAAkB,GAClB2S,gBAAiB,GACjBiI,gBAAiB,GACjBvI,gBAAiB,GACjBC,kBAAmB,GAEnBuI,mBAAmB,EAEnB9H,6BAA8B,GAE9BmB,iBAAkB,CAAE,MAAS,aAAc,MAAS,IACpDC,SAAU,GACV3S,UAAW,QACXI,QAAS,QAETkZ,YAAa,GACbxY,aAAc,GACdhC,MAAO,GACPtF,aAAc,GACd+f,iBAAkB,GAElBjI,UAAW,GACXkI,kBAAmB,GAEnBC,kBAAkB,EAClBC,iBAAiB,EACjBC,YAAY,EACZC,kBAAmB,GAEnBC,WAAW,EAEXC,UAAW,MAEXC,mBAAmB,EACnBrF,gBAAgB,EAChBb,sBAAuB,GACvBqE,oBAAqB,GACrB8B,uBAAwB,GACxBhC,gBAAiB,GACjBiC,2BAA4B,EAE5BC,UAAW,GACXC,SAAU,GACVC,YAAa,GACbC,aAAc,GACdC,gBAAiB,GACjBnmB,MAAO,GACPomB,YAAa,GACbC,sBAAuB,GACvB1uB,MAAO,GACPyhB,iBAAkB,GAClBtB,cAAe,GACf5hB,SAAU,GACVowB,0BAA0B,EAC1BC,aAAc,GACdC,gBAAiB,GAEjBpO,gBAAiB,EACjBqO,gBAAiB,GACjBC,gBAAiB,GACjB5N,UAAW,GACX6N,UAAW,GACXC,YAAa,GAEbxC,mBAAoB,GAEpBzD,oBAAoB,EACpBZ,YAAa,GACbC,WAAY,GACZQ,aAAc,GACdC,OAAQ,GACRR,UAAW,GACXC,OAAQ,GACRC,QAAS,GACTC,MAAO,GACPC,UAAW,MACXK,SAAU,GACVjB,gBAAiB,EACjBE,eAAgB,EAChBC,SAAU,GACVgB,yBAAyB,EAEzB9qB,UAAWoO,GACXua,mBAAoB,GACpBoI,kBAAmB,IAAIC,KAE3B5zB,EAAKwT,eAAiBxT,EAAKwT,eAAe7S,KAAIX,GAC9CA,EAAK6zB,sBAAwB7zB,EAAK6zB,sBAAsBlzB,KAAIX,GAC5DA,EAAK8zB,sBAAwB9zB,EAAK8zB,sBAAsBnzB,KAAIX,GAC5DA,EAAK+zB,kBAAoB/zB,EAAK+zB,kBAAkBpzB,KAAIX,GACpDA,EAAKg0B,qBAAuBh0B,EAAKg0B,qBAAqBrzB,KAAIX,GAE1DA,EAAKic,sBAAwBjc,EAAKic,sBAAsBtb,KAAIX,GAC5DA,EAAKkc,wBAA0Blc,EAAKkc,wBAAwBvb,KAAIX,GAEhEA,EAAKi0B,eAAiBj0B,EAAKi0B,eAAetzB,KAAIX,GAC9CA,EAAKk0B,kBAAoBl0B,EAAKk0B,kBAAkBvzB,KAAIX,GACpDA,EAAKm0B,kBAAoBn0B,EAAKm0B,kBAAkBxzB,KAAIX,GACpDA,EAAKo0B,oBAAsBp0B,EAAKo0B,oBAAoBzzB,KAAIX,GAExDA,EAAKq0B,iBAAmBr0B,EAAKq0B,iBAAiB1zB,KAAIX,GAClDA,EAAKs0B,oBAAsBt0B,EAAKs0B,oBAAoB3zB,KAAIX,GACxDA,EAAKoa,UAAYpa,EAAKoa,UAAUzZ,KAAIX,GACpCA,EAAKmc,eAAiBnc,EAAKmc,eAAexb,KAAIX,GAC9CA,EAAKu0B,wBAA0Bv0B,EAAKu0B,wBAAwB5zB,KAAIX,GAEhEA,EAAKw0B,eAAiBx0B,EAAKw0B,eAAe7zB,KAAIX,GAC9CA,EAAKiX,4BAA8BjX,EAAKiX,4BAA4BtW,KAAIX,GACxEA,EAAK+qB,qBAAuB/qB,EAAK+qB,qBAAqBpqB,KAAIX,GAC1DA,EAAKy0B,kBAAoBz0B,EAAKy0B,kBAAkB9zB,KAAIX,GACpDA,EAAK00B,4BAA8B10B,EAAK00B,4BAA4B/zB,KAAIX,GAExEA,EAAK8wB,uBAAyB9wB,EAAK8wB,uBAAuBnwB,KAAIX,GAC9DA,EAAK0wB,gBAAkB1wB,EAAK0wB,gBAAgB/vB,KAAIX,GAChDA,EAAKoc,gBAAkBpc,EAAKoc,gBAAgBzb,KAAIX,GAEhDA,EAAK20B,qBAAuB30B,EAAK20B,qBAAqBh0B,KAAIX,GAE1DA,EAAK+wB,wBAA0B/wB,EAAK+wB,wBAAwBpwB,KAAIX,GAChEA,EAAK40B,wBAA0B50B,EAAK40B,wBAAwBj0B,KAAIX,GAChEA,EAAK60B,wBAA0B70B,EAAK60B,wBAAwBl0B,KAAIX,GAChEA,EAAK80B,oBAAsB90B,EAAK80B,oBAAoBn0B,KAAIX,GACxDA,EAAK+0B,6BAA+B/0B,EAAK+0B,6BAA6Bp0B,KAAIX,GAC1EA,EAAKg1B,6BAA+Bh1B,EAAKg1B,6BAA6Br0B,KAAIX,GAC1EA,EAAKi1B,2BAA6Bj1B,EAAKi1B,2BAA2Bt0B,KAAIX,GACtEA,EAAKk1B,2BAA6Bl1B,EAAKk1B,2BAA2Bv0B,KAAIX,GACtEA,EAAK6rB,sBAAwB7rB,EAAK6rB,sBAAsBlrB,KAAIX,GAAOA,EACtE,OAAAY,YAAAf,EAAAC,GAAAe,YAAAhB,EAAA,EAAAiB,IAAA,oBAAAC,MAED,WACI,IAAMo0B,EAASnH,SAAStqB,cAAc,UAItCyxB,EAAOpxB,IAAM,wCACboxB,EAAO1qB,OAAQ,EACfujB,SAAStb,KAAKwb,YAAYiH,GAG1B,IAAMh0B,EAAOF,KAEbG,MAAM,0DAA2D,CAC7DC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACdA,EAAOG,KAAKC,MAAMJ,GAClBR,EAAKD,SAAS,CAAEgwB,mBAAoBvvB,OAI5CP,MAAM,6DAA8D,CAChEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACdR,EAAKD,SAAS,CAAEglB,iBAAkBvkB,SAI7C,CAAAb,IAAA,iBAAAC,MAAA,eAAAid,EAAAzR,YAAA5G,KAAA0E,MAED,SAAA+qB,EAAqBp0B,EAAIq0B,GAAA,IAAAliB,EAAAhB,EAAA+f,EAAA5d,EAAA,YAAA3O,KAAAoB,MAAA,SAAAuuB,GAAA,cAAAA,EAAAzqB,KAAAyqB,EAAAjsB,MAAA,OAAYgsB,EAAR1hB,SACrBR,EAAYnS,EAAK0V,SACjBvE,EAAe,GACf+f,EAAmB,GACL,IAAd/e,GACAhB,EAAa7O,KAAKlD,IAAOY,GAAMuP,SAAS,EAAG,KAAK8D,UAChDlC,EAAa7O,KAAKlD,IAAOY,GAAMqT,WAEZ,IAAdlB,GACLhB,EAAa7O,KAAKlD,IAAOY,GAAMqT,UAC/BlC,EAAa7O,KAAKlD,IAAOY,GAAMsP,IAAI,EAAG,KAAK+D,YAG3C6d,EAAiB5uB,KAAKlD,IAAOY,GAAMqT,UACnClC,EAAa7O,KAAKlD,IAAOY,GAAMqT,WAEnC6d,EAAmBA,EAAiBxsB,OAAOyM,GAE3ClR,KAAKC,SAAS,CAAEgxB,mBAAkB/f,eAAcgF,iBAAkB,GAAI2S,gBAAiB,KAAM,kBAAMxV,EAAKyW,0BAAwB,wBAAAuK,EAAAvqB,UAAAqqB,EAAA,UAlBhH,OAmBnB,SAnBmBG,EAAAC,GAAA,OAAAxX,EAAAnS,MAAC,KAAD0B,YAFnB,IAEmB,CAAAzM,IAAA,wBAAAC,MAiJpB,SAAsB+K,GAClB,IAAIyd,EAAwBtoB,KAAKf,MAAMqpB,sBACnCQ,EAAY,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAEvDiB,EAAkB/pB,KAAKf,MAAMqpB,sBAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEuV,QACrE,GAAIsT,EAAgB7nB,OAAS,EAAG,CAC5B,IAAIsU,EAAQuT,EAAgB3oB,KAAI,SAAUF,GAAK,MAAO,CAAE0V,SAAU1V,EAAEuV,KAAM0T,OAAQjpB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAAOjkB,MAAOoB,MAClHlB,KAAKC,SAAS,CAAEuW,MAAOxW,KAAKmZ,UAAU3C,EAAO,cAEjD,IAAItE,EAAYlS,KAAKf,MAAM8T,YAAY0C,SACvC9U,QAAQC,IAAIiK,EAAME,OAAOC,IACzB,IAAIge,EAAY,GACZH,EAAkB,GAEtB,GAAkB,IAAd3W,EAAiB,CACjB,IAAIhD,EAAY4Z,EAAU3Z,QAAQtE,EAAME,OAAOC,IAC/Cge,EAAY7pB,IAAOa,KAAKf,MAAMiS,aAAa,IAAI7B,IAAIH,EAAW,QAC9D2Z,EAAkB1pB,IAAO6pB,GAAW/mB,OAAO,QAE3CjC,KAAKC,SAAS,CAAE+oB,YAAWtO,UAAW,eAAgBmO,yBAGtDG,EAAYhpB,KAAKf,MAAMgyB,iBAAiBnI,EAAU3Z,QAAQtE,EAAME,OAAOC,KACvE6d,EAAkB1pB,IAAO6pB,GAAW/mB,OAAO,QAC3CjC,KAAKC,SAAS,CAAE+oB,YAAWtO,UAAW,eAAgBmO,oBAE1D7oB,KAAKC,SAAS,CAAEsoB,gBAAiBD,EAAsBrnB,QAAO,SAAAC,GAAC,OAAKA,EAAEuV,QAAOgS,WAAW,MAE3F,CAAA5oB,IAAA,wBAAAC,MAED,WACI,GAA0C,IAAtCE,KAAKf,MAAM4pB,gBAAgB3mB,OAAc,CACzC,IAAIomB,EAAwBtoB,KAAKf,MAAMqpB,sBACnCQ,EAAY,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAEvDiB,EAAkB/pB,KAAKf,MAAMqpB,sBAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEuV,QACrE,GAAIsT,EAAgB7nB,OAAS,EAAG,CAC5B,IAAIsU,EAAQuT,EAAgB3oB,KAAI,SAAUF,GAAK,MAAO,CAAE0V,SAAU1V,EAAEuV,KAAM0T,OAAQjpB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAAOjkB,MAAOoB,MAClHlB,KAAKC,SAAS,CAAEuW,MAAOxW,KAAKmZ,UAAU3C,EAAO,cAEjD,GAA4C,oBAAjCxW,KAAKf,MAAM8T,YAAY0C,OAC9B,OAEJ,IACIuT,EAAY,GACZH,EAAkB,GAEtB,GAAkB,IAJF7oB,KAAKf,MAAM8T,YAAY0C,SAIlB,CACjB,IAAIvG,EAAY4Z,EAAU3Z,QAAQ,OAClC6Z,EAAY7pB,IAAOa,KAAKf,MAAMiS,aAAa,IAAI7B,IAAIH,EAAW,QAC9D2Z,EAAkB1pB,IAAO6pB,GAAW/mB,OAAO,QAE3CjC,KAAKC,SAAS,CAAE+oB,YAAWtO,UAAW,eAAgBmO,yBAGtDG,EAAYhpB,KAAKf,MAAMgyB,iBAAiBnI,EAAU3Z,QAAQ,QAC1D0Z,EAAkB1pB,IAAO6pB,GAAW/mB,OAAO,QAC3CjC,KAAKC,SAAS,CAAE+oB,YAAWtO,UAAW,eAAgBmO,oBAE1D7oB,KAAKC,SAAS,CAAEsoB,gBAAiBD,EAAsBrnB,QAAO,SAAAC,GAAC,OAAKA,EAAEuV,QAAOgS,WAAW,IAE5FzoB,KAAKC,SAAS,CAAEya,UAAW,mBAC9B,CAAA7a,IAAA,oBAAAC,MAmCD,SAAkBb,EAAOu1B,GACrBx0B,KAAKC,SAAS,CAAEsxB,UAAWtyB,EAAOuyB,UAAWgD,MAChD,CAAA30B,IAAA,0BAAAC,MAED,SAAwBb,EAAOuV,GAC3B,GAAIvV,EAAO,CACP,IAAIssB,EAAwBvrB,KAAKf,MAAMsrB,8BAA8B/V,GACjEmd,EAA6Bnd,EACjCxU,KAAKC,SAAS,CAAEsrB,wBAAuBmE,gBAAiB,GAAIE,oBAAqB,GAAI+B,+BAGzF3xB,KAAKC,SAAS,CAAEwxB,kBAAmBxyB,MACtC,CAAAY,IAAA,uBAAAC,MAED,SAAqB6E,GACjB3E,KAAKC,SAAS,CACViyB,sBAAuBvtB,EAAE8gB,cAAcza,OAE9C,CAAAnL,IAAA,mBAAAC,MAED,SAAiB+K,GAAQ,IAAD2T,EAAA,KACdiW,EAAO5pB,EAAM4a,cAKnB,GAJA5a,EAAMa,iBACNb,EAAM6Z,kBAEN1kB,KAAKC,SAAS,CAAE8wB,mBAAmB,KACN,IAAzB0D,EAAKC,gBAAT,CAIA,IAAInL,EAAc,GAEdoL,EAAgB30B,KAAKf,MAAMgmB,iBAAiBhkB,QAAO,SAAAC,GAAC,OAAIA,EAAEqC,UAAYib,EAAKvf,MAAMizB,yBAAuB,GAC5G3I,EAAYlnB,KACR,CACI,KAAQsyB,EAAcpxB,QACtB,MAASwU,SAAS4c,EAAcnxB,SAIpCxD,KAAKf,MAAMkzB,0BACX5I,EAAYlnB,KACR,CACI,KAAQ,yBACR,MAAS,KAMrB,IAAI8nB,EAAS,CACTpqB,KAAMZ,IAAOa,KAAKf,MAAMiS,aAAa,IAAIjP,OAAO,cAChDiV,UAAW,IAAI1E,KAAKA,KAAKoiB,OAAOnzB,cAChCozB,cAAe,eACfC,cAAe,eAEfvlB,MAAOvP,KAAKf,MAAM2yB,UAClB7N,MAAO/jB,KAAKf,MAAM4yB,SAElBxL,IAAKlnB,IAAOa,KAAKf,MAAM6yB,aAAa7vB,OAAO,cAC3CqkB,SAAUtmB,KAAKf,MAAM8yB,aACrBxL,WAAYpnB,IAAOa,KAAKf,MAAM+yB,iBAAiB/vB,OAAO,cACtDoc,MAAOre,KAAKf,MAAMgzB,YAElB7iB,YAAapP,KAAKf,MAAM4pB,gBACxBrD,gBAAiBxlB,KAAKf,MAAMizB,sBAC5B3I,YAAaA,EAEb/C,aAAcxmB,KAAKf,MAAM4M,MACzB+Y,iBAAkB,WAClBG,uBAAwB,WACxBD,2BAA4B,iBAC5BD,yBAA0B,WAC1BlB,cAAe3jB,KAAKf,MAAM0kB,eAAiB,UAE3C5hB,SAAU/B,KAAKf,MAAMiX,iBACrBwP,kBAAmB1lB,KAAKf,MAAMkzB,yBAE9B4C,cAAe,IAInBh0B,OAAOC,KAAKmpB,GAAQzoB,SAAQ,SAAC7B,GAAG,OAAqB,MAAfsqB,EAAOtqB,IAAuC,IAAvBsqB,EAAOtqB,GAAKqC,gBAAwBioB,EAAOtqB,MAGxG,IAAI4kB,EAAO,CAAE,KAAQ,sBAAuB,QAAW0F,GACnDlB,EAA+BjpB,KAAKf,MAAMgqB,6BAC9CA,EAA6B5mB,KAAKoiB,GAClCzkB,KAAKC,SAAS,CAAEgpB,iCAEhBjpB,KAAKC,SAAS,CACV2xB,UAAW,GACXC,SAAU,GACVC,YAAa,GACbC,aAAc,GACdC,gBAAiB,GACjBnmB,MAAO,GACPomB,YAAa,GACbC,sBAAuB,GACvBvO,cAAe,GACf8E,WAAW,EACX/C,mBAAmB,EACnBqL,mBAAmB,OAE1B,CAAAlxB,IAAA,sBAAAC,MAWD,SAAoB+K,GAChB,IAAM4pB,EAAO5pB,EAAM4a,cAKnB,GAJA5a,EAAMa,iBACNb,EAAM6Z,kBAEN1kB,KAAKC,SAAS,CAAEusB,oBAAoB,KACP,IAAzBiI,EAAKC,gBAOT,GAJA10B,KAAKC,SAAS,CAAE+L,SAAS,IAIrBhM,KAAKf,MAAMwtB,wBACXzsB,KAAK0zB,2BADT,CAMA,IAcIsB,EAAa,CACbC,SAfW,CACXC,UAAW,mEACXC,WAAY,aAcZC,SAXW,CACXC,WAAYr1B,KAAKf,MAAMstB,SAAS9oB,QAAQ,MAAO,IAC/C6xB,MAAOt1B,KAAKf,MAAMotB,aAAakJ,UAAU,EAAG,GAC5ChQ,KAAMvlB,KAAKf,MAAMotB,aAAakJ,UAAUv1B,KAAKf,MAAMotB,aAAanqB,OAAS,EAAGlC,KAAKf,MAAMotB,aAAanqB,QACpGszB,SAAUx1B,KAAKf,MAAMqtB,OACrBmJ,IAAKz1B,KAAKf,MAAMgtB,MAChByJ,SAAU11B,KAAKf,MAAM2sB,YAAc,IAAM5rB,KAAKf,MAAM4sB,aAOxD,IACI8J,OAAOC,OAAOC,aAAab,EAAYh1B,KAAK8qB,iBAC9C,MAAO7a,GACLtP,QAAQC,IAAIqP,OAEnB,CAAApQ,IAAA,iBAAAC,MAAA,eAAAg2B,EAAAxqB,YAAA5G,KAAA0E,MA8GD,SAAA2sB,IAAA,IAAAC,EAAA91B,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAmwB,GAAA,cAAAA,EAAArsB,KAAAqsB,EAAA7tB,MAAA,OAGqB,OAFb4tB,EAAch2B,KAAKf,MAAMgqB,6BAC7BjpB,KAAKC,SAAS,CAAE+L,SAAS,IACnB9L,EAAOF,KAAIi2B,EAAA7tB,KAAA,EAEGuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO8kB,EAAApuB,KACPuJ,EAAU,CACVK,KAAMukB,EACN51B,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,MACpClG,EAAKD,SAAS,CAAEgpB,6BAA8B,GAAIjd,SAAS,IAC3D9L,EAAKyS,cAAczS,EAAKjB,MAAMyb,YAI9B/Z,QAAQC,IAAI,wBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,SAE/BlM,EAAKD,SAAS,CAAE+L,SAAS,OAC1B,wBAAAiqB,EAAAnsB,UAAAisB,EAAA,UArCS,OAsCnB,WAtCmB,OAAAD,EAAAlrB,MAAC,KAAD0B,YA9GnB,IA8GmB,CAAAzM,IAAA,oBAAAC,MAAA,eAAAo2B,EAAA5qB,YAAA5G,KAAA0E,MAwCpB,SAAA+sB,IAAA,IAAA3nB,EAAAiW,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAswB,GAAA,cAAAA,EAAAxsB,KAAAwsB,EAAAhuB,MAAA,OAG+E,GAF3EpI,KAAKC,SAAS,CAAE+L,SAAS,EAAM2Y,UAAW,KAEtCnW,EAAUxO,KAAKf,MAAMqpB,sBAAsBtoB,KAAKf,MAAMglB,iBAEtDjkB,KAAKf,MAAMszB,gBAAgBjiB,QAAU9B,EAAQzO,KAAI,CAAAq2B,EAAAhuB,KAAA,QACoC,OAArFpI,KAAKC,SAAS,CAAE0kB,UAAW,uCAAwC3Y,SAAS,IAASoqB,EAAApuB,OAAA,oBAGpF7I,IAAOa,KAAKf,MAAMszB,gBAAgBjiB,MAAO,cAAc,GAAM6T,UAAU,CAADiS,EAAAhuB,KAAA,QACH,OAApEpI,KAAKC,SAAS,CAAE0kB,UAAW,sBAAuB3Y,SAAS,IAASoqB,EAAApuB,OAAA,iBA4BvD,MAxBgB,aAA7BwG,EAAQoW,mBACRpW,EAAQoW,iBAAmB,YAEU,aAArCpW,EAAQqW,2BACRrW,EAAQqW,yBAA2B,YAEI,mBAAvCrW,EAAQsW,6BACRtW,EAAQsW,2BAA6B,kBAEF,aAAnCtW,EAAQuW,yBACRvW,EAAQuW,uBAAyB,YAEjCvW,EAAQxJ,eAAe,yBAChBwJ,EAAQwW,cAEfxW,EAAQxJ,eAAe,gBAChBwJ,EAAQiI,KAEfjI,EAAQxJ,eAAe,uBAChBwJ,EAAQY,YAGfqV,EAAO,CAAE,KAAQ,cAAe,QAAWjW,EAAS,QAAWxO,KAAKf,MAAMszB,gBAAgBjiB,MAAO,QAAW9B,EAAQzO,aACjHyO,EAAQzO,KACTG,EAAOF,KAAIo2B,EAAAhuB,KAAA,GAEGuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAOilB,EAAAvuB,KACPuJ,EAAU,CACVK,KAAM,CAACgT,GAEPrkB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,MAGpClG,EAAKyS,cAAczS,EAAKjB,MAAMyb,WAC9Bxa,EAAKD,SAAS,CAAE+L,SAAS,EAAOulB,WAAW,EAAOC,UAAW,GAAIe,gBAAiB,MAIlF5xB,QAAQC,IAAI,wBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAgqB,EAAAtsB,UAAAqsB,EAAA,UA1EY,OA4EtB,WA5EsB,OAAAD,EAAAtrB,MAAC,KAAD0B,YAxCH,IAwCG,CAAAzM,IAAA,oBAAAC,MAAA,eAAAu2B,EAAA/qB,YAAA5G,KAAA0E,MA6EvB,SAAAktB,IAAA,IAAA9nB,EAAA+nB,EAAA9R,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA0wB,GAAA,cAAAA,EAAA5sB,KAAA4sB,EAAApuB,MAAA,OAIyB,GAHrBpI,KAAKC,SAAS,CAAE+L,SAAS,EAAMwmB,UAAW,KAEtChkB,EAAUxO,KAAKf,MAAMqpB,sBAAsBtoB,KAAKf,MAAMglB,iBAC1DtjB,QAAQC,IAAI4N,GAERxO,KAAKf,MAAMqzB,gBAAgBhiB,QAAU9B,EAAQzO,KAAI,CAAAy2B,EAAApuB,KAAA,QACoC,OAArFpI,KAAKC,SAAS,CAAEuyB,UAAW,uCAAwCxmB,SAAS,IAASwqB,EAAAxuB,OAAA,oBAGpF7I,IAAOa,KAAKf,MAAMqzB,gBAAgBhiB,MAAO,cAAc,GAAM6T,UAAU,CAADqS,EAAApuB,KAAA,SACH,OAApEpI,KAAKC,SAAS,CAAEuyB,UAAW,sBAAuBxmB,SAAS,IAASwqB,EAAAxuB,OAAA,kBAIS,GAC/D,KADVuuB,EAAMp3B,IAAOa,KAAKf,MAAMqzB,gBAAgBhiB,MAAO,cAAc,GAAMtO,QAC5C,IAARu0B,EAAU,CAADC,EAAApuB,KAAA,SAC4D,OAApFpI,KAAKC,SAAS,CAAEuyB,UAAW,sCAAuCxmB,SAAS,IAASwqB,EAAAxuB,OAAA,kBAO3E,OAFbyc,EAAO,CAAE,KAAQ,cAAe,QAAWjW,EAAS,QAAWxO,KAAKf,MAAMqzB,gBAAgBhiB,MAAO,QAAW9B,EAAQzO,aACjHyO,EAAQzO,KACTG,EAAOF,KAAIw2B,EAAApuB,KAAA,GAEGuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAOqlB,EAAA3uB,KACPuJ,EAAU,CACVK,KAAM,CAACgT,GAEPrkB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,MAGpClG,EAAKyS,cAAczS,EAAKjB,MAAMyb,WAC9Bxa,EAAKD,SAAS,CAAE+L,SAAS,EAAOulB,WAAW,EAAOC,UAAW,GAAIc,gBAAiB,MAGlF3xB,QAAQC,IAAI,wBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAoqB,EAAA1sB,UAAAwsB,EAAA,UA3DY,OA6DtB,WA7DsB,OAAAD,EAAAzrB,MAAC,KAAD0B,YA7EA,IA6EA,CAAAzM,IAAA,sBAAAC,MAAA,eAAA22B,EAAAnrB,YAAA5G,KAAA0E,MA8DvB,SAAAstB,IAAA,IAAAloB,EAAAiW,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA6wB,GAAA,cAAAA,EAAA/sB,KAAA+sB,EAAAvuB,MAAA,OAMqB,OALjBpI,KAAKC,SAAS,CAAE+L,SAAS,EAAM2Y,UAAW,KAEtCnW,EAAUxO,KAAKf,MAAMqpB,sBAAsBtoB,KAAKf,MAAMglB,iBAEtDQ,EAAO,CAAE,KAAQ,gBAAiB,QAAWjW,GAC3CtO,EAAOF,KAAI22B,EAAAvuB,KAAA,EAEGuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAOwlB,EAAA9uB,KACPuJ,EAAU,CACVK,KAAM,CAACgT,GAEPrkB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,MACpClG,EAAKyS,cAAczS,EAAKjB,MAAMyb,WAC9Bxa,EAAKD,SAAS,CAAE+L,SAAS,EAAOulB,WAAW,EAAOC,UAAW,MAG7D7wB,QAAQC,IAAI,wBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,wBAAAuqB,EAAA7sB,UAAA4sB,EAAA,UAvCc,OAyCxB,WAzCwB,OAAAD,EAAA7rB,MAAC,KAAD0B,YA9DF,IA8DE,CAAAzM,IAAA,2BAAAC,MA2CzB,SAAyBY,GACrBV,KAAKC,SAAS,CAAEoqB,SAAUtS,SAASrX,EAAKZ,OAAQsqB,iBAAkB1pB,MACrE,CAAAb,IAAA,0BAAAC,MAGD,SAAwBY,GACpBV,KAAKC,SAAS,CAAEsyB,gBAAiB7xB,MACpC,CAAAb,IAAA,0BAAAC,MAED,SAAwBY,GACpBV,KAAKC,SAAS,CAAEqyB,gBAAiB5xB,MACpC,CAAAb,IAAA,YAAAC,MAoCD,SAAU+c,EAAOhd,GACb,OAAqB,IAAjBgd,EAAM3a,OACC,GAEJ2a,EAAMxb,MAAK,SAAUC,EAAGC,GAC3B,IAAIL,EAAI4b,qBAAUxb,EAAEzB,IAAW4G,EAAIqW,qBAAUvb,EAAE1B,IAC/C,OAASqB,EAAIuF,GAAM,EAAMvF,EAAIuF,EAAK,EAAI,OAE7C,CAAA5G,IAAA,YAAAC,MAAA,eAAA82B,EAAAtrB,YAAA5G,KAAA0E,MAwDD,SAAAytB,EAAgBC,GAAM,IAAA52B,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAixB,GAAA,cAAAA,EAAAntB,KAAAmtB,EAAA3uB,MAAA,OAEe,OAD3BlI,EAAOF,MACRC,SAAS,CAAE+L,SAAS,IAAQ+qB,EAAA3uB,KAAA,EACbuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO4lB,EAAAlvB,KACPuJ,EAAU,CACVK,KAAMqlB,EACN12B,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,aAAcT,GAChC9Q,MAAK,SAAUI,GACZR,EAAKyS,cAAczS,EAAKjB,MAAMyb,cAC/BvQ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACFyP,EAAMzP,SAASuR,OAInBpR,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,wBAAA2qB,EAAAjtB,UAAA+sB,EAAA,UA/BI,OAgCd,SAhCcG,GAAA,OAAAJ,EAAAhsB,MAAC,KAAD0B,YAxDd,IAwDc,CAAAzM,IAAA,sBAAAC,MAAA,eAAAm3B,EAAA3rB,YAAA5G,KAAA0E,MAkCf,SAAA8tB,EAA0BC,GAAc,IAAAC,EAAAC,EAAAC,EAAAR,EAAAS,EAAAC,EAAAhjB,EAAAijB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAp3B,EAAAq3B,EAAA,OAAArzB,KAAAoB,MAAA,SAAAkyB,GAAA,cAAAA,EAAApuB,KAAAouB,EAAA5vB,MAAA,OAChCgvB,EAAkBD,EACQ,IAA1BA,EAAej1B,SACfk1B,EAAkBp3B,KAAKf,MAAMsrB,8BAA8BtpB,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,GAAGgB,OAAS,GAAKhB,EAAEgI,cAAgBnI,UAASE,QAAO,SAAAC,GAAC,MAA2B,aAAvBA,EAAE0jB,qBAE9IyS,EAAkB,GAClBC,EAAkBz2B,KAAKmR,UACvB,CACI,UAAa,YACb,SAAY,WACZ,QAAW,cACX,aAAgB,gBAChB,UAAa,GACb,QAAW,GACX,kBAAqB,uBAGzB8kB,EAAS,CACTmB,OAAQ,wDACRC,SAAU,gBACVC,oBAAqBb,EACrBc,iBAAkB,CACd,iCAEJC,aAAc,IAGdd,EAAuBv3B,KAAKf,MAAMgyB,iBAAiB/uB,OACnDs1B,EAAW,UACc,IAAzBD,IACAC,EAAW,WAENhjB,EAAQ,EAAE,KAAD,OAAEA,EAAQ4iB,EAAgBl1B,QAAM,CAAA81B,EAAA5vB,KAAA,UACxCqvB,EAAWL,EAAgB5iB,IACpBzS,SAASwP,SAAS,cAC3BimB,EAAW,WAGXE,EAAa,GACbC,EAAoB,sBAEpBF,EAASzyB,eAAe,qBAAuByyB,EAAS3R,iBAAiB5jB,OAAS,IAClFy1B,EAAoB,gCACpBF,EAAS3R,iBAAiB1kB,KAAI,SAAAk3B,GAC1BZ,GAAcv4B,IAAOm5B,EAAWv4B,MAAMkC,OAAO,YAAc,OAASq2B,EAAW1hB,SAAW,OAAS0hB,EAAWv2B,SAAW,UAGvG,IAAIsQ,IAAIolB,EAAS3R,iBAAiB1kB,KAAI,SAAAk3B,GACxD,OAAOA,EAAWv2B,aAEF8U,IAAI,kBACpB8gB,GAAqB,uIAGzBC,EAAmBJ,EAAW,OAASr4B,IAAOa,KAAKf,MAAMgyB,iBAAiB,IAAIhvB,OAAO,sBAC5D,IAAzBs1B,IACAK,EAAmB,YAAcz4B,IAAOa,KAAKf,MAAMgyB,iBAAiB,IAAIhvB,OAAO,OAAS,MAAQ9C,IAAOa,KAAKf,MAAMgyB,iBAAiB,IAAI5hB,IAAI,EAAG,OAAOpN,OAAO,OAAS,8BAGrK41B,EAA0B,CAC1B,UAAa,IAAMJ,EAASloB,MAC5B,SAAYkoB,EAAS1T,MACrB,QAAW,IAAM0T,EAASjS,gBAC1B,aAAgBoS,EAChB,UAAaF,EACb,kBAAqBC,GAEzBh3B,QAAQC,IAAI62B,GAAUO,EAAA9rB,GAEdurB,EAAS11B,SAAQi2B,EAAA5vB,KAChB,YADgB4vB,EAAA9rB,GACP,GAIP,iBAJO8rB,EAAA9rB,GAIO,GAUd,sBAVc8rB,EAAA9rB,GAUK,GAMnB,sBANmB8rB,EAAA9rB,GAMA,GAKrB,4BALqB8rB,EAAA9rB,GAKI,GAOzB,uBAPyB8rB,EAAA9rB,GAOL,oBA9BwE,OAD7F2rB,EAAiC,QAAI,kCACrCA,EAAsC,aAAI,mDAAmDG,EAAAhwB,OAAA,oBAUo2B,OAP77ByvB,EAASzyB,eAAe,qBAAuByyB,EAAS3R,iBAAiB5jB,OAAS,EAClF21B,EAAiC,QAAI,yDAErCA,EAAiC,QAAI,6CAEzCA,EAAsC,aAAI,8DAC1CA,EAAmD,0BAAI,mzCACvDA,EAAuD,8BAAI,s4BAAs4BG,EAAAhwB,OAAA,oBAK5J,OAFryB6vB,EAAiC,QAAI,qCACrCA,EAAsC,aAAI,0DAC1CA,EAAmD,0BAAI,8tBAA8uBG,EAAAhwB,OAAA,oBAKhsB,OADrG6vB,EAAiC,QAAI,sCACrCA,EAAsC,aAAI,2DAA2DG,EAAAhwB,OAAA,oBAO+K,OAHpR6vB,EAAiC,QAAI,+DACrCA,EAAsC,aAAI,yFAC1CA,EAAmD,0BAAI,ouBACvDA,EAAuD,8BAAI,yNAAyNG,EAAAhwB,OAAA,oBAOL,OAH/Q6vB,EAAiC,QAAI,oDACrCA,EAAsC,aAAI,oFAC1CA,EAAmD,0BAAI,+tBACvDA,EAAuD,8BAAI,oNAAoNG,EAAAhwB,OAAA,oBAG/Q6vB,EAAiC,QAAI,cACrCA,EAAsC,aAAI,0BAA0B,QAG5EA,EAA0Bh3B,KAAKmR,UAAU6lB,GAErCC,EAAY,CACZ,KAAQL,EAAS13B,KACjB,UAAa03B,EAASvgB,WAE1BmgB,EAAgBh1B,KAAKy1B,GACjBp3B,EAAO,CACP,YAAe,CACX,YAAe,CACX+2B,EAASjR,eAGjB,wBAA2BqR,GAG3BJ,EAAS5R,oBAAsB4R,EAAS5R,mBAAmB3jB,OAAS,IACpExB,EAAkB,YAAe,YAAI,CAAC+2B,EAAS5R,qBAEnDiR,EAAOuB,aAAah2B,KAAK3B,GAAM,QApGiB8T,IAAOwjB,EAAA5vB,KAAA,iBAuGvD2vB,EAAY,CACZjB,OAAQA,EACRO,gBAAiBA,IAEPA,gBAAgBn1B,OAAS,EACnClC,KAAKu4B,UAAUR,GAEfp3B,QAAQC,IAAI,qBACf,yBAAAo3B,EAAAluB,UAAAotB,EAAA,UA/IoB,OAgJxB,SAhJwBsB,GAAA,OAAAvB,EAAArsB,MAAC,KAAD0B,YAlCV,IAkCU,CAAAzM,IAAA,6BAAAC,MAAA,eAAA24B,EAAAntB,YAAA5G,KAAA0E,MAkJzB,SAAAsvB,EAAiC5a,GAAK,IAAAsZ,EAAAC,EAAAC,EAAAR,EAAA6B,EAAAnkB,EAAAijB,EAAA3oB,EAAA+oB,EAAAC,EAAAp3B,EAAAq3B,EAAA,OAAArzB,KAAAoB,MAAA,SAAA8yB,GAAA,cAAAA,EAAAhvB,KAAAgvB,EAAAxwB,MAAA,OA8BlC,IA7BIgvB,EAAkB,GAElBA,EADiB,IAAjBtZ,EAAM5b,OACY4b,EAEA9d,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAASE,QAAO,SAAAC,GAAC,MAAuC,aAAnCA,EAAEpB,MAAMilB,0BAAuC3jB,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,SAG1Lu3B,EAAkB,GAElBC,EAAkBz2B,KAAKmR,UACvB,CACI,SAAY,aACZ,aAAgB,2CAChB,QAAW,GACX,aAAgB,KAIpB8kB,EAAS,CACTmB,OAAQ,wDACRC,SAAU,uBACVC,oBAAqBb,EACrBc,iBAAkB,CACd,iCAEJC,aAAc,IAGdM,EAAY,GACPnkB,EAAQ,EAAGA,EAAQ4iB,EAAgBl1B,OAAQsS,IAC5CijB,EAAWL,EAAgB5iB,GAC3B1F,EAAQ9O,KAAK0sB,SACjBiM,EAAYx5B,IAAOa,KAAKf,MAAM+pB,WAAW/mB,OAAO,sBAAwB,OAASw1B,EAAShhB,KAEtFohB,EAA0B,CAC1B,SAAYc,EACZ,aAAgB,sDAAwDlB,EAAS13B,KAAO,UAAY+O,EACpG,0BAA6B,GAC7B,8BAAiC,IAEX,YAAtB2oB,EAAS11B,UACT81B,EAAiC,QAAI,kCACrCA,EAAsC,aAAI,qDAG1CA,EAAiC,QAAI,6CACrCA,EAAsC,aAAI,8DAC1CA,EAAmD,0BAAI,mzCACvDA,EAAuD,8BAAI,u4BAE3DC,EAAY,CACZ,KAAQL,EAAS13B,KACjB,UAAa03B,EAASvgB,UACtB,MAASpI,GAEbuoB,EAAgBh1B,KAAKy1B,GACjBp3B,EAAO,CACP,YAAe,CACX,YAAe,CACX+2B,EAASjR,eAGjB,wBAA2B3lB,KAAKmR,UAAU6lB,IAE1CJ,EAAS5R,oBAAsB4R,EAAS5R,mBAAmB3jB,OAAS,IACpExB,EAAkB,YAAe,YAAI,CAAC+2B,EAAS5R,qBAEnDiR,EAAOuB,aAAah2B,KAAK3B,IAEzBq3B,EAAY,CACZjB,OAAQA,EACRO,gBAAiBA,IAEPA,gBAAgBn1B,OAAS,EACnClC,KAAKu4B,UAAUR,GAEfp3B,QAAQC,IAAI,qBACf,wBAAAg4B,EAAA9uB,UAAA4uB,EAAA,UA9E2B,OA+E/B,SA/E+BG,GAAA,OAAAJ,EAAA7tB,MAAC,KAAD0B,YAlJP,IAkJO,CAAAzM,IAAA,6BAAAC,MAAA,eAAAg5B,EAAAxtB,YAAA5G,KAAA0E,MAiFhC,SAAA2vB,EAAiCjb,GAAK,IAAAsZ,EAAAC,EAAAC,EAAAR,EAAA6B,EAAAnkB,EAAAijB,EAAA3oB,EAAA+oB,EAAAC,EAAAp3B,EAAAq3B,EAAA,OAAArzB,KAAAoB,MAAA,SAAAkzB,GAAA,cAAAA,EAAApvB,KAAAovB,EAAA5wB,MAAA,OAC9BgvB,EAAkB,GAElBA,EADiB,IAAjBtZ,EAAM5b,OACY4b,EAEA9d,KAAKf,MAAMspB,gBAAgBnnB,KAAI,SAAAF,GAAC,MAAiC,aAA7BA,EAAE6jB,0BAGxDsS,EAAkB,GAElBC,EAAkBz2B,KAAKmR,UACvB,CACI,SAAY,aACZ,aAAgB,2CAChB,QAAW,GACX,aAAgB,KAIpB8kB,EAAS,CACTmB,OAAQ,wDACRC,SAAU,uBACVC,oBAAqBb,EACrBc,iBAAkB,CACd,iCAEJC,aAAc,IAGdM,EAAY,GACPnkB,EAAQ,EAAE,KAAD,OAAEA,EAAQ4iB,EAAgBl1B,QAAM,CAAA82B,EAAA5wB,KAAA,SAC1CqvB,EAAWL,EAAgB5iB,GAC3B1F,EAAQ9O,KAAK0sB,SACjBiM,EAAYx5B,IAAOa,KAAKf,MAAM+pB,WAAW/mB,OAAO,sBAAwB,OAASw1B,EAASpO,WAC1F1oB,QAAQC,IAAI62B,GACRI,EAA0B,CAC1B,SAAYc,EACZ,aAAgB,sDAAwDlB,EAAS13B,KAAO,UAAY+O,EACpG,0BAA6B,GAC7B,8BAAiC,IACpCkqB,EAAA9sB,GAEOurB,EAAS11B,SAAQi3B,EAAA5wB,KAChB,YADgB4wB,EAAA9sB,GACP,GAIP,iBAJO8sB,EAAA9sB,GAIO,GAMd,sBANc8sB,EAAA9sB,GAMK,GAOnB,sBAPmB8sB,EAAA9sB,GAOA,GAOrB,4BAPqB8sB,EAAA9sB,GAOI,GAOzB,uBAPyB8sB,EAAA9sB,GAOL,oBA7BwE,OAD7F2rB,EAAiC,QAAI,kCACrCA,EAAsC,aAAI,mDAAmDmB,EAAAhxB,OAAA,oBAMy1B,OAHt7B6vB,EAAiC,QAAI,6CACrCA,EAAsC,aAAI,8DAC1CA,EAAmD,0BAAI,y0CACvDA,EAAuD,8BAAI,23BAA23BmB,EAAAhxB,OAAA,oBAMxc,OAH9e6vB,EAAiC,QAAI,8DACrCA,EAAsC,aAAI,0DAC1CA,EAAmD,0BAAI,kuDACvDA,EAAuD,8BAAI,mbAAmbmB,EAAAhxB,OAAA,oBAM2yB,OAFzxC6vB,EAAiC,QAAI,6DACrCA,EAAsC,aAAI,2DAC1CA,EAAmD,0BAAI,ssCAAkuCmB,EAAAhxB,OAAA,oBAQrgC,OAHpR6vB,EAAiC,QAAI,+DACrCA,EAAsC,aAAI,yFAC1CA,EAAmD,0BAAI,osCACvDA,EAAuD,8BAAI,yNAAyNmB,EAAAhxB,OAAA,oBAOL,OAH/Q6vB,EAAiC,QAAI,oDACrCA,EAAsC,aAAI,oFAC1CA,EAAmD,0BAAI,8rCACvDA,EAAuD,8BAAI,oNAAoNmB,EAAAhxB,OAAA,oBAI/Q6vB,EAAiC,QAAI,cACrCA,EAAsC,aAAI,0BAA0B,QAExEC,EAAY,CACZ,KAAQL,EAAS13B,KACjB,UAAa03B,EAASvgB,UACtB,MAASpI,GAEbuoB,EAAgBh1B,KAAKy1B,GACjBp3B,EAAO,CACP,YAAe,CACX,YAAe,CACX+2B,EAASjR,eAGjB,wBAA2B3lB,KAAKmR,UAAU6lB,IAE1CJ,EAAS5R,oBAAsB4R,EAAS5R,mBAAmB3jB,OAAS,IACpExB,EAAkB,YAAe,YAAI,CAAC+2B,EAAS5R,qBAEnDiR,EAAOuB,aAAah2B,KAAK3B,GAAM,QAxEiB8T,IAAOwkB,EAAA5wB,KAAA,iBA0EvD2vB,EAAY,CACZjB,OAAQA,EACRO,gBAAiBA,IAEPA,gBAAgBn1B,OAAS,GACnCvB,QAAQC,IAAIm3B,GAEZ/3B,KAAKu4B,UAAUR,IAEfp3B,QAAQC,IAAI,qBACf,yBAAAo4B,EAAAlvB,UAAAivB,EAAA,UAlH2B,OAmH/B,SAnH+BE,GAAA,OAAAH,EAAAluB,MAAC,KAAD0B,YAjFA,IAiFA,CAAAzM,IAAA,+BAAAC,MAAA,eAAAo5B,EAAA5tB,YAAA5G,KAAA0E,MAqHhC,SAAA+vB,EAAmCC,GAAQ,IAAA/B,EAAAP,EAAAM,EAAA5iB,EAAAijB,EAAAI,EAAAC,EAAAp3B,EAAAq3B,EAAA,OAAArzB,KAAAoB,MAAA,SAAAuzB,GAAA,cAAAA,EAAAzvB,KAAAyvB,EAAAjxB,MAAA,OAmBvC,IAlBApI,KAAKC,SAAS,CAAEq5B,WAAY,KACxBjC,EAAkB,GAElBP,EAAS,CACTmB,OAAQ,wDACRC,SAAU,iBACVC,oBAAqB,2CACrBC,iBAAkB,CACd,iCAEJC,aAAc,IAEdjB,EAAkB,GAElBA,EADAgC,EACkBp5B,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAASE,QAAO,SAAAC,GAAC,OAA+B,IAA3BA,EAAEpB,MAAMy5B,kBAAiE,IAArCr4B,EAAEpB,MAAM05B,2BAAuCt4B,EAAEpB,MAAMkF,eAAe,gCAA8B5D,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,SAEjQE,KAAKf,MAAMspB,gBAAgBtnB,QAAO,SAAAC,GAAC,OAAyB,IAArBA,EAAEq4B,kBAA2D,IAA/Br4B,EAAEs4B,2BAAuCt4B,EAAE8D,eAAe,gCAE5IwP,EAAQ,EAAGA,EAAQ4iB,EAAgBl1B,OAAQsS,IAC1CijB,EAAWL,EAAgB5iB,GAC7BqjB,EAA0Bh3B,KAAKmR,UAAU,CACzC,UAAaylB,EAASloB,QAEtBuoB,EAAY,CACZ,KAAQL,EAAS13B,KACjB,UAAa03B,EAASvgB,WAE1BmgB,EAAgBh1B,KAAKy1B,GACjBp3B,EAAO,CACP,YAAe,CACX,YAAe,CACX+2B,EAASjR,eAGjB,wBAA2BqR,GAE3BJ,EAAS5R,oBAAsB4R,EAAS5R,mBAAmB3jB,OAAS,IACpExB,EAAkB,YAAe,YAAI,CAAC+2B,EAAS5R,qBAEnDiR,EAAOuB,aAAah2B,KAAK3B,GAIzBq3B,EAAY,CACZjB,OAAQA,EACRO,gBAAiBA,GAErBr3B,KAAKu4B,UAAUR,GAAW,wBAAAsB,EAAAvvB,UAAAqvB,EAAA,UAhDI,OAiDjC,SAjDiCM,GAAA,OAAAP,EAAAtuB,MAAC,KAAD0B,YArHF,IAqHE,CAAAzM,IAAA,+BAAAC,MAAA,eAAA45B,EAAApuB,YAAA5G,KAAA0E,MAmDlC,SAAAuwB,EAAmCP,GAAQ,IAAA/B,EAAAP,EAAAM,EAAA5iB,EAAAijB,EAAAI,EAAAC,EAAAp3B,EAAAq3B,EAAA,OAAArzB,KAAAoB,MAAA,SAAA8zB,GAAA,cAAAA,EAAAhwB,KAAAgwB,EAAAxxB,MAAA,OAqBvC,IApBApI,KAAKC,SAAS,CAAEq5B,WAAY,KAExBjC,EAAkB,GAElBP,EAAS,CACTmB,OAAQ,wDACRC,SAAU,iBACVC,oBAAqB,2CACrBC,iBAAkB,CACd,iCAEJC,aAAc,IAEdjB,EAAkB,GAElBA,EADAgC,EACkBp5B,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAASE,QAAO,SAAAC,GAAC,QAAgC,IAA3BA,EAAEpB,MAAMy5B,iBAA6Br4B,EAAEpB,MAAMkF,eAAe,sBAA4D,IAArC9D,EAAEpB,MAAM05B,2BAAuCt4B,EAAEpB,MAAMkF,eAAe,gCAA8B5D,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,SAEjTE,KAAKf,MAAMspB,gBAAgBtnB,QAAO,SAAAC,GAAC,QAA0B,IAArBA,EAAEq4B,iBAA6Br4B,EAAE8D,eAAe,sBAAsD,IAA/B9D,EAAEs4B,2BAAuCt4B,EAAE8D,eAAe,gCAGtLwP,EAAQ,EAAGA,EAAQ4iB,EAAgBl1B,OAAQsS,IAC1CijB,EAAWL,EAAgB5iB,GAC7BqjB,EAA0Bh3B,KAAKmR,UAAU,CACzC,UAAaylB,EAASloB,QAEtBuoB,EAAY,CACZ,KAAQL,EAAS13B,KACjB,UAAa03B,EAASvgB,WAE1BmgB,EAAgBh1B,KAAKy1B,GACjBp3B,EAAO,CACP,YAAe,CACX,YAAe,CACX+2B,EAASjR,eAGjB,wBAA2BqR,GAE3BJ,EAASoC,aAAepC,EAASoC,YAAY33B,OAAS,IACtDxB,EAAkB,YAAe,YAAI,CAAC+2B,EAASoC,cAEnD/C,EAAOuB,aAAah2B,KAAK3B,GAGzBq3B,EAAY,CACZjB,OAAQA,EACRO,gBAAiBA,GAErBr3B,KAAKu4B,UAAUR,GAAW,wBAAA6B,EAAA9vB,UAAA6vB,EAAA,UAjDI,OAkDjC,SAlDiCG,GAAA,OAAAJ,EAAA9uB,MAAC,KAAD0B,YAnDA,IAmDA,CAAAzM,IAAA,iBAAAC,MAoDlC,WACIE,KAAKC,SAAS,CAAEq5B,WAAY,KAC5B,IAEIX,EAFAoB,EAAW/5B,KAAKf,MAAM+pB,UAG1B2P,EAAYx5B,IAAO46B,GAAU93B,OAAO,sBACpCjC,KAAKC,SAAS,CAAEqxB,kBAAmBqH,MACtC,CAAA94B,IAAA,wBAAAC,MA8OD,SAAsBme,GAClBje,KAAKC,SAAS,CAAEyX,UAAWuG,EAAMnG,QAASmG,EAAO,QACpD,CAAApe,IAAA,0BAAAC,MACD,SAAwBme,GACpBje,KAAKC,SAAS,CAAE6X,QAASmG,MAC5B,CAAApe,IAAA,iBAAAC,MAED,SAAe0U,EAAOwlB,GAClB,GAAiB,OAAbA,EAAmB,CACnB,GAAc,IAAVxlB,EAoBA,OAnBA,IAAIylB,EAAezlB,EACf0lB,EAAc1lB,EAAQ,EACtB2lB,EAAgBn6B,KAAKf,MAAMuX,MAC3B4jB,EAAY,CACZ,SAAYD,EAAcD,GAAatjB,SACvC,OAAUujB,EAAcF,GAAc9P,OACtC,MAASgQ,EAAcF,GAAcn6B,OAErCu6B,EAAY,CACZ,SAAYF,EAAcF,GAAcrjB,SACxC,OAAUujB,EAAcD,GAAa/P,OACrC,MAASgQ,EAAcD,GAAap6B,OAExCq6B,EAAcD,GAAeE,EAC7BD,EAAcF,GAAgBI,EAC9Br6B,KAAKC,SAAS,CAAEuW,MAAO2jB,SAO1B,GAAiB,SAAbH,EAAqB,CAC1B,GAAIxlB,IAAUxU,KAAKf,MAAMuX,MAAMtU,OAAS,EAoBpC,OAnBA,IAAIo4B,EAAgB9lB,EAChB+lB,EAAe/lB,EAAQ,EACvBgmB,EAAiBx6B,KAAKf,MAAMuX,MAC5BikB,EAAa,CACb,SAAYD,EAAeD,GAAc3jB,SACzC,OAAU4jB,EAAeF,GAAenQ,OACxC,MAASqQ,EAAeF,GAAex6B,OAEvC46B,EAAa,CACb,SAAYF,EAAeF,GAAe1jB,SAC1C,OAAU4jB,EAAeD,GAAcpQ,OACvC,MAASqQ,EAAeD,GAAcz6B,OAE1C06B,EAAeD,GAAgBE,EAC/BD,EAAeF,GAAiBI,EAChC16B,KAAKC,SAAS,CAAEuW,MAAOgkB,OAOlC,CAAA36B,IAAA,kBAAAC,MAED,SAAgB0U,GACZ,IAAIyF,EAAaja,KAAKf,MAAMuX,MACxBgX,EAAcvT,EAAWzF,GAAO1U,MACpCma,EAAWzF,GAAO1U,MAAQ,GAC1Bma,EAAWzF,GAAO2V,OAAS,GAC3B,IAAI5B,EAAkBvoB,KAAKf,MAAMspB,gBAC7BxnB,OAAOC,KAAKwsB,GAAatrB,OAAS,GAAKsrB,EAAYtkB,cAAgBnI,QACnEwnB,EAAgBlmB,KAAKmrB,GAEzBxtB,KAAKC,SAAS,CAAEsoB,gBAAiBA,MACpC,CAAA1oB,IAAA,mBAAAC,MAED,SAAiB0U,GACb,IAAIyF,EAAaja,KAAKf,MAAMuX,MACxBgX,EAAcvT,EAAWzF,GAAO1U,MACpCma,EAAaA,EAAWhZ,QAAO,SAACwjB,EAAMtf,GAAC,OAAKqP,IAAUrP,KACtD,IAAIojB,EAAkBvoB,KAAKf,MAAMspB,gBAC7BxnB,OAAOC,KAAKwsB,GAAatrB,OAAS,GAAKsrB,EAAYtkB,cAAgBnI,QACnEwnB,EAAgBlmB,KAAKmrB,GAEzBxtB,KAAKC,SAAS,CAAEsoB,gBAAiBA,EAAiB/R,MAAOyD,MAC5D,CAAApa,IAAA,iBAAAC,MAAA,eAAAoe,EAAA5S,YAAA5G,KAAA0E,MAED,SAAAuxB,IAAA,IAAA1gB,EAAA2gB,EAAAnkB,EAAAokB,EAAAC,EAAAtmB,EAAAhG,EAAAusB,EAAAC,EAAAn7B,EAAA4kB,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAm1B,GAAA,cAAAA,EAAArxB,KAAAqxB,EAAA7yB,MAAA,OAII,IAHApI,KAAKC,SAAS,CAAE+L,SAAS,IACrBiO,EAAaja,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKA,EAAEipB,UAExCyQ,EAAM,EAAGA,EAAM3gB,EAAW/X,OAAQ04B,KACnCnkB,EAAOwD,EAAW2gB,IACjB96B,MAAM2W,KAAOA,EAAKG,SACvBH,EAAK3W,MAAMsP,YAAcpP,KAAKf,MAAM4pB,gBACpC5O,EAAW2gB,GAAOnkB,EAQtB,IALAzW,KAAKC,SAAS,CAAEuW,MAAOyD,IAGnB4gB,EAAc,GACdC,EAAe7gB,EAAW7Y,KAAI,SAAAF,GAAC,OAAIA,EAAEpB,SAChC0U,EAAQ,EAAGA,EAAQsmB,EAAa54B,OAAQsS,IAAS,CAGtD,IAFIhG,EAAUssB,EAAatmB,GACvBumB,EAAch6B,OAAOC,KAAKwN,GACrBwsB,EAAe,EAAGA,EAAeD,EAAY74B,OAAQ84B,IACpDn7B,EAAMk7B,EAAYC,GACH,MAAhBxsB,EAAQ3O,WACF2O,EAAQ3O,GAGnB4kB,EAAO,CAAE,KAAQ,gBAAiB,QAAWjW,GACjDqsB,EAAYx4B,KAAKoiB,GAGJ,OAAXvkB,EAAOF,KAAIi7B,EAAA7yB,KAAA,GAEGuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAO8pB,EAAApzB,KACPuJ,EAAU,CACVK,KAAMopB,EACNz6B,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACZR,EAAKyS,cAAc,iBACnBhS,QAAQC,IAAIF,MACbyJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAA6uB,EAAAnxB,UAAA6wB,EAAA,UAxDS,OAyDnB,WAzDmB,OAAAzc,EAAAtT,MAAC,KAAD0B,YAFnB,IAEmB,CAAAzM,IAAA,0BAAAC,MAAA,eAAAo7B,EAAA5vB,YAAA5G,KAAA0E,MA2DpB,SAAA+xB,IAAA,IAAAlhB,EAAA4gB,EAAArmB,EAAAhG,EAAAusB,EAAAC,EAAAn7B,EAAA4kB,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAs1B,GAAA,cAAAA,EAAAxxB,KAAAwxB,EAAAhzB,MAAA,OAKI,IAJApI,KAAKC,SAAS,CAAE+L,SAAS,IACrBiO,EAAaja,KAAKf,MAAMspB,gBAExBsS,EAAc,GACTrmB,EAAQ,EAAGA,EAAQyF,EAAW/X,OAAQsS,IAAS,CAGpD,IAFIhG,EAAUyL,EAAWzF,GACrBumB,EAAch6B,OAAOC,KAAKwN,GACrBwsB,EAAe,EAAGA,EAAeD,EAAY74B,OAAQ84B,IACpDn7B,EAAMk7B,EAAYC,GACH,MAAhBxsB,EAAQ3O,WACF2O,EAAQ3O,GAGnB4kB,EAAO,CAAE,KAAQ,gBAAiB,QAAWjW,GACjDqsB,EAAYx4B,KAAKoiB,GAGJ,OAAXvkB,EAAOF,KAAIo7B,EAAAhzB,KAAA,EAEGuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAOiqB,EAAAvzB,KACPuJ,EAAU,CACVK,KAAMopB,EACNz6B,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzCC,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACZR,EAAKyS,cAAc,iBACnBhS,QAAQC,IAAIF,MACbyJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAgvB,EAAAtxB,UAAAqxB,EAAA,UA7CkB,OA8C5B,WA9C4B,OAAAD,EAAAtwB,MAAC,KAAD0B,YA3DT,IA2DS,CAAAzM,IAAA,gBAAAC,MAAA,eAAAu7B,EAAA/vB,YAAA5G,KAAA0E,MAgD7B,SAAAkyB,EAAoBC,GAAM,IAAAxoB,EAAAhR,EAAAumB,EAAA0B,EAAAC,EAAAM,EAAAR,EAAAvT,EAAA,OAAA9R,KAAAoB,MAAA,SAAA01B,GAAA,cAAAA,EAAA5xB,KAAA4xB,EAAApzB,MAAA,OAEoB,OADtC2K,EAAc/S,KAAKf,MAAM8T,YACzBhR,EAAW/B,KAAKf,MAAMiX,iBAAgBslB,EAAApzB,KAAA,EACRpI,KAAKyX,oBAAoB1E,GAAa,KAAD,EAAnEuV,EAAqBkT,EAAA3zB,KAED,IAApB9F,EAASG,SACL8nB,EAAsB,IAAI3X,IAAIiW,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,YAAUX,KAAI,SAAAF,GAAC,OAAIA,EAAEa,cACvFkoB,EAAqB7X,YAAO4X,IACN9nB,OAAS,IAC/BH,EAAWkoB,EAAsB,KAIrCM,EAAgCjC,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,MACjFgoB,EAAkBzB,EAAsBrnB,QAAO,SAAAC,GAAC,OAAIA,EAAEuV,QAAMxV,QAAO,SAAAC,GAAC,OAAIA,EAAEa,WAAaA,MACvEG,OAAS,IACrBsU,EAAQuT,EAAgB3oB,KAAI,SAAUF,GAAK,MAAO,CAAE0V,SAAU1V,EAAEuV,KAAM0T,OAAQjpB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAAOjkB,MAAOoB,MAClHlB,KAAKC,SAAS,CAAEuW,MAAOxW,KAAKmZ,UAAU3C,EAAO,eAGjDxW,KAAKC,SAAS,CAAEsoB,gBAAiBD,EAAsBrnB,QAAO,SAAAC,GAAC,OAAKA,EAAEuV,UAEtEzW,KAAKC,SAAS,CACVqoB,wBACAG,WAAW,EACX/N,UAAW6gB,EACXhR,gCACAgB,sBAAuBhB,EAA8BvqB,KAAKf,MAAM0yB,4BAChEpJ,gBAAiBgC,EAA8BtpB,QAAO,SAAAC,GAAC,OAAKA,EAAEuV,QAC9D9D,cAAe,uBAAyBxT,MAAS8C,OAAO,2BACxD+J,SAAS,IAEV,yBAAAwvB,EAAA1xB,UAAAwxB,EAAA,UAhCY,OAiClB,SAjCkBG,GAAA,OAAAJ,EAAAzwB,MAAC,KAAD0B,YAhDU,IAgDV,CAAAzM,IAAA,uBAAAC,MAmKnB,SAAqBC,GACjB,OACIyC,IAAAC,cAAA,WAAK,6CAGDD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUsI,GAAG,MAAM5G,SAAyC,aAA/BpE,KAAKf,MAAM4pB,gBAAgC/T,QAAS9U,KAAK6yB,uBAAuB,YAC/HrwB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUsI,GAAG,MAAM5G,SAAyC,WAA/BpE,KAAKf,MAAM4pB,gBAA8B/T,QAAS9U,KAAK6yB,uBAAuB,UAC7HrwB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUsI,GAAG,MAAM5G,SAAyC,WAA/BpE,KAAKf,MAAM4pB,gBAA8B/T,QAAS9U,KAAK6yB,uBAAuB,UAC7HrwB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUsI,GAAG,MAAM5G,SAAyC,YAA/BpE,KAAKf,MAAM4pB,gBAA+B/T,QAAS9U,KAAK6yB,uBAAuB,WAC9HrwB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUsI,GAAG,MAAM5G,SAAyC,cAA/BpE,KAAKf,MAAM4pB,gBAAiC/T,QAAS9U,KAAK6yB,uBAAuB,aAChIrwB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUsI,GAAG,MAAM5G,SAAyC,aAA/BpE,KAAKf,MAAM4pB,gBAAgC/T,QAAS9U,KAAK6yB,uBAAuB,YAC/HrwB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUsI,GAAG,MAAM5G,SAAyC,WAA/BpE,KAAKf,MAAM4pB,gBAA8B/T,QAAS9U,KAAK6yB,uBAAuB,UAC7HrwB,IAAAC,cAAA,WAAS,kJAKpB,CAAA5C,IAAA,iBAAAC,MAAA,eAAA47B,EAAApwB,YAAA5G,KAAA0E,MAED,SAAAuyB,IAAA,IAAAC,EAAAptB,EAAAiW,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA+1B,GAAA,cAAAA,EAAAjyB,KAAAiyB,EAAAzzB,MAAA,OAQqB,OAPbwzB,EAAa57B,KAAKf,MAAMywB,iBACxBlhB,EAAUxO,KAAKf,MAAMssB,uBACjBqQ,WAAaA,EAErB57B,KAAKC,SAAS,CAAE+L,SAAS,IAErByY,EAAO,CAAE,KAAQ,qBAAsB,QAAWjW,GAChDtO,EAAOF,KAAI67B,EAAAzzB,KAAA,EAEGuD,IAAK6F,iBAAiB,KAAD,EAArCL,EAAO0qB,EAAAh0B,KACPuJ,EAAU,CACVK,KAAM,CAACgT,GAEPrkB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzChR,QAAQC,IAAIwQ,GACZQ,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,KAAI,eAAAw7B,EAAAxwB,YAAA5G,KAAA0E,MAAC,SAAA2yB,EAAgBr7B,GAAI,OAAAgE,KAAAoB,MAAA,SAAAk2B,GAAA,cAAAA,EAAApyB,KAAAoyB,EAAA5zB,MAAA,WAClB1H,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KAAkB,CAAA41B,EAAA5zB,KAAA,eAAA4zB,EAAA5zB,KAAA,EAChDlI,EAAKyS,cAAczS,EAAKjB,MAAMyb,WAAW,KAAD,EAC9Cxa,EAAKD,SAAS,CAAE+L,SAAS,EAAO0jB,gBAAiB,KAAMsM,EAAA5zB,KAAA,eAGvDzH,QAAQC,IAAI,qBAAqB,wBAAAo7B,EAAAlyB,UAAAiyB,OAExC,gBAAAE,GAAA,OAAAH,EAAAlxB,MAAA,KAAA0B,YARI,IAQFnC,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAyvB,EAAA/xB,UAAA6xB,EAAA,UA1CS,OA2CnB,WA3CmB,OAAAD,EAAA9wB,MAAC,KAAD0B,YAFnB,IAEmB,CAAAzM,IAAA,kBAAAC,MAAA,eAAAkc,EAAA1Q,YAAA5G,KAAA0E,MA8CpB,SAAA8yB,EAAsB1nB,GAAK,IAAAhG,EAAA2tB,EAAAC,EAAA3X,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAAu2B,GAAA,cAAAA,EAAAzyB,KAAAyyB,EAAAj0B,MAAA,OAgBN,OAfboG,EAAUxO,KAAKf,MAAMssB,sBACzB5qB,QAAQC,IAAI4N,EAASgG,GACjB2nB,EAAgB3tB,EAAQsX,iBAAiB5S,OAAOsB,EAAO,GAC3D7T,QAAQC,IAAIu7B,EAAe3tB,GACvB4tB,EAAa,CACbr8B,KAAMyO,EAAQzO,KACdmX,UAAW1I,EAAQ0I,UACnB4O,iBAAkBtX,EAAQsX,iBAC1BqW,cAAeA,GAGnBn8B,KAAKC,SAAS,CAAE+L,SAAS,IACrByY,EAAO,CAAE,KAAQ,uBAAwB,QAAW2X,GACxDz7B,QAAQC,IAAI6jB,GAENvkB,EAAOF,KAAIq8B,EAAAj0B,KAAA,GAEGuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAOkrB,EAAAx0B,KACPuJ,EAAU,CACVK,KAAM,CAACgT,GAEPrkB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzChR,QAAQC,IAAIwQ,GACZQ,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,MAAK,SAAUI,GACRA,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,MACpClG,EAAKyS,cAAczS,EAAKjB,MAAMyb,WAC9Bxa,EAAKD,SAAS,CAAE+L,SAAS,EAAOulB,WAAW,EAAOC,UAAW,MAG7D7wB,QAAQC,IAAI,wBAEjBuJ,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAiwB,EAAAvyB,UAAAoyB,EAAA,UAlDU,OAmDpB,SAnDoBI,GAAA,OAAAtgB,EAAApR,MAAC,KAAD0B,YA9CD,IA8CC,CAAAzM,IAAA,uBAAAC,MAAA,eAAAy8B,EAAAjxB,YAAA5G,KAAA0E,MAsDrB,SAAAozB,IAAA,IAAAzR,EAAAvc,EAAAwc,EAAAzB,EAAA9E,EAAAvkB,EAAAiR,EAAAC,EAAA,OAAA1M,KAAAoB,MAAA,SAAA22B,GAAA,cAAAA,EAAA7yB,KAAA6yB,EAAAr0B,MAAA,OAcqB,OAbb2iB,EAAa/qB,KAAKf,MAAMqsB,gBAC5BP,GAA4C,GAA9B/qB,KAAKf,MAAMqsB,gBAAuB,gBAAkB,iBAC9D9c,EAAUxO,KAAKf,MAAMssB,sBACrBP,EAAY,CAAE,KAAQD,EAAY,MAAShT,SAAS/X,KAAKf,MAAMusB,iBAC/Dhd,EAAQxJ,eAAe,iBACnBukB,EAAc/a,EAAQ+a,aACdlnB,KAAK2oB,GACjBxc,EAAQ+a,YAAcA,GAEtB/a,EAAQ+a,YAAc,CAACyB,GAE3BhrB,KAAKC,SAAS,CAAE+L,SAAS,IACrByY,EAAO,CAAE,KAAQ,gBAAiB,QAAWjW,GAC3CtO,EAAOF,KAAIy8B,EAAAr0B,KAAA,GAEGuD,IAAK6F,iBAAiB,KAAD,GAArCL,EAAOsrB,EAAA50B,KACPuJ,EAAU,CACVK,KAAM,CAACgT,GAEPrkB,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB+Q,EAAQO,QAAQC,WAGzChR,QAAQC,IAAIwQ,GACZQ,IAAIC,KAAK,aAAc,qBAAsBT,GACxC9Q,KAAI,eAAAo8B,EAAApxB,YAAA5G,KAAA0E,MAAC,SAAAuzB,EAAgBj8B,GAAI,OAAAgE,KAAAoB,MAAA,SAAA82B,GAAA,cAAAA,EAAAhzB,KAAAgzB,EAAAx0B,MAAA,WAClB1H,EAAKsE,eAAe,SAAyB,YAAdtE,EAAK0F,KAAkB,CAAAw2B,EAAAx0B,KAAA,eAAAw0B,EAAAx0B,KAAA,EAChDlI,EAAKyS,cAAczS,EAAKjB,MAAMyb,WAAW,KAAD,EAC9Cxa,EAAKD,SAAQkL,oCAAC,CACVa,SAAS,EAAOogB,gBAAgB,EAChCR,YAAa,GACbC,WAAY,GACZQ,aAAc,GACdC,OAAQ,GACRR,UAAW,GACXC,OAAQ,GACRC,QAAS,GACTC,MAAO,GACPC,UAAW,GACXK,SAAU,GACVjB,gBAAiB,EACjBE,eAAgB,EAChBC,SAAU,IAAE,WACH,GAAK,sBACM,GAAK,2BACA,IAC1BmR,EAAAx0B,KAAA,eAGHzH,QAAQC,IAAI,qBAAqB,wBAAAg8B,EAAA9yB,UAAA6yB,OAExC,gBAAAE,GAAA,OAAAH,EAAA9xB,MAAA,KAAA0B,YA1BI,IA0BFnC,OAAM,SAAU8F,GACftP,QAAQC,IAAIqP,GACRA,EAAMzP,UACNG,QAAQC,IAAIqP,EAAMzP,SAASE,MAC3BC,QAAQC,IAAIqP,EAAMzP,SAASuR,QAC3BpR,QAAQC,IAAIqP,EAAMzP,SAASJ,UACpB6P,EAAMsM,QACb5b,QAAQC,IAAIqP,EAAMsM,SAGlB5b,QAAQC,IAAI,QAASqP,EAAM7D,YAEhC,yBAAAqwB,EAAA3yB,UAAA0yB,EAAA,UAlEe,OAmEzB,WAnEyB,OAAAD,EAAA3xB,MAAC,KAAD0B,YAtDL,IAsDK,CAAAzM,IAAA,oBAAAC,MA2L1B,WAAqB,IAADqf,EAAA,KACZ2d,EAAkB,EAClBC,EAAmB,GACnBC,EAAyB,GACzBtN,EAAkB1vB,KAAKf,MAAMywB,gBACjC,GAAI3uB,OAAOC,KAAKhB,KAAKf,MAAMssB,uBAAuBrpB,OAAS,EAAG,CAC1D,IAAI+6B,EAAiBj9B,KAAKf,MAAMgmB,iBAAiBhkB,QAAO,SAAAC,GAAC,OAAIA,EAAEqC,UAAY4b,EAAKlgB,MAAMssB,sBAAsB/F,mBAC9E,IAA1ByX,EAAe/6B,SACf46B,EAAkBG,EAAe,GAAGpf,SAGxC7d,KAAKf,MAAMssB,sBAAsBhC,YAAYtoB,QAAO,SAAAC,GAAC,OAAIA,EAAEiI,KAAKoI,SAAS,mBAAiBnQ,KAAI,SAAAF,GAAC,OAAIA,EAAEiI,QAAM/H,KAAI,SAAAF,GAAC,OAAI47B,GAAmB/kB,SAAS7W,EAAEmX,MAAM,KAAK,OAEzJrY,KAAKf,MAAMssB,wBACPvrB,KAAKf,MAAMssB,sBAAsBzF,mBACjCiX,EAAmB/8B,KAAKf,MAAMssB,sBAAsBzF,kBAEpD9lB,KAAKf,MAAMssB,sBAAsB2R,gBACjCF,EAAyBh9B,KAAKf,MAAMssB,sBAAsB2R,gBAKtE,OACI16B,IAAAC,cAAA,WACKitB,EAAgBxtB,OAAS,EACtBM,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WAAU,sDAEd,KACfV,IAAAC,cAAA,WACID,IAAAC,cAAA,cAAQ,WAAgB,KAAGzC,KAAKf,MAAMssB,sBAAsBhc,MAAQ,IAAMvP,KAAKf,MAAMssB,sBAAsBxH,OAE/GvhB,IAAAC,cAAA,WACID,IAAAC,cAAA,cAAQ,kBAAuB,KAAGq6B,GAGrCC,EAAiB76B,OAASwtB,EAAgBxtB,OAAS46B,EAChDt6B,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAACH,SAA+C,gBAArCpE,KAAKf,MAAMyyB,uBAA0C5c,QAAS,WAAF,OAAQqK,EAAKlf,SAAS,CAAEyxB,uBAAwB,eAAgB9B,oBAAqB,OAAO,6BAC1KptB,IAAAC,cAAC8B,IAAM,CAACH,SAA+C,WAArCpE,KAAKf,MAAMyyB,uBAAqC5c,QAAS,WAAF,OAAQqK,EAAKlf,SAAS,CAAEyxB,uBAAwB,UAAW9B,oBAAqB,OAAO,wBAE1H,gBAArC5vB,KAAKf,MAAMyyB,uBACRlvB,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,gBACLD,IAAAC,cAAC06B,KAAW,CACRt9B,IAAKG,KAAKf,MAAM8T,YAChBjT,MAAOE,KAAKf,MAAM2wB,oBAClBwN,cAAc,EACd/M,YAAarwB,KAAKqwB,YAClBgN,gBAAc,EACdC,iBAAkB,WAAF,MAAQ,4BAA8Bne,EAAKlgB,MAAM8T,YAAc,KAC/EzF,SAAUtN,KAAK6vB,yBAEnBrtB,IAAAC,cAAC8B,IAAM,CAACH,SAAiE,IAAvDrD,OAAOC,KAAKhB,KAAKf,MAAM2wB,qBAAqB1tB,OAAc4S,QAAS,WAAF,OAAQqK,EAAKwQ,wBAAuB,eAElH,KAEyB,WAArC3vB,KAAKf,MAAMyyB,uBACRlvB,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,WACLD,IAAAC,cAAC06B,KAAW,CACRt9B,IAAKG,KAAKf,MAAM8T,YAChBjT,MAAOE,KAAKf,MAAM2wB,oBAClBwN,cAAc,EACd/M,YAAarwB,KAAKwwB,mBAClB6M,gBAAc,EACdC,iBAAkB,WAAF,MAAQ,4BAA8Bne,EAAKlgB,MAAM8T,YAAc,KAC/EzF,SAAUtN,KAAK6vB,yBAEnBrtB,IAAAC,cAAC8B,IAAM,CAACH,SAAiE,IAAvDrD,OAAOC,KAAKhB,KAAKf,MAAM2wB,qBAAqB1tB,OAAc4S,QAAS,WAAF,OAAQqK,EAAKwQ,wBAAuB,eAElH,MAER,KACbntB,IAAAC,cAAA,WAECitB,EAAgBxtB,OAAS,EACtBM,IAAAC,cAAA,WACID,IAAAC,cAAA,WACID,IAAAC,cAAA,cAAQ,4BAIZD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,eACJD,IAAAC,cAAA,UAAI,aACJD,IAAAC,cAAA,UAAI,YACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKitB,EAAgBtuB,KAAI,SAACkgB,EAAQ9M,GAC1B,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAK6e,EAAOvhB,MACZyC,IAAAC,cAAA,UAAK6e,EAAO7K,MACZjU,IAAAC,cAAA,UAAK6e,EAAOvf,UACZS,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAAS4R,QAAS,WAAF,OAAQqK,EAAKsQ,gBAAgBjb,KAAQ,iBAO7FhS,IAAAC,cAAC8B,IAAM,CAACuQ,QAAS,WAAF,OAAQqK,EAAKoe,kBAAkBn5B,SAAUpE,KAAKf,MAAM+M,QAAS9I,QAAQ,WAAU,gBAEzF,KACbV,IAAAC,cAAA,WACID,IAAAC,cAAA,cAAQ,gCAGXs6B,EAAiB76B,OAAS,EACvBM,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,eACJD,IAAAC,cAAA,UAAI,aACJD,IAAAC,cAAA,UAAI,YACJD,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKs6B,EAAiB37B,KAAI,SAACkgB,EAAQ9M,GAC3B,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAK6e,EAAOvhB,MACZyC,IAAAC,cAAA,UAAK6e,EAAO1K,UACZpU,IAAAC,cAAA,UAAK6e,EAAOvf,UACZS,IAAAC,cAAA,UAAK6e,EAAO3K,YACZnU,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAAS4R,QAAS,WAAF,OAAQqK,EAAKhE,gBAAgB3G,KAAQ,iBAO3F,uBACNhS,IAAAC,cAAA,WACID,IAAAC,cAAA,cAAQ,mCAEXu6B,EAAuB96B,OAAS,EAE7BM,IAAAC,cAAA,WACKu6B,EAAuB57B,KAAI,SAAAkgB,GACxB,OAAQ9e,IAAAC,cAAA,WAAM6e,OAGb,8BAEb9e,IAAAC,cAAA,WACAD,IAAAC,cAAA,WAEAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUkB,SAAWpE,KAAKf,MAAMssB,sBAAsBvmB,eAAe,6BAA2F,IAA7DhF,KAAKf,MAAMssB,sBAAsBiS,wBAAmC1oB,QAAS,WAAF,OAAQqK,EAAKkP,oCAAoC,6BAA4B,+BAC3Q7rB,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASkB,UAAYpE,KAAKf,MAAMssB,sBAAsBvmB,eAAe,6BAA2F,IAA7DhF,KAAKf,MAAMssB,sBAAsBiS,wBAAoC1oB,QAAS,WAAF,OAAQqK,EAAKkP,oCAAoC,iCAAgC,iCAEhR7rB,IAAAC,cAAA,WACAD,IAAAC,cAAA,WAEAD,IAAAC,cAAC8B,IAAM,CAACgQ,KAAK,KAAKrR,QAAQ,SAASkB,SAAWpE,KAAKf,MAAMssB,sBAAsBvmB,eAAe,wBAAiF,IAAxDhF,KAAKf,MAAMssB,sBAAsBkS,mBAA8B3oB,QAAS,WAAF,OAAQqK,EAAKiP,yBAAyB,wBAAuB,2BAC1P5rB,IAAAC,cAAC8B,IAAM,CAACgQ,KAAK,KAAKnQ,UAAYpE,KAAKf,MAAMssB,sBAAsBvmB,eAAe,wBAAiF,IAAxDhF,KAAKf,MAAMssB,sBAAsBkS,mBAA+B3oB,QAAS,WAAF,OAAQqK,EAAKiP,yBAAyB,4BAA2B,gCAE/O5rB,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACgQ,KAAK,KAAKnQ,SAAUpE,KAAKf,MAAMmtB,gBAAkBpsB,KAAKf,MAAM+M,QAAS8I,QAAS,WAAF,OAAQqK,EAAKlf,SAAS,CAAEmsB,gBAAgB,MAAS,qBAErI5pB,IAAAC,cAAA,WACAD,IAAAC,cAAA,WAECzC,KAAKf,MAAMmtB,eAAiB5pB,IAAAC,cAAA,WAAK,KAAED,IAAAC,cAAA,UAAI,qBAEpCD,IAAAC,cAAC+c,KAAI,CAACuG,YAAU,EAAC2X,UAAW19B,KAAKf,MAAMutB,mBAAoBxf,SAAUhN,KAAKqzB,qBACtE7wB,IAAAC,cAAC+c,KAAKC,MAAK,CAACiH,QAAM,EAACpW,MAAM,eAAelK,KAAM,WAAY4E,GAAE,0BAA6BuF,QAASvQ,KAAKf,MAAMwtB,wBAAyBnf,SAAU,WAAF,OAAQ6R,EAAKlf,SAAS,CAAEwsB,yBAA0BtN,EAAKlgB,MAAMwtB,6BACzMzsB,KAAKf,MAAMwtB,wBAkIJjqB,IAAAC,cAAA,YAlI8BD,IAAAC,cAAA,WACnCD,IAAAC,cAAC0jB,KAAU,CAACzjB,UAAU,QAClBF,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,WACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAMstB,SAClBre,YAAY,cACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,uCAI1C5D,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,cACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,cACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM2sB,YAClB1d,YAAY,aACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,+BAE1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,aACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,aACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM4sB,WAClB3d,YAAY,YACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,+BAG9C5D,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,gBAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,SACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,eACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAMotB,aAClBne,YAAY,QACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,qDAI9C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,UAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,OACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,SACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAMqtB,OAClBpe,YAAY,MACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,0CAKlD5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,aAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,mBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,YACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM6sB,UAClB5d,YAAY,GACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,oDAG1C5D,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,QACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,SACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM8sB,OAClB7d,YAAY,OACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,yBAE1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,SACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,UACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM+sB,QAClB9d,YAAY,QACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,2BAG9C5D,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,OACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,QACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAMgtB,MAClB/d,YAAY,MACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,wBAE1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,WAEZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,YACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAMitB,UAClBhe,YAAY,UACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,8BAMlD5D,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,kBAEZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,kBACL/C,KAAK,SACLtG,MAAOE,KAAKf,MAAMqsB,gBAClBpd,YAAY,iBACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,qCAE1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,eACZnjB,IAAAC,cAAC0jB,KAAU,KACP3jB,IAAAC,cAAC0jB,KAAWwX,KAAI,KAAC,KAEjBn7B,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,iBACL/C,KAAK,SACLtG,MAAOE,KAAKf,MAAMusB,eAClBtd,YAAY,cACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,mDAMlD5D,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAM+M,QAAS5F,KAAK,UAAS,OACpD5D,IAAAC,cAAA,WACAD,IAAAC,cAAA,aAIY,KACnBzC,KAAKf,MAAMwsB,SAAWjpB,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WAClCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMwsB,WACb,QAQtB,CAAA5rB,IAAA,8BAAAC,MAGD,WASI,IAT2B,IAADyf,EAAA,KAEtB+K,EAAqBtqB,KAAKf,MAAMqrB,mBAChC/B,EAAkBvoB,KAAKf,MAAMspB,gBAE7BmK,EAAoB,IAAIC,IAExBiL,EAAuB,GAElBz4B,EAAI,EAAGA,EAAIojB,EAAgBrmB,OAAQiD,IAAK,CAC7C,IAAIqJ,EAAU+Z,EAAgBpjB,GAC9B,GAAIqJ,EAAQxJ,eAAe,cAAe,CACtC,IAAI4R,EAAWpI,EAAQ6a,WAEvB,GAAIqJ,EAAkB7b,IAAID,GAAW,CACjC,IAAIinB,EAAmBnL,EAAkBlR,IAAI5K,GAC7CinB,EAAiBx7B,KAAKmM,GACtBkkB,EAAkBoL,IAAIlnB,EAAUinB,QAEhCnL,EAAkBoL,IAAIlnB,EAAU,CAACpI,SAIrCovB,EAAqBv7B,KAAKmM,GAGlC,OACIhM,IAAAC,cAAA,WACKm7B,EAAqB17B,OAAS,EAAIM,IAAAC,cAAA,WAAK,SAAuC,IAAhCm7B,EAAqB17B,OAAeM,IAAAC,cAAA,YAAM,MAAYD,IAAAC,cAAA,YAAM,OAAW,IAAEm7B,EAAqB17B,OAAO,WAAyC,IAAhC07B,EAAqB17B,OAAe,KAAO,IAAI,gBACtMM,IAAAC,cAAA,WAAK,8CAE+B,IAAzCzC,KAAKf,MAAMqrB,mBAAmBpoB,OAAeM,IAAAC,cAAA,WAAK,oFAC/CD,IAAAC,cAAA,WACID,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,MAAIC,UAAU,SAAQ,QACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,YACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,aAG9BF,IAAAC,cAAA,aACK6nB,EAAmBlpB,KAAI,SAAAF,GAAC,OAAIA,EAAE0V,YAAUxV,KAAI,SAAC6c,EAAMzJ,GAChD,OAAIke,EAAkB7b,IAAIoH,GAElBzb,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,MAAIC,UAAU,SAASub,GACvBzb,IAAAC,cAAA,MAAIC,UAAU,SAAQ,oBAClBF,IAAAC,cAACid,KAAM,CACHgB,SAAO,EACP5gB,MACI4yB,EAAkBlR,IAAIvD,GAAM7c,KAAI,SAAAoN,GAAO,MACnC,CACI8B,MAAO9B,EAAQe,MAAQ,IAAMf,EAAQuV,MACrCjkB,MAAO0O,MAIjBuvB,OAAQ,CAAEC,WAAY,SAAAC,GAAI,OAAAC,0BAAA,GAAUD,GAAI,IAAErqB,OAAQ,SACpDtG,SAAU,SAAC5M,GAAI,OAAK6e,EAAKkO,2BAA2B/sB,EAAMud,EAAMzJ,IAChEpD,QAASwsB,EAAqBx8B,KAAI,SAAUqF,GAAK,MAAO,CAAE3G,MAAO2G,EAAG6J,MAAO7J,EAAE8I,MAAQ,IAAM9I,EAAEsd,aAErGvhB,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASkB,SAAgC,GAAtBmb,EAAKtgB,MAAM+M,QAAiB8I,QAAS,WAAF,OAAQyK,EAAKqL,sBAAsB3M,KAAO,YAKxHzb,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,MAAIC,UAAU,SAASub,GAEvBzb,IAAAC,cAAA,MAAIC,UAAU,SAAQ,oBAClBF,IAAAC,cAACid,KAAM,CACHgB,SAAO,EACP5gB,OAAK,EAACi+B,OAAQ,CAAEC,WAAY,SAAAC,GAAI,OAAAC,0BAAA,GAAUD,GAAI,IAAErqB,OAAQ,SACxDtG,SAAU,SAAC5M,GAAI,OAAK6e,EAAKkO,2BAA2B/sB,EAAMud,EAAMzJ,IAChEpD,QAASwsB,EAAqBx8B,KAAI,SAAUqF,GAAK,MAAO,CAAE3G,MAAO2G,EAAG6J,MAAO7J,EAAE8I,MAAQ,IAAM9I,EAAEsd,aAErGvhB,IAAAC,cAAA,UAAID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAAS4R,QAAS,WAAF,OAAQyK,EAAKqL,sBAAsB3M,KAAO,qBAezH,CAAApe,IAAA,SAAAC,MAQD,WAAU,IAAD+f,EAAA,KACLvM,EAAyKtT,KAAKf,MAAtKyb,EAASpH,EAAToH,UAAWxJ,EAAYoC,EAAZpC,aAAc6B,EAAWO,EAAXP,YAAaiW,EAAS1V,EAAT0V,UAAWR,EAAiBlV,EAAjBkV,kBAAmBK,EAAevV,EAAfuV,gBAAiBP,EAAqBhV,EAArBgV,sBAAuBiC,EAA6BjX,EAA7BiX,8BAA+BwG,EAAiBzd,EAAjByd,kBAE7IoN,EAAc,CAChB,CAAE,MAAS,YAAa,MAAS,GACjC,CAAE,MAAS,aAAc,MAAS,IAClC,CAAE,MAAS,aAAc,MAAS,IAClC,CAAE,MAAS,aAAc,MAAS,IAClC,CAAE,MAAS,aAAc,MAAS,IAClC,CAAE,MAAS,aAAc,MAAS,KAItC,OACI37B,IAAAC,cAAA,OAAKC,UAAU,UAEXF,IAAAC,cAAA,UAAI,uBAAwB,sEAG5BD,IAAAC,cAAA,WAEAD,IAAAC,cAACqd,KAAS,CAACC,iBAAiB,aAAarF,UAAWA,GAChDlY,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,aAAatL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAC9F1a,KAAKf,MAAMiS,aAAahP,OAAS,EAAIsmB,EAAoB,eAE9DhmB,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,cACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACNxL,IAAAC,cAAA,WAEID,IAAAC,cAACqR,KAAS,CACNI,eAAgB,EAChBhD,aAAcA,EACdoP,iBAAe,EACfvM,WAAY/T,KAAKuS,iBAErB/P,IAAAC,cAAA,YACEzC,KAAKf,MAAMopB,iBAAmBnX,EAAahP,OAAS,EAAI,iCAAmC,KAC5FlC,KAAKf,MAAMopB,gBACR7lB,IAAAC,cAAA,OAAKC,UAAU,WACV1C,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAAIM,IAAAC,cAAA,WAAK,4BAA0BzC,KAAKf,MAAMiX,kBAA0B1T,IAAAC,cAAA,WAAK,wCAClHzC,KAAKf,MAAM0C,UAAUP,KAAI,SAACW,EAAUyS,GACjC,OACIhS,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAMiX,mBAAqBnU,EAAU+S,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4BjU,KAAYA,MAGhIS,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMgX,YAAgD,IAAlCjW,KAAKf,MAAM8T,YAAY7Q,OAAc4S,QAAS9U,KAAK4yB,uBAAwB5yB,KAAKf,MAAMgX,WAAa,mCAAqC,iBACnLzT,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMgX,YAAgD,IAAlCjW,KAAKf,MAAM8T,YAAY7Q,OAAc4S,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,qBAAsB1a,KAAKf,MAAMgX,WAAa,mCAAqC,4BAE7MzT,IAAAC,cAAC8B,IAAM,CAAC4J,QAAQ,UAAU/J,SAAUpE,KAAKf,MAAM+M,SAAuD,IAA5ChM,KAAKf,MAAMqpB,sBAAsBpmB,OAAc4S,QAAS9U,KAAKgnB,sBAAsB,uBAC7IxkB,IAAAC,cAACilB,WAAO,CAAC1S,IAAK,SAACnQ,GAAC,OAAKgb,EAAKwH,cAAgBxiB,GAAGnE,KAAMV,KAAKf,MAAMqpB,sBAAuBloB,QAASA,GAASsC,UAAU,SAASilB,SAAUxoB,IAAOa,KAAKf,MAAM8T,aAAa9Q,OAAO,eAAiBjC,KAAKf,MAAMiX,iBAAmB,wBAG3N,MAKTnD,EACGvQ,IAAAC,cAAA,OAAKC,UAAU,WACV1C,KAAKf,MAAMopB,gBACR7lB,IAAAC,cAAA,WACKzC,KAAKf,MAAMsrB,8BACRvqB,KAAKf,MAAMsrB,8BAA8BroB,OAAS,EAAIM,IAAAC,cAAA,WAAK,UAAQzC,KAAKf,MAAMsrB,8BAA8BroB,OAAO,WAA6D,IAApDlC,KAAKf,MAAMsrB,8BAA8BroB,OAAe,KAAO,IAAI,MACzLM,IAAAC,cAAA,WAC0C,IAAvCzC,KAAKf,MAAMiX,iBAAiBhU,QAAgBlC,KAAKf,MAAMqpB,sBAAsBpmB,OAAS,EACnFM,IAAAC,cAAA,WAAK,uFAELD,IAAAC,cAAA,WAAK,yCAEJ,MAEZ,MAER,QAKzBD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,mBAAmBtL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,uBAAuB,gCAGhIlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,oBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACS,qBAAd0M,EAAmClY,IAAAC,cAAA,WAC/BzC,KAAKf,MAAMq6B,WAAa92B,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACpCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMq6B,aACb,KACVt5B,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,MACN,KAGR3S,KAAKf,MAAMiS,aAAahP,OAAS,EAC9BM,IAAAC,cAAA,WAC4C,IAAvCzC,KAAKf,MAAMiX,iBAAiBhU,OACzBM,IAAAC,cAAA,WAAK,8EAEDD,IAAAC,cAAA,OAAKC,UAAU,WACV1C,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAAIM,IAAAC,cAAA,WAAK,4BAA0BzC,KAAKf,MAAMiX,kBAChF,KACJ1T,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,iBAAhCpE,KAAKf,MAAMiX,iBAAqCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,kBAAiB,gBACnIxT,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,YAAhCpE,KAAKf,MAAMiX,iBAAgCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,aAAY,aAIjIxT,IAAAC,cAAA,WACyD,IAApDzC,KAAKf,MAAMsrB,8BAA8BroB,OACtCM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,qEACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBAGrFlY,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,qBAAqB,qBAGzFlY,IAAAC,cAAA,YAGJD,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACPzC,KAAKf,MAAMwpB,UAiDE,KAhDXjmB,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,WACJD,IAAAC,cAAA,UAAI,qBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMsrB,8BAA8BnpB,KAAI,SAACF,EAAGsT,GAC9C,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,OACvBvhB,IAAAC,cAAA,UAAKvB,EAAEskB,gBACFtkB,EAAEqoB,YAAYtoB,QAAO,SAAAC,GAAC,OAAIA,EAAEiI,KAAKoI,SAAS,mBAAiBnQ,KAAI,SAAAF,GAAC,OAAIA,EAAEiI,QAAM/H,KAAI,SAAA+H,GAAU,OAAQ3G,IAAAC,cAAA,WAAM0G,OAE7G3G,IAAAC,cAAA,UACKvB,EAAEskB,gBAAgBjU,SAAS,WAAarQ,EAAE8D,eAAe,qBAAuB9D,EAAE4kB,iBAAiB5jB,OAAS,EACzGM,IAAAC,cAAA,WACKvB,EAAEu8B,mBAAqB,MACpBj7B,IAAAC,cAAA,WACKvB,EAAE4kB,kBAAoB5kB,EAAE4kB,iBAAiB5jB,OAAS,EAC/CM,IAAAC,cAAA,WACKvB,EAAE4kB,iBAAiB1kB,KAAI,SAAAkgB,GACpB,OACI9e,IAAAC,cAAA,WACKtD,IAAOmiB,EAAOvhB,MAAMkC,OAAO,cAAgB,OAASqf,EAAO1K,SAAW,OAAS0K,EAAOvf,SAAW,SAAWuf,EAAO3K,gBAK3H,0BAKvB,OAIVnU,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACrB,SAAuC,IAA9BhC,EAAEs8B,wBAAmC,UAAY,UAAW1oB,QAAS,WAAF,OAAQ+K,EAAKue,yBAAwB,EAAM5pB,IAAQD,KAAK,MAAK,4BAa/L/R,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAA,eASpBD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,iBAAiBtL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,qBAAqB,4BAG5HlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,kBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACLhO,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACI,mBAAd+H,EACGlY,IAAAC,cAAA,YAES,KAGZzC,KAAKf,MAAMiS,aAAahP,OAAS,EAG9BM,IAAAC,cAAA,WAC4C,IAAvCzC,KAAKf,MAAMiX,iBAAiBhU,OACzBM,IAAAC,cAAA,WAAK,8EAEDD,IAAAC,cAAA,OAAKC,UAAU,WACV1C,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAAIM,IAAAC,cAAA,WAAK,4BAA0BzC,KAAKf,MAAMiX,kBAChF,KACJ1T,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,iBAAhCpE,KAAKf,MAAMiX,iBAAqCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,kBAAiB,gBACnIxT,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,YAAhCpE,KAAKf,MAAMiX,iBAAgCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,aAAY,aAKjIxT,IAAAC,cAAA,WACKzC,KAAKf,MAAMopB,gBACR7lB,IAAAC,cAAA,WACID,IAAAC,cAAA,UAAI,gBAEJD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUoS,QAAS,WAAF,OAAQ+K,EAAKiT,mBAAkB,EAAM,SAAQ,8BAEhFtwB,IAAAC,cAAA,WACAD,IAAAC,cAAA,UAAI,oBACHzC,KAAKf,MAAMgqB,6BAA6B/mB,OAAS,EAC9CM,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUQ,QAAQ,UAAUkB,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAKgzB,gBAAgB,qBAC1GxwB,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,MAAIC,UAAU,UACVF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,WACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,cACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,eAG9BF,IAAAC,cAAA,aACKzC,KAAKf,MAAMgqB,6BAA6B7nB,KAAI,SAACF,EAAGsT,GAC7C,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,EAAO9R,UAAU,UACtBF,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEsN,QAAQgX,iBACjChjB,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEsN,QAAQe,OACjC/M,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEsN,QAAQuV,aAMrDvhB,IAAAC,cAAA,YAGFD,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAS,kCAKjBD,IAAAC,cAAA,UAAI,oBACJD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAE9I6P,EAA8BroB,OAAS,EACpCM,IAAAC,cAAA,WACID,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,MAAIC,UAAU,UACVF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,WACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,cACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,eAG9BF,IAAAC,cAAA,aACK8nB,EAA8BnpB,KAAI,SAACF,EAAGsT,GACnC,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,EAAO9R,UAAU,UACtBF,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEskB,iBACzBhjB,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAEqO,OACzB/M,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAE6iB,aAM7CvhB,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,YAAYR,UAAU,UAAUoS,QAAS,WAAF,OAAQ+K,EAAKiT,mBAAkB,EAAM,UAAS,gBACrGtwB,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,YAAYR,UAAU,UAAUoS,QAAS,WAAF,OAAQ+K,EAAKiT,mBAAkB,EAAM,UAAS,gBAErGtwB,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASR,UAAU,UAAUoS,QAAS,WAAF,OAAQ+K,EAAKiT,mBAAkB,EAAM,YAAW,mBAG/FtwB,IAAAC,cAAA,WAAKD,IAAAC,cAAA,WAAS,kCAI/BD,IAAAC,cAAA,WAAK,6EAEDD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,2BAYvGlY,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAA,eAUpBD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,mBAAmBtL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,uBAAuB,sBAGhIlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,oBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KAELhO,KAAKf,MAAMiS,aAAahP,OAAS,EAC9BM,IAAAC,cAAA,WAC4C,IAAvCzC,KAAKf,MAAMiX,iBAAiBhU,OACzBM,IAAAC,cAAA,WACID,IAAAC,cAAA,SAAG,+EACHD,IAAAC,cAAA,OAAKC,UAAU,WACV1C,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAAIM,IAAAC,cAAA,WAAK,4BAA0BzC,KAAKf,MAAMiX,kBAChF,KACJ1T,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,iBAAhCpE,KAAKf,MAAMiX,iBAAqCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,kBAAiB,gBACnIxT,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,YAAhCpE,KAAKf,MAAMiX,iBAAgCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,aAAY,aAIjIxT,IAAAC,cAAA,WACyD,IAApDzC,KAAKf,MAAMsrB,8BAA8BroB,OACtCM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,qEACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBAGrFlY,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,qBAAqB,qBAGzFlY,IAAAC,cAAA,YAGJD,IAAAC,cAAA,WACID,IAAAC,cAAA,WACKzC,KAAKf,MAAMq6B,WAAa92B,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACpCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMq6B,aACb,KACVt5B,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,MAEfnQ,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS,WAAF,OAAQ+K,EAAKgU,oBAAoB,MAAK,mCAElJrxB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACPzC,KAAKf,MAAMwpB,UAuBE,KArBXjmB,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMsrB,8BAA8BnpB,KAAI,SAACF,EAAGsT,GAC9C,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,OACvBvhB,IAAAC,cAAA,UAAKvB,EAAE0jB,kBACPpiB,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAMwpB,WAAa5I,EAAK5gB,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKgU,oBAAoB,CAAC3yB,KAAKqT,KAAK,MAAK,+BAapK/R,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAA,eAOnBzC,KAAKf,MAAMiX,iBAAiB3E,SAAS,YAAc/O,IAAAC,cAAA,WAEhDD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,eAAetL,QAAS9U,KAAK4yB,uBAAuB,6BAGhGpwB,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,gBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACS,iBAAd0M,EACGlY,IAAAC,cAAA,WAEID,IAAAC,cAAA,WACID,IAAAC,cAAA,WACKzC,KAAKf,MAAMgqB,6BAA6B/mB,OAAS,EAC9CM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,qGACLD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUQ,QAAQ,UAAU4R,QAAS9U,KAAKgzB,gBAAgB,sBAG9E,KAGoC,IAAzChzB,KAAKf,MAAMqrB,mBAAmBpoB,OAAe,KAAOM,IAAAC,cAAA,WAAK,MAAGD,IAAAC,cAAA,WAAK,4BAC7DzC,KAAKf,MAAMqrB,mBAAmBlpB,KAAI,SAACi9B,GAChC,OAAO77B,IAAAC,cAAC8B,IAAM,CAACgQ,KAAK,KAAKrR,QAAQ,QAAQm7B,EAAkBznB,cAInEpU,IAAAC,cAAA,WAAK,gCACLD,IAAAC,cAACid,KAAM,CACH5f,MAAOE,KAAKf,MAAMmrB,iBAClB9c,SAAU,SAAC5M,GAAI,OAAKmf,EAAKye,yBAAyB59B,IAClD0Q,QAAS+sB,IAEb37B,IAAAC,cAAA,WAEAD,IAAAC,cAAA,WAAK,2BAAyBtD,IAAO6pB,GAAW/mB,OAAO,uBACvDO,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC8d,KAAU,CAAC3I,MAAM,OAAOC,IAAI,QAAQ2I,KAAMxgB,KAAKf,MAAMorB,SAAU/c,SAAUtN,KAAKgb,sBAAuBlb,MAAOE,KAAKf,MAAMyY,aAE5HlV,IAAAC,cAACY,IAAG,CAACod,GAAI,GAAG,MACZje,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC8d,KAAU,CAAC3I,MAAOqB,uBAAYlB,SAAS/X,KAAKf,MAAMyY,WAAc,GAAK1X,KAAKf,MAAMorB,UAAYxS,IAAI,QAAQ2I,KAAMxgB,KAAKf,MAAMorB,SAAU/c,SAAUtN,KAAKib,wBAAyBnb,MAAOE,KAAKf,MAAM6Y,YAGtMtV,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUoS,QAAS9U,KAAK2uB,6BAA6B,6BAEtE3uB,KAAKyzB,+BAKVjxB,IAAAC,cAAA,WAGID,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUR,UAAU,UAAU0B,SAAUpE,KAAKf,MAAM+M,SAAsC,IAA3B6c,EAAgB3mB,OAAc4S,QAAS9U,KAAKszB,yBAAyB,gBAElJzK,EAAkB,KAAOrmB,IAAAC,cAAA,WAAK,gDAKlC,SAQpBD,IAAAC,cAAA,WACLD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,qBAAqBtL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,yBACtGmO,EAAkBrmB,IAAAC,cAAA,WAAMomB,GAAyB,gCAEtDrmB,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,sBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACS,uBAAd0M,EACGlY,IAAAC,cAAA,WACKsQ,EACGvQ,IAAAC,cAAA,WACKzC,KAAKu+B,qBAAqBxrB,IAE7BvQ,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBAIrFlY,IAAAC,cAAA,aAKV,QAIlBD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,eAAetL,QAAS9U,KAAK4yB,uBAAuB,qBAGhGpwB,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,gBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACS,iBAAd0M,EACGlY,IAAAC,cAAA,WACKsQ,EACGvQ,IAAAC,cAAA,WAC4C,IAAvCzC,KAAKf,MAAMiX,iBAAiBhU,OACzBM,IAAAC,cAAA,WAAK,8EAEDD,IAAAC,cAAA,OAAKC,UAAU,WACV1C,KAAKf,MAAMiX,iBAAiBhU,OAAS,EAAIM,IAAAC,cAAA,WAAK,4BAA0BzC,KAAKf,MAAMiX,kBAChF,KACJ1T,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,iBAAhCpE,KAAKf,MAAMiX,iBAAqCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,kBAAiB,gBACnIxT,IAAAC,cAAC8B,IAAM,CAACH,SAA0C,YAAhCpE,KAAKf,MAAMiX,iBAAgCpB,QAAS,WAAF,OAAQ+K,EAAK7J,4BAA4B,aAAY,aAIjIxT,IAAAC,cAAA,WACKzC,KAAKf,MAAMiX,iBAAiB3E,SAAS,YAClC/O,IAAAC,cAAA,WAAK,2HAGLD,IAAAC,cAAA,WACID,IAAAC,cAAA,WACKzC,KAAKf,MAAMgqB,6BAA6B/mB,OAAS,EAC9CM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,qGACLD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUQ,QAAQ,UAAU4R,QAAS9U,KAAKgzB,gBAAgB,sBAG9E,KAENxwB,IAAAC,cAAA,WAAK,gCACLD,IAAAC,cAACid,KAAM,CACH5f,MAAOE,KAAKf,MAAMmrB,iBAClB9c,SAAU,SAAC5M,GAAI,OAAKmf,EAAKye,yBAAyB59B,IAClD0Q,QAAS+sB,IAEb37B,IAAAC,cAAA,WAEAD,IAAAC,cAAA,WAAK,2BAAyBtD,IAAO6pB,GAAW/mB,OAAO,uBACvDO,IAAAC,cAAA,WACAD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC8d,KAAU,CAAC3I,MAAM,OAAOC,IAAI,QAAQ2I,KAAMxgB,KAAKf,MAAMorB,SAAU/c,SAAUtN,KAAKgb,sBAAuBlb,MAAOE,KAAKf,MAAMyY,aAE5HlV,IAAAC,cAACY,IAAG,CAACod,GAAI,GAAG,MACZje,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC8d,KAAU,CAAC3I,MAAOqB,uBAAYlB,SAAS/X,KAAKf,MAAMyY,WAAc,GAAK1X,KAAKf,MAAMorB,UAAYxS,IAAI,QAAQ2I,KAAMxgB,KAAKf,MAAMorB,SAAU/c,SAAUtN,KAAKib,wBAAyBnb,MAAOE,KAAKf,MAAM6Y,YAGtMtV,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,UAAUoS,QAAS9U,KAAKsY,eAAe,kBACxDtY,KAAKf,MAAMspB,gBAAgBrmB,OAAS,EAAIM,IAAAC,cAAA,WAAK,SAA6C,IAAtCzC,KAAKf,MAAMspB,gBAAgBrmB,OAAeM,IAAAC,cAAA,YAAM,MAAYD,IAAAC,cAAA,YAAM,OAAW,IAAEzC,KAAKf,MAAMspB,gBAAgBrmB,OAAO,WAA+C,IAAtClC,KAAKf,MAAMspB,gBAAgBrmB,OAAe,KAAO,IAAI,gBAC9NM,IAAAC,cAAA,WAAK,+CAIfD,IAAAC,cAAA,WACID,IAAAC,cAAA,WAE6B,IAA5BzC,KAAKf,MAAMuX,MAAMtU,OAAeM,IAAAC,cAAA,WAAK,oFAAyF,KAC/HD,IAAAC,cAAA,WACAD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAAC5E,YAAU,EAAC6E,KAAK,MAC1C/R,IAAAC,cAAA,aACID,IAAAC,cAAA,MAAIC,UAAU,UACVF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,KACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,QACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,YACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAQ,aAG9BF,IAAAC,cAAA,aACKzC,KAAKf,MAAMuX,MAAMpV,KAAI,SAACF,EAAGsT,GACtB,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,EAAO9R,UAAU,UACtBF,IAAAC,cAAA,MAAIC,UAAU,SAAS8R,EAAQ,GAC/BhS,IAAAC,cAAA,MAAIC,UAAU,SAASxB,EAAE0V,UACzBpU,IAAAC,cAAA,MAAIC,UAAU,SACVF,IAAAC,cAACid,KAAM,CACH5f,MAAO,CACHwQ,MAAOuP,EAAK5gB,MAAMuX,MAAMhC,GAAO2V,OAC/BrqB,MAAO+f,EAAK5gB,MAAMuX,MAAMhC,GAAO1U,OAEnCwN,SAAU,SAAC5M,GAAI,OAAKmf,EAAK0N,kBAAkB7sB,EAAM8T,IACjDpD,QAASyO,EAAK5gB,MAAMspB,gBAAgBnnB,KAAI,SAAUF,GAAK,MAAO,CAAEpB,MAAOoB,EAAGoP,MAAOpP,EAAEqO,MAAQ,IAAMrO,EAAE6iB,aAE3GvhB,IAAAC,cAAA,MAAIC,UAAU,SACVF,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,YAAYkB,SAAoB,IAAVoQ,EAAaM,QAAS,WAAF,OAAQ+K,EAAK2e,eAAehqB,EAAO,OAAOD,KAAK,MAAK,WAC9G/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,YAAYkB,SAAUoQ,IAAUqL,EAAK5gB,MAAMuX,MAAMtU,OAAS,EAAG4S,QAAS,WAAF,OAAQ+K,EAAK2e,eAAehqB,EAAO,SAASD,KAAK,MAAK,aAC1I/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,YAAYkB,SAAoD,IAA1Cyb,EAAK5gB,MAAMuX,MAAMhC,GAAO2V,OAAOjoB,OAAc4S,QAAS,WAAF,OAAQ+K,EAAKc,gBAAgBnM,IAAQD,KAAK,MAAK,cACzI/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAAS4R,QAAS,WAAF,OAAQ+K,EAAKe,iBAAiBpM,IAAQD,KAAK,MAAK,sBASxG/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUR,UAAU,UAAU0B,SAAUpE,KAAKf,MAAM+M,SAAsC,IAA3B6c,EAAgB3mB,OAAc4S,QAAS9U,KAAKkb,gBAAgB,gBAEzI2N,EAAkB,KAAOrmB,IAAAC,cAAA,WAAK,iDASvDD,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBAGrFlY,IAAAC,cAAA,aAEH,SAW7BD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,gBAAgBtL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,oBACjG1a,KAAKf,MAAMiX,iBAAiB3E,SAAS,YAAc,0BAA4B,gCAEpF/O,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,iBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACLhO,KAAKf,MAAMiS,aAAahP,OAAS,EAE9BM,IAAAC,cAAA,WACKzC,KAAKf,MAAMiX,iBAAiB3E,SAAS,YAClC/O,IAAAC,cAAA,WACKzC,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACV3S,KAAKf,MAAMwpB,UAAYjmB,IAAAC,cAAA,WAAKD,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACxCV,IAAAC,cAAA,cAAQ,wKACRD,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS9U,KAAKkb,gBAAgB,YAGnD,KACT1Y,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS,WAAF,OAAQ+K,EAAKmU,2BAA2B,MAAK,4BACzJxxB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAKuzB,gBAAgB,sBACnI/wB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAK6sB,8BAA8B,0CACjJrqB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAKqtB,6BAA6B,yCAChJ7qB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAKstB,gCAAgC,yCAGlJttB,KAAKf,MAAMqyB,kBAAkBpvB,OAAS,EAAIM,IAAAC,cAAA,WAAK,wDAAsDzC,KAAKf,MAAMqyB,mBAA2B,KAE5I9uB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACTD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,SACJD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,UAAI,aAGXzC,KAAKf,MAAMspB,gBAAgBrmB,OAAS,EACjCM,IAAAC,cAAA,aACKzC,KAAKf,MAAMspB,gBAAgBnnB,KAAI,SAACF,EAAGsT,GAChC,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,OACvBvhB,IAAAC,cAAA,UAAKvB,EAAEslB,cACPhkB,IAAAC,cAAA,UAAKvB,EAAE0jB,kBACPpiB,IAAAC,cAAA,UAAKvB,EAAE6jB,wBACPviB,IAAAC,cAAA,UAAKvB,EAAE4jB,4BACPtiB,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAMwpB,WAAa5I,EAAK5gB,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKgU,oBAAoB,CAAC3yB,KAAKqT,KAAK,MAAK,qBACtH/R,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAMwpB,WAAa5I,EAAK5gB,MAAM+M,UAAY9K,EAAE8D,eAAe,cAAe8P,QAAS,WAAF,OAAQ+K,EAAKoU,2BAA2B,CAAC/yB,KAAKqT,KAAK,MAAK,QAAMrT,EAAE8D,eAAe,cAAgB9D,EAAEmoB,WAAa,eAAe,qBAQzP7mB,IAAAC,cAAA,cAKZD,IAAAC,cAAA,WACiC,IAA5BzC,KAAKf,MAAMuX,MAAMtU,OACdM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,6EACLD,IAAAC,cAAA,WAAK,mEACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,yBAErFlY,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,mBAAmB,uBAEvFlY,IAAAC,cAAA,YAEJD,IAAAC,cAAA,WACKzC,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,KACV3S,KAAKf,MAAMwpB,UAAYjmB,IAAAC,cAAA,WAAKD,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACxCV,IAAAC,cAAA,cAAQ,wKACRD,IAAAC,cAAA,WACAD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS9U,KAAKkb,gBAAgB,YAGnD,KACT1Y,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS,WAAF,OAAQ+K,EAAKmU,2BAA2B,MAAK,iCACzJxxB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAKuzB,gBAAgB,sBACnI/wB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAK6sB,8BAA8B,0CACjJrqB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAKqtB,6BAA6B,yCAChJ7qB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAMkyB,kBAA0C,GAAtBnxB,KAAKf,MAAM+M,QAAiB8I,QAAS9U,KAAKstB,gCAAgC,yCAGlJttB,KAAKf,MAAMqyB,kBAAkBpvB,OAAS,EAAIM,IAAAC,cAAA,WAAK,wDAAsDzC,KAAKf,MAAMqyB,mBAA2B,KAE5I9uB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACTD,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,SACJD,IAAAC,cAAA,UAAI,WACJD,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,UAAI,gBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAASK,KAAI,SAACF,EAAGsT,GACvG,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEpB,MAAMyP,MAAQ,IAAMrO,EAAEpB,MAAMikB,OACnCvhB,IAAAC,cAAA,UAAKvB,EAAEpB,MAAM0mB,cACbhkB,IAAAC,cAAA,UAAKvB,EAAEpB,MAAMsP,aACb5M,IAAAC,cAAA,UAAKvB,EAAEpB,MAAM2W,MACbjU,IAAAC,cAAA,UAAKvB,EAAEpB,MAAM8kB,kBACbpiB,IAAAC,cAAA,UAAKvB,EAAEpB,MAAMilB,wBACbviB,IAAAC,cAAA,UAAKvB,EAAEpB,MAAMglB,4BACbtiB,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAMwpB,WAAa5I,EAAK5gB,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKgU,oBAAoB,CAAC3yB,EAAEpB,SAASyU,KAAK,MAAK,qBAC5H/R,IAAAC,cAAC8B,IAAM,CAACH,SAAUyb,EAAK5gB,MAAMwpB,WAAa5I,EAAK5gB,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKmU,2BAA2B,CAAC9yB,EAAEpB,SAASyU,KAAK,MAAK,6BAe7K/R,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAA,eAMpBD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,iBAAiBtL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,qBAAqB,2BAG5HlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,kBACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACS,mBAAd0M,EAAiClY,IAAAC,cAAA,WAC7BzC,KAAKf,MAAMq6B,WAAa92B,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACpCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMq6B,aACb,KACVt5B,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,MACN,KAGR3S,KAAKf,MAAMiS,aAAahP,OAAS,EAC9BM,IAAAC,cAAA,WACKzC,KAAKf,MAAMiX,iBAAiB3E,SAAS,YAAc/O,IAAAC,cAAA,WACT,IAAtCzC,KAAKf,MAAMspB,gBAAgBrmB,OACxBM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,oEACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBAGrFlY,IAAAC,cAAA,YAGJD,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACPzC,KAAKf,MAAMwpB,UA8BE,KA7BXjmB,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,UACJD,IAAAC,cAAA,UAAI,oBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMspB,gBAAgBnnB,KAAI,SAACF,EAAGsT,GAChC,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,OACvBvhB,IAAAC,cAAA,UAAKvB,EAAEyiB,eACLziB,EAAE8D,eAAe,uBAAgD,IAAxB9D,EAAEwkB,kBAGzCljB,IAAAC,cAAA,UAAI,QAFJvB,EAAEyiB,cAAcpS,SAAS,0BAA4B/O,IAAAC,cAAA,UAAI,YAAgBD,IAAAC,cAAA,UAAI,OAIjFD,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACH,UAAkC,IAAxBlD,EAAEwkB,kBAA4B5Q,QAAS,WAAF,OAAQ+K,EAAKyO,sCAAsC9Z,EAAO,YAAY,IAAQD,KAAK,MAAK,aAC/I/R,IAAAC,cAAC8B,IAAM,CAACH,UAAWlD,EAAE8D,eAAe,uBAAgD,IAAxB9D,EAAEwkB,kBAA6B5Q,QAAS,WAAF,OAAQ+K,EAAKyO,sCAAsC9Z,EAAO,eAAe,IAAQD,KAAK,MAAK,0BAUjO/R,IAAAC,cAAA,WACiC,IAA5BzC,KAAKf,MAAMuX,MAAMtU,OACdM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,6EACLD,IAAAC,cAAA,WAAK,mEACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBAGrFlY,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,mBAAmB,sBAGvFlY,IAAAC,cAAA,YAGJD,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACPzC,KAAKf,MAAMwpB,UA8BE,KA7BXjmB,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,UACJD,IAAAC,cAAA,UAAI,oBACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAASK,KAAI,SAACF,EAAGsT,GACvG,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEpB,MAAMyP,MAAQ,IAAMrO,EAAEpB,MAAMikB,OACnCvhB,IAAAC,cAAA,UAAKvB,EAAEpB,MAAM6jB,eACXziB,EAAEpB,MAAMkF,eAAe,uBAAsD,IAA9B9D,EAAEpB,MAAM4lB,kBAGrDljB,IAAAC,cAAA,UAAI,QAFJvB,EAAEpB,MAAM6jB,cAAcpS,SAAS,0BAA4B/O,IAAAC,cAAA,UAAI,YAAgBD,IAAAC,cAAA,UAAI,OAIvFD,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACH,UAAwC,IAA9BlD,EAAEpB,MAAM4lB,kBAA4B5Q,QAAS,WAAF,OAAQ+K,EAAKyO,sCAAsC9Z,EAAO,YAAY,IAAOD,KAAK,MAAK,aACpJ/R,IAAAC,cAAC8B,IAAM,CAACH,UAAWlD,EAAEpB,MAAMkF,eAAe,uBAAsD,IAA9B9D,EAAEpB,MAAM4lB,kBAA6B5Q,QAAS,WAAF,OAAQ+K,EAAKyO,sCAAsC9Z,EAAO,eAAe,IAAOD,KAAK,MAAK,2BAWtP/R,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAA,eAKpBD,IAAAC,cAACud,KAAI,KACDxd,IAAAC,cAACqd,KAAUG,OAAM,CAACC,GAAIF,KAAKG,OAAQC,SAAS,yBAAyBtL,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,6BAA6B,qDAG5IlY,IAAAC,cAACqd,KAAUO,SAAQ,CAACD,SAAS,0BACzB5d,IAAAC,cAACud,KAAKhS,KAAI,KACS,2BAAd0M,EAAyClY,IAAAC,cAAA,WACrCzC,KAAKf,MAAMq6B,WAAa92B,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACpCV,IAAAC,cAAA,cAASzC,KAAKf,MAAMq6B,aACb,KACVt5B,KAAKf,MAAM0T,cAAgBnQ,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACvCV,IAAAC,cAAA,cAASzC,KAAKf,MAAM0T,gBACb,MACN,KAER3S,KAAKf,MAAMiS,aAAahP,OAAS,EAC9BM,IAAAC,cAAA,WACKzC,KAAKf,MAAMiX,iBAAiB3E,SAAS,YAAc/O,IAAAC,cAAA,WACT,IAAtCzC,KAAKf,MAAMspB,gBAAgBrmB,OACxBM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,+CACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAA,YAGJD,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKkO,4BAA4B,IAAK,aAAc,OAAO,KAAQ,iCAChJvrB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKiU,8BAA6B,KAAQ,+CACvHtxB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKkU,8BAA6B,KAAQ,+CACvHvxB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACPzC,KAAKf,MAAMwpB,UA6CE,KA5CXjmB,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,oBACJD,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMspB,gBAAgBnnB,KAAI,SAACF,EAAGsT,GAChC,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEqO,MAAQ,IAAMrO,EAAE6iB,OACvBvhB,IAAAC,cAAA,UAAKvB,EAAEq4B,eACH/2B,IAAAC,cAAA,YAG0B,WAArBvB,EAAEq4B,eAA8B,WACR,IAArBr4B,EAAEq4B,eAA2B,aACzB,UAGZ,cAGJ/2B,IAAAC,cAAA,UAAKvB,EAAEs4B,yBACHh3B,IAAAC,cAAA,aACoC,IAA/BvB,EAAEs4B,yBAAqC,WAAa,QAGzD,YAGJh3B,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACH,UAA+B,IAArBlD,EAAEq4B,eAAyBzkB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,aAAc,GAAG,IAAQD,KAAK,MAAK,eACtI/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASkB,UAAWlD,EAAE8D,eAAe,oBAA0C,IAArB9D,EAAEq4B,eAA0BzkB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,gBAAiB,GAAG,IAAQD,KAAK,MAAK,mBAClM/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUkB,SAA8B,UAApBlD,EAAEq4B,eAA4BzkB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,aAAc,GAAG,IAAQD,KAAK,MAAK,gBAC3J/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,OAAOkB,UAAWlD,EAAE8D,eAAe,8BAA8D,IAA/B9D,EAAEs4B,yBAAoC1kB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,gCAAiC,GAAG,IAAQD,KAAK,MAAK,8BAYxQ/R,IAAAC,cAAA,WACiC,IAA5BzC,KAAKf,MAAMuX,MAAMtU,OACdM,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,6EACLD,IAAAC,cAAA,WAAK,mEACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,mBAAmB,sBACvFlY,IAAAC,cAAA,YAGJD,IAAAC,cAAA,WACID,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKkO,4BAA4B,IAAK,aAAc,OAAO,KAAO,iCAC/IvrB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKiU,8BAA6B,KAAO,+CACtHtxB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAMwpB,WAAazoB,KAAKf,MAAM+M,QAAS8I,QAAS,WAAF,OAAQ+K,EAAKkU,8BAA6B,KAAO,+CACtHvxB,IAAAC,cAAC8B,IAAM,CAAC7B,UAAU,WAAW0B,SAAUpE,KAAKf,MAAMoyB,YAAcrxB,KAAKf,MAAMwpB,UAAW3T,QAAS,WAAF,OAAQ+K,EAAKlN,cAAckN,EAAK5gB,MAAMyb,aAAY,qBAC/IlY,IAAAC,cAAA,WAASD,IAAAC,cAAA,WACPzC,KAAKf,MAAMwpB,UA6CE,KA5CXjmB,IAAAC,cAAC0R,IAAK,CAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC/B/R,IAAAC,cAAA,aACID,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,QACJD,IAAAC,cAAA,UAAI,oBACJD,IAAAC,cAAA,UAAI,cACJD,IAAAC,cAAA,UAAI,aAGZD,IAAAC,cAAA,aACKzC,KAAKf,MAAMuX,MAAMvV,QAAO,SAAAC,GAAC,OAAKH,OAAOC,KAAKE,EAAEpB,OAAOoC,OAAS,GAAKhB,EAAEpB,MAAMoJ,cAAgBnI,UAASK,KAAI,SAACF,EAAGsT,GACvG,OACIhS,IAAAC,cAAA,MAAI5C,IAAK2U,GACLhS,IAAAC,cAAA,UAAKvB,EAAEpB,MAAMyP,MAAQ,IAAMrO,EAAEpB,MAAMikB,OACnCvhB,IAAAC,cAAA,UAAKvB,EAAEpB,MAAMy5B,eACT/2B,IAAAC,cAAA,YAGgC,WAA3BvB,EAAEpB,MAAMy5B,eAA8B,WACR,IAA3Br4B,EAAEpB,MAAMy5B,eAA2B,aAC/B,UAGZ,cAGJ/2B,IAAAC,cAAA,UAAKvB,EAAEpB,MAAM05B,yBACTh3B,IAAAC,cAAA,aAC0C,IAArCvB,EAAEpB,MAAM05B,yBAAqC,WAAa,QAG/D,YAGJh3B,IAAAC,cAAA,UACID,IAAAC,cAAC8B,IAAM,CAACH,UAAqC,IAA3BlD,EAAEpB,MAAMy5B,eAAyBzkB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,aAAc,GAAG,IAAOD,KAAK,MAAK,eAC3I/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASkB,UAAWlD,EAAEpB,MAAMkF,eAAe,oBAAgD,IAA3B9D,EAAEpB,MAAMy5B,eAA0BzkB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,gBAAiB,GAAG,IAAOD,KAAK,MAAK,mBAC7M/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAUkB,SAAoC,UAA1BlD,EAAEpB,MAAMy5B,eAA4BzkB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,aAAc,GAAG,IAAOD,KAAK,MAAK,gBAChK/R,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,OAAOkB,UAAWlD,EAAEpB,MAAMkF,eAAe,8BAAoE,IAArC9D,EAAEpB,MAAM05B,yBAAoC1kB,QAAS,WAAF,OAAQ+K,EAAKkO,2BAA2BvZ,EAAO,gCAAiC,GAAG,IAAOD,KAAK,MAAK,+BAe7R/R,IAAAC,cAAA,WACED,IAAAC,cAAA,WAAK,iGACLD,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,UAAU4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEya,UAAW,iBAAiB,wBACrFlY,IAAAC,cAAA,gBAWxBD,IAAAC,cAACkL,IAAK,CACF4G,KAAK,KACL3G,KAAM5N,KAAKf,MAAMsyB,UACjB1jB,OAAQ,WAAF,OAAQgS,EAAK5f,SAAS,CAAEsxB,WAAW,EAAOC,UAAW,OAE3DhvB,IAAAC,cAACkL,IAAMwS,OAAM,CAACse,aAAW,GACrBj8B,IAAAC,cAACkL,IAAM+wB,MAAK,CAAC1zB,GAAG,sCACc,QAAzBhL,KAAKf,MAAMuyB,UAAsB,kBAAoB,KAC5B,SAAzBxxB,KAAKf,MAAMuyB,UAAuB,eAAiB,KAC1B,SAAzBxxB,KAAKf,MAAMuyB,UAAuB,eAAiB,KAC1B,SAAzBxxB,KAAKf,MAAMuyB,UAAuB,eAAiB,KAC1B,WAAzBxxB,KAAKf,MAAMuyB,UAAyB,iBAAmB,OAGhEhvB,IAAAC,cAACkL,IAAMK,KAAI,KAEmB,QAAzBhO,KAAKf,MAAMuyB,UACRhvB,IAAAC,cAAC+c,KAAI,CAACuG,YAAU,EAAC2X,UAAW3M,EAAmB/jB,SAAUhN,KAAKozB,kBAC1D5wB,IAAAC,cAAC0jB,KAAU,CAACzjB,UAAU,QAClBF,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,gBACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM0kB,cAClBzV,YAAY,uCACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC0jB,KAAWC,OAAM,KACd5jB,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,oBAAoB4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAE0jB,cAAe,6BAA6B,aAIvHnhB,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,cACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,YACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM2yB,UAClB1jB,YAAY,aACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,yBAE1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,aACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,WACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM4yB,SAClB3jB,YAAY,YACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,0BAG9C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,eAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,iBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,cACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM6yB,YAClB5jB,YAAY,aACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,wBAG1C5D,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,gBAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,iBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,eACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM8yB,aAClB7jB,YAAY,aACZZ,SAAUtN,KAAK2qB,0BAGvBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,kCAG1C5D,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,cAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,qBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,kBACL/C,KAAK,OACLtG,MAAOE,KAAKf,MAAM+yB,gBAClB9jB,YAAY,aACZZ,SAAUtN,KAAK2qB,yBAEnBnoB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,wCAMlD5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,SAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,SACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,QACL/C,KAAK,QACLtG,MAAOE,KAAKf,MAAM4M,MAClBqC,YAAY,aACZZ,SAAUtN,KAAK2qB,uBACfpd,aAAa,UAEjB/K,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,kCAG1C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,eAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,gBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CAAC3X,UAAQ,EAClB9E,KAAK,cACL/C,KAAK,MACLtG,MAAOE,KAAKf,MAAMgzB,YAClB/jB,YAAY,aACZZ,SAAUtN,KAAK2qB,uBACfpd,aAAa,iBAEjB/K,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,iCAG1C5D,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,mBAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,qBACX3lB,KAAKf,MAAMgmB,iBAAiB7jB,KAAI,SAACuD,EAAG9E,GACjC,OACI2C,IAAAC,cAAC+c,KAAKC,MAAK,CACP5f,IAAKA,EACLoO,UAAQ,EACRsC,QAASsP,EAAK5gB,MAAMizB,wBAA0BvtB,EAAEpB,QAChD4F,KAAK,kBACL6B,GAAIrG,EAAEpB,QACN6C,KAAK,QACLkK,MAAO3L,EAAEpB,QACT+J,SAAUuS,EAAKkT,0BAI3BvwB,IAAAC,cAAC+c,KAAKoG,QAAQK,SAAQ,CAAC7f,KAAK,WAAU,6BAI1C5D,IAAAC,cAAC+c,KAAKC,MAAK,CAACiH,QAAM,EAACpW,MAAM,6BAA6BlK,KAAM,WAAY4E,GAAE,2BAA8BuF,QAASvQ,KAAKf,MAAMkzB,yBAA0B7kB,SAAU,WAAF,OAAQuS,EAAK5f,SAAS,CAAEkyB,0BAA2BtS,EAAK5gB,MAAMkzB,8BAC5N3vB,IAAAC,cAAA,WACAD,IAAAC,cAAC8B,IAAM,CAAC6B,KAAK,UAAS,OACtB5D,IAAAC,cAAA,WACAD,IAAAC,cAAA,YAKF,KAEoB,SAAzBzC,KAAKf,MAAMuyB,UACRhvB,IAAAC,cAAA,WACID,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,6BAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,kBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,kBACL+W,GAAG,SACH5S,SAAUtN,KAAK2qB,wBAEdrC,EAAsBlnB,KAAI,SAACF,EAAGsT,GAC3B,IAAIrL,EAAOjI,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAC7B,OAAOvhB,IAAAC,cAAA,UAAQ5C,IAAKsJ,EAAOjI,EAAEgW,UAAWpX,MAAO0U,GAAQrL,QAKnE3G,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,kBAEZnjB,IAAAC,cAACk8B,KAAoB,CACjB7+B,MAAOE,KAAKf,MAAMszB,gBAClBjlB,SAAU,SAAC5M,GAAI,OAAKmf,EAAK8T,wBAAwBjzB,IACjD08B,cAAc,EACd/M,YAAarwB,KAAK8vB,wBAClBuN,gBAAc,IAEjBr9B,KAAKf,MAAM0lB,UAAUziB,OAAS,EAAIM,IAAAC,cAAA,WAAMzC,KAAKf,MAAM0lB,WAC9C,KAENniB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAKizB,mBAC/CjzB,KAAKf,MAAM+M,QAAU,+BAAiC,QAE3DxJ,IAAAC,cAAA,WAAK,oEACLD,IAAAC,cAAA,WAAK,oDAEA,KAGa,SAAzBzC,KAAKf,MAAMuyB,UACRhvB,IAAAC,cAAA,WACID,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,6BAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,kBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,kBACL+W,GAAG,SACH5S,SAAUtN,KAAK2qB,wBAEdrC,EAAsBlnB,KAAI,SAACF,EAAGsT,GAC3B,IAAIrL,EAAOjI,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAC7B,OAAOvhB,IAAAC,cAAA,UAAQ5C,IAAKsJ,EAAOjI,EAAEgW,UAAWpX,MAAO0U,GAAQrL,QAKnE3G,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,kBACZnjB,IAAAC,cAAC06B,KAAW,CACRr9B,MAAOE,KAAKf,MAAMqzB,gBAClBhlB,SAAU,SAAC5M,GAAI,OAAKmf,EAAK+T,wBAAwBlzB,IACjD08B,cAAc,EACd/M,YAAarwB,KAAK8vB,wBAClBuN,gBAAc,IAEjBr9B,KAAKf,MAAMuzB,UAAUtwB,OAAS,EAAIM,IAAAC,cAAA,WAAMzC,KAAKf,MAAMuzB,WAC9C,KAENhwB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAM+M,QAAS8I,QAAS9U,KAAKkzB,mBAC/ClzB,KAAKf,MAAM+M,QAAU,+BAAiC,QAE3DxJ,IAAAC,cAAA,WAAK,sEACA,KAGa,WAAzBzC,KAAKf,MAAMuyB,UACRhvB,IAAAC,cAAA,WACID,IAAAC,cAAC+c,KAAKwG,MAAK,CAAC9Y,UAAU,6BAClB1K,IAAAC,cAAC+c,KAAKmG,MAAK,KAAC,kBACZnjB,IAAAC,cAAC+c,KAAKoG,QAAO,CACTzc,KAAK,kBACL+W,GAAG,SACH5S,SAAUtN,KAAK2qB,wBAEdrC,EAAsBlnB,KAAI,SAACF,EAAGsT,GAC3B,IAAIrL,EAAOjI,EAAEqO,MAAQ,IAAMrO,EAAE6iB,MAC7B,OAAOvhB,IAAAC,cAAA,UAAQ5C,IAAKsJ,EAAOjI,EAAEgW,UAAWpX,MAAO0U,GAAQrL,QAIlEnJ,KAAKf,MAAMwzB,YAAYvwB,OAAS,EAAIM,IAAAC,cAAA,WAAMzC,KAAKf,MAAMwzB,aAChD,KAENjwB,IAAAC,cAAC8B,IAAM,CAACH,SAAUpE,KAAKf,MAAM+M,QAAS9I,QAAQ,SAAS4R,QAAS9U,KAAKmzB,qBAChEnzB,KAAKf,MAAM+M,QAAU,iCAAmC,UAE7DxJ,IAAAC,cAAA,WAAK,yEACA,MAIjBD,IAAAC,cAACkL,IAAMixB,OAAM,KACTp8B,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,YAAY4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEsxB,WAAW,EAAOC,UAAW,OACvF,WAKThvB,IAAAC,cAACkL,IAAK,CACF4G,KAAK,KACL3G,KAAM5N,KAAKf,MAAMwyB,kBACjB5jB,OAAQ,WAAF,OAAQgS,EAAK5f,SAAS,CAAEwxB,mBAAmB,EAAOD,UAAW,OAEnEhvB,IAAAC,cAACkL,IAAMwS,OAAM,CAACse,aAAW,GACrBj8B,IAAAC,cAACkL,IAAM+wB,MAAK,CAAC1zB,GAAG,4BAA2B,6BAI/CxI,IAAAC,cAACkL,IAAMK,KAAI,KACNhO,KAAKf,MAAMssB,uBAAyBxqB,OAAOC,KAAKhB,KAAKf,MAAMssB,uBAAuBrpB,OAAS,EAAIlC,KAAKwzB,oBAAsBhxB,IAAAC,cAAA,WAAK,oCAGpID,IAAAC,cAACkL,IAAMixB,OAAM,KACTp8B,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,YAAY4R,QAAS,WAAF,OAAQ+K,EAAK5f,SAAS,CAAEwxB,mBAAmB,MAC7E,gBA3pIQ,CAASjvB,IAAMqB,W,2IC3Bf,IAC3Bg7B,GAAU,SAAAhgC,GAAA,SAAAggC,IAAA,IAAA9/B,EAAAC,YAAA,KAAA6/B,GAAA,QAAAC,EAAAxyB,UAAApK,OAAA68B,EAAA,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAF,EAAAE,GAAA3yB,UAAA2yB,GAaX,OAbWlgC,EAAA6Q,GAAA,KAAAivB,EAAA,GAAAp6B,OAAAs6B,KAIZG,mBAAqB,SAACC,GAClB,IAAKpgC,EAAKqgC,SAASD,GACf,MAAO,GAEX,IAAME,EAAat+B,OAAOC,KAAKm+B,GAAQ,GACvC,OAAKpgC,EAAKmgC,mBAAmBC,EAAOE,IAG7BA,EAAa,IAAMtgC,EAAKmgC,mBAAmBC,EAAOE,IAF9CA,GAGdtgC,EAAA,OAAAY,YAAAk/B,EAAAhgC,GAAAe,YAAAi/B,EAAA,EAAAh/B,IAAA,WAAAC,MAZD,SAASA,GACL,OAAOA,GAA0B,kBAAVA,GAAsBA,EAAMoJ,cAAgBnI,SACtE,CAAAlB,IAAA,qBAAAC,MAWD,SAAmBw/B,GACf,IAAAC,EAA+CD,EAAUE,OAAjDC,EAAYF,EAAZE,aAAcC,EAAYH,EAAZG,aAActqB,EAAMmqB,EAANnqB,OAEpC,GADarU,OAAOC,KAAKoU,GAChBlT,OAAS,GAAKu9B,IAAiBC,EAAc,CAClD,IAAMC,EAAc3/B,KAAKk/B,mBAAmB9pB,GACtCwqB,EAAQ,QAAAn7B,OAAWk7B,EAAW,eAAAl7B,OAAck7B,EAAW,OACvDE,EAAe9S,SAAS+S,cAAcF,GACzCC,GACCA,EAAaE,WAGxB,CAAAlgC,IAAA,SAAAC,MACD,WACI,OAAO,SA3BC,CAAS0C,IAAMqB,WA8BhBm8B,eAAQnB,I,qTCjBvB1/B,KAAO8gC,GAAGC,WAAW,oBAErB,IAAMvc,GAAgB,CAClB,CAAErT,MAAO,oCAAqCxQ,MAAO,0BACrD,CAAEwQ,MAAO,wCAAyCxQ,MAAO,wBACzD,CAAEwQ,MAAO,oCAAqCxQ,MAAO,sBAGnDkQ,GAAgB,SAAHlM,GAAA,IAAMmM,EAAKnM,EAALmM,MAAK,OAC1BA,EAAQzN,IAAAC,cAAA,OAAKC,UAAU,kBAAkBuN,GAAe,MAEtDkwB,GAAS,SAAAthC,GAAA,SAAAshC,IAAA,IAAAphC,EAAAC,YAAA,KAAAmhC,GAAA,QAAArB,EAAAxyB,UAAApK,OAAA68B,EAAA,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAF,EAAAE,GAAA3yB,UAAA2yB,GAIT,OAJSlgC,EAAA6Q,GAAA,KAAAuwB,EAAA,GAAA17B,OAAAs6B,KACXqB,WAAa,WAETrhC,EAAKD,MAAMuR,OAAOtR,EAAKD,MAAMkM,IAAI,IACpCjM,EAAA,OAAAY,YAAAwgC,EAAAthC,GAAAe,YAAAugC,EAAA,EAAAtgC,IAAA,SAAAC,MAED,WACI,IAAMgR,EAAUN,IACZ,cACA,CACI,aAAcxQ,KAAKlB,MAAMgB,QAAWE,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,QACnE,aAAc5Q,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,SAEjDJ,KAGJ,OAEIhO,IAAAC,cAAA,OAAKC,UAAWoO,GAEZtO,IAAAC,cAAA,SAAOoN,MAAO,CAAEwwB,QAAS,UACpBrgC,KAAKlB,MAAMwR,OAGhB9N,IAAAC,cAAC69B,IAAS,CAACn3B,KAAMnJ,KAAKlB,MAAMkM,GACxBkD,YAAalO,KAAKlB,MAAMoP,YACxB9H,KAAMpG,KAAKlB,MAAMsH,KAEjB1D,UACI1C,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,QAC3B,mBAEA,eAGX5Q,KAAKlB,MAAM8R,SAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOjQ,KAAKlB,MAAMmR,aAnCzD,CAASzN,IAAMqB,WAyCxB08B,GAAY,SAAAC,GAAA,SAAAD,IAAA,IAAAltB,EAAArU,YAAA,KAAAuhC,GAAA,QAAAE,EAAAn0B,UAAApK,OAAA68B,EAAA,IAAAC,MAAAyB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA3B,EAAA2B,GAAAp0B,UAAAo0B,GAuBZ,OAvBYrtB,EAAAzD,GAAA,KAAA2wB,EAAA,GAAA97B,OAAAs6B,KACdqB,WAAa,WACT,IAAIO,EAAYttB,EAAKvU,MAAMgB,MAC3B,GAAIX,KAAOwhC,EAAW,YAAY,GAAMxc,WAAahlB,KAAOwhC,EAAW,UAAU,GAAMxc,WAAahlB,KAAOwhC,EAAW,cAAc,GAAMxc,UAAW,CAChIhlB,QACbA,KAAOwhC,EAAW,YAAY,GAAMxc,UACvBhlB,KAAOwhC,EAAW,YAAY,GAEtCxhC,KAAOwhC,EAAW,UAAU,GAAMxc,UAC1BhlB,KAAOwhC,EAAW,UAAU,GAG5BxhC,KAAOwhC,EAAW,cAAc,IAElCtxB,IAAI,GAAI,SAASlO,QAAQhC,UACpCkU,EAAKvU,MAAMuW,cAAc,kBAAkB,GAC3ChC,EAAKvU,MAAMuR,OAAOgD,EAAKvU,MAAMkM,IAAI,SAIrCqI,EAAKvU,MAAMuR,OAAOgD,EAAKvU,MAAMkM,IAAI,IAGxCqI,EAAA,OAAA1T,YAAA4gC,EAAAC,GAAA5gC,YAAA2gC,EAAA,EAAA1gC,IAAA,SAAAC,MAED,WACI,IAAMgR,EAAUN,IACZ,cACA,CACI,aAAcxQ,KAAKlB,MAAMgB,QAAWE,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,QACnE,aAAc5Q,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,SAEjDJ,KAEJ,OAEIhO,IAAAC,cAAA,OAAKC,UAAWoO,GACZtO,IAAAC,cAAA,SAAOoN,MAAO,CAAEwwB,QAAS,UACpBrgC,KAAKlB,MAAMwR,OAEhB9N,IAAAC,cAAA,SACIuI,GAAIhL,KAAKlB,MAAMkM,GACfkD,YAAalO,KAAKlB,MAAMoP,YACxB9H,KAAMpG,KAAKlB,MAAMsH,KACjBtG,MAAOE,KAAKlB,MAAMgB,MAClBwN,SAAUtN,KAAKlB,MAAMwO,SACrB+C,OAAQrQ,KAAKogC,WACb19B,UACI1C,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,QAC3B,mBAEA,eAIX5Q,KAAKlB,MAAM8R,SAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOjQ,KAAKlB,MAAMmR,aAvDtD,CAASzN,IAAMqB,WA6D3B+8B,GAAW,SAAAC,GAAA,SAAAD,IAAA,IAAApiB,EAAAxf,YAAA,KAAA4hC,GAAA,QAAAE,EAAAx0B,UAAApK,OAAA68B,EAAA,IAAAC,MAAA8B,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAhC,EAAAgC,GAAAz0B,UAAAy0B,GAiDX,OAjDWviB,EAAA5O,GAAA,KAAAgxB,EAAA,GAAAn8B,OAAAs6B,KACbqB,WAAa,WAET5hB,EAAK1f,MAAMuR,OAAOmO,EAAK1f,MAAMkM,IAAI,IACpCwT,EAED/e,aAAe,SAAAkF,GACX,GAA2B,WAAvB6Z,EAAK1f,MAAMkiC,QACXxiB,EAAK1f,MAAMwO,SAASkR,EAAK1f,MAAMkM,GAAIi2B,KAAQC,IAAIC,iBAAiBx8B,EAAEoG,OAAOjL,aAExE,GAA2B,WAAvB0e,EAAK1f,MAAMkiC,QAChB,GAAIr8B,EAAEoG,OAAOjL,MAAMoC,OAAS,GAAKyC,EAAEoG,OAAOjL,MAAMoC,OAAS,EAAG,CACxD,IAAIk/B,EAAQ,GAERA,EAD+B,MAA/Bz8B,EAAEoG,OAAOjL,MAAMqC,MAAM,EAAG,GAChBwC,EAAEoG,OAAOjL,MAAMqC,MAAM,EAAG,GAAK,MAI7BwC,EAAEoG,OAAOjL,MAAMqC,MAAM,EAAG,GAAK,MAAQwC,EAAEoG,OAAOjL,MAAMqC,MAAM,EAAG,GAGzEqc,EAAK1f,MAAMwO,SAASkR,EAAK1f,MAAMkM,GAAIo2B,EAAM39B,QAAQ,eAAgB,UAEhE,GAAIkB,EAAEoG,OAAOjL,MAAMoC,OAAS,GAAKyC,EAAEoG,OAAOjL,MAAMoC,QAAU,EAAG,CAC9D,IAAIk/B,EAAQz8B,EAAEoG,OAAOjL,MAAMqC,MAAM,EAAG,GACpCqc,EAAK1f,MAAMwO,SAASkR,EAAK1f,MAAMkM,GAAIo2B,EAAM39B,QAAQ,eAAgB,UAE5DkB,EAAEoG,OAAOjL,MAAMoC,OAAS,EAC7Bsc,EAAK1f,MAAMwO,SAASkR,EAAK1f,MAAMkM,GAAIrG,EAAEoG,OAAOjL,MAAMqC,MAAM,EAAG,GAAGsB,QAAQ,eAAgB,KAGtF+a,EAAK1f,MAAMwO,SAASkR,EAAK1f,MAAMkM,GAAIrG,EAAEoG,OAAOjL,MAAM2D,QAAQ,eAAgB,SAIlD,QAAvB+a,EAAK1f,MAAMkiC,SACZr8B,EAAEoG,OAAOjL,MAAMoC,OAAS,EACxBsc,EAAK1f,MAAMwO,SAASkR,EAAK1f,MAAMkM,GAAIrG,EAAEoG,OAAOjL,MAAMqC,MAAM,EAAG,IAQ/Dqc,EAAK1f,MAAMwO,SAASkR,EAAK1f,MAAMkM,GAAIrG,EAAEoG,OAAOjL,OAEhD0e,EAAK1f,MAAMwO,SAAS,UAAWkR,EAAK1f,MAAMkiC,UAE7CxiB,EAAA,OAAA7e,YAAAihC,EAAAC,GAAAjhC,YAAAghC,EAAA,EAAA/gC,IAAA,SAAAC,MACD,WACI,IAAMgR,EAAUN,IACZ,cACA,CACI,aAAcxQ,KAAKlB,MAAMgB,QAAWE,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,QACnE,aAAc5Q,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,SAEjDJ,KAGJ,OAEIhO,IAAAC,cAAA,OAAKC,UAAWoO,GAEZtO,IAAAC,cAAA,SAAOoN,MAAO,CAAEwwB,QAAS,UACpBrgC,KAAKlB,MAAMwR,OAEhB9N,IAAAC,cAAA,SACI0G,KAAMnJ,KAAKlB,MAAMkM,GACjBA,GAAIhL,KAAKlB,MAAMkM,GACfkD,YAAalO,KAAKlB,MAAMoP,YACxBpO,MAAOE,KAAKlB,MAAMgB,MAClBwN,SAAUtN,KAAKP,aACf4Q,OAAQrQ,KAAKogC,WACb19B,UACI1C,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAM8R,QAC3B,mBAEA,eAIX5Q,KAAKlB,MAAM8R,SAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOjQ,KAAKlB,MAAMmR,aAlFvD,CAASzN,IAAMqB,WAuF1Bw9B,GAAW,SAAH70B,GAOP,IAAD2D,EAAA3D,EANF4D,MAASjH,EAAIgH,EAAJhH,KAAamE,GAAF6C,EAALrQ,MAAeqQ,EAAR7C,UAAU+C,EAAMF,EAANE,OAAMixB,EAAA90B,EACtCioB,KAAQrf,EAAMksB,EAANlsB,OAAQxE,EAAO0wB,EAAP1wB,QAChB5F,GADsCs2B,EAAbjsB,cACvB7I,EAAFxB,IAGGlM,GAFE0N,EAAL8D,MACS9D,EAAT9J,UACQ2B,YAAAmI,EAAAlI,KAER,OACI9B,IAAAC,cAAA,WACID,IAAAC,cAAA,SACI0G,KAAMA,EACN6B,GAAIA,EACJ5E,KAAK,WACLtG,MAAOhB,EAAMgB,MACbyQ,QAASzR,EAAMgB,MACfwN,SAAUA,EACV+C,OAAQA,EACR3N,UAAW8N,IAAW,kBAE1BhO,IAAAC,cAAA,SAAOgO,QAASzF,GAAI,+BAA4BxI,IAAAC,cAAA,UAAQC,UAAU,SAAQ,6BAAkC,cAAWF,IAAAC,cAAA,UAAQC,UAAU,SAAQ,4CAAiD,0BACjMkO,EAAQzH,IAAS3G,IAAAC,cAACuN,GAAa,CAACC,MAAOmF,EAAOjM,OAIrDo4B,GAAmC,SAAH5wB,GAO/B,IAAD6wB,EAAA7wB,EANFP,MAASjH,EAAIq4B,EAAJr4B,KAAamE,GAAFk0B,EAAL1hC,MAAe0hC,EAARl0B,UAAU+C,EAAMmxB,EAANnxB,OAAMoxB,EAAA9wB,EACtC8jB,KAAQrf,EAAMqsB,EAANrsB,OAAQxE,EAAO6wB,EAAP7wB,QAChB5F,GADsCy2B,EAAbpsB,cACvB1E,EAAF3F,IAGGlM,GAFE6R,EAALL,MACSK,EAATjO,UACQ2B,YAAAsM,EAAA+wB,KAER,OACIl/B,IAAAC,cAAA,WACID,IAAAC,cAAA,SAAOgO,QAASzF,GAAI,uDAAoDxI,IAAAC,cAAA,WAAS,aAAUD,IAAAC,cAAA,UAAQC,UAAU,SAAQ,kDAAuD,KAE5KF,IAAAC,cAAA,SACI0G,KAAMA,EACN6B,GAAIA,EACJ5E,KAAK,WACLtG,MAAOhB,EAAMgB,MACbyQ,QAASzR,EAAMgB,MACfwN,SAAUA,EACV+C,OAAQA,EACR3N,UAAW8N,IAAW,kBAE1BhO,IAAAC,cAAA,SAAOgO,QAASzF,GAAI,qDACpBxI,IAAAC,cAAA,SAAOgO,QAASzF,GAAI,yIACnB4F,EAAQzH,IAAS3G,IAAAC,cAACuN,GAAa,CAACC,MAAOmF,EAAOjM,OAMrDw4B,GAAuB,SAAAC,GAAA,SAAAD,IAAA,IAAAxiB,EAAAngB,YAAA,KAAA2iC,GAAA,QAAAE,EAAAv1B,UAAApK,OAAA68B,EAAA,IAAAC,MAAA6C,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA/C,EAAA+C,GAAAx1B,UAAAw1B,GASvB,OATuB3iB,EAAAvP,GAAA,KAAA+xB,EAAA,GAAAl9B,OAAAs6B,KACzBt/B,aAAe,WACX0f,EAAKrgB,MAAM21B,KAAKpf,cAAc,WAAY8J,EAAKrgB,MAAMiD,UAAU,GAC/Dod,EAAKrgB,MAAM21B,KAAKpf,cAAc,qBAAsB8J,EAAKrgB,MAAMiB,MAAM,GACrEof,EAAKrgB,MAAM21B,KAAKpf,cAAc,yBAA0B8J,EAAKrgB,MAAMkM,IAAI,GACvEmU,EAAKrgB,MAAM21B,KAAKpf,cAAc,aAAc,IAAI,GAChD8J,EAAKrgB,MAAM21B,KAAKpf,cAAc,iBAAkB,IAAI,GACpD8J,EAAKrgB,MAAM21B,KAAKpf,cAAc,wBAAyB,IAAI,IAE9D8J,EAAA,OAAAxf,YAAAgiC,EAAAC,GAAAhiC,YAAA+hC,EAAA,EAAA9hC,IAAA,SAAAC,MACD,WACI,OACI0C,IAAAC,cAAA,WACID,IAAAC,cAAA,SACI0G,KAAMnJ,KAAKlB,MAAMqK,KACjB6B,GAAIhL,KAAKlB,MAAMkM,GACf5E,KAAK,QACLtG,MAAOE,KAAKlB,MAAMkM,GAClBuF,QAASvQ,KAAKlB,MAAMkM,KAAOhL,KAAKlB,MAAM21B,KAAKztB,OAAO+6B,uBAClDz0B,SAAUtN,KAAKP,aACf4Q,OAAQrQ,KAAKlB,MAAMuR,OACnB3N,UAAW8N,IAAW,kBAE1BhO,IAAAC,cAAA,SAAOgO,QAASzQ,KAAKlB,MAAMkM,IAAKhL,KAAKlB,MAAMwR,YAvB9B,CAAS9N,IAAMqB,WA8BtCm+B,GAA8B,SAAAC,GAAA,SAAAD,IAAA,IAAAziB,EAAAvgB,YAAA,KAAAgjC,GAAA,QAAAE,EAAA51B,UAAApK,OAAA68B,EAAA,IAAAC,MAAAkD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAApD,EAAAoD,GAAA71B,UAAA61B,GAa9B,OAb8B5iB,EAAA3P,GAAA,KAAAoyB,EAAA,GAAAv9B,OAAAs6B,KAChCt/B,aAAe,SAAAK,GAEG,yBAAVA,EACAyf,EAAKzgB,MAAMwO,SAAS,gBAAiBxN,GAGrCyf,EAAKzgB,MAAMwO,SAAS,gBAAiB,IAEzCiS,EAAKzgB,MAAMwO,SAAS,sBAAuBxN,IAC9Cyf,EACD6gB,WAAa,WACT7gB,EAAKzgB,MAAMuR,OAAOkP,EAAKzgB,MAAMkM,IAAI,IACpCuU,EAAA,OAAA5f,YAAAqiC,EAAAC,GAAAriC,YAAAoiC,EAAA,EAAAniC,IAAA,SAAAC,MAED,WAAU,IAAD+f,EAAA,KACL,OACIrd,IAAAC,cAAA,WACID,IAAAC,cAAA,SACI0G,KAAMnJ,KAAKlB,MAAMqK,KACjB6B,GAAIhL,KAAKlB,MAAMkM,GACf5E,KAAK,QACLtG,MAAOE,KAAKlB,MAAMkM,GAClBuF,QAASvQ,KAAKlB,MAAMkM,KAAOhL,KAAKlB,MAAMgB,MACtCwN,SAAU,WAAF,OAAQuS,EAAKpgB,aAAaogB,EAAK/gB,MAAMkM,KAC7CqF,OAAQrQ,KAAKogC,WACb19B,UAAW8N,IAAW,kBAE1BhO,IAAAC,cAAA,SAAOgO,QAASzQ,KAAKlB,MAAMkM,IAAKhL,KAAKlB,MAAMwR,YA5BvB,CAAS9N,IAAMqB,WAmC7Cu+B,GAA2B,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAAtjC,YAAA,KAAAojC,GAAA,QAAAG,EAAAj2B,UAAApK,OAAA68B,EAAA,IAAAC,MAAAuD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAzD,EAAAyD,GAAAl2B,UAAAk2B,GAQ3B,OAR2BF,EAAA1yB,GAAA,KAAAwyB,EAAA,GAAA39B,OAAAs6B,KAC7B0D,YAAc,SAAC1iC,EAAM0W,GACjB,IAAIisB,EAAwBJ,EAAKxjC,MAAMkI,OACvC07B,EAAwBA,EAAsBzhC,QAAO,SAAAC,GAAC,QAAMA,EAAEnB,OAASA,GAAQmB,EAAEuV,OAASA,MAC1F6rB,EAAKxjC,MAAMwO,SAAS,wBAAyBo1B,IAChDJ,EACDlC,WAAa,WACTkC,EAAKxjC,MAAMuR,OAAOiyB,EAAKxjC,MAAMkM,IAAI,IACpCs3B,EAAA,OAAA3iC,YAAAyiC,EAAAC,GAAAziC,YAAAwiC,EAAA,EAAAviC,IAAA,SAAAC,MACD,WAAU,IAAD6iC,EAAA,KACL,OACIngC,IAAAC,cAAA,OAAKC,UAAW,eACX1C,KAAKlB,MAAMwR,MACZ9N,IAAAC,cAAC8B,IAAM,CAACrB,QAAQ,SAASqR,KAAK,KAAKO,QAAS,WAAF,OAAQ6tB,EAAKF,YAAYE,EAAK7jC,MAAM8jC,eAAe7iC,KAAM4iC,EAAK7jC,MAAM8jC,eAAensB,QAAO,UAbnH,CAASjU,IAAMqB,WAoB1Cg/B,GAAyB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAA/jC,YAAA,KAAA6jC,GAAA,QAAAG,EAAA12B,UAAApK,OAAA68B,EAAA,IAAAC,MAAAgE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAlE,EAAAkE,GAAA32B,UAAA22B,GAOzB,OAPyBF,EAAAnzB,GAAA,KAAAizB,EAAA,GAAAp+B,OAAAs6B,KAC3BmE,mBAAqB,SAAApjC,GACjBijC,EAAKjkC,MAAMwO,SAAS,kBAAmBxN,GACvCijC,EAAKjkC,MAAMwO,SAAS,gBAAiByK,SAASgrB,EAAKjkC,MAAMyE,QAAQsa,WACpEklB,EACD3C,WAAa,WACT2C,EAAKjkC,MAAMuR,OAAO0yB,EAAKjkC,MAAMkM,IAAI,IACpC+3B,EAAA,OAAApjC,YAAAkjC,EAAAC,GAAAljC,YAAAijC,EAAA,EAAAhjC,IAAA,SAAAC,MACD,WAAU,IAADqjC,EAAA,KACL,OACI3gC,IAAAC,cAAA,WACID,IAAAC,cAAA,SACI0G,KAAMnJ,KAAKlB,MAAMqK,KACjB6B,GAAIhL,KAAKlB,MAAMkM,GACf5E,KAAK,QACLtG,MAAOE,KAAKlB,MAAMkM,GAClBuF,QAASvQ,KAAKlB,MAAMkM,KAAOhL,KAAKlB,MAAMgB,MACtCwN,SAAU,WAAF,OAAQ61B,EAAKD,mBAAmBC,EAAKrkC,MAAMkM,KACnDtI,UAAW8N,IAAW,kBAE1BhO,IAAAC,cAAA,SAAOgO,QAASzQ,KAAKlB,MAAMkM,IAAKhL,KAAKlB,MAAMwR,YApB5B,CAAS9N,IAAMqB,WA2BxC6M,GAAmB,SAAHM,GAQf,IAPHlR,EAAKkR,EAALlR,MACAmQ,EAAKe,EAALf,MACAW,EAAOI,EAAPJ,QACAN,EAAKU,EAALV,MACA5N,EAASsO,EAATtO,UACAmO,EAAQG,EAARH,SACAuyB,EAAQpyB,EAARoyB,SAEMtyB,EAAUN,IACZ,cACA,CACI,aAAc1Q,IAAWmQ,GAASW,EAClC,aAAcX,GAElBvN,GAEJ,OACIF,IAAAC,cAAA,OAAKC,UAAWoO,GACZtO,IAAAC,cAAA,gBACID,IAAAC,cAAA,cAAS6N,GACT9N,IAAAC,cAAA,SAAOC,UAAU,SAAS0gC,GACzBvyB,EACAD,GAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOA,OAM5CozB,GAAgB,CAClB,CAAEvjC,MAAO,gBAAiBwQ,MAAO,iBACjC,CAAExQ,MAAO,SAAUwQ,MAAO,UAC1B,CAAExQ,MAAO,yBAA0BwQ,MAAO,0BAC1C,CAAExQ,MAAO,QAASwQ,MAAO,UAGvBgzB,GAAY,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAAxkC,YAAA,KAAAskC,GAAA,QAAAG,EAAAn3B,UAAApK,OAAA68B,EAAA,IAAAC,MAAAyE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA3E,EAAA2E,GAAAp3B,UAAAo3B,GAeZ,OAfYF,EAAA5zB,GAAA,KAAA0zB,EAAA,GAAA7+B,OAAAs6B,KACdt/B,aAAe,SAAAK,GAES,UAAhBA,EAAMwQ,MACNkzB,EAAK1kC,MAAMwO,SAAS,aAAcxN,EAAMwQ,OAGxCkzB,EAAK1kC,MAAMwO,SAAS,aAAc,IAEtCk2B,EAAK1kC,MAAMwO,SAASk2B,EAAK1kC,MAAMkM,GAAIlL,IACtC0jC,EAEDpD,WAAa,WAEToD,EAAK1kC,MAAMuR,OAAOmzB,EAAK1kC,MAAMkM,IAAI,IACpCw4B,EAAA,OAAA7jC,YAAA2jC,EAAAC,GAAA3jC,YAAA0jC,EAAA,EAAAzjC,IAAA,SAAAC,MAED,WACI,OACI0C,IAAAC,cAAA,OAAKoN,MAAO,CAAEC,OAAQ,WAClBtN,IAAAC,cAAA,SAAOgO,QAAQ,SAAQ,8BACvBjO,IAAAC,cAACid,KAAM,CACH1U,GAAG,QACHoG,QAASpR,KAAKlB,MAAMsS,QACpB9D,SAAUtN,KAAKP,aACf4Q,OAAQrQ,KAAKogC,WACbtgC,MAAmD,IAA5CiB,OAAO4iC,QAAQ3jC,KAAKlB,MAAMgB,OAAOoC,QAAgBlC,KAAKlB,MAAMgB,MAAMoJ,cAAgBnI,OAAS,KAAOf,KAAKlB,MAAMgB,QAEvHE,KAAKlB,MAAM8R,SAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOjQ,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAMmR,MAAMnQ,aA5BhF,CAAS0C,IAAMqB,WAmC3B+/B,GAA0B,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAA9kC,YAAA,KAAA4kC,GAAA,QAAAG,EAAAz3B,UAAApK,OAAA68B,EAAA,IAAAC,MAAA+E,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAjF,EAAAiF,GAAA13B,UAAA03B,GAkC1B,OAlC0BF,EAAAl0B,GAAA,KAAAg0B,EAAA,GAAAn/B,OAAAs6B,KAE5Bt/B,aAAe,SAAAK,GACXgkC,EAAKhlC,MAAMwO,SAASw2B,EAAKhlC,MAAMkM,GAAIlL,EAAMA,OACzC,IAAImkC,EAAgBH,EAAKhlC,MAAMolC,eAC/BvjC,QAAQC,IAAIqjC,GACZH,EAAKhlC,MAAMwO,SAAS,2BAA4B22B,EAAcnkC,EAAMA,OAAOuB,MAAK,SAACC,EAAGC,GAAC,OAAMD,EAAEoW,UAAYnW,EAAEmW,UAAa,GAAK,KAAGtW,KAAI,SAAAF,GAAC,MAAK,CAAE,MAASA,EAAEqvB,SAAU,MAASrvB,EAAEqvB,SAAW,OAASrvB,EAAEa,SAAU,SAAYb,EAAEa,eAC7N+hC,EAED1D,WAAa,WAET0D,EAAKhlC,MAAMuR,OAAOyzB,EAAKhlC,MAAMkM,IAAI,IACpC84B,EACDzT,YAAc,SAACN,EAAYC,GACvB,IAAI9vB,EAAI4jC,EACJtuB,EAAesuB,EAAKhlC,MAAMiU,YAAYwiB,UAAU,EAAG,IACvDp1B,MAAM,kFAAmF,CACrFC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,OACRoR,KAAM5Q,KAAKmR,UAAU,CAAE,MAASwD,EAAc,SAAYsuB,EAAKhlC,MAAMiD,aAEtEzB,KAAKJ,EAAKK,cACRD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACd,IAAIyjC,EAAsBpjC,OAAOC,KAAKN,GACjCO,QAAO,SAAAlB,GAAI,OAAIZ,KAAOY,GAAMqwB,SAASjxB,KAAOqW,OAC5CpU,KAAI,SAAAF,GAAC,MAAK,CAAE,MAASA,EAAG,MAAS/B,KAAO+B,GAAGe,OAAO,yBACvD/B,EAAKpB,MAAMwO,SAAS,iBAAkB5M,GACtCsvB,EAASmU,OAEpBL,EAAA,OAAAnkC,YAAAikC,EAAAC,GAAAjkC,YAAAgkC,EAAA,EAAA/jC,IAAA,SAAAC,MAED,WACI,IAAI0V,EAAexV,KAAKlB,MAAMiU,YAAYwiB,UAAU,EAAG,IAEvD,OACI/yB,IAAAC,cAAA,OAAKoN,MAAO,CAAEC,OAAQ,WAClBtN,IAAAC,cAAC06B,KAAW,CACRt9B,IAAK2V,EAAexV,KAAKlB,MAAMiD,SAC/Bq7B,cAAc,EACd/M,YAAarwB,KAAKqwB,YAClBgN,gBAAc,EACdC,iBAAkB,WAAF,MAAQ,4BAA8B9nB,EAAe,KACrElI,SAAUtN,KAAKP,eAElBO,KAAKlB,MAAM8R,SAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOjQ,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAMmR,MAAMnQ,aAjDlE,CAAS0C,IAAMqB,WAuDzCugC,GAAe,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAAtlC,YAAA,KAAAolC,GAAA,QAAAG,EAAAj4B,UAAApK,OAAA68B,EAAA,IAAAC,MAAAuF,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAzF,EAAAyF,GAAAl4B,UAAAk4B,GAwBf,OAxBeF,EAAA10B,GAAA,KAAAw0B,EAAA,GAAA3/B,OAAAs6B,KACjBt/B,aAAe,SAACM,EAAM0W,GAClB,IAAI6K,EAAS,CACT,KAAQvhB,EACR,KAAQ0W,EAAK3W,MACb,SAAY2W,EAAK1U,UAGjB2gC,EAAwB4B,EAAKxlC,MAAM4jC,sBAIH,IAFTA,EAAsBzhC,QAAO,SAAAC,GAAC,OAAIA,EAAEnB,OAASA,GAAQmB,EAAEuV,OAASA,KAElEvU,SACrBwgC,EAAsBrgC,KAAKif,GAC3BgjB,EAAKxlC,MAAMwO,SAAS,wBAAyBo1B,KAEpD4B,EAEDlE,WAAa,WAETkE,EAAKxlC,MAAMuR,OAAOi0B,EAAKxlC,MAAMkM,IAAI,IACpCs5B,EACDjU,YAAc,SAACN,EAAYC,GACvBA,EAASsU,EAAKxlC,MAAM2lC,2BACvBH,EAAA,OAAA3kC,YAAAykC,EAAAC,GAAAzkC,YAAAwkC,EAAA,EAAAvkC,IAAA,SAAAC,MAED,WAAU,IAAD4kC,EAAA,KACL,OACIliC,IAAAC,cAAA,UAAQ2D,KAAK,SAAS0O,QAAS,WAAF,OAAQ4vB,EAAKjlC,aAAailC,EAAK5lC,MAAMsd,WAAYsoB,EAAK5lC,MAAM6lC,kBAAiB,kBA5BjG,CAASniC,IAAMqB,WAmC9B+gC,GAA8B,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAA9lC,YAAA,KAAA4lC,GAAA,QAAAG,EAAAz4B,UAAApK,OAAA68B,EAAA,IAAAC,MAAA+F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAjG,EAAAiG,GAAA14B,UAAA04B,GAW9B,OAX8BF,EAAAl1B,GAAA,KAAAg1B,EAAA,GAAAngC,OAAAs6B,KAChCt/B,aAAe,SAAAK,GACXglC,EAAKhmC,MAAMwO,SAASw3B,EAAKhmC,MAAMkM,GAAIlL,IACtCglC,EAED1E,WAAa,WAET0E,EAAKhmC,MAAMuR,OAAOy0B,EAAKhmC,MAAMkM,IAAI,IACpC85B,EACDzU,YAAc,SAACN,EAAYC,GACvBA,EAAS8U,EAAKhmC,MAAM2lC,2BACvBK,EAAA,OAAAnlC,YAAAilC,EAAAC,GAAAjlC,YAAAglC,EAAA,EAAA/kC,IAAA,SAAAC,MAED,WACI,IAAI0V,EAAexV,KAAKlB,MAAMiU,YAAYwiB,UAAU,EAAG,IACvD,OACI/yB,IAAAC,cAAA,OAAKoN,MAAO,CAAEC,OAAQ,WAClBtN,IAAAC,cAAC06B,KAAW,CACRt9B,IAAK,QAAU2V,EACf4nB,cAAc,EACd/M,YAAarwB,KAAKqwB,YAClBgN,gBAAc,EACd/vB,SAAUtN,KAAKP,eAElBO,KAAKlB,MAAM8R,SAAWpO,IAAAC,cAACuN,GAAa,CAACC,MAAOjQ,KAAKlB,MAAMmR,OAASjQ,KAAKlB,MAAMmR,MAAMnQ,aAxB9D,CAAS0C,IAAMqB,WA6nCpCohC,GA9lCO,SAAAC,GAClB,SAAAD,EAAYnmC,GAAQ,IAADqmC,EAYoB,OAZpBnmC,YAAA,KAAAimC,IACfE,EAAAv1B,GAAA,KAAAq1B,EAAA,CAAMnmC,KAaVyB,aAAe,SAACC,GAIZ,OAHKA,EAAS6N,IACV1N,QAAQC,IAAIJ,EAAS8N,YAElB9N,GACV2kC,EACDra,gBAAkB,SAACtqB,GACf,IACI,IAAI4kC,EAAaD,EAAKlwB,UAAUowB,QAAQr+B,OACxC,GAAqC,UAAjCxG,EAAS2qB,SAASC,WAElB,IADA,IAAIjmB,EAAI,EACDA,EAAI3E,EAAS2qB,SAAS/e,QAAQlK,QACjCvB,QAAQC,IACJJ,EAAS2qB,SAAS/e,QAAQjH,GAAGkmB,KAAO,KACpC7qB,EAAS2qB,SAAS/e,QAAQjH,GAAGnB,MAEjCmB,GAAQ,MAGX,CAGD,IAAImgC,EAAgBnmC,OAChBomC,EAAmBpmC,OAEnBmmC,EADAnmC,KAAOimC,EAAWtT,YAAa,YAAY,GAAM3N,UACjChlB,KAAOimC,EAAWtT,YAAa,YAAY,GAEtD3yB,KAAOimC,EAAWtT,YAAa,UAAU,GAAM3N,UACpChlB,KAAOimC,EAAWtT,YAAa,UAAU,GAGzC3yB,KAAOimC,EAAWtT,YAAa,cAAc,GAG7DyT,EADApmC,KAAOimC,EAAWpT,gBAAiB,YAAY,GAAM7N,UAClChlB,KAAOimC,EAAWpT,gBAAiB,YAAY,GAE7D7yB,KAAOimC,EAAWpT,gBAAiB,UAAU,GAAM7N,UACrChlB,KAAOimC,EAAWpT,gBAAiB,UAAU,GAG7C7yB,KAAOimC,EAAWpT,gBAAiB,cAAc,GAExE,IAAM/G,EAAIka,EACNja,EAAQ1qB,EAASkrB,WAAWC,UAC5Bla,EAAO,CACPlC,MAAO61B,EAAWxT,UAClB7N,MAAOqhB,EAAWvT,SAClBxL,IAAKif,EAAcrjC,OAAO,cAC1BqkB,SAAU8e,EAAWrT,aACrBxL,WAAYgf,EAAiBtjC,OAAO,cACpC4J,MAAOu5B,EAAWv5B,MAClBguB,YAAauL,EAAWvL,YACxBxb,MAAO+mB,EAAWnT,YAClB1uB,QAAS6hC,EAAWniB,gBACpBuiB,mBAAoBJ,EAAW7vB,mBAC/BoO,cAAeyhB,EAAWzhB,cAC1BuH,MAAOA,EACPua,OAAQ1kC,OAAOC,KAAKokC,EAAWK,QAAQvjC,OAAS,EAAIkjC,EAAWK,OAAOn1B,MAAQ,iBAC9Esb,YAAawZ,EAAWxZ,YACxBC,WAAYuZ,EAAWvZ,WACvBC,UAAWsZ,EAAWtZ,UACtBC,OAAQqZ,EAAWrZ,OACnBC,QAASoZ,EAAWpZ,QACpBC,MAAOmZ,EAAWnZ,MAClBC,UAAWkZ,EAAWlZ,UACtBiG,yBAA0BiT,EAAWjT,yBACrCpwB,SAAUqjC,EAAWrjC,UAGrBqjC,EAAWM,cAAgB,IAC3Bj0B,EAA4B,sBAAI2zB,EAAW1C,uBAG/CviC,MAAM,2EAA4E,CAC9EC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,OACRoR,KAAM5Q,KAAKmR,UAAUP,KAEpBnR,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACI,YAAdA,EAAK0F,MAGL6kB,EAAKhW,UAAUowB,QAAQM,YAEvB1a,EAAKhrB,SAAS,CACVsO,kBAAkB,MAItB0c,EAAKhW,UAAUowB,QAAQO,eAAc,GACjC,CAAC,6EAA8E,+EAA+Er0B,SAAS7Q,EAAK0L,SAC5K6e,EAAKhW,UAAUowB,QAAQQ,UAAU,CAC7BC,iBAAkB,2FAItB7a,EAAKhW,UAAUowB,QAAQQ,UACnB,CACIC,iBAAkBplC,EAAK0L,eAQrD,MAAO6D,GACLtP,QAAQC,IAAIqP,KAEnBk1B,EAEDhwB,eAAiB,SAACnO,EAAMyL,GAAoC,IAAhCozB,EAASpzB,EAATozB,UAAWD,EAAanzB,EAAbmzB,cAC/BxwB,EAAS,GAET2wB,EAAc9E,KAAQC,IAAI8E,mBAAmBh/B,EAAOulB,UACpD0Z,EAAkBhF,KAAQC,IAAIgF,mBAAmBl/B,EAAOqlB,cACxD8Z,EAAWlF,KAAQC,IAAIkF,gBAAgBp/B,EAAOslB,QAClD,GAAKyZ,EAIA,CACD,IAAIM,EAAWpF,KAAQC,IAAImF,SAASr/B,EAAOulB,UAC1B,SAAb8Z,GAAoC,eAAbA,GAA0C,aAAbA,IAGpDjxB,EAAOmX,SAAW,8DAPtBnX,EAAOmX,SAAW,iDAiBtB,GAPK0Z,IACD7wB,EAAOiX,aAAe,2BAErB8Z,IACD/wB,EAAOkX,OAAS,oBAGhBntB,KAAO6H,EAAO8qB,YAAa,YAAY,GAAM3N,WAAahlB,KAAO6H,EAAO8qB,YAAa,UAAU,GAAM3N,WAAahlB,KAAO6H,EAAO8qB,YAAa,cAAc,GAAM3N,UAAW,CAC5K,IAAI1P,EAAatV,QAEbsV,EADAtV,KAAO6H,EAAO8qB,YAAa,YAAY,GAAM3N,UAChChlB,KAAO6H,EAAO8qB,YAAa,YAAY,GAE/C3yB,KAAO6H,EAAO8qB,YAAa,UAAU,GAAM3N,UACnChlB,KAAO6H,EAAO8qB,YAAa,UAAU,GAGrC3yB,KAAO6H,EAAO8qB,YAAa,cAAc,IAG3C3wB,QAAQhC,SAAasV,EAAWpF,IAAI,GAAI,SAASlO,QAAQhC,QACpEiW,EAAO0c,YAAc,uFAGhBrd,EAAW2b,SAASjxB,OAASmQ,SAAS,IAAK,YAChD8F,EAAO0c,YAAc,2FAIzB1c,EAAO0c,YAAc,oEAGzB,GAAI3yB,KAAO6H,EAAOgrB,gBAAiB,YAAY,GAAM7N,WAAahlB,KAAO6H,EAAOgrB,gBAAiB,UAAU,GAAM7N,WAAahlB,KAAO6H,EAAOgrB,gBAAiB,cAAc,GAAM7N,UAAW,CACxL,IAAIohB,EAAmBpmC,OAiBvB,IAfIomC,EADApmC,KAAO6H,EAAOgrB,gBAAiB,YAAY,GAAM7N,UAC9BhlB,KAAO6H,EAAOgrB,gBAAiB,YAAY,GAEzD7yB,KAAO6H,EAAOgrB,gBAAiB,UAAU,GAAM7N,UACjChlB,KAAO6H,EAAOgrB,gBAAiB,UAAU,GAGzC7yB,KAAO6H,EAAOgrB,gBAAiB,cAAc,IAG/C5B,SAASjxB,OAASmQ,SAAS,EAAG,UAC/C8F,EAAO4c,gBAAkB,yCAEpBuT,EAAiBpkC,QAAQhC,UAC9BiW,EAAO4c,gBAAkB,mDAEzBhrB,EAAOuO,mBAAoB,CAC3B,GAAIgwB,EAAiBpkC,QAAQhC,KAAO6H,EAAOuO,oBAAoBjG,SAAS,EAAG,WACvE,GAAInQ,KAAO6H,EAAO8qB,YAAa,YAAY,GAAM3N,WAAahlB,KAAO6H,EAAO8qB,YAAa,UAAU,GAAM3N,WAAahlB,KAAO6H,EAAO8qB,YAAa,cAAc,GAAM3N,UAAW,CAC5JhlB,QACZA,KAAO6H,EAAO8qB,YAAa,YAAY,GAAM3N,UACjChlB,KAAO6H,EAAO8qB,YAAa,YAAY,GAE9C3yB,KAAO6H,EAAO8qB,YAAa,UAAU,GAAM3N,UACpChlB,KAAO6H,EAAO8qB,YAAa,UAAU,GAGrC3yB,KAAO6H,EAAO8qB,YAAa,cAAc,IAE1C1B,SAASjxB,OAASmQ,SAAS,GAAI,YAC1C8F,EAAO4c,gBAAkB,2GAI7B5c,EAAO0c,YAAc,oEAGzB3yB,KAAO6H,EAAOuO,oBAAoBjG,SAAS,EAAG,SAASnO,QAAQokC,KAC/DnwB,EAAO4c,gBAAkB,0HAKjC5c,EAAO4c,gBAAkB,wEA+C7B,GA7CI7yB,KAAO6H,EAAOuO,oBAAoB6a,SAASjxB,UAC3CiW,EAAOG,mBAAqB,yEAG5BvO,EAAO0+B,cAAgB1+B,EAAO07B,sBAAsBxgC,SACpDkT,EAAOgH,WAAa,wCAEpBpV,EAAO07B,sBAAsBxgC,OAAS8E,EAAO0+B,gBAC7CtwB,EAAOgH,WAAa,0DAIpBpV,EAAO6E,QAAU7E,EAAOs/B,YACxBlxB,EAAOvJ,MAAQ,sCACfuJ,EAAOkxB,UAAY,uCAElBt/B,EAAO6E,MAAM0F,SAAS,OACvB6D,EAAOvJ,MAAQ,uCAEd7E,EAAOs/B,UAAU/0B,SAAS,OAC3B6D,EAAOkxB,UAAY,oDAGnBt/B,EAAOu/B,iBACHv/B,EAAO6yB,cAAgB7yB,EAAOw/B,kBAC9BpxB,EAAOykB,YAAc,+CACrBzkB,EAAOoxB,gBAAkB,gDAExBx/B,EAAO6yB,YAAYtoB,SAAS,OAC7B6D,EAAOykB,YAAc,8CAEpB7yB,EAAOw/B,gBAAgBj1B,SAAS,OACjC6D,EAAOoxB,gBAAkB,4DAIC,KAA9Bx/B,EAAOirB,YAAY/vB,SACnBkT,EAAO6c,YAAc,yBAErBjrB,EAAOjF,SAASwP,SAAS,SACpBvK,EAAOic,gBAAgB1R,SAAS,aACjC6D,EAAO6N,gBAAkB,+EAGjC4iB,EAAUzwB,GACNrU,OAAOC,KAAKoU,GAAQlT,OAAS,EAC7B0jC,GAAc,OADlB,CAWA,IAaI5Q,EAAa,CACbC,SAdW,CACXC,UAAW,mEACXC,WAAY,aAaZC,SAVW,CACXC,WAAYruB,EAAOulB,SAAS9oB,QAAQ,MAAO,IAC3C6xB,MAAOtuB,EAAOqlB,aAAakJ,UAAU,EAAG,GACxChQ,KAAMve,EAAOqlB,aAAakJ,UAAUvuB,EAAOqlB,aAAanqB,OAAS,EAAG8E,EAAOqlB,aAAanqB,QACxFszB,SAAUxuB,EAAOslB,OACjBmJ,IAAKzuB,EAAOilB,MACZyJ,SAAU1uB,EAAO4kB,YAAc,IAAM5kB,EAAO6kB,aAMhD,IACI8J,OAAOC,OAAOC,aAAab,EAAYmQ,EAAKra,iBAC9C,MAAO7a,GACLtP,QAAQC,IAAIqP,MA5ShBk1B,EAAKlmC,MAAQ,CACTsD,cAAe,GACf0iB,iBAAkB,GAClBjZ,SAAS,EACTuC,kBAAkB,EAClBm3B,cAAe,EACfe,gBAAiB,GACjBX,iBAAkB,GAClBY,kBAAmB,IAEvBvB,EAAKlwB,UAAYzS,IAAMmkC,YAAYxB,EACtC,OAAAxlC,YAAAslC,EAAAC,GAAAtlC,YAAAqlC,EAAA,EAAAplC,IAAA,oBAAAC,MAqSD,WACI,IAAMo0B,EAASnH,SAAStqB,cAAc,UAKtCyxB,EAAOpxB,IAAM,wCACboxB,EAAO1qB,OAAQ,EAGfujB,SAAStb,KAAKwb,YAAYiH,GAC1B,IAAMh0B,EAAOF,KAEbG,MAAM,0DAA2D,CAC7DC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GACdA,EAAOG,KAAKC,MAAMJ,GAElB,IAAI6B,EAAgBxB,OAAOC,KAAKN,GAAMU,KAAI,SAAAF,GAAC,OAAI/B,KAAO+B,MAAIG,MAAK,SAAUC,EAAGC,GAAK,OAAOD,EAAIC,KAC5FrB,EAAKD,SAAS,CAAEsC,gBAAemkC,kBAAmBhmC,OAI1DP,MAAM,6DAA8D,CAChEC,QAAS,CACL,OAAU,mBACV,eAAgB,oBAEpBC,OAAQ,QAEPC,KAAKN,KAAKO,cACVD,MAAK,SAAUE,GACZ,OAAOA,EAASC,UACjBH,MAAK,SAAUI,GAEdR,EAAKD,SAAS,CAAEglB,iBAAkBvkB,OAG1C,IAAIkmC,EAAS5mC,KAAKlB,MAAMsqB,MAAM0N,OAAO8P,OACtB,QAAXA,GACA5mC,KAAKC,SAAS,CAAEiyB,sBAAuB,0BACvCyD,OAAOkR,SAAS,EAAG,IAEH,SAAXD,IACL5mC,KAAKC,SAAS,CAAEiyB,sBAAuB,iCAAkCwT,cAAe,IACxF/P,OAAOkR,SAAS,EAAG,MAE1B,CAAAhnC,IAAA,SAAAC,MACD,WAAU,IAADgnC,EAAA,KACCC,EAAU,WAAH,OACTvkC,IAAAC,cAAA,OAAKC,UAAU,OACXF,IAAAC,cAACsS,IAAM,CACHG,cAAe,CACX+N,gBAAiB6jB,EAAK7nC,MAAMizB,sBAAwB4U,EAAK7nC,MAAMizB,sBAAwB,GAAIwT,cAAeoB,EAAK7nC,MAAMymC,cAAe/hB,cAAe,GAAIpO,mBAAoB,GAAIyxB,oBAAqB,GACpMlV,YAAa,GAAIF,UAAW,GAAIC,SAAU,GAAIyU,UAAW,GAAIz6B,MAAO,GAAIguB,YAAa,GAAI5H,YAAa,GAAIF,aAAc,GAAIC,gBAAiB,GAC7IyT,OAAQ,GAAI1D,uBAAwB,GACpCxV,SAAU,GAAIX,YAAa,GAAIC,WAAY,GAAIQ,aAAc,GAAIC,OAAQ,GAAI2a,QAAS,GACtFnb,UAAW,GAAIC,OAAQ,GAAIC,QAAS,GAAIC,MAAO,GAAIC,UAAW,MAC9Dgb,cAAc,EAAO/U,0BAA0B,EAAO+R,eAAgB,GAAIO,yBAA0B,GAAI/B,sBAAuB,GAAI6D,gBAAgB,GAEvJY,SAAUL,EAAK7xB,UACfjI,SAAU85B,EAAK3xB,eACfiyB,kBAAkB,EAClBC,iBACIC,YAAaC,MAAM,CACfxF,uBAAwBuF,YACnBr5B,SAAS,uDACdgV,gBAAiBqkB,YACZE,IAAI,EAAG,cACPv5B,SAAS,wDACdw3B,OAAQ6B,YAAaC,MAAM,CACvBznC,MAAOwnC,YACFr5B,SAAS,+CAElBw5B,WAAYH,YACPE,IAAI,EAAG,cACPv5B,SAAS,2CACd+4B,oBAAqBM,YAChBE,IAAI,EAAG,cACPv5B,SAAS,sCACd0V,cAAe2jB,YACVE,IAAI,EAAG,cACPv5B,SAAS,sCACd2jB,UAAW0V,YACNE,IAAI,EAAG,cACPv5B,SAAS,4BACd4jB,SAAUyV,YACLE,IAAI,EAAG,cACPv5B,SAAS,2BACd6jB,YAAawV,UAAWI,UAAU,gBAC7Bz5B,SAAS,+BACd8jB,aAAcuV,YACTE,IAAI,EAAG,cACPv5B,SAAS,+BACd+jB,gBAAiBsV,UAAWI,UAAU,gBACjCz5B,SAAS,mCACdpC,MAAOy7B,YACFE,IAAI,EAAG,cACPv5B,SAAS,wBACdq4B,UAAWgB,YACNE,IAAI,EAAG,cACPv5B,SAAS,+BACdgkB,YAAaqV,YACRE,IAAI,GAAI,cACRv5B,SAAS,8BACdse,SAAU+a,YAAaI,UAAU,kBAC5BF,IAAI,GAAI,cACRv5B,SAAS,oCACd2d,YAAa0b,YACRE,IAAI,EAAG,cACPv5B,SAAS,0BACd4d,WAAYyb,YACPE,IAAI,EAAG,cACPv5B,SAAS,yBACdqe,OAAQgb,YAAaI,UAAU,kBAC1Bz5B,SAAS,4BACd6d,UAAWwb,YACNE,IAAI,EAAG,cACPv5B,SAAS,mCACdoe,aAAcib,YAAaE,IAAI,EAAG,cAC7Bv5B,SAAS,0CACd8d,OAAQub,YACHE,IAAI,EAAG,cACPv5B,SAAS,gCACd+d,QAASsb,YACJE,IAAI,EAAG,cACPv5B,SAAS,iCACdge,MAAOqb,YACFE,IAAI,EAAG,cACPv5B,SAAS,mCACdie,UAAWob,YACNE,IAAI,EAAG,cACPv5B,SAAS,mCACdi5B,aAAcI,UAAWK,MAAM,EAAC,GAAO,0BAG9C,SAAA7oC,GACG,IACIkI,EASAlI,EATAkI,OACA4J,EAQA9R,EARA8R,QACAwE,EAOAtW,EAPAsW,OACA3V,EAMAX,EANAW,aACA4L,EAKAvM,EALAuM,aACAgK,EAIAvW,EAJAuW,cACAC,EAGAxW,EAHAwW,gBACAmqB,EAEA3gC,EAFA2gC,aACAmI,EACA9oC,EADA8oC,YAEJ,OACIplC,IAAAC,cAAA,QAAMuK,SAAU3B,GACZ7I,IAAAC,cAACo8B,GAAU,MACXr8B,IAAAC,cAACiO,GAAgB,CACb1F,GAAG,yBACHsF,MAAM,+CACN8yB,SAAS,0FACTtjC,MAAOkH,EAAO+6B,uBACd9xB,MAAOmF,EAAO2sB,uBACdnxB,QAASA,EAAQmxB,uBACjBz0B,SAAU+H,EACVhF,OAAQiF,GAIPwxB,EAAK7nC,MAAMsD,cAActB,QAAO,SAAAC,GAAC,OAAI/B,KAAO+B,GAAGC,QAAQhC,WACnDkC,MAAK,SAAUC,EAAGC,GAAK,OAAOD,EAAIC,KAClCH,KAAI,SAACoU,EAAchB,GAChB,IAAIC,EAAae,EAAa/T,cAC1BE,EAAY,GAIhB,OAHImlC,EAAK7nC,MAAMynC,kBAAkBjyB,IAAeqyB,EAAK7nC,MAAMynC,kBAAkBjyB,GAAY9S,YACrFA,EAAYmlC,EAAK7nC,MAAMynC,kBAAkBjyB,GAAY9S,WAE9B,IAAvB6T,EAAaxT,MAETL,EAAUP,KAAI,SAACW,EAAUlC,GACrB,OACI2C,IAAAC,cAACiT,IAAK,CACF7V,IAAK2V,EAAezT,EAAWlC,EAC/B8V,UAAWgsB,GACX5hC,KAAMyV,EAAavT,OAAO,cAC1BF,SAAUA,EACVoH,KAAK,yBACL6B,GAAIwK,EAAavT,OAAO,cAAgB,IAAMF,EAC9CuO,MAAO,eAAiBnR,KAAOqW,GAAcvT,OAAO,OAAS,iBAAmBF,OAQ5FJ,EAAUP,KAAI,SAACW,EAAUlC,GACrB,OAAIkC,EAASwP,SAAS,OAEd/O,IAAAC,cAACiT,IAAK,CACF7V,IAAK2V,EAAezT,EAAWlC,EAC/B8V,UAAWgsB,GACX5hC,KAAMyV,EAAavT,OAAO,cAC1BF,SAAUA,EACVoH,KAAK,yBACL6B,GAAIwK,EAAavT,OAAO,cAAgB,IAAMF,EAC9CuO,MAAO,cAAgBnR,KAAOqW,GAAcvT,OAAO,aAAe,OAASF,IAI/ES,IAAAC,cAACiT,IAAK,CACF7V,IAAK2V,EAAezT,EAAWlC,EAC/B8V,UAAWgsB,GACX5hC,KAAMyV,EAAavT,OAAO,cAC1BF,SAAUA,EACVoH,KAAK,yBACL6B,GAAIwK,EAAavT,OAAO,cAAgB,IAAMF,EAC9CuO,MAAO,WAAanR,KAAOqW,GAAcrD,WAAW,GAAGlQ,OAAO,OAAS,MAAQ9C,KAAOqW,GAAcrD,WAAW,GAAGlQ,OAAO,OAAS,iBAAmBF,EAAW,6BAUpMS,IAAAC,cAACiO,GAAgB,CACb1F,GAAG,kBACHsF,MAAM,oBACNxQ,MAAOkH,EAAOic,gBACdhT,MAAOmF,EAAO6N,gBACdrS,QAASA,EAAQqS,iBAEhB6jB,EAAK7nC,MAAMgmB,iBAAiB7jB,KAAI,SAAC6hB,EAAiBpjB,GAC/C,OACI2C,IAAAC,cAACogC,GAAyB,CACtBhjC,IAAKojB,EAAgB1f,QAAU1D,EAC/BsJ,KAAK,kBACL6B,GAAIiY,EAAgB1f,QAAU,MAAQ0f,EAAgBzf,MAAQ,IAC9D8M,MAAO2S,EAAgB1f,QAAU,MAAQ0f,EAAgBzf,MAAQ,IACjE1D,MAAOkH,EAAOic,gBACd1f,QAAS0f,EACT3V,SAAU+H,EACVhF,OAAQiF,QAKvBtO,EAAO0+B,cAAgB,EACpBljC,IAAAC,cAAA,OAAKoN,MAAO,CAAEC,OAAQ,WAClBtN,IAAAC,cAAA,SAAOgO,QAAQ,SAAQ,0BAEtBzJ,EAAOuO,mBACJ/S,IAAAC,cAAA,WACID,IAAAC,cAAA,WAAK,sBAAoBuE,EAAO0+B,cAAc,UAAiC,IAAzB1+B,EAAO0+B,cAAsB,GAAK,KACvF1+B,EAAO07B,sBAAsBxgC,OAAS,EAEnCM,IAAAC,cAAA,WAEKuE,EAAO07B,sBAAsBthC,KAAI,SAACwhC,EAAgB/iC,GAC/C,IAAI02B,EAAMp3B,KAAOyjC,EAAe7iC,MAAMkC,OAAO,QAE7C,OACIO,IAAAC,cAAC2/B,GAA2B,CACxBviC,IAAK+iC,EAAe7iC,KAAO6iC,EAAensB,KAC1CtN,KAAK,kBACL6B,GAAI43B,EAAe7iC,KAAO6iC,EAAensB,KACzCnG,MAAOimB,EAAM,IAAMp3B,KAAOyjC,EAAe7iC,MAAMkC,OAAO,cAAgB,OAAS2gC,EAAensB,KAAO,OAASmsB,EAAe7gC,SAAW,KACxIuL,SAAU+H,EACVhF,OAAQiF,EACRstB,eAAgBA,EAChB57B,OAAQA,EAAO07B,4BAO/BlgC,IAAAC,cAAA,WAAK,8CAGR2S,EAAOgH,WAAa5Z,IAAAC,cAACuN,GAAa,CAACC,MAAOmF,EAAOgH,aAAiB,KAClEpV,EAAO0+B,cAAgB1+B,EAAO07B,sBAAsBxgC,OACjDM,IAAAC,cAAA,WACID,IAAAC,cAAA,SAAOgO,QAAQ,SAAQ,kBAEvBjO,IAAAC,cAACmhC,GAA0B,CACvB54B,GAAG,aACHsC,SAAU+H,EACVhF,OAAQiF,EACRvC,YAAa/L,EAAOuO,mBACpBxT,SAAUiF,EAAOjF,SACjBmiC,eAAgBl9B,EAAOk9B,iBAE1Bl9B,EAAOoV,WACJ5Z,IAAAC,cAAA,WACID,IAAAC,cAAA,SAAOgO,QAAQ,SAAQ,uBACvBjO,IAAAC,cAACmiC,GAA8B,CAC3B55B,GAAG,iBACHsC,SAAU+H,EACVhF,OAAQiF,EACRvC,YAAa/L,EAAOoV,WACpBqoB,yBAA0Bz9B,EAAOy9B,4BAEhC,KAGZz9B,EAAO29B,eACJniC,IAAAC,cAAC2hC,GAAe,CACZp5B,GAAG,kBACHsC,SAAU+H,EACVhF,OAAQiF,EACR8G,WAAYpV,EAAOoV,WACnBuoB,eAAgB39B,EAAO29B,eACvBjC,sBAAuB17B,EAAO07B,wBAGhC,KACNlgC,IAAAC,cAAA,WAAK,qDAEP,MACDD,IAAAC,cAAA,WAAK,6EAGb,KAGbD,IAAAC,cAACiO,GAAgB,CACb1F,GAAG,sBACHsF,MAAM,0BACNxQ,MAAOkH,EAAOggC,oBACd/2B,MAAOmF,EAAO4xB,oBACdp2B,QAASA,EAAQo2B,qBAEhBrjB,GAAcviB,KAAI,SAACymC,EAAoBhoC,GACpC,OACI2C,IAAAC,cAACu/B,GAA8B,CAC3BniC,IAAKgoC,EAAmB/nC,MAAQD,EAChCsJ,KAAK,gBACL6B,GAAI68B,EAAmB/nC,MACvBwQ,MAAOu3B,EAAmBv3B,MAC1BxQ,MAAOkH,EAAOggC,oBACd15B,SAAU+H,EACVhF,OAAQiF,QAMQ,2BAA/BtO,EAAOggC,oBACJxkC,IAAAC,cAACiT,IAAK,CACFC,UAAW4rB,GACXp4B,KAAK,2BACL6B,GAAG,2BACHlL,MAAOkH,EAAOmrB,2BACb,KAIuB,yBAA/BnrB,EAAOggC,oBACJxkC,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,gBACH5E,KAAK,OACLkK,MAAM,4BACNpC,YAAY,kCACZ+B,MAAOmF,EAAOuO,cACd7jB,MAAOkH,EAAO2c,cACdrW,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQ+S,gBAChB,KACTnhB,IAAAC,cAAC6gC,GAAY,CACTt4B,GAAG,SACHoG,QAASiyB,GACTvjC,MAAOkH,EAAOy+B,OACdn4B,SAAU+H,EACVhF,OAAQiF,EACRrF,MAAOmF,EAAOqwB,OACd70B,QAASA,EAAQ60B,SAEpBz+B,EAAOy+B,QAAkC,UAAxBz+B,EAAOy+B,OAAO3lC,MAC5B0C,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,aACH5E,KAAK,OACLkK,MAAM,eACNpC,YAAY,qBACZ+B,MAAOmF,EAAOqyB,WACd3nC,MAAOkH,EAAOygC,WACdn6B,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQ62B,aAChB,KAETjlC,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,YACH5E,KAAK,OACLkK,MAAM,4DACNpC,YAAY,aACZ+B,MAAOmF,EAAOwc,UACd9xB,MAAOkH,EAAO4qB,UACdtkB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQghB,aAGzBpvB,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,WACH5E,KAAK,OACLkK,MAAM,2DACNpC,YAAY,aACZ+B,MAAOmF,EAAOyc,SACd/xB,MAAOkH,EAAO6qB,SACdvkB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQihB,aAI7BrvB,IAAAC,cAAC89B,GAAY,CACTv1B,GAAG,cACH5E,KAAK,OACLkK,MAAM,oDACNpC,YAAY,aACZmH,cAAeA,EACfpF,MAAOmF,EAAO0c,YACdhyB,MAAOkH,EAAO8qB,YACdxkB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQkhB,cAGrBtvB,IAAAC,cAAA,WAAM,uBACND,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,eACH5E,KAAK,OACLkK,MAAM,gBACNpC,YAAY,aACZ+B,MAAOmF,EAAO2c,aACdjyB,MAAOkH,EAAO+qB,aACdzkB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQmhB,gBAIzBvvB,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,kBACH5E,KAAK,OACLkK,MAAM,oBACNpC,YAAY,aACZ+B,MAAOmF,EAAO4c,gBACdlyB,MAAOkH,EAAOgrB,gBACd1kB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQohB,kBAEnB,IAACxvB,IAAAC,cAAA,WAAM,yBAGjBD,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,QACH5E,KAAK,OACLkK,MAAM,QACNpC,YAAY,aACZ+B,MAAOW,EAAQ/E,OAASuJ,EAAOvJ,MAC/B/L,MAAOkH,EAAO6E,MACdyB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQ/E,SAGzBrJ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,YACH5E,KAAK,OACLkK,MAAM,gBACNpC,YAAY,aACZ+B,MAAOmF,EAAOkxB,UACdxmC,MAAOkH,EAAOs/B,UACdh5B,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQ01B,cAI5Bt/B,EAAOu/B,eACJ/jC,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,cACH5E,KAAK,OACLkK,MAAM,eACNpC,YAAY,aACZ+B,MAAOW,EAAQipB,aAAezkB,EAAOykB,YACrC/5B,MAAOkH,EAAO6yB,YACdvsB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQipB,eAGzBr3B,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,kBACH5E,KAAK,OACLkK,MAAM,uBACNpC,YAAY,aACZ+B,MAAOmF,EAAOoxB,gBACd1mC,MAAOkH,EAAOw/B,gBACdl5B,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQ41B,oBAK7B,KACJhkC,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,cACH5E,KAAK,MACLkK,MAAM,eACNpC,YAAY,aACZ+B,MAAOmF,EAAO6c,YACdnyB,MAAOkH,EAAOirB,YACd3kB,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQqhB,cAErBzvB,IAAAC,cAAA,WACAD,IAAAC,cAAA,UAAI,WACJD,IAAAC,cAAA,OAAKC,UAAU,2BACXF,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACm+B,GAAW,CACR51B,GAAG,WACH5E,KAAK,SACL8H,YAAY,cACZ+B,MAAOmF,EAAOmX,SACdzsB,MAAOkH,EAAOulB,SACdjf,SAAU+H,EACVhF,OAAQiF,EACR1E,QAASA,EAAQ2b,SACjByU,QAAQ,aAKpBx+B,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACm+B,GAAW,CACR51B,GAAG,cACH5E,KAAK,OACL8H,YAAY,aACZ+B,MAAOmF,EAAOwW,YACd9rB,MAAOkH,EAAO4kB,YACdte,SAAU+H,EACVhF,OAAQiF,EACR1E,QAASA,EAAQgb,YACjBoV,QAAQ,UAGhBx+B,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACm+B,GAAW,CACR51B,GAAG,aACH5E,KAAK,OACL8H,YAAY,YACZ+B,MAAOmF,EAAOyW,WACd/rB,MAAOkH,EAAO6kB,WACdve,SAAU+H,EACVhF,OAAQiF,EACR1E,QAASA,EAAQib,WACjBmV,QAAQ,WAIpBx+B,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACm+B,GAAW,CACR51B,GAAG,eACH5E,KAAK,OACL8H,YAAY,QACZ+B,MAAOmF,EAAOiX,aACdvsB,MAAOkH,EAAOqlB,aACd/e,SAAU+H,EACVhF,OAAQiF,EACR1E,QAASA,EAAQyb,aACjB2U,QAAQ,YAGhBx+B,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACm+B,GAAW,CACR51B,GAAG,SACH5E,KAAK,OACL8H,YAAY,MACZ+B,MAAOmF,EAAOkX,OACdxsB,MAAOkH,EAAOslB,OACdhf,SAAU+H,EACVhF,OAAQiF,EACR1E,QAASA,EAAQ0b,OACjB0U,QAAQ,UAIpBx+B,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,YACH5E,KAAK,OACL8H,YAAY,kBACZ+B,MAAOmF,EAAO0W,UACdhsB,MAAOkH,EAAO8kB,UACdxe,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQkb,cAI7BtpB,IAAAC,cAACW,IAAG,KACAZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,SACH5E,KAAK,OACL8H,YAAY,OACZ+B,MAAOmF,EAAO2W,OACdjsB,MAAOkH,EAAO+kB,OACdze,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQmb,UAGzBvpB,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,UACH5E,KAAK,OACL8H,YAAY,QACZ+B,MAAOmF,EAAO4W,QACdlsB,MAAOkH,EAAOglB,QACd1e,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQob,YAGvB,IAACxpB,IAAAC,cAACW,IAAG,KACPZ,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,QACH5E,KAAK,OACL8H,YAAY,UACZ+B,MAAOmF,EAAO6W,MACdnsB,MAAOkH,EAAOilB,MACd3e,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQqb,SAGzBzpB,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAC09B,GAAS,CACNn1B,GAAG,YACH5E,KAAK,OACL8H,YAAY,UACZ+B,MAAOmF,EAAO8W,UACdpsB,MAAOkH,EAAOklB,UACd5e,SAAU7N,EACV4Q,OAAQiF,EACR1E,QAASA,EAAQsb,cAI7B1pB,IAAAC,cAAA,YAEJD,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAAA,WACAD,IAAAC,cAACqlC,KAAK,CACFC,OAAQ/gC,EAAOulB,SACfpjB,KAAMnC,EAAO4kB,YAAc,IAAM5kB,EAAO6kB,WACxCmc,OAAQhhC,EAAOqlB,aAAa5oB,QAAQ,KAAM,IAC1CwkC,IAAKjhC,EAAOslB,OACZ2a,QAASjgC,EAAOigC,QAChBiB,cAAe,CAAC,OAAQ,aAAc,cAE1C1lC,IAAAC,cAAA,WACAD,IAAAC,cAACY,IAAG,KACAb,IAAAC,cAACW,IAAG,CAACV,UAAU,iCACXF,IAAAC,cAAA,OACIC,UAAU,gCACVI,IAA8B,cAChC,QAAKN,IAAAC,cAAA,OACHC,UAAU,gCACVI,IAA8B,oBAChC,QAAKN,IAAAC,cAAA,OACHC,UAAU,gCACVI,IAA8B,uBAUtDN,IAAAC,cAACiT,IAAK,CACFC,UAAW0rB,GACXl4B,KAAK,eACL6B,GAAG,eACHlL,MAAOkH,EAAOkgC,eAGF,GAAfU,EAAmB,KAAOplC,IAAAC,cAAA,WAEnB1B,OAAOC,KAAKoU,GAAQlT,OAAS,EACzBM,IAAAC,cAAA,WAAK,oDAEDD,IAAAC,cAAA,YAGJ,KAIJ1B,OAAOC,KAAKoU,GAAQhU,KAAI,SAAA6O,GACpB,OAAImF,EAAOnF,IAAUmF,EAAOnF,GAAOnQ,MAE3BsV,EAAOnF,GAAOnQ,MAIdsV,EAAOnF,MAGhB7O,KAAI,SAAC6O,EAAOuE,GACX,OAAOhS,IAAAC,cAAA,OAAK5C,IAAK2U,EAAO9R,UAAU,kBAAkB7B,KAAKmR,UAAU/B,QAO/EzN,IAAAC,cAAA,WACAD,IAAAC,cAAA,UAAQ2D,KAAK,SAAShC,SAAUq7B,GAAc,gBAStE,OAAQj9B,IAAAC,cAAA,OAAKC,UAAU,UAClB1C,KAAKf,MAAMsP,iBACR/L,IAAAC,cAAA,WACID,IAAAC,cAACQ,IAAK,CAACC,QAAQ,WACXV,IAAAC,cAAA,cAAQ,oCAEZD,IAAAC,cAAA,SAAG,oHACHD,IAAAC,cAAA,KAAGmB,KAAK,IAAIlB,UAAU,4BAA4B8M,KAAK,UAAS,gBAEpEhN,IAAAC,cAAA,OAAKC,UAAU,UACXF,IAAAC,cAAA,UAAI,4CACJD,IAAAC,cAAA,WACID,IAAAC,cAAA,UAAI,qBACJD,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,kFACJD,IAAAC,cAAA,UAAI,qIACJD,IAAAC,cAAA,UAAI,cAAWD,IAAAC,cAAA,UAAQC,UAAU,SAAQ,OAAY,mHAAgHF,IAAAC,cAAA,UAAQC,UAAU,SAAQ,WAAgB,qCAEnNF,IAAAC,cAAA,UAAI,mBACJD,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAI,+DACJD,IAAAC,cAAA,UAAI,eAAYD,IAAAC,cAAA,UAAQC,UAAU,SAAQ,kCAC1CF,IAAAC,cAAA,UAAI,kEAERD,IAAAC,cAAA,UAAI,uBACJD,IAAAC,cAAA,UACID,IAAAC,cAAA,UAAID,IAAAC,cAAA,UAAQC,UAAU,cAAc,uKACpCF,IAAAC,cAAA,UAAI,oEACJD,IAAAC,cAAA,UAAI,sHACJD,IAAAC,cAAA,UAAI,2GAGZD,IAAAC,cAACskC,EAAO,OAEhBvkC,IAAAC,cAACkL,IAAK,CACFC,KAAM5N,KAAKf,MAAM+M,QACjB6B,OAAQ7N,KAAK8N,WACbC,gBAAgB,gBAEhBvL,IAAAC,cAACkL,IAAMK,KAAI,KACPxL,IAAAC,cAACgN,IAAK,CAAC3M,IAA8B,mBAAoBJ,UAAU,8BACnEF,IAAAC,cAAA,WACAD,IAAAC,cAAA,KAAGC,UAAU,UAAS,2CACtBF,IAAAC,cAAA,KAAGC,UAAU,UAAS,uBAtlCpB,CAASF,IAAMqB,W,yBC3jBtB,YAAAC,GAAA,IAAcqkC,EAACrkC,EAAZ6R,UAAqByyB,EAAMtkC,EAAbhF,MAAkBupC,EAAIhkC,YAAAP,EAAAQ,IAAA,OACpD9B,IAAAC,cAAC6lC,IAAKvnC,OAAAyD,OAAA,GAAK6jC,EAAI,CAAEE,OAAQ,SAAAzpC,GAAK,OAAI0D,IAAAC,cAAC0lC,EAACpnC,OAAAyD,OAAA,GAAK1F,EAAWspC,S,yBCDvC,YAAAtkC,GAAA,IAAcqkC,EAACrkC,EAAZ6R,UAAqByyB,EAAMtkC,EAAbhF,MAAkBupC,EAAIhkC,YAAAP,EAAAQ,IAAA,OACpD9B,IAAAC,cAAC6lC,IAAKvnC,OAAAyD,OAAA,GACA6jC,EAAI,CACRE,OAAQ,SAAAzpC,GAAK,OACXspC,EAAOI,gBACHhmC,IAAAC,cAAC0lC,EAACpnC,OAAAyD,OAAA,GAAK1F,EAAWspC,IAClB5lC,IAAAC,cAACgmC,IAAQ,CACP9kC,GAAE,mBAAAc,OAAqB3F,EAAMiD,SAAS2mC,UAAQjkC,OAAG3F,EAAMiD,SACpD4M,e,yBCQA,gBAAA7K,GAA+C,IAAjCqkC,EAACrkC,EAAZ6R,UAAqByyB,EAAMtkC,EAAbhF,MAAkBupC,EAAIhkC,YAAAP,EAAAQ,IAC9CqkC,EAjBR,SAAqBx/B,GAAmC,IAA7By/B,EAAGt8B,UAAApK,OAAA,QAAA0Y,IAAAtO,UAAA,GAAAA,UAAA,GAAGqpB,OAAO5zB,SAAS6B,KAC/CuF,EAAOA,EAAK1F,QAAQ,QAAS,QAE7B,IAAMolC,EAAQ,IAAIC,OAAO,OAAS3/B,EAAO,oBAAqB,KACxDkO,EAAUwxB,EAAME,KAAKH,GAE3B,OAAKvxB,EAGAA,EAAQ,GAIN2xB,mBAAmB3xB,EAAQ,GAAG5T,QAAQ,MAAO,MAH3C,GAHA,KAUQwlC,CAAY,YAC7B,OACEzmC,IAAAC,cAAC6lC,IAAKvnC,OAAAyD,OAAA,GACA6jC,EAAI,CACRE,OAAQ,SAAAzpC,GAAK,OACVspC,EAAOI,gBAEJhmC,IAAAC,cAACgmC,IAAQ,CACP9kC,GAAiB,KAAbglC,GAAgC,OAAbA,EAAoB,IAAMA,IAFnDnmC,IAAAC,cAAC0lC,EAACpnC,OAAAyD,OAAA,GAAK1F,EAAWspC,SCGf,YAAAtkC,GAAA,IAAGolC,EAAUplC,EAAVolC,WAAU,OAC1B1mC,IAAAC,cAAC0mC,IAAM,KACL3mC,IAAAC,cAAC2mC,GAAY,CAACC,KAAK,IAAIC,OAAK,EAAC3zB,UAAW4zB,EAAMzqC,MAAOoqC,IACrD1mC,IAAAC,cAAC2mC,GAAY,CAACC,KAAK,SAASC,OAAK,EAAC3zB,UAAW6zB,GAAO1qC,MAAOoqC,IAC3D1mC,IAAAC,cAAC2mC,GAAY,CAACC,KAAK,WAAWC,OAAK,EAAC3zB,UAAW8zB,GAAS3qC,MAAOoqC,IAE/D1mC,IAAAC,cAACinC,GAAoB,CAACL,KAAK,SAASC,OAAK,EAAC3zB,UAAWtL,EAAOvL,MAAOoqC,IACnE1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,iBAAiBC,OAAK,EAAC3zB,UAAWi0B,GAAoB9qC,MAAOoqC,IACtF1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,oBAAoBC,OAAK,EAAC3zB,UAAWk0B,GAAmB/qC,MAAOoqC,IACxF1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,qBAAqBC,OAAK,EAAC3zB,UAAWm0B,GAAoBhrC,MAAOoqC,IAE1F1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,gBAAgBC,OAAK,EAAC3zB,UAAWo0B,GAAajrC,MAAOoqC,IAC9E1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,gBAAgBC,OAAK,EAAC3zB,UAAWq0B,GAAclrC,MAAOoqC,IAC/E1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,gBAAgBC,OAAK,EAAC3zB,UAAWuS,GAAcppB,MAAOoqC,IAC/E1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,gBAAgBC,OAAK,EAAC3zB,UAAWs0B,GAAcnrC,MAAOoqC,IAC/E1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,UAAUC,OAAK,EAAC3zB,UAAW2N,GAAmBxkB,MAAOoqC,IAE9E1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,qBAAqBC,OAAK,EAAC3zB,UAAWI,GAAmBjX,MAAOoqC,IACzF1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,sBAAsBC,OAAK,EAAC3zB,UAAWuL,GAAkBpiB,MAAOoqC,IACzF1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,yBAAyBC,OAAK,EAAC3zB,UAAWu0B,GAAuBprC,MAAOoqC,IAGjG1mC,IAAAC,cAAC2mC,GAAY,CAACC,KAAK,gBAAgBC,OAAK,EAAC3zB,UAAWvH,EAActP,MAAOoqC,IACzE1mC,IAAAC,cAAC2mC,GAAY,CAACC,KAAK,yBAAyBC,OAAK,EAAC3zB,UAAWsvB,GAAkBnmC,MAAOoqC,IACtF1mC,IAAAC,cAACknC,GAAkB,CAACN,KAAK,SAASC,OAAK,EAAC3zB,UAAWhG,EAAO7Q,MAAOoqC,IAGjE1mC,IAAAC,cAAC6lC,IAAK,CAAC3yB,UAAWw0B,M,sBCvDtBzlC,GAAA,kBAAAC,GAAA,IAAAC,EAAAD,EAAA,GAAAE,EAAA9D,OAAA+D,UAAAC,EAAAF,EAAAG,eAAAC,EAAAlE,OAAAmE,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAA/E,OAAAqF,EAAA,mBAAAC,cAAA,GAAA9D,EAAA6D,EAAAE,UAAA,aAAAC,EAAAH,EAAAI,eAAA,kBAAAC,EAAAL,EAAAM,aAAA,yBAAAC,EAAAd,EAAAD,EAAAE,GAAA,OAAA9D,OAAAmE,eAAAN,EAAAD,EAAA,CAAA7E,MAAA+E,EAAAc,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAjB,EAAAD,GAAA,IAAAe,EAAA,aAAAd,GAAAc,EAAA,SAAAd,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,GAAA,SAAAiB,EAAAlB,EAAAD,EAAAE,EAAAE,GAAA,IAAAI,EAAAR,KAAAG,qBAAAiB,EAAApB,EAAAoB,EAAAzE,EAAAP,OAAAiF,OAAAb,EAAAL,WAAAQ,EAAA,IAAAW,EAAAlB,GAAA,WAAAE,EAAA3D,EAAA,WAAAxB,MAAAoG,EAAAtB,EAAAC,EAAAS,KAAAhE,EAAA,SAAA6E,EAAAvB,EAAAD,EAAAE,GAAA,WAAAuB,KAAA,SAAAC,IAAAzB,EAAA0B,KAAA3B,EAAAE,IAAA,MAAAD,GAAA,OAAAwB,KAAA,QAAAC,IAAAzB,IAAAD,EAAAmB,OAAA,IAAAS,EAAA,iBAAA3E,EAAA,YAAA4E,EAAA,YAAAC,EAAA,YAAAV,KAAA,SAAAW,KAAA,SAAAC,KAAA,IAAAC,EAAA,GAAAlB,EAAAkB,EAAAtF,GAAA,8BAAAuF,EAAA9F,OAAA+F,eAAAC,EAAAF,OAAAG,EAAA,MAAAD,OAAAlC,GAAAE,EAAAuB,KAAAS,EAAAzF,KAAAsF,EAAAG,GAAA,IAAAE,EAAAN,EAAA7B,UAAAiB,EAAAjB,UAAA/D,OAAAiF,OAAAY,GAAA,SAAAM,EAAAtC,GAAA,0BAAAlD,SAAA,SAAAiD,GAAAe,EAAAd,EAAAD,GAAA,SAAAC,GAAA,YAAAuC,QAAAxC,EAAAC,SAAA,SAAAwC,EAAAxC,EAAAD,GAAA,SAAA0C,EAAAxC,EAAAI,EAAAE,EAAA7D,GAAA,IAAAgE,EAAAa,EAAAvB,EAAAC,GAAAD,EAAAK,GAAA,aAAAK,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAA1F,MAAA,OAAAyG,GAAA,iBAAAA,GAAAxB,EAAAuB,KAAAC,EAAA,WAAA5B,EAAA2C,QAAAf,EAAAgB,SAAAjH,MAAA,SAAAsE,GAAAyC,EAAA,OAAAzC,EAAAO,EAAA7D,MAAA,SAAAsD,GAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,MAAAqD,EAAA2C,QAAAf,GAAAjG,MAAA,SAAAsE,GAAAY,EAAA1F,MAAA8E,EAAAO,EAAAK,MAAA,SAAAZ,GAAA,OAAAyC,EAAA,QAAAzC,EAAAO,EAAA7D,QAAAgE,EAAAe,KAAA,IAAAxB,EAAAI,EAAA,gBAAAnF,MAAA,SAAA8E,EAAAG,GAAA,SAAAyC,IAAA,WAAA7C,GAAA,SAAAA,EAAAE,GAAAwC,EAAAzC,EAAAG,EAAAJ,EAAAE,MAAA,OAAAA,MAAAvE,KAAAkH,YAAA,SAAAtB,EAAAvB,EAAAE,EAAAE,GAAA,IAAAE,EAAAsB,EAAA,gBAAApB,EAAA7D,GAAA,GAAA2D,IAAArD,EAAA,MAAA6F,MAAA,mCAAAxC,IAAAuB,EAAA,cAAArB,EAAA,MAAA7D,EAAA,OAAAxB,MAAA8E,EAAA8C,MAAA,OAAA3C,EAAA1E,OAAA8E,EAAAJ,EAAAsB,IAAA/E,IAAA,KAAAgE,EAAAP,EAAA4C,SAAA,GAAArC,EAAA,KAAAE,EAAAoC,EAAAtC,EAAAP,GAAA,GAAAS,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAT,EAAA1E,OAAA0E,EAAA8C,KAAA9C,EAAA+C,MAAA/C,EAAAsB,SAAA,aAAAtB,EAAA1E,OAAA,IAAA4E,IAAAsB,EAAA,MAAAtB,EAAAuB,EAAAzB,EAAAsB,IAAAtB,EAAAgD,kBAAAhD,EAAAsB,SAAA,WAAAtB,EAAA1E,QAAA0E,EAAAiD,OAAA,SAAAjD,EAAAsB,KAAApB,EAAArD,EAAA,IAAAgF,EAAAT,EAAAxB,EAAAE,EAAAE,GAAA,cAAA6B,EAAAR,KAAA,IAAAnB,EAAAF,EAAA2C,KAAAlB,EAAA,iBAAAI,EAAAP,MAAAI,EAAA,gBAAA3G,MAAA8G,EAAAP,IAAAqB,KAAA3C,EAAA2C,MAAA,UAAAd,EAAAR,OAAAnB,EAAAuB,EAAAzB,EAAA1E,OAAA,QAAA0E,EAAAsB,IAAAO,EAAAP,OAAA,SAAAuB,EAAAjD,EAAAE,GAAA,IAAAE,EAAAF,EAAAxE,OAAA4E,EAAAN,EAAAU,SAAAN,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAA8C,SAAA,eAAA5C,GAAAJ,EAAAU,SAAA4C,SAAApD,EAAAxE,OAAA,SAAAwE,EAAAwB,IAAAzB,EAAAgD,EAAAjD,EAAAE,GAAA,UAAAA,EAAAxE,SAAA,WAAA0E,IAAAF,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAAnD,EAAA,aAAA0B,EAAA,IAAAtB,EAAAgB,EAAAlB,EAAAN,EAAAU,SAAAR,EAAAwB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAvB,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAAlB,EAAAkB,IAAAxB,EAAA8C,SAAA,KAAAlB,EAAA,IAAAnF,EAAA6D,EAAAkB,IAAA,OAAA/E,IAAAoG,MAAA7C,EAAAF,EAAAwD,YAAA7G,EAAAxB,MAAA+E,EAAAuD,KAAAzD,EAAA0D,QAAA,WAAAxD,EAAAxE,SAAAwE,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,GAAAC,EAAA8C,SAAA,KAAAlB,GAAAnF,GAAAuD,EAAAxE,OAAA,QAAAwE,EAAAwB,IAAA,IAAA6B,UAAA,oCAAArD,EAAA8C,SAAA,KAAAlB,GAAA,SAAA6B,EAAA1D,GAAA,IAAAD,EAAA,CAAA4D,OAAA3D,EAAA,SAAAA,IAAAD,EAAA6D,SAAA5D,EAAA,SAAAA,IAAAD,EAAA8D,WAAA7D,EAAA,GAAAD,EAAA+D,SAAA9D,EAAA,SAAA+D,WAAAtG,KAAAsC,GAAA,SAAAiE,EAAAhE,GAAA,IAAAD,EAAAC,EAAAiE,YAAA,GAAAlE,EAAAyB,KAAA,gBAAAzB,EAAA0B,IAAAzB,EAAAiE,WAAAlE,EAAA,SAAAsB,EAAArB,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAlD,QAAA4G,EAAA,WAAAQ,OAAA,YAAA9B,EAAArC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAArD,GAAA,GAAAuD,EAAA,OAAAA,EAAAyB,KAAA3B,GAAA,sBAAAA,EAAAyD,KAAA,OAAAzD,EAAA,IAAAoE,MAAApE,EAAAzC,QAAA,KAAA+C,GAAA,EAAAE,EAAA,SAAAiD,IAAA,OAAAnD,EAAAN,EAAAzC,QAAA,GAAA6C,EAAAuB,KAAA3B,EAAAM,GAAA,OAAAmD,EAAAtI,MAAA6E,EAAAM,GAAAmD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,GAAA,OAAAjD,EAAAiD,KAAAjD,GAAA,UAAA+C,iBAAAvD,EAAA,2BAAA+B,EAAA5B,UAAA6B,EAAA1B,EAAAgC,EAAA,eAAAnH,MAAA6G,EAAAf,cAAA,IAAAX,EAAA0B,EAAA,eAAA7G,MAAA4G,EAAAd,cAAA,IAAAc,EAAAsC,YAAAtD,EAAAiB,EAAAnB,EAAA,qBAAAb,EAAAsE,oBAAA,SAAArE,GAAA,IAAAD,EAAA,mBAAAC,KAAAsE,YAAA,QAAAvE,QAAA+B,GAAA,uBAAA/B,EAAAqE,aAAArE,EAAAwE,QAAAxE,EAAAyE,KAAA,SAAAxE,GAAA,OAAA7D,OAAAsI,eAAAtI,OAAAsI,eAAAzE,EAAA+B,IAAA/B,EAAA0E,UAAA3C,EAAAjB,EAAAd,EAAAY,EAAA,sBAAAZ,EAAAE,UAAA/D,OAAAiF,OAAAiB,GAAArC,GAAAD,EAAA4E,MAAA,SAAA3E,GAAA,OAAA2C,QAAA3C,IAAAsC,EAAAE,EAAAtC,WAAAY,EAAA0B,EAAAtC,UAAAQ,GAAA,0BAAAX,EAAAyC,gBAAAzC,EAAA6E,MAAA,SAAA5E,EAAAC,EAAAE,EAAAE,EAAAE,QAAA,IAAAA,MAAAsE,SAAA,IAAAnI,EAAA,IAAA8F,EAAAtB,EAAAlB,EAAAC,EAAAE,EAAAE,GAAAE,GAAA,OAAAR,EAAAsE,oBAAApE,GAAAvD,IAAA8G,OAAA9H,MAAA,SAAAsE,GAAA,OAAAA,EAAA8C,KAAA9C,EAAA9E,MAAAwB,EAAA8G,WAAAlB,EAAAD,GAAAvB,EAAAuB,EAAAzB,EAAA,aAAAE,EAAAuB,EAAA3F,GAAA,0BAAAoE,EAAAuB,EAAA,qDAAAtC,EAAA3D,KAAA,SAAA4D,GAAA,IAAAD,EAAA5D,OAAA6D,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAxC,KAAA0C,GAAA,OAAAF,EAAA6E,UAAA,SAAAtB,IAAA,KAAAvD,EAAA3C,QAAA,KAAA0C,EAAAC,EAAA8E,MAAA,GAAA/E,KAAAD,EAAA,OAAAyD,EAAAtI,MAAA8E,EAAAwD,EAAAV,MAAA,EAAAU,EAAA,OAAAA,EAAAV,MAAA,EAAAU,IAAAzD,EAAAqC,SAAAf,EAAAnB,UAAA,CAAAoE,YAAAjD,EAAA6C,MAAA,SAAAnE,GAAA,QAAAiF,KAAA,OAAAxB,KAAA,OAAAP,KAAA,KAAAC,MAAAlD,EAAA,KAAA8C,MAAA,OAAAC,SAAA,UAAAtH,OAAA,YAAAgG,IAAAzB,EAAA,KAAA+D,WAAAjH,QAAAkH,IAAAjE,EAAA,QAAAE,KAAA,WAAAA,EAAAgF,OAAA,IAAA9E,EAAAuB,KAAA,KAAAzB,KAAAkE,OAAAlE,EAAA1C,MAAA,WAAA0C,GAAAD,IAAAkF,KAAA,gBAAApC,MAAA,MAAA9C,EAAA,KAAA+D,WAAA,GAAAE,WAAA,aAAAjE,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,YAAA0D,MAAAhC,kBAAA,SAAApD,GAAA,QAAA+C,KAAA,MAAA/C,EAAA,IAAAE,EAAA,cAAAmF,EAAAjF,EAAAE,GAAA,OAAA3D,EAAA8E,KAAA,QAAA9E,EAAA+E,IAAA1B,EAAAE,EAAAuD,KAAArD,EAAAE,IAAAJ,EAAAxE,OAAA,OAAAwE,EAAAwB,IAAAzB,KAAAK,EAAA,QAAAA,EAAA,KAAA0D,WAAAzG,OAAA,EAAA+C,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAwD,WAAA1D,GAAA3D,EAAA6D,EAAA0D,WAAA,YAAA1D,EAAAoD,OAAA,OAAAyB,EAAA,UAAA7E,EAAAoD,QAAA,KAAAqB,KAAA,KAAAtE,EAAAP,EAAAuB,KAAAnB,EAAA,YAAAK,EAAAT,EAAAuB,KAAAnB,EAAA,iBAAAG,GAAAE,EAAA,SAAAoE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,WAAAoB,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,iBAAA,GAAAnD,GAAA,QAAAsE,KAAAzE,EAAAqD,SAAA,OAAAwB,EAAA7E,EAAAqD,UAAA,YAAAhD,EAAA,MAAAiC,MAAA,kDAAAmC,KAAAzE,EAAAsD,WAAA,OAAAuB,EAAA7E,EAAAsD,gBAAAT,OAAA,SAAApD,EAAAD,GAAA,QAAAE,EAAA,KAAA8D,WAAAzG,OAAA,EAAA2C,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAA0D,WAAA9D,GAAA,GAAAI,EAAAsD,QAAA,KAAAqB,MAAA7E,EAAAuB,KAAArB,EAAA,oBAAA2E,KAAA3E,EAAAwD,WAAA,KAAAtD,EAAAF,EAAA,OAAAE,IAAA,UAAAP,GAAA,aAAAA,IAAAO,EAAAoD,QAAA5D,MAAAQ,EAAAsD,aAAAtD,EAAA,UAAA7D,EAAA6D,IAAA0D,WAAA,UAAAvH,EAAA8E,KAAAxB,EAAAtD,EAAA+E,IAAA1B,EAAAQ,GAAA,KAAA9E,OAAA,YAAA+H,KAAAjD,EAAAsD,WAAAhC,GAAA,KAAAwD,SAAA3I,IAAA2I,SAAA,SAAArF,EAAAD,GAAA,aAAAC,EAAAwB,KAAA,MAAAxB,EAAAyB,IAAA,gBAAAzB,EAAAwB,MAAA,aAAAxB,EAAAwB,KAAA,KAAAgC,KAAAxD,EAAAyB,IAAA,WAAAzB,EAAAwB,MAAA,KAAA2D,KAAA,KAAA1D,IAAAzB,EAAAyB,IAAA,KAAAhG,OAAA,cAAA+H,KAAA,kBAAAxD,EAAAwB,MAAAzB,IAAA,KAAAyD,KAAAzD,GAAA8B,GAAAyD,OAAA,SAAAtF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA4D,aAAA7D,EAAA,YAAAqF,SAAApF,EAAAgE,WAAAhE,EAAA6D,UAAAE,EAAA/D,GAAA4B,IAAA0D,MAAA,SAAAvF,GAAA,QAAAD,EAAA,KAAAgE,WAAAzG,OAAA,EAAAyC,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAA8D,WAAAhE,GAAA,GAAAE,EAAA0D,SAAA3D,EAAA,KAAAG,EAAAF,EAAAgE,WAAA,aAAA9D,EAAAqB,KAAA,KAAAnB,EAAAF,EAAAsB,IAAAuC,EAAA/D,GAAA,OAAAI,GAAA,MAAAwC,MAAA,0BAAA2C,cAAA,SAAAzF,EAAAE,EAAAE,GAAA,YAAA4C,SAAA,CAAAtC,SAAA2B,EAAArC,GAAAwD,WAAAtD,EAAAwD,QAAAtD,GAAA,cAAA1E,SAAA,KAAAgG,IAAAzB,GAAA6B,IAAA9B,EAUAylC,EAAQ,MAAeC,WACvBD,EAAQ,MAAoB,IAEtBE,GAAG,SAAAhgC,GACP,SAAAggC,EAAYxrC,GAAQ,IAADC,EAdrB6F,EAAAK,EAAAN,EAoBM,OANe3F,YAAA,KAAAsrC,GAdrB1lC,EAeI,KAfJK,EAeIqlC,EAfJ3lC,EAeI,CAAM7F,GAfVmG,EAAAsF,YAAAtF,IAeIlG,EAfJyL,YAAA5F,EAAA6F,cAAAC,QAAAC,UAAA1F,EAAAN,GAAA,GAAA4F,YAAA3F,GAAAsE,aAAAjE,EAAA2F,MAAAhG,EAAAD,KAqCEsH,qBAAuB,SAAAs+B,GACrBxrC,EAAKkB,SAAS,CAAEuoC,gBAAiB+B,KAClCxrC,EAEDyrC,aAAY,eAAA1mC,EAAAwH,YAAA5G,KAAA0E,MAAG,SAAAmC,EAAMV,GAAK,OAAAnG,KAAAoB,MAAA,SAAA2F,GAAA,cAAAA,EAAA7B,KAAA6B,EAAArD,MAAA,cAAAqD,EAAArD,KAAA,EAClBuD,IAAK8+B,UAAU,KAAD,EAEpB1rC,EAAKkN,sBAAqB,GAE1BlN,EAAKD,MAAM4rC,QAAQroC,KAAK,UAAU,wBAAAoJ,EAAA3B,UAAAyB,OACnC,gBAAAc,GAAA,OAAAvI,EAAA8G,MAAA,KAAA0B,YANW,GAxBVvN,EAAKE,MAAQ,CACXupC,iBAAiB,EACjBmC,kBAAkB,GAClB5rC,EACH,OAAAY,YAAA2qC,EAAAhgC,GAAA1K,YAAA0qC,EAAA,EAAAzqC,IAAA,oBAAAC,MAAA,eAAA2nB,EAAAnc,YAAA5G,KAAA0E,MAED,SAAAqD,IAAA,OAAA/H,KAAAoB,MAAA,SAAA6G,GAAA,cAAAA,EAAA/C,KAAA+C,EAAAvE,MAAA,cAAAuE,EAAA/C,KAAA,EAAA+C,EAAAvE,KAAA,EAEcuD,IAAK6F,iBAAgB,WAAA7E,EAAA9E,KAAC,CAAD8E,EAAAvE,KAAA,QAC7BpI,KAAKiM,sBAAqB,GAAM,OAAAU,EAAAvE,KAAA,gBAAAuE,EAAA/C,KAAA,EAAA+C,EAAAT,GAAAS,EAAA,SAI9BA,EAAAT,GAEH,QAEHlM,KAAKC,SAAS,CAAE0qC,kBAAkB,IAAS,yBAAAh+B,EAAA7C,UAAA2C,EAAA,kBAXtB,OAYtB,WAZsB,OAAAgb,EAAA7c,MAAC,KAAD0B,YAFtB,IAEsB,CAAAzM,IAAA,SAAAC,MA0BvB,WACE,IAAMopC,EAAa,CACjBV,gBAAiBxoC,KAAKf,MAAMupC,gBAC5Bv8B,qBAAsBjM,KAAKiM,sBAG7B,OACGjM,KAAKf,MAAM0rC,kBACZnoC,IAAAC,cAAA,OAAKC,UAAU,gBACbF,IAAAC,cAACmoC,IAAM,CAACC,GAAG,QAAQC,OAAO,MACxBtoC,IAAAC,cAACmoC,IAAOG,MAAK,CAACnnC,KAAK,KACjBpB,IAAAC,cAAA,OACEK,IAAKkoC,IACLn3B,MAAM,QACN6V,OAAO,MACP7mB,IAAI,iCAGRL,IAAAC,cAACmoC,IAAO3qB,OAAM,CAACgrB,gBAAc,0BAC7BzoC,IAAAC,cAACmoC,IAAOvqB,SAAQ,CAACrV,GAAG,yBAClBxI,IAAAC,cAACyoC,IAAG,CAACxoC,UAAU,YAGd1C,KAAKf,MAAMupC,gBACVhmC,IAAAC,cAACyoC,IAAG,CAACxoC,UAAU,uBACbF,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,UACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,WAGb5oC,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,iBACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,kBAKb5oC,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,UACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,WAKb5oC,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,YACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,aAKb5oC,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAACxnC,GAAG,UAChBnB,IAAAC,cAAC2oC,IAAO,CAACt2B,QAAS9U,KAAKwqC,cAAc,aAQ3ChoC,IAAAC,cAACyoC,IAAG,CAACxoC,UAAU,uBACbF,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,KACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,UAKb5oC,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,iBACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,kBAKb5oC,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,UACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,WAKb5oC,IAAAC,cAACyoC,IAAIxnC,KAAI,KACPlB,IAAAC,cAAC0oC,gBAAa,CAAC7B,OAAK,EAAC3lC,GAAG,YACtBnB,IAAAC,cAAC2oC,IAAO,KAAC,gBAUrB5oC,IAAAC,cAAC4oC,GAAM,CAACnC,WAAYA,SAnInB,CAASrlC,aAyIHynC,eAAWhB,IC7INiB,QACW,cAA7B5V,OAAO5zB,SAASypC,UAEe,UAA7B7V,OAAO5zB,SAASypC,UAEhB7V,OAAO5zB,SAASypC,SAASpiB,MACvB,2DChBN,IAmBMqiB,IAASC,mHAAYC,gBAVd,CACXC,QAAS,CACPC,OAAQ,YACRC,aAAc,sBACdC,cAAe,6BACfC,iBAAkB,oDAStB9N,gBAAA,CAEE+N,oBAAqB,KAClBR,I,QChBLS,UAAQC,UAAU,CAChBxgC,KAAM,CACJygC,iBAAiB,EACjBC,OAAQZ,GAAOG,QAAQC,OACvBS,WAAYb,GAAOG,QAAQE,aAC3BS,eAAgBd,GAAOG,QAAQI,iBAC/BQ,oBAAqBf,GAAOG,QAAQG,eAEtCn6B,IAAK,CACH66B,UAAW,CACT,CACEtjC,KAAM,aACNujC,SAAU,6DACVL,OAAQ,iBAMhBM,IAASpE,OACP/lC,IAAAC,cAACmqC,gBAAM,KACLpqC,IAAAC,cAAC6nC,GAAG,OAENvd,SAAS8f,eAAe,SF8EpB,kBAAmBC,WACrBA,UAAUC,cAAcC,MAAM1sC,MAAK,SAAA2sC,GACjCA,EAAaC,iB,4GGjHnBC,EAAOC,QAAU,IAA0B,kC","file":"static/js/main.a7ec37b4.chunk.js","sourcesContent":["import moment from 'moment';\r\nimport React from 'react';\r\nimport { Alert, Carousel, Col, Row } from 'react-bootstrap';\r\nimport { Link } from \"react-router-dom\";\r\nimport './Home.css';\r\n\r\n\r\nexport default class Registration extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n startDate: moment(),\r\n packages: [],\r\n avaliableDates: [],\r\n westonDates: [],\r\n westRoxburyDates: [],\r\n locationDates: []\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n handleChange(date) {\r\n this.setState({\r\n startDate: date\r\n });\r\n }\r\n componentDidMount() {\r\n const that = this;\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestPackages.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n console.log(data);\r\n that.setState({ packages: data });\r\n\r\n });\r\n\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestDates.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n data = JSON.parse(data);\r\n console.log(data);\r\n if (data !== null) {\r\n var avaliableDates = Object.keys(data).filter(x => moment(x).isAfter(moment()))\r\n .map(x => moment(x))\r\n .sort(function (a, b) { return a - b; });\r\n console.log(data, avaliableDates);\r\n\r\n var avaliableDatesKeys = avaliableDates.map(x => x.toISOString());\r\n\r\n var locationDates = [];\r\n\r\n avaliableDatesKeys.forEach(function (date) {\r\n console.log(date);\r\n var locations = data[date].locations.map(f => f.toUpperCase());\r\n var dateText = \"\";\r\n var location = \"\";\r\n if (moment(date).day() === 6) {\r\n dateText = \"Weekend of \" + moment(date).format('M/D');\r\n } else {\r\n dateText = \" Weekday \" + moment(date).format('M/D') + \" \" + moment(date).format('ddd');\r\n }\r\n dateText += \" - \";\r\n if (locations.length > 2) {\r\n location += locations.slice(0, locations.length - 1).join(\", \");\r\n location += \" AND \";\r\n location += locations.slice(locations.length - 1, locations.length);\r\n } else {\r\n location += locations.join(\" AND \");\r\n }\r\n locationDates.push({\r\n datetext: dateText,\r\n location: location\r\n });\r\n\r\n });\r\n\r\n that.setState({ avaliableDates: avaliableDates, roadTestDates: data, locationDates });\r\n\r\n }\r\n });\r\n }\r\n // React components are simple functions that take in props and state, and render HTML\r\n render() {\r\n return (\r\n\r\n <div className=\"holder\">\r\n <h2>Boston Road Tests</h2>\r\n <h4 className=\"subBorder\">Take Your Road Test in Boston at Parkway Driving School</h4>\r\n <Carousel>\r\n <Carousel.Item>\r\n <img\r\n className=\"img-fluid d-block mx-auto\"\r\n alt=\"900x500\"\r\n src={process.env.PUBLIC_URL + '/photo1.jpg'}\r\n />\r\n <Carousel.Caption>\r\n <span className=\"carouselTitle\">Schedule your road test today</span>\r\n <p className=\"carouselSubtitle\">We will take care of everything for you</p>\r\n </Carousel.Caption>\r\n </Carousel.Item>\r\n <Carousel.Item>\r\n <img\r\n className=\"img-fluid d-block mx-auto\"\r\n\r\n alt=\"900x500\"\r\n src={process.env.PUBLIC_URL + '/photo2.jpg'}\r\n />\r\n <Carousel.Caption>\r\n <span className=\"carouselTitle\">Get Prepped for your Road Test</span>\r\n <p className=\"carouselSubtitle\">With our Road Test with One Lesson Package</p>\r\n </Carousel.Caption>\r\n </Carousel.Item>\r\n <Carousel.Item>\r\n <img\r\n className=\"img-fluid d-block mx-auto\"\r\n\r\n alt=\"900x500\"\r\n src={process.env.PUBLIC_URL + '/photo3.jpg'}\r\n />\r\n <Carousel.Caption>\r\n <span className=\"carouselTitle\">Fast, easy service!</span>\r\n <p className=\"carouselSubtitle\">Why wait months for the RMV, we will schedule in just a few weeks!</p>\r\n </Carousel.Caption>\r\n </Carousel.Item>\r\n </Carousel>\r\n <h5 className=\"carouselUnder\">We offer road tests in the Boston, MA area!</h5>\r\n <div>\r\n <div className=\"homeDescription\">\r\n Getting your road test requirement out of the way can be a stressful event, but it doesn't have to be.\r\n With our convenient road test dates and online scheduler, you can easily be on the road.\r\n <br></br>\r\n <p>We offer the following options:</p>\r\n <p className=\"warn\">(All prices do not include RMV fees, which are separate. $50 - License Fee, $35 - Road Test Fee)</p>\r\n <p strong className=\"refundwarn\">Note that there are NO Refunds or cancellations for a road test for any reason including illness, emergency or rejection by the RMV examiner.</p>\r\n <span>\r\n Not a Parkway Driving School student? Not a problem. Pricing and registration remains the same.\r\n </span>\r\n <p> <span>\r\n ALL ROAD TEST PREP LESSONS MEET AT 1752 CENTRE STREET, WEST ROXBURY, MA 02132\r\n </span></p>\r\n </div>\r\n <br></br>\r\n <br></br>\r\n\r\n <div className='center'>\r\n <Alert variant=\"warning\">\r\n <Alert.Heading>Current Road Test Availability Dates</Alert.Heading>\r\n <p>\r\n These dates are subject to changes at the discretion of the RMV. We cannot guarantee any dates at this time.\r\n </p>\r\n <p>\r\n </p>\r\n <Row>\r\n <Col>\r\n {this.state.locationDates.length > 0 ?\r\n <div>\r\n {this.state.locationDates.map((datedata, key) => {\r\n return <div key={key}>{datedata.datetext} <span className=\"warn\">{datedata.location}</span></div>;\r\n })}\r\n </div>\r\n : \"No Road Tests Currently Avaliable\"}\r\n </Col>\r\n </Row>\r\n </Alert>\r\n\r\n </div>\r\n <br></br>\r\n {this.state.packages.length > 0 ? <Row>\r\n <Col>\r\n <div className=\"card card-body bg-light\">\r\n Package: Road Test Only $({this.state.packages.filter(x => x.package === \"Road Test Only\")[0].price.replace(\" \", \"\")})\r\n <p>We'll take care of everything for you, except the Road Test by:</p>\r\n <ul>\r\n <li>Scheduling an appointment on a date convenient for you.</li>\r\n <li>Having our trained sponsor meet you on-site. </li>\r\n <li>Providing an easily manueaverable Road Test ready Kia Soul</li>\r\n </ul>\r\n </div>\r\n </Col>\r\n\r\n <Col>\r\n <div className=\"card card-body bg-light\">\r\n Package: Road Test w/ One Lesson $({this.state.packages.filter(x => x.package === \"Road Test w/ One Lesson\")[0].price.replace(\" \", \"\")})\r\n\r\n <p>You will have all the benefits of the Road Test Only package as well as increasing your chances of passing with a 45-minute private lesson with Parkway Driving School</p>\r\n <p>This lesson will cover:</p>\r\n <ul>\r\n <li>Taking a simulated road test.</li>\r\n <li>Going over common road test scenarios.</li>\r\n <li>Using the vehicle you'll be using for the Road Test.</li>\r\n </ul>\r\n </div>\r\n </Col>\r\n <Col>\r\n <div className=\"card card-body bg-light\">\r\n Package: Weekday Road Test @ RMV LOCATION $(150 CREDIT CARD)\r\n\r\n <p>We'll take care of everything for you, except the Road Test by:</p>\r\n <ul>\r\n <li>Scheduling an appointment at an RMV location.</li>\r\n <li>Having our trained sponsor meet you on-site. </li>\r\n <li>Providing an easily manueaverable Road Test ready Kia Soul</li>\r\n <li>Note: All RMV road test will take place between 8- 9 am. </li>\r\n </ul>\r\n </div>\r\n </Col>\r\n\r\n </Row> : null}\r\n\r\n <br></br>\r\n <div className='center'>\r\n 5% Discount for all cash payments. Must visit office to pay by cash. Please call the office for details.\r\n <Link to=\"/registration\" className=\"btn btn-primary full\">\r\n Register for Road Test\r\n </Link>\r\n </div>\r\n <br></br>\r\n\r\n <div className=\"footer\">\r\n <Row>\r\n <Col className='center'>\r\n <div><strong>Phone: </strong> (617) 477-4257</div>\r\n <div><strong>Text Line Only: </strong> (617) 564-3803</div>\r\n <div><strong>Email: </strong><a href=\"mailto:info@parkwaydrivingschool.com\">info@parkwaydrivingschool.com</a></div>\r\n <div><strong>Address: </strong>1752 Centre St, West Roxbury, MA 02132</div>\r\n\r\n <br></br>\r\n </Col>\r\n </Row>\r\n <br></br>\r\n </div>\r\n\r\n <br></br>\r\n </div>\r\n\r\n </div >\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport \"./LoaderButton.css\";\r\n\r\nexport default ({\r\n isLoading,\r\n text,\r\n loadingText,\r\n className = \"\",\r\n disabled = false,\r\n ...props\r\n}) =>\r\n <Button\r\n className={`LoaderButton ${className}`}\r\n disabled={disabled || isLoading}\r\n {...props}\r\n >\r\n {isLoading}\r\n {!isLoading ? text : loadingText}\r\n </Button>;\r\n","import React, { Component } from \"react\";\r\nimport { Auth } from \"aws-amplify\";\r\nimport { FormGroup, FormControl, Modal, Button } from \"react-bootstrap\";\r\nimport LoaderButton from \"../components/LoaderButton\";\r\nimport \"./Login.css\";\r\n\r\nexport default class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n email: \"\",\r\n password: \"\",\r\n loading: false,\r\n password1: \"\",\r\n password2: \"\"\r\n };\r\n }\r\n\r\n validateForm() {\r\n return this.state.email.length > 0 && this.state.password.length > 0;\r\n }\r\n\r\n handleChange = event => {\r\n var re = /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}/;\r\n switch (event.target.id) {\r\n case \"password1\":\r\n if (re.test(event.target.value)) {\r\n this.setState({ password1Err: \"\" })\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n else {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n this.setState({ password1Err: \"Does not meet password requirements.\" })\r\n }\r\n break;\r\n case \"password2\":\r\n if (re.test(event.target.value)) {\r\n this.setState({ password2Err: \"\" })\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n else {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n this.setState({ password2Err: \"Does not meet password requirements.\" })\r\n }\r\n break;\r\n default:\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n\r\n }\r\n\r\n handleSubmit = async event => {\r\n event.preventDefault();\r\n\r\n\r\n this.setState({ isLoading: true });\r\n\r\n try {\r\n const user = await Auth.signIn(this.state.email, this.state.password);\r\n if (user.challengeName === \"NEW_PASSWORD_REQUIRED\") {\r\n console.log(\"user must change their password\")\r\n this.setState({ loading: true, user: user })\r\n }\r\n else {\r\n this.props.userHasAuthenticated(true);\r\n }\r\n console.log(user)\r\n } catch (e) {\r\n alert(e.message);\r\n this.setState({ isLoading: false });\r\n }\r\n }\r\n\r\n handlePWChange = async event => {\r\n\r\n if (this.state.password1 === this.state.password2) {\r\n var re = /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}/;\r\n if (re.test(this.state.password1)) {\r\n let result = Auth.completeNewPassword(this.state.user, this.state.password1, [])\r\n console.log(result)\r\n this.setState({loading: false})\r\n }\r\n console.log(this.state.password1, this.state.password2)\r\n }\r\n else {\r\n this.setState({ password2Err: \"Passwords are not equal.\" })\r\n\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"Login\">\r\n <form onSubmit={this.handleSubmit}>\r\n <FormGroup controlId=\"email\" bsSize=\"large\">\r\n <div>Email</div>\r\n <FormControl\r\n autoFocus\r\n type=\"email\"\r\n value={this.state.email}\r\n onChange={this.handleChange}\r\n />\r\n\r\n </FormGroup>\r\n <FormGroup controlId=\"password\" bsSize=\"large\">\r\n <div>Password</div>\r\n <FormControl\r\n value={this.state.password}\r\n onChange={this.handleChange}\r\n type=\"password\"\r\n autoComplete=\"current-password\"\r\n />\r\n </FormGroup>\r\n <LoaderButton\r\n block\r\n bsSize=\"large\"\r\n disabled={!this.validateForm()}\r\n type=\"submit\"\r\n isLoading={this.state.isLoading}\r\n text=\"Login\"\r\n loadingText=\"Logging in…\"\r\n />\r\n </form>\r\n <Modal\r\n show={this.state.loading}\r\n onHide={this.handleHide}\r\n dialogClassName=\"custom-modal\"\r\n >\r\n <Modal.Body>\r\n <br></br>\r\n <p className=\"center\">You must change your password.</p>\r\n <p className=\"center\">It must be a minimum of 8 characters.</p>\r\n <p className=\"center\">It has to have at least one: uppercase letter, lowercase letter, number</p>\r\n <form onSubmit={this.handlePWChange}>\r\n <FormGroup controlId=\"password1\">\r\n <div>New Password</div>\r\n <FormControl required\r\n name=\"password1\"\r\n type=\"password\"\r\n value={this.state.password1}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleChange}\r\n autoComplete=\"given-name\"\r\n />\r\n {this.state.password1Err ?\r\n <div className=\"error\">{this.state.password1Err}</div> : null}\r\n </FormGroup>\r\n\r\n <FormGroup controlId=\"password2\">\r\n <div>Confirm Password</div>\r\n <FormControl required\r\n name=\"password2\"\r\n type=\"password\"\r\n value={this.state.password2}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleChange}\r\n autoComplete=\"family-name\"\r\n />\r\n <br></br>\r\n {this.state.password2Err ?\r\n <div className=\"error\">{this.state.password2Err}</div> : null}\r\n </FormGroup>\r\n <Button bsStyle=\"primary\" type=\"submit\">Submit</Button>\r\n\r\n </form>\r\n </Modal.Body>\r\n </Modal>\r\n </div >\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport \"./NotFound.css\";\r\n\r\nexport default () =>\r\n <div className=\"NotFound\">\r\n <h3>Sorry, page not found!</h3>\r\n\r\n \r\n </div>;\r\n","import React from 'react';\r\nimport qs from 'qs';\r\nimport moment from 'moment';\r\n\r\nimport { Alert, Image } from 'react-bootstrap';\r\nclass Confirmation extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showConfirmation: false,\r\n loading: true,\r\n student: {},\r\n APIError: \"\",\r\n date: \"\"\r\n };\r\n }\r\n componentDidMount() {\r\n const values = qs.parse(this.props.location.search, { ignoreQueryPrefix: true });\r\n this.setState({ date: moment(values.dateStart).format(\"MM-DD-YYYY\") });\r\n const that = this;\r\n if (values.dateStart && values.token) {//both exist\r\n fetch('https://x4g3mwhate.execute-api.us-east-1.amazonaws.com/dev/validateemail?dateStart=' + encodeURI(values.dateStart) + '&token=' + encodeURI(values.token), {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n if (data.type === \"success\") {\r\n var studentData = data.student;\r\n var momentDate = moment(that.state.date);\r\n var weekendArray = [\"Saturday\", \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"];\r\n\r\n if (momentDate.day() === 6) {\r\n var daysToAdd = weekendArray.indexOf(studentData.weekendDate);\r\n momentDate = momentDate.add(daysToAdd, \"day\");\r\n } else {\r\n switch (studentData.weekendDate) {\r\n case \"Tuesday\":\r\n momentDate = momentDate.add(1, \"day\");\r\n break;\r\n case \"Wednesday\":\r\n momentDate = momentDate.add(2, \"day\");\r\n break;\r\n case \"Thursday\":\r\n momentDate = momentDate.add(3, \"day\");\r\n break;\r\n case \"Friday\":\r\n momentDate = momentDate.add(4, \"day\");\r\n break;\r\n case \"Saturday\":\r\n momentDate = momentDate.subtract(2, \"day\");\r\n break;\r\n case \"Sunday\":\r\n momentDate = momentDate.subtract(1, \"day\");\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n that.setState({ student: data.student, date: momentDate.format(\"MM-DD-YYYY\") });\r\n }\r\n else {\r\n that.setState({ APIError: \"Unable to validate confirmation. Did you click on an old email?\" });\r\n }\r\n that.setState({ showConfirmation: true });\r\n });\r\n }\r\n else {\r\n console.log(\"Missing values\");\r\n this.setState({ showConfirmation: true, APIError: \"Whoops, we couldn't find anything in our records. Please try copying and pasting the link!\" });\r\n }\r\n }\r\n handleErrors = (response) => {\r\n if (!response.ok) {\r\n console.log(response.statusText);\r\n }\r\n return response;\r\n };\r\n\r\n render() {\r\n return (\r\n <div className=\"holder\">\r\n {this.state.showConfirmation ? <div>\r\n <div>\r\n {this.state.APIError ?\r\n <div>\r\n <Alert variant=\"warning\">\r\n <strong>{this.state.APIError}</strong>\r\n </Alert>\r\n </div>\r\n :\r\n <div>\r\n <Alert variant=\"success\">\r\n <strong>Confirmation Confirmed!</strong>\r\n </Alert>\r\n <p>Thanks {this.state.student.fName}, for your confirmation. We look forward to your road test! </p>\r\n <a href=\"/\" className=\"btn btn-primary regButton\" role=\"button\">Return Home</a>\r\n </div>\r\n }\r\n\r\n </div>\r\n {/* These are only used so that paymentjs doesn't complain. */}\r\n <input type=\"hidden\" name=\"CCNumber\" value=\"\"></input>\r\n <input type=\"hidden\" name=\"CCExpiration\" value=\"\"></input>\r\n <input type=\"hidden\" name=\"CCCode\" value=\"\"></input>\r\n\r\n\r\n </div> : <div>\r\n <Image className=\"centerImage\" src={process.env.PUBLIC_URL + '/car-loading.gif'} responsive />\r\n <br></br>\r\n <p className=\"center\">We're working on confirming your road test.</p>\r\n <p className=\"center\">Please Wait.</p>\r\n </div>}\r\n\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default Confirmation;\r\n","import React from 'react';\r\nimport './Home.css';\r\nimport { Col, Row } from \"react-bootstrap\";\r\n\r\nexport default class Admin extends React.Component {\r\n // React components are simple functions that take in props and state, and render HTML\r\n render() {\r\n return (\r\n <div className=\"holder\">\r\n <h2>Administration</h2>\r\n\r\n Welcome, administrator.\r\n <br></br><br></br>\r\n The following options are available:\r\n <Row>\r\n <Col>\r\n <div><strong>Students/Appointments</strong></div>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/roadTestDates\" className=\"btn btn-primary normButton\" role=\"button\">Manage Road Test Dates</a></Row>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/appointments\" className=\"btn btn-primary normButton\" role=\"button\">Manage Appointments</a></Row>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/attendeelist\" className=\"btn btn-primary normButton\" role=\"button\">Print Road Test Schedule/Roster</a></Row>\r\n <br></br>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/roadTestPackages\" className=\"btn btn-primary normButton\" role=\"button\">Manage Packages Offered</a></Row>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/roadTestLocations\" className=\"btn btn-primary normButton\" role=\"button\">Manage Lesson Locations</a></Row>\r\n\r\n <br></br>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/modify\" className=\"btn btn-primary normButton\" role=\"button\">Modify Student Data</a></Row>\r\n <br></br>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/studentTable\" className=\"btn btn-primary normButton\" role=\"button\">View All Student Data</a></Row>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/transactions\" className=\"btn btn-primary normButton\" role=\"button\">View Yearly Transaction Data</a></Row>\r\n\r\n </Col>\r\n <Col>\r\n <div><strong>Student Lesssons</strong></div>\r\n <Row style={{ margin: \"10px\" }}> <a href=\"/manageRoadLessons\" className=\"btn btn-primary normButton\" role=\"button\">Add/Manage Road Lessons</a></Row>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/viewAllRoadLessons\" className=\"btn btn-primary normButton\" role=\"button\">View All Road Lessons</a></Row>\r\n <Row style={{ margin: \"10px\" }}><a href=\"/roadLessonInstructors\" className=\"btn btn-primary normButton\" role=\"button\">Manage Road Lesson Instructors</a></Row>\r\n </Col>\r\n\r\n </Row>\r\n\r\n <br></br>\r\n\r\n </div >\r\n\r\n );\r\n }\r\n}\r\n","export const Locations = [\"West Roxbury\", \"Walpole\", \"RMV Site TBD\", \"Brockton RMV Site\", \"Franklin RMV Site\", \"South Yarmouth RMV Site\", \"Braintree RMV Site\"];\r\nexport const OldLocations = [\"West Roxbury\", \"Walpole\", \"RMV Location TBD\", \"Brockton RMV Road Test Site - Asiaf Skating Arena\", \"Franklin RMV Road Test Site - Pirelli Skating Rink\"];\r\nexport const BothLocations = [\"West Roxbury\", \"Walpole\", \"RMV Site TBD\", \"Brockton RMV Site\", \"Franklin RMV Site\", \"South Yarmouth RMV Site\", \"Braintree RMV Site\", \"Brockton RMV Road Test Site - Asiaf Skating Arena\", \"Franklin RMV Road Test Site - Pirelli Skating Rink\"];\r\n","import React from \"react\";\r\nimport { API, Auth } from \"aws-amplify\";\r\nimport classnames from 'classnames';\r\nimport { Field, Formik } from \"formik\";\r\nimport moment, { formatDate, parseDate } from 'moment';\r\nimport { Alert, Badge, Button, Table } from 'react-bootstrap';\r\nimport DayPicker, { DateUtils } from 'react-day-picker';\r\nimport { Locations } from \"../components/contstants/Locations\";\r\n\r\nimport './RegistrationForm.css';\r\n\r\nconst InputFeedback = ({ error }) =>\r\n error ? <div className=\"input-feedback\">{error}</div> : null;\r\n\r\n// Radio input\r\nconst RadioButton = ({\r\n field: { name, value, onChange, onBlur },\r\n id,\r\n label,\r\n className,\r\n ...props\r\n}) => {\r\n return (\r\n <div>\r\n <input\r\n name={name}\r\n id={id}\r\n type=\"radio\"\r\n value={id} // could be something else for output?\r\n checked={id === value}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n className={classnames(\"radio-button\")}\r\n {...props}\r\n />\r\n <label htmlFor={id}>{label}</label>\r\n </div>\r\n );\r\n};\r\n\r\n\r\n// Radio group\r\nconst RadioButtonGroup = ({\r\n value,\r\n error,\r\n touched,\r\n id,\r\n label,\r\n className,\r\n children\r\n}) => {\r\n const classes = classnames(\r\n \"input-field\",\r\n {\r\n \"is-success\": value || (!error && touched), // handle prefilled or user-filled\r\n \"is-error\": !!error\r\n },\r\n className\r\n );\r\n return (\r\n <div className={classes}>\r\n <fieldset>\r\n <legend>{label}</legend>\r\n {children}\r\n {touched && <InputFeedback error={error} />}\r\n </fieldset>\r\n </div>\r\n );\r\n};\r\n\r\n// Radio input\r\nexport default class RoadTestDates extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleDayClick = this.handleDayClick.bind(this);\r\n this.state = {\r\n selectedDays: [],\r\n loading: false,\r\n showToast: false,\r\n toastType: \"Warning\",\r\n toastMesssage: \"\",\r\n roadTestDates: {},\r\n locations: Locations\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const that = this;\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestDates.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n data = JSON.parse(data);\r\n if (data !== null) {\r\n var selectedDays = Object.keys(data).map(x => new Date(x));\r\n that.setState({ selectedDays: selectedDays, roadTestDates: data });\r\n }\r\n\r\n });\r\n }\r\n\r\n handleSubmit = async event => {\r\n this.setState({ showToast: false, toastMesssage: \"\" });\r\n const that = this;\r\n let newRoadTestDates = {};\r\n let roadTestDates = this.state.roadTestDates;\r\n let selectedDays = this.state.selectedDays.map(x => x.toISOString());\r\n let newValidDates = Object.keys(roadTestDates).filter(x => selectedDays.includes(x));\r\n newValidDates.forEach(date => {\r\n newRoadTestDates[date] = roadTestDates[date];\r\n });\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: newRoadTestDates,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n this.setState({ loading: true });\r\n API.post(\"APIGateway\", \"/updateroadtestdates\", options)\r\n .then(function (data) {\r\n that.setState({ loading: false, showToast: true, toastType: \"Success\", toastMesssage: \"Successfully updated!\" });\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response.status === 401) {\r\n that.setState({ loading: false, showToast: true, toastType: \"Warning\", toastMesssage: \"Authentication Failed. Please log back in.\" });\r\n }\r\n else {\r\n that.setState({ loading: false, showToast: true, toastType: \"Warning\", toastMesssage: \"There was an error saving your dates. Please copy this message and send it to your developer for debugging.\" + JSON.stringify(error.response) });\r\n }\r\n });;\r\n };\r\n\r\n addLocation = (date, location) => {\r\n var roadTestDates = this.state.roadTestDates;\r\n\r\n if (!location.includes(\"RMV\")) {\r\n let dayOfWeek = moment(date).day();\r\n if (dayOfWeek >= 2 && dayOfWeek <= 5) {\r\n date = moment(date).isoWeekday(1).toISOString();\r\n }\r\n }\r\n\r\n if (!roadTestDates[date]) {\r\n roadTestDates[date] = {};\r\n }\r\n if (!roadTestDates[date].locations) {\r\n roadTestDates[date].locations = [];\r\n }\r\n roadTestDates[date].locations.push(location);\r\n roadTestDates[date].locations = [...new Set(roadTestDates[date].locations)].sort();\r\n this.setState({ roadTestDates });\r\n };\r\n\r\n subtractLocation = (date, location) => {\r\n var roadTestDates = this.state.roadTestDates;\r\n console.log(date);\r\n roadTestDates[date].locations = roadTestDates[date].locations.filter(x => x !== location);\r\n if (roadTestDates[date].locations && roadTestDates[date].locations.length == 0) {\r\n delete roadTestDates[date];\r\n }\r\n this.setState({ roadTestDates });\r\n };\r\n\r\n\r\n handleDayClick(day, { selected }) {\r\n this.setState({ refreshStatus: \"\", dateError: \"\" });\r\n\r\n const { selectedDays } = this.state;\r\n if (selected) {\r\n const selectedIndex = selectedDays.findIndex(selectedDay =>\r\n DateUtils.isSameDay(selectedDay, day)\r\n );\r\n selectedDays.splice(selectedIndex, 1);\r\n } else {\r\n let dayOfWeek = moment(day).day();\r\n if (dayOfWeek === 0) { //Drop sunday to saturday\r\n day = moment(day).subtract(1, \"day\").startOf('day').toDate();\r\n }\r\n if (dayOfWeek >= 2 && dayOfWeek <= 5) {\r\n day = moment(day).toDate();\r\n }\r\n\r\n const selectedIndex = selectedDays.findIndex(selectedDay =>\r\n DateUtils.isSameDay(selectedDay, day)\r\n );\r\n if (selectedIndex === -1) {\r\n day = moment(day).startOf('day').toDate();\r\n selectedDays.push(day);\r\n }\r\n }\r\n this.setState({ selectedDays });\r\n }\r\n render() {\r\n const { showToast, toastMesssage, toastType } = this.state;\r\n\r\n return (\r\n <div className=\"holder\">\r\n {showToast ?\r\n <div>\r\n {toastType === \"Warning\" ?\r\n <Alert variant={\"warning\"} onClose={() => this.setState({ showToast: false })} dismissible style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n zIndex: 1,\r\n width: \"40%\"\r\n }}>\r\n <Alert.Heading>{toastType}</Alert.Heading>\r\n {toastMesssage}\r\n </Alert> : null}\r\n {toastType === \"Success\" ?\r\n <Alert variant={\"success\"} onClose={() => this.setState({ showToast: false })} dismissible style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n zIndex: 1,\r\n width: \"40%\"\r\n }}>\r\n <Alert.Heading>{toastType}</Alert.Heading>\r\n {toastMesssage}\r\n </Alert> : null}\r\n\r\n </div> : null}\r\n <h3>Select Active Dates</h3>\r\n <DayPicker\r\n selectedDays={this.state.selectedDays}\r\n onDayClick={this.handleDayClick}\r\n formatDate={formatDate}\r\n parseDate={parseDate}\r\n numberOfMonths={2}\r\n />\r\n <div>\r\n Select Location of Each Date\r\n\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Date</th>\r\n <th>Type</th>\r\n <th>Selected Locations</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.selectedDays ?\r\n this.state.selectedDays\r\n .sort(function (a, b) { return a - b; })\r\n .map((date, index) => {\r\n var parsedDate = date.toISOString();\r\n var longDate = moment(date).format(\"ddd, MMMM Do YYYY\");\r\n var dayOfWeek = moment(date).day();\r\n var selectedLocations = [];\r\n if (this.state.roadTestDates[parsedDate] && this.state.roadTestDates[parsedDate].locations) {\r\n selectedLocations = this.state.roadTestDates[parsedDate].locations;\r\n }\r\n\r\n return (\r\n <tr key={index}>\r\n <td>\r\n {longDate}\r\n </td>\r\n <td>\r\n {dayOfWeek === 6 ?\r\n <Badge pill variant=\"primary\" key={index}>\r\n {\"Weekend\"}\r\n </Badge> :\r\n <Badge pill variant=\"primary\" key={index}>\r\n {\"Weekday\"}\r\n </Badge>}\r\n </td>\r\n <td>\r\n {selectedLocations.map((location, index) => {\r\n return (\r\n <Badge pill variant=\"primary\" key={index + location}>\r\n {location}\r\n </Badge>\r\n );\r\n })}\r\n </td>\r\n\r\n <td>\r\n {this.state.locations.map((location) => {\r\n if (dayOfWeek == 1 || dayOfWeek == 6) {\r\n if (selectedLocations.includes(location)) {\r\n return <Button size=\"sm\" variant=\"danger\" disabled={!selectedLocations.includes(location)} onClick={() => this.subtractLocation(parsedDate, location)}>-{location}</Button>;\r\n } else {\r\n return <Button size=\"sm\" variant=\"info\" disabled={selectedLocations.includes(location)} onClick={() => this.addLocation(parsedDate, location)}>+ {location}</Button>;\r\n }\r\n } else {\r\n if (location.includes(\"RMV\")) {\r\n if (selectedLocations.includes(location)) {\r\n return <Button size=\"sm\" variant=\"danger\" disabled={!selectedLocations.includes(location)} onClick={() => this.subtractLocation(parsedDate, location)}>-{location}</Button>;\r\n } else {\r\n return <Button size=\"sm\" variant=\"info\" disabled={selectedLocations.includes(location)} onClick={() => this.addLocation(parsedDate, location)}>+ {location}</Button>;\r\n }\r\n\r\n }\r\n }\r\n })}\r\n </td>\r\n </tr>\r\n );\r\n })\r\n : null}\r\n </tbody>\r\n </Table>\r\n </div>\r\n\r\n <div>\r\n <Formik\r\n ref={this.formikRef}\r\n initialValues={{\r\n\r\n }}\r\n onSubmit={this.bindSubmitForm}\r\n\r\n >\r\n {props => {\r\n const {\r\n values,\r\n touched,\r\n errors,\r\n handleSubmit,\r\n setFieldValue,\r\n setFieldTouched,\r\n } = props;\r\n return (\r\n <form onSubmit={handleSubmit}>\r\n <Button variant=\"primary\" disabled={this.state.loading} onClick={this.handleSubmit}>Save Dates</Button>\r\n <hr></hr>\r\n <h3>Form Preview</h3>\r\n <p>Note: This matches the form, which hides dates that are within 12 days of the booking.</p>\r\n\r\n <p>If the number of slots for the date are filled, please disable the date.</p>\r\n <p>Note: The week starts on a Saturday.</p>\r\n\r\n <RadioButtonGroup\r\n id=\"roadTestDateOption\"\r\n label=\"Preferred Date (Subject to RMV availability)\"\r\n value={values.roadTestDateOption}\r\n error={errors.roadTestDateOption}\r\n touched={touched.roadTestDateOption}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n >\r\n {this.state.selectedDays.filter(x => moment(x).add(5, 'hours').subtract(12, 'days').isAfter(moment()))\r\n .sort(function (a, b) { return a - b; })\r\n .map((roadTestDate) => {\r\n var parsedDate = roadTestDate.toISOString();\r\n var locations = [];\r\n if (this.state.roadTestDates[parsedDate] && this.state.roadTestDates[parsedDate].locations) {\r\n locations = this.state.roadTestDates[parsedDate].locations;\r\n }\r\n if (roadTestDate.getDay() === 6) {\r\n return (\r\n locations.map((location, key) => {\r\n return (\r\n <Field\r\n key={roadTestDate + location + key}\r\n component={RadioButton}\r\n name=\"roadTestDateOption\"\r\n id={roadTestDate.toISOString()}\r\n label={\" Weekend of \" + moment(roadTestDate).format('M/D') + \" (Sat-Sun) at \" + location}\r\n />\r\n );\r\n })\r\n );\r\n\r\n }\r\n else {\r\n return (\r\n locations.map((location, key) => {\r\n if (location.includes(\"RMV\")) {\r\n return (\r\n <Field\r\n key={roadTestDate + location + key}\r\n component={RadioButton}\r\n name=\"roadTestDateOption\"\r\n id={roadTestDate.toISOString()}\r\n label={\"Weekday of \" + moment(roadTestDate).format('M/D (ddd)') + \" at \" + location}\r\n />\r\n );\r\n } else {\r\n return (\r\n <Field\r\n key={roadTestDate + location + key}\r\n component={RadioButton}\r\n name=\"roadTestDateOption\"\r\n id={roadTestDate.toISOString()}\r\n label={\"Week of \" + moment(roadTestDate).isoWeekday(1).format('M/D') + \" - \" + moment(roadTestDate).isoWeekday(5).format('M/D') + \" (Mon-Fri) at \" + location + \" (Exact date tbd)\"}\r\n />\r\n );\r\n }\r\n })\r\n );\r\n }\r\n })\r\n }\r\n\r\n </RadioButtonGroup>\r\n </form>\r\n );\r\n }}\r\n </Formik>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n","import { API, Auth } from \"aws-amplify\";\r\nimport React from \"react\";\r\nimport { Accordion, Alert, Button, Card, Col, Row, Form, Table, ButtonToolbar } from 'react-bootstrap';\r\nimport moment from 'moment';\r\nimport DayPicker from 'react-day-picker';\r\nimport './RegistrationForm.css';\r\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\r\nimport withDragAndDrop from \"react-big-calendar/lib/addons/dragAndDrop\";\r\nimport Select from 'react-select';\r\nimport crypto from 'crypto-js';\r\nimport { Locations } from \"../components/contstants/Locations\";\r\n\r\nimport \"react-big-calendar/lib/addons/dragAndDrop/styles.css\";\r\nimport \"react-big-calendar/lib/css/react-big-calendar.css\";\r\nimport 'react-day-picker/lib/style.css';\r\n\r\nimport TimePicker from 'react-bootstrap-time-picker';\r\nimport { timeFromInt, timeToInt } from 'time-number';\r\n\r\nconst localizer = momentLocalizer(moment);\r\nconst DnDCalendar = withDragAndDrop(Calendar);\r\n\r\nexport default class RoadLessonManager extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeKey: \"0\",\r\n daysWithLessons: [],\r\n selectedDays: [],\r\n loading: false,\r\n loadingDay: false,\r\n selectedDay: undefined,\r\n selectedLocation: \"\",\r\n startTime: \"32400\",\r\n endTime: \"35100\",\r\n slots: [],\r\n generateInstructorSlots: [],\r\n instructors: [],\r\n listViewMode: \"all\",\r\n listGroupViewMode: \"instructor\",\r\n showToast: false,\r\n toastMessage: \"\",\r\n lessonsToModify: new Set(),\r\n selectedInstructorToSwapTo: {},\r\n swapInstructorError: \"\",\r\n password: \"ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f\",\r\n locations: [\"West Roxbury\", \"Walpole\"]\r\n };\r\n\r\n this.handleStartTimeChange = this.handleStartTimeChange.bind(this);\r\n this.handleEndtimeTimeChange = this.handleEndtimeTimeChange.bind(this);\r\n this.handleSlotSave = this.handleSlotSave.bind(this);\r\n this.handleDayClick = this.handleDayClick.bind(this);\r\n this.handleSetLocationAndGetData = this.handleSetLocationAndGetData.bind(this);\r\n this.fetchSlotData = this.fetchSlotData.bind(this);\r\n this.deleteOldLesson = this.deleteOldLesson.bind(this);\r\n this.handleSelectedLessonChange = this.handleSelectedLessonChange.bind(this);\r\n this.handleSelectAllLessons = this.handleSelectAllLessons.bind(this);\r\n }\r\n\r\n fetchRoadTestInstructors() {\r\n const that = this;\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestInstructors.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n if (typeof (data) === \"undefined\") {\r\n that.setState({ instructors: [] });\r\n }\r\n else {\r\n var decryptedInstructors = [];\r\n for (let i = 0; i < data.length; i++) {\r\n let instructor = data[i];\r\n var decryptedName = crypto.AES.decrypt(instructor.resourceTitle, that.state.password).toString(crypto.enc.Utf8);\r\n decryptedInstructors.push(\r\n { resourceId: instructor.resourceId, resourceTitle: decryptedName, value: decryptedName, label: decryptedName }\r\n );\r\n }\r\n that.setState({ instructors: decryptedInstructors });\r\n }\r\n });\r\n\r\n }\r\n\r\n componentDidMount() {\r\n //We should fetch the instructors and save their state here.\r\n this.fetchRoadTestInstructors();\r\n }\r\n\r\n async deleteOldLesson(studentDate, studentTimestamp, instructor, lessonDate, lessonLocationTime) {\r\n let data = {\r\n \"mode\": \"deleteSpecificLessonFromRoadLessons\",\r\n \"student\": {\r\n \"date\": studentDate,\r\n \"timestamp\": studentTimestamp,\r\n \"instructor\": instructor,\r\n \"lessonDate\": moment(lessonDate).format(\"YYYY-MM-DD\"),\r\n \"locationTime\": lessonLocationTime\r\n\r\n }\r\n };\r\n\r\n this.setState({ loading: true });\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [data]\r\n ,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n console.log(options);\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n that.handleSetLocationAndGetData(that.state.selectedLocation);\r\n }\r\n else {\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n\r\n sortSlots(array, key) {\r\n if (array.length === 0) {\r\n return [];\r\n }\r\n return array.sort(function (a, b) {\r\n var x = timeToInt(a[key]); var y = timeToInt(b[key]);\r\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\r\n });\r\n }\r\n async handleDayClick(day, { selected }) {\r\n this.setState({\r\n selectedDay: selected ? undefined : day\r\n });\r\n\r\n if (!selected) {\r\n this.handleSetLocationAndGetData(this.state.selectedLocation);\r\n }\r\n\r\n }\r\n handleSetLocationAndGetData = async (location) => {\r\n this.setState({ loadingDay: true, selectedLocation: location }, this.fetchSlotData);\r\n };\r\n handleSelectAllLessons() {\r\n let lessonsToModify = this.state.lessonsToModify;\r\n lessonsToModify.clear();\r\n this.state.slots.map((slot, index) => {\r\n return (\r\n slot.selectedInstructors.map((instructor, index) => {\r\n return this.state.selectedLocation + \"|\" + slot.slotName + \"|\" + instructor.label;\r\n })\r\n );\r\n }).flatMap(string => string).map(string => lessonsToModify.add(string));\r\n this.setState({ lessonsToModify });\r\n }\r\n\r\n handleSelectedLessonChange(evt) {\r\n let lessonsToModify = this.state.lessonsToModify;\r\n let lessonId = evt.target.id;\r\n if (lessonsToModify.has(lessonId)) {\r\n lessonsToModify.delete(lessonId);\r\n } else {\r\n lessonsToModify.add(lessonId);\r\n }\r\n\r\n this.setState({ lessonsToModify });\r\n }\r\n\r\n handleSwapLessons = async () => {\r\n if (this.state.lessonsToModify.size == 0 || Object.keys(this.state.selectedInstructorToSwapTo) == 0) {\r\n console.log(\"Unable to swap\");\r\n }\r\n let lessonsToSwap = [];\r\n this.state.slots.map((slot, index) => {\r\n return (\r\n slot.selectedInstructors.map((instructor, index) => {\r\n let id = this.state.selectedLocation + \"|\" + slot.slotName + \"|\" + instructor.label;\r\n if (this.state.lessonsToModify.has(id)) {\r\n var lessonToSwap = {\r\n \"lessonDate\": slot.date,\r\n \"locationTime\": slot.locationTime,\r\n \"oldInstructor\": instructor.label,\r\n \"newInstructor\": this.state.selectedInstructorToSwapTo.label,\r\n \"oldResourceId\": instructor.resourceId,\r\n \"newResourceId\": this.state.selectedInstructorToSwapTo.resourceId,\r\n\r\n };\r\n\r\n if (slot.bookedStudents.hasOwnProperty(instructor.label)) {\r\n var student = slot.bookedStudents[instructor.label];\r\n Object.assign(lessonToSwap, { \"studentTimestamp\": student.timestamp });\r\n Object.assign(lessonToSwap, { \"studentDate\": student.date });\r\n\r\n }\r\n lessonsToSwap.push(lessonToSwap);\r\n }\r\n })\r\n );\r\n });\r\n this.setState({ loading: true, swapInstructorError: \"\" });\r\n const that = this;\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: lessonsToSwap, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n try {\r\n let results = await API.post(\"APIGateway\", \"/swapInstructorLesson\", options);\r\n that.setState({ loading: false, refreshStatus: \"Successfully updated!\", lessonsToModify: new Set(), selectedInstructorToSwapTo: {} });\r\n that.handleSetLocationAndGetData(that.state.selectedLocation);\r\n }\r\n catch (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 401) {\r\n that.setState({ loading: false, swapInstructorError: \"Authentication Failed. Please log back in.\" });\r\n }\r\n else {\r\n that.setState({ loading: false, swapInstructorError: \"There was an error updating the lesson. Please copy this message and send it to your developer for debugging.\" + JSON.stringify(error.response.data.error) });\r\n }\r\n }\r\n else {\r\n that.setState({ loading: false, swapInstructorError: \"Network error.\" });\r\n }\r\n\r\n return ([]);\r\n }\r\n\r\n };\r\n fetchSlotData = async () => {\r\n if (this.state.selectedDay) {\r\n let results = await this.handleGetSlotsbyDay(this.state.selectedDay);\r\n\r\n let slots = results.filter(x => x.selectedInstructors && x.selectedInstructors.length > 0); //Should we clear instructors without slots?\r\n slots = slots.sort((a, b) => (a.startTime > b.startTime) ? 1 : -1);\r\n console.log(slots);\r\n\r\n\r\n\r\n let startId = 0;\r\n let events = [];\r\n let selectedDay = moment(this.state.selectedDay).format(\"YYYY-MM-DD \");\r\n slots.forEach(slot => {\r\n\r\n slot.selectedInstructors.forEach(instructor => {\r\n let data = {};\r\n\r\n if (slot.bookedStudents.hasOwnProperty(instructor.label)) {\r\n data =\r\n {\r\n id: startId,\r\n title: 'Booked Lesson',\r\n student: slot.bookedStudents[instructor.label].name,\r\n start: new Date(selectedDay + slot.startTime),\r\n end: new Date(selectedDay + slot.endTime),\r\n resourceId: parseInt(instructor.value),\r\n color: \"green\"\r\n };\r\n events.push(data);\r\n startId++;\r\n }\r\n else {\r\n data =\r\n {\r\n id: startId,\r\n title: 'Open Lesson',\r\n student: \"Open Slot\",\r\n start: new Date(selectedDay + slot.startTime),\r\n end: new Date(selectedDay + slot.endTime),\r\n resourceId: parseInt(instructor.value),\r\n color: \"#265985\"\r\n };\r\n events.push(data);\r\n startId++;\r\n }\r\n });\r\n });\r\n this.setState({\r\n loadingDay: false,\r\n slots: slots,\r\n events: events\r\n });\r\n }\r\n };\r\n\r\n handleGetSlotsbyDay = async (day) => {\r\n let date = day.toISOString().split('T')[0];\r\n\r\n let queryData = {\r\n \"start\": date\r\n };\r\n const that = this;\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: queryData, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n try {\r\n let data = await API.post(\"APIGateway\", \"/getlessondata\", options);\r\n let specificLocationData = data.filter(x => x.location === that.state.selectedLocation);\r\n that.setState({ loading: false, refreshStatus: \"Successfully updated!\" });\r\n return specificLocationData;\r\n }\r\n catch (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 401) {\r\n that.setState({ loading: false, dateError: \"Authentication Failed. Please log back in.\" });\r\n }\r\n else {\r\n that.setState({ loading: false, dateError: \"There was an error saving your dates. Please copy this message and send it to your developer for debugging.\" + JSON.stringify(error.response) });\r\n }\r\n }\r\n else {\r\n that.setState({ loading: false, dateError: \"Network error.\" });\r\n }\r\n\r\n return ([]);\r\n }\r\n\r\n };\r\n\r\n generateSlots = async event => {\r\n var selectedDate = this.state.selectedDay.toISOString().split('T')[0];\r\n var existingSlots = this.state.slots.map(x => x.slotName);\r\n var slots = [];\r\n\r\n var stateSlotNames = this.state.slots.map(x => x.slotName);\r\n\r\n var startIndex = parseInt(this.state.startTime);\r\n var endIndex = parseInt(this.state.endTime);\r\n\r\n for (var i = startIndex; i <= endIndex; i = i + 2700) {\r\n var slotName = timeFromInt(i, { format: 12 });\r\n var data = {};\r\n if (existingSlots.includes(slotName)) {//We already have a slot at this time.\r\n var position = stateSlotNames.indexOf(slotName);\r\n data = this.state.slots[position];\r\n //Add the new instructor if they aren't in there.\r\n if (this.state.generateInstructorSlots.length > 0) {\r\n let existingNames = data.selectedInstructors.map(x => x.label);\r\n for (let index = 0; index < this.state.generateInstructorSlots.length; index++) {\r\n const instructor = this.state.generateInstructorSlots[index];\r\n if (!existingNames.includes(instructor.label)) {\r\n data.selectedInstructors.push(instructor);\r\n }\r\n }\r\n }\r\n //Since we added instructors, we should sort them..\r\n data.selectedInstructors = data.selectedInstructors.sort((a, b) => (a.label > b.label) ? 1 : -1);\r\n\r\n }\r\n else {\r\n data = {\r\n date: selectedDate,\r\n locationTime: this.state.selectedLocation + \"|\" + timeFromInt(i, { format: 12 }),\r\n location: this.state.selectedLocation,\r\n slotName: timeFromInt(i, { format: 12 }),\r\n selectedInstructors: this.state.generateInstructorSlots ? this.state.generateInstructorSlots : [],\r\n startTime: timeFromInt(i, { format: 24 }),\r\n endTime: timeFromInt(i + 2700, { format: 24 }),\r\n bookedStudents: {}\r\n };\r\n }\r\n slots.push(data);\r\n }\r\n console.log(slots);\r\n\r\n //We need to check if there are slots that were part of the original, and if they were not added, readd them.\r\n var missingOriginalsSlots = existingSlots.filter(e => !slots.map(x => x.slotName).includes(e));\r\n var missingOriginals = this.state.slots.filter(x => missingOriginalsSlots.includes(x.slotName));\r\n slots.concat(missingOriginals);\r\n\r\n this.setState({ slots: this.sortSlots(slots.concat(missingOriginals), 'slotName') });\r\n };\r\n\r\n generateTypicalSlots = async event => {\r\n\r\n var selectedDate = this.state.selectedDay.toISOString().split('T')[0];\r\n var existingSlots = this.state.slots.map(x => x.slotName);\r\n var slots = [];\r\n var stateSlotNames = this.state.slots.map(x => x.slotName);\r\n\r\n //9AM-11:15AM, 2:30PM-4:15\r\n let typicalRange = [[32400, 40500], [52200, 60300]];\r\n for (let index = 0; index < typicalRange.length; index++) {\r\n const ranges = typicalRange[index];\r\n const startRange = ranges[0];\r\n const endRange = ranges[1];\r\n for (var i = parseInt(startRange); i <= parseInt(endRange); i = i + 2700) {\r\n var slotName = timeFromInt(i, { format: 12 });\r\n var data = {};\r\n if (existingSlots.includes(slotName)) {//We already have a slot at this time.\r\n var position = stateSlotNames.indexOf(slotName);\r\n data = this.state.slots[position];\r\n //Add the new instructor if they aren't in there.\r\n if (this.state.generateInstructorSlots.length > 0) {\r\n let existingNames = data.selectedInstructors.map(x => x.label);\r\n for (let index = 0; index < this.state.generateInstructorSlots.length; index++) {\r\n const instructor = this.state.generateInstructorSlots[index];\r\n if (!existingNames.includes(instructor.label)) {\r\n data.selectedInstructors.push(instructor);\r\n }\r\n }\r\n }\r\n //Since we added instructors, we should sort them..\r\n data.selectedInstructors = data.selectedInstructors.sort((a, b) => (a.label > b.label) ? 1 : -1);\r\n\r\n }\r\n else {\r\n data = {\r\n date: selectedDate,\r\n locationTime: this.state.selectedLocation + \"|\" + timeFromInt(i, { format: 12 }),\r\n location: this.state.selectedLocation,\r\n slotName: timeFromInt(i, { format: 12 }),\r\n selectedInstructors: this.state.generateInstructorSlots ? this.state.generateInstructorSlots : [],\r\n startTime: timeFromInt(i, { format: 24 }),\r\n endTime: timeFromInt(i + 2700, { format: 24 }),\r\n bookedStudents: {}\r\n };\r\n }\r\n slots.push(data);\r\n }\r\n }\r\n console.log(slots);\r\n\r\n //We need to check if there are slots that were part of the original, and if they were not added, readd them.\r\n var missingOriginalsSlots = existingSlots.filter(e => !slots.map(x => x.slotName).includes(e));\r\n var missingOriginals = this.state.slots.filter(x => missingOriginalsSlots.includes(x.slotName));\r\n slots.concat(missingOriginals);\r\n //console.log(missingOriginals)\r\n\r\n this.setState({ slots: this.sortSlots(slots.concat(missingOriginals), 'slotName') });\r\n };\r\n\r\n handleSlotClear(index) {\r\n var localSlots = this.state.slots;\r\n let selectedSlot = localSlots[index];\r\n let bookedInstructors = Object.keys(selectedSlot.bookedStudents);\r\n if (bookedInstructors.length > 0) { //There are booked students.\r\n selectedSlot.selectedInstructors = selectedSlot.selectedInstructors.filter(x => bookedInstructors.includes(x.label));\r\n localSlots[index] = selectedSlot;\r\n this.setState({ slots: localSlots, toastType: \"Warning\", toastMessage: \"Unable to fully clear slot because a student is still booked with the remaining instructor.\", showToast: true });\r\n }\r\n else {\r\n localSlots[index].selectedInstructors = [];\r\n this.setState({ slots: localSlots });\r\n }\r\n }\r\n\r\n async handleSlotDelete(index) {\r\n let that = this;\r\n var localSlots = this.state.slots;\r\n let selectedSlot = localSlots[index];\r\n let bookedInstructors = Object.keys(selectedSlot.bookedStudents);\r\n console.log(bookedInstructors);\r\n if (bookedInstructors.length > 0) { //There are booked students.\r\n selectedSlot.selectedInstructors = selectedSlot.selectedInstructors.filter(x => bookedInstructors.includes(x.label));\r\n localSlots[index] = selectedSlot;\r\n this.setState({ slots: localSlots, toastType: \"Warning\", toastMessage: \"Unable to fully delete slot because a student is still booked with the remaining instructor.\", showToast: true });\r\n return;\r\n }\r\n else {\r\n let lessons = [];\r\n let input = {\r\n \"mode\": \"delete\",\r\n \"lesson\": {\r\n \"date\": selectedSlot.date,\r\n \"locationTime\": this.state.selectedLocation + \"|\" + selectedSlot.slotName\r\n }\r\n };\r\n lessons.push(input);\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: lessons,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifylessondata \", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n that.setState({ slots: localSlots });\r\n }\r\n else {\r\n //that.setState({ APIDateStudentResults: [] })\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n\r\n }\r\n localSlots.splice(index, 1);\r\n this.setState({ slots: localSlots });\r\n }\r\n\r\n handleStartTimeChange(time) {\r\n console.log(time); // <- prints \"3600\" if \"01:00\" is picked\r\n this.setState({ startTime: time, endTime: time + 600 });\r\n }\r\n handleEndtimeTimeChange(time) {\r\n console.log(time); // <- prints \"3600\" if \"01:00\" is picked\r\n this.setState({ endTime: time });\r\n }\r\n\r\n handlePick = (selectedOption, index) => {\r\n var localSlots = this.state.slots;\r\n var selectedSlot = localSlots[index];\r\n var bookedInstructors = Object.keys(selectedSlot.bookedStudents);\r\n var newInstructors = [];\r\n if (selectedOption !== null) {\r\n newInstructors = selectedOption.map(x => x.label);\r\n }\r\n\r\n const bookedInstructorsKept = bookedInstructors.every(val => newInstructors.includes(val));\r\n if (bookedInstructorsKept) {\r\n selectedSlot.selectedInstructors = selectedOption;\r\n this.setState({ slots: localSlots });\r\n }\r\n else {\r\n this.setState({ slots: localSlots, toastType: \"Warning\", toastMessage: \"A student is still booked with this instructor.\", showToast: true });\r\n }\r\n };\r\n\r\n handleInstructorGeneratorPick = (selectedOption) => {\r\n console.log(selectedOption);\r\n this.setState({ generateInstructorSlots: selectedOption });\r\n };\r\n\r\n\r\n handleInstructorSwapPick = (selectedOption) => {\r\n console.log(selectedOption);\r\n this.setState({ selectedInstructorToSwapTo: selectedOption });\r\n };\r\n\r\n async handleSlotSave() {\r\n let that = this;\r\n this.setState({ loading: true });\r\n let selectedDate = this.state.selectedDay.toISOString().split('T')[0] + \"T\";\r\n let slots = this.state.slots;\r\n let events = [];\r\n let lessons = [];\r\n\r\n for (let index = 0; index < slots.length; index++) {\r\n const slot = slots[index];\r\n let input = {};\r\n if (slot.selectedInstructors && slot.selectedInstructors.length === 0) {\r\n input = {\r\n \"mode\": \"delete\",\r\n \"lesson\": slot\r\n };\r\n }\r\n else {\r\n input = {\r\n \"mode\": \"modify\",\r\n \"lesson\": slot\r\n };\r\n }\r\n lessons.push(input);\r\n }\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: lessons,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifylessondata \", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n that.setState({ loading: false, showToast: true, toastType: \"Success\", toastMessage: \"Successfully updated!\" }, that.fetchSlotData);\r\n //console.log(data)\r\n }\r\n else {\r\n that.setState({ loading: false, showToast: true, toastType: \"Warning\", toastMessage: \"Authentication Failed. Please log back in.\" });\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n that.setState({ loading: false });\r\n\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n\r\n slots = this.state.slots.filter(x => x.selectedInstructors && x.selectedInstructors.length > 0); //Should we clear instructors without slots?\r\n\r\n let startId = 0;\r\n slots.forEach(slot => {\r\n slot.selectedInstructors.forEach(instructor => {\r\n let data = {};\r\n\r\n if (slot.bookedStudents.hasOwnProperty(instructor.label)) {\r\n data =\r\n {\r\n id: startId,\r\n title: 'Booked Lesson',\r\n student: slot.bookedStudents[instructor.label].name,\r\n start: new Date(selectedDate + slot.startTime),\r\n end: new Date(selectedDate + slot.endTime),\r\n resourceId: parseInt(instructor.value),\r\n color: \"green\"\r\n };\r\n events.push(data);\r\n startId++;\r\n }\r\n else {\r\n data =\r\n {\r\n id: startId,\r\n title: 'Open Lesson',\r\n student: \"Open Slot\",\r\n start: new Date(selectedDate + slot.startTime),\r\n end: new Date(selectedDate + slot.endTime),\r\n resourceId: parseInt(instructor.value),\r\n color: \"#265985\"\r\n };\r\n events.push(data);\r\n startId++;\r\n }\r\n });\r\n });\r\n this.setState({ events: events });\r\n\r\n }\r\n\r\n\r\n handleLessonModalChange(state, index) {\r\n console.log(state, index);\r\n }\r\n\r\n formatPhone(phone) {\r\n if (phone.length === 10) {\r\n return '(' + phone.substr(0, 3) + ') ' + phone.substr(3, 3) + '-' + phone.substr(6);\r\n }\r\n return phone;\r\n }\r\n\r\n renderInstructor(listViewMode, groupMode) {\r\n let slots = this.state.slots;\r\n let selectedDate = this.state.selectedDay.toISOString().split('T')[0] + \"T\";\r\n let instructorDivision = {};\r\n\r\n if (listViewMode === \"booked\") {\r\n slots = slots.filter(x => Object.keys(x.bookedStudents).length > 0);\r\n }\r\n if (listViewMode === \"free\") {\r\n slots = slots.filter(x => Object.keys(x.bookedStudents).length === 0);\r\n }\r\n\r\n if (slots.length === 0) {\r\n return (<div>No results found.</div>);\r\n }\r\n else {\r\n if (groupMode === \"instructor\") {\r\n slots.forEach(slot => {\r\n slot.selectedInstructors.forEach(instructor => {\r\n if (!instructorDivision.hasOwnProperty(instructor.label)) {\r\n instructorDivision[instructor.label] = [];\r\n }\r\n let data = {};\r\n if (slot.bookedStudents.hasOwnProperty(instructor.label)) {\r\n data =\r\n {\r\n phone: slot.bookedStudents[instructor.label].phone,\r\n name: slot.bookedStudents[instructor.label].name,\r\n start: new Date(selectedDate + slot.startTime),\r\n end: new Date(selectedDate + slot.endTime),\r\n resourceId: parseInt(instructor.value)\r\n };\r\n }\r\n else {\r\n data =\r\n {\r\n phone: \"Open Slot\",\r\n name: \"Open Lesson\",\r\n start: new Date(selectedDate + slot.startTime),\r\n end: new Date(selectedDate + slot.endTime),\r\n resourceId: parseInt(instructor.value)\r\n };\r\n\r\n }\r\n instructorDivision[instructor.label].push(data);\r\n });\r\n });\r\n let instructorKeys = Object.keys(instructorDivision).sort((a, b) => (a > b) ? 1 : -1);\r\n if (instructorKeys.length > 0) {\r\n return instructorKeys.map(instructor => {\r\n let instructorSlots = instructorDivision[instructor];\r\n if (instructorSlots && instructorSlots.length > 0) {\r\n return (\r\n <div key={instructor}>\r\n <div><strong>{instructor}</strong></div>\r\n {\r\n instructorSlots.map((instructorSlot, index) => {\r\n return (\r\n <Row key={index}>\r\n <Col>\r\n {instructorSlot.start.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })}\r\n </Col>\r\n <Col>\r\n {instructorSlot.name}\r\n </Col>\r\n <Col>\r\n {this.formatPhone(instructorSlot.phone)}\r\n </Col>\r\n </Row>\r\n );\r\n })}\r\n <br></br>\r\n </div>\r\n );\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n }\r\n else {\r\n return (\r\n <div>\r\n {slots.map(slot => {\r\n return (\r\n <div>\r\n <div><strong>{slot.slotName}</strong></div>\r\n {\r\n slot.selectedInstructors.map(instructor => {\r\n let instructorName = instructor.label;\r\n if (slot.bookedStudents.hasOwnProperty(instructorName)) {\r\n return (\r\n <Row>\r\n <Col>\r\n {instructorName}\r\n </Col>\r\n <Col>\r\n {slot.bookedStudents[instructorName].name}\r\n </Col>\r\n <Col>\r\n {slot.bookedStudents[instructorName].phone}\r\n </Col>\r\n </Row>\r\n );\r\n }\r\n else {\r\n return (\r\n <Row>\r\n <Col>\r\n {instructorName}\r\n </Col>\r\n <Col>\r\n Open Lesson\r\n </Col>\r\n <Col>\r\n Open Slot\r\n </Col>\r\n </Row>\r\n );\r\n }\r\n\r\n })} <br></br>\r\n </div>\r\n );\r\n\r\n })}\r\n </div>\r\n );\r\n\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n renderClearStudents() {\r\n let slots = this.state.slots;\r\n slots = slots.filter(x => Object.keys(x.bookedStudents).length > 0);\r\n if (slots.length === 0) {\r\n return (<div>No booked students found.</div>);\r\n }\r\n return (\r\n <div>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Time Slot</th>\r\n <th>Instructor</th>\r\n <th>Road Test Date</th>\r\n <th>Student Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {slots.map((slot, index) => {\r\n return (\r\n slot.selectedInstructors.map((instructor, index) => {\r\n let instructorName = instructor.label;\r\n let roadTestLessonDate = this.state.selectedDay;\r\n let roadTestDate = slot.bookedStudents[instructorName].date || \"\";\r\n\r\n let studentName = slot.bookedStudents[instructorName].name || \"\";\r\n let studentTime = slot.bookedStudents[instructorName].timestamp || \"\";\r\n\r\n return (\r\n <tr key={index}>\r\n <td>{slot.slotName}</td>\r\n <td>{instructorName}</td>\r\n <td>{roadTestDate}</td>\r\n <td>{studentName}</td>\r\n <td><Button variant=\"danger\" onClick={() => this.deleteOldLesson(roadTestDate, studentTime, instructorName, roadTestLessonDate, this.state.selectedLocation + \"|\" + slot.slotName)}>Delete</Button></td>\r\n </tr>\r\n );\r\n })\r\n );\r\n }\r\n\r\n\r\n )}\r\n </tbody>\r\n </Table>\r\n </div>\r\n );\r\n }\r\n\r\n renderSwapStudents() {\r\n let slots = this.state.slots;\r\n if (slots.length === 0) {\r\n return (<div>No booked students found.</div>);\r\n }\r\n return (\r\n <div>\r\n <Button onClick={this.handleSelectAllLessons}>Select all lessons to be modified</Button>\r\n <br></br>\r\n <br></br>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Selected</th>\r\n <th>Time Slot</th>\r\n <th>Instructor</th>\r\n <th>Road Test Date</th>\r\n <th>Student Name</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {slots.map((slot, index) => {\r\n return (\r\n slot.selectedInstructors.map((instructor, index) => {\r\n let instructorName = instructor.label;\r\n let roadTestDate = \"\";\r\n let studentName = \"\";\r\n let studentTime = \"\";\r\n\r\n if (slot.bookedStudents.hasOwnProperty(instructorName)) {\r\n roadTestDate = slot.bookedStudents[instructorName].date;\r\n studentName = slot.bookedStudents[instructorName].name;\r\n studentTime = slot.bookedStudents[instructorName].timestamp;\r\n }\r\n\r\n var id = this.state.selectedLocation + \"|\" + slot.slotName + \"|\" + instructorName;\r\n\r\n\r\n return (\r\n <tr key={index}>\r\n <td> <Form.Check\r\n type=\"checkbox\"\r\n id={id}\r\n checked={this.state.lessonsToModify.has(id)}\r\n onClick={this.handleSelectedLessonChange}\r\n />\r\n </td>\r\n <td>{slot.slotName}</td>\r\n <td>{instructorName}</td>\r\n <td>{roadTestDate}</td>\r\n <td>{studentName}</td>\r\n </tr>\r\n );\r\n })\r\n );\r\n }\r\n\r\n\r\n )}\r\n </tbody>\r\n </Table>\r\n\r\n {this.state.lessonsToModify.size > 0 ? <div>\r\n Select the instructor {this.state.lessonsToModify.size > 1 ? \"these\" : \"this\"} {this.state.lessonsToModify.size} lesson{this.state.lessonsToModify.size > 1 ? \"s\" : \"\"} should be swapped to\r\n <Select\r\n value={this.state.selectedInstructorToSwapTo}\r\n onChange={(data) => this.handleInstructorSwapPick(data)}\r\n options={this.state.instructors}\r\n menuPlacement=\"top\"\r\n />\r\n\r\n\r\n <Button disabled={this.state.loading} onClick={this.handleSwapLessons}>Swap selected lessons to selected instructor</Button>\r\n <br></br>\r\n\r\n {this.state.swapInstructorError}\r\n\r\n\r\n </div> : <div>Please select lessons to be modified.</div>}\r\n </div>\r\n );\r\n }\r\n\r\n\r\n renderStudent(slot) {\r\n let studentNames = [];\r\n\r\n for (const instructor in slot.bookedStudents) {\r\n if (slot.bookedStudents[instructor].hasOwnProperty(\"name\")) {\r\n studentNames.push(slot.bookedStudents[instructor].name);\r\n }\r\n }\r\n\r\n if (studentNames.length > 0) {\r\n return studentNames.map(studentName => { return (<div>{studentName}</div>); });\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n render() {\r\n const { selectedDay, showToast, toastType, toastMessage } = this.state;\r\n\r\n return (\r\n <div className=\"holder\">\r\n <h3>Manage Road Test Lessons</h3>\r\n {showToast ?\r\n <div>\r\n {toastType === \"Warning\" ?\r\n <Alert variant={\"warning\"} onClose={() => this.setState({ showToast: false })} dismissible style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n zIndex: 1,\r\n width: \"40%\"\r\n }}>\r\n <Alert.Heading>{toastType}</Alert.Heading>\r\n {toastMessage}\r\n </Alert> : null}\r\n {toastType === \"Success\" ?\r\n <Alert variant={\"success\"} onClose={() => this.setState({ showToast: false })} dismissible style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n zIndex: 1,\r\n width: \"40%\"\r\n }}>\r\n <Alert.Heading>{toastType}</Alert.Heading>\r\n {toastMessage}\r\n </Alert> : null}\r\n\r\n </div> : null}\r\n\r\n\r\n\r\n <Accordion defaultActiveKey=\"0\" activeKey={this.state.activeKey}>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"0\" onClick={() => this.setState({ activeKey: \"0\" })}>\r\n {this.state.selectedDay ? <div>\r\n {moment(this.state.selectedDay).format('LL')}\r\n\r\n\r\n {this.state.selectedLocation.length > 0 ? \" at \" + this.state.selectedLocation : \"\"}\r\n </div> : \"Select Day\"}\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"0\">\r\n <Card.Body>\r\n {selectedDay ? null : <div>Please select a day you would like to view/generate lesson slots for.</div>}\r\n <div>\r\n <DayPicker\r\n numberOfMonths={2}\r\n selectedDays={selectedDay}\r\n showOutsideDays\r\n onDayClick={this.handleDayClick}\r\n />\r\n\r\n </div>\r\n {selectedDay ?\r\n <div>\r\n {this.state.loadingDay ?\r\n <div>Please wait. Checking if existing lesson slots exist.</div> :\r\n <div>\r\n <hr></hr>\r\n {this.state.selectedLocation.length > 0 ? <div>Now viewing lessons for: {this.state.selectedLocation}</div> : <div>Please select the lesson location</div>}\r\n {this.state.locations.map((location, index) => {\r\n return (\r\n <Button disabled={this.state.selectedLocation === location} onClick={() => this.handleSetLocationAndGetData(location)}>{location}</Button>\r\n );\r\n })}\r\n\r\n {this.state.selectedLocation.length > 0 ?\r\n <div>\r\n <hr></hr>\r\n <div>\r\n <br></br>\r\n <div>Generate/View Slots for {moment(selectedDay).format(\"dddd, MMMM Do YYYY\")}</div>\r\n <br></br>\r\n <Row>\r\n <Col>\r\n <TimePicker start=\"5:00\" end=\"21:00\" step={15} onChange={this.handleStartTimeChange} value={this.state.startTime} />\r\n </Col>\r\n <Col sm={1}>to</Col>\r\n <Col>\r\n <TimePicker start={timeFromInt(parseInt(this.state.startTime) + 2700)} end=\"21:00\" step={45} onChange={this.handleEndtimeTimeChange} value={this.state.endTime} />\r\n </Col>\r\n <Col sm={2}>\r\n With Instructor (Optional)\r\n </Col>\r\n <Col>\r\n <Select\r\n value={this.state.generateInstructorSlots}\r\n isMulti\r\n onChange={(data) => this.handleInstructorGeneratorPick(data)}\r\n options={this.state.instructors}\r\n menuPlacement=\"auto\"\r\n />\r\n </Col>\r\n </Row>\r\n <Button className=\"butPadding\" disabled={this.state.loading} onClick={this.generateSlots}>Generate Slots</Button>\r\n <hr></hr>\r\n <Button className=\"butPadding\" disabled={this.state.loading} onClick={this.generateTypicalSlots}>Insert Typical Daily Slots</Button>\r\n </div>\r\n <br></br>\r\n <div>\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr className=\"d-flex\">\r\n <th className=\"col-2\">Slot Time</th>\r\n <th className=\"col-4\">Instructors</th>\r\n <th className=\"col-4\">Actions</th>\r\n <th className=\"col-2\">Students</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.slots.map((x, index) => {\r\n return (\r\n <tr key={index} className=\"d-flex\">\r\n <td className=\"col-2\">{x.slotName}</td>\r\n <td className=\"col-4\">\r\n <Select\r\n value={this.state.slots[index].selectedInstructors}\r\n isMulti\r\n onChange={(data) => this.handlePick(data, index)}\r\n options={this.state.instructors.map(function (x) { return { value: x.value, label: x.label }; })}\r\n menuPlacement=\"auto\"\r\n />\r\n </td>\r\n <td className=\"col-4\">\r\n <Button disabled={this.state.loading} onClick={() => this.handleSlotClear(index)} size=\"sm\">Clear Slot</Button>\r\n <Button disabled={this.state.loading} onClick={() => this.handleSlotDelete(index)} size=\"sm\">Delete Slot</Button>\r\n </td>\r\n <td className=\"col-2\">\r\n {this.renderStudent(x)}\r\n </td>\r\n\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n\r\n <Button variant=\"primary\" className=\"butPadding\" disabled={this.state.loading} onClick={this.handleSlotSave}> Save Slots for {this.state.selectedLocation} </Button>\r\n </div>\r\n\r\n </div> : null}\r\n\r\n\r\n </div>\r\n }\r\n\r\n\r\n </div> :\r\n null\r\n }\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"3\" onClick={() => this.setState({ activeKey: \"3\" })}>\r\n Clear Lessons\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"3\">\r\n <Card.Body>\r\n {this.state.activeKey === \"3\" ?\r\n <div>\r\n {this.renderClearStudents()}\r\n </div> : null\r\n\r\n }\r\n\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"3\" onClick={() => this.setState({ activeKey: \"4\" })}>\r\n Swap Instructors on Lessons\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"4\">\r\n <Card.Body>\r\n {this.state.activeKey === \"4\" ?\r\n <div>\r\n {this.renderSwapStudents()}\r\n </div> : null\r\n\r\n }\r\n\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"1\" onClick={() => this.setState({ activeKey: \"1\" })}>\r\n View Lessons (As List)\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"1\">\r\n <Card.Body>\r\n {this.state.activeKey === \"1\" ?\r\n <div>\r\n <ButtonToolbar>\r\n <Button disabled={this.state.listViewMode === \"all\"} onClick={() => this.setState({ listViewMode: \"all\" })} variant=\"outline-primary\">View All</Button>\r\n <Button disabled={this.state.listViewMode === \"booked\"} onClick={() => this.setState({ listViewMode: \"booked\" })} variant=\"outline-primary\">View Only Booked</Button>\r\n <Button disabled={this.state.listViewMode === \"free\"} onClick={() => this.setState({ listViewMode: \"free\" })} variant=\"outline-primary\">View Only Free</Button>\r\n </ButtonToolbar>\r\n <ButtonToolbar>\r\n <Button disabled={this.state.listGroupViewMode === \"instructor\"} onClick={() => this.setState({ listGroupViewMode: \"instructor\" })} variant=\"outline-primary\">Group by Instructor</Button>\r\n <Button disabled={this.state.listGroupViewMode === \"time\"} onClick={() => this.setState({ listGroupViewMode: \"time\" })} variant=\"outline-primary\">Group by Time</Button>\r\n </ButtonToolbar>\r\n\r\n {selectedDay ?\r\n <div> Viewing Lessons for {moment(selectedDay).format(\"dddd, MMMM Do YYYY\")} at {this.state.selectedLocation}\r\n <br></br>\r\n {this.renderInstructor(this.state.listViewMode, this.state.listGroupViewMode)}\r\n </div>\r\n : null}\r\n\r\n </div> : null\r\n\r\n }\r\n\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n </Accordion>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <br></br>\r\n <div>\r\n\r\n\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n","import { API, Auth } from \"aws-amplify\";\r\nimport React from \"react\";\r\nimport { Accordion, Alert, Card, Table } from 'react-bootstrap';\r\nimport './RegistrationForm.css';\r\nimport crypto from 'crypto-js';\r\n\r\nimport \"react-big-calendar/lib/addons/dragAndDrop/styles.css\";\r\nimport \"react-big-calendar/lib/css/react-big-calendar.css\";\r\nimport 'react-day-picker/lib/style.css';\r\n\r\nexport default class RoadLessonViewer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeKey: \"0\",\r\n sortedLessons: [],\r\n loading: false,\r\n showToast: false,\r\n toastMessage: \"\",\r\n attemptedToLoadData: false,\r\n password: \"ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f\"\r\n };\r\n }\r\n\r\n fetchRoadTestInstructors() {\r\n const that = this;\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestInstructors.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n if (typeof (data) === \"undefined\") {\r\n that.setState({ instructors: [] });\r\n }\r\n else {\r\n var decryptedInstructors = [];\r\n for (let i = 0; i < data.length; i++) {\r\n let instructor = data[i];\r\n var decryptedName = crypto.AES.decrypt(instructor.resourceTitle, that.state.password).toString(crypto.enc.Utf8);\r\n decryptedInstructors.push(\r\n { resourceId: instructor.resourceId, resourceTitle: decryptedName, value: decryptedName, label: decryptedName }\r\n );\r\n }\r\n that.setState({ instructors: decryptedInstructors });\r\n }\r\n });\r\n\r\n }\r\n\r\n componentDidMount() {\r\n //We should fetch the instructors and save their state here.\r\n this.fetchRoadTestInstructors();\r\n this.handleGetFutureLessons();\r\n\r\n }\r\n\r\n\r\n formatPhone(phone) {\r\n if (phone.length === 10) {\r\n return '(' + phone.substr(0, 3) + ') ' + phone.substr(3, 3) + '-' + phone.substr(6);\r\n }\r\n return phone;\r\n }\r\n\r\n handleGetFutureLessons = async () => {\r\n this.setState({ loading: true });\r\n const that = this;\r\n let session = await Auth.currentSession();\r\n let options = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n try {\r\n let data = await API.get(\"APIGateway\", \"/getallfuturelessons\", options);\r\n var unsortedLessons = [];\r\n for (var i = 0, l = data.length; i < l; i++) {\r\n var lesson = data[i];\r\n lesson[\"sortString\"] = lesson.date + lesson.startTime;\r\n unsortedLessons.push(lesson);\r\n }\r\n var sortedLessons = unsortedLessons.sort((a, b) => String(a.sortString).localeCompare(b.sortString));\r\n that.setState({ sortedLessons: sortedLessons, loading: false, refreshStatus: \"Successfully updated!\", attemptedToLoadData: true });\r\n }\r\n catch (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 401) {\r\n that.setState({ loading: false, attemptedToLoadData: true, dateError: \"Authentication Failed. Please log back in.\" });\r\n }\r\n else {\r\n that.setState({ loading: false, attemptedToLoadData: true, dateError: \"There was an error saving your dates. Please copy this message and send it to your developer for debugging.\" + JSON.stringify(error.response) });\r\n }\r\n }\r\n else {\r\n that.setState({ loading: false, attemptedToLoadData: true, dateError: \"Network error.\" });\r\n }\r\n\r\n return ([]);\r\n }\r\n\r\n };\r\n\r\n renderRow(slot, index) {\r\n let students = [];\r\n let bookedInstructors = [];\r\n\r\n for (const instructor in slot.bookedStudents) {\r\n bookedInstructors.push(instructor);\r\n if (slot.bookedStudents[instructor].hasOwnProperty(\"name\")) {\r\n students.push({\r\n \"date\": slot.date,\r\n \"slotName\": slot.slotName,\r\n \"name\": slot.bookedStudents[instructor].name,\r\n \"phone\": this.formatPhone(slot.bookedStudents[instructor].phone),\r\n \"location\": slot.location,\r\n \"instructor\": instructor\r\n });\r\n }\r\n }\r\n for (const instructor in slot.selectedInstructors) {\r\n if (!bookedInstructors.includes(slot.selectedInstructors[instructor].label)) {\r\n students.push({\r\n \"date\": slot.date,\r\n \"slotName\": slot.slotName,\r\n \"name\": \"\",\r\n \"phone\": \"\",\r\n \"location\": slot.location,\r\n \"instructor\": slot.selectedInstructors[instructor].label\r\n });\r\n }\r\n\r\n }\r\n\r\n return students.map(student => {\r\n return (<tr key={index + student.instructor} className=\"d-flex\">\r\n <td className=\"col-2\">\r\n {student.date}\r\n </td>\r\n <td className=\"col-2\">\r\n {student.location}\r\n </td>\r\n <td className=\"col-2\">\r\n {student.slotName}\r\n </td>\r\n <td className=\"col-2\">\r\n {student.name}\r\n </td>\r\n <td className=\"col-2\">\r\n {student.phone}\r\n </td>\r\n <td className=\"col-2\">\r\n {student.instructor}\r\n </td>\r\n </tr>);\r\n });\r\n }\r\n\r\n render() {\r\n const { showToast, toastType, toastMessage } = this.state;\r\n\r\n return (\r\n <div className=\"holder\">\r\n <h3>View All Scheduled Road Test Lessons</h3>\r\n {showToast ?\r\n <div>\r\n {toastType === \"Warning\" ?\r\n <Alert variant={\"warning\"} onClose={() => this.setState({ showToast: false })} dismissible style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n zIndex: 1,\r\n width: \"40%\"\r\n }}>\r\n <Alert.Heading>{toastType}</Alert.Heading>\r\n {toastMessage}\r\n </Alert> : null}\r\n {toastType === \"Success\" ?\r\n <Alert variant={\"success\"} onClose={() => this.setState({ showToast: false })} dismissible style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n zIndex: 1,\r\n width: \"40%\"\r\n }}>\r\n <Alert.Heading>{toastType}</Alert.Heading>\r\n {toastMessage}\r\n </Alert> : null}\r\n\r\n </div> : null}\r\n\r\n\r\n\r\n <Accordion defaultActiveKey=\"0\" activeKey={this.state.activeKey}>\r\n <Card>\r\n <Accordion eventkey=\"0\">\r\n\r\n <Card.Body>\r\n {this.state.attemptedToLoadData ?\r\n\r\n <div>{this.state.sortedLessons.length > 0 ? <div>\r\n\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr className=\"d-flex\">\r\n <th className=\"col-2\">Date</th>\r\n <th className=\"col-2\">Location</th>\r\n <th className=\"col-2\">Slot Time</th>\r\n <th className=\"col-2\">Student</th>\r\n <th className=\"col-2\">Phone</th>\r\n <th className=\"col-2\">Instructor</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.sortedLessons.map((x, index) => {\r\n return this.renderRow(x, index);\r\n })}\r\n\r\n </tbody>\r\n\r\n </Table></div> : <p>No data found</p>}</div> :\r\n\r\n\r\n\r\n <div>Please wait, loading data...</div>}\r\n\r\n\r\n </Card.Body>\r\n </Accordion>\r\n </Card>\r\n </Accordion>\r\n <br></br>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Formik, Field } from \"formik\";\r\nimport { Button, Table, Alert } from 'react-bootstrap'\r\nimport { Auth, API } from \"aws-amplify\";\r\nimport crypto from 'crypto-js';\r\n\r\nimport './SetRoadTestInstructors.css';\r\n\r\nexport default class Registration extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChange = this.onChange.bind(this)\r\n this.state = {\r\n packages: [],\r\n instructors: [],\r\n loading: false,\r\n values: {},\r\n errors: {},\r\n touched: {},\r\n password: \"ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f\"\r\n };\r\n }\r\n\r\n\r\n fetchRoadTestInstructors() {\r\n const that = this;\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestInstructors.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n if (typeof (data) === \"undefined\") {\r\n that.setState({ instructors: [] })\r\n }\r\n else {\r\n var decryptedInstructors = []\r\n for (let i = 0; i < data.length; i++) {\r\n let instructor = data[i];\r\n var decryptedName = crypto.AES.decrypt(instructor.resourceTitle, that.state.password).toString(crypto.enc.Utf8)\r\n decryptedInstructors.push(\r\n { resourceId: instructor.resourceId, resourceTitle: decryptedName, value: decryptedName, label: decryptedName }\r\n )\r\n }\r\n that.setState({ instructors: decryptedInstructors })\r\n }\r\n });\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchRoadTestInstructors();\r\n }\r\n\r\n onChange(e, index, field) {\r\n console.log(e, index, field)\r\n var localInstructors = this.state.instructors\r\n switch (field) {\r\n case \"resourceTitle\":\r\n localInstructors[index].resourceTitle = e\r\n break;\r\n default:\r\n console.warn(\"Default value hit. Should not reach here.\")\r\n }\r\n console.log(localInstructors)\r\n this.setState({ instructors: localInstructors })\r\n }\r\n addNewInstructor = () => {\r\n var localInstructors = this.state.instructors\r\n var maxId = Math.max.apply(0, localInstructors.map(x => x.resourceId)) + 1;\r\n\r\n localInstructors.push(\r\n { resourceId: maxId, resourceTitle: \"\", value: \"\", label: \"\" }\r\n )\r\n this.setState({ instructors: localInstructors, refreshStatus: \"\", packageError: \"\" })\r\n }\r\n\r\n deleteInstructor = (index) => {\r\n var localInstructors = this.state.instructors\r\n localInstructors.splice(index, 1)\r\n this.setState({ instructors: localInstructors, refreshStatus: \"\", packageError: \"\" })\r\n }\r\n\r\n handleErrors = (response) => {\r\n if (!response.ok) {\r\n this.setState({ loading: false, packageError: \"There was an error: \" + response.statusText })\r\n }\r\n return response;\r\n }\r\n\r\n handleSubmit = async event => {\r\n this.setState({ loading: true, refreshStatus: \"\", packageError: \"\" })\r\n let encryptedInstructors = []\r\n\r\n for (let i = 0; i < this.state.instructors.length; i++) {\r\n let instructor = this.state.instructors[i];\r\n var encryptedName = crypto.AES.encrypt(instructor.resourceTitle, this.state.password).toString()\r\n encryptedInstructors.push(\r\n { resourceId: instructor.resourceId, resourceTitle: encryptedName, value: encryptedName, label: encryptedName }\r\n )\r\n }\r\n const that = this;\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: encryptedInstructors,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n }\r\n console.log(encryptedInstructors)\r\n API.post(\"APIGateway\", \"/updateRoadTestInstructors \", options)\r\n .then(function (data) {\r\n that.setState({ loading: false, refreshStatus: \"Successfully updated!\" })\r\n console.log(\"Received the following from the API\")\r\n console.log(data)\r\n }).catch(function (error) {\r\n console.log(error)\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n render() {\r\n return (\r\n <div className=\"holder\">\r\n {this.state.packageError ? <Alert variant=\"warning\">\r\n <strong>{this.state.packageError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n <div>\r\n <h3>Set Active Road Test Instructors</h3>\r\n <br></br>\r\n <Button variant=\"success\" onClick={this.addNewInstructor}>Add New</Button>\r\n <br></br>\r\n <br></br>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Instructor Name</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.instructors ?\r\n this.state.instructors.map((x, index) => {\r\n var name = x.resourceTitle;\r\n return (\r\n <tr key={index}>\r\n <td><input className=\"inputWidth\" type='text' onChange={e => this.onChange(e.target.value, index, \"resourceTitle\")} value={name} /></td>\r\n <td><Button variant=\"danger\" onClick={() => this.deleteInstructor(index)}>Delete</Button></td>\r\n </tr>\r\n )\r\n })\r\n : null}\r\n </tbody>\r\n </Table>\r\n <Formik\r\n ref={this.formikRef}\r\n initialValues={{\r\n }}\r\n onSubmit={this.bindSubmitForm}\r\n >\r\n {props => {\r\n const {\r\n values,\r\n touched,\r\n errors,\r\n handleSubmit,\r\n } = props;\r\n return (\r\n <form onSubmit={handleSubmit}>\r\n <Button variant=\"primary\" disabled={this.state.loading} onClick={this.handleSubmit}>Save Instructors</Button>\r\n </form>\r\n );\r\n }}\r\n </Formik>\r\n\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Formik, Field } from \"formik\";\r\nimport { Button, Table, Alert } from 'react-bootstrap'\r\nimport { Auth, API } from \"aws-amplify\";\r\nimport classnames from 'classnames';\r\n\r\nimport './SetRoadPackages.css';\r\n\r\n// Radio input\r\nconst RadioButton = ({\r\n field: { name, value, onChange, onBlur },\r\n id,\r\n label,\r\n className,\r\n ...props\r\n}) => {\r\n return (\r\n <div>\r\n <input\r\n name={name}\r\n id={id}\r\n type=\"radio\"\r\n value={id} // could be something else for output?\r\n checked={id === value}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n className={classnames(\"radio-button\")}\r\n {...props}\r\n />\r\n <label htmlFor={id}>{label}</label>\r\n </div>\r\n );\r\n};\r\n\r\nconst InputFeedback = ({ error }) =>\r\n error ? <div className=\"input-feedback\">{error}</div> : null;\r\n\r\nconst RadioButtonGroup = ({\r\n value,\r\n error,\r\n touched,\r\n id,\r\n label,\r\n className,\r\n children\r\n}) => {\r\n const classes = classnames(\r\n \"input-field\",\r\n {\r\n \"is-success\": value || (!error && touched), // handle prefilled or user-filled\r\n \"is-error\": !!error\r\n },\r\n className\r\n );\r\n return (\r\n <div className={classes}>\r\n <fieldset>\r\n <legend>{label}</legend>\r\n {children}\r\n {touched && <InputFeedback error={error} />}\r\n </fieldset>\r\n </div>\r\n );\r\n};\r\nexport default class Registration extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChange = this.onChange.bind(this)\r\n this.state = {\r\n packages: [],\r\n loading: false,\r\n values: {},\r\n errors: {},\r\n touched: {}\r\n };\r\n }\r\n\r\n\r\n fetchRoadTestPackages(){\r\n const that = this;\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestPackages.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n console.log(data)\r\n if (typeof (data) === \"undefined\") {\r\n that.setState({ packages: [] })\r\n }\r\n else {\r\n that.setState({ packages: data })\r\n }\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchRoadTestPackages();\r\n }\r\n\r\n onChange(e, index, field) {\r\n console.log(e, index, field)\r\n var localPackages = this.state.packages\r\n switch (field) {\r\n case \"name\":\r\n localPackages[index].package = e\r\n break;\r\n case \"price\":\r\n localPackages[index].price = e\r\n break;\r\n case \"lessons\":\r\n localPackages[index].lessons = e\r\n break;\r\n default:\r\n console.warn(\"Default value hit. Should not reach here.\")\r\n }\r\n console.log(localPackages)\r\n this.setState({ packages: localPackages })\r\n }\r\n addNewPackage = () => {\r\n var localPackages = this.state.packages\r\n localPackages.push(\r\n {\r\n \"package\": \"\",\r\n \"price\": \"\",\r\n \"editName\": true,\r\n \"lessons\": 0\r\n }\r\n )\r\n this.setState({ packages: localPackages, refreshStatus: \"\", packageError: \"\" })\r\n }\r\n\r\n deletePackage = (index) => {\r\n var localPackages = this.state.packages\r\n localPackages.splice(index, 1)\r\n this.setState({ packages: localPackages, refreshStatus: \"\", packageError: \"\" })\r\n }\r\n\r\n handleErrors = (response) => {\r\n if (!response.ok) {\r\n this.setState({ loading: false, packageError: \"There was an error: \" + response.statusText })\r\n }\r\n return response;\r\n }\r\n\r\n handleSubmit = async event => {\r\n this.setState({ loading: true, refreshStatus: \"\", packageError: \"\" })\r\n let packages = this.state.packages.filter(x => x.package.length > 0).sort((a, b) => (a.package > b.package) ? 1 : ((b.package > a.packages) ? -1 : 0))\r\n const that = this;\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: packages,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n }\r\n API.post(\"APIGateway\", \"/updateroadtestpackages \", options)\r\n .then(function (data) {\r\n that.setState({ loading: false, refreshStatus: \"Successfully updated!\" })\r\n console.log(\"Received the following from the API\")\r\n console.log(data)\r\n }).catch(function (error) {\r\n console.log(error)\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n render() {\r\n return (\r\n <div className=\"holder\">\r\n {this.state.packageError ? <Alert variant=\"warning\">\r\n <strong>{this.state.packageError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n <div>\r\n <h3>Set Active Packages</h3>\r\n <div>Be very careful with the naming of packages to ensure there are no duplicate names.</div>\r\n <br></br>\r\n <Button variant=\"success\" onClick={this.addNewPackage}>Add New</Button>\r\n <br></br>\r\n <br></br>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Package Name</th>\r\n <th>Cost ($)</th>\r\n <th>Lessons</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.packages ?\r\n this.state.packages.map((x, index) => {\r\n var name = x.package\r\n var price = x.price\r\n var disabled = !x.editName || this.state.loading;\r\n var lessons = x.lessons\r\n return (\r\n <tr key={index}>\r\n <td><input className=\"inputWidth\" type='text' disabled={disabled} onChange={e => this.onChange(e.target.value, index, \"name\")} value={name} /></td>\r\n <td><input className=\"inputWidth\" type='text' onChange={e => this.onChange(e.target.value, index, \"price\")} value={price} /></td>\r\n <td><input className=\"inputWidth\" type='text' onChange={e => this.onChange(e.target.value, index, \"lessons\")} value={lessons} /></td>\r\n <td><Button variant=\"danger\" disabled={disabled} onClick={() => this.deletePackage(index)}>Delete</Button></td>\r\n </tr>\r\n )\r\n })\r\n : null}\r\n </tbody>\r\n </Table>\r\n <Formik\r\n ref={this.formikRef}\r\n initialValues={{\r\n }}\r\n onSubmit={this.bindSubmitForm}\r\n >\r\n {props => {\r\n const {\r\n values,\r\n touched,\r\n errors,\r\n handleSubmit,\r\n } = props;\r\n return (\r\n <form onSubmit={handleSubmit}>\r\n <Button variant=\"primary\" disabled={this.state.loading} onClick={this.handleSubmit}>Save Packages</Button>\r\n <hr></hr>\r\n <h3>Form Preview</h3>\r\n <RadioButtonGroup\r\n id=\"roadTestPackage\"\r\n label=\"Road Test Package\"\r\n value={values.roadTestPackage}\r\n error={errors.roadTestPackage}\r\n touched={touched.roadTestPackage}\r\n >\r\n {this.state.packages.map((roadTestPackage, key) => {\r\n return (\r\n <Field\r\n key={roadTestPackage.package + key}\r\n component={RadioButton}\r\n name=\"roadTestPackage\"\r\n id={roadTestPackage.package}\r\n label={roadTestPackage.package + \" ($\" + roadTestPackage.price + \")\"}\r\n />\r\n )\r\n })}\r\n </RadioButtonGroup>\r\n </form>\r\n );\r\n }}\r\n </Formik>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Button, Table, Alert } from 'react-bootstrap'\r\nimport { Auth, API } from \"aws-amplify\";\r\n\r\nimport './SetRoadPackages.css';\r\n\r\nexport default class Registration extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChange = this.onChange.bind(this)\r\n this.state = {\r\n locations: [],\r\n loading: false,\r\n values: {},\r\n errors: {},\r\n touched: {}\r\n };\r\n }\r\n\r\n\r\n fetchRoadTestLocations(){\r\n const that = this;\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestLocations.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n console.log(data)\r\n if (typeof (data) === \"undefined\") {\r\n that.setState({ locations: [] })\r\n }\r\n else {\r\n console.log(data)\r\n that.setState({ locations: data })\r\n }\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchRoadTestLocations();\r\n }\r\n\r\n onChange(e, index, field) {\r\n console.log(e, index, field)\r\n var localPackages = this.state.locations\r\n switch (field) {\r\n case \"name\":\r\n localPackages[index].package = e\r\n break;\r\n case \"price\":\r\n localPackages[index].price = e\r\n break;\r\n case \"lessons\":\r\n localPackages[index].lessons = e\r\n break;\r\n default:\r\n console.warn(\"Default value hit. Should not reach here.\")\r\n }\r\n console.log(localPackages)\r\n this.setState({ locations: localPackages })\r\n }\r\n\r\n deletePackage = (index) => {\r\n var localPackages = this.state.locations\r\n localPackages.splice(index, 1)\r\n this.setState({ locations: localPackages, refreshStatus: \"\", packageError: \"\" })\r\n }\r\n\r\n handleErrors = (response) => {\r\n if (!response.ok) {\r\n this.setState({ loading: false, packageError: \"There was an error: \" + response.statusText })\r\n }\r\n return response;\r\n }\r\n\r\n handleSubmit = async event => {\r\n this.setState({ loading: true, refreshStatus: \"\", packageError: \"\" })\r\n let locations = this.state.locations.filter(x => x.package.length > 0).sort((a, b) => (a.package > b.package) ? 1 : ((b.package > a.locations) ? -1 : 0))\r\n const that = this;\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: locations,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n }\r\n API.post(\"APIGateway\", \"/updateroadtestdates\", options)\r\n .then(function (data) {\r\n that.setState({ loading: false, refreshStatus: \"Successfully updated!\" })\r\n console.log(\"Received the following from the API\")\r\n console.log(data)\r\n }).catch(function (error) {\r\n console.log(error)\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n render() {\r\n return (\r\n <div className=\"holder\">\r\n {this.state.packageError ? <Alert variant=\"warning\">\r\n <strong>{this.state.packageError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n <div>\r\n <h3>Active Road Test Locations</h3>\r\n <div>This is not currently used for anything.</div>\r\n <br></br>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Location Name</th>\r\n <th>Address</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.locations ?\r\n this.state.locations.map((x, index) => {\r\n var name = x.name\r\n var address = [x.address, x.city, x.state, x.zipcode].join(\" \")\r\n \r\n var disabled = !x.editName || this.state.loading;\r\n return (\r\n <tr key={index}>\r\n <td><input className=\"inputWidth\" type='text' disabled={disabled} onChange={e => this.onChange(e.target.value, index, \"name\")} value={name} /></td>\r\n <td><input className=\"inputWidth\" type='text' disabled={disabled} onChange={e => this.onChange(e.target.value, index, \"address\")} value={address} /></td>\r\n <td><Button variant=\"danger\" disabled={disabled} onClick={() => this.deletePackage(index)}>Delete</Button></td>\r\n </tr>\r\n )\r\n })\r\n : null}\r\n </tbody>\r\n </Table>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Button, Alert, Row, Col, Form, Table, InputGroup } from 'react-bootstrap';\r\nimport { Auth, API } from \"aws-amplify\";\r\nimport moment from 'moment';\r\nimport { Locations } from \"../components/contstants/Locations\";\r\n\r\nexport default class ModifyStudentData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n data: [],\r\n filteredStudents: [],\r\n selectedStudent: {},\r\n editedStudent: {},\r\n avaliableOptions: [],\r\n loadedData: false,\r\n fName: \"\",\r\n lName: \"\",\r\n date: \"\",\r\n yearOptions: [\"2019\", \"2018\"],\r\n filterYear: \"\",\r\n locations: Locations,\r\n cols: [\r\n {\r\n Header: 'Date',\r\n accessor: 'date'\r\n }, {\r\n Header: 'First Name',\r\n accessor: 'fName'\r\n }, {\r\n Header: 'Last Name',\r\n accessor: 'lName'\r\n }]\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleStudentEdit = this.handleStudentEdit.bind(this);\r\n this.resetFilters = this.resetFilters.bind(this);\r\n this.findStudents = this.findStudents.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const that = this;\r\n var currentYear = moment().add(\"1\", \"year\").year();\r\n var yearOptions = [];\r\n yearOptions.push(\"All Years\");\r\n\r\n\r\n while (currentYear > 2022) {\r\n yearOptions.push(currentYear + \"\");\r\n currentYear--;\r\n }\r\n\r\n this.setState({ yearOptions, filterYear: moment().format(\"YYYY\") });\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestPackages.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n that.setState({ avaliableOptions: data });\r\n });\r\n }\r\n\r\n handleChange(e) {\r\n var key = e.target.id;\r\n this.setState({ [key]: e.target.value });\r\n }\r\n\r\n onRadioPackageChange(e) {\r\n var editedStudent = this.state.editedStudent;\r\n editedStudent.selectedPackage = e.currentTarget.id;\r\n this.setState({\r\n editedStudent\r\n });\r\n }\r\n\r\n onLocationChange(location) {\r\n var editedStudent = this.state.editedStudent;\r\n editedStudent.location = location;\r\n this.setState({\r\n editedStudent\r\n });\r\n }\r\n\r\n onCertificateChange(status) {\r\n var editedStudent = this.state.editedStudent;\r\n editedStudent.certPaymentStatus = !status;\r\n this.setState({\r\n editedStudent\r\n });\r\n }\r\n\r\n handleEditChange = e => {\r\n console.log(e);\r\n const { name, value } = e.target;\r\n var editedStudent = this.state.editedStudent;\r\n editedStudent[name] = value;\r\n this.setState({\r\n editedStudent: editedStudent\r\n });\r\n };\r\n\r\n //Update driving school\r\n handleParkwayUpdate = () => {\r\n var editedStudent = this.state.editedStudent;\r\n editedStudent.drivingSchool = \"Parkway Driving School\";\r\n this.setState({\r\n editedStudent: editedStudent\r\n });\r\n };\r\n\r\n handleStudentEdit(index) {\r\n let selectedStudent = this.state.filteredStudents[index];\r\n console.log(selectedStudent);\r\n this.setState({ selectedStudent: selectedStudent, editedStudent: JSON.parse(JSON.stringify(selectedStudent)) });\r\n }\r\n\r\n findStudents = async () => {\r\n this.getFilteredStudents();\r\n };\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n fName: \"\",\r\n lName: \"\",\r\n date: \"\",\r\n filterYear: \"All Years\",\r\n selectedStudent: {}\r\n });\r\n };\r\n\r\n\r\n getFilteredStudents = async () => {\r\n let filters = {};\r\n if (moment(this.state.date, 'YYYY-MM-DD', true).isValid()) {\r\n filters.date = moment(this.state.date).format('YYYY-MM-DD');\r\n }\r\n if (this.state.fName && this.state.fName.length > 0) {\r\n filters.fName = this.state.fName;\r\n }\r\n if (this.state.lName && this.state.lName.length > 0) {\r\n filters.lName = this.state.lName;\r\n }\r\n\r\n if (this.state.filterYear && this.state.filterYear != \"All Years\") {\r\n filters.filterYear = this.state.filterYear;\r\n }\r\n\r\n if (Object.keys(filters).length == 0) {\r\n this.setState({ loading: false, dateError: \"You must specify a filter.\" });\r\n return;\r\n }\r\n\r\n var that = this;\r\n that.setState({ loading: true });\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: filters,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n try {\r\n let data = await API.post(\"APIGateway\", \"/v2getStudentsByFilter\", options);\r\n that.setState({ data: data, loading: false, loadedData: true, filteredStudents: data, refreshStatus: \"Successfully fetched data! \" + data.length + \" results found.\", dateError: \"\" });\r\n\r\n } catch (error) {\r\n console.log(error);\r\n that.setState({ loading: false, dateError: \"There was an error viewing the student table. Please copy this message and send it to your developer for debugging.\" + JSON.stringify(error) });\r\n\r\n }\r\n\r\n };\r\n\r\n handleUpdateUser = async (event) => {\r\n this.setState({ loading: true });\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n let oldStudent = this.state.selectedStudent;\r\n let student = this.state.editedStudent;\r\n\r\n if (!moment(student.date, 'YYYY-MM-DD', true).isValid()) {\r\n this.setState({ moveError: \"Invalid Date Entry.\", loading: false });\r\n return;\r\n }\r\n var mode = \"updateStudent2\";\r\n if (oldStudent.date != student.date) {\r\n mode = \"updateAndDeleteOld\";\r\n //date is being changed, so we need to update the email data to clear out any potential emails sent.\r\n if (student.emailInitalState !== \"Not Sent\") {\r\n student.emailInitalState = \"Not Sent\";\r\n }\r\n if (student.emailRoadTestPassedState !== \"Not Sent\") {\r\n student.emailRoadTestPassedState = \"Not Sent\";\r\n }\r\n if (student.emailRoadTestSlotConfirmed !== \"Email Not Sent\") {\r\n student.emailRoadTestSlotConfirmed = \"Email Not Sent\";\r\n }\r\n if (student.emailRoadTestSlotState !== \"Not Sent\") {\r\n student.emailRoadTestSlotState = \"Not Sent\";\r\n }\r\n if (student.hasOwnProperty(\"validateToken\")) {\r\n delete student.validateToken;\r\n }\r\n if (student.hasOwnProperty(\"slot\")) {\r\n delete student.slot;\r\n }\r\n if (student.hasOwnProperty(\"weekendDate\")) {\r\n delete student.weekendDate;\r\n }\r\n }\r\n\r\n var item = { \"mode\": mode, \"student\": student, \"newDate\": student.date, \"oldDate\": oldStudent.date };\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [item],\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n that.setState({ editedStudent: {}, selectedStudent: {}, loading: false, data: [], filteredStudents: [] }, () => that.findStudents());\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n that.setState({ loading: false });\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n\r\n <div className=\"holder\">\r\n <h3>Find and Modify Student Record</h3>\r\n {this.state.dateError ? <Alert variant=\"warning\">\r\n <strong>{this.state.dateError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n <div>\r\n <br></br>\r\n <h4>Enter Filters</h4>\r\n <Form>\r\n <Row>\r\n <Col>\r\n <Form.Label>Select Year to Filter</Form.Label>\r\n <Form.Control\r\n name=\"filterYear\"\r\n as=\"select\"\r\n id=\"filterYear\"\r\n onChange={this.handleChange}\r\n value={this.state.filterYear}\r\n >\r\n {this.state.yearOptions.map(year => {\r\n return (\r\n <option key={year} value={year}>{year}</option>\r\n );\r\n\r\n })}\r\n </Form.Control>\r\n </Col>\r\n <Col>\r\n <Form.Label>Date</Form.Label>\r\n <Form.Control placeholder=\"MM/DD/YYYY\" value={this.state.date} onChange={this.handleChange} id=\"date\" type=\"date\" />\r\n </Col>\r\n <Col>\r\n <Form.Label>First Name</Form.Label>\r\n <Form.Control placeholder=\"First name\" value={this.state.fName} onChange={this.handleChange} id=\"fName\" type=\"text\" />\r\n </Col>\r\n <Col>\r\n <Form.Label>Last Name</Form.Label>\r\n <Form.Control placeholder=\"Last name\" value={this.state.lName} onChange={this.handleChange} id=\"lName\" type=\"text\" />\r\n </Col>\r\n </Row>\r\n </Form>\r\n <br></br>\r\n\r\n <Button className=\"butPadding\" disabled={this.state.loading} onClick={this.findStudents}> {this.state.loading ? \"Loading...\" : \"Find students\"}</Button>\r\n <Button className=\"butPadding\" disabled={this.state.loading} onClick={this.resetFilters} variant={\"secondary\"}>Reset Filters</Button>\r\n\r\n <br></br>\r\n <br></br>\r\n\r\n {this.state.filteredStudents.length > 0 ?\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr className=\"d-flex\">\r\n <th className=\"col-2\">Date</th>\r\n <th className=\"col-2\">First Name</th>\r\n <th className=\"col-2\">Last Name</th>\r\n <th className=\"col-2\">Parent Email</th>\r\n <th className=\"col-3\">Lessons</th>\r\n <th className=\"col-1\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.filteredStudents.map((x, index) => {\r\n return (\r\n <span>\r\n <tr key={index} className=\"d-flex\">\r\n <td className=\"col-2\">{x.date}</td>\r\n <td className=\"col-2\">{x.fName}</td>\r\n <td className=\"col-2\">{x.lName}</td>\r\n <td className=\"col-2\">{x.parentEmailAddress}</td>\r\n <td className=\"col-3\">\r\n {x.selectedPackage.includes(\"Lesson\") ?\r\n <div>\r\n {x.scheduledLessons && x.scheduledLessons.length > 0 ?\r\n <div>\r\n {x.scheduledLessons.map(lesson => {\r\n return (\r\n <div>\r\n {moment(lesson.date).format(\"MM/DD/YYYY\") + \" at \" + lesson.slotName + \" in \" + lesson.location + \" with \" + lesson.instructor}\r\n </div>\r\n );\r\n })}\r\n\r\n </div> : \"No Lessons Scheduled \"}\r\n\r\n </div>\r\n : \"N/A\"}\r\n\r\n </td>\r\n <td className=\"col-1\"><Button onClick={() => this.handleStudentEdit(index)}>Edit</Button></td>\r\n </tr>\r\n {Object.keys(this.state.selectedStudent).length > 0 && this.state.selectedStudent == x ? <div> {Object.keys(this.state.selectedStudent).length > 0 ?\r\n <div>\r\n <hr></hr>\r\n <Form noValidate onSubmit={this.handleUpdateUser} >\r\n <Form.Group controlId=\"date\">\r\n <Form.Label>Road Test Date</Form.Label>\r\n <Form.Control required\r\n name=\"date\"\r\n type=\"date\"\r\n value={this.state.editedStudent.date}\r\n placeholder=\"MM/DD/YYYY\"\r\n onChange={this.handleEditChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a permit issue date.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n <Form.Group controlId=\"location\">\r\n <Form.Label>Road Test Location</Form.Label>\r\n {this.state.locations.map((location) => {\r\n return (\r\n <Form.Check\r\n checked={location === this.state.editedStudent.location}\r\n name=\"location\"\r\n type=\"radio\"\r\n id={location}\r\n onChange={() => this.onLocationChange(location)}\r\n label={location}\r\n />\r\n );\r\n\r\n })}\r\n <Form.Control.Feedback type=\"invalid\">Please select a location.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n <InputGroup className=\"mb-3\">\r\n <Form.Control\r\n name=\"drivingSchool\"\r\n type=\"text\"\r\n value={this.state.editedStudent.drivingSchool}\r\n placeholder=\"Enter Driving School Name (Optional)\"\r\n onChange={this.handleEditChange}\r\n />\r\n <InputGroup.Append>\r\n <Button variant=\"outline-secondary\" onClick={() => this.handleParkwayUpdate()}>Parkway</Button>\r\n </InputGroup.Append>\r\n </InputGroup>\r\n\r\n <Row>\r\n <Col>\r\n <Form.Label>First Name</Form.Label>\r\n <Form.Control required\r\n name=\"fName\"\r\n type=\"text\"\r\n value={this.state.editedStudent.fName}\r\n placeholder=\"First Name\"\r\n onChange={this.handleEditChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a name.</Form.Control.Feedback>\r\n </Col>\r\n <Col>\r\n <Form.Label>Last Name</Form.Label>\r\n <Form.Control required\r\n name=\"lName\"\r\n type=\"text\"\r\n value={this.state.editedStudent.lName}\r\n placeholder=\"Last Name\"\r\n onChange={this.handleEditChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a name.</Form.Control.Feedback>\r\n </Col>\r\n </Row>\r\n <Form.Group controlId=\"dob\">\r\n <Form.Label>Date of Birth</Form.Label>\r\n <Form.Control required\r\n name=\"dob\"\r\n type=\"date\"\r\n value={this.state.editedStudent.dob}\r\n placeholder=\"MM/DD/YYYY\"\r\n onChange={this.handleEditChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a DOB.</Form.Control.Feedback>\r\n </Form.Group>\r\n\r\n <Row>\r\n <Col>\r\n <Form.Group controlId=\"permitNo\">\r\n <Form.Label>Permit Number</Form.Label>\r\n <Form.Control required\r\n name=\"permitNo\"\r\n type=\"text\"\r\n value={this.state.editedStudent.permitNo}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleEditChange}\r\n />\r\n </Form.Group>\r\n <Form.Control.Feedback type=\"invalid\">Please input a permit number.</Form.Control.Feedback>\r\n\r\n </Col>\r\n <Col>\r\n <Form.Group controlId=\"permitDate\">\r\n <Form.Label>Permit Issue Date</Form.Label>\r\n <Form.Control required\r\n name=\"permitDate\"\r\n type=\"date\"\r\n value={this.state.editedStudent.permitDate}\r\n placeholder=\"MM/DD/YYYY\"\r\n onChange={this.handleEditChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a permit issue date.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n </Col>\r\n </Row>\r\n\r\n <Form.Group controlId=\"emailAddress\">\r\n <Form.Label>Email</Form.Label>\r\n <Form.Control required\r\n name=\"emailAddress\"\r\n type=\"email\"\r\n value={this.state.editedStudent.emailAddress}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleEditChange}\r\n autoComplete=\"email\"\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a email address.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n <Form.Group controlId=\"parentEmailAddress\">\r\n <Form.Label>Parent Email</Form.Label>\r\n <Form.Control\r\n name=\"parentEmailAddress\"\r\n type=\"email\"\r\n value={this.state.editedStudent.parentEmailAddress || \"\"}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleEditChange}\r\n autoComplete=\"email\"\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a parent email address.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n <Form.Group controlId=\"phone\">\r\n <Form.Label>Phone Number</Form.Label>\r\n <Form.Control required\r\n name=\"phone\"\r\n type=\"tel\"\r\n value={this.state.editedStudent.phone}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleEditChange}\r\n autoComplete=\"tel-national\"\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a phone number.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n\r\n <Form.Group controlId=\"note\">\r\n <Form.Label>Notes</Form.Label>\r\n <Form.Control\r\n name=\"note\"\r\n type=\"text\"\r\n value={this.state.editedStudent.note}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleEditChange}\r\n />\r\n </Form.Group>\r\n\r\n\r\n <Form.Check disabled inline label=\"Completion Certificate Paid\" type={\"checkbox\"} id={`addCompletionCertificate`} checked={this.state.editedStudent.certPaymentStatus} onChange={(e) => this.onCertificateChange(this.state.editedStudent.certPaymentStatus)} /> <br></br>\r\n <Button disabled={this.state.loading} type=\"submit\">Update</Button>\r\n </Form>\r\n </div> : null}\r\n\r\n </div> : <div></div>}\r\n\r\n </span>\r\n\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n : null}\r\n\r\n <br></br>\r\n </div>\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Button, Alert, Form } from 'react-bootstrap'\r\nimport { Auth, API } from \"aws-amplify\";\r\nimport { CSVLink } from 'react-csv';\r\n\r\nimport moment from 'moment';\r\nimport ReactTable from \"react-table\";\r\nimport 'react-table/react-table.css'\r\n\r\nvar headers = [\r\n { label: 'ID', key: 'transactionID' },\r\n { label: 'Date', key: 'transactionDate' },\r\n { label: 'Description', key: 'name' },\r\n { label: 'Amount', key: 'cost' }\r\n];\r\n\r\nexport default class RoadTestDates extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fetchedData: false,\r\n loading: false,\r\n data: [],\r\n columns: [],\r\n filteredData: [],\r\n yearOptions: [\"2018\", \"2019\"],\r\n filterYear: \"2019\"\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n\r\n }\r\n\r\n handleChange(e) {\r\n var target = e.target;\r\n this.setState({ filterYear: target.value })\r\n }\r\n\r\n async componentDidMount() {\r\n var currentYear = moment().add(\"1\", \"year\").year()\r\n var yearOptions = []\r\n\r\n while (currentYear > 2017) {\r\n yearOptions.push(currentYear + \"\")\r\n currentYear--;\r\n }\r\n yearOptions = yearOptions.reverse()\r\n this.setState({ yearOptions, filterYear: moment().format(\"YYYY\") })\r\n }\r\n\r\n getFilteredStudents = async () => {\r\n this.setState({ \"fetchedData\": true, \"loading\": true });\r\n let filter = { \"date\": this.state.filterYear }\r\n const that = this\r\n\r\n let session = await Auth.currentSession();\r\n\r\n let options = {\r\n body: filter,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n }\r\n\r\n try {\r\n let data = await API.post(\"APIGateway\", \"/v2getStudentsByFilter\", options);\r\n that.setState({ loading: false, refreshStatus: \"Successfully fetched data!\" })\r\n if (data.length === 0) {\r\n that.setState({ dateError: \"No students found.\" })\r\n return\r\n }\r\n\r\n const actualDateAdjustment = {\r\n \"Saturday\": 0,\r\n \"Sunday\": 1,\r\n \"Monday\": 2,\r\n \"Tuesday\": 3,\r\n \"Wednesday\": 4,\r\n \"Thursday\": 5,\r\n \"Friday\": 6\r\n }\r\n\r\n data = data.map(x => {\r\n try {\r\n if (x.selectedPackage.includes(\"Road Test Only\")) {\r\n x.scheduledLesson = \"N/A\"\r\n }\r\n else {\r\n x.scheduledLesson = String(x.scheduledLesson)\r\n }\r\n } catch (error) {\r\n x.scheduledLesson = \"Unknown\"\r\n }\r\n\r\n //We need to convert the date\r\n x.date = moment(x.date).add(actualDateAdjustment[x.weekendDate], \"days\").format(\"MM-DD-YYYY (dddd)\")\r\n\r\n\r\n return x\r\n })\r\n data = data.sort(function (a, b) { // non-anonymous as you ordered...\r\n return b.date < a.date ? 1 // if b should come earlier, push a to end\r\n : b.date > a.date ? -1 // if b should come later, push a to begin\r\n : 0; // a and b are equal\r\n });\r\n\r\n var filteredData = data.filter(x => x.year === that.state.filterYear)\r\n that.setState({ data: data, filteredData: filteredData })\r\n\r\n var cols = [{\r\n Header: 'Date',\r\n accessor: 'date'\r\n }, {\r\n Header: 'Notes',\r\n accessor: 'note'\r\n }, {\r\n Header: 'First Name',\r\n accessor: 'fName'\r\n }, {\r\n Header: 'Last Name',\r\n accessor: 'lName'\r\n }, {\r\n Header: 'Email',\r\n accessor: 'emailAddress'\r\n },\r\n {\r\n Header: 'Phone',\r\n accessor: 'phone'\r\n }, {\r\n Header: 'Slot',\r\n accessor: 'slot'\r\n }, {\r\n Header: 'Package',\r\n accessor: 'selectedPackage'\r\n }, {\r\n Header: 'Permit Number',\r\n accessor: 'permitNo'\r\n }, {\r\n Header: 'Date of Birth',\r\n accessor: 'dob'\r\n }, {\r\n Header: 'Payment Status',\r\n accessor: 'paymentStatus'\r\n },\r\n {\r\n Header: 'Driving School',\r\n accessor: 'drivingSchool'\r\n }, {\r\n Header: 'Source',\r\n accessor: 'source'\r\n }]\r\n that.setState({ columns: cols })\r\n } catch (error) {\r\n console.log(error)\r\n if (error.response.status === 401) {\r\n that.setState({ loading: false, dateError: \"Authentication Failed. Please log back in.\" })\r\n }\r\n else {\r\n that.setState({ loading: false, dateError: \"There was an error viewing the student table. Please copy this message and send it to your developer for debugging.\" + JSON.stringify(error.response) })\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n handleFilterDownload = async event => {\r\n this.setState({ loading: true })\r\n\r\n this.setState({ filteredData: this.reactTableTransaction.getResolvedState().sortedData, renderDownload: true }, () => {\r\n this.filterCSVLink.link.click()\r\n this.setState({ loading: false })\r\n })\r\n }\r\n render() {\r\n return (\r\n\r\n <div className=\"holder\">\r\n <h3>Student Record Table</h3>\r\n {this.state.dateError ? <Alert bsStyle=\"warning\">\r\n <strong>{this.state.dateError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert bsStyle=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n <div>\r\n <Form.Group controlId=\"formControlsSelect\">\r\n <Form.Label>Select Year to Download</Form.Label>\r\n <Form.Control\r\n name=\"selectedYear\"\r\n as=\"select\"\r\n onChange={this.handleChange}\r\n value={this.state.filterYear}\r\n >\r\n {this.state.yearOptions.map(year => {\r\n return (\r\n <option key={year} value={year}>{year}</option>\r\n )\r\n\r\n })}\r\n </Form.Control>\r\n </Form.Group>\r\n <Button bsStyle=\"primary\" disabled={this.state.loading || this.state.filterYear.length === 0} onClick={this.getFilteredStudents}>Fetch students for selected year</Button>\r\n <br></br>\r\n </div>\r\n\r\n {this.state.fetchedData ? <div>\r\n {this.state.data.length > 0 ?\r\n <div>\r\n <br></br>\r\n <Button bsStyle=\"primary\" disabled={this.state.loading || this.state.data.length === 0} onClick={this.handleFilterDownload}>Download Table Data</Button>\r\n <p>Note: This applies any filters you specified from the table above.</p>\r\n <CSVLink ref={(r) => this.filterCSVLink = r} data={this.state.data} headers={headers} className=\"hidden\" filename={this.state.filterYear + \"parkwaydrivingschoolexport.csv\"}></CSVLink>\r\n\r\n <ReactTable\r\n ref={(r) => this.reactTableTransaction = r}\r\n defaultSorted={[\r\n {\r\n id: \"transactionDate\",\r\n desc: false\r\n }\r\n ]}\r\n data={this.state.data}\r\n columns={this.state.columns}\r\n minRows={0}\r\n defaultPageSize={250}\r\n pageSizeOptions={[5, 10, 20, 25, 50, 100, 250]}\r\n />\r\n <div>\r\n <br></br>\r\n <br></br>\r\n <Button bsStyle=\"primary\" disabled={this.state.loading || this.state.filteredData.length === 0} onClick={this.handleFilterDownload}>Download Table Data</Button>\r\n <p>Note: This applies any filters you specified from the table above.</p>\r\n <CSVLink ref={(r) => this.filterCSVLink = r} data={this.state.data} headers={headers} className=\"hidden\" filename={this.state.filterYear + \"parkwaydrivingschoolexport.csv\"}></CSVLink>\r\n </div>\r\n\r\n </div>\r\n : <div> {this.state.loading ? \"Please wait, records loading \" : \"No records found.\"}</div>}\r\n </div> : <div>Please fetch data to see records.</div>}\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Accordion, Card, Button, Table } from 'react-bootstrap';\r\nimport moment from 'moment';\r\nimport DayPicker from 'react-day-picker';\r\nimport { timeToInt } from 'time-number';\r\nimport { Auth, API } from \"aws-amplify\";\r\nimport { Locations } from \"../components/contstants/Locations\";\r\n\r\nimport './Appointment.css';\r\nexport default class AttendeeList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedDate: \"\",\r\n APIDateStudentResults: [],\r\n unslotedMembers: [],\r\n selectedDay: [],\r\n selectedDays: [],\r\n activeKey: '0',\r\n selectedDaysRange: \"\",\r\n dataDirty: false,\r\n locations: Locations\r\n\r\n };\r\n this.onDateChange = this.onDateChange.bind(this);\r\n this.handleDayClick = this.handleDayClick.bind(this);\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.sortSlots = this.sortSlots.bind(this);\r\n this.formatPhoneNumbers = this.formatPhoneNumbers.bind(this);\r\n }\r\n\r\n handleGetSlotsbyDay = async (day) => {\r\n let dateNeeded = moment(day).format(\"YYYY-MM-DD\");\r\n this.setState({ loadingDay: true });\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: { \"date\": dateNeeded },\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n try {\r\n let data = await API.post(\"APIGateway\", \"/v2getStudentsByFilter\", options);\r\n data = this.sortSlots(data, \"slot\");\r\n data = this.formatPhoneNumbers(data);\r\n that.setState({ loadingDay: false, fetchedStudents: true });\r\n return data;\r\n\r\n }\r\n catch (e) {\r\n console.log(e);\r\n return ([]);\r\n }\r\n };\r\n async handleDayClick(date, { selected }) {\r\n let selectedDaysRange = \"\";\r\n\r\n let dayOfWeek = date.getDay();\r\n let selectedDays = [];\r\n if (dayOfWeek === 0) { //They picked a Sunday, but we really want the start of the weekend\r\n selectedDays.push(moment(date).subtract(1, 'd').toDate());\r\n selectedDays.push(moment(date).toDate());\r\n }\r\n else if (dayOfWeek === 6) { //They picked a Saturday, but we really want the start of the weekend\r\n selectedDays.push(moment(date).toDate());\r\n selectedDays.push(moment(date).add(1, 'd').toDate());\r\n }\r\n else {\r\n //Only 1-5 now.\r\n selectedDays = [date];\r\n }\r\n this.setState({ selectedDays });\r\n\r\n let selectedDay = selectedDays[0];\r\n selectedDaysRange += moment(selectedDay).format('LL') + \" - \";\r\n\r\n let APIDateStudentResults = await this.handleGetSlotsbyDay(selectedDay);\r\n //We need to figure out if there is an already selected Weekday from all of the students that were fetched.\r\n if (APIDateStudentResults.length > 0) {\r\n if (APIDateStudentResults[0].hasOwnProperty('slot')) {\r\n APIDateStudentResults = this.sortSlots(APIDateStudentResults, 'slot');\r\n } else {\r\n APIDateStudentResults = this.sortSlots(APIDateStudentResults, 'unslotTime');\r\n }\r\n var selectedWeekenedDates = new Set(APIDateStudentResults.filter(x => (x.weekendDate)).map(x => x.weekendDate));\r\n selectedWeekenedDates = [...selectedWeekenedDates];\r\n if (selectedWeekenedDates.length > 0) {//Only one date, let's assume it's that one and move on.\r\n var selectedWeekday = selectedWeekenedDates[0];\r\n var weekArray = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"];\r\n var weekendArray = [\"Saturday\", \"Sunday\"];\r\n if (dayOfWeek === 6) {\r\n this.setState({ dayOfExam: selectedDays[weekendArray.indexOf(selectedWeekday)], selectedWeekday });\r\n }\r\n else {\r\n this.setState({ dayOfExam: selectedDays[weekArray.indexOf(selectedWeekday)], selectedWeekday });\r\n }\r\n this.setState({ unslotedMembers: APIDateStudentResults.filter(x => !x.slot) });\r\n }\r\n }\r\n selectedDaysRange += moment(selectedDays[selectedDays.length - 1]).format('LL');\r\n //The selected date is the first entry of the selectedDays\r\n this.setState({\r\n selectedDay, APIDateStudentResults, selectedDaysRange, unsavedManuallyAddedStudents: [], dataDirty: true\r\n });\r\n }\r\n\r\n handleErrors = (response) => {\r\n if (!response.ok) {\r\n console.log(response.statusText);\r\n }\r\n return response;\r\n };\r\n sortSlots(array, key) {\r\n if (array.length === 0) {\r\n return [];\r\n }\r\n return array.sort(function (a, b) {\r\n var x = 0;\r\n var y = 0;\r\n if (a.hasOwnProperty(key)) {\r\n x = timeToInt(a[key]);\r\n }\r\n if (b.hasOwnProperty(key)) {\r\n y = timeToInt(b[key]);\r\n }\r\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\r\n });\r\n }\r\n\r\n formatPhoneNumbers(arrayOfStudents) {\r\n let students = [];\r\n for (let i = 0; i < arrayOfStudents.length; i++) {\r\n var studentWithPhoneNumberToUpdate = arrayOfStudents[i];\r\n var phone = studentWithPhoneNumberToUpdate.phone;\r\n var cleaned = ('' + phone).replace(/\\D/g, '');\r\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n var phone = '(' + match[1] + ') ' + match[2] + '-' + match[3];\r\n studentWithPhoneNumberToUpdate.phone = phone;\r\n }\r\n studentWithPhoneNumberToUpdate.phone = phone;\r\n students.push(studentWithPhoneNumberToUpdate);\r\n }\r\n return students;\r\n }\r\n\r\n onDateChange(e) {\r\n this.setState({\r\n selectedDate: e.currentTarget.value\r\n });\r\n }\r\n handleSelect(activeKey) {\r\n this.setState({ activeKey });\r\n }\r\n\r\n render() {\r\n const { activeKey, selectedDays, selectedDaysRange, APIDateStudentResults, locations } = this.state;\r\n\r\n return (\r\n <div className=\"holder\">\r\n\r\n <h3>Print Road Test Schedule</h3>\r\n\r\n Please select the time period you want to print a schedule of.\r\n <Accordion defaultActiveKey=\"0\" activeKey={activeKey}>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} variant=\"link\" eventKey=\"0\" onClick={() => this.setState({ activeKey: \"0\" })}>\r\n {selectedDaysRange.length > 0 ? <div>\r\n {selectedDaysRange}\r\n </div> : \"Select week\"}\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"0\">\r\n <Card.Body>\r\n <DayPicker\r\n numberOfMonths={2}\r\n selectedDays={selectedDays}\r\n showOutsideDays\r\n onDayClick={this.handleDayClick}\r\n />\r\n <br></br>\r\n <Button disabled={this.state.loadingDay || this.state.selectedDay.length === 0} className=\"butPadding\" onClick={() => this.setState({ activeKey: \"1\" })}>{this.state.loadingDay ? \"Please wait. Loading students...\" : \"View Roster\"}</Button>\r\n {this.state.dataDirty ?\r\n <div>\r\n {APIDateStudentResults.length > 0 ? <div>Found {APIDateStudentResults.length} students</div> : <div>No students found.</div>}\r\n </div>\r\n : null}\r\n\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} variant=\"link\" eventKey=\"1\" onClick={() => this.setState({ activeKey: \"1\" })}>\r\n Roster\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"1\">\r\n <Card.Body>\r\n {locations.map(location => {\r\n if (APIDateStudentResults.filter(x => x.location === location).length > 0) {\r\n return (\r\n <div>\r\n <h4>{location}</h4>\r\n {APIDateStudentResults.filter(x => x.location === location).length > 0 ?\r\n <div>\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr className=\"d-flex\">\r\n <th className=\"col-2\">Slot</th>\r\n <th className=\"col-4\">Name</th>\r\n <th className=\"col-2\">Phone</th>\r\n <th className=\"col-4\">Notes</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {APIDateStudentResults.filter(x => x.location === location).map((x, index) => {\r\n return (\r\n <tr key={index} className=\"d-flex\">\r\n <td className=\"col-2\">{x.hasOwnProperty(\"slot\") ? x.slot : x.unslotTime}</td>\r\n <td className=\"col-4\">{x.fName + \" \" + x.lName}</td>\r\n <td className=\"col-2\">{x.phone}</td>\r\n <td className=\"col-4\">{x.note}</td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n <br></br>\r\n </div>\r\n\r\n :\r\n <div>\r\n <br></br>\r\n There are no students for the selected time at {location}. </div>\r\n }\r\n\r\n\r\n </div>\r\n );\r\n }\r\n\r\n\r\n\r\n })}\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n </Accordion>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Button, Alert, Form } from 'react-bootstrap'\r\nimport { Auth, API } from \"aws-amplify\";\r\nimport { CSVLink } from 'react-csv';\r\n\r\nimport moment from 'moment';\r\nimport ReactTable from \"react-table\";\r\nimport 'react-table/react-table.css'\r\n\r\nvar headers = [\r\n { label: 'ID', key: 'transactionID' },\r\n { label: 'Date', key: 'transactionDate' },\r\n { label: 'Description', key: 'name' },\r\n { label: 'Amount', key: 'cost' }\r\n];\r\n\r\nexport default class RoadTestDates extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fetchedData: false,\r\n loading: false,\r\n data: [],\r\n columns: [],\r\n filteredData: [],\r\n yearOptions: [\"2018\", \"2019\"],\r\n filterYear: \"2019\"\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n\r\n }\r\n\r\n handleChange(e) {\r\n var target = e.target;\r\n var filteredData = this.state.data.filter(x => x.year === target.value)\r\n this.setState({ filteredData: filteredData, filterYear: target.value })\r\n }\r\n\r\n async componentDidMount() {\r\n var currentYear = moment().add(\"1\", \"year\").year()\r\n var yearOptions = []\r\n\r\n while (currentYear > 2017) {\r\n yearOptions.push(currentYear + \"\")\r\n currentYear--;\r\n }\r\n yearOptions = yearOptions.reverse()\r\n this.setState({ yearOptions, filterYear: moment().format(\"YYYY\") })\r\n }\r\n\r\n getFilteredStudents = async () => {\r\n this.setState({ \"fetchedData\": true, \"loading\": true });\r\n let filter = { \"date\": this.state.filterYear }\r\n const that = this\r\n\r\n let session = await Auth.currentSession();\r\n\r\n let options = {\r\n body: filter,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n }\r\n\r\n try {\r\n let data = await API.post(\"APIGateway\", \"/v2getStudentsByFilter\", options);\r\n that.setState({ loading: false, refreshStatus: \"Successfully fetched data!\" })\r\n if (data.length === 0) {\r\n that.setState({ dateError: \"No students found.\" })\r\n return\r\n }\r\n data = data.map(x => {\r\n if (x.selectedPackage.includes(\"Road Test Only\")) {\r\n x.scheduledLesson = \"N/A\"\r\n }\r\n else {\r\n x.scheduledLesson = String(x.scheduledLesson)\r\n }\r\n if (x.hasOwnProperty(\"fullPricing\")) {\r\n x.cost = x.fullPricing.map(x => x.price).reduce((a, b) => a + b, 0)\r\n } else {\r\n x.cost = \"MISSING PRICING DATA\"\r\n console.log(x)\r\n }\r\n //We need to convert the date\r\n //x.year = moment(x.date).add(actualDateAdjustment[x.weekendDate],\"days\").format(\"YYYY\")\r\n x.year = moment(x.timestamp).format(\"YYYY\")\r\n x.name = x.fName + \" \" + x.lName\r\n if (x.weekendDate === \"Sunday\") {\r\n x.date = moment(x.date).add(1, \"days\").format(\"MM-DD-YYYY (dddd)\")\r\n } else {\r\n x.date = moment(x.date).format(\"MM-DD-YYYY (dddd)\")\r\n }\r\n x.transactionDate = moment(x.timestamp).format(\"MM-DD-YYYY\")\r\n x.roadTestDate = moment(x.date).format(\"MM-DD-YYYY\")\r\n return x\r\n })\r\n data = data.sort(function (a, b) { // non-anonymous as you ordered...\r\n return b.date < a.date ? 1 // if b should come earlier, push a to end\r\n : b.date > a.date ? -1 // if b should come later, push a to begin\r\n : 0; // a and b are equal\r\n });\r\n\r\n var filteredData = data.filter(x => x.year === that.state.filterYear)\r\n that.setState({ data: data, filteredData: filteredData })\r\n\r\n var cols = [{\r\n Header: 'ID',\r\n accessor: 'transactionID'\r\n },\r\n {\r\n Header: 'Transaction Date',\r\n accessor: 'transactionDate'\r\n }, {\r\n Header: 'Road Test Date',\r\n accessor: 'roadTestDate'\r\n }, {\r\n Header: 'Description',\r\n accessor: 'name'\r\n }, {\r\n Header: 'Amount',\r\n accessor: 'cost'\r\n }]\r\n that.setState({ columns: cols })\r\n } catch (error) {\r\n console.log(error)\r\n if (error.response.status === 401) {\r\n that.setState({ loading: false, dateError: \"Authentication Failed. Please log back in.\" })\r\n }\r\n else {\r\n that.setState({ loading: false, dateError: \"There was an error viewing the student table. Please copy this message and send it to your developer for debugging.\" + JSON.stringify(error.response) })\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n handleFilterDownload = async event => {\r\n this.setState({ loading: true })\r\n\r\n this.setState({ filteredData: this.reactTableTransaction.getResolvedState().sortedData, renderDownload: true }, () => {\r\n this.filterCSVLink.link.click()\r\n this.setState({ loading: false })\r\n })\r\n }\r\n render() {\r\n return (\r\n\r\n <div className=\"holder\">\r\n <h3>Student Record Table</h3>\r\n {this.state.dateError ? <Alert bsStyle=\"warning\">\r\n <strong>{this.state.dateError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert bsStyle=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n <div>\r\n <Form.Group controlId=\"formControlsSelect\">\r\n <Form.Label>Select Year to Download</Form.Label>\r\n <Form.Control\r\n name=\"selectedYear\"\r\n as=\"select\"\r\n onChange={this.handleChange}\r\n value={this.state.filterYear}\r\n >\r\n {this.state.yearOptions.map(year => {\r\n return (\r\n <option key={year} value={year}>{year}</option>\r\n )\r\n\r\n })}\r\n </Form.Control>\r\n </Form.Group>\r\n <Button bsStyle=\"primary\" disabled={this.state.loading || this.state.filterYear.length === 0} onClick={this.getFilteredStudents}>Fetch students for selected transaction year</Button>\r\n <br></br>\r\n </div>\r\n\r\n {this.state.fetchedData ? <div>\r\n {this.state.filteredData.length > 0 ?\r\n <div>\r\n <Button bsStyle=\"primary\" disabled={this.state.loading || this.state.filteredData.length === 0} onClick={this.handleFilterDownload}>Download Table Data</Button>\r\n <p>Note: This applies any filters you specified from the table above.</p>\r\n <CSVLink ref={(r) => this.filterCSVLink = r} data={this.state.filteredData} headers={headers} className=\"hidden\" filename={this.state.filterYear + \"parkwaydrivingschoolexport.csv\"}></CSVLink>\r\n\r\n <ReactTable\r\n ref={(r) => this.reactTableTransaction = r}\r\n defaultSorted={[\r\n {\r\n id: \"transactionDate\",\r\n desc: false\r\n }\r\n ]}\r\n data={this.state.filteredData}\r\n columns={this.state.columns}\r\n minRows={0}\r\n defaultPageSize={250}\r\n pageSizeOptions={[5, 10, 20, 25, 50, 100, 250]}\r\n />\r\n <div>\r\n <br></br>\r\n <br></br>\r\n <Button bsStyle=\"primary\" disabled={this.state.loading || this.state.filteredData.length === 0} onClick={this.handleFilterDownload}>Download Table Data</Button>\r\n <p>Note: This applies any filters you specified from the table above.</p>\r\n <CSVLink ref={(r) => this.filterCSVLink = r} data={this.state.filteredData} headers={headers} className=\"hidden\" filename={this.state.filterYear + \"parkwaydrivingschoolexport.csv\"}></CSVLink>\r\n </div>\r\n\r\n </div>\r\n : <div> {this.state.loading ? \"Please wait, records loading \" : \"No records found.\"}</div>}\r\n </div> : <div>Please fetch data to see records.</div>}\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport './Home.css';\r\nimport { Accordion, Card } from 'react-bootstrap'\r\n\r\nexport default class Registration extends React.Component {\r\n render() {\r\n return (\r\n <div className=\"holder\">\r\n\r\n <h2>About Us</h2>\r\n <p>You can count on the professionals at Parkway Driving School for friendly and responsive customer service and competitive prices. We are conveniently located on the bus line and commuter rail.</p>\r\n <iframe title=\"googleMaps\" width=\"100%\" height=\"450\" frameBorder=\"0\" src=\"https://www.google.com/maps/embed/v1/place?q=place_id:ChIJfbJI_it_44kR0vh4lUUz6mk&key=AIzaSyAeIh33klXBfyfSnAJi-ffOSOqD1dKZM38\" allowFullScreen></iframe>\r\n <div>\r\n <p>\r\n <span>Parkway Driving School offers you the full training you need to put your classroom time to the test on the road and the confidence to pass with flying colors!</span>\r\n </p>\r\n <p>\r\n <span>If you would like additional information about our road testing process, give us a call today at </span><span><a href=\"tel:+16174774257\" target=\"_self\">617-477-4257</a></span><span>. You can also register by </span><span><a href=\"https://docs.google.com/forms/d/e/1FAIpQLScMAGY6VizTo1_W35U47jtkcdabpz7yP26Otn5DEG7ADl2jIQ/viewform?usp=pp_url\" target=\"_blank\" rel=\"noopener noreferrer\">clicking on this link</a></span><span>.</span>\r\n </p>\r\n <h3>Our road testing process</h3>\r\n <p>\r\n <span>We submit applicants to the Registry of Motor Vehicles for approval two weeks prior to a road test. When a date and time is confirmed we will send you an email or text. The RMV does not allow cancellations for weekend road tests. Exact date and time will be confirmed by email or text one week before the test.</span>\r\n </p>\r\n <h3>Our price schedule for road testing</h3>\r\n <p>See home page for pricing</p>\r\n <h3>Questions and answers about road testing</h3>\r\n <p>\r\n <span>We submit applicants to the Registry of Motor Vehicles for approval two weeks prior to a road test. When a date and time is confirmed we will send you an email or text. The RMV does not allow cancellations for weekend road tests. Exact date and time will be confirmed by email or text one week before the test.</span>\r\n </p>\r\n\r\n <Accordion>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} variant=\"link\" eventKey=\"0\">\r\n What do I need to bring with me the day of the road test?\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"0\">\r\n <Card.Body>\r\n You will need to bring a completed application and your permit with you the day of the road test. If you are under the age of 18, your application must be signed by your parent/guardian. Use the link below to print out your application.\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} variant=\"link\" eventKey=\"1\">\r\n Can anyone schedule a road test with Parkway Driving School?\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"1\">\r\n <Card.Body>\r\n Yes. You do not need to be a Parkway Driving School student to schedule a road test with us. We do require one lesson before the road test if you are not a Parkway Driving School student.\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} variant=\"link\" eventKey=\"2\">\r\n What is your payment and cancellation policy?\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"2\">\r\n <Card.Body>\r\n Payment Policy: Parkway Driving School needs to be paid at least two weeks prior to the scheduled road test. Cancellation Policy: Weekend RMV road tests are a special arrangement with RMV, and Parkway Auto School is unable to offer any cancellations.\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} variant=\"link\" eventKey=\"3\">\r\n What are the RMV fees?\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"3\">\r\n <Card.Body>\r\n The RMV charges $50 for your driver's license and $35 for the appointment fee. You will have to pay this fee whether you go with us on the weekend or go during the week on your own. You can pay by phone by calling 857-368-8000 and follow the voice prompts to pre-pay your license fees.\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} variant=\"link\" eventKey=\"4\">\r\n What will be required during the road test?\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"4\">\r\n <Card.Body>\r\n <ul>\r\n <li>\r\n Use hand signals\r\n </li>\r\n <li>\r\n Start the engine\r\n </li>\r\n <li>\r\n Start and stop the vehicle\r\n </li>\r\n <li>\r\n Parallel Park\r\n </li>\r\n <li>\r\n Back the vehicle approximately 50 feet\r\n </li>\r\n <li>\r\n Make left - right turns\r\n </li>\r\n <li>\r\n Start, stop, and turn the vehcile on a hill\r\n </li>\r\n <li>\r\n Turn around between curbs (three point turn)\r\n </li>\r\n <li>\r\n Enter and leave intersections\r\n </li>\r\n <li>\r\n Recognize and obey traffic signs, lights and signals, and other rules of the road\r\n </li>\r\n <li>\r\n Use good driving sense\r\n </li>\r\n </ul>\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n </Accordion>\r\n <br></br>\r\n\r\n <h2>Privacy Policy</h2>\r\n <div>\r\n Boston Road Tests LLC takes the security of your information seriously. To prevent unauthorized access, maintain data accuracy, and ensure the appropriate use of your information, Boston Road Tests LLC has implemented numerous physical, electronic and administrative procedures to safeguard and secure the information we collect online. However, it is impossible for us to fully guarantee that these measures will prevent any or all unauthorized use of your information. We also do not share, sell or give to any 3rd party’s any personal or private information except when processing your credit card payment your credit card details are provided to our PCI Compliant Payment Processor and Gateway to process your payment only no data is saved during the payment process.</div>\r\n </div >\r\n </div >\r\n\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Row, Col } from 'react-bootstrap'\r\n\r\nimport './Home.css';\r\nexport default class Registration extends React.Component {\r\n\r\n // React components are simple functions that take in props and state, and render HTML\r\n render() {\r\n return (\r\n <div className=\"holder\">\r\n <h2>Contact Us</h2>\r\n <br></br>\r\n <Row>\r\n <Col>\r\n\r\n\r\n <h3>Telephone</h3>\r\n <a href=\"tel:617-477-4257\">617-477-4257</a>\r\n\r\n </Col>\r\n <Col>\r\n\r\n\r\n <h3>Text Line Only</h3>\r\n <a href=\"sms:617-564-3803\">617-564-3803</a>\r\n\r\n </Col>\r\n <Col>\r\n <h3>Email</h3>\r\n <a href=\"mailto:info@parkwaydrivingschool.com\">info@parkwaydrivingschool.com</a>\r\n\r\n </Col>\r\n </Row>\r\n <br></br>\r\n <Row>\r\n <Col>\r\n\r\n <h3>Office Hours</h3>\r\n <p>Mon - Thu 10-4</p>\r\n\r\n </Col>\r\n <Col>\r\n <h3>Driving Hours</h3>\r\n <p>Mon - Fri 9-8</p>\r\n <p>Sat - Sun 9-4</p>\r\n\r\n\r\n </Col>\r\n </Row>\r\n\r\n\r\n\r\n\r\n </div >\r\n\r\n );\r\n }\r\n}\r\n","import { API, Auth } from \"aws-amplify\";\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Accordion, Alert, Button, Card, Col, Form, Modal, Row, Table, InputGroup } from 'react-bootstrap';\r\nimport TimePicker from 'react-bootstrap-time-picker';\r\nimport DayPicker from 'react-day-picker';\r\nimport Select from 'react-select';\r\nimport AsyncSelect from 'react-select/async';\r\nimport AsyncCreatableSelect from 'react-select/async-creatable';\r\nimport { CSVLink } from 'react-csv';\r\nimport { Locations } from \"../components/contstants/Locations\";\r\n\r\nimport { timeFromInt, timeToInt } from 'time-number';\r\nimport './Appointment.css';\r\n\r\n\r\nvar headers = [\r\n { label: 'First Name', key: 'fName' },\r\n { label: 'Middle Name', key: 'mName' },\r\n { label: 'Last Name', key: 'lName' },\r\n { label: 'DLN', key: 'permitNo' },\r\n { label: 'Date Of Birth (MM/DD/YYYY)', key: 'dob' },\r\n { label: 'Student Email', key: 'emailAddress' },\r\n { label: 'Total Program Cost', key: 'totalProgram' },\r\n { label: 'Payment Type', key: 'paymentType' },\r\n { label: 'Initial Payment', key: 'initalPayment' }\r\n];\r\n\r\nexport default class Registration extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n addModalErrors: {},\r\n\r\n activeKey: 'selectDays',\r\n selectedDay: \"\",\r\n fetchedStudents: false,\r\n APIDateStudentResults: [],\r\n filteredAPIDateStudentResults: [],\r\n selectedLocation: \"\",\r\n selectedWeekday: \"\",\r\n roadTestMembers: [],\r\n unslotedMembers: [],\r\n selectedDaysRange: \"\",\r\n\r\n addModalValidated: false,\r\n\r\n unsavedManuallyAddedStudents: [],\r\n\r\n selectedTimeSlot: { \"label\": \"10 Minutes\", \"value\": 10 },\r\n slotTime: 10,\r\n startTime: \"43200\",\r\n endTime: \"64800\",\r\n\r\n dateOptions: [],\r\n selectedDate: \"\",\r\n slots: [],\r\n selectedDays: [],\r\n selectedRealDays: [],\r\n\r\n dayOfExam: '',\r\n preSlottedMembers: [],\r\n\r\n fetchingStudents: false,\r\n showAPIResponse: false,\r\n refreshing: false,\r\n emailSendDateData: \"\",\r\n //For use in modals\r\n showModal: false,\r\n //modalView: \"\",\r\n modalView: \"add\",\r\n //For lesson modal\r\n showManageLessons: false,\r\n showAddLessons: false,\r\n selectedLessonStudent: {},\r\n selectedLessonValue: {},\r\n selectedLessonLocation: \"\",\r\n newLessonsToAdd: [],\r\n selectedLessonStudentIndex: 0,\r\n //For if add UserModal is used\r\n firstName: \"\",\r\n lastName: \"\",\r\n dateOfBirth: \"\",\r\n permitNumber: \"\",\r\n permitIssueDate: \"\",\r\n email: \"\",\r\n phoneNumber: \"\",\r\n roadTestPackageOption: \"\",\r\n price: \"\",\r\n avaliableOptions: [],\r\n drivingSchool: \"\",\r\n location: \"\",\r\n addCompletionCertificate: false,\r\n emailsToCopy: \"\",\r\n disabledButtons: [],\r\n\r\n selectedStudent: 0,\r\n newCopyMoveDate: {},\r\n newEditMoveDate: {},\r\n moveError: \"\",\r\n copyError: \"\",\r\n deleteError: \"\",\r\n\r\n rawRoadTestLessons: [],\r\n\r\n addLessonValidated: false,\r\n CCFirstName: \"\",\r\n CCLastName: \"\",\r\n CCExpiration: \"\",\r\n CCCode: \"\",\r\n CCAddress: \"\",\r\n CCCity: \"\",\r\n CCState: \"\",\r\n CCZip: \"\",\r\n CCCountry: \"USA\",\r\n CCNumber: \"\",\r\n CCLessonsWanted: 1,\r\n CCLessonsPrice: 0,\r\n CCErrors: \"\",\r\n skipExtraLessonsPayment: false,\r\n\r\n locations: Locations,\r\n unslotedGroupTimes: [],\r\n timesToStudentMap: new Map()\r\n };\r\n this.handleDayClick = this.handleDayClick.bind(this);\r\n this.handleFirstNextButton = this.handleFirstNextButton.bind(this);\r\n this.handleDayOfWeekButton = this.handleDayOfWeekButton.bind(this);\r\n this.handleModalChange = this.handleModalChange.bind(this);\r\n this.onRadioPackageChange = this.onRadioPackageChange.bind(this);\r\n\r\n this.handleStartTimeChange = this.handleStartTimeChange.bind(this);\r\n this.handleEndtimeTimeChange = this.handleEndtimeTimeChange.bind(this);\r\n\r\n this.addNewStudents = this.addNewStudents.bind(this);\r\n this.handleMoveStudent = this.handleMoveStudent.bind(this);\r\n this.handleCopyStudent = this.handleCopyStudent.bind(this);\r\n this.handleDeleteStudent = this.handleDeleteStudent.bind(this);\r\n\r\n this.handleAddNewUser = this.handleAddNewUser.bind(this);\r\n this.handleAddNewLessons = this.handleAddNewLessons.bind(this);\r\n this.sortSlots = this.sortSlots.bind(this);\r\n this.handleSlotSave = this.handleSlotSave.bind(this);\r\n this.handleUnslottedTimeSave = this.handleUnslottedTimeSave.bind(this);\r\n\r\n this.checkEmailDate = this.checkEmailDate.bind(this);\r\n this.handleSetLocationAndGetData = this.handleSetLocationAndGetData.bind(this);\r\n this.processLocationSlots = this.processLocationSlots.bind(this);\r\n this.renderLessonState = this.renderLessonState.bind(this);\r\n this.renderUnslottedStudentTimes = this.renderUnslottedStudentTimes.bind(this);\r\n\r\n this.handleLessonDateChange = this.handleLessonDateChange.bind(this);\r\n this.deleteNewLesson = this.deleteNewLesson.bind(this);\r\n this.deleteOldLesson = this.deleteOldLesson.bind(this);\r\n\r\n this.addAdditionalLessons = this.addAdditionalLessons.bind(this);\r\n\r\n this.loadRoadTestLessonDates = this.loadRoadTestLessonDates.bind(this);\r\n this.handleNewMoveDateChoice = this.handleNewMoveDateChoice.bind(this);\r\n this.handleNewCopyDateChoice = this.handleNewCopyDateChoice.bind(this);\r\n this.sendInitalEmailBulk = this.sendInitalEmailBulk.bind(this);\r\n this.sendRoadTestPassedEmailsBulk = this.sendRoadTestPassedEmailsBulk.bind(this);\r\n this.sendRoadTestFailedEmailsBulk = this.sendRoadTestFailedEmailsBulk.bind(this);\r\n this.sendRoadTestSlotEmailsBulk = this.sendRoadTestSlotEmailsBulk.bind(this);\r\n this.sendRoadTestTimeEmailsBulk = this.sendRoadTestTimeEmailsBulk.bind(this);\r\n this.subtractUnslottedTime = this.subtractUnslottedTime.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const script = document.createElement(\"script\");\r\n //SANDBOX\r\n //script.src = \"https://jstest.authorize.net/v1/Accept.js\";\r\n //PROD\r\n script.src = \"https://js.authorize.net/v1/Accept.js\";\r\n script.async = true;\r\n document.body.appendChild(script);\r\n\r\n\r\n const that = this;\r\n //We need to grab stuff\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestDates.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n data = JSON.parse(data);\r\n that.setState({ rawRoadTestLessons: data });\r\n });\r\n\r\n\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestPackages.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n that.setState({ avaliableOptions: data });\r\n });\r\n\r\n\r\n }\r\n\r\n async handleDayClick(date, { selected }) {\r\n let dayOfWeek = date.getDay();\r\n let selectedDays = [];\r\n let selectedRealDays = [];\r\n if (dayOfWeek === 0) { //They picked a Sunday, but we really want the start of the weekend\r\n selectedDays.push(moment(date).subtract(1, 'd').toDate());\r\n selectedDays.push(moment(date).toDate());\r\n }\r\n else if (dayOfWeek === 6) { //They picked a Saturday, no changes needed\r\n selectedDays.push(moment(date).toDate());\r\n selectedDays.push(moment(date).add(1, 'd').toDate());\r\n }\r\n else {\r\n selectedRealDays.push(moment(date).toDate());\r\n selectedDays.push(moment(date).toDate());\r\n }\r\n selectedRealDays = selectedRealDays.concat(selectedDays);\r\n\r\n this.setState({ selectedRealDays, selectedDays, selectedLocation: \"\", selectedWeekday: \"\" }, () => this.processLocationSlots());\r\n }\r\n\r\n processLocationSlots = async () => {\r\n let selectedDaysRange = \"\";\r\n\r\n let selectedDay = this.state.selectedDays[0];\r\n var location = this.state.selectedLocation;\r\n let APIDateStudentResults = await this.handleGetSlotsbyDay(selectedDay);\r\n let filteredData = [];\r\n let slots = [];\r\n var preSlottedFolks = [];\r\n if (location.length === 0) {\r\n var selectedLocationSet = new Set(APIDateStudentResults.filter(x => x.location).map(x => x.location));\r\n var selectedDateLocations = [...selectedLocationSet];\r\n if (selectedDateLocations.length === 1) {\r\n location = selectedDateLocations[0];\r\n }\r\n }\r\n if (location.length > 0) {\r\n filteredData = APIDateStudentResults.filter(x => x.location === location);\r\n }\r\n\r\n if (selectedDay.getDay() === 6) {\r\n selectedDaysRange += moment(selectedDay).format('LL');\r\n if (filteredData.length > 0) {\r\n var selectedWeekenedDates = new Set(filteredData.filter(x => x.weekendDate).map(x => x.weekendDate));\r\n\r\n selectedWeekenedDates = [...selectedWeekenedDates];\r\n if (selectedWeekenedDates.length > 0) {//Only one date, let's assume it's that one and move on.\r\n var selectedWeekday = selectedWeekenedDates[0];\r\n var weekendArray = [\"Saturday\", \"Sunday\"];\r\n if (weekendArray.includes(selectedWeekday)) {\r\n preSlottedFolks = filteredData.filter(x => x.slot);\r\n if (preSlottedFolks.length > 0) {\r\n slots = preSlottedFolks.map(function (x) { return { slotName: x.slot, person: x.fName + \" \" + x.lName, value: x }; });\r\n this.setState({ dayOfExam: this.state.selectedDays[weekendArray.indexOf(selectedWeekday)], selectedWeekday });\r\n }\r\n } else {\r\n weekendArray = [\"Saturday\", \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"];\r\n preSlottedFolks = filteredData.filter(x => x.slot);\r\n if (preSlottedFolks.length > 0) {\r\n slots = preSlottedFolks.map(function (x) { return { slotName: x.slot, person: x.fName + \" \" + x.lName, value: x }; });\r\n this.setState({ dayOfExam: moment(selectedDay).add(weekendArray.indexOf(selectedWeekday), \"days\"), selectedWeekday });\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.setState({ dayOfExam: selectedDay, selectedWeekday: \"\" });\r\n }\r\n } else {\r\n selectedDaysRange = moment(selectedDay).format('ddd, LL');\r\n preSlottedFolks = filteredData.filter(x => x.slot);\r\n if (filteredData.length > 0) {\r\n var selectedWeekenedDates = new Set(filteredData.filter(x => x.weekendDate).map(x => x.weekendDate));\r\n\r\n selectedWeekenedDates = [...selectedWeekenedDates];\r\n if (selectedWeekenedDates.length > 0) {//Only one date, let's assume it's that one and move on.\r\n var selectedWeekday = selectedWeekenedDates[0];\r\n\r\n var weekendArray = [\"Saturday\", \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"];\r\n preSlottedFolks = filteredData.filter(x => x.slot);\r\n console.log(selectedWeekday);\r\n\r\n if (preSlottedFolks.length > 0) {\r\n slots = preSlottedFolks.map(function (x) { return { slotName: x.slot, person: x.fName + \" \" + x.lName, value: x }; });\r\n this.setState({ dayOfExam: moment(selectedDay).subtract(2, \"day\").add(weekendArray.indexOf(selectedWeekday), \"days\"), selectedWeekday });\r\n }\r\n } else {\r\n //No date was selected but there can only be one date.\r\n console.log(moment(selectedDay).format('dddd'));\r\n this.setState({ dayOfExam: selectedDay, selectedWeekday: moment(selectedDay).format('dddd'), selectedDaysRange, dayOfExam: selectedDay });\r\n this.setState({ selectedTimeSlot: { \"label\": \"60 Minutes\", \"value\": 60 }, slotTime: 60 });\r\n var unslotTimes = filteredData.filter(x => x.location === location).filter(x => !x.slot).filter(x => x.hasOwnProperty(\"unslotTime\")).map(x => ({ \"slotName\": x.unslotTime }));\r\n unslotTimes = [...new Set(unslotTimes)];\r\n this.setState({ unslotedGroupTimes: this.sortSlots(unslotTimes, 'slotName') });\r\n }\r\n }\r\n\r\n if (preSlottedFolks.length > 0) {\r\n slots = preSlottedFolks.map(function (x) { return { slotName: x.slot, person: x.fName + \" \" + x.lName, value: x }; });\r\n }\r\n }\r\n //We need to figure out if there is an already selected Weekday from all of the students that were fetched.\r\n\r\n //The selected date is the first entry of the selectedDays\r\n slots = this.sortSlots(slots, 'slotName');\r\n this.setState({\r\n selectedDay,\r\n APIDateStudentResults,\r\n selectedDaysRange,\r\n unsavedManuallyAddedStudents: [],\r\n selectedLocation: location,\r\n filteredAPIDateStudentResults: filteredData,\r\n unslotedMembers: filteredData.filter(x => x.location === location).filter(x => !x.slot),\r\n slots\r\n\r\n });\r\n };\r\n\r\n handleGetSlotsbyDay = async (day) => {\r\n let dateNeeded = moment(day).format(\"YYYY-MM-DD\");\r\n this.setState({ loadingDay: true });\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: { \"date\": dateNeeded },\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken,\r\n }\r\n };\r\n try {\r\n let data = await API.post(\"APIGateway\", \"/v2getStudentsByFilter\", options);\r\n that.setState({ loadingDay: false, fetchedStudents: true });\r\n return data;\r\n\r\n }\r\n catch (e) {\r\n console.log(e);\r\n return ([]);\r\n }\r\n };\r\n\r\n handleDayOfWeekButton(event) {\r\n var APIDateStudentResults = this.state.APIDateStudentResults;\r\n var weekArray = [\"sat\", \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\"];\r\n var weekendArray = [\"sat\", \"sun\"];\r\n var preSlottedFolks = this.state.APIDateStudentResults.filter(x => x.slot);\r\n if (preSlottedFolks.length > 0) {\r\n var slots = preSlottedFolks.map(function (x) { return { slotName: x.slot, person: x.fName + \" \" + x.lName, value: x }; });\r\n this.setState({ slots: this.sortSlots(slots, 'slotName') });\r\n }\r\n let dayOfWeek = this.state.selectedDay.getDay();\r\n console.log(event.target.id);\r\n var dayOfExam = \"\";\r\n var selectedWeekday = \"\";\r\n\r\n if (dayOfWeek === 6) {\r\n let daysToAdd = weekArray.indexOf(event.target.id);\r\n dayOfExam = moment(this.state.selectedDays[0]).add(daysToAdd, \"days\");\r\n selectedWeekday = moment(dayOfExam).format('dddd');\r\n\r\n this.setState({ dayOfExam, activeKey: \"slotStudents\", selectedWeekday });\r\n }\r\n else {\r\n dayOfExam = this.state.selectedRealDays[weekArray.indexOf(event.target.id)];\r\n selectedWeekday = moment(dayOfExam).format('dddd');\r\n this.setState({ dayOfExam, activeKey: \"slotStudents\", selectedWeekday });\r\n }\r\n this.setState({ unslotedMembers: APIDateStudentResults.filter(x => !x.slot), dataDirty: true });\r\n return;\r\n }\r\n\r\n handleFirstNextButton() {\r\n if (this.state.selectedWeekday.length === 0) {\r\n var APIDateStudentResults = this.state.APIDateStudentResults;\r\n var weekArray = [\"sat\", \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\"];\r\n var weekendArray = [\"sat\", \"sun\"];\r\n var preSlottedFolks = this.state.APIDateStudentResults.filter(x => x.slot);\r\n if (preSlottedFolks.length > 0) {\r\n var slots = preSlottedFolks.map(function (x) { return { slotName: x.slot, person: x.fName + \" \" + x.lName, value: x }; });\r\n this.setState({ slots: this.sortSlots(slots, 'slotName') });\r\n }\r\n if (typeof this.state.selectedDay.getDay == \"undefined\") {\r\n return;\r\n }\r\n let dayOfWeek = this.state.selectedDay.getDay();\r\n var dayOfExam = \"\";\r\n var selectedWeekday = \"\";\r\n\r\n if (dayOfWeek === 6) {\r\n let daysToAdd = weekArray.indexOf(\"sat\");\r\n dayOfExam = moment(this.state.selectedDays[0]).add(daysToAdd, \"days\");\r\n selectedWeekday = moment(dayOfExam).format('dddd');\r\n\r\n this.setState({ dayOfExam, activeKey: \"slotStudents\", selectedWeekday });\r\n }\r\n else {\r\n dayOfExam = this.state.selectedRealDays[weekArray.indexOf(\"sat\")];\r\n selectedWeekday = moment(dayOfExam).format('dddd');\r\n this.setState({ dayOfExam, activeKey: \"slotStudents\", selectedWeekday });\r\n }\r\n this.setState({ unslotedMembers: APIDateStudentResults.filter(x => !x.slot), dataDirty: true });\r\n }\r\n this.setState({ activeKey: \"slotStudents\" });\r\n }\r\n\r\n\r\n handleFilterDownload = async event => {\r\n this.setState({ loading: true });\r\n\r\n let data = [];\r\n\r\n for (let index = 0; index < this.state.APIDateStudentResults.length; index++) {\r\n var student = this.state.APIDateStudentResults[index];\r\n console.log(student);\r\n student.totalProgram = student.fullPricing.map(x => x.price).reduce((a, b) => a + b, 0);\r\n student.paymentType = \"Credit Card\";\r\n student.initalPayment = student.totalProgram;\r\n\r\n data.push(student);\r\n }\r\n\r\n\r\n\r\n\r\n this.setState({ filteredData: data, renderDownload: true }, () => {\r\n this.filterCSVLink.link.click();\r\n this.setState({ loading: false });\r\n });\r\n };\r\n\r\n //Modal Functions\r\n handleModalInputChange = e => {\r\n const { name, value } = e.target;\r\n this.setState({\r\n [name]: value\r\n });\r\n };\r\n\r\n handleModalChange(state, view) {\r\n this.setState({ showModal: state, modalView: view });\r\n }\r\n\r\n handleLessonModalChange(state, index) {\r\n if (state) {\r\n let selectedLessonStudent = this.state.filteredAPIDateStudentResults[index];\r\n let selectedLessonStudentIndex = index;\r\n this.setState({ selectedLessonStudent, newLessonsToAdd: [], selectedLessonValue: {}, selectedLessonStudentIndex });\r\n\r\n }\r\n this.setState({ showManageLessons: state });\r\n }\r\n\r\n onRadioPackageChange(e) {\r\n this.setState({\r\n roadTestPackageOption: e.currentTarget.id\r\n });\r\n }\r\n\r\n handleAddNewUser(event) {\r\n const form = event.currentTarget;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n this.setState({ addModalValidated: true });\r\n if (form.checkValidity() === false) {\r\n return;\r\n }\r\n\r\n var fullPricing = [];\r\n\r\n var packageChoice = this.state.avaliableOptions.filter(x => x.package === this.state.roadTestPackageOption)[0];\r\n fullPricing.push(\r\n {\r\n \"name\": packageChoice.package,\r\n \"price\": parseInt(packageChoice.price)\r\n }\r\n );\r\n\r\n if (this.state.addCompletionCertificate) {\r\n fullPricing.push(\r\n {\r\n \"name\": \"Completion Certificate\",\r\n \"price\": 20\r\n }\r\n );\r\n }\r\n\r\n\r\n var person = {\r\n date: moment(this.state.selectedDays[0]).format('YYYY-MM-DD'),\r\n timestamp: new Date(Date.now()).toISOString(),\r\n transactionID: \"Manual Input\",\r\n paymentStatus: \"Manual Input\",\r\n\r\n fName: this.state.firstName,\r\n lName: this.state.lastName,\r\n\r\n dob: moment(this.state.dateOfBirth).format('YYYY-MM-DD'),\r\n permitNo: this.state.permitNumber,\r\n permitDate: moment(this.state.permitIssueDate).format('YYYY-MM-DD'),\r\n phone: this.state.phoneNumber,\r\n\r\n weekendDate: this.state.selectedWeekday,\r\n selectedPackage: this.state.roadTestPackageOption,\r\n fullPricing: fullPricing,\r\n\r\n emailAddress: this.state.email,\r\n emailInitalState: \"Not Sent\",\r\n emailRoadTestSlotState: \"Not Sent\",\r\n emailRoadTestSlotConfirmed: \"Email Not Sent\",\r\n emailRoadTestPassedState: \"Not Sent\",\r\n drivingSchool: this.state.drivingSchool || \"Unknown\",\r\n\r\n location: this.state.selectedLocation,\r\n certPaymentStatus: this.state.addCompletionCertificate,\r\n\r\n bookedLessons: []\r\n };\r\n\r\n\r\n Object.keys(person).forEach((key) => (person[key] == null || person[key].length === 0) && delete person[key]);\r\n\r\n\r\n var item = { \"mode\": \"addNewStudentNoSlot\", \"student\": person };\r\n var unsavedManuallyAddedStudents = this.state.unsavedManuallyAddedStudents;\r\n unsavedManuallyAddedStudents.push(item);\r\n this.setState({ unsavedManuallyAddedStudents });\r\n\r\n this.setState({\r\n firstName: \"\",\r\n lastName: \"\",\r\n dateOfBirth: \"\",\r\n permitNumber: \"\",\r\n permitIssueDate: \"\",\r\n email: \"\",\r\n phoneNumber: \"\",\r\n roadTestPackageOption: \"\",\r\n drivingSchool: \"\",\r\n dataDirty: true,\r\n certPaymentStatus: false,\r\n addModalValidated: false\r\n });\r\n }\r\n\r\n\r\n subtractUnslottedTime = (selectedUnslottedTimeslotName) => {\r\n var unslotedGroupTimes = this.state.unslotedGroupTimes;\r\n console.log(unslotedGroupTimes);\r\n unslotedGroupTimes = unslotedGroupTimes.filter(x => x.slotName !== selectedUnslottedTimeslotName);\r\n\r\n this.setState({ unslotedGroupTimes });\r\n };\r\n\r\n handleAddNewLessons(event) {\r\n const form = event.currentTarget;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n this.setState({ addLessonValidated: true });\r\n if (form.checkValidity() === false) {\r\n return;\r\n }\r\n this.setState({ loading: true });\r\n\r\n\r\n\r\n if (this.state.skipExtraLessonsPayment) {\r\n this.addAdditionalLessons();\r\n return;\r\n }\r\n\r\n //PROD\r\n var authData = {\r\n clientKey: \"62CpRk5LpV9a3ZVd3r9ngCk3Uw3Le4ZDAJ8fL8E8n4xMQ653P2hWtGV89HbC22eU\",\r\n apiLoginID: \"2w2YM4z9p\"\r\n };\r\n\r\n var cardData = {\r\n cardNumber: this.state.CCNumber.replace(/\\s/g, ''),\r\n month: this.state.CCExpiration.substring(0, 2),\r\n year: this.state.CCExpiration.substring(this.state.CCExpiration.length - 2, this.state.CCExpiration.length),\r\n cardCode: this.state.CCCode,\r\n zip: this.state.CCZip,\r\n fullName: this.state.CCFirstName + \" \" + this.state.CCLastName,\r\n };\r\n\r\n var secureData = {\r\n authData: authData,\r\n cardData: cardData\r\n };\r\n try {\r\n window.Accept.dispatchData(secureData, this.responseHandler);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n responseHandler = async (response) => {\r\n try {\r\n if (response.messages.resultCode === \"Error\") {\r\n var i = 0;\r\n while (i < response.messages.message.length) {\r\n console.log(\r\n response.messages.message[i].code + \": \" +\r\n response.messages.message[i].text\r\n );\r\n i = i + 1;\r\n }\r\n }\r\n else {\r\n //The Authorize NET request was successful!\r\n var lessonName = this.state.CCLessonsWanted;\r\n lessonName += this.state.CCLessonsWanted == 1 ? \" Extra Lesson\" : \" Extra Lessons\";\r\n var student = this.state.selectedLessonStudent;\r\n var newLesson = { \"name\": lessonName, \"price\": parseInt(this.state.CCLessonsPrice) };\r\n if (student.hasOwnProperty(\"fullPricing\")) {\r\n var fullPricing = student.fullPricing;\r\n fullPricing.push(newLesson);\r\n student.fullPricing = fullPricing;\r\n } else {\r\n student.fullPricing = [newLesson];\r\n }\r\n this.setState({ CCErrors: \"\", loading: true });\r\n const self = this;\r\n let nonce = response.opaqueData.dataValue;\r\n let body = {\r\n nonce: nonce,\r\n newLesson: newLesson,\r\n CCFirstName: this.state.CCFirstName,\r\n CCLastName: this.state.CCLastName,\r\n CCAddress: this.state.CCAddress,\r\n CCCity: this.state.CCCity,\r\n CCState: this.state.CCState,\r\n CCZip: this.state.CCZip,\r\n CCCountry: this.state.CCCountry,\r\n student: student,\r\n lessonName: lessonName,\r\n lessonPrice: this.state.CCLessonsPrice,\r\n };\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: body,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/addNewRoadLessonsPayment\", options)\r\n .then(function (data) {\r\n if (data.type === 'success') {\r\n self.setState({\r\n showAddLessons: false,\r\n CCFirstName: \"\",\r\n CCLastName: \"\",\r\n CCExpiration: \"\",\r\n CCCode: \"\",\r\n CCAddress: \"\",\r\n CCCity: \"\",\r\n CCState: \"\",\r\n CCZip: \"\",\r\n CCCountry: \"\",\r\n CCNumber: \"\",\r\n CCLessonsWanted: 0,\r\n CCLessonsPrice: 0,\r\n CCErrors: \"\",\r\n loading: false,\r\n addLessonValidated: false,\r\n skipExtraLessonsPayment: false\r\n });\r\n }\r\n else {\r\n if ([\"Transaction Failed with error code 2 : This transaction has been declined.\", \"Transaction Failed with error code 65 : This transaction has been declined.\"].includes(data.message)) {\r\n console.log(\"Errors: \" + \"There was an issue processing your card. Please double check your credit card entries.\");\r\n\r\n }\r\n else {\r\n console.log(\"Errors: \" + \"There was an issue processing your card. Please double check your credit card entries.\" + data.message);\r\n\r\n }\r\n }\r\n }\r\n ).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n self.setState({ CCErrors: error.response.data.message });\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n self.setState({ loading: false });\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n\r\n async addNewStudents() {\r\n let newStudents = this.state.unsavedManuallyAddedStudents;\r\n this.setState({ loading: true });\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: newStudents,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n that.setState({ unsavedManuallyAddedStudents: [], loading: false });\r\n that.refreshStatus(that.state.activeKey);\r\n }\r\n else {\r\n //that.setState({ APIDateStudentResults: [] })\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n that.setState({ loading: false });\r\n });\r\n }\r\n\r\n async handleMoveStudent() {\r\n this.setState({ loading: true, moveError: \"\" });\r\n\r\n let student = this.state.APIDateStudentResults[this.state.selectedStudent];\r\n\r\n if (this.state.newEditMoveDate.label === student.date) {\r\n this.setState({ moveError: \"The student is already at this date.\", loading: false });\r\n return;\r\n }\r\n if (!moment(this.state.newEditMoveDate.label, 'YYYY-MM-DD', true).isValid()) {\r\n this.setState({ moveError: \"Invalid Date Entry.\", loading: false });\r\n return;\r\n }\r\n //date is being changed, so we need to update the email data to clear out any potential emails sent.\r\n if (student.emailInitalState !== \"Not Sent\") {\r\n student.emailInitalState = \"Not Sent\";\r\n }\r\n if (student.emailRoadTestPassedState !== \"Not Sent\") {\r\n student.emailRoadTestPassedState = \"Not Sent\";\r\n }\r\n if (student.emailRoadTestSlotConfirmed !== \"Email Not Sent\") {\r\n student.emailRoadTestSlotConfirmed = \"Email Not Sent\";\r\n }\r\n if (student.emailRoadTestSlotState !== \"Not Sent\") {\r\n student.emailRoadTestSlotState = \"Not Sent\";\r\n }\r\n if (student.hasOwnProperty(\"validateToken\")) {\r\n delete student.validateToken;\r\n }\r\n if (student.hasOwnProperty(\"slot\")) {\r\n delete student.slot;\r\n }\r\n if (student.hasOwnProperty(\"weekendDate\")) {\r\n delete student.weekendDate;\r\n }\r\n\r\n var item = { \"mode\": \"moveStudent\", \"student\": student, \"newDate\": this.state.newEditMoveDate.label, \"oldDate\": student.date };\r\n delete student.date;\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [item]\r\n ,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n\r\n //Call function that updates students\r\n that.refreshStatus(that.state.activeKey);\r\n that.setState({ loading: false, showModal: false, modalView: \"\", newEditMoveDate: {} });\r\n //that.setState({ dataDirty: false, showMoveModal: false, selectedStudent: 0, selectedNewDate: that.state.possibleMoveDates[0], loading: false })\r\n }\r\n else {\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n\r\n }\r\n async handleCopyStudent() {\r\n this.setState({ loading: true, copyError: \"\" });\r\n\r\n let student = this.state.APIDateStudentResults[this.state.selectedStudent];\r\n console.log(student);\r\n\r\n if (this.state.newCopyMoveDate.label === student.date) {\r\n this.setState({ copyError: \"The student is already at this date.\", loading: false });\r\n return;\r\n }\r\n if (!moment(this.state.newCopyMoveDate.label, 'YYYY-MM-DD', true).isValid()) {\r\n this.setState({ copyError: \"Invalid Date Entry.\", loading: false });\r\n return;\r\n }\r\n else {\r\n let dow = moment(this.state.newCopyMoveDate.label, 'YYYY-MM-DD', true).day();\r\n if (!(dow === 6 || dow === 1)) {\r\n this.setState({ copyError: \"Date was not a Saturday, or Monday.\", loading: false });\r\n return;\r\n }\r\n }\r\n\r\n var item = { \"mode\": \"copyStudent\", \"student\": student, \"newDate\": this.state.newCopyMoveDate.label, \"oldDate\": student.date };\r\n delete student.date;\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [item]\r\n ,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n\r\n //Call function that updates students\r\n that.refreshStatus(that.state.activeKey);\r\n that.setState({ loading: false, showModal: false, modalView: \"\", newCopyMoveDate: {} });\r\n }\r\n else {\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n\r\n }\r\n async handleDeleteStudent() {\r\n this.setState({ loading: true, moveError: \"\" });\r\n\r\n let student = this.state.APIDateStudentResults[this.state.selectedStudent];\r\n\r\n var item = { \"mode\": \"deleteStudent\", \"student\": student };\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [item]\r\n ,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n that.refreshStatus(that.state.activeKey);\r\n that.setState({ loading: false, showModal: false, modalView: \"\" });\r\n }\r\n else {\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n\r\n }\r\n\r\n handleSlotDurationChange(data) {\r\n this.setState({ slotTime: parseInt(data.value), selectedTimeSlot: data });\r\n }\r\n\r\n\r\n handleNewMoveDateChoice(data) {\r\n this.setState({ newEditMoveDate: data });\r\n }\r\n\r\n handleNewCopyDateChoice(data) {\r\n this.setState({ newCopyMoveDate: data });\r\n }\r\n\r\n uuidv4 = () => {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n };\r\n\r\n copyStudentEmailsToClipboard = () => {\r\n var textField = document.createElement('textarea');\r\n textField.innerText = this.state.slots.map(x => x.value.emailAddress).join(\",\");\r\n document.body.appendChild(textField);\r\n textField.select();\r\n document.execCommand('copy');\r\n textField.remove();\r\n };\r\n\r\n\r\n copyParentEmailsToClipboard = () => {\r\n var textField = document.createElement('textarea');\r\n textField.innerText = this.state.slots.filter(x => x.value.hasOwnProperty(\"parentEmailAddress\")).map(x => x.value.parentEmailAddress).join(\",\");\r\n document.body.appendChild(textField);\r\n textField.select();\r\n document.execCommand('copy');\r\n textField.remove();\r\n };\r\n\r\n copyAllPhoneNumbersToClipboard = () => {\r\n var textField = document.createElement('textarea');\r\n textField.innerText = this.state.slots.filter(x => x.value.hasOwnProperty(\"phone\")).map(x => x.value.phone).join(\",\");\r\n document.body.appendChild(textField);\r\n textField.select();\r\n document.execCommand('copy');\r\n textField.remove();\r\n };\r\n\r\n sortSlots(array, key) {\r\n if (array.length === 0) {\r\n return [];\r\n }\r\n return array.sort(function (a, b) {\r\n var x = timeToInt(a[key]); var y = timeToInt(b[key]);\r\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\r\n });\r\n }\r\n\r\n handleStudentPick = (selectedOption, index) => {\r\n var localSlots = this.state.slots;\r\n var personValue = localSlots[index].value;\r\n localSlots[index].person = selectedOption.label;\r\n localSlots[index].value = selectedOption.value;\r\n var unslotedMembers = this.state.unslotedMembers.filter(x => x.timestamp !== selectedOption.value.timestamp);\r\n if (Object.keys(personValue).length > 0 && personValue.constructor === Object) {\r\n unslotedMembers.push(personValue);\r\n }\r\n this.setState({ slots: localSlots, unslotedMembers: unslotedMembers });\r\n };\r\n\r\n\r\n handleUnslottedStudentPick = (selectedOptions, time, index) => {\r\n console.log(selectedOptions);\r\n var localUnslotedMembers = this.state.unslotedMembers;\r\n var finalizedSlots = [];\r\n\r\n if (selectedOptions == null || selectedOptions.length == 0) {\r\n console.log(time);\r\n var selectedStudentsWithTimestampSet = localUnslotedMembers.filter(x => x.hasOwnProperty(\"unslotTime\") && x.unslotTime == time).map(x => x.timestamp);\r\n console.log(selectedStudentsWithTimestampSet);\r\n for (let i = 0; i < localUnslotedMembers.length; i++) {\r\n var student = localUnslotedMembers[i];\r\n if (selectedStudentsWithTimestampSet.includes(student.timestamp)) {\r\n delete student.unslotTime;\r\n }\r\n finalizedSlots.push(student);\r\n }\r\n\r\n } else {\r\n var selectedStudentsWithoutTimestampSet = selectedOptions.filter(x => !x.hasOwnProperty(\"unslotTime\")).map(x => x.value.timestamp);\r\n console.log(selectedStudentsWithoutTimestampSet);\r\n for (let i = 0; i < localUnslotedMembers.length; i++) {\r\n var student = localUnslotedMembers[i];\r\n if (selectedStudentsWithoutTimestampSet.includes(student.timestamp)) {\r\n student.unslotTime = time;\r\n }\r\n finalizedSlots.push(student);\r\n }\r\n }\r\n\r\n\r\n this.setState({ unslotedMembers: finalizedSlots });\r\n };\r\n\r\n\r\n handleErrors = (response) => {\r\n if (!response.ok) {\r\n console.log(response.statusText);\r\n }\r\n return response;\r\n };\r\n\r\n async sendEmail(params) {\r\n const that = this;\r\n that.setState({ loading: true });\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: params,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/sendemail\", options)\r\n .then(function (data) {\r\n that.refreshStatus(that.state.activeKey);\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 400) {\r\n //this.setState({ EmailError: \"There was an error sending some emails.\", refreshStatus: \"\" })\r\n //that.setState({ APIDateStudentResults: [], disabledButtons: that.state.disabledButtons.filter(x => x !== selectedIndex) })\r\n }\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n\r\n async sendInitalEmailBulk(emailRecipient) { //\"aka Thanks for signing up\"\r\n let emailRecipients = emailRecipient;\r\n if (emailRecipient.length === 0) {\r\n emailRecipients = this.state.filteredAPIDateStudentResults.filter(x => (Object.keys(x).length > 0 && x.constructor === Object)).filter(x => x.emailInitalState === \"Not Sent\");\r\n }\r\n var dynamoDBDetails = [];\r\n let defaultTemplate = JSON.stringify(\r\n {\r\n \"firstName\": \"tempFirst\",\r\n \"lastName\": \"tempLast\",\r\n \"package\": \"tempPackage\",\r\n \"weekendStart\": \"tempStartDate\",\r\n \"extraText\": \"\",\r\n \"address\": \"\",\r\n \"extraLocationText\": \"Road Test Location\"\r\n }\r\n );\r\n var params = {\r\n Source: 'Parkway Driving School<info@parkwaydrivingschool.com>',\r\n Template: 'confirmOrder2',\r\n DefaultTemplateData: defaultTemplate,\r\n ReplyToAddresses: [\r\n 'info@parkwaydrivingschool.com',\r\n ],\r\n Destinations: []\r\n };\r\n\r\n let lengthOfSelectedDays = this.state.selectedRealDays.length;\r\n let weekType = \"Weekend\";\r\n if (lengthOfSelectedDays === 5) {\r\n weekType = \"Weekday\";\r\n }\r\n for (let index = 0; index < emailRecipients.length; index++) {\r\n const formData = emailRecipients[index];\r\n if (formData.location.includes(\"RMV Site\")) {\r\n weekType = \"Weekday\";\r\n }\r\n\r\n var lessonText = \"\";\r\n var extraLocationText = \"Road Test Location:\";\r\n\r\n if (formData.hasOwnProperty(\"scheduledLessons\") && formData.scheduledLessons.length > 0) {\r\n extraLocationText = \"Lesson & Road Test Locations:\";\r\n formData.scheduledLessons.map(lessonData => {\r\n lessonText += moment(lessonData.date).format('MM-DD-YY') + \" at \" + lessonData.slotName + \" in \" + lessonData.location + \"<br>\";\r\n });\r\n\r\n var locationsOfTest = new Set(formData.scheduledLessons.map(lessonData => {\r\n return lessonData.location;\r\n }));\r\n if (locationsOfTest.has(\"West Roxbury\")) {\r\n extraLocationText += \"<br><a href=\\\"https://maps.google.com/?q=1752+Centre+Street,+West+Roxbury\\\">1752 Centre Street, West Roxbury, MA 02132 (Lessons)</a>\";\r\n }\r\n }\r\n var weekendStartText = weekType + \" of \" + moment(this.state.selectedRealDays[0]).format(\"dddd, MMMM Do YYYY\");\r\n if (lengthOfSelectedDays === 7) {\r\n weekendStartText = \" Week of \" + moment(this.state.selectedRealDays[0]).format('M/D') + \" - \" + moment(this.state.selectedRealDays[0]).add(6, \"day\").format('M/D') + \" (Sat-Fri, Exact date tbd)\";\r\n }\r\n\r\n var ReplacementTemplateData = {\r\n \"firstName\": \" \" + formData.fName,\r\n \"lastName\": formData.lName,\r\n \"package\": \" \" + formData.selectedPackage,\r\n \"weekendStart\": weekendStartText,\r\n \"extraText\": lessonText,\r\n \"extraLocationText\": extraLocationText\r\n };\r\n console.log(formData);\r\n\r\n switch (formData.location) {\r\n case \"Walpole\": {\r\n ReplacementTemplateData[\"address\"] = \"1004 East St, Walpole, MA 02081\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=1004+East+St,+Walpole\";\r\n break;\r\n } case \"West Roxbury\": {\r\n if (formData.hasOwnProperty(\"scheduledLessons\") && formData.scheduledLessons.length > 0) {\r\n ReplacementTemplateData[\"address\"] = \"48 Railroad Street, West Roxbury, MA 02132 (Road Test)\";\r\n } else {\r\n ReplacementTemplateData[\"address\"] = \"48 Railroad Street, West Roxbury, MA 02132\";\r\n }\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=48+Railroad+Street,+West+Roxbury\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the Highland Train Station, located at 48 Railroad Street in West Roxbury. The station is a few blocks from our school and is less congested and an easier starting point for our students. I have attached a map so you can find the location. It is next to Roche Bros, behind the post office and between Corey and Hastings Streets.</span></li><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\"><strong>Please do not park in the train station parking lot.</strong>There is only one entrance and exit, and we would like to keep those areas clear for students taking their tests. Please park in the perpendicular parking spots at the end of Hastings Street or the public parking lot on Corey Street across from the station. I have marked these parking areas on the attached map. Our office will be open on the day of your exam, so please call for directions if you cannot find us.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\"><img data-file-id=\\\"5644493\\\" height=\\\"326\\\" src=\\\"https://publicdates.s3.amazonaws.com/RoadTestLocationMap.jpg\\\" style=\\\"border: 0px ; width: 525px; height: 326px; margin: 0px;\\\" width=\\\"525\\\">.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the Highland Train Station, located at 48 Railroad Street in West Roxbury. The station is a few blocks from our school and is less congested and an easier starting point for our students. I have attached a map so you can find the location. It is next to Roche Bros, behind the post office and between Corey and Hastings Streets. Please do not park in the train station parking lot. There is only one entrance and exit, and we would like to keep those areas clear for students taking their tests. Please park in the perpendicular parking spots at the end of Hastings Street or the public parking lot on Corey Street across from the station. I have marked these parking areas on the attached map. Our office will be open on the day of your exam, so please call for directions if you cannot find us, or have difficulty viewing the map. \\r\\n \\r\\n \";\r\n break;\r\n } case \"Brockton RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"702 Belmont St, Brockton, MA 02301\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Asiaf+Skating+Arena+Brockton\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the Brockton RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">ADDITIONAL INFO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">I have attached an application. You must have your application and permit with you the day of the test. You will be testing in a Kia Soul. If you have any questions please reach out to roadtests@parkwaydrivingschool.com or text (617) 564-3803.</span></div>\";\r\n\r\n break;\r\n } case \"Franklin RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"910 Panther Way, Franklin, MA 02038\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Pirelli+Skating+Rink+Franklin\";\r\n break;\r\n }\r\n case \"South Yarmouth RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"South Yarmouth RMV - 1084 Route 28, South Yarmouth, MA 02664\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Massachusetts+Registry+of+Motor+Vehicles+South+Yarmouth+RMV\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the South Yarmouth RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">ADDITIONAL INFO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">I have attached an application. You must have your application and permit with you the day of the test. You will be testing in a Kia Soul. If you have any questions please reach out to roadtests@parkwaydrivingschool.com or text (617) 564-3803.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the South Yarmouth RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.\\r\\n \\r\\n \";\r\n break;\r\n }\r\n case \"Braintree RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"Braintree RMV - 10 Plain St., Braintree, MA 02184\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Massachusetts+Registry+of+Motor+Vehicles+Braintree+RMV\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the Braintree RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">ADDITIONAL INFO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">I have attached an application. You must have your application and permit with you the day of the test. You will be testing in a Kia Soul. If you have any questions please reach out to roadtests@parkwaydrivingschool.com or text (617) 564-3803.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the Braintree RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.\\r\\n \\r\\n \";\r\n break;\r\n } default:\r\n ReplacementTemplateData[\"address\"] = \"Address TBA\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com\";\r\n }\r\n\r\n ReplacementTemplateData = JSON.stringify(ReplacementTemplateData);\r\n\r\n let dbDetails = {\r\n \"date\": formData.date,\r\n \"timestamp\": formData.timestamp\r\n };\r\n dynamoDBDetails.push(dbDetails);\r\n var data = {\r\n \"Destination\": {\r\n \"ToAddresses\": [\r\n formData.emailAddress\r\n ]\r\n },\r\n \"ReplacementTemplateData\": ReplacementTemplateData\r\n };\r\n\r\n if (formData.parentEmailAddress && formData.parentEmailAddress.length > 0) {\r\n data[\"Destination\"][\"CcAddresses\"] = [formData.parentEmailAddress];\r\n }\r\n params.Destinations.push(data);\r\n\r\n }\r\n let finalData = {\r\n params: params,\r\n dynamoDBDetails: dynamoDBDetails\r\n };\r\n if (finalData.dynamoDBDetails.length > 0) {\r\n this.sendEmail(finalData);\r\n } else {\r\n console.log(\"No emails to send\");\r\n }\r\n }\r\n\r\n async sendRoadTestSlotEmailsBulk(input) { //\"aka This is when your lesson is\"\r\n let emailRecipients = [];\r\n if (input.length === 1) {\r\n emailRecipients = input;\r\n } else {\r\n emailRecipients = this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object)).filter(x => x.value.emailRoadTestSlotState === \"Not Sent\").map(x => x.value);\r\n }\r\n\r\n var dynamoDBDetails = [];\r\n\r\n let defaultTemplate = JSON.stringify(\r\n {\r\n \"dateTime\": \"PLACE_DATE\",\r\n \"linkLocation\": \"https://bostonroadtests.com/confirmation\",\r\n \"address\": \"\",\r\n \"googleMapUrl\": \"\"\r\n }\r\n );\r\n //Make sure Template casing is updated in lambda!\r\n var params = {\r\n Source: 'Parkway Driving School<info@parkwaydrivingschool.com>',\r\n Template: 'appointmentTemplate3',\r\n DefaultTemplateData: defaultTemplate,\r\n ReplyToAddresses: [\r\n 'info@parkwaydrivingschool.com',\r\n ],\r\n Destinations: []\r\n };\r\n\r\n var finalTime = \"\";\r\n for (let index = 0; index < emailRecipients.length; index++) {\r\n var formData = emailRecipients[index];\r\n let token = this.uuidv4();\r\n finalTime = moment(this.state.dayOfExam).format(\"dddd, MMMM Do YYYY\") + \" at \" + formData.slot;\r\n\r\n var ReplacementTemplateData = {\r\n \"dateTime\": finalTime,\r\n \"linkLocation\": \"https://bostonroadtests.com/confirmation?dateStart=\" + formData.date + \"&token=\" + token,\r\n \"extraLocationInstructions\": \"\",\r\n \"extraLocationInstructionsText\": \"\"\r\n };\r\n if (formData.location === \"Walpole\") {\r\n ReplacementTemplateData[\"address\"] = \"1004 East St, Walpole, MA 02081\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=1004+East+St,+Walpole\";\r\n\r\n } else {\r\n ReplacementTemplateData[\"address\"] = \"48 Railroad Street, West Roxbury, MA 02132\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=48+Railroad+Street,+West+Roxbury\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the Highland Train Station, located at 48 Railroad Street in West Roxbury. The station is a few blocks from our school and is less congested and an easier starting point for our students. I have attached a map so you can find the location. It is next to Roche Bros, behind the post office and between Corey and Hastings Streets.</span></li><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\"><strong>Please do not park in the train station parking lot.</strong>There is only one entrance and exit, and we would like to keep those areas clear for students taking their tests. Please park in the perpendicular parking spots at the end of Hastings Street or the public parking lot on Corey Street across from the station. I have marked these parking areas on the attached map. Our office will be open on the day of your exam, so please call for directions if you cannot find us.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\"><img data-file-id=\\\"5644493\\\" height=\\\"326\\\" src=\\\"https://publicdates.s3.amazonaws.com/RoadTestLocationMap.jpg\\\" style=\\\"border: 0px ; width: 525px; height: 326px; margin: 0px;\\\" width=\\\"525\\\">.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the Highland Train Station, located at 48 Railroad Street in West Roxbury. The station is a few blocks from our school and is less congested and an easier starting point for our students. I have attached a map so you can find the location. It is next to Roche Bros, behind the post office and between Corey and Hastings Streets. Please do not park in the train station parking lot. There is only one entrance and exit, and we would like to keep those areas clear for students taking their tests. Please park in the perpendicular parking spots at the end of Hastings Street or the public parking lot on Corey Street across from the station. I have marked these parking areas on the attached map. Our office will be open on the day of your exam, so please call for directions if you cannot find us, or have difficulty viewing the map. \\r\\n \\r\\n \";\r\n }\r\n let dbDetails = {\r\n \"date\": formData.date,\r\n \"timestamp\": formData.timestamp,\r\n \"token\": token\r\n };\r\n dynamoDBDetails.push(dbDetails);\r\n var data = {\r\n \"Destination\": {\r\n \"ToAddresses\": [\r\n formData.emailAddress\r\n ]\r\n },\r\n \"ReplacementTemplateData\": JSON.stringify(ReplacementTemplateData)\r\n };\r\n if (formData.parentEmailAddress && formData.parentEmailAddress.length > 0) {\r\n data[\"Destination\"][\"CcAddresses\"] = [formData.parentEmailAddress];\r\n }\r\n params.Destinations.push(data);\r\n }\r\n let finalData = {\r\n params: params,\r\n dynamoDBDetails: dynamoDBDetails\r\n };\r\n if (finalData.dynamoDBDetails.length > 0) {\r\n this.sendEmail(finalData);\r\n } else {\r\n console.log(\"No emails to send\");\r\n }\r\n }\r\n\r\n async sendRoadTestTimeEmailsBulk(input) { //\"aka This is when your lesson is\"\r\n let emailRecipients = [];\r\n if (input.length === 1) {\r\n emailRecipients = input;\r\n } else {\r\n emailRecipients = this.state.unslotedMembers.map(x => x.emailRoadTestSlotState === \"Not Sent\");\r\n }\r\n\r\n var dynamoDBDetails = [];\r\n\r\n let defaultTemplate = JSON.stringify(\r\n {\r\n \"dateTime\": \"PLACE_DATE\",\r\n \"linkLocation\": \"https://bostonroadtests.com/confirmation\",\r\n \"address\": \"\",\r\n \"googleMapUrl\": \"\"\r\n }\r\n );\r\n //Make sure Template casing is updated in lambda!\r\n var params = {\r\n Source: 'Parkway Driving School<info@parkwaydrivingschool.com>',\r\n Template: 'appointmentTemplate3',\r\n DefaultTemplateData: defaultTemplate,\r\n ReplyToAddresses: [\r\n 'info@parkwaydrivingschool.com',\r\n ],\r\n Destinations: []\r\n };\r\n\r\n var finalTime = \"\";\r\n for (let index = 0; index < emailRecipients.length; index++) {\r\n var formData = emailRecipients[index];\r\n let token = this.uuidv4();\r\n finalTime = moment(this.state.dayOfExam).format(\"dddd, MMMM Do YYYY\") + \" at \" + formData.unslotTime;\r\n console.log(formData);\r\n var ReplacementTemplateData = {\r\n \"dateTime\": finalTime,\r\n \"linkLocation\": \"https://bostonroadtests.com/confirmation?dateStart=\" + formData.date + \"&token=\" + token,\r\n \"extraLocationInstructions\": \"\",\r\n \"extraLocationInstructionsText\": \"\"\r\n };\r\n\r\n switch (formData.location) {\r\n case \"Walpole\": {\r\n ReplacementTemplateData[\"address\"] = \"1004 East St, Walpole, MA 02081\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=1004+East+St,+Walpole\";\r\n break;\r\n } case \"West Roxbury\": {\r\n ReplacementTemplateData[\"address\"] = \"48 Railroad Street, West Roxbury, MA 02132\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=48+Railroad+Street,+West+Roxbury\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the Highland Train Station, located at 48 Railroad Street in West Roxbury. The station is a few blocks from our school and is less congested and an easier starting point for our students. I have attached a map so you can find the location. It is next to Roche Bros, behind the post office and between Corey and Hastings Streets.</span></li><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\"><strong>Please do not park in the train station parking lot.</strong>There is only one entrance and exit, and we would like to keep those areas clear for students taking their tests. Please park in the perpendicular parking spots at the end of Hastings Street or the public parking lot on Corey Street across from the station. I have marked these parking areas on the attached map. Our office will be not open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\"><img data-file-id=\\\"5644493\\\" height=\\\"326\\\" src=\\\"https://publicdates.s3.amazonaws.com/RoadTestLocationMap.jpg\\\" style=\\\"border: 0px ; width: 525px; height: 326px; margin: 0px;\\\" width=\\\"525\\\">.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the Highland Train Station, located at 48 Railroad Street in West Roxbury. The station is a few blocks from our school and is less congested and an easier starting point for our students. I have attached a map so you can find the location. It is next to Roche Bros, behind the post office and between Corey and Hastings Streets. Please do not park in the train station parking lot. There is only one entrance and exit, and we would like to keep those areas clear for students taking their tests. Please park in the perpendicular parking spots at the end of Hastings Street or the public parking lot on Corey Street across from the station. I have marked these parking areas on the attached map. Our office will be not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only. \\r\\n \\r\\n \";\r\n break;\r\n } case \"Brockton RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"DCR Asiaf Skating Rink - 702 Belmont St, Brockton, MA 02301\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Asiaf+Skating+Arena+Brockton\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the RMV Road Testing Site at the Asiaf Skating Arena at 702 Belmont Street in Brockton. This is not the Brockton RMV. The testing site is behind Brockton High School. Turn into the school parking lot and follow the road to behind the school. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\"><img data-file-id=\\\"5644493\\\" height=\\\"326\\\" src=\\\"https://publicdates.s3.amazonaws.com/BrocktonRoadTestLocationMap.png\\\" style=\\\"border: 0px ; width: 559px; height: 496px; margin: 0px;\\\" width=\\\"559\\\">.</span></div><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">ADDITIONAL INFO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">I have attached an application. You must have your application and permit with you the day of the test. You will be testing in a Kia Soul. Please review this <a href=\\\"https://drive.google.com/file/d/1tfkf1vOTPerbGKD9t0wt_g-naE6gtPox/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> document on hand signals and what to do on a hill</span></a> as these will be questions asked during the test. Please also see this picture <a href=\\\"https://drive.google.com/file/d/1NEazzE2_0Xie67Mi8Gg4jKtj6xKbfAL1/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> for the location of important features </span></a> of the Kia Soul. Also, this RMV does the parallel parking in between cones. If you have any questions please reach out to roadtests@parkwaydrivingschool.com or text (617) 564-3803.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the RMV Road Testing Site at the Asiaf Skating Arena at 702 Belmont Street in Brockton. This is not the Brockton RMV. The testing site is behind Brockton High School. Turn into the school parking lot and follow the road to behind the school. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.\\r\\n \\r\\n \";\r\n\r\n break;\r\n } case \"Franklin RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"Pirelli Skating Rink - 910 Panther Way, Franklin, MA 02038\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Pirelli+Skating+Rink+Franklin\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the Pirelli Skating Rink. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">ADDITIONAL INFO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">I have attached an application. You must have your application and permit with you the day of the test. You will be testing in a Kia Soul. Please review this <a href=\\\"https://drive.google.com/file/d/1tfkf1vOTPerbGKD9t0wt_g-naE6gtPox/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> document on hand signals and what to do on a hill</span></a> as these will be questions asked during the test. Please also see this picture <a href=\\\"https://drive.google.com/file/d/1NEazzE2_0Xie67Mi8Gg4jKtj6xKbfAL1/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> for the location of important features </span></a> of the Kia Soul. If you have any questions please reach out to roadtests@parkwaydrivingschool.com or text (617) 564-3803.</span></div>\";\r\n\r\n break;\r\n }\r\n case \"South Yarmouth RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"South Yarmouth RMV - 1084 Route 28, South Yarmouth, MA 02664\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Massachusetts+Registry+of+Motor+Vehicles+South+Yarmouth+RMV\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the South Yarmouth RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">ADDITIONAL INFO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">I have attached an application. You must have your application and permit with you the day of the test. You will be testing in a Kia Soul. Please review this <a href=\\\"https://drive.google.com/file/d/1tfkf1vOTPerbGKD9t0wt_g-naE6gtPox/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> document on hand signals and what to do on a hill</span></a> as these will be questions asked during the test. Please also see this picture <a href=\\\"https://drive.google.com/file/d/1NEazzE2_0Xie67Mi8Gg4jKtj6xKbfAL1/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> for the location of important features </span></a> of the Kia Soul. If you have any questions please reach out to roadtests@parkwaydrivingschool.com or text (617) 564-3803.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the South Yarmouth RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.\\r\\n \\r\\n \";\r\n break;\r\n }\r\n case \"Braintree RMV Site\": {\r\n ReplacementTemplateData[\"address\"] = \"Braintree RMV - 10 Plain St., Braintree, MA 02184\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com/?q=Massachusetts+Registry+of+Motor+Vehicles+Braintree+RMV\";\r\n ReplacementTemplateData[\"extraLocationInstructions\"] = \"<div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">WHERE TO GO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">Our road test location will be at the Braintree RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.</span></li></ul><div style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">ADDITIONAL INFO</span><ul><li style=\\\"text-align: left;\\\"><span style=\\\"color:#555555\\\">I have attached an application. You must have your application and permit with you the day of the test. You will be testing in a Kia Soul. Please review this <a href=\\\"https://drive.google.com/file/d/1tfkf1vOTPerbGKD9t0wt_g-naE6gtPox/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> document on hand signals and what to do on a hill</span></a> as these will be questions asked during the test. Please also see this picture <a href=\\\"https://drive.google.com/file/d/1NEazzE2_0Xie67Mi8Gg4jKtj6xKbfAL1/view\\\" target=\\\"_blank\\\"><span style=\\\"color:#FF0000\\\"> for the location of important features </span></a> of the Kia Soul. If you have any questions please reach out to roadtests@parkwaydrivingschool.com or text (617) 564-3803.</span></div>\";\r\n ReplacementTemplateData[\"extraLocationInstructionsText\"] = \" WHERE TO GO\\r\\n - Our road test location will be at the Braintree RMV. Our office will not be open on the day of your test. Please text 617-564-3803 with any questions. This is a text line only.\\r\\n \\r\\n \";\r\n break;\r\n }\r\n default:\r\n ReplacementTemplateData[\"address\"] = \"Address TBA\";\r\n ReplacementTemplateData[\"googleMapUrl\"] = \"https://maps.google.com\";\r\n }\r\n let dbDetails = {\r\n \"date\": formData.date,\r\n \"timestamp\": formData.timestamp,\r\n \"token\": token\r\n };\r\n dynamoDBDetails.push(dbDetails);\r\n var data = {\r\n \"Destination\": {\r\n \"ToAddresses\": [\r\n formData.emailAddress\r\n ]\r\n },\r\n \"ReplacementTemplateData\": JSON.stringify(ReplacementTemplateData)\r\n };\r\n if (formData.parentEmailAddress && formData.parentEmailAddress.length > 0) {\r\n data[\"Destination\"][\"CcAddresses\"] = [formData.parentEmailAddress];\r\n }\r\n params.Destinations.push(data);\r\n }\r\n let finalData = {\r\n params: params,\r\n dynamoDBDetails: dynamoDBDetails\r\n };\r\n if (finalData.dynamoDBDetails.length > 0) {\r\n console.log(finalData);\r\n\r\n this.sendEmail(finalData);\r\n } else {\r\n console.log(\"No emails to send\");\r\n }\r\n }\r\n\r\n async sendRoadTestPassedEmailsBulk(slotMode) {\r\n this.setState({ EmailError: \"\" });\r\n var dynamoDBDetails = [];\r\n\r\n var params = {\r\n Source: 'Parkway Driving School<info@parkwaydrivingschool.com>',\r\n Template: 'roadTestPassed',\r\n DefaultTemplateData: '{\"firstName\": \"templateFirstNameholder\"}',\r\n ReplyToAddresses: [\r\n 'info@parkwaydrivingschool.com',\r\n ],\r\n Destinations: []\r\n };\r\n let emailRecipients = [];\r\n if (slotMode) {\r\n emailRecipients = this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object)).filter(x => x.value.roadTestPassed === true && (x.value.roadTestLicenseEmailSent === false || !x.value.hasOwnProperty(\"roadTestLicenseEmailSent\"))).map(x => x.value);;\r\n } else {\r\n emailRecipients = this.state.unslotedMembers.filter(x => x.roadTestPassed === true && (x.roadTestLicenseEmailSent === false || !x.hasOwnProperty(\"roadTestLicenseEmailSent\")));\r\n }\r\n for (let index = 0; index < emailRecipients.length; index++) {\r\n const formData = emailRecipients[index];\r\n var ReplacementTemplateData = JSON.stringify({\r\n \"firstName\": formData.fName\r\n });\r\n let dbDetails = {\r\n \"date\": formData.date,\r\n \"timestamp\": formData.timestamp\r\n };\r\n dynamoDBDetails.push(dbDetails);\r\n var data = {\r\n \"Destination\": {\r\n \"ToAddresses\": [\r\n formData.emailAddress\r\n ]\r\n },\r\n \"ReplacementTemplateData\": ReplacementTemplateData\r\n };\r\n if (formData.parentEmailAddress && formData.parentEmailAddress.length > 0) {\r\n data[\"Destination\"][\"CcAddresses\"] = [formData.parentEmailAddress];\r\n }\r\n params.Destinations.push(data);\r\n }\r\n\r\n\r\n let finalData = {\r\n params: params,\r\n dynamoDBDetails: dynamoDBDetails\r\n };\r\n this.sendEmail(finalData);\r\n }\r\n\r\n async sendRoadTestFailedEmailsBulk(slotMode) {\r\n this.setState({ EmailError: \"\" });\r\n\r\n var dynamoDBDetails = [];\r\n\r\n var params = {\r\n Source: 'Parkway Driving School<info@parkwaydrivingschool.com>',\r\n Template: 'roadTestFailed',\r\n DefaultTemplateData: '{\"firstName\": \"templateFirstNameholder\"}',\r\n ReplyToAddresses: [\r\n 'info@parkwaydrivingschool.com',\r\n ],\r\n Destinations: []\r\n };\r\n let emailRecipients = [];\r\n if (slotMode) {\r\n emailRecipients = this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object)).filter(x => (x.value.roadTestPassed === false || !x.value.hasOwnProperty(\"roadTestPassed\")) && (x.value.roadTestLicenseEmailSent === false || !x.value.hasOwnProperty(\"roadTestLicenseEmailSent\"))).map(x => x.value);\r\n } else {\r\n emailRecipients = this.state.unslotedMembers.filter(x => (x.roadTestPassed === false || !x.hasOwnProperty(\"roadTestPassed\")) && (x.roadTestLicenseEmailSent === false || !x.hasOwnProperty(\"roadTestLicenseEmailSent\")));\r\n }\r\n\r\n for (let index = 0; index < emailRecipients.length; index++) {\r\n const formData = emailRecipients[index];\r\n var ReplacementTemplateData = JSON.stringify({\r\n \"firstName\": formData.fName\r\n });\r\n let dbDetails = {\r\n \"date\": formData.date,\r\n \"timestamp\": formData.timestamp\r\n };\r\n dynamoDBDetails.push(dbDetails);\r\n var data = {\r\n \"Destination\": {\r\n \"ToAddresses\": [\r\n formData.emailAddress\r\n ]\r\n },\r\n \"ReplacementTemplateData\": ReplacementTemplateData\r\n };\r\n if (formData.parentEmail && formData.parentEmail.length > 0) {\r\n data[\"Destination\"][\"CcAddresses\"] = [formData.parentEmail];\r\n }\r\n params.Destinations.push(data);\r\n }\r\n\r\n let finalData = {\r\n params: params,\r\n dynamoDBDetails: dynamoDBDetails\r\n };\r\n this.sendEmail(finalData);\r\n }\r\n\r\n checkEmailDate() {\r\n this.setState({ EmailError: \"\" });\r\n let examDate = this.state.dayOfExam;\r\n\r\n var finalTime = \"\";\r\n finalTime = moment(examDate).format(\"dddd, MMMM Do YYYY\");\r\n this.setState({ emailSendDateData: finalTime });\r\n }\r\n\r\n handleChangeRoadTestStatus = async (index, mode, quantity, useSlots) => {\r\n var students = [];\r\n if (useSlots) {\r\n var shownStudents = this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object));\r\n if (quantity === \"all\") {\r\n shownStudents.forEach(function (student) {\r\n let studentData = {\r\n \"date\": student.value.date,\r\n \"timestamp\": student.value.timestamp\r\n };\r\n var item = { \"mode\": mode, \"student\": studentData };\r\n students.push(item);\r\n });\r\n }\r\n else {\r\n let studentData = {\r\n \"date\": shownStudents[index].value.date,\r\n \"timestamp\": shownStudents[index].value.timestamp\r\n };\r\n var item = { \"mode\": mode, \"student\": studentData };\r\n students.push(item);\r\n }\r\n } else {\r\n var shownStudents = this.state.unslotedMembers;\r\n if (quantity === \"all\") {\r\n shownStudents.forEach(function (student) {\r\n let studentData = {\r\n \"date\": student.date,\r\n \"timestamp\": student.timestamp\r\n };\r\n var item = { \"mode\": mode, \"student\": studentData };\r\n students.push(item);\r\n });\r\n }\r\n else {\r\n let studentData = {\r\n \"date\": shownStudents[index].date,\r\n \"timestamp\": shownStudents[index].timestamp\r\n };\r\n var item = { \"mode\": mode, \"student\": studentData };\r\n students.push(item);\r\n }\r\n }\r\n\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: students, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n //Call function that updates students\r\n that.refreshStatus(\"setRoadTestResultEmail\");\r\n }\r\n else {\r\n that.setState({ APIDateStudentResults: [] });\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 404) {\r\n that.setState({ APIDateStudentResults: [] });\r\n }\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n };\r\n\r\n handleSkipStudentLessons = async (mode) => {\r\n var selectedStudent = this.state.selectedLessonStudent;\r\n var students = [];\r\n let studentData = {\r\n \"date\": selectedStudent.date,\r\n \"timestamp\": selectedStudent.timestamp\r\n };\r\n var item = { \"mode\": mode, \"student\": studentData };\r\n students.push(item);\r\n\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: students, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n //Call function that updates students\r\n that.refreshStatus(that.state.activeKey);\r\n }\r\n else {\r\n that.setState({ APIDateStudentResults: [] });\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 404) {\r\n that.setState({ APIDateStudentResults: [] });\r\n }\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n };\r\n\r\n handleConfirmRegularScheduleLessons = async (mode) => {\r\n var selectedStudent = this.state.selectedLessonStudent;\r\n var students = [];\r\n let studentData = {\r\n \"date\": selectedStudent.date,\r\n \"timestamp\": selectedStudent.timestamp\r\n };\r\n var item = { \"mode\": mode, \"student\": studentData };\r\n students.push(item);\r\n\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: students, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n //Call function that updates students\r\n that.refreshStatus(that.state.activeKey);\r\n }\r\n else {\r\n that.setState({ APIDateStudentResults: [] });\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 404) {\r\n that.setState({ APIDateStudentResults: [] });\r\n }\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n };\r\n\r\n\r\n handleChangeRoadTestCertificateStatus = async (index, mode, usesStudentSlots) => {\r\n var students = [];\r\n var shownStudents = [];\r\n if (usesStudentSlots) {\r\n shownStudents = this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object)).map(x => x.value);\r\n } else {\r\n var shownStudents = this.state.unslotedMembers;\r\n }\r\n let studentData = {\r\n \"date\": shownStudents[index].date,\r\n \"timestamp\": shownStudents[index].timestamp\r\n };\r\n var item = { \"mode\": mode, \"student\": studentData };\r\n students.push(item);\r\n\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: students, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n //Call function that updates students\r\n that.refreshStatus(\"viewCertStatus\");\r\n }\r\n else {\r\n that.setState({ APIDateStudentResults: [] });\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n if (error.response.status === 404) {\r\n that.setState({ APIDateStudentResults: [] });\r\n }\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n };\r\n\r\n handleStartTimeChange(time) {\r\n this.setState({ startTime: time, endTime: time + 600 });\r\n }\r\n handleEndtimeTimeChange(time) {\r\n this.setState({ endTime: time });\r\n }\r\n\r\n handleSlotMove(index, movement) {\r\n if (movement === \"up\") { //move them up one.\r\n if (index !== 0) {//can't move up if at root\r\n var currPosition = index;\r\n var newPosition = index - 1;\r\n var slotLocalCopy = this.state.slots;\r\n var upperSlot = {\r\n \"slotName\": slotLocalCopy[newPosition].slotName,\r\n \"person\": slotLocalCopy[currPosition].person,\r\n \"value\": slotLocalCopy[currPosition].value\r\n };\r\n var lowerSlot = {\r\n \"slotName\": slotLocalCopy[currPosition].slotName,\r\n \"person\": slotLocalCopy[newPosition].person,\r\n \"value\": slotLocalCopy[newPosition].value\r\n };\r\n slotLocalCopy[newPosition] = upperSlot;\r\n slotLocalCopy[currPosition] = lowerSlot;\r\n this.setState({ slots: slotLocalCopy });\r\n\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n else if (movement === \"down\") { //move them up one.\r\n if (index !== this.state.slots.length - 1) {//can't move down if at end\r\n var currPosition1 = index;\r\n var newPosition1 = index + 1;\r\n var slotLocalCopy1 = this.state.slots;\r\n var upperSlot1 = {\r\n \"slotName\": slotLocalCopy1[newPosition1].slotName,\r\n \"person\": slotLocalCopy1[currPosition1].person,\r\n \"value\": slotLocalCopy1[currPosition1].value\r\n };\r\n var lowerSlot1 = {\r\n \"slotName\": slotLocalCopy1[currPosition1].slotName,\r\n \"person\": slotLocalCopy1[newPosition1].person,\r\n \"value\": slotLocalCopy1[newPosition1].value\r\n };\r\n slotLocalCopy1[newPosition1] = upperSlot1;\r\n slotLocalCopy1[currPosition1] = lowerSlot1;\r\n this.setState({ slots: slotLocalCopy1 });\r\n\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n handleSlotClear(index) {\r\n var localSlots = this.state.slots;\r\n var personValue = localSlots[index].value;\r\n localSlots[index].value = {};\r\n localSlots[index].person = \"\";\r\n var unslotedMembers = this.state.unslotedMembers;\r\n if (Object.keys(personValue).length > 0 && personValue.constructor === Object) {\r\n unslotedMembers.push(personValue);\r\n }\r\n this.setState({ unslotedMembers: unslotedMembers });\r\n }\r\n\r\n handleSlotDelete(index) {\r\n var localSlots = this.state.slots;\r\n var personValue = localSlots[index].value;\r\n localSlots = localSlots.filter((item, i) => index !== i);\r\n var unslotedMembers = this.state.unslotedMembers;\r\n if (Object.keys(personValue).length > 0 && personValue.constructor === Object) {\r\n unslotedMembers.push(personValue);\r\n }\r\n this.setState({ unslotedMembers: unslotedMembers, slots: localSlots });\r\n }\r\n\r\n async handleSlotSave() {\r\n this.setState({ loading: true });\r\n var localSlots = this.state.slots.filter(x => (x.person));\r\n //We need to update all the slots with the right details.\r\n for (var pos = 0; pos < localSlots.length; pos++) {\r\n var slot = localSlots[pos];\r\n slot.value.slot = slot.slotName;\r\n slot.value.weekendDate = this.state.selectedWeekday;\r\n localSlots[pos] = slot;\r\n }\r\n\r\n this.setState({ slots: localSlots });\r\n\r\n //All values\r\n var allStudents = [];\r\n var tempStudents = localSlots.map(x => x.value);\r\n for (let index = 0; index < tempStudents.length; index++) {\r\n var student = tempStudents[index];\r\n let studentKeys = Object.keys(student);\r\n for (let studentIndex = 0; studentIndex < studentKeys.length; studentIndex++) {\r\n const key = studentKeys[studentIndex];\r\n if ((student[key] == null)) {\r\n delete student[key];\r\n }\r\n }\r\n var item = { \"mode\": \"addNewStudent\", \"student\": student };\r\n allStudents.push(item);\r\n }\r\n\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: allStudents, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n that.refreshStatus(\"sendSlotEmail\");\r\n console.log(data);\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n\r\n async handleUnslottedTimeSave() {\r\n this.setState({ loading: true });\r\n var localSlots = this.state.unslotedMembers;\r\n //All values\r\n var allStudents = [];\r\n for (let index = 0; index < localSlots.length; index++) {\r\n var student = localSlots[index];\r\n let studentKeys = Object.keys(student);\r\n for (let studentIndex = 0; studentIndex < studentKeys.length; studentIndex++) {\r\n const key = studentKeys[studentIndex];\r\n if ((student[key] == null)) {\r\n delete student[key];\r\n }\r\n }\r\n var item = { \"mode\": \"addNewStudent\", \"student\": student };\r\n allStudents.push(item);\r\n }\r\n\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: allStudents, // replace this with attributes you need\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n that.refreshStatus(\"sendSlotEmail\");\r\n console.log(data);\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n\r\n async refreshStatus(newKey) {\r\n let selectedDay = this.state.selectedDay;\r\n var location = this.state.selectedLocation;\r\n let APIDateStudentResults = await this.handleGetSlotsbyDay(selectedDay);\r\n\r\n if (location.length === 0) {\r\n var selectedLocationSet = new Set(APIDateStudentResults.filter(x => x.location).map(x => x.location));\r\n var selectedDateLocations = [...selectedLocationSet];\r\n if (selectedDateLocations.length > 0) {\r\n location = selectedDateLocations[0];\r\n }\r\n }\r\n\r\n var filteredAPIDateStudentResults = APIDateStudentResults.filter(x => x.location === location);\r\n var preSlottedFolks = APIDateStudentResults.filter(x => x.slot).filter(x => x.location === location);\r\n if (preSlottedFolks.length > 0) {\r\n var slots = preSlottedFolks.map(function (x) { return { slotName: x.slot, person: x.fName + \" \" + x.lName, value: x }; });\r\n this.setState({ slots: this.sortSlots(slots, 'slotName') });\r\n }\r\n\r\n this.setState({ unslotedMembers: APIDateStudentResults.filter(x => !x.slot) });\r\n //The selected date is the first entry of the selectedDays\r\n this.setState({\r\n APIDateStudentResults,\r\n dataDirty: false,\r\n activeKey: newKey,\r\n filteredAPIDateStudentResults,\r\n selectedLessonStudent: filteredAPIDateStudentResults[this.state.selectedLessonStudentIndex],\r\n unslotedMembers: filteredAPIDateStudentResults.filter(x => !x.slot),\r\n refreshStatus: \"Last refreshed at : \" + moment().format('MMMM Do YYYY, h:mm:ss a'),\r\n loading: false\r\n\r\n });\r\n }\r\n\r\n generateSlots = async event => {\r\n var existingSlots = this.state.slots.map(x => x.slotName);\r\n var slots = [];\r\n\r\n var stateSlotNames = this.state.slots.map(x => x.slotName);\r\n\r\n\r\n for (var i = parseInt(this.state.startTime, 10); i <= parseInt(this.state.endTime, 10); i = i + 60 * this.state.slotTime) {\r\n var slotName = timeFromInt(i, { format: 12 });\r\n var data = {};\r\n if (existingSlots.includes(slotName)) {//We already have a filled out person at this time.\r\n var position = stateSlotNames.indexOf(slotName);\r\n data = this.state.slots[position];\r\n }\r\n else {\r\n data = {\r\n slotName: timeFromInt(i, { format: 12 }),\r\n person: \"\",\r\n value: {}\r\n };\r\n }\r\n slots.push(data);\r\n }\r\n\r\n //We need to check if there are slots that were part of the original, and if they were not added, readd them.\r\n var missingOriginalsSlots = existingSlots.filter(e => !slots.map(x => x.slotName).includes(e));\r\n var missingOriginals = this.state.slots.filter(x => missingOriginalsSlots.includes(x.slotName));\r\n slots.concat(missingOriginals);\r\n //console.log(missingOriginals)\r\n\r\n this.setState({ slots: this.sortSlots(slots.concat(missingOriginals), 'slotName') });\r\n };\r\n\r\n generateUnslottedGroupTimes = async event => {\r\n var unslotedGroupTimes = this.state.unslotedGroupTimes;\r\n var stateSlotNames = this.state.unslotedGroupTimes.map(x => x.slotName);\r\n\r\n var slots = [];\r\n\r\n for (var i = parseInt(this.state.startTime, 10); i <= parseInt(this.state.endTime, 10); i = i + 60 * this.state.slotTime) {\r\n var slotName = timeFromInt(i, { format: 12 });\r\n var data = {};\r\n if (!stateSlotNames.includes(slotName)) {//We already have a filled out group at this time\r\n data = {\r\n slotName: timeFromInt(i, { format: 12 }),\r\n };\r\n slots.push(data);\r\n }\r\n\r\n\r\n }\r\n\r\n //We need to check if there are slots that were part of the original, and if they were not added, readd them.\r\n var missingOriginalsSlots = stateSlotNames.filter(e => !slots.map(x => x.slotName).includes(e));\r\n var missingOriginals = this.state.unslotedGroupTimes.filter(x => missingOriginalsSlots.includes(x.slotName));\r\n slots.concat(missingOriginals);\r\n console.log(missingOriginals);\r\n\r\n this.setState({ unslotedGroupTimes: this.sortSlots(slots.concat(missingOriginals), 'slotName') });\r\n };\r\n\r\n fillLeftovers = async event => {\r\n this.setState({ dataDirty: true });\r\n var remainingslots = this.state.slots.filter(x => x.person === \"\").length;\r\n var existingSlots = this.state.slots.map(x => x.slotName);\r\n var stateSlotNames = this.state.slots.map(x => x.slotName);\r\n\r\n var startTime = 0;\r\n if (this.state.slots.length > 0) {\r\n startTime = timeToInt(this.state.slots[0].slotName);\r\n console.log(timeToInt(this.state.slots[0].slotName));\r\n }\r\n else {\r\n startTime = 25200;\r\n }\r\n\r\n var slots = [];\r\n if (remainingslots < this.state.unslotedMembers.length) {//There are not enough slot values. We need to create more slots.\r\n var difference = this.state.unslotedMembers.length - remainingslots - 1;\r\n console.log(difference);\r\n for (var i = startTime; i <= startTime + (difference * 600); i = i + 60 * this.state.slotTime) {\r\n var slotName = timeFromInt(i, { format: 12 });\r\n var data = {};\r\n if (existingSlots.includes(slotName)) {//We already have a filled out person at this time.\r\n var position = stateSlotNames.indexOf(slotName);\r\n data = this.state.slots[position];\r\n difference++; //We already have this slot, so we need to add an extra slot\r\n }\r\n else {\r\n data = {\r\n slotName: timeFromInt(i, { format: 12 }),\r\n person: \"\",\r\n value: {}\r\n };\r\n }\r\n\r\n slots.push(data);\r\n }\r\n }\r\n\r\n var missingOriginalsSlots = existingSlots.filter(e => !slots.map(x => x.slotName).includes(e));\r\n var missingOriginals = this.state.slots.filter(x => missingOriginalsSlots.includes(x.slotName));\r\n slots = this.sortSlots(slots.concat(missingOriginals), 'slotName');\r\n //Let's reverse the array so we can pop.\r\n var newSlots = [];\r\n var unslotedMembers = this.state.unslotedMembers.reverse();\r\n\r\n for (var j = 0; j < slots.length; j++) {\r\n var newdata = slots[j];\r\n if (unslotedMembers.length === 0) {\r\n newSlots.push(newdata);\r\n continue;\r\n }\r\n if (newdata.person) {\r\n newSlots.push(newdata);\r\n }\r\n else {\r\n var unslotedMembersData = unslotedMembers.pop();\r\n newdata.person = unslotedMembersData.fName + \" \" + unslotedMembersData.lName;\r\n newdata.value = unslotedMembersData;\r\n newSlots.push(newdata);\r\n }\r\n }\r\n\r\n this.setState({ slots: newSlots });\r\n console.log(remainingslots);\r\n };\r\n\r\n renderWeekdayChoices(date) {\r\n return (\r\n <div>\r\n Which day of the week is the Road Test on?\r\n\r\n <br></br>\r\n <Button className=\"padLeft\" id=\"sat\" disabled={this.state.selectedWeekday === \"Saturday\"} onClick={this.handleDayOfWeekButton}>Saturday</Button>\r\n <Button className=\"padLeft\" id=\"sun\" disabled={this.state.selectedWeekday === \"Sunday\"} onClick={this.handleDayOfWeekButton}>Sunday</Button>\r\n <Button className=\"padLeft\" id=\"mon\" disabled={this.state.selectedWeekday === \"Monday\"} onClick={this.handleDayOfWeekButton}>Monday</Button>\r\n <Button className=\"padLeft\" id=\"tue\" disabled={this.state.selectedWeekday === \"Tuesday\"} onClick={this.handleDayOfWeekButton}>Tuesday</Button>\r\n <Button className=\"padLeft\" id=\"wed\" disabled={this.state.selectedWeekday === \"Wednesday\"} onClick={this.handleDayOfWeekButton}>Wednesday</Button>\r\n <Button className=\"padLeft\" id=\"thu\" disabled={this.state.selectedWeekday === \"Thursday\"} onClick={this.handleDayOfWeekButton}>Thursday</Button>\r\n <Button className=\"padLeft\" id=\"fri\" disabled={this.state.selectedWeekday === \"Friday\"} onClick={this.handleDayOfWeekButton}>Friday</Button>\r\n <br></br>\r\n Warning: This will override ALL student dates in this block to the selected weekday. Make sure to save student data after updating the date!\r\n\r\n </div>\r\n );\r\n }\r\n\r\n async saveNewLessons() {\r\n let newLessons = this.state.newLessonsToAdd;\r\n let student = this.state.selectedLessonStudent;\r\n student.newLessons = newLessons;\r\n\r\n this.setState({ loading: true });\r\n\r\n var item = { \"mode\": \"addSpecificLessons\", \"student\": student };\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [item]\r\n ,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n console.log(options);\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(async function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n await that.refreshStatus(that.state.activeKey);\r\n that.setState({ loading: false, newLessonsToAdd: [] });\r\n }\r\n else {\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n\r\n\r\n async deleteOldLesson(index) {\r\n let student = this.state.selectedLessonStudent;\r\n console.log(student, index);\r\n let removedLesson = student.scheduledLessons.splice(index, 1);\r\n console.log(removedLesson, student);\r\n let newStudent = {\r\n date: student.date,\r\n timestamp: student.timestamp,\r\n scheduledLessons: student.scheduledLessons,\r\n removedLesson: removedLesson\r\n };\r\n\r\n this.setState({ loading: true });\r\n var item = { \"mode\": \"deleteSpecificLesson\", \"student\": newStudent };\r\n console.log(item);\r\n\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [item]\r\n ,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n console.log(options);\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n that.refreshStatus(that.state.activeKey);\r\n that.setState({ loading: false, showModal: false, modalView: \"\" });\r\n }\r\n else {\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n\r\n\r\n async addAdditionalLessons() {\r\n var lessonName = this.state.CCLessonsWanted;\r\n lessonName += this.state.CCLessonsWanted == 1 ? \" Extra Lesson\" : \" Extra Lessons\";\r\n var student = this.state.selectedLessonStudent;\r\n var newLesson = { \"name\": lessonName, \"price\": parseInt(this.state.CCLessonsPrice) };\r\n if (student.hasOwnProperty(\"fullPricing\")) {\r\n var fullPricing = student.fullPricing;\r\n fullPricing.push(newLesson);\r\n student.fullPricing = fullPricing;\r\n } else {\r\n student.fullPricing = [newLesson];\r\n }\r\n this.setState({ loading: true });\r\n var item = { \"mode\": \"updateStudent\", \"student\": student };\r\n const that = this;\r\n\r\n let session = await Auth.currentSession();\r\n let options = {\r\n body: [item]\r\n ,\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': session.idToken.jwtToken\r\n }\r\n };\r\n console.log(options);\r\n API.post(\"APIGateway\", \"/modifystudentdata\", options)\r\n .then(async function (data) {\r\n if (data.hasOwnProperty('type') && data.type === \"success\") {\r\n await that.refreshStatus(that.state.activeKey);\r\n that.setState({\r\n loading: false, showAddLessons: false,\r\n CCFirstName: \"\",\r\n CCLastName: \"\",\r\n CCExpiration: \"\",\r\n CCCode: \"\",\r\n CCAddress: \"\",\r\n CCCity: \"\",\r\n CCState: \"\",\r\n CCZip: \"\",\r\n CCCountry: \"\",\r\n CCNumber: \"\",\r\n CCLessonsWanted: 0,\r\n CCLessonsPrice: 0,\r\n CCErrors: \"\",\r\n loading: false,\r\n addLessonValidated: false,\r\n skipExtraLessonsPayment: false\r\n });\r\n }\r\n else {\r\n console.log(\"No students found\");\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n console.log('Error', error.message);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n deleteNewLesson = index => {\r\n console.log(index);\r\n let newLessonsToAdd = this.state.newLessonsToAdd;\r\n newLessonsToAdd.splice(index, 1);\r\n this.setState({ newLessonsToAdd });\r\n };\r\n\r\n handleAddLessonDate = () => {\r\n let newLessonsToAdd = this.state.newLessonsToAdd;\r\n let selectedLessonValue = this.state.selectedLessonValue;\r\n if (Object.keys(selectedLessonValue).length === 0) {\r\n return;\r\n }\r\n\r\n if (newLessonsToAdd.filter(x => x.value === selectedLessonValue.value).length === 0) {\r\n newLessonsToAdd.push(selectedLessonValue);\r\n }\r\n\r\n this.setState({ newLessonsToAdd, selectedLessonValue: {} });\r\n\r\n };\r\n\r\n handleLessonDateChange = value => {\r\n console.log(value, this.state.newLessonsToAdd);\r\n this.setState({ selectedLessonValue: value });\r\n };\r\n\r\n loadRoadTestLessonDates = (inputValue, callback) => {\r\n let selectedLocation = this.state.selectedLocation;\r\n let keys = Object.keys(this.state.rawRoadTestLessons);\r\n let rawRoadTestLessons = this.state.rawRoadTestLessons;\r\n let foundLocations = keys.filter(date => rawRoadTestLessons[date].locations.includes(selectedLocation));\r\n\r\n console.log(selectedLocation, keys, rawRoadTestLessons);\r\n let foundLocationOptions = foundLocations.map(date => moment(date))\r\n .filter(x => moment().isBefore(x))\r\n .map(x => x.format(\"YYYY-MM-DD\"))\r\n .map(x => { return { \"value\": x, \"label\": x }; });\r\n\r\n foundLocationOptions = foundLocationOptions.sort((a, b) => (a.value > b.value) ? 1 : -1);\r\n\r\n console.log(foundLocationOptions);\r\n callback(foundLocationOptions);\r\n };\r\n\r\n loadOptions = (inputValue, callback) => {\r\n let that = this;\r\n let roadTestDate = this.state.selectedDay;\r\n fetch('https://x4g3mwhate.execute-api.us-east-1.amazonaws.com/dev/getpubliclessondates', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'post',\r\n body: JSON.stringify({ \"start\": roadTestDate, \"location\": \"West Roxbury\" }\r\n )\r\n }).then(that.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n let allTimes = [];\r\n\r\n Object.keys(data).forEach(date => {\r\n data[date].forEach(time => {\r\n allTimes.push({\r\n value: \"West Roxbury\" + \"|\" + date + \"T\" + time.startTime,\r\n label: moment(date).format('ddd') + \" \" + moment(date).format(\"MM-DD-YYYY\") + \" at \" + time.timeSlot,\r\n date: date,\r\n location: \"West Roxbury\",\r\n slot: time.timeSlot\r\n\r\n });\r\n });\r\n\r\n });\r\n\r\n allTimes = allTimes.sort((a, b) => (a.value > b.value) ? 1 : -1);\r\n callback(allTimes);\r\n });\r\n };\r\n loadWalpoleOptions = (inputValue, callback) => {\r\n let that = this;\r\n let roadTestDate = this.state.selectedDay;\r\n fetch('https://x4g3mwhate.execute-api.us-east-1.amazonaws.com/dev/getpubliclessondates', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'post',\r\n body: JSON.stringify({ \"start\": roadTestDate, \"location\": \"Walpole\" }\r\n )\r\n }).then(that.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n let allTimes = [];\r\n\r\n Object.keys(data).forEach(date => {\r\n data[date].forEach(time => {\r\n allTimes.push({\r\n value: \"Walpole\" + \"|\" + date + \"T\" + time.startTime,\r\n label: moment(date).format('ddd') + \" \" + moment(date).format(\"MM-DD-YYYY\") + \" at \" + time.timeSlot,\r\n date: date,\r\n location: \"Walpole\",\r\n slot: time.timeSlot\r\n\r\n });\r\n });\r\n\r\n });\r\n\r\n allTimes = allTimes.sort((a, b) => (a.value > b.value) ? 1 : -1);\r\n callback(allTimes);\r\n });\r\n };\r\n\r\n renderLessonState() {\r\n let lessonsRequired = 0;\r\n let lessonsScheduled = [];\r\n let failedScheduledLessons = [];\r\n let newLessonsToAdd = this.state.newLessonsToAdd;\r\n if (Object.keys(this.state.selectedLessonStudent).length > 0) {\r\n let matchedPackage = this.state.avaliableOptions.filter(x => x.package === this.state.selectedLessonStudent.selectedPackage);\r\n if (matchedPackage.length === 1) {\r\n lessonsRequired = matchedPackage[0].lessons;\r\n }\r\n\r\n this.state.selectedLessonStudent.fullPricing.filter(x => x.name.includes(\"Extra Lesson\")).map(x => x.name).map(x => lessonsRequired += parseInt(x.split(\" \")[0]));\r\n\r\n if (this.state.selectedLessonStudent) {\r\n if (this.state.selectedLessonStudent.scheduledLessons) {\r\n lessonsScheduled = this.state.selectedLessonStudent.scheduledLessons;\r\n }\r\n if (this.state.selectedLessonStudent.failedLessons) {\r\n failedScheduledLessons = this.state.selectedLessonStudent.failedLessons;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n {newLessonsToAdd.length > 0 ?\r\n <Alert variant=\"warning\">\r\n There are unsaved values. Please remember to save.\r\n </Alert> : null}\r\n <div>\r\n <strong>Student</strong>: {this.state.selectedLessonStudent.fName + \" \" + this.state.selectedLessonStudent.lName}\r\n </div>\r\n <div>\r\n <strong>Lessons Needed</strong>: {lessonsRequired}\r\n </div>\r\n\r\n {lessonsScheduled.length + newLessonsToAdd.length < lessonsRequired ?\r\n <div>\r\n <Button disabled={this.state.selectedLessonLocation == \"West Roxbury\"} onClick={() => this.setState({ selectedLessonLocation: \"West Roxbury\", selectedLessonValue: {} })}>View West Roxbury Lessons</Button>\r\n <Button disabled={this.state.selectedLessonLocation == \"Walpole\"} onClick={() => this.setState({ selectedLessonLocation: \"Walpole\", selectedLessonValue: {} })}>View Walpole Lessons</Button>\r\n\r\n {this.state.selectedLessonLocation == \"West Roxbury\" ?\r\n <div>\r\n <div>West Roxbury</div>\r\n <AsyncSelect\r\n key={this.state.selectedDay}\r\n value={this.state.selectedLessonValue}\r\n cacheOptions={false}\r\n loadOptions={this.loadOptions}\r\n defaultOptions\r\n noOptionsMessage={() => \"No lessons avaliable for \" + this.state.selectedDay + \".\"}\r\n onChange={this.handleLessonDateChange}\r\n />\r\n <Button disabled={Object.keys(this.state.selectedLessonValue).length === 0} onClick={() => this.handleAddLessonDate()}>Add Lesson</Button>\r\n\r\n </div> : null}\r\n\r\n {this.state.selectedLessonLocation == \"Walpole\" ?\r\n <div>\r\n <div>Walpole</div>\r\n <AsyncSelect\r\n key={this.state.selectedDay}\r\n value={this.state.selectedLessonValue}\r\n cacheOptions={false}\r\n loadOptions={this.loadWalpoleOptions}\r\n defaultOptions\r\n noOptionsMessage={() => \"No lessons avaliable for \" + this.state.selectedDay + \".\"}\r\n onChange={this.handleLessonDateChange}\r\n />\r\n <Button disabled={Object.keys(this.state.selectedLessonValue).length === 0} onClick={() => this.handleAddLessonDate()}>Add Lesson</Button>\r\n\r\n </div> : null}\r\n\r\n </div> : null}\r\n <br></br>\r\n\r\n {newLessonsToAdd.length > 0 ?\r\n <div>\r\n <div>\r\n <strong>\r\n Pending Lessons to Add:\r\n </strong>\r\n </div>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Lesson Date</th>\r\n <th>Time Slot</th>\r\n <th>Location</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {newLessonsToAdd.map((lesson, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{lesson.date}</td>\r\n <td>{lesson.slot}</td>\r\n <td>{lesson.location}</td>\r\n <td><Button variant=\"danger\" onClick={() => this.deleteNewLesson(index)}>Delete</Button></td>\r\n </tr>\r\n );\r\n })\r\n }\r\n </tbody>\r\n </Table>\r\n <Button onClick={() => this.saveNewLessons()} disabled={this.state.loading} variant=\"primary\">Save Lesson</Button>\r\n\r\n </div> : null}\r\n <div>\r\n <strong>Currently Scheduled Lessons</strong>\r\n </div>\r\n\r\n {lessonsScheduled.length > 0 ?\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Lesson Date</th>\r\n <th>Time Slot</th>\r\n <th>Location</th>\r\n <th>Instructor</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {lessonsScheduled.map((lesson, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{lesson.date}</td>\r\n <td>{lesson.slotName}</td>\r\n <td>{lesson.location}</td>\r\n <td>{lesson.instructor}</td>\r\n <td><Button variant=\"danger\" onClick={() => this.deleteOldLesson(index)}>Delete</Button></td>\r\n </tr>\r\n );\r\n })\r\n }\r\n </tbody>\r\n </Table>\r\n : \"No Lessons Scheduled\"}\r\n <div>\r\n <strong>Lessons with Scheduling Issues</strong>\r\n </div>\r\n {failedScheduledLessons.length > 0 ?\r\n\r\n <div>\r\n {failedScheduledLessons.map(lesson => {\r\n return (<div>{lesson}</div>);\r\n })}\r\n\r\n </div> : \"No Issues During Scheduling\"}\r\n\r\n <br></br>\r\n <br></br>\r\n\r\n <Button variant=\"success\" disabled={(this.state.selectedLessonStudent.hasOwnProperty(\"confirmScheduledRegular\") && this.state.selectedLessonStudent.confirmScheduledRegular === true)} onClick={() => this.handleConfirmRegularScheduleLessons(\"confirmScheduledRegular\")}>Confirm On Regular Schedule</Button>\r\n <Button variant=\"danger\" disabled={(!this.state.selectedLessonStudent.hasOwnProperty(\"confirmScheduledRegular\") || this.state.selectedLessonStudent.confirmScheduledRegular === false)} onClick={() => this.handleConfirmRegularScheduleLessons(\"undoConfirmScheduledRegular\")}>Undo Regular Schedule Confirm</Button>\r\n\r\n <br></br>\r\n <br></br>\r\n\r\n <Button size=\"sm\" variant=\"danger\" disabled={(this.state.selectedLessonStudent.hasOwnProperty(\"skipStudentLessons\") && this.state.selectedLessonStudent.skipStudentLessons === true)} onClick={() => this.handleSkipStudentLessons(\"skipStudentLessons\")}>Skip Scheduling Lessons</Button>\r\n <Button size=\"sm\" disabled={(!this.state.selectedLessonStudent.hasOwnProperty(\"skipStudentLessons\") || this.state.selectedLessonStudent.skipStudentLessons === false)} onClick={() => this.handleSkipStudentLessons(\"undoSkipStudentLessons\")}>Undo Skip Scheduling Lessons</Button>\r\n\r\n <br></br>\r\n <br></br>\r\n <Button size=\"sm\" disabled={this.state.showAddLessons || this.state.loading} onClick={() => this.setState({ showAddLessons: true })}>Add Extra Lessons</Button>\r\n\r\n <br></br>\r\n <br></br>\r\n\r\n {this.state.showAddLessons ? <div> <h3>Add Extra Lessons</h3>\r\n\r\n <Form noValidate validated={this.state.addLessonValidated} onSubmit={this.handleAddNewLessons} >\r\n <Form.Check inline label=\"Skip Payment\" type={\"checkbox\"} id={`skipExtraLessonsPayment`} checked={this.state.skipExtraLessonsPayment} onChange={() => this.setState({ skipExtraLessonsPayment: !this.state.skipExtraLessonsPayment })} />\r\n {!this.state.skipExtraLessonsPayment ? <div>\r\n <InputGroup className=\"mb-3\">\r\n <Form.Control required\r\n name=\"CCNumber\"\r\n type=\"text\"\r\n value={this.state.CCNumber}\r\n placeholder=\"Card Number\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a credit card number.</Form.Control.Feedback>\r\n\r\n </InputGroup>\r\n\r\n <Row>\r\n <Col>\r\n <Form.Label>First Name</Form.Label>\r\n <Form.Control required\r\n name=\"CCFirstName\"\r\n type=\"text\"\r\n value={this.state.CCFirstName}\r\n placeholder=\"First Name\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a first name.</Form.Control.Feedback>\r\n </Col>\r\n <Col>\r\n <Form.Label>Last Name</Form.Label>\r\n <Form.Control required\r\n name=\"CCLastName\"\r\n type=\"text\"\r\n value={this.state.CCLastName}\r\n placeholder=\"Last Name\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a last name.</Form.Control.Feedback>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <Form.Group controlId=\"CCExpiration\">\r\n <Form.Label>MM/YY</Form.Label>\r\n <Form.Control required\r\n name=\"CCExpiration\"\r\n type=\"text\"\r\n value={this.state.CCExpiration}\r\n placeholder=\"MM/YY\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input the credit card's expiration date.</Form.Control.Feedback>\r\n </Form.Group>\r\n\r\n </Col>\r\n <Col>\r\n <Form.Group controlId=\"CCCode\">\r\n <Form.Label>CVC</Form.Label>\r\n <Form.Control required\r\n name=\"CCCode\"\r\n type=\"text\"\r\n value={this.state.CCCode}\r\n placeholder=\"CVC\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input the credit card's CVC.</Form.Control.Feedback>\r\n </Form.Group>\r\n\r\n </Col>\r\n </Row>\r\n <Form.Group controlId=\"CCAddress\">\r\n <Form.Label>Billing Address</Form.Label>\r\n <Form.Control required\r\n name=\"CCAddress\"\r\n type=\"text\"\r\n value={this.state.CCAddress}\r\n placeholder=\"\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input the credit card's billing address.</Form.Control.Feedback>\r\n </Form.Group>\r\n\r\n <Row>\r\n <Col>\r\n <Form.Label>City</Form.Label>\r\n <Form.Control required\r\n name=\"CCCity\"\r\n type=\"text\"\r\n value={this.state.CCCity}\r\n placeholder=\"City\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a city.</Form.Control.Feedback>\r\n </Col>\r\n <Col>\r\n <Form.Label>State</Form.Label>\r\n <Form.Control required\r\n name=\"CCState\"\r\n type=\"text\"\r\n value={this.state.CCState}\r\n placeholder=\"State\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a state.</Form.Control.Feedback>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <Form.Label>Zip</Form.Label>\r\n <Form.Control required\r\n name=\"CCZip\"\r\n type=\"text\"\r\n value={this.state.CCZip}\r\n placeholder=\"Zip\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a zip.</Form.Control.Feedback>\r\n </Col>\r\n <Col>\r\n <Form.Label>Country</Form.Label>\r\n\r\n <Form.Control required\r\n name=\"CCCountry\"\r\n type=\"text\"\r\n value={this.state.CCCountry}\r\n placeholder=\"Country\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a country.</Form.Control.Feedback>\r\n </Col>\r\n </Row>\r\n\r\n\r\n </div> : <div></div>}\r\n <Row>\r\n <Col>\r\n <Form.Label>Lessons Wanted</Form.Label>\r\n\r\n <Form.Control required\r\n name=\"CCLessonsWanted\"\r\n type=\"number\"\r\n value={this.state.CCLessonsWanted}\r\n placeholder=\"Lessons Wanted\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input the lessons wanted.</Form.Control.Feedback>\r\n </Col>\r\n <Col>\r\n <Form.Label>Total Price</Form.Label>\r\n <InputGroup>\r\n <InputGroup.Text>$</InputGroup.Text>\r\n\r\n <Form.Control required\r\n name=\"CCLessonsPrice\"\r\n type=\"number\"\r\n value={this.state.CCLessonsPrice}\r\n placeholder=\"Total Price\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input the total price of new lessons.</Form.Control.Feedback>\r\n </InputGroup>\r\n\r\n </Col>\r\n\r\n </Row>\r\n <br></br>\r\n <Button disabled={this.state.loading} type=\"submit\">Add</Button>\r\n <br></br>\r\n <br></br>\r\n\r\n\r\n\r\n </Form></div> : null}\r\n {this.state.CCErrors ? <Alert variant=\"warning\">\r\n <strong>{this.state.CCErrors}</strong>\r\n </Alert> : null}\r\n\r\n </div>\r\n\r\n\r\n\r\n );\r\n\r\n }\r\n\r\n\r\n renderUnslottedStudentTimes() {\r\n\r\n let unslotedGroupTimes = this.state.unslotedGroupTimes;\r\n let unslotedMembers = this.state.unslotedMembers;\r\n\r\n let timesToStudentMap = new Map();\r\n\r\n let studentsWithoutSlots = [];\r\n\r\n for (let i = 0; i < unslotedMembers.length; i++) {\r\n var student = unslotedMembers[i];\r\n if (student.hasOwnProperty(\"unslotTime\")) {\r\n var slotName = student.unslotTime;\r\n\r\n if (timesToStudentMap.has(slotName)) {\r\n var existingStudents = timesToStudentMap.get(slotName);\r\n existingStudents.push(student);\r\n timesToStudentMap.set(slotName, existingStudents);\r\n } else {\r\n timesToStudentMap.set(slotName, [student]);\r\n\r\n }\r\n } else (\r\n studentsWithoutSlots.push(student)\r\n );\r\n }\r\n return (\r\n <div>\r\n {studentsWithoutSlots.length > 0 ? <div>There {studentsWithoutSlots.length === 1 ? <span>is</span> : <span>are</span>} {studentsWithoutSlots.length} student{studentsWithoutSlots.length === 1 ? null : 's'} remaining. </div>\r\n : <div>Looks like all students have been slotted.</div>\r\n }\r\n {this.state.unslotedGroupTimes.length === 0 ? <div>There are currently no slots. Please generate some to start filling in students.</div> :\r\n <div>\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th className=\"col-1\">Time</th>\r\n <th className=\"col-6\">Students</th>\r\n <th className=\"col-4\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {unslotedGroupTimes.map(x => x.slotName).map((time, index) => {\r\n if (timesToStudentMap.has(time)) {\r\n return (\r\n <tr key={index}>\r\n <td className=\"col-1\">{time}</td>\r\n <td className=\"col-6\"> Selected Student\r\n <Select\r\n isMulti\r\n value={\r\n timesToStudentMap.get(time).map(student => (\r\n {\r\n label: student.fName + \" \" + student.lName,\r\n value: student\r\n }\r\n )\r\n )\r\n } styles={{ menuPortal: base => ({ ...base, zIndex: 9999 }) }}\r\n onChange={(data) => this.handleUnslottedStudentPick(data, time, index)}\r\n options={studentsWithoutSlots.map(function (y) { return { value: y, label: y.fName + \" \" + y.lName }; })} />\r\n </td>\r\n <td><Button variant=\"danger\" disabled={this.state.loading == true} onClick={() => this.subtractUnslottedTime(time)}>Delete</Button></td>\r\n </tr>\r\n );\r\n } else {\r\n return (\r\n <tr key={index}>\r\n <td className=\"col-1\">{time}</td>\r\n\r\n <td className=\"col-6\"> Selected Student\r\n <Select\r\n isMulti\r\n value styles={{ menuPortal: base => ({ ...base, zIndex: 9999 }) }}\r\n onChange={(data) => this.handleUnslottedStudentPick(data, time, index)}\r\n options={studentsWithoutSlots.map(function (y) { return { value: y, label: y.fName + \" \" + y.lName }; })} />\r\n </td>\r\n <td><Button variant=\"danger\" onClick={() => this.subtractUnslottedTime(time)}>Delete</Button></td>\r\n </tr>\r\n );\r\n }\r\n })\r\n }\r\n\r\n </tbody>\r\n </Table>\r\n </div>\r\n\r\n }\r\n </div>\r\n\r\n );\r\n }\r\n\r\n\r\n\r\n handleSetLocationAndGetData = async (location) => {\r\n this.setState({ selectedLocation: location }, () => this.processLocationSlots());\r\n };\r\n\r\n render() {\r\n const { activeKey, selectedDays, selectedDay, dayOfExam, selectedDaysRange, selectedWeekday, APIDateStudentResults, filteredAPIDateStudentResults, addModalValidated } = this.state;\r\n\r\n const timeOptions = [\r\n { \"label\": \"5 Minutes\", \"value\": 5 },\r\n { \"label\": \"10 Minutes\", \"value\": 10 },\r\n { \"label\": \"15 Minutes\", \"value\": 15 },\r\n { \"label\": \"30 Minutes\", \"value\": 30 },\r\n { \"label\": \"45 Minutes\", \"value\": 45 },\r\n { \"label\": \"60 Minutes\", \"value\": 60 }\r\n\r\n ];\r\n\r\n return (\r\n <div className=\"holder\">\r\n\r\n <h3>Manage Appointments</h3>\r\n\r\n Please select the weekend/week you want to manage appointments for.\r\n <br></br>\r\n\r\n <Accordion defaultActiveKey=\"selectDays\" activeKey={activeKey}>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"selectDays\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n {this.state.selectedDays.length > 0 ? selectedDaysRange : \"Select Days\"}\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"selectDays\">\r\n <Card.Body>\r\n <div>\r\n\r\n <DayPicker\r\n numberOfMonths={2}\r\n selectedDays={selectedDays}\r\n showOutsideDays\r\n onDayClick={this.handleDayClick}\r\n />\r\n <br></br>\r\n {!this.state.fetchedStudents && selectedDays.length > 0 ? \"Please wait, loading students.\" : null}\r\n {this.state.fetchedStudents ?\r\n <div className=\"padLeft\">\r\n {this.state.selectedLocation.length > 0 ? <div>Now viewing lessons for: {this.state.selectedLocation}</div> : <div>Please select the road test location</div>}\r\n {this.state.locations.map((location, index) => {\r\n return (\r\n <Button disabled={this.state.selectedLocation === location} onClick={() => this.handleSetLocationAndGetData(location)}>{location}</Button>\r\n );\r\n })}\r\n <hr></hr>\r\n <Button disabled={this.state.loadingDay || this.state.selectedDay.length === 0} onClick={this.handleFirstNextButton}>{this.state.loadingDay ? \"Please wait. Loading students...\" : \"Slot Students\"}</Button>\r\n <Button disabled={this.state.loadingDay || this.state.selectedDay.length === 0} onClick={() => this.setState({ activeKey: \"manageStudents\" })}>{this.state.loadingDay ? \"Please wait. Loading students...\" : \"Add/Move/Delete Students\"}</Button>\r\n\r\n <Button bsStyle=\"primary\" disabled={this.state.loading || this.state.APIDateStudentResults.length === 0} onClick={this.handleFilterDownload}>Download Table Data</Button>\r\n <CSVLink ref={(r) => this.filterCSVLink = r} data={this.state.APIDateStudentResults} headers={headers} className=\"hidden\" filename={moment(this.state.selectedDay).format(\"YYYY_MM_DD_\") + this.state.selectedLocation + \"_StudentReport.csv\"}></CSVLink>\r\n\r\n </div>\r\n : null}\r\n\r\n\r\n\r\n </div>\r\n {selectedDay ?\r\n <div className=\"padLeft\">\r\n {this.state.fetchedStudents ?\r\n <div>\r\n {this.state.filteredAPIDateStudentResults ?\r\n this.state.filteredAPIDateStudentResults.length > 0 ? <div>Loaded {this.state.filteredAPIDateStudentResults.length} student{this.state.filteredAPIDateStudentResults.length === 1 ? null : 's'}. </div>\r\n : <div>\r\n {this.state.selectedLocation.length === 0 && this.state.APIDateStudentResults.length > 0 ?\r\n <div>There are multiple locations with students on this date. Please select a location. </div>\r\n :\r\n <div>No students found in this selection.</div>\r\n }\r\n </div> : null\r\n }\r\n </div> : null\r\n }\r\n </div> : null\r\n }\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"viewLessonStatus\" onClick={() => this.setState({ activeKey: \"viewLessonStatus\" })}>\r\n View Road Test Lesson Status\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"viewLessonStatus\">\r\n <Card.Body>\r\n {activeKey === \"viewLessonStatus\" ? <div>\r\n {this.state.EmailError ? <Alert variant=\"warning\">\r\n <strong>{this.state.EmailError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n </div> : null}\r\n\r\n\r\n {this.state.selectedDays.length > 0 ?\r\n <div>\r\n {this.state.selectedLocation.length === 0 ?\r\n <div>\r\n You have not selected a road test location. Please select a location first!\r\n <div className=\"padLeft\">\r\n {this.state.selectedLocation.length > 0 ? <div>Now viewing lessons for: {this.state.selectedLocation}</div> :\r\n null}\r\n <Button disabled={this.state.selectedLocation === \"West Roxbury\"} onClick={() => this.handleSetLocationAndGetData(\"West Roxbury\")}>West Roxbury</Button>\r\n <Button disabled={this.state.selectedLocation === \"Walpole\"} onClick={() => this.handleSetLocationAndGetData(\"Walpole\")}>Walpole</Button>\r\n </div>\r\n\r\n </div> :\r\n <div>\r\n {this.state.filteredAPIDateStudentResults.length === 0 ?\r\n <div>\r\n <div>No students found. Please select a new day, or add some students.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range\r\n </Button>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"manageStudents\" })}>\r\n Add Some Students\r\n </Button>\r\n <br></br>\r\n </div>\r\n :\r\n <div>\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n {!this.state.dataDirty ?\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Package</th>\r\n <th>Lessons Scheduled</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.filteredAPIDateStudentResults.map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.fName + \" \" + x.lName}</td>\r\n <td>{x.selectedPackage}\r\n {x.fullPricing.filter(x => x.name.includes(\"Extra Lesson\")).map(x => x.name).map(name => { return (<div>{name}</div>); })}\r\n </td>\r\n <td>\r\n {x.selectedPackage.includes(\"Lesson\") || x.hasOwnProperty(\"scheduledLessons\") && x.scheduledLessons.length > 0 ?\r\n <div>\r\n {x.skipStudentLessons ? \"N/A\" :\r\n <div>\r\n {x.scheduledLessons && x.scheduledLessons.length > 0 ?\r\n <div>\r\n {x.scheduledLessons.map(lesson => {\r\n return (\r\n <div>\r\n {moment(lesson.date).format(\"MM/DD/YYYY\") + \" at \" + lesson.slotName + \" in \" + lesson.location + \" with \" + lesson.instructor}\r\n </div>\r\n );\r\n })}\r\n\r\n </div> : \"No Lessons Scheduled \"\r\n }\r\n </div>\r\n }\r\n </div>\r\n : \"N/A\"\r\n }\r\n </td>\r\n\r\n <td>\r\n <Button variant={x.confirmScheduledRegular === true ? \"success\" : \"primary\"} onClick={() => this.handleLessonModalChange(true, index)} size=\"sm\">Manage Lessons</Button>\r\n </td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table> : null}\r\n\r\n\r\n </div>}\r\n </div>\r\n }\r\n </div>\r\n : <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <br></br>\r\n </div>}\r\n </Card.Body>\r\n\r\n </Accordion.Collapse>\r\n </Card>\r\n\r\n\r\n\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"manageStudents\" onClick={() => this.setState({ activeKey: \"manageStudents\" })}>\r\n Add/Move/Delete Students\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"manageStudents\">\r\n <Card.Body>\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n {activeKey === \"manageStudents\" ?\r\n <div>\r\n\r\n </div> : null}\r\n\r\n\r\n {this.state.selectedDays.length > 0 ?\r\n\r\n\r\n <div>\r\n {this.state.selectedLocation.length === 0 ?\r\n <div>\r\n You have not selected a road test location. Please select a location first!\r\n <div className=\"padLeft\">\r\n {this.state.selectedLocation.length > 0 ? <div>Now viewing lessons for: {this.state.selectedLocation}</div> :\r\n null}\r\n <Button disabled={this.state.selectedLocation === \"West Roxbury\"} onClick={() => this.handleSetLocationAndGetData(\"West Roxbury\")}>West Roxbury</Button>\r\n <Button disabled={this.state.selectedLocation === \"Walpole\"} onClick={() => this.handleSetLocationAndGetData(\"Walpole\")}>Walpole</Button>\r\n </div>\r\n\r\n </div> :\r\n\r\n <div>\r\n {this.state.fetchedStudents ?\r\n <div>\r\n <h4>Add Students</h4>\r\n\r\n <Button className=\"padLeft\" onClick={() => this.handleModalChange(true, \"add\")}>Open Add New Student Modal</Button>\r\n\r\n <br></br>\r\n <h4>Unsaved Students</h4>\r\n {this.state.unsavedManuallyAddedStudents.length > 0 ?\r\n <div>\r\n <Button className=\"padLeft\" variant=\"success\" disabled={this.state.loading} onClick={this.addNewStudents}>Save New Students</Button>\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr className=\"d-flex\">\r\n <th className=\"col-4\">Package</th>\r\n <th className=\"col-4\">First Name</th>\r\n <th className=\"col-4\">Last Name</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.unsavedManuallyAddedStudents.map((x, index) => {\r\n return (\r\n <tr key={index} className=\"d-flex\">\r\n <td className=\"col-4\">{x.student.selectedPackage}</td>\r\n <td className=\"col-4\">{x.student.fName}</td>\r\n <td className=\"col-4\">{x.student.lName}</td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n <br></br>\r\n </div>\r\n\r\n : <div>\r\n <br></br>\r\n There are no unsaved students.\r\n </div>\r\n }\r\n\r\n <h4>Current Students</h4>\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n\r\n {filteredAPIDateStudentResults.length > 0 ?\r\n <div>\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr className=\"d-flex\">\r\n <th className=\"col-4\">Package</th>\r\n <th className=\"col-4\">First Name</th>\r\n <th className=\"col-4\">Last Name</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {filteredAPIDateStudentResults.map((x, index) => {\r\n return (\r\n <tr key={index} className=\"d-flex\">\r\n <td className=\"col-4\">{x.selectedPackage}</td>\r\n <td className=\"col-4\">{x.fName}</td>\r\n <td className=\"col-4\">{x.lName}</td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n <br></br>\r\n <Button variant=\"secondary\" className=\"padLeft\" onClick={() => this.handleModalChange(true, \"move\")}>Move Student</Button>\r\n <Button variant=\"secondary\" className=\"padLeft\" onClick={() => this.handleModalChange(true, \"copy\")}>Copy Student</Button>\r\n\r\n <Button variant=\"danger\" className=\"padLeft\" onClick={() => this.handleModalChange(true, \"delete\")}>Delete Student</Button>\r\n\r\n\r\n </div> : <div><br></br>There are no saved students. </div>}\r\n\r\n\r\n </div> :\r\n <div>\r\n A date was not selected. Please select a date to add/move/delete students.\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range\r\n </Button>\r\n </div>\r\n }\r\n\r\n </div>}\r\n\r\n\r\n\r\n </div>\r\n\r\n : <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <br></br>\r\n </div>}\r\n\r\n\r\n\r\n\r\n </Card.Body>\r\n\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"sendInitialEmail\" onClick={() => this.setState({ activeKey: \"sendInitialEmail\" })}>\r\n Send Inital Emails\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"sendInitialEmail\">\r\n <Card.Body>\r\n\r\n {this.state.selectedDays.length > 0 ?\r\n <div>\r\n {this.state.selectedLocation.length === 0 ?\r\n <div>\r\n <p>You have not selected a road test location. Please select a location first!</p>\r\n <div className=\"padLeft\">\r\n {this.state.selectedLocation.length > 0 ? <div>Now viewing lessons for: {this.state.selectedLocation}</div> :\r\n null}\r\n <Button disabled={this.state.selectedLocation === \"West Roxbury\"} onClick={() => this.handleSetLocationAndGetData(\"West Roxbury\")}>West Roxbury</Button>\r\n <Button disabled={this.state.selectedLocation === \"Walpole\"} onClick={() => this.handleSetLocationAndGetData(\"Walpole\")}>Walpole</Button>\r\n </div>\r\n\r\n </div> :\r\n <div>\r\n {this.state.filteredAPIDateStudentResults.length === 0 ?\r\n <div>\r\n <div>No students found. Please select a new day, or add some students.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range\r\n </Button>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"manageStudents\" })}>\r\n Add Some Students\r\n </Button>\r\n <br></br>\r\n </div>\r\n :\r\n <div>\r\n <div>\r\n {this.state.EmailError ? <Alert variant=\"warning\">\r\n <strong>{this.state.EmailError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n </div>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={() => this.sendInitalEmailBulk([])}> Send all Unsent Inital Emails </Button>\r\n\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n {!this.state.dataDirty ?\r\n\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Inital Email</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.filteredAPIDateStudentResults.map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.fName + \" \" + x.lName}</td>\r\n <td>{x.emailInitalState}</td>\r\n <td>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendInitalEmailBulk([x])} size=\"sm\">Send Inital Email</Button>\r\n </td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table> : null}\r\n\r\n\r\n </div>}\r\n </div>\r\n }\r\n </div>\r\n : <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <br></br>\r\n </div>}\r\n </Card.Body>\r\n\r\n </Accordion.Collapse>\r\n </Card>\r\n\r\n {this.state.selectedLocation.includes(\"RMV Site\") ? <div>\r\n\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"slotStudents\" onClick={this.handleFirstNextButton}>\r\n Slotting Weekday Students\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"slotStudents\">\r\n <Card.Body>\r\n {activeKey === \"slotStudents\" ?\r\n <div>\r\n\r\n <div>\r\n <div>\r\n {this.state.unsavedManuallyAddedStudents.length > 0 ?\r\n <div>\r\n <div>Warning. You have unsaved manually added students from earlier. Please save these students first.</div>\r\n <Button className=\"padLeft\" variant=\"success\" onClick={this.addNewStudents}>Save New Students</Button>\r\n </div>\r\n\r\n : null\r\n }\r\n\r\n {this.state.unslotedGroupTimes.length === 0 ? null : <div> <div>Selected Groups Duration</div>\r\n {this.state.unslotedGroupTimes.map((selectedGroupTime) => {\r\n return <Button size=\"sm\" variant=\"info\">{selectedGroupTime.slotName}</Button>;\r\n })}\r\n </div>}\r\n\r\n <div>Select Duration of Each Slot</div>\r\n <Select\r\n value={this.state.selectedTimeSlot}\r\n onChange={(data) => this.handleSlotDurationChange(data)}\r\n options={timeOptions}\r\n />\r\n <br></br>\r\n\r\n <div>Generate/View Slots for {moment(dayOfExam).format(\"dddd, MMMM Do YYYY\")}</div>\r\n <br></br>\r\n <Row>\r\n <Col>\r\n <TimePicker start=\"5:00\" end=\"21:00\" step={this.state.slotTime} onChange={this.handleStartTimeChange} value={this.state.startTime} />\r\n </Col>\r\n <Col sm={1}>to</Col>\r\n <Col>\r\n <TimePicker start={timeFromInt(parseInt(this.state.startTime) + (60 * this.state.slotTime))} end=\"21:00\" step={this.state.slotTime} onChange={this.handleEndtimeTimeChange} value={this.state.endTime} />\r\n </Col>\r\n </Row>\r\n <br></br>\r\n <Button className=\"padLeft\" onClick={this.generateUnslottedGroupTimes}>Generate Group Time Slots</Button>\r\n\r\n {this.renderUnslottedStudentTimes()}\r\n\r\n\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n <Button variant=\"primary\" className=\"padLeft\" disabled={this.state.loading || selectedWeekday.length === 0} onClick={this.handleUnslottedTimeSave}> Save Slots </Button>\r\n\r\n {selectedWeekday ? null : <div>Please Confirm Day of Week for Exam First</div>}\r\n\r\n </div>\r\n </div>\r\n\r\n </div> : null}\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n\r\n\r\n\r\n\r\n </div> : <div>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"confirmWeekdayDate\" onClick={() => this.setState({ activeKey: \"confirmWeekdayDate\" })}>\r\n {selectedWeekday ? <div>{selectedWeekday}</div> : \"Confirm Day of Week for Exam\"}\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"confirmWeekdayDate\">\r\n <Card.Body>\r\n {activeKey === \"confirmWeekdayDate\" ?\r\n <div>\r\n {selectedDay ?\r\n <div>\r\n {this.renderWeekdayChoices(selectedDay)}\r\n </div>\r\n : <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range\r\n </Button>\r\n\r\n <br></br>\r\n </div>}\r\n\r\n </div>\r\n\r\n : null}\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"slotStudents\" onClick={this.handleFirstNextButton}>\r\n Slotting Students\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"slotStudents\">\r\n <Card.Body>\r\n {activeKey === \"slotStudents\" ?\r\n <div>\r\n {selectedDay ?\r\n <div>\r\n {this.state.selectedLocation.length === 0 ?\r\n <div>\r\n You have not selected a road test location. Please select a location first!\r\n <div className=\"padLeft\">\r\n {this.state.selectedLocation.length > 0 ? <div>Now viewing lessons for: {this.state.selectedLocation}</div> :\r\n null}\r\n <Button disabled={this.state.selectedLocation === \"West Roxbury\"} onClick={() => this.handleSetLocationAndGetData(\"West Roxbury\")}>West Roxbury</Button>\r\n <Button disabled={this.state.selectedLocation === \"Walpole\"} onClick={() => this.handleSetLocationAndGetData(\"Walpole\")}>Walpole</Button>\r\n </div>\r\n\r\n </div> :\r\n <div>\r\n {this.state.selectedLocation.includes(\"RMV Site\") ?\r\n <div>\r\n RMV Road Test Sites do not have slots. The email will be sent out requesting that folks show up at 7:45 am on the date.\r\n </div> :\r\n <div>\r\n <div>\r\n {this.state.unsavedManuallyAddedStudents.length > 0 ?\r\n <div>\r\n <div>Warning. You have unsaved manually added students from earlier. Please save these students first.</div>\r\n <Button className=\"padLeft\" variant=\"success\" onClick={this.addNewStudents}>Save New Students</Button>\r\n </div>\r\n\r\n : null\r\n }\r\n <div>Select Duration of Each Slot</div>\r\n <Select\r\n value={this.state.selectedTimeSlot}\r\n onChange={(data) => this.handleSlotDurationChange(data)}\r\n options={timeOptions}\r\n />\r\n <br></br>\r\n\r\n <div>Generate/View Slots for {moment(dayOfExam).format(\"dddd, MMMM Do YYYY\")}</div>\r\n <br></br>\r\n <Row>\r\n <Col>\r\n <TimePicker start=\"5:00\" end=\"21:00\" step={this.state.slotTime} onChange={this.handleStartTimeChange} value={this.state.startTime} />\r\n </Col>\r\n <Col sm={1}>to</Col>\r\n <Col>\r\n <TimePicker start={timeFromInt(parseInt(this.state.startTime) + (60 * this.state.slotTime))} end=\"21:00\" step={this.state.slotTime} onChange={this.handleEndtimeTimeChange} value={this.state.endTime} />\r\n </Col>\r\n </Row>\r\n <br></br>\r\n <Button className=\"padLeft\" onClick={this.generateSlots}>Generate Slots</Button>\r\n {this.state.unslotedMembers.length > 0 ? <div>There {this.state.unslotedMembers.length === 1 ? <span>is</span> : <span>are</span>} {this.state.unslotedMembers.length} student{this.state.unslotedMembers.length === 1 ? null : 's'} remaining. </div>\r\n : <div>Looks like all students have been slotted.</div>\r\n }\r\n </div>\r\n\r\n <div>\r\n <hr></hr>\r\n\r\n {this.state.slots.length === 0 ? <div>There are currently no slots. Please generate some to start filling in students.</div> : null}\r\n <br></br>\r\n <Table striped bordered hover responsive size=\"sm\">\r\n <thead>\r\n <tr className=\"d-flex\">\r\n <th className=\"col-1\">#</th>\r\n <th className=\"col-1\">Time</th>\r\n <th className=\"col-6\">Students</th>\r\n <th className=\"col-4\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.slots.map((x, index) => {\r\n return (\r\n <tr key={index} className=\"d-flex\">\r\n <td className=\"col-1\">{index + 1}</td>\r\n <td className=\"col-1\">{x.slotName}</td>\r\n <td className=\"col-6\">\r\n <Select\r\n value={{\r\n label: this.state.slots[index].person,\r\n value: this.state.slots[index].value\r\n }}\r\n onChange={(data) => this.handleStudentPick(data, index)}\r\n options={this.state.unslotedMembers.map(function (x) { return { value: x, label: x.fName + \" \" + x.lName }; })}\r\n /></td>\r\n <td className=\"col-4\">\r\n <Button variant=\"secondary\" disabled={index === 0} onClick={() => this.handleSlotMove(index, \"up\")} size=\"sm\">Move Up</Button>\r\n <Button variant=\"secondary\" disabled={index === this.state.slots.length - 1} onClick={() => this.handleSlotMove(index, \"down\")} size=\"sm\">Move Down</Button>\r\n <Button variant=\"secondary\" disabled={this.state.slots[index].person.length === 0} onClick={() => this.handleSlotClear(index)} size=\"sm\">Clear Slot</Button>\r\n <Button variant=\"danger\" onClick={() => this.handleSlotDelete(index)} size=\"sm\">Delete Slot</Button>\r\n </td>\r\n\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n\r\n <Button variant=\"primary\" className=\"padLeft\" disabled={this.state.loading || selectedWeekday.length === 0} onClick={this.handleSlotSave}> Save Slots </Button>\r\n\r\n {selectedWeekday ? null : <div>Please Confirm Day of Week for Exam First</div>}\r\n\r\n </div></div>\r\n }\r\n </div>\r\n }\r\n\r\n </div> :\r\n\r\n <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range\r\n </Button>\r\n <br></br>\r\n </div>}\r\n </div> : null}\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n </div>\r\n\r\n }\r\n\r\n\r\n\r\n\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"sendSlotEmail\" onClick={() => this.setState({ activeKey: \"sendSlotEmail\" })}>\r\n {this.state.selectedLocation.includes(\"RMV Site\") ? \"Send Emails/View Status\" : \"Send Slot Emails/View Status\"}\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"sendSlotEmail\">\r\n <Card.Body>\r\n {this.state.selectedDays.length > 0 ?\r\n\r\n <div>\r\n {this.state.selectedLocation.includes(\"RMV Site\") ?\r\n <div>\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n {this.state.dataDirty ? <div><Alert variant=\"warning\">\r\n <strong>Warning: You did not save updates to either the student data above, or the day of the week for the exam. You must save the student data prior to sending any emails.</strong>\r\n <br></br>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={this.handleSlotSave}> Save </Button>\r\n </Alert>\r\n\r\n </div> : null}\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={() => this.sendRoadTestSlotEmailsBulk([])}> Send all Unsent Emails </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.checkEmailDate}> Check Email Date </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.copyStudentEmailsToClipboard}> Copy All Student Emails to Clipboard </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.copyParentEmailsToClipboard}> Copy All Parent Emails to Clipboard </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.copyAllPhoneNumbersToClipboard}> Copy All Phone Numbers to Clipboard </Button>\r\n\r\n\r\n {this.state.emailSendDateData.length > 0 ? <div>The emails sent out will have a appointment date of: {this.state.emailSendDateData}</div> : null}\r\n\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Email</th>\r\n <th>Inital Email</th>\r\n <th>Time Email</th>\r\n <th>Confirmation</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n {this.state.unslotedMembers.length > 0 ?\r\n <tbody>\r\n {this.state.unslotedMembers.map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.fName + \" \" + x.lName}</td>\r\n <td>{x.emailAddress}</td>\r\n <td>{x.emailInitalState}</td>\r\n <td>{x.emailRoadTestSlotState}</td>\r\n <td>{x.emailRoadTestSlotConfirmed}</td>\r\n <td>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendInitalEmailBulk([x])} size=\"sm\">Send Inital Email</Button>\r\n <Button disabled={this.state.dataDirty || this.state.loading || !x.hasOwnProperty(\"unslotTime\")} onClick={() => this.sendRoadTestTimeEmailsBulk([x])} size=\"sm\">Send {x.hasOwnProperty(\"unslotTime\") ? x.unslotTime : \"MISSING TIME\"} Time Email</Button>\r\n </td>\r\n\r\n\r\n </tr>\r\n );\r\n })}\r\n </tbody> :\r\n <div></div>\r\n }\r\n\r\n </Table>\r\n </div> :\r\n <div>\r\n {this.state.slots.length === 0 ?\r\n <div>\r\n <div>No slotted students found. Please select a new day or slot some students.</div>\r\n <div>If you slotted students above, you have to hit the save button.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range </Button>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"slotStudents\" })}>\r\n Slot Some Students </Button>\r\n <br></br>\r\n </div> :\r\n <div>\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n {this.state.dataDirty ? <div><Alert variant=\"warning\">\r\n <strong>Warning: You did not save updates to either the student data above, or the day of the week for the exam. You must save the student data prior to sending any emails.</strong>\r\n <br></br>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={this.handleSlotSave}> Save </Button>\r\n </Alert>\r\n\r\n </div> : null}\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={() => this.sendRoadTestSlotEmailsBulk([])}> Send all Unsent Slot Emails </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.checkEmailDate}> Check Email Date </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.copyStudentEmailsToClipboard}> Copy All Student Emails to Clipboard </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.copyParentEmailsToClipboard}> Copy All Parent Emails to Clipboard </Button>\r\n <Button disabled={this.state.dataDirty || this.state.fetchingStudents || this.state.loading == true} onClick={this.copyAllPhoneNumbersToClipboard}> Copy All Phone Numbers to Clipboard </Button>\r\n\r\n\r\n {this.state.emailSendDateData.length > 0 ? <div>The emails sent out will have a appointment date of: {this.state.emailSendDateData}</div> : null}\r\n\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Email</th>\r\n <th>Weekday</th>\r\n <th>Time</th>\r\n <th>Inital Email</th>\r\n <th>Slot Email</th>\r\n <th>Confirmation</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object)).map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.value.fName + \" \" + x.value.lName}</td>\r\n <td>{x.value.emailAddress}</td>\r\n <td>{x.value.weekendDate}</td>\r\n <td>{x.value.slot}</td>\r\n <td>{x.value.emailInitalState}</td>\r\n <td>{x.value.emailRoadTestSlotState}</td>\r\n <td>{x.value.emailRoadTestSlotConfirmed}</td>\r\n <td>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendInitalEmailBulk([x.value])} size=\"sm\">Send Inital Email</Button>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendRoadTestSlotEmailsBulk([x.value])} size=\"sm\">Send Slot Email</Button>\r\n </td>\r\n\r\n\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n </div>}\r\n </div>}\r\n\r\n\r\n </div>\r\n\r\n : <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <br></br>\r\n </div>}\r\n </Card.Body>\r\n\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"viewCertStatus\" onClick={() => this.setState({ activeKey: \"viewCertStatus\" })}>\r\n View Certificate Status\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"viewCertStatus\">\r\n <Card.Body>\r\n {activeKey === \"viewCertStatus\" ? <div>\r\n {this.state.EmailError ? <Alert variant=\"warning\">\r\n <strong>{this.state.EmailError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n </div> : null}\r\n\r\n\r\n {this.state.selectedDays.length > 0 ?\r\n <div>\r\n {this.state.selectedLocation.includes(\"RMV Site\") ? <div>\r\n {this.state.unslotedMembers.length === 0 ?\r\n <div>\r\n <div>No students found. Please select a new day or add some students.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range\r\n </Button>\r\n <br></br>\r\n </div>\r\n :\r\n <div>\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n {!this.state.dataDirty ?\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>School</th>\r\n <th>Certificate Paid</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.unslotedMembers.map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.fName + \" \" + x.lName}</td>\r\n <td>{x.drivingSchool}</td>\r\n {!x.hasOwnProperty(\"certPaymentStatus\") || x.certPaymentStatus === false ?\r\n x.drivingSchool.includes(\"Parkway Driving School\") ? <td>Not Paid</td> : <td>N/A</td>\r\n :\r\n <td>Paid</td>\r\n }\r\n <td>\r\n <Button disabled={x.certPaymentStatus === true} onClick={() => this.handleChangeRoadTestCertificateStatus(index, \"certPaid\", false)} size=\"sm\">Mark Paid</Button>\r\n <Button disabled={!x.hasOwnProperty(\"certPaymentStatus\") || x.certPaymentStatus === false} onClick={() => this.handleChangeRoadTestCertificateStatus(index, \"certNotPaid\", false)} size=\"sm\">Mark Not Paid</Button>\r\n\r\n </td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table> : null}\r\n </div>}\r\n </div> :\r\n <div>\r\n {this.state.slots.length === 0 ?\r\n <div>\r\n <div>No slotted students found. Please select a new day or slot some students.</div>\r\n <div>If you slotted students above, you have to hit the save button.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>\r\n Select New Day Range\r\n </Button>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"slotStudents\" })}>\r\n Slot Some Students\r\n </Button>\r\n <br></br>\r\n </div>\r\n :\r\n <div>\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n {!this.state.dataDirty ?\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>School</th>\r\n <th>Certificate Paid</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object)).map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.value.fName + \" \" + x.value.lName}</td>\r\n <td>{x.value.drivingSchool}</td>\r\n {!x.value.hasOwnProperty(\"certPaymentStatus\") || x.value.certPaymentStatus === false ?\r\n x.value.drivingSchool.includes(\"Parkway Driving School\") ? <td>Not Paid</td> : <td>N/A</td>\r\n :\r\n <td>Paid</td>\r\n }\r\n <td>\r\n <Button disabled={x.value.certPaymentStatus === true} onClick={() => this.handleChangeRoadTestCertificateStatus(index, \"certPaid\", true)} size=\"sm\">Mark Paid</Button>\r\n <Button disabled={!x.value.hasOwnProperty(\"certPaymentStatus\") || x.value.certPaymentStatus === false} onClick={() => this.handleChangeRoadTestCertificateStatus(index, \"certNotPaid\", true)} size=\"sm\">Mark Not Paid</Button>\r\n\r\n </td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table> : null}\r\n </div>}</div>}\r\n </div>\r\n\r\n : <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <br></br>\r\n </div>}\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Accordion.Toggle as={Card.Header} eventKey=\"setRoadTestResultEmail\" onClick={() => this.setState({ activeKey: \"setRoadTestResultEmail\" })}>\r\n Set Road Test Results/Send Road Test Passed Email\r\n </Accordion.Toggle>\r\n <Accordion.Collapse eventKey=\"setRoadTestResultEmail\">\r\n <Card.Body>\r\n {activeKey === \"setRoadTestResultEmail\" ? <div>\r\n {this.state.EmailError ? <Alert variant=\"warning\">\r\n <strong>{this.state.EmailError}</strong>\r\n </Alert> : null}\r\n {this.state.refreshStatus ? <Alert variant=\"success\">\r\n <strong>{this.state.refreshStatus}</strong>\r\n </Alert> : null}\r\n </div> : null}\r\n\r\n {this.state.selectedDays.length > 0 ?\r\n <div>\r\n {this.state.selectedLocation.includes(\"RMV Site\") ? <div>\r\n {this.state.unslotedMembers.length === 0 ?\r\n <div>\r\n <div>No students found. Please select a new day.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <br></br>\r\n </div>\r\n :\r\n <div>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.handleChangeRoadTestStatus(-100, \"markpassed\", \"all\", false)}> Mark all students as passed </Button>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendRoadTestPassedEmailsBulk(false)}> Send all unsent emails to passed students </Button>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendRoadTestFailedEmailsBulk(false)}> Send all unsent emails to failed students </Button>\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n {!this.state.dataDirty ?\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Road Test Result</th>\r\n <th>Email Sent</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.unslotedMembers.map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.fName + \" \" + x.lName}</td>\r\n <td>{x.roadTestPassed ?\r\n <span>\r\n\r\n\r\n {x.roadTestPassed === \"noshow\" ? \"No Show\" :\r\n x.roadTestPassed === false ? \"Not Passed\" :\r\n \"Passed\"}\r\n </span>\r\n :\r\n \"Not Passed\"\r\n }\r\n </td>\r\n <td>{x.roadTestLicenseEmailSent ?\r\n <span>\r\n {x.roadTestLicenseEmailSent === false ? \"Not Sent\" : \"Sent\"}\r\n </span>\r\n :\r\n \"Not Sent\"\r\n }\r\n </td>\r\n <td>\r\n <Button disabled={x.roadTestPassed === true} onClick={() => this.handleChangeRoadTestStatus(index, \"markpassed\", 1, false)} size=\"sm\">Mark Passed</Button>\r\n <Button variant=\"danger\" disabled={!x.hasOwnProperty(\"roadTestPassed\") || x.roadTestPassed === false} onClick={() => this.handleChangeRoadTestStatus(index, \"marknotpassed\", 1, false)} size=\"sm\">Mark Not Passed</Button>\r\n <Button variant=\"warning\" disabled={x.roadTestPassed == \"noshow\"} onClick={() => this.handleChangeRoadTestStatus(index, \"marknoshow\", 1, false)} size=\"sm\">Mark No Show</Button>\r\n <Button variant=\"info\" disabled={!x.hasOwnProperty(\"roadTestLicenseEmailSent\") || x.roadTestLicenseEmailSent === false} onClick={() => this.handleChangeRoadTestStatus(index, \"resetRoadTestLicenseEmailSent\", 1, false)} size=\"sm\">Reset Sent Status</Button>\r\n </td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table> : null}\r\n\r\n\r\n </div>\r\n }\r\n </div> :\r\n <div>\r\n {this.state.slots.length === 0 ?\r\n <div>\r\n <div>No slotted students found. Please select a new day or slot some students.</div>\r\n <div>If you slotted students above, you have to hit the save button.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"slotStudents\" })}>Slot Some Students</Button>\r\n <br></br>\r\n </div>\r\n :\r\n <div>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.handleChangeRoadTestStatus(-100, \"markpassed\", \"all\", true)}> Mark all students as passed </Button>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendRoadTestPassedEmailsBulk(true)}> Send all unsent emails to passed students </Button>\r\n <Button disabled={this.state.dataDirty || this.state.loading} onClick={() => this.sendRoadTestFailedEmailsBulk(true)}> Send all unsent emails to failed students </Button>\r\n <Button className=\"rightBut\" disabled={this.state.refreshing || this.state.dataDirty} onClick={() => this.refreshStatus(this.state.activeKey)}> Refresh Status </Button>\r\n <br></br><br></br>\r\n {!this.state.dataDirty ?\r\n <Table striped bordered hover size=\"sm\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Road Test Result</th>\r\n <th>Email Sent</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.state.slots.filter(x => (Object.keys(x.value).length > 0 && x.value.constructor === Object)).map((x, index) => {\r\n return (\r\n <tr key={index}>\r\n <td>{x.value.fName + \" \" + x.value.lName}</td>\r\n <td>{x.value.roadTestPassed ?\r\n <span>\r\n\r\n\r\n {x.value.roadTestPassed === \"noshow\" ? \"No Show\" :\r\n x.value.roadTestPassed === false ? \"Not Passed\" :\r\n \"Passed\"}\r\n </span>\r\n :\r\n \"Not Passed\"\r\n }\r\n </td>\r\n <td>{x.value.roadTestLicenseEmailSent ?\r\n <span>\r\n {x.value.roadTestLicenseEmailSent === false ? \"Not Sent\" : \"Sent\"}\r\n </span>\r\n :\r\n \"Not Sent\"\r\n }\r\n </td>\r\n <td>\r\n <Button disabled={x.value.roadTestPassed === true} onClick={() => this.handleChangeRoadTestStatus(index, \"markpassed\", 1, true)} size=\"sm\">Mark Passed</Button>\r\n <Button variant=\"danger\" disabled={!x.value.hasOwnProperty(\"roadTestPassed\") || x.value.roadTestPassed === false} onClick={() => this.handleChangeRoadTestStatus(index, \"marknotpassed\", 1, true)} size=\"sm\">Mark Not Passed</Button>\r\n <Button variant=\"warning\" disabled={x.value.roadTestPassed == \"noshow\"} onClick={() => this.handleChangeRoadTestStatus(index, \"marknoshow\", 1, true)} size=\"sm\">Mark No Show</Button>\r\n <Button variant=\"info\" disabled={!x.value.hasOwnProperty(\"roadTestLicenseEmailSent\") || x.value.roadTestLicenseEmailSent === false} onClick={() => this.handleChangeRoadTestStatus(index, \"resetRoadTestLicenseEmailSent\", 1, true)} size=\"sm\">Reset Sent Status</Button>\r\n </td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table> : null}\r\n\r\n\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n : <div>\r\n <div>A date range was not selected. Please select a date range in order to pick a day of the week.</div>\r\n <br></br>\r\n <Button variant=\"primary\" onClick={() => this.setState({ activeKey: \"selectDays\" })}>Select New Day Range</Button>\r\n <br></br>\r\n </div>}\r\n\r\n\r\n </Card.Body>\r\n\r\n </Accordion.Collapse>\r\n </Card>\r\n </Accordion>\r\n\r\n\r\n <Modal\r\n size=\"lg\"\r\n show={this.state.showModal}\r\n onHide={() => this.setState({ showModal: false, modalView: \"\" })}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"example-custom-modal-styling-title\">\r\n {this.state.modalView === \"add\" ? \"Add New Student\" : null}\r\n {this.state.modalView === \"edit\" ? \"Edit Student\" : null}\r\n {this.state.modalView === \"copy\" ? \"Copy Student\" : null}\r\n {this.state.modalView === \"move\" ? \"Move Student\" : null}\r\n {this.state.modalView === \"delete\" ? \"Delete Student\" : null}\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n\r\n {this.state.modalView === \"add\" ?\r\n <Form noValidate validated={addModalValidated} onSubmit={this.handleAddNewUser} >\r\n <InputGroup className=\"mb-3\">\r\n <Form.Control\r\n name=\"drivingSchool\"\r\n type=\"text\"\r\n value={this.state.drivingSchool}\r\n placeholder=\"Enter Driving School Name (Optional)\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <InputGroup.Append>\r\n <Button variant=\"outline-secondary\" onClick={() => this.setState({ drivingSchool: \"Parkway Driving School\" })}>Parkway</Button>\r\n </InputGroup.Append>\r\n </InputGroup>\r\n\r\n <Row>\r\n <Col>\r\n <Form.Label>First Name</Form.Label>\r\n <Form.Control required\r\n name=\"firstName\"\r\n type=\"text\"\r\n value={this.state.firstName}\r\n placeholder=\"First Name\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a name.</Form.Control.Feedback>\r\n </Col>\r\n <Col>\r\n <Form.Label>Last Name</Form.Label>\r\n <Form.Control required\r\n name=\"lastName\"\r\n type=\"text\"\r\n value={this.state.lastName}\r\n placeholder=\"Last Name\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a name.</Form.Control.Feedback>\r\n </Col>\r\n </Row>\r\n <Form.Group controlId=\"dateOfBirth\">\r\n <Form.Label>Date of Birth</Form.Label>\r\n <Form.Control required\r\n name=\"dateOfBirth\"\r\n type=\"date\"\r\n value={this.state.dateOfBirth}\r\n placeholder=\"MM/DD/YYYY\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a DOB.</Form.Control.Feedback>\r\n </Form.Group>\r\n\r\n <Row>\r\n <Col>\r\n <Form.Group controlId=\"permitNumber\">\r\n <Form.Label>Permit Number</Form.Label>\r\n <Form.Control required\r\n name=\"permitNumber\"\r\n type=\"text\"\r\n value={this.state.permitNumber}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n </Form.Group>\r\n <Form.Control.Feedback type=\"invalid\">Please input a permit number.</Form.Control.Feedback>\r\n\r\n </Col>\r\n <Col>\r\n <Form.Group controlId=\"permitDate\">\r\n <Form.Label>Permit Issue Date</Form.Label>\r\n <Form.Control required\r\n name=\"permitIssueDate\"\r\n type=\"date\"\r\n value={this.state.permitIssueDate}\r\n placeholder=\"MM/DD/YYYY\"\r\n onChange={this.handleModalInputChange}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a permit issue date.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n </Col>\r\n </Row>\r\n\r\n <Form.Group controlId=\"email\">\r\n <Form.Label>Email</Form.Label>\r\n <Form.Control required\r\n name=\"email\"\r\n type=\"email\"\r\n value={this.state.email}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleModalInputChange}\r\n autoComplete=\"email\"\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a email address.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n <Form.Group controlId=\"phoneNumber\">\r\n <Form.Label>Phone Number</Form.Label>\r\n <Form.Control required\r\n name=\"phoneNumber\"\r\n type=\"tel\"\r\n value={this.state.phoneNumber}\r\n placeholder=\"Enter text\"\r\n onChange={this.handleModalInputChange}\r\n autoComplete=\"tel-national\"\r\n />\r\n <Form.Control.Feedback type=\"invalid\">Please input a phone number.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n <Form.Group controlId=\"roadTestPackage\">\r\n <Form.Label>Road Test Package</Form.Label>\r\n {this.state.avaliableOptions.map((e, key) => {\r\n return (\r\n <Form.Check\r\n key={key}\r\n required\r\n checked={this.state.roadTestPackageOption === e.package}\r\n name=\"roadTestPackage\"\r\n id={e.package}\r\n type=\"radio\"\r\n label={e.package}\r\n onChange={this.onRadioPackageChange}\r\n />\r\n );\r\n })}\r\n <Form.Control.Feedback type=\"invalid\">Please select a package.</Form.Control.Feedback>\r\n\r\n </Form.Group>\r\n\r\n <Form.Check inline label=\"Add Completion Certificate\" type={\"checkbox\"} id={`addCompletionCertificate`} checked={this.state.addCompletionCertificate} onChange={() => this.setState({ addCompletionCertificate: !this.state.addCompletionCertificate })} />\r\n <br></br>\r\n <Button type=\"submit\">Add</Button>\r\n <br></br>\r\n <br></br>\r\n\r\n\r\n\r\n </Form>\r\n : null}\r\n\r\n {this.state.modalView === \"move\" ?\r\n <div>\r\n <Form.Group controlId=\"formControlsSelectStudent\">\r\n <Form.Label>Select Student</Form.Label>\r\n <Form.Control\r\n name=\"selectedStudent\"\r\n as=\"select\"\r\n onChange={this.handleModalInputChange}\r\n >\r\n {APIDateStudentResults.map((x, index) => {\r\n var name = x.fName + \" \" + x.lName;\r\n return <option key={name + x.timestamp} value={index}>{name}</option>;\r\n })}\r\n </Form.Control>\r\n </Form.Group>\r\n\r\n <Form.Label>Enter new Date</Form.Label>\r\n\r\n <AsyncCreatableSelect\r\n value={this.state.newEditMoveDate}\r\n onChange={(data) => this.handleNewMoveDateChoice(data)}\r\n cacheOptions={false}\r\n loadOptions={this.loadRoadTestLessonDates}\r\n defaultOptions\r\n />\r\n {this.state.moveError.length > 0 ? <div>{this.state.moveError}</div>\r\n : null}\r\n\r\n <Button disabled={this.state.loading} onClick={this.handleMoveStudent}>\r\n {this.state.loading ? \"Please wait. Move Processing\" : \"Move\"}\r\n </Button>\r\n <div>The student will be moved as soon as the Move button is pressed.</div>\r\n <div>All email status and slot data will be cleared.</div>\r\n\r\n </div> : null\r\n }\r\n\r\n {this.state.modalView === \"copy\" ?\r\n <div>\r\n <Form.Group controlId=\"formControlsSelectStudent\">\r\n <Form.Label>Select Student</Form.Label>\r\n <Form.Control\r\n name=\"selectedStudent\"\r\n as=\"select\"\r\n onChange={this.handleModalInputChange}\r\n >\r\n {APIDateStudentResults.map((x, index) => {\r\n var name = x.fName + \" \" + x.lName;\r\n return <option key={name + x.timestamp} value={index}>{name}</option>;\r\n })}\r\n </Form.Control>\r\n </Form.Group>\r\n\r\n <Form.Label>Enter new Date</Form.Label>\r\n <AsyncSelect\r\n value={this.state.newCopyMoveDate}\r\n onChange={(data) => this.handleNewCopyDateChoice(data)}\r\n cacheOptions={false}\r\n loadOptions={this.loadRoadTestLessonDates}\r\n defaultOptions\r\n />\r\n {this.state.copyError.length > 0 ? <div>{this.state.copyError}</div>\r\n : null}\r\n\r\n <Button disabled={this.state.loading} onClick={this.handleCopyStudent}>\r\n {this.state.loading ? \"Please wait. Copy Processing\" : \"Copy\"}\r\n </Button>\r\n <div>The student will be copied as soon as the Copy button is pressed.</div>\r\n </div> : null\r\n }\r\n\r\n {this.state.modalView === \"delete\" ?\r\n <div>\r\n <Form.Group controlId=\"formControlsSelectStudent\">\r\n <Form.Label>Select Student</Form.Label>\r\n <Form.Control\r\n name=\"selectedStudent\"\r\n as=\"select\"\r\n onChange={this.handleModalInputChange}\r\n >\r\n {APIDateStudentResults.map((x, index) => {\r\n var name = x.fName + \" \" + x.lName;\r\n return <option key={name + x.timestamp} value={index}>{name}</option>;\r\n })}\r\n </Form.Control>\r\n </Form.Group>\r\n {this.state.deleteError.length > 0 ? <div>{this.state.deleteError}</div>\r\n : null}\r\n\r\n <Button disabled={this.state.loading} variant=\"danger\" onClick={this.handleDeleteStudent}>\r\n {this.state.loading ? \"Please wait. Delete Processing\" : \"Delete\"}\r\n </Button>\r\n <div>The student will be deleted as soon as the Delete button is pressed.</div>\r\n </div> : null\r\n }\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={() => this.setState({ showModal: false, modalView: \"\" })}\r\n >Close</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n\r\n <Modal\r\n size=\"lg\"\r\n show={this.state.showManageLessons}\r\n onHide={() => this.setState({ showManageLessons: false, modalView: \"\" })}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"manage-road-test-lessons\">\r\n Manage Road Test Lessons\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n {this.state.selectedLessonStudent && Object.keys(this.state.selectedLessonStudent).length > 0 ? this.renderLessonState() : <div>There are no lessons to render.</div>}\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={() => this.setState({ showManageLessons: false })}\r\n >Close</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'formik';\r\nclass ErrorFocus extends React.Component {\r\n isObject(value) {\r\n return value && typeof value === 'object' && value.constructor === Object;\r\n }\r\n getKeysRecursively = (object) => {\r\n if (!this.isObject(object)) {\r\n return ''\r\n }\r\n const currentKey = Object.keys(object)[0]\r\n if (!this.getKeysRecursively(object[currentKey])) {\r\n return currentKey\r\n }\r\n return currentKey + \".\" + this.getKeysRecursively(object[currentKey])\r\n }\r\n componentDidUpdate(prevProps) {\r\n const { isSubmitting, isValidating, errors } = prevProps.formik;\r\n const keys = Object.keys(errors);\r\n if (keys.length > 0 && isSubmitting && !isValidating) {\r\n const selectorKey = this.getKeysRecursively(errors)\r\n const selector = `[id=\"${selectorKey}\"], [name=\"${selectorKey}\"] `;\r\n const errorElement = document.querySelector(selector);\r\n if(errorElement){\r\n errorElement.focus();\r\n }\r\n }\r\n }\r\n render() {\r\n return null;\r\n }\r\n}\r\nexport default connect(ErrorFocus);","import { Formik, Field, FastField } from \"formik\";\r\nimport React from \"react\";\r\nimport Select from \"react-select\";\r\nimport AsyncSelect from 'react-select/async';\r\nimport ErrorFocus from './ErrorFocus';\r\nimport * as Yup from \"yup\";\r\nimport classnames from 'classnames';\r\nimport './RegistrationForm.css';\r\nimport moment from 'moment-timezone';\r\nimport { Row, Col, Modal, Image, Alert, Button } from 'react-bootstrap';\r\nimport 'react-credit-cards/es/styles-compiled.css';\r\nimport Payment from 'payment';\r\nimport './Form.css';\r\nimport Cards from 'react-credit-cards';\r\n\r\nmoment.tz.setDefault(\"America/New_York\");\r\n\r\nconst drivingSchool = [\r\n { label: \"I attended Parkway Driving School\", value: \"Parkway Driving School\" },\r\n { label: \"I attended a different driving school\", value: \"Other Driving School\" },\r\n { label: \"I did not attend a driving school\", value: \"No Driving School\" }\r\n];\r\n\r\nconst InputFeedback = ({ error }) =>\r\n error ? <div className=\"input-feedback\">{error}</div> : null;\r\n\r\nclass TextInput extends React.Component {\r\n handleBlur = () => {\r\n // this is going to call setFieldTouched and manually update touched.topcis\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n\r\n render() {\r\n const classes = classnames(\r\n \"input-field\",\r\n {\r\n \"is-success\": this.props.value || (!this.props.error && this.props.touched), // handle prefilled or user-filled\r\n \"is-error\": !!this.props.error && this.props.touched\r\n },\r\n classnames\r\n );\r\n\r\n return (\r\n\r\n <div className={classes}>\r\n\r\n <label style={{ display: \"block\" }}>\r\n {this.props.label}\r\n </label>\r\n\r\n <FastField name={this.props.id}\r\n placeholder={this.props.placeholder}\r\n type={this.props.type}\r\n\r\n className={\r\n this.props.error && this.props.touched ? (\r\n 'text-input error'\r\n ) : (\r\n 'text-input'\r\n )\r\n } />\r\n {this.props.touched && <InputFeedback error={this.props.error} />}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nclass DOBTextInput extends React.Component {\r\n handleBlur = () => {\r\n let inputDate = this.props.value;\r\n if (moment(inputDate, \"M/D/YYYY\", true).isValid() || moment(inputDate, \"M/D/YY\", true).isValid() || moment(inputDate, \"YYYY-MM-DD\", true).isValid()) {\r\n var parsedDate = moment();\r\n if (moment(inputDate, \"M/D/YYYY\", true).isValid()) {\r\n parsedDate = moment(inputDate, \"M/D/YYYY\", true);\r\n }\r\n else if (moment(inputDate, \"M/D/YY\", true).isValid()) {\r\n parsedDate = moment(inputDate, \"M/D/YY\", true);\r\n }\r\n else {\r\n parsedDate = moment(inputDate, \"YYYY-MM-DD\", true);\r\n }\r\n if (parsedDate.add(18, 'years').isAfter(moment())) {\r\n this.props.setFieldValue(\"showParentConf\", true);\r\n this.props.onBlur(this.props.id, true);\r\n }\r\n }\r\n else {\r\n this.props.onBlur(this.props.id, true);\r\n\r\n }\r\n };\r\n\r\n render() {\r\n const classes = classnames(\r\n \"input-field\",\r\n {\r\n \"is-success\": this.props.value || (!this.props.error && this.props.touched), // handle prefilled or user-filled\r\n \"is-error\": !!this.props.error && this.props.touched\r\n },\r\n classnames\r\n );\r\n return (\r\n\r\n <div className={classes}>\r\n <label style={{ display: \"block\" }}>\r\n {this.props.label}\r\n </label>\r\n <input\r\n id={this.props.id}\r\n placeholder={this.props.placeholder}\r\n type={this.props.type}\r\n value={this.props.value}\r\n onChange={this.props.onChange}\r\n onBlur={this.handleBlur}\r\n className={\r\n this.props.error && this.props.touched ? (\r\n 'text-input error'\r\n ) : (\r\n 'text-input'\r\n )\r\n }\r\n />\r\n {this.props.touched && <InputFeedback error={this.props.error} />}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nclass CCTextInput extends React.Component {\r\n handleBlur = () => {\r\n // this is going to call setFieldTouched and manually update touched.topics\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n\r\n handleChange = e => {\r\n if (this.props.CCField === \"number\") {\r\n this.props.onChange(this.props.id, Payment.fns.formatCardNumber(e.target.value));\r\n }\r\n else if (this.props.CCField === \"expiry\") {\r\n if (e.target.value.length > 2 && e.target.value.length < 4) {\r\n let first = \"\";\r\n if (e.target.value.slice(2, 3) === \"/\") {\r\n first = e.target.value.slice(0, 2) + \" / \";\r\n\r\n }\r\n else {\r\n first = e.target.value.slice(0, 2) + \" / \" + e.target.value.slice(2, 3);\r\n\r\n }\r\n this.props.onChange(this.props.id, first.replace(/[^0-9\\s//]/gi, ''));\r\n }\r\n else if (e.target.value.length > 4 && e.target.value.length <= 5) {\r\n let first = e.target.value.slice(0, 2);\r\n this.props.onChange(this.props.id, first.replace(/[^0-9\\s//]/gi, ''));\r\n }\r\n else if (e.target.value.length > 9) {\r\n this.props.onChange(this.props.id, e.target.value.slice(0, 9).replace(/[^0-9\\s//]/gi, ''));\r\n }\r\n else {\r\n this.props.onChange(this.props.id, e.target.value.replace(/[^0-9\\s//]/gi, ''));\r\n\r\n }\r\n }\r\n else if (this.props.CCField === \"cvc\") {\r\n if (e.target.value.length > 4) {\r\n this.props.onChange(this.props.id, e.target.value.slice(0, 4));\r\n }\r\n else {\r\n this.props.onChange(this.props.id, e.target.value);\r\n }\r\n }\r\n else {\r\n // this is going to call setFieldValue and manually update values.\r\n this.props.onChange(this.props.id, e.target.value);\r\n }\r\n this.props.onChange(\"focused\", this.props.CCField);\r\n\r\n };\r\n render() {\r\n const classes = classnames(\r\n \"input-field\",\r\n {\r\n \"is-success\": this.props.value || (!this.props.error && this.props.touched), // handle prefilled or user-filled\r\n \"is-error\": !!this.props.error && this.props.touched\r\n },\r\n classnames\r\n );\r\n\r\n return (\r\n\r\n <div className={classes}>\r\n\r\n <label style={{ display: \"block\" }}>\r\n {this.props.label}\r\n </label>\r\n <input\r\n name={this.props.id}\r\n id={this.props.id}\r\n placeholder={this.props.placeholder}\r\n value={this.props.value}\r\n onChange={this.handleChange}\r\n onBlur={this.handleBlur}\r\n className={\r\n this.props.error && this.props.touched ? (\r\n 'text-input error'\r\n ) : (\r\n 'text-input'\r\n )\r\n }\r\n />\r\n {this.props.touched && <InputFeedback error={this.props.error} />}\r\n </div>\r\n );\r\n }\r\n}\r\nconst Checkbox = ({\r\n field: { name, value, onChange, onBlur },\r\n form: { errors, touched, setFieldValue },\r\n id,\r\n label,\r\n className,\r\n ...props\r\n}) => {\r\n return (\r\n <div>\r\n <input\r\n name={name}\r\n id={id}\r\n type=\"checkbox\"\r\n value={props.value}\r\n checked={props.value}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n className={classnames(\"radio-button\")}\r\n />\r\n <label htmlFor={id}>I understand that there are <strong className=\"error\">no refunds for road tests</strong> and tests <strong className=\"error\"> can not be rescheduled within 14 days </strong>of the date requested.</label>\r\n {touched[name] && <InputFeedback error={errors[name]} />}\r\n </div>\r\n );\r\n};\r\nconst addCompletionCertificateCheckBox = ({\r\n field: { name, value, onChange, onBlur },\r\n form: { errors, touched, setFieldValue },\r\n id,\r\n label,\r\n className,\r\n ...props\r\n}) => {\r\n return (\r\n <div>\r\n <label htmlFor={id}>Pay for Driver's Education Completion Ceritification<br></br>(Only for <strong className=\"error\">Parkway students taking teen driver ed program</strong>)</label>\r\n\r\n <input\r\n name={name}\r\n id={id}\r\n type=\"checkbox\"\r\n value={props.value}\r\n checked={props.value}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n className={classnames(\"radio-button\")}\r\n />\r\n <label htmlFor={id}>Add Teen Driver Completion Certificate Fee (+$20)</label>\r\n <label htmlFor={id}>This certification only needs to be purchased once. If you have previously paid for your driver's ed certification do not repurchase.</label>\r\n {touched[name] && <InputFeedback error={errors[name]} />}\r\n </div>\r\n );\r\n};\r\n\r\n// Radio input\r\nclass RadioButtonDateLocation extends React.Component {\r\n handleChange = () => {\r\n this.props.form.setFieldValue(\"location\", this.props.location, false);\r\n this.props.form.setFieldValue(\"roadTestDateOption\", this.props.date, false);\r\n this.props.form.setFieldValue(\"fullRoadTestDateOption\", this.props.id, false);\r\n this.props.form.setFieldValue(\"lessonDate\", \"\", false);\r\n this.props.form.setFieldValue(\"lessonDateSlot\", \"\", false);\r\n this.props.form.setFieldValue(\"selectedLessonChoices\", [], false);\r\n\r\n };\r\n render() {\r\n return (\r\n <div>\r\n <input\r\n name={this.props.name}\r\n id={this.props.id}\r\n type=\"radio\"\r\n value={this.props.id} // could be something else for output?\r\n checked={this.props.id === this.props.form.values.fullRoadTestDateOption}\r\n onChange={this.handleChange}\r\n onBlur={this.props.onBlur}\r\n className={classnames(\"radio-button\")}\r\n />\r\n <label htmlFor={this.props.id}>{this.props.label}</label>\r\n </div>\r\n );\r\n }\r\n};\r\n\r\n// Radio input\r\nclass DrivingSchoolRadioButtonChoice extends React.Component {\r\n handleChange = value => {\r\n //console.log(value)\r\n if (value !== \"Other Driving School\") {\r\n this.props.onChange(\"drivingSchool\", value);\r\n }\r\n else {\r\n this.props.onChange(\"drivingSchool\", \"\");\r\n }\r\n this.props.onChange(\"drivingSchoolChoice\", value);\r\n };\r\n handleBlur = () => {\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n\r\n render() {\r\n return (\r\n <div>\r\n <input\r\n name={this.props.name}\r\n id={this.props.id}\r\n type=\"radio\"\r\n value={this.props.id} // could be something else for output?\r\n checked={this.props.id === this.props.value}\r\n onChange={() => this.handleChange(this.props.id)}\r\n onBlur={this.handleBlur}\r\n className={classnames(\"radio-button\")}\r\n />\r\n <label htmlFor={this.props.id}>{this.props.label}</label>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n// Lesson Display and Removal\r\nclass RoadTestLessonDisplayButton extends React.Component {\r\n clearLesson = (date, slot) => {\r\n let selectedLessonChoices = this.props.values;\r\n selectedLessonChoices = selectedLessonChoices.filter(x => !(x.date === date && x.slot === slot));\r\n this.props.onChange(\"selectedLessonChoices\", selectedLessonChoices);\r\n };\r\n handleBlur = () => {\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n render() {\r\n return (\r\n <div className={'lessonTimes'}>\r\n {this.props.label}\r\n <Button variant=\"danger\" size=\"sm\" onClick={() => this.clearLesson(this.props.selectedLesson.date, this.props.selectedLesson.slot)}>X</Button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n// Radio input for Road Lessons\r\nclass RoadTestRadioButtonChoice extends React.Component {\r\n handleLessonChange = value => {\r\n this.props.onChange(\"roadTestPackage\", value);\r\n this.props.onChange(\"lessonsNeeded\", parseInt(this.props.package.lessons));\r\n };\r\n handleBlur = () => {\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n render() {\r\n return (\r\n <div>\r\n <input\r\n name={this.props.name}\r\n id={this.props.id}\r\n type=\"radio\"\r\n value={this.props.id}\r\n checked={this.props.id === this.props.value}\r\n onChange={() => this.handleLessonChange(this.props.id)}\r\n className={classnames(\"radio-button\")}\r\n />\r\n <label htmlFor={this.props.id}>{this.props.label}</label>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n// Radio group\r\nconst RadioButtonGroup = ({\r\n value,\r\n error,\r\n touched,\r\n label,\r\n className,\r\n children,\r\n sublabel\r\n}) => {\r\n const classes = classnames(\r\n \"input-field\",\r\n {\r\n \"is-success\": value || (!error && touched), // handle prefilled or user-filled\r\n \"is-error\": !!error\r\n },\r\n className\r\n );\r\n return (\r\n <div className={classes}>\r\n <fieldset>\r\n <legend>{label}</legend>\r\n <label className=\"error\">{sublabel}</label>\r\n {children}\r\n {touched && <InputFeedback error={error} />}\r\n </fieldset>\r\n </div>\r\n );\r\n};\r\n\r\nconst sourceOptions = [\r\n { value: 'Word of Mouth', label: 'Word of Mouth' },\r\n { value: 'Google', label: 'Google' },\r\n { value: 'Parkway Reminder Email', label: 'Parkway Reminder Email' },\r\n { value: 'Other', label: 'Other' }\r\n];\r\n\r\nclass FormikSelect extends React.Component {\r\n handleChange = value => {\r\n // this is going to call setFieldValue and manually update values.\r\n if (value.label !== \"Other\") {\r\n this.props.onChange(\"sourceText\", value.label);\r\n }\r\n else {\r\n this.props.onChange(\"sourceText\", \"\");\r\n }\r\n this.props.onChange(this.props.id, value);\r\n };\r\n\r\n handleBlur = () => {\r\n // this is going to call setFieldTouched and manually update touched\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n\r\n render() {\r\n return (\r\n <div style={{ margin: \"1rem 0\" }}>\r\n <label htmlFor=\"color\">How did you hear about us?</label>\r\n <Select\r\n id=\"color\"\r\n options={this.props.options}\r\n onChange={this.handleChange}\r\n onBlur={this.handleBlur}\r\n value={Object.entries(this.props.value).length === 0 && this.props.value.constructor === Object ? null : this.props.value}\r\n />\r\n {this.props.touched && <InputFeedback error={this.props.error && this.props.error.value} />}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\nclass FormikSelectRoadLessonDate extends React.Component {\r\n\r\n handleChange = value => {\r\n this.props.onChange(this.props.id, value.value);\r\n let allLessonData = this.props.fetchedLessons;\r\n console.log(allLessonData);\r\n this.props.onChange(\"selectedDayLessonOptions\", allLessonData[value.value].sort((a, b) => (a.startTime > b.startTime) ? 1 : -1).map(x => ({ \"value\": x.timeSlot, \"label\": x.timeSlot + \" at \" + x.location, \"location\": x.location })));\r\n };\r\n\r\n handleBlur = () => {\r\n // this is going to call setFieldTouched and manually update touched\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n loadOptions = (inputValue, callback) => {\r\n let that = this;\r\n let roadTestDate = this.props.selectedDay.substring(0, 10);\r\n fetch('https://x4g3mwhate.execute-api.us-east-1.amazonaws.com/dev/getpubliclessondates', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'post',\r\n body: JSON.stringify({ \"start\": roadTestDate, \"location\": this.props.location }\r\n )\r\n }).then(that.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n let roadTestLessonDates = Object.keys(data)\r\n .filter(date => moment(date).isBefore(moment(roadTestDate)))\r\n .map(x => ({ \"value\": x, \"label\": moment(x).format('MM/DD/YYYY (dddd)') }));\r\n that.props.onChange(\"fetchedLessons\", data);\r\n callback(roadTestLessonDates);\r\n });\r\n };\r\n\r\n render() {\r\n let roadTestDate = this.props.selectedDay.substring(0, 10);\r\n\r\n return (\r\n <div style={{ margin: \"1rem 0\" }}>\r\n <AsyncSelect\r\n key={roadTestDate + this.props.location}\r\n cacheOptions={false}\r\n loadOptions={this.loadOptions}\r\n defaultOptions\r\n noOptionsMessage={() => \"No lessons avaliable for \" + roadTestDate + \".\"}\r\n onChange={this.handleChange}\r\n />\r\n {this.props.touched && <InputFeedback error={this.props.error && this.props.error.value} />}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nclass FormikAddLesson extends React.Component {\r\n handleChange = (date, slot) => {\r\n let lesson = {\r\n \"date\": date,\r\n \"slot\": slot.value,\r\n \"location\": slot.location\r\n };\r\n\r\n let selectedLessonChoices = this.props.selectedLessonChoices;\r\n\r\n let matchedLessonChoices = selectedLessonChoices.filter(x => x.date === date && x.slot === slot);\r\n\r\n if (matchedLessonChoices.length === 0) {\r\n selectedLessonChoices.push(lesson);\r\n this.props.onChange(\"selectedLessonChoices\", selectedLessonChoices);\r\n }\r\n };\r\n\r\n handleBlur = () => {\r\n // this is going to call setFieldTouched and manually update touched\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n loadOptions = (inputValue, callback) => {\r\n callback(this.props.selectedDayLessonOptions);\r\n };\r\n\r\n render() {\r\n return (\r\n <button type=\"button\" onClick={() => this.handleChange(this.props.lessonDate, this.props.lessonDateSlot)}>\r\n Add Lesson\r\n </button>\r\n );\r\n }\r\n}\r\n\r\nclass FormikSelectRoadLessonDateSlot extends React.Component {\r\n handleChange = value => {\r\n this.props.onChange(this.props.id, value);\r\n };\r\n\r\n handleBlur = () => {\r\n // this is going to call setFieldTouched and manually update touched\r\n this.props.onBlur(this.props.id, true);\r\n };\r\n loadOptions = (inputValue, callback) => {\r\n callback(this.props.selectedDayLessonOptions);\r\n };\r\n\r\n render() {\r\n let roadTestDate = this.props.selectedDay.substring(0, 10);\r\n return (\r\n <div style={{ margin: \"1rem 0\" }}>\r\n <AsyncSelect\r\n key={\"slots\" + roadTestDate}\r\n cacheOptions={false}\r\n loadOptions={this.loadOptions}\r\n defaultOptions\r\n onChange={this.handleChange}\r\n />\r\n {this.props.touched && <InputFeedback error={this.props.error && this.props.error.value} />}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\nclass RegistrationForm extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n roadTestDates: [],\r\n avaliableOptions: [],\r\n loading: false,\r\n showConfirmation: false,\r\n lessonsNeeded: 0,\r\n selectedLessons: [],\r\n apiResponseError: \"\",\r\n roadTestDatesFile: {}\r\n };\r\n this.formikRef = React.createRef();\r\n }\r\n handleErrors = (response) => {\r\n if (!response.ok) {\r\n console.log(response.statusText);\r\n }\r\n return response;\r\n };\r\n responseHandler = (response) => {\r\n try {\r\n let formikVals = this.formikRef.current.values;\r\n if (response.messages.resultCode === \"Error\") {\r\n var i = 0;\r\n while (i < response.messages.message.length) {\r\n console.log(\r\n response.messages.message[i].code + \": \" +\r\n response.messages.message[i].text\r\n );\r\n i = i + 1;\r\n }\r\n }\r\n else {\r\n //The Authorize NET request was successful!\r\n //To handle how different browsers handle date input. AKA IE\r\n var parsedDOBDate = moment();\r\n var parsedPermitDate = moment();\r\n if (moment(formikVals.dateOfBirth, \"M/D/YYYY\", true).isValid()) {\r\n parsedDOBDate = moment(formikVals.dateOfBirth, \"M/D/YYYY\", true);\r\n }\r\n else if (moment(formikVals.dateOfBirth, \"M/D/YY\", true).isValid()) {\r\n parsedDOBDate = moment(formikVals.dateOfBirth, \"M/D/YY\", true);\r\n }\r\n else {\r\n parsedDOBDate = moment(formikVals.dateOfBirth, \"YYYY-MM-DD\", true);\r\n }\r\n if (moment(formikVals.permitIssueDate, \"M/D/YYYY\", true).isValid()) {\r\n parsedPermitDate = moment(formikVals.permitIssueDate, \"M/D/YYYY\", true);\r\n }\r\n else if (moment(formikVals.permitIssueDate, \"M/D/YY\", true).isValid()) {\r\n parsedPermitDate = moment(formikVals.permitIssueDate, \"M/D/YY\", true);\r\n }\r\n else {\r\n parsedPermitDate = moment(formikVals.permitIssueDate, \"YYYY-MM-DD\", true);\r\n }\r\n const self = this;\r\n let nonce = response.opaqueData.dataValue;\r\n let body = {\r\n fName: formikVals.firstName,\r\n lName: formikVals.lastName,\r\n dob: parsedDOBDate.format(\"YYYY-MM-DD\"),\r\n permitNo: formikVals.permitNumber,\r\n permitDate: parsedPermitDate.format(\"YYYY-MM-DD\"),\r\n email: formikVals.email,\r\n parentEmail: formikVals.parentEmail,\r\n phone: formikVals.phoneNumber,\r\n package: formikVals.roadTestPackage,\r\n roadTestChoiceDate: formikVals.roadTestDateOption,\r\n drivingSchool: formikVals.drivingSchool,\r\n nonce: nonce,\r\n source: Object.keys(formikVals.source).length > 0 ? formikVals.source.label : \"None Specified\",\r\n CCFirstName: formikVals.CCFirstName,\r\n CCLastName: formikVals.CCLastName,\r\n CCAddress: formikVals.CCAddress,\r\n CCCity: formikVals.CCCity,\r\n CCState: formikVals.CCState,\r\n CCZip: formikVals.CCZip,\r\n CCCountry: formikVals.CCCountry,\r\n addCompletionCertificate: formikVals.addCompletionCertificate,\r\n location: formikVals.location\r\n };\r\n\r\n if (formikVals.lessonsNeeded > 0) {\r\n body[\"selectedLessonChoices\"] = formikVals.selectedLessonChoices;\r\n }\r\n\r\n fetch('https://x4g3mwhate.execute-api.us-east-1.amazonaws.com/dev/submitpayment', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'post',\r\n body: JSON.stringify(body)\r\n })\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n if (data.type === 'success') {\r\n //stop the modal loading.\r\n //change the page to a success!\r\n self.formikRef.current.resetForm();\r\n\r\n self.setState({\r\n showConfirmation: true,\r\n });\r\n }\r\n else {\r\n self.formikRef.current.setSubmitting(false);\r\n if ([\"Transaction Failed with error code 2 : This transaction has been declined.\", \"Transaction Failed with error code 65 : This transaction has been declined.\"].includes(data.message)) {\r\n self.formikRef.current.setErrors({\r\n apiResponseError: \"There was an issue processing your card. Please double check your credit card entries.\"\r\n });\r\n }\r\n else {\r\n self.formikRef.current.setErrors(\r\n {\r\n apiResponseError: data.message\r\n }\r\n );\r\n }\r\n }\r\n }\r\n );\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n bindSubmitForm = (values, { setErrors, setSubmitting }) => {\r\n var errors = {};\r\n //Now we need additional proccessing to make sure the form is valid.\r\n var validNumber = Payment.fns.validateCardNumber(values.CCNumber);\r\n var validExpiration = Payment.fns.validateCardExpiry(values.CCExpiration);\r\n var validCVC = Payment.fns.validateCardCVC(values.CCCode);\r\n if (!validNumber) {\r\n\r\n errors.CCNumber = \"This number is not a valid credit card number.\";\r\n }\r\n else {\r\n var cardType = Payment.fns.cardType(values.CCNumber);\r\n if (cardType === \"visa\" || cardType === \"mastercard\" || cardType === \"discover\") {\r\n }\r\n else {\r\n errors.CCNumber = \"Sorry, we only accept Visa, Mastercard, and Discover.\";\r\n }\r\n }\r\n if (!validExpiration) {\r\n errors.CCExpiration = \"Invalid Expiration Date\";\r\n }\r\n if (!validCVC) {\r\n errors.CCCode = \"Invalid CVC Code\";\r\n }\r\n\r\n if (moment(values.dateOfBirth, \"M/D/YYYY\", true).isValid() || moment(values.dateOfBirth, \"M/D/YY\", true).isValid() || moment(values.dateOfBirth, \"YYYY-MM-DD\", true).isValid()) {\r\n var parsedDate = moment();\r\n if (moment(values.dateOfBirth, \"M/D/YYYY\", true).isValid()) {\r\n parsedDate = moment(values.dateOfBirth, \"M/D/YYYY\", true);\r\n }\r\n else if (moment(values.dateOfBirth, \"M/D/YY\", true).isValid()) {\r\n parsedDate = moment(values.dateOfBirth, \"M/D/YY\", true);\r\n }\r\n else {\r\n parsedDate = moment(values.dateOfBirth, \"YYYY-MM-DD\", true);\r\n }\r\n\r\n if (parsedDate.isAfter(moment()) || parsedDate.add(16, 'years').isAfter(moment())) {\r\n errors.dateOfBirth = \"You're a bit too young to try to book a road test. Come back when you're old enough.\";\r\n\r\n }\r\n else if (parsedDate.isBefore(moment().subtract(150, 'years'))) {\r\n errors.dateOfBirth = \"Wow, you're over 150 years old. Please contact us directly to book your road test.\";\r\n }\r\n }\r\n else {\r\n errors.dateOfBirth = \"Invalid Date of Birth Format. Please enter it in MM/DD/YYYY form.\";\r\n }\r\n\r\n if (moment(values.permitIssueDate, \"M/D/YYYY\", true).isValid() || moment(values.permitIssueDate, \"M/D/YY\", true).isValid() || moment(values.permitIssueDate, \"YYYY-MM-DD\", true).isValid()) {\r\n var parsedPermitDate = moment();\r\n if (moment(values.permitIssueDate, \"M/D/YYYY\", true).isValid()) {\r\n parsedPermitDate = moment(values.permitIssueDate, \"M/D/YYYY\", true);\r\n }\r\n else if (moment(values.permitIssueDate, \"M/D/YY\", true).isValid()) {\r\n parsedPermitDate = moment(values.permitIssueDate, \"M/D/YY\", true);\r\n }\r\n else {\r\n parsedPermitDate = moment(values.permitIssueDate, \"YYYY-MM-DD\", true);\r\n }\r\n\r\n if (parsedPermitDate.isBefore(moment().subtract(2, \"years\"))) {\r\n errors.permitIssueDate = \"It looks like your permit has expired.\";\r\n }\r\n else if (parsedPermitDate.isAfter(moment())) {\r\n errors.permitIssueDate = \"You can't have a permit issued from the FUTURE.\";\r\n }\r\n if (values.roadTestDateOption) {\r\n if (parsedPermitDate.isAfter(moment(values.roadTestDateOption).subtract(6, \"months\"))) {\r\n if (moment(values.dateOfBirth, \"M/D/YYYY\", true).isValid() || moment(values.dateOfBirth, \"M/D/YY\", true).isValid() || moment(values.dateOfBirth, \"YYYY-MM-DD\", true).isValid()) { //Check if date is valid\r\n var birthDate = moment();\r\n if (moment(values.dateOfBirth, \"M/D/YYYY\", true).isValid()) {\r\n birthDate = moment(values.dateOfBirth, \"M/D/YYYY\", true);\r\n }\r\n else if (moment(values.dateOfBirth, \"M/D/YY\", true).isValid()) {\r\n birthDate = moment(values.dateOfBirth, \"M/D/YY\", true);\r\n }\r\n else {\r\n birthDate = moment(values.dateOfBirth, \"YYYY-MM-DD\", true);\r\n }\r\n if (!birthDate.isBefore(moment().subtract(18, \"years\"))) { //6 month restriction only applies to 16 and a half to 18\r\n errors.permitIssueDate = \"As a junior operator, you need to have your permit for a minimum of 6 months prior to a road test.\";\r\n }\r\n }\r\n else { //Date's not valid\r\n errors.dateOfBirth = \"Invalid Date of Birth Format. Please enter it in MM/DD/YYYY form.\";\r\n }\r\n }\r\n if (moment(values.roadTestDateOption).subtract(2, \"years\").isAfter(parsedPermitDate)) {\r\n errors.permitIssueDate = \"Your permit is two years older than the road test requested, and wouldn't be able to be used for that road test.\";\r\n }\r\n }\r\n }\r\n else {\r\n errors.permitIssueDate = \"Invalid Permit Issue Date Format. Please enter it in MM/DD/YYYY form.\";\r\n }\r\n if (moment(values.roadTestDateOption).isBefore(moment())) {\r\n errors.roadTestDateOption = \"You can not book a road test in the past! Please choose another date.\";\r\n }\r\n\r\n if (values.lessonsNeeded > values.selectedLessonChoices.length) {\r\n errors.lessonDate = \"You haven't selected enough lessons!\";\r\n }\r\n if (values.selectedLessonChoices.length > values.lessonsNeeded) {\r\n errors.lessonDate = \"You have too many selected lessons. Please remove one!\";\r\n }\r\n\r\n\r\n if (values.email !== values.confemail) {\r\n errors.email = \"Both your email address must match.\";\r\n errors.confemail = \"Both your email address must match.\";\r\n }\r\n if (!values.email.includes(\"@\")) {\r\n errors.email = \"Please enter a valid email address.\";\r\n }\r\n if (!values.confemail.includes(\"@\")) {\r\n errors.confemail = \"Please enter a valid confirmation email address.\";\r\n }\r\n\r\n if (values.showParentConf) { //Check if date is valid\r\n if (values.parentEmail !== values.confParentEmail) {\r\n errors.parentEmail = \"Both your parent's email address must match.\";\r\n errors.confParentEmail = \"Both your parent's email address must match.\";\r\n }\r\n if (!values.parentEmail.includes(\"@\")) {\r\n errors.parentEmail = \"Please enter a valid parent email address.\";\r\n }\r\n if (!values.confParentEmail.includes(\"@\")) {\r\n errors.confParentEmail = \"Please enter a valid parent confirmation email address.\";\r\n }\r\n }\r\n\r\n if (values.phoneNumber.length !== 10) {\r\n errors.phoneNumber = \"Invalid phone number.\";\r\n }\r\n if (values.location.includes(\"RMV\")) {\r\n if (!values.roadTestPackage.includes(\"Weekday\")) {\r\n errors.roadTestPackage = \"Road tests conducted at a RMV Site MUST select a Weekday road test option.\";\r\n }\r\n }\r\n setErrors(errors);\r\n if (Object.keys(errors).length > 0) {\r\n setSubmitting(false);\r\n return;\r\n }\r\n //SANDBOX\r\n //var authData = {\r\n // clientKey: \"5KP3WdKyu8vrxHcpBMD96TsDknJZG36MyazkM9Z9sUa6ja7Mq7e5L2uVN8675ZnE\",\r\n // apiLoginID: \"7j3Mq5W6\"\r\n //};\r\n\r\n //PROD\r\n var authData = {\r\n clientKey: \"62CpRk5LpV9a3ZVd3r9ngCk3Uw3Le4ZDAJ8fL8E8n4xMQ653P2hWtGV89HbC22eU\",\r\n apiLoginID: \"2w2YM4z9p\"\r\n };\r\n\r\n var cardData = {\r\n cardNumber: values.CCNumber.replace(/\\s/g, ''),\r\n month: values.CCExpiration.substring(0, 2),\r\n year: values.CCExpiration.substring(values.CCExpiration.length - 2, values.CCExpiration.length),\r\n cardCode: values.CCCode,\r\n zip: values.CCZip,\r\n fullName: values.CCFirstName + \" \" + values.CCLastName\r\n };\r\n var secureData = {\r\n authData: authData,\r\n cardData: cardData\r\n };\r\n try {\r\n window.Accept.dispatchData(secureData, this.responseHandler);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n const script = document.createElement(\"script\");\r\n //SANDBOX\r\n //script.src = \"https://jstest.authorize.net/v1/Accept.js\";\r\n\r\n //PROD\r\n script.src = \"https://js.authorize.net/v1/Accept.js\";\r\n script.async = true;\r\n\r\n\r\n document.body.appendChild(script);\r\n const that = this;\r\n //We need to grab stuff\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestDates.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n data = JSON.parse(data);\r\n //console.log(data)\r\n var roadTestDates = Object.keys(data).map(x => moment(x)).sort(function (a, b) { return a - b; });\r\n that.setState({ roadTestDates, roadTestDatesFile: data });\r\n\r\n });\r\n\r\n fetch('https://s3.amazonaws.com/publicdates/roadTestPackages.json', {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'GET'\r\n })\r\n .then(this.handleErrors)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (data) {\r\n //console.log(data)\r\n that.setState({ avaliableOptions: data });\r\n });\r\n\r\n var option = this.props.match.params.option;\r\n if (option === \"RTO\") {\r\n this.setState({ roadTestPackageOption: \"Road Test Only ($140)\" });\r\n window.scrollTo(0, 0);\r\n }\r\n else if (option === \"RTOL\") {\r\n this.setState({ roadTestPackageOption: \"Road Test w/ One Lesson ($210)\", lessonsNeeded: 1 });\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n render() {\r\n const RegForm = () => (\r\n <div className=\"app\">\r\n <Formik\r\n initialValues={{\r\n roadTestPackage: this.state.roadTestPackageOption ? this.state.roadTestPackageOption : \"\", lessonsNeeded: this.state.lessonsNeeded, drivingSchool: \"\", roadTestDateOption: \"\", drivingSchoolChoice: \"\",\r\n dateOfBirth: '', firstName: '', lastName: '', confemail: '', email: '', parentEmail: '', phoneNumber: \"\", permitNumber: \"\", permitIssueDate: \"\",\r\n source: {}, fullRoadTestDateOption: \"\",\r\n CCNumber: '', CCFirstName: '', CCLastName: '', CCExpiration: '', CCCode: '', focused: '',\r\n CCAddress: '', CCCity: '', CCState: '', CCZip: '', CCCountry: 'USA',\r\n confirmCheck: false, addCompletionCertificate: false, fetchedLessons: {}, selectedDayLessonOptions: [], selectedLessonChoices: [], showParentConf: false\r\n }}\r\n innerRef={this.formikRef}\r\n onSubmit={this.bindSubmitForm}\r\n validateOnChange={true}\r\n validationSchema={\r\n Yup.object().shape({\r\n fullRoadTestDateOption: Yup.string()\r\n .required('Please indicate which road test date you would like'),\r\n roadTestPackage: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('Please indicate which driving package you would like'),\r\n source: Yup.object().shape({\r\n value: Yup.string()\r\n .required(\"Won't you tell us how you heard about us?\")\r\n }),\r\n sourceText: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('Please specify where you heard about us'),\r\n drivingSchoolChoice: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('Please specify your driving school'),\r\n drivingSchool: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('Please specify your driving school'),\r\n firstName: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('A first name is required'),\r\n lastName: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('A last name is required'),\r\n dateOfBirth: Yup.date().typeError(\"Invalid date\")\r\n .required('A date of birth is required'),\r\n permitNumber: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('A permit number is required'),\r\n permitIssueDate: Yup.date().typeError(\"Invalid date\")\r\n .required('A permit issue date is required'),\r\n email: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('An email is required'),\r\n confemail: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('Please retype in your email'),\r\n phoneNumber: Yup.number()\r\n .min(10, 'Too Short!')\r\n .required('A phone number is required'),\r\n CCNumber: Yup.number().typeError(\"Invalid number\")\r\n .min(10, 'Too Short!')\r\n .required('A credit card number is required'),\r\n CCFirstName: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('First name is required'),\r\n CCLastName: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('Last name is required'),\r\n CCCode: Yup.number().typeError(\"Invalid number\")\r\n .required('The CVC code is required'),\r\n CCAddress: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('The billing address is required'),\r\n CCExpiration: Yup.string().min(7, 'Too Short!')\r\n .required('The expiration of the card is required'),\r\n CCCity: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('The billing city is required'),\r\n CCState: Yup.string()\r\n .min(2, 'Too Short!')\r\n .required('The billing state is required'),\r\n CCZip: Yup.number()\r\n .min(5, 'Too Short!')\r\n .required('The billing zipcode is required'),\r\n CCCountry: Yup.string()\r\n .min(3, 'Too Short!')\r\n .required('The billing country is required'),\r\n confirmCheck: Yup.bool().oneOf([true], \"You have to agree!\")\r\n })}\r\n >\r\n {props => {\r\n const {\r\n values,\r\n touched,\r\n errors,\r\n handleChange,\r\n handleSubmit,\r\n setFieldValue,\r\n setFieldTouched,\r\n isSubmitting,\r\n submitCount\r\n } = props;\r\n return (\r\n <form onSubmit={handleSubmit}>\r\n <ErrorFocus />\r\n <RadioButtonGroup\r\n id=\"fullRoadTestDateOption\"\r\n label=\"Preferred Date (Subject to RMV availability)\"\r\n sublabel=\"Although we usually get the date we request, all dates are subject to RMV availability.\"\r\n value={values.fullRoadTestDateOption}\r\n error={errors.fullRoadTestDateOption}\r\n touched={touched.fullRoadTestDateOption}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n >\r\n\r\n {/* {this.state.roadTestDates.filter(x => moment(x).add(16, 'hours').subtract(12, 'days').isAfter(moment())) */}\r\n {this.state.roadTestDates.filter(x => moment(x).isAfter(moment()))\r\n .sort(function (a, b) { return a - b; })\r\n .map((roadTestDate, index) => {\r\n var parsedDate = roadTestDate.toISOString();\r\n var locations = [];\r\n if (this.state.roadTestDatesFile[parsedDate] && this.state.roadTestDatesFile[parsedDate].locations) {\r\n locations = this.state.roadTestDatesFile[parsedDate].locations;\r\n }\r\n if (roadTestDate.day() === 6) {\r\n return (\r\n locations.map((location, key) => {\r\n return (\r\n <Field\r\n key={roadTestDate + location + key}\r\n component={RadioButtonDateLocation}\r\n date={roadTestDate.format(\"YYYY-MM-DD\")}\r\n location={location}\r\n name=\"fullRoadTestDateOption\"\r\n id={roadTestDate.format(\"YYYY-MM-DD\") + \"|\" + location}\r\n label={\" Weekend of \" + moment(roadTestDate).format('M/D') + \" (Sat-Sun) at \" + location}\r\n />\r\n );\r\n })\r\n );\r\n }\r\n else {\r\n return (\r\n locations.map((location, key) => {\r\n if (location.includes(\"RMV\")) {\r\n return (\r\n <Field\r\n key={roadTestDate + location + key}\r\n component={RadioButtonDateLocation}\r\n date={roadTestDate.format(\"YYYY-MM-DD\")}\r\n location={location}\r\n name=\"fullRoadTestDateOption\"\r\n id={roadTestDate.format(\"YYYY-MM-DD\") + \"|\" + location}\r\n label={\"Weekday of \" + moment(roadTestDate).format('M/D (ddd)') + \" at \" + location} />\r\n );\r\n } else {\r\n return (\r\n <Field\r\n key={roadTestDate + location + key}\r\n component={RadioButtonDateLocation}\r\n date={roadTestDate.format(\"YYYY-MM-DD\")}\r\n location={location}\r\n name=\"fullRoadTestDateOption\"\r\n id={roadTestDate.format(\"YYYY-MM-DD\") + \"|\" + location}\r\n label={\"Week of \" + moment(roadTestDate).isoWeekday(1).format('M/D') + \" - \" + moment(roadTestDate).isoWeekday(5).format('M/D') + \" (Mon-Fri) at \" + location + \" (Exact date tbd)\"} />\r\n );\r\n }\r\n })\r\n );\r\n }\r\n })\r\n }\r\n\r\n </RadioButtonGroup>\r\n <RadioButtonGroup\r\n id=\"roadTestPackage\"\r\n label=\"Road Test Package\"\r\n value={values.roadTestPackage}\r\n error={errors.roadTestPackage}\r\n touched={touched.roadTestPackage}\r\n >\r\n {this.state.avaliableOptions.map((roadTestPackage, key) => {\r\n return (\r\n <RoadTestRadioButtonChoice\r\n key={roadTestPackage.package + key}\r\n name=\"roadTestPackage\"\r\n id={roadTestPackage.package + \" ($\" + roadTestPackage.price + \")\"}\r\n label={roadTestPackage.package + \" ($\" + roadTestPackage.price + \")\"}\r\n value={values.roadTestPackage}\r\n package={roadTestPackage}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n />\r\n );\r\n })}\r\n </RadioButtonGroup>\r\n {values.lessonsNeeded > 0 ?\r\n <div style={{ margin: \"1rem 0\" }}>\r\n <label htmlFor=\"color\">Requested Lesson Times</label>\r\n\r\n {values.roadTestDateOption ?\r\n <div>\r\n <div>Please select your {values.lessonsNeeded} lesson{values.lessonsNeeded === 1 ? \"\" : \"s\"}</div>\r\n {values.selectedLessonChoices.length > 0 ?\r\n\r\n <div>\r\n\r\n {values.selectedLessonChoices.map((selectedLesson, key) => {\r\n let dow = moment(selectedLesson.date).format('dddd');\r\n\r\n return (\r\n <RoadTestLessonDisplayButton\r\n key={selectedLesson.date + selectedLesson.slot}\r\n name=\"roadTestPackage\"\r\n id={selectedLesson.date + selectedLesson.slot}\r\n label={dow + \" \" + moment(selectedLesson.date).format('MM/DD/YYYY') + \" at \" + selectedLesson.slot + \" at \" + selectedLesson.location + \" \"}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n selectedLesson={selectedLesson}\r\n values={values.selectedLessonChoices}\r\n />\r\n );\r\n })}\r\n </div>\r\n :\r\n\r\n <div>Hmm... You haven't selected any times yet.</div>\r\n\r\n }\r\n {errors.lessonDate ? <InputFeedback error={errors.lessonDate} /> : null}\r\n {values.lessonsNeeded > values.selectedLessonChoices.length ?\r\n <div>\r\n <label htmlFor=\"color\">Date of Lesson</label>\r\n\r\n <FormikSelectRoadLessonDate\r\n id=\"lessonDate\"\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n selectedDay={values.roadTestDateOption}\r\n location={values.location}\r\n fetchedLessons={values.fetchedLessons}\r\n />\r\n {values.lessonDate ?\r\n <div>\r\n <label htmlFor=\"color\">Time Slot of Lesson</label>\r\n <FormikSelectRoadLessonDateSlot\r\n id=\"lessonDateSlot\"\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n selectedDay={values.lessonDate}\r\n selectedDayLessonOptions={values.selectedDayLessonOptions}\r\n />\r\n </div> : null\r\n }\r\n\r\n {values.lessonDateSlot ?\r\n <FormikAddLesson\r\n id=\"addLessonButton\"\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n lessonDate={values.lessonDate}\r\n lessonDateSlot={values.lessonDateSlot}\r\n selectedLessonChoices={values.selectedLessonChoices}\r\n />\r\n\r\n : null}\r\n <div>Note: Lessons are not allowed on road test days.</div>\r\n </div>\r\n : null}\r\n </div> : <div>Please select a preferred road test date to view available lesson dates.</div>\r\n }\r\n\r\n </div> : null\r\n }\r\n\r\n <RadioButtonGroup\r\n id=\"drivingSchoolChoice\"\r\n label=\"Driving School Attended\"\r\n value={values.drivingSchoolChoice}\r\n error={errors.drivingSchoolChoice}\r\n touched={touched.drivingSchoolChoice}\r\n >\r\n {drivingSchool.map((drivingSchoolRadio, key) => {\r\n return (\r\n <DrivingSchoolRadioButtonChoice\r\n key={drivingSchoolRadio.value + key}\r\n name=\"drivingSchool\"\r\n id={drivingSchoolRadio.value}\r\n label={drivingSchoolRadio.label}\r\n value={values.drivingSchoolChoice}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n />\r\n );\r\n })}\r\n </RadioButtonGroup>\r\n\r\n {values.drivingSchoolChoice === \"Parkway Driving School\" ?\r\n <Field\r\n component={addCompletionCertificateCheckBox}\r\n name=\"addCompletionCertificate\"\r\n id=\"addCompletionCertificate\"\r\n value={values.addCompletionCertificate}\r\n /> : null}\r\n\r\n\r\n\r\n {values.drivingSchoolChoice === \"Other Driving School\" ?\r\n <TextInput\r\n id=\"drivingSchool\"\r\n type=\"text\"\r\n label=\"Other Driving School Name\"\r\n placeholder=\"Enter other driving school name\"\r\n error={errors.drivingSchool}\r\n value={values.drivingSchool}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.drivingSchool}\r\n /> : null}\r\n <FormikSelect\r\n id=\"source\"\r\n options={sourceOptions}\r\n value={values.source}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n error={errors.source}\r\n touched={touched.source}\r\n />\r\n {values.source && values.source.value === \"Other\" ?\r\n <TextInput\r\n id=\"sourceText\"\r\n type=\"text\"\r\n label=\"Other Source\"\r\n placeholder=\"Enter other source\"\r\n error={errors.sourceText}\r\n value={values.sourceText}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.sourceText}\r\n /> : null}\r\n\r\n <Row>\r\n <Col>\r\n <TextInput\r\n id=\"firstName\"\r\n type=\"text\"\r\n label=\"Full Legal First Name (of the individual taking the exam)\"\r\n placeholder=\"Enter text\"\r\n error={errors.firstName}\r\n value={values.firstName}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.firstName}\r\n />\r\n </Col>\r\n <Col>\r\n <TextInput\r\n id=\"lastName\"\r\n type=\"text\"\r\n label=\"Full Legal Last Name (of the individual taking the exam)\"\r\n placeholder=\"Enter text\"\r\n error={errors.lastName}\r\n value={values.lastName}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.lastName}\r\n />\r\n </Col>\r\n </Row>\r\n <DOBTextInput\r\n id=\"dateOfBirth\"\r\n type=\"date\"\r\n label=\"Date of Birth (of the individual taking the exam)\"\r\n placeholder=\"MM/DD/YYYY\"\r\n setFieldValue={setFieldValue}\r\n error={errors.dateOfBirth}\r\n value={values.dateOfBirth}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.dateOfBirth}\r\n\r\n />\r\n <div>{\"Example: 01/01/2000\"}</div>\r\n <Row>\r\n <Col>\r\n <TextInput\r\n id=\"permitNumber\"\r\n type=\"text\"\r\n label=\"Permit Number\"\r\n placeholder=\"Enter text\"\r\n error={errors.permitNumber}\r\n value={values.permitNumber}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.permitNumber}\r\n\r\n />\r\n </Col>\r\n <Col>\r\n <TextInput\r\n id=\"permitIssueDate\"\r\n type=\"date\"\r\n label=\"Permit Issue Date\"\r\n placeholder=\"MM/DD/YYYY\"\r\n error={errors.permitIssueDate}\r\n value={values.permitIssueDate}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.permitIssueDate}\r\n\r\n /> <div>{\"Example: 01/01/2000\"}</div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <TextInput\r\n id=\"email\"\r\n type=\"text\"\r\n label=\"Email\"\r\n placeholder=\"Enter Text\"\r\n error={touched.email && errors.email}\r\n value={values.email}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.email}\r\n />\r\n </Col>\r\n <Col>\r\n <TextInput\r\n id=\"confemail\"\r\n type=\"text\"\r\n label=\"Confirm Email\"\r\n placeholder=\"Enter Text\"\r\n error={errors.confemail}\r\n value={values.confemail}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.confemail}\r\n />\r\n </Col>\r\n </Row>\r\n {values.showParentConf ?\r\n <Row>\r\n <Col>\r\n <TextInput\r\n id=\"parentEmail\"\r\n type=\"text\"\r\n label=\"Parent Email\"\r\n placeholder=\"Enter Text\"\r\n error={touched.parentEmail && errors.parentEmail}\r\n value={values.parentEmail}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.parentEmail}\r\n />\r\n </Col>\r\n <Col>\r\n <TextInput\r\n id=\"confParentEmail\"\r\n type=\"text\"\r\n label=\"Confirm Parent Email\"\r\n placeholder=\"Enter Text\"\r\n error={errors.confParentEmail}\r\n value={values.confParentEmail}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.confParentEmail}\r\n />\r\n </Col>\r\n </Row>\r\n :\r\n null}\r\n <TextInput\r\n id=\"phoneNumber\"\r\n type=\"tel\"\r\n label=\"Phone Number\"\r\n placeholder=\"Enter Text\"\r\n error={errors.phoneNumber}\r\n value={values.phoneNumber}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.phoneNumber}\r\n />\r\n <br></br>\r\n <h4>Payment</h4>\r\n <div className=\"card card-body bg-light\">\r\n <Row>\r\n <Col>\r\n <Row>\r\n <Col>\r\n <CCTextInput\r\n id=\"CCNumber\"\r\n type=\"number\"\r\n placeholder=\"Card Number\"\r\n error={errors.CCNumber}\r\n value={values.CCNumber}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCNumber}\r\n CCField=\"number\"\r\n\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <CCTextInput\r\n id=\"CCFirstName\"\r\n type=\"text\"\r\n placeholder=\"First Name\"\r\n error={errors.CCFirstName}\r\n value={values.CCFirstName}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCFirstName}\r\n CCField=\"name\"\r\n />\r\n </Col>\r\n <Col>\r\n <CCTextInput\r\n id=\"CCLastName\"\r\n type=\"text\"\r\n placeholder=\"Last Name\"\r\n error={errors.CCLastName}\r\n value={values.CCLastName}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCLastName}\r\n CCField=\"name\"\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <CCTextInput\r\n id=\"CCExpiration\"\r\n type=\"text\"\r\n placeholder=\"MM/YY\"\r\n error={errors.CCExpiration}\r\n value={values.CCExpiration}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCExpiration}\r\n CCField=\"expiry\"\r\n />\r\n </Col>\r\n <Col>\r\n <CCTextInput\r\n id=\"CCCode\"\r\n type=\"text\"\r\n placeholder=\"CVC\"\r\n error={errors.CCCode}\r\n value={values.CCCode}\r\n onChange={setFieldValue}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCCode}\r\n CCField=\"cvc\"\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <TextInput\r\n id=\"CCAddress\"\r\n type=\"text\"\r\n placeholder=\"Billing Address\"\r\n error={errors.CCAddress}\r\n value={values.CCAddress}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCAddress}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <TextInput\r\n id=\"CCCity\"\r\n type=\"text\"\r\n placeholder=\"City\"\r\n error={errors.CCCity}\r\n value={values.CCCity}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCCity}\r\n />\r\n </Col>\r\n <Col>\r\n <TextInput\r\n id=\"CCState\"\r\n type=\"text\"\r\n placeholder=\"State\"\r\n error={errors.CCState}\r\n value={values.CCState}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCState}\r\n />\r\n </Col>\r\n </Row> <Row>\r\n <Col>\r\n <TextInput\r\n id=\"CCZip\"\r\n type=\"text\"\r\n placeholder=\"Zipcode\"\r\n error={errors.CCZip}\r\n value={values.CCZip}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCZip}\r\n />\r\n </Col>\r\n <Col>\r\n <TextInput\r\n id=\"CCCountry\"\r\n type=\"text\"\r\n placeholder=\"Country\"\r\n error={errors.CCCountry}\r\n value={values.CCCountry}\r\n onChange={handleChange}\r\n onBlur={setFieldTouched}\r\n touched={touched.CCCountry}\r\n />\r\n </Col>\r\n </Row>\r\n <br></br>\r\n </Col>\r\n <Col >\r\n <br></br>\r\n <Cards\r\n number={values.CCNumber}\r\n name={values.CCFirstName + \" \" + values.CCLastName}\r\n expiry={values.CCExpiration.replace(/ /g, '')}\r\n cvc={values.CCCode}\r\n focused={values.focused}\r\n acceptedCards={['visa', 'mastercard', \"discover\"]}\r\n />\r\n <br />\r\n <Col>\r\n <Row className=\"d-flex justify-content-center\">\r\n <img\r\n className=\"d-flex justify-content-center\"\r\n src={process.env.PUBLIC_URL + '/visa.jpg'}\r\n /> <img\r\n className=\"d-flex justify-content-center\"\r\n src={process.env.PUBLIC_URL + '/mastercard.gif'}\r\n /> <img\r\n className=\"d-flex justify-content-center\"\r\n src={process.env.PUBLIC_URL + '/discover.gif'}\r\n />\r\n </Row>\r\n </Col>\r\n\r\n\r\n </Col>\r\n </Row>\r\n </div>\r\n\r\n <Field\r\n component={Checkbox}\r\n name=\"confirmCheck\"\r\n id=\"confirmCheck\"\r\n value={values.confirmCheck}\r\n />\r\n\r\n {submitCount == 0 ? null : <div>\r\n {\r\n Object.keys(errors).length > 0 ?\r\n <div>\r\n Please correct the following errors and resubmit:\r\n <br></br>\r\n </div>\r\n :\r\n null\r\n }\r\n\r\n {\r\n Object.keys(errors).map(error => {\r\n if (errors[error] && errors[error].value) {\r\n return (\r\n errors[error].value);\r\n }\r\n else {\r\n return (\r\n errors[error]\r\n );\r\n }\r\n }).map((error, index) => {\r\n return <div key={index} className=\"input-feedback\">{JSON.stringify(error)}</div>;\r\n\r\n })\r\n }\r\n\r\n </div>}\r\n\r\n <br></br>\r\n <button type=\"submit\" disabled={isSubmitting}>\r\n Submit\r\n </button>\r\n </form>\r\n );\r\n }}\r\n </Formik>\r\n </div >\r\n );\r\n return (<div className=\"holder\" >\r\n {this.state.showConfirmation ?\r\n <div>\r\n <Alert variant=\"success\">\r\n <strong>Payment successfully processed!</strong>\r\n </Alert>\r\n <p>Thanks for signing up. Once we get confirmation from the RMV, we will email you to confirm your Road Test date. </p>\r\n <a href=\"/\" className=\"btn btn-primary regButton\" role=\"button\">Return Home</a>\r\n </div> :\r\n <div className=\"holder\">\r\n <h2>Parkway Driving School Road Test Sign Up</h2>\r\n <div>\r\n <h4>Under 18 Students</h4>\r\n <ul>\r\n <li>Anyone under 18 must have their permit for 6 months before taking a road test.</li>\r\n <li>Parkway students can sign up for their test at any time, but lessons must be completed at least two weeks before their test date.</li>\r\n <li>If you are <strong className=\"error\">NOT</strong> a Parkway student, driver education must be complete and a completion certificate must be on file with the RMV <strong className=\"error\">21 days</strong> before a road test appointment.</li>\r\n </ul>\r\n <h4>Road Test Dates</h4>\r\n <ul>\r\n <li>Dates are assigned by the RMV when Examiners are available.</li>\r\n <li>You must be <strong className=\"error\"> available both weekend days.</strong></li>\r\n <li>You will be sent your date and time one week before the test.</li>\r\n </ul>\r\n <h4>General Information</h4>\r\n <ul>\r\n <li><strong className=\"refundwarn\" >Due to the limited test slots, there are NO Refunds or cancellations for a road test for any reason including illness, emergency or rejection by the RMV examiner.</strong></li>\r\n <li>You will receive a confirmation email immediately after payment.</li>\r\n <li>If you arrive for your road test without your permit, glasses or proper footware, you will not be allowed to test.</li>\r\n <li>Parkway does not provide translators. If needed, please bring your own translator for your road test.</li>\r\n </ul>\r\n </div>\r\n <RegForm></RegForm>\r\n </div>}\r\n <Modal\r\n show={this.state.loading}\r\n onHide={this.handleHide}\r\n dialogClassName=\"custom-modal\"\r\n >\r\n <Modal.Body>\r\n <Image src={process.env.PUBLIC_URL + '/car-loading.gif'} className=\"img-fluid d-block mx-auto\" />\r\n <br></br>\r\n <p className=\"center\">We're working on processing your order.</p>\r\n <p className=\"center\">Please Wait.</p>\r\n </Modal.Body>\r\n </Modal>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationForm;","import React from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\n\r\nexport default ({ component: C, props: cProps, ...rest }) =>\r\n <Route {...rest} render={props => <C {...props} {...cProps} />} />;\r\n","import React from \"react\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\n\r\nexport default ({ component: C, props: cProps, ...rest }) =>\r\n <Route\r\n {...rest}\r\n render={props =>\r\n cProps.isAuthenticated\r\n ? <C {...props} {...cProps} />\r\n : <Redirect\r\n to={`/login?redirect=${props.location.pathname}${props.location\r\n .search}`}\r\n />}\r\n />;\r\n","import React from \"react\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\n\r\nfunction querystring(name, url = window.location.href) {\r\n name = name.replace(/[[]]/g, \"\\\\$&\");\r\n\r\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\", \"i\");\r\n const results = regex.exec(url);\r\n\r\n if (!results) {\r\n return null;\r\n }\r\n if (!results[2]) {\r\n return \"\";\r\n }\r\n\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n}\r\n\r\nexport default ({ component: C, props: cProps, ...rest }) => {\r\n const redirect = querystring(\"redirect\");\r\n return (\r\n <Route\r\n {...rest}\r\n render={props =>\r\n !cProps.isAuthenticated\r\n ? <C {...props} {...cProps} />\r\n : <Redirect\r\n to={redirect === \"\" || redirect === null ? \"/\" : redirect}\r\n />}\r\n />\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Route, Switch } from \"react-router-dom\";\r\nimport Home from \"./containers/Home.jsx\";\r\nimport Login from \"./containers/Login\";\r\nimport NotFound from \"./containers/NotFound\";\r\n/* import Registration from './containers/Form'\r\n */\r\nimport Confirmation from './containers/Confirmation'\r\nimport Admin from './containers/Admin.jsx'\r\nimport RoadTestDatePicker from './containers/SetRoadTestDates.jsx'\r\nimport RoadLessonManager from './containers/ManageRoadLessons.jsx'\r\nimport RoadLessonViewer from './containers/ViewAllRoadLessons.jsx'\r\nimport RoadLessonInstructors from './containers/SetRoadTestInstructors.jsx'\r\n\r\n\r\nimport RoadPackagePicker from './containers/SetRoadPackages.jsx'\r\nimport RoadLocationPicker from './containers/SetRoadLocations.jsx'\r\nimport ModifyStudentData from './containers/ModifyStudentData.jsx'\r\nimport studentTable from './containers/Table.jsx'\r\nimport AttendeeList from './containers/AttendeeList'\r\nimport Transactions from './containers/ExportTransactions'\r\nimport About from './containers/About.jsx'\r\nimport Contact from './containers/Contact.jsx'\r\nimport Appointment from './containers/Appointments'\r\nimport RegistrationForm from './containers/RegistrationForm'\r\nimport AppliedRoute from \"./components/AppliedRoute\";\r\nimport AuthenticatedRoute from \"./components/AuthenticatedRoute\";\r\nimport UnauthenticatedRoute from \"./components/UnauthenticatedRoute\";\r\n\r\nexport default ({ childProps }) =>\r\n <Switch>\r\n <AppliedRoute path=\"/\" exact component={Home} props={childProps} />\r\n <AppliedRoute path=\"/about\" exact component={About} props={childProps} />\r\n <AppliedRoute path=\"/contact\" exact component={Contact} props={childProps} />\r\n\r\n <UnauthenticatedRoute path=\"/login\" exact component={Login} props={childProps} />\r\n <AuthenticatedRoute path=\"/roadTestDates\" exact component={RoadTestDatePicker} props={childProps} />\r\n <AuthenticatedRoute path=\"/roadTestPackages\" exact component={RoadPackagePicker} props={childProps} />\r\n <AuthenticatedRoute path=\"/roadTestLocations\" exact component={RoadLocationPicker} props={childProps} />\r\n\r\n <AuthenticatedRoute path=\"/appointments\" exact component={Appointment} props={childProps} />\r\n <AuthenticatedRoute path=\"/studentTable\" exact component={studentTable} props={childProps} />\r\n <AuthenticatedRoute path=\"/attendeelist\" exact component={AttendeeList} props={childProps} />\r\n <AuthenticatedRoute path=\"/transactions\" exact component={Transactions} props={childProps} />\r\n <AuthenticatedRoute path=\"/modify\" exact component={ModifyStudentData} props={childProps} />\r\n\r\n <AuthenticatedRoute path=\"/manageRoadLessons\" exact component={RoadLessonManager} props={childProps} />\r\n <AuthenticatedRoute path=\"/viewAllRoadLessons\" exact component={RoadLessonViewer} props={childProps} />\r\n <AuthenticatedRoute path=\"/roadLessonInstructors\" exact component={RoadLessonInstructors} props={childProps} />\r\n\r\n\r\n <AppliedRoute path=\"/confirmation\" exact component={Confirmation} props={childProps} />\r\n <AppliedRoute path=\"/registration/:option?\" exact component={RegistrationForm} props={childProps} />\r\n <AuthenticatedRoute path=\"/admin\" exact component={Admin} props={childProps} />\r\n\r\n { /* Finally, catch all unmatched routes */}\r\n <Route component={NotFound} />\r\n </Switch>;\r\n","import React, { Component } from \"react\";\r\nimport { Auth } from \"aws-amplify\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Nav, Navbar, NavItem } from \"react-bootstrap\";\r\nimport { LinkContainer } from \"react-router-bootstrap\";\r\n\r\nimport logo from './logo.png';\r\nimport Routes from \"./Routes\";\r\nimport './App.css';\r\n\r\nrequire('core-js');\r\nrequire('es6-promise').polyfill();\r\nrequire('isomorphic-fetch');\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n isAuthenticating: true\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n try {\r\n if (await Auth.currentSession()) {\r\n this.userHasAuthenticated(true);\r\n }\r\n }\r\n catch (e) {\r\n if (e !== 'No current user') {\r\n //alert(e);\r\n }\r\n }\r\n this.setState({ isAuthenticating: false });\r\n }\r\n\r\n userHasAuthenticated = authenticated => {\r\n this.setState({ isAuthenticated: authenticated });\r\n }\r\n\r\n handleLogout = async event => {\r\n await Auth.signOut();\r\n\r\n this.userHasAuthenticated(false);\r\n\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n render() {\r\n const childProps = {\r\n isAuthenticated: this.state.isAuthenticated,\r\n userHasAuthenticated: this.userHasAuthenticated\r\n };\r\n\r\n return (\r\n !this.state.isAuthenticating &&\r\n <div className=\"AppContainer\">\r\n <Navbar bg=\"light\" expand=\"sm\">\r\n <Navbar.Brand href=\"/\">\r\n <img\r\n src={logo}\r\n width=\"198.5\"\r\n height=\"100\"\r\n alt=\"Parkway Driving School Logo\"\r\n />\r\n </Navbar.Brand>\r\n <Navbar.Toggle aria-controls=\"responsive-navbar-nav\" />\r\n <Navbar.Collapse id=\"responsive-navbar-nav\">\r\n <Nav className=\"mr-auto\">\r\n\r\n </Nav>\r\n {this.state.isAuthenticated ?\r\n <Nav className=\"justify-content-end\" >\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/admin\">\r\n <NavItem>Admin</NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/registration\">\r\n <NavItem>\r\n Registration\r\n </NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/about\">\r\n <NavItem>\r\n About\r\n </NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/contact\">\r\n <NavItem>\r\n Contact\r\n </NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n <Nav.Link>\r\n <LinkContainer to=\"/login\">\r\n <NavItem onClick={this.handleLogout}>Logout</NavItem>\r\n </LinkContainer>\r\n\r\n </Nav.Link>\r\n\r\n </Nav>\r\n\r\n :\r\n <Nav className=\"justify-content-end\" >\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/\">\r\n <NavItem>\r\n Home\r\n </NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/registration\">\r\n <NavItem>\r\n Registration\r\n </NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/about\">\r\n <NavItem>\r\n About\r\n </NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n <Nav.Link>\r\n <LinkContainer exact to=\"/contact\">\r\n <NavItem>\r\n Contact\r\n </NavItem>\r\n </LinkContainer>\r\n </Nav.Link>\r\n </Nav>\r\n }\r\n\r\n </Navbar.Collapse>\r\n </Navbar>\r\n <Routes childProps={childProps} />\r\n </div >\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(App);\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\r\n );\r\n });\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","const dev = {\r\n cognito: {\r\n REGION: \"us-east-1\",\r\n USER_POOL_ID: \"us-east-1_42StTlIv3\",\r\n APP_CLIENT_ID: \"5atp64gdek1rg3msfdp2f089q2\",\r\n IDENTITY_POOL_ID: \"us-east-1:83b7a7dc-2178-4691-8d64-86bb83d775d3\"\r\n }\r\n};\r\n\r\nconst prod = {\r\n cognito: {\r\n REGION: \"us-east-1\",\r\n USER_POOL_ID: \"us-east-1_42StTlIv3\",\r\n APP_CLIENT_ID: \"5atp64gdek1rg3msfdp2f089q2\",\r\n IDENTITY_POOL_ID: \"us-east-1:83b7a7dc-2178-4691-8d64-86bb83d775d3\"\r\n }\r\n};\r\n\r\n// Default to dev if not set\r\nconst config = process.env.REACT_APP_STAGE === 'prod'\r\n ? prod\r\n : dev;\r\n\r\nexport default {\r\n // Add common config values here\r\n MAX_ATTACHMENT_SIZE: 5000000,\r\n ...config\r\n};\r\n","import React from \"react\"\r\nimport ReactDOM from \"react-dom\";\r\nimport 'babel-polyfill';\r\nimport Amplify from \"aws-amplify\";\r\nimport { BrowserRouter as Router } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport { unregister } from './registerServiceWorker';\r\nimport config from \"./config\";\r\nimport \"./index.css\";\r\n\r\nAmplify.configure({\r\n Auth: {\r\n mandatorySignIn: true,\r\n region: config.cognito.REGION,\r\n userPoolId: config.cognito.USER_POOL_ID,\r\n identityPoolId: config.cognito.IDENTITY_POOL_ID,\r\n userPoolWebClientId: config.cognito.APP_CLIENT_ID\r\n },\r\n API: {\r\n endpoints: [\r\n {\r\n name: \"APIGateway\",\r\n endpoint: \"https://x4g3mwhate.execute-api.us-east-1.amazonaws.com/dev\",\r\n region: \"us-east-1\"\r\n }\r\n ]\r\n }\r\n});\r\n\r\nReactDOM.render(\r\n <Router>\r\n <App />\r\n </Router>,\r\n document.getElementById(\"root\")\r\n);\r\nunregister();\r\n","module.exports = __webpack_public_path__ + \"static/media/logo.5fd45946.png\";"],"sourceRoot":""}