{"version":3,"sources":["webpack:///./node_modules/core-js/internals/string-pad.js","webpack:///./node_modules/core-js/modules/es.set.constructor.js","webpack:///./src/helpers/date-utils.js","webpack:///./src/store/static/TreatmentGroupOptions.js","webpack:///../../../src/components/VForm/VForm.ts","webpack:///./node_modules/core-js/modules/es.string.pad-start.js","webpack:///./src/views/dashboard/provider/organizations/Organization.vue?774a","webpack:///./src/views/dashboard/provider/organizations/Organization.store.js","webpack:///src/views/dashboard/provider/organizations/Organization.vue","webpack:///./src/views/dashboard/provider/organizations/Organization.vue?d068","webpack:///../../../src/components/VSlider/VSlider.ts","webpack:///./src/views/dashboard/provider/organizations/Organization.vue","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./src/store/static/PatientDocumentOptions.js","webpack:///./node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///../../../src/components/VCheckbox/VCheckbox.ts","webpack:///./src/views/dashboard/components/lists/utils/parserUtils.js","webpack:///../../../src/mixins/selectable/index.ts"],"names":["uncurryThis","toLength","toString","$repeat","requireObjectCoercible","repeat","stringSlice","slice","ceil","Math","createMethod","IS_END","$this","maxLength","fillString","fillLen","stringFiller","S","intMaxLength","stringLength","length","fillStr","undefined","module","exports","start","end","collection","collectionStrong","init","this","arguments","dateUtils","isToday","date","today","Date","getDate","getMonth","getFullYear","isThisIsoWeek","todayIsoWeek","_getWeek","todayIsoYear","_getWeekYear","dateIsoWeek","dateIsoYear","someDate","getTime","setHours","setDate","getDay","week1","round","subtractDaysFromToday","dateObj","days","includeToday","Error","offsetDays","daysBetweenDatesForRange","date0","date1","ONE_DAY","utc0","UTC","utc1","floor","abs","formatDateToYYYYMMDD","dateString","delimiter","day","month","year","padStart","formatDateToDDMMYYYY","formatDateToDDMMYYYYTime","hour","getHours","minute","getMinutes","isValidDate","d","isNaN","value","label","mixins","BindsAttrs","RegistrableProvide","extend","name","provide","form","inheritAttrs","props","disabled","Boolean","lazyValidation","readonly","data","inputs","watchers","errorBag","watch","handler","val","errors","Object","values","includes","$emit","deep","immediate","methods","watchInput","input","watcher","$watch","$set","_uid","valid","shouldValidate","hasOwnProperty","validate","filter","reset","forEach","resetErrorBag","setTimeout","resetValidation","register","push","unregister","found","find","i","unwatch","$delete","render","h","staticClass","attrs","novalidate","attrs$","on","submit","e","$slots","default","$","$padStart","WEBKIT_BUG","target","proto","forced","_vm","_h","$createElement","_c","_self","_v","staticStyle","totalAbovePriceList","model","callback","$$v","selectedFiltersPriceCall","expression","selectedFiltersPriceMessage","totalFiltersMessageTypeList","selectedFiltersMessageTypeList","totalFiltersYesOrNo","selectedFiltersSendAutomatic","totalTreatmentList","selectedTreatmentList","isLoadingSend","$event","updateAmount","_s","$t","showReminderDefault","directives","rawName","reminder0Days","scopedSlots","_u","key","fn","proxy","reminder0DaysApi","hideReminder1Days","reminder1Days","reminder1DaysApi","hideReminder2Days","reminder2Days","reminder2DaysApi","hideReminder3Days","reminder3Days","reminder3DaysApi","showReminderPublic","publicSupportReminder0Days","publicSupportReminder0DaysApi","hidePublicSupportReminder1Days","publicSupportReminder1Days","publicSupportReminder1DaysApi","hidePublicSupportReminder2Days","publicSupportReminder2Days","publicSupportReminder2DaysApi","hidePublicSupportReminder3Days","publicSupportReminder3Days","publicSupportReminder3DaysApi","showReminderInsurance","insuranceReminder0Days","insuranceReminder0DaysApi","hideInsuranceReminder1Days","insuranceReminder1Days","insuranceReminder1DaysApi","hideInsuranceReminder2Days","insuranceReminder2Days","insuranceReminder2DaysApi","hideInsuranceReminder3Days","insuranceReminder3Days","insuranceReminder3DaysApi","updateDays","_b","snackbar","top","center","snackbarText","staticRenderFns","getters","initialState","uuid","dentistList","systemInitialList","amountCall","amountMessage","messageTypeList","treatmentGroupList","mutations","setOrganizationFromApi","state","payload","amount_threshold_to_call","amount_threshold_to_message","reminder_0_days","reminder_1_days","reminder_2_days","reminder_3_days","public_support_reminder_0_days","public_support_reminder_1_days","public_support_reminder_2_days","public_support_reminder_3_days","insurance_reminder_0_days","insurance_reminder_1_days","insurance_reminder_2_days","insurance_reminder_3_days","message_type_list","primary_treatment_group_list","setDentistList","setSystemInitialList","clear","assign","actions","get","commit","dispatch","root","organization","organizationUuid","endpoint","process","queryParams","include_dentist_list","include_system_initials_list","authAxios","params","response","errMsg","console","log","attribs","attributes","rels","relationships","dentistListJson","dentist_list","parserUtils","parseDentistList","items","systemInitialListJson","system_initials_list","parseSystemInitialList","_updateOrganizationApi","_","dentistUuid","dentistEmail","type","organization_uuid","treatment_group_list","dentist_uuid","dentist_email","post","updateAmountApi","updateDaysApi","updateDentistApi","namespaced","didChangeAny","computed","mapState","created","mounted","mapActions","mapMutations","clearStore","reminder0DaysOrNone","reminder1DaysOrNone","reminder2DaysOrNone","reminder3DaysOrNone","publicSupportReminder0DaysOrNone","publicSupportReminder1DaysOrNone","publicSupportReminder2DaysOrNone","publicSupportReminder3DaysOrNone","insuranceReminder0DaysOrNone","insuranceReminder1DaysOrNone","insuranceReminder2DaysOrNone","insuranceReminder3DaysOrNone","onUpdateDentistEmail","dentist","showSnackbarSuccess","VInput","Loadable","ClickOutside","inverseLabel","max","Number","String","min","step","thumbColor","thumbLabel","validator","v","thumbSize","tickLabels","Array","ticks","tickSize","trackColor","trackFillColor","vertical","app","oldValue","thumbPressed","mouseTimeout","isFocused","isActive","noClick","startOffset","classes","options","call","internalValue","lazyValue","set","minValue","roundValue","maxValue","trackTransition","showTicks","stepNumeric","parseFloat","inputWidth","trackFillStyles","startDir","endDir","valueDir","$vuetify","rtl","isDisabled","transition","trackStyles","numTicks","showThumbLabel","$scopedSlots","computedTrackColor","isDark","validationState","computedTrackFillColor","computedColor","computedThumbColor","parsed","beforeMount","document","querySelector","consoleWarn","genDefaultSlot","children","genLabel","slider","genSlider","unshift","genProgress","class","isReadonly","themeClasses","onBlur","click","onSliderClick","mousedown","onSliderMouseDown","touchstart","genChildren","genInput","genTrackContainer","genSteps","genThumbContainer","onFocus","id","computedId","tabindex","$attrs","setBackgroundColor","style","ref","range","createRange","direction","offsetDirection","reverse","map","index","width","filled","height","valueWidth","genThumb","thumbLabelContent","genThumbLabelContent","genThumbLabel","setTextColor","getThumbContainerStyles","role","focus","blur","keydown","onKeyDown","content","size","convertToUnit","transform","VScaleTransition","origin","preventDefault","_e$target","matches","domRect","getBoundingClientRect","touch","touches","clientY","clientX","left","window","clearTimeout","mouseUpOptions","passiveSupported","passive","capture","mouseMoveOptions","isTouchEvent","onMouseMove","addEventListener","addOnceEventListener","onSliderMouseUp","stopPropagation","removeEventListener","deepEqual","parseMouseMove","isInteractive","parseKeyDown","thumb","$refs","track","trackStart","trackLength","clickOffset","clickPos","pageup","keyCodes","pagedown","home","right","down","up","keyCode","steps","increase","multiplier","shiftKey","ctrlKey","trimmedStep","trim","decimals","indexOf","offset","newValue","toFixed","component","VBtn","VCardActions","VCard","VCardText","VCardTitle","VCheckbox","VCol","VContainer","VDivider","VForm","VRow","VSelect","VSlider","VSpacer","VTextField","VToolbar","VToolbarTitle","Vue","ripple","genRipple","title","color","format","userAgent","test","Selectable","indeterminate","indeterminateIcon","offIcon","onIcon","inputIndeterminate","computedIcon","hasError","hasSuccess","hasColor","$nextTick","genCheckbox","checkboxAttrs","VIcon","dense","dark","light","rippleState","TREATMENT_TYPE__PLANNED","TREATMENT_TYPE__COMPLETED","parseApiPayloadToAssessmentDataTableList","dateOptions","dataTableItems","resource","relatedImageAsJsonApi","uploaded_images","status","isPending","is_pending","isAnamnesisQuestionnaire","is_anamnesis_questionnaire","isJournalized","is_journalized","is_journalized_by_clinic","imageUrls","guiUrls","thumbnailUrls","j","imageResource","url","guiUrl","gui_url","thumbnailUrl","thumbnail_url","_createdAt","created_at","createdAt","createdAtDate","toLocaleDateString","now","diffInMs","diffInHours","roundedDiffInHours","item","isUserVerifiedByClinic","is_user_verified_by_clinic","isFromAdentAssessmentWidget","is_from_adent_assessment_widget","parseApiPayloadToMedicalHistoryDataTableList","patient","patientFullname","full_name","phone_number","supportId","cognito_id","_updatedAt","updated_at","updatedAt","updatedAtDate","_completedAt","completed_at","completedAt","completedAtDate","sortableAt","isBookmarked","is_bookmarked","isJournalizedByConnector","is_journalized_by_connector","parseApiPayloadToInstallmentDataTableList","cognitoId","_sentAt","sent_at","sentAtDate","_confirmedAt","confirmed_at","confirmedAtDate","_initialPaymentReceivedAt","initial_payment_received_at","initialPaymentReceivedAtDate","isSent","is_sent","isConfirmed","is_confirmed","confirmedAt","isInitialPaymentReceived","is_initial_payment_received","initialPaymentReceivedAt","groupByDocumentType","fallbackTitle","allowSubgroup","primarySubgroupKey","groupDict","categoryUuid","documentType","categoryTitle","documentTitle","categoryPrecedence","precedence","_addToGroupDocumentDict","asList0","asList1","elem","groupBySystemInitial","byInitial","sort","a","b","parseDocumentList","_rejectedAt","rejected_at","rejectedAtDate","document_type","documentText","getDocumentText","documentPrecedence","isRejected","is_rejected","rejectedAt","amountTotal","amount_total","systemInitial","system_user_initials","parseInstructionList","dateOptionsShort","instructionCard","instruction_card","imageListJson","images","imageList","_parseImageList","imagePovList","_parseimagePovList","shareLogListJson","share_logs","shareLogList","_parseShareLogList","digitalConsultListJson","digital_consult_logs","digitalConsultList","_parseDigitalConsultList","patientFirstname","first_name","instructionCardUuid","instructionCardTitle","title_da","createdAtDateShort","updatedAtDateShort","sentAt","_openedAt","opened_at","openedAt","openedAtDate","_bookmarkedAt","bookmarked_at","bookmarkedAt","bookmarkedAtDate","_nextDigitalConsultAt","next_digital_consult_at","nextDigitalConsultAt","nextDigitalConsultAtDate","nextDigitalConsultAtDateShort","_latestDigitalConsultAt","latest_digital_consult_at","latestDigitalConsultAt","latestDigitalConsultAtDate","latestDigitalConsultAtDateShort","_latestImageReceivedAt","latest_image_received_at","latestImageReceivedAt","latestImageReceivedAtDate","latestImageReceivedAtDateShort","_journalizedAt","journalized_at","journalizedAt","journalizedAtDate","_beforeScanCompletedAt","before_scan_completed_at","beforeScanCompleted_at","beforeScanCompletedAt","beforeScanCompletedAtDate","_afterScanCompletedAt","after_scan_completed_at","afterScanCompleted_at","afterScanCompletedAt","afterScanCompletedAtDate","_latestScanCompletedAt","latest_scan_completed_at","latestScanCompletedAt","latestScanCompletedAtDate","latestMessageToPatientSentAtRaw","latest_message_to_patient_sent_at_raw","latestMessageToPatientSentAtTitle","latest_message_to_patient_sent_at_title","_latestMessageToPatientSentAt","latest_message_to_patient_sent_at","latestMessageToPatientSentAt","latestMessageToPatientSentAtDate","hasAnyImageReady","has_any_image_ready","completedScanCount","completed_scan_count","isAutomaticallyUpdatedSinceViewed","is_automatically_updated_since_viewed","automaticallyUpdatedSinceViewedRaw","automatically_updated_since_viewed_raw","automaticallyUpdatedSinceViewedTitle","automatically_updated_since_viewed_title","_automaticallyUpdatedSinceViewedAt","automatically_updated_since_viewed_at","automaticallyUpdatedSinceViewedAt","automaticallyUpdatedSinceViewedAtDate","_noteLog","note_log","noteLog","_parseNoteLog","_clinic","clinic","clinicAttribs","clinicRels","instructionSmsTemplates","instruction_sms_templates","instructionInternalMessageTemplates","instruction_internal_message_templates","clinicEmail","email","_recipientEmails","organizationAttribs","recipient_emails","recipientEmails","Set","firstname","isOpened","is_opened","isStarted","is_started","isCompleted","is_completed","isBeforeScanCompleted","is_before_scan_completed","isAfterScanCompleted","is_after_scan_completed","isLatestScanCompleted","is_latest_scan_completed","isMessageToPatientSentToday","is_message_to_patient_sent_today","isMessageToPatientSentThisWeek","is_message_to_patient_sent_this_week","isPendingDigitalConsult","is_pending_digital_consult","latestMessageToPatientSentAtTs","isDigitalConsultCompletedToday","is_digital_consult_completed_today","isDigitalConsultCompletedThisWeek","is_digital_consult_completed_this_week","nextDigitalConsultAtTs","latestDigitalConsultAtTs","latestImageReceivedAtTs","scanWeekday","scan_weekday","scanIntervalDays","scan_interval_days","itemList","createdAtTs","prettyCreatedAt","messageType","message_type","messageBodyTrunc","message_body_trunc","body","ts","description","timestamp","note","tagList","uniqueList","pointOfView","point_of_view","meta","_getPointOfViewMeta","tag","isFacePov","image","rawCroppedUrl","raw_cropped_url","hueCroppedUrl","hue_color_cropped_url","pointOfViewTitle","pointOfViewPrecedence","_sortListByDateAndPrecedence","dateA","dateB","condition0","condition1","povClean","_capitalize","arr","split","capital","charAt","toUpperCase","toLowerCase","capitalString","join","parseReviewLogList","patAttribs","patientPhoneNumber","patientEmail","contact_email","_resolvedAt","resolved_at","resolvedAt","resolvedAtDate","patientNote","patient_note","maxNoteLength","patientNoteTruncated","score","scoreRaw","score_raw","isResolved","is_resolved","_dataList","parseClinicalPhotoList","patient_phone_number","patient_full_name","patientCognitoId","patient_cognito_id","nameList","hasAnyImagePending","has_any_image_pending","parseConnectorLogList","requestType","requestTypeName","isRequested","is_requested","isDownloaded","is_downloaded","isImported","is_imported","isProcessed","is_processed","shouldDownload","should_download","shouldImport","should_import","locales","parseDentist","dentistListSorted","localeCompare","last_name","systemInitialListSorted","parseTreatmentItemCollectionMeta","primaryTreatmentGroupList","isNumber","parseTreatmentItemCollectionList","resources","parseTreatmentItemCollection","patient_first_name","lastname","patient_last_name","birthdate","patient_birthdate","phonenumber","patient_email","_parseLog","dataList","_billedAtLog","billed_at_log","billedAtLog","_journalChangeLog","journal_change_log","journalChangeLog","_parseJournalChangeLog","_pipelineChangeLog","pipeline_status_log","pipelineChangeLog","excludeTooSimilar","bookedAt","booked_at","billedAt","billed_at","smsSentAt","reminder_sms_sent_at","emailSentAt","reminder_email_sent_at","anySentAt","autoUpdateAt","pipeline_status_auto_updated_at","hostedPatientLink","deeplink_to_web","prettyDate","displayName","_documents","documents","parsePatientDocumentList","docs","documentList","_treatments","treatment_items","groupTreatmentItemListByType","groupedTreatmentItemList","clinicTitle","treatmentSmsTemplates","treatment_sms_templates","reminderSmsTemplates","reminder_sms_templates","reminderEmailTemplates","reminder_email_templates","_dentist","dentistName","dentistAttribs","dentistNameRaw","dentist_first_name_raw","dentist_last_name_raw","prettySentAt","prettyOpenedAt","prettyBookmarkedAt","prettyConfirmedAt","prettyCompletedAt","prettyBookedAt","prettyBilledAt","prettySmsSentAt","prettyEmailSentAt","prettyAnySentAt","prettyAutoUpdateAt","isSmsSentToday","isEmailSentToday","isSmsSentThisWeek","isEmailSentThisWeek","isAnySentToday","isAnySentThisWeek","daysAgo","_action","automated_action","action","_parseAutomatedAction","commonList","sortedCommonList","searchtext","isReminderCallAny","is_reminder_call_any","isReminderMessageAny","is_reminder_message_any","isReminderAny","isReceived","is_received","openedCount","opened_count","isBooked","is_booked","isBilled","is_billed","uuidSms","uuidEmail","uuidCall","amountTotalPlanned","amount_total_planned","amountTotalCompleted","amount_total_completed","pipeline_status","systemUserInitials","didChangeThisWeek","did_pipeline_status_change_this_week","includeAutoReminderToPatient","include_auto_reminder_message_to_patient","parseTreatmentItemList","_treatment","treatment","_document","parseTreatmentOption","option","parseTreatmentGroupFromOption","treatmentGroup","parsePatientDocument","doc","group","price","isPaid","is_paid","then","timeDifference","daysDifference","groupedDict","uuidPrefix","itemType","documentUuid","coveragePublic","coverage_public","coverageDanmark","coverage_danmark","coverageDanmarkMax","coverage_danmark_max","displayImage","titleLookup","recapDescriptionLookup","treatmentAttribs","display_image","recap_description_da","current","currentList","planned","completed","isScanned","_total","plannedPriceTotal","completedPriceTotal","issuedAt","issued_at","is_opened_list","_options","PatientDocumentOptions","_option","readableDocumentType","i18n","t","isPendingAnyAmount","is_pending_any_amount","isPrevThisWeek","is_prev_this_week","isBelowAmount","is_below_amount","actionType","action_type","prevRegisteredAt","prev_registered_at","prevScheduledAt","prev_scheduled_at","nextScheduledAt","next_scheduled_at","prettyPrevRegisteredAt","prettyPrevScheduledAt","prettyNextScheduledAt","groupData","parseTreatmentGroup","parseTreatmentGroupList","groupList","groupByTreatmentOption","category","_addToGroupTreatmentDict","asList","groupByDate","groupByTotalSumTreatment","groupByTotalSumDocument","groupByDateFlattenValue","newList","groupByDateFlattenLabel","isFirst","isLast","groupByTreatmentGroup","groupByDentist","byDentist","newGroupDict","amount","curr","amountTotalBilled","amountTotalPaid","countPlanned","countCompleted","countBilled","countPaid","entry","amountNew","count","precedenceOrFallback","byGroup","_similarityStrList","subtitle","recap_description","similarityStr","prevent","Rippleable","Comparable","prop","event","inputValue","falseValue","trueValue","multiple","appIsDark","isMultiple","isArray","some","valueComparator","isDirty","domProps","checked","change","onChange","onKeydown","onClick"],"mappings":"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CAxB,a,YCqmBa,GACf5I,KADA,WAEA,OACA4E,iBACAkD,YACAG,gBACA7C,mBACAQ,mBACAG,mBACAG,mBACAG,gCACAG,gCACAG,gCACAG,gCACAG,4BACAG,4BACAG,4BACAG,4BACA/B,qBACAG,qBACAG,qBACAM,kCACAG,kCACAG,kCACAM,8BACAG,8BACAG,8BACAxC,uBACAmB,sBACAY,yBACAgG,gBACA3I,iCACAF,8BACAQ,yBACAZ,qBACA,CACA9E,UACAC,6BAEA,CACAD,UACAC,uBAEA,CACAD,UACAC,uBAEA,CACAD,UACAC,wBAEA,CACAD,WACAC,wBAEA,CACAD,WACAC,wBAEA,CACAD,UACAC,wBAEA,CACAD,WACAC,wBAEA,CACAD,UACAC,0BAGAwF,0CACAH,kCACAD,6BACA,CACArF,YACAC,aAEA,CACAD,cACAC,gBAGAuF,gCACAD,qBACA,CACAvF,SACAC,YAEA,CACAD,SACAC,gBAKA+N,2BACAC,gBACA1E,uBAAA,iCACAC,0BAAA,oCACAH,wBAAA,kCACAC,8BAAA,wCACAG,4BAAA,sCACAC,+BAAA,yCACAjD,6BAAA,oCACAG,6BAAA,oCACAG,6BAAA,oCACAG,6BAAA,oCACAG,0CAAA,OACAwC,0CACArC,0CAAA,OACAqC,0CACAlC,0CAAA,OACAkC,0CACA/B,0CAAA,OACA+B,0CACA5B,sCAAA,OACA4B,sCACAzB,sCAAA,OACAyB,sCACAtB,sCAAA,OACAsB,sCACAnB,sCAAA,OACAmB,yCAGAqE,QA/HA,WAgIA,6BAAAhS,YAEAiS,QAlIA,WAkIA,oKACA,QADA,OAEA,wCACA,8CACA,6CACA,mDACA,mCACA,mCACA,mCACA,mCAEA,6DACA,6DACA,6DACA,6DAEA,qDACA,qDACA,qDACA,qDAEA,6CACA,6CACA,6CAEA,iCACA,sCACA,iCACA,sCACA,iCACA,sCAEA,+DACA,+DACA,+DAlCA,+CAoCAtM,wDACAuM,8BACA,MACA,kBACA,gBACA,sBAEAC,gBACAC,kCARA,IAUAzI,aAVA,WAUA,uKACA,mBACA0D,EAAA,2BACAC,EAAA,8BACAC,EAAA,iCACAC,EAAA,wBALA,SAMA,mBACAH,aACAC,gBACAC,kBACAC,uBAVA,OAYA,mBACA,wBAbA,8CAeAf,WAzBA,WAyBA,uLACA,mBACA4F,EAAA,gBACAC,EAAA,oBACA,KACA,gBACAC,EAAA,oBACA,KACA,gBACAC,EAAA,oBACA,KACA,gBAEAC,EAAA,6BACAC,EAAA,EACAtH,+BACA,KACA,6BACAuH,EAAA,EACApH,+BACA,KACA,6BACAqH,EAAA,EACAlH,+BACA,KACA,6BAEAmH,EAAA,yBACAC,EAAA,6BACA,KACA,yBACAC,EAAA,6BACA,KACA,yBACAC,EAAA,6BACA,KACA,yBApCA,UAsCA,iBACA/I,gBACAQ,gBACAG,gBACAG,gBACAG,6BACAG,6BACAG,6BACAG,6BACAG,yBACAG,yBACAG,yBACAG,2BAlDA,QAoDA,mBACA,wBArDA,+CAuDA0G,qBAhFA,YAgFA,iKAAAC,YACA,mBADA,SAEA,oBACAjC,mBACAC,uBAJA,OAMA,mBANA,8CAQAiC,oBAxFA,WAyFA,8BACA,qBCnkCmY,I,yUC4BpXnP,iBAQboP,OACAC,QAEAlP,OAAO,CACPC,KAAM,WAEN2F,WAAY,CACVuJ,qBAGFtP,OAAQ,CAACqP,QAET7O,MAAO,CACLC,SAAUC,QACV6O,aAAc7O,QACd8O,IAAK,CACHrC,KAAM,CAACsC,OAAQC,QACf5L,QAAS,KAEX6L,IAAK,CACHxC,KAAM,CAACsC,OAAQC,QACf5L,QAAS,GAEX8L,KAAM,CACJzC,KAAM,CAACsC,OAAQC,QACf5L,QAAS,GAEX+L,WAAYH,OACZI,WAAY,CACV3C,KAAM,CAACzM,QAASgP,QAChB5L,aAAS/H,EACTgU,UAAW,SAAAC,GAAC,MAAiB,mBAANA,GAAyB,WAANA,IAE5CC,UAAW,CACT9C,KAAM,CAACsC,OAAQC,QACf5L,QAAS,IAEXoM,WAAY,CACV/C,KAAMgD,MACNrM,QAAS,iBAAO,KAElBsM,MAAO,CACLjD,KAAM,CAACzM,QAASgP,QAChB5L,SAAS,EACTiM,UAAW,SAAAC,GAAC,MAAiB,mBAANA,GAAyB,WAANA,IAE5CK,SAAU,CACRlD,KAAM,CAACsC,OAAQC,QACf5L,QAAS,GAEXwM,WAAYZ,OACZa,eAAgBb,OAChB5P,MAAO,CAAC2P,OAAQC,QAChBc,SAAU9P,SAGZG,KAAM,iBAAO,CACX4P,IAAK,KACLC,SAAU,KACVC,cAAc,EACdC,cAAe,EACfC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,YAAa,IAGflD,SAAU,CACRmD,QADQ,WAEN,OAAO,iCACF7B,OAAO8B,QAAQpD,SAASmD,QAAQE,KAAK5U,OAD1C,IAEE,mBAAmB,EACnB,4BAA6BA,KAAKiU,SAClC,iCAAkCjU,KAAKgT,gBAG3C6B,cAAe,CACblG,IADa,WAEX,OAAO3O,KAAK8U,WAEdC,IAJa,SAIRnQ,GACHA,EAAMtB,MAAMsB,GAAO5E,KAAKgV,SAAWpQ,EAInC,IAAMrB,EAAQvD,KAAKiV,WAAWtW,KAAKyU,IAAIzU,KAAKsU,IAAIrO,EAAK5E,KAAKgV,UAAWhV,KAAKkV,WAEtE3R,IAAUvD,KAAK8U,YAEnB9U,KAAK8U,UAAYvR,EAEjBvD,KAAKiF,MAAM,QAAS1B,MAGxB4R,gBA3BQ,WA4BN,OAAOnV,KAAKoU,aACRpU,KAAKoV,WAAapV,KAAKqV,YACrB,uCACA,OACF,IAENL,SAlCQ,WAmCN,OAAOM,WAAWtV,KAAKoT,MAEzB8B,SArCQ,WAsCN,OAAOI,WAAWtV,KAAKiT,MAEzBoC,YAxCQ,WAyCN,OAAOrV,KAAKqT,KAAO,EAAIiC,WAAWtV,KAAKqT,MAAQ,GAEjDkC,WA3CQ,WA4CN,IAAMA,GAAcvV,KAAKiV,WAAWjV,KAAK6U,eAAiB7U,KAAKgV,WAAahV,KAAKkV,SAAWlV,KAAKgV,UAAY,IAE7G,OAAO1R,MAAMiS,GAAc,EAAIA,GAEjCC,gBAhDQ,WAgDO,MACPC,EAAWzV,KAAKiU,SAAW,SAAW,OACtCyB,EAAS1V,KAAKiU,SAAW,MAAQ,QACjC0B,EAAW3V,KAAKiU,SAAW,SAAW,QAEtCtU,EAAQK,KAAK4V,SAASC,IAAM,OAAS,IACrCjW,EAAMI,KAAK4V,SAASC,IAAM,IAAM,OAChCtS,EAAQvD,KAAK8V,WAAL,eAA0B9V,KAAKuV,WAA/B,uBAA0DvV,KAAKuV,WAA/D,KAEd,OAAO,EAAP,CACEQ,WAAY/V,KAAKmV,iBADnB,iBAEGM,EAAW9V,GAFd,iBAGG+V,EAAS9V,GAHZ,iBAIG+V,EAAWpS,GAJd,GAOFyS,YAhEQ,WAgEG,MACHP,EAAWzV,KAAKiU,SAAWjU,KAAK4V,SAASC,IAAM,SAAW,MAAQ7V,KAAK4V,SAASC,IAAM,OAAS,QAC/FH,EAAS1V,KAAKiU,SAAW,SAAW,QAEpCtU,EAAQ,MACRC,EAAMI,KAAK8V,WAAL,eAA0B,IAAM9V,KAAKuV,WAArC,4BAAqE,IAAMvV,KAAKuV,WAAhF,MAEZ,OAAO,EAAP,CACEQ,WAAY/V,KAAKmV,iBADnB,iBAEGM,EAAW9V,GAFd,iBAGG+V,EAAS9V,GAHZ,GAMFwV,UA7EQ,WA8EN,OAAOpV,KAAK2T,WAAWrU,OAAS,KAC1BU,KAAK8V,aAAc9V,KAAKqV,cAAerV,KAAK6T,QAEpDoC,SAjFQ,WAkFN,OAAOtX,KAAKD,MAAMsB,KAAKkV,SAAWlV,KAAKgV,UAAYhV,KAAKqV,cAE1Da,eApFQ,WAqFN,OAAQlW,KAAK8V,eACX9V,KAAKuT,aACLvT,KAAKmW,aAAa,iBAGtBC,mBA1FQ,WA2FN,IAAIpW,KAAK8V,WACT,OAAI9V,KAAK+T,WAAmB/T,KAAK+T,WAC7B/T,KAAKqW,OAAerW,KAAKsW,gBACtBtW,KAAKsW,iBAAmB,qBAEjCC,uBAhGQ,WAiGN,IAAIvW,KAAK8V,WACT,OAAI9V,KAAKgU,eAAuBhU,KAAKgU,eAC9BhU,KAAKsW,iBAAmBtW,KAAKwW,eAEtCC,mBArGQ,WAsGN,OAAIzW,KAAKsT,WAAmBtT,KAAKsT,WAC1BtT,KAAKsW,iBAAmBtW,KAAKwW,gBAIxC9R,MAAO,CACL0O,IADK,SACAxO,GACH,IAAM8R,EAASpB,WAAW1Q,GAC1B8R,EAAS1W,KAAK6U,eAAiB7U,KAAKiF,MAAM,QAASyR,IAErDzD,IALK,SAKArO,GACH,IAAM8R,EAASpB,WAAW1Q,GAC1B8R,EAAS1W,KAAK6U,eAAiB7U,KAAKiF,MAAM,QAASyR,IAErDnT,MAAO,CACLoB,QADK,SACI8O,GACPzT,KAAK6U,cAAgBpB,KAQ3BkD,YA9LO,WA+LL3W,KAAK6U,cAAgB7U,KAAKuD,OAG5BmO,QAlMO,WAoML1R,KAAKkU,IAAM0C,SAASC,cAAc,eAChCC,eAAY,6EAA8E9W,OAG9FoF,QAAS,CACP2R,eADO,WAEL,IAAMC,EAAuC,CAAChX,KAAKiX,YAC7CC,EAASlX,KAAKmX,YAOpB,OANAnX,KAAKgT,aACDgE,EAASI,QAAQF,GACjBF,EAAS1Q,KAAK4Q,GAElBF,EAAS1Q,KAAKtG,KAAKqX,eAEZL,GAETG,UAZO,WAaL,OAAOnX,KAAKgI,eAAe,MAAO,CAChCsP,MAAO,gBACL,YAAY,EACZ,wBAAyBtX,KAAKiU,SAC9B,qBAAsBjU,KAAKiU,SAC3B,oBAAqBjU,KAAKsU,UAC1B,mBAAoBtU,KAAKuU,SACzB,qBAAsBvU,KAAK8V,WAC3B,qBAAsB9V,KAAKuX,YACxBvX,KAAKwX,cAEVhO,WAAY,CAAC,CACX3F,KAAM,gBACNN,MAAOvD,KAAKyX,SAEdtQ,GAAI,CACFuQ,MAAO1X,KAAK2X,cACZC,UAAW5X,KAAK6X,kBAChBC,WAAY9X,KAAK6X,oBAElB7X,KAAK+X,gBAEVA,YAnCO,WAoCL,MAAO,CACL/X,KAAKgY,WACLhY,KAAKiY,oBACLjY,KAAKkY,WACLlY,KAAKmY,kBACHnY,KAAK6U,cACL7U,KAAKuV,WACLvV,KAAKuU,SACLvU,KAAKsU,UACLtU,KAAKoY,QACLpY,KAAKyX,UAIXO,SAlDO,WAmDL,OAAOhY,KAAKgI,eAAe,QAAS,CAClChB,MAAO,gBACLzD,MAAOvD,KAAK6U,cACZwD,GAAIrY,KAAKsY,WACTpU,UAAU,EACVG,UAAU,EACVkU,UAAW,GACRvY,KAAKwY,WAKdP,kBA/DO,WAgEL,IAAMjB,EAAW,CACfhX,KAAKgI,eAAe,MAAOhI,KAAKyY,mBAAmBzY,KAAKoW,mBAAoB,CAC1ErP,YAAa,6BACb2R,MAAO1Y,KAAKgW,eAEdhW,KAAKgI,eAAe,MAAOhI,KAAKyY,mBAAmBzY,KAAKuW,uBAAwB,CAC9ExP,YAAa,uBACb2R,MAAO1Y,KAAKwV,oBAIhB,OAAOxV,KAAKgI,eAAe,MAAO,CAChCjB,YAAa,4BACb4R,IAAK,SACJ3B,IAELkB,SAhFO,WAgFC,WACN,IAAKlY,KAAKqT,OAASrT,KAAKoV,UAAW,OAAO,KAE1C,IAAMtB,EAAWwB,WAAWtV,KAAK8T,UAC3B8E,EAAQC,eAAY7Y,KAAKiW,SAAW,GACpC6C,EAAY9Y,KAAKiU,SAAW,SAAYjU,KAAK4V,SAASC,IAAM,QAAU,OACtEkD,EAAkB/Y,KAAKiU,SAAYjU,KAAK4V,SAASC,IAAM,OAAS,QAAW,MAE7E7V,KAAKiU,UAAU2E,EAAMI,UAEzB,IAAMnF,EAAQ+E,EAAMK,KAAI,SAAAC,GAAQ,MACxBlC,EAAW,GAEb,EAAKrD,WAAWuF,IAClBlC,EAAS1Q,KAAK,EAAK0B,eAAe,MAAO,CACvCjB,YAAa,wBACZ,EAAK4M,WAAWuF,KAGrB,IAAMC,EAAQD,GAAS,IAAM,EAAKjD,UAC5BmD,EAAS,EAAKxD,SAASC,IAAO,IAAM,EAAKN,WAAc4D,EAAQA,EAAQ,EAAK5D,WAElF,OAAO,EAAKvN,eAAe,OAAQ,CACjC6B,IAAKqP,EACLnS,YAAa,iBACbuQ,MAAO,CACL,yBAA0B8B,GAE5BV,OAAK,GACHS,MAAO,GAAF,OAAKrF,EAAL,MACLuF,OAAQ,GAAF,OAAKvF,EAAL,OAFH,iBAGFgF,EAHE,eAGkBK,EAHlB,eAG8BrF,EAAW,EAHzC,yBAIFiF,EAJE,qBAI8BjF,EAAW,EAJzC,YAMJkD,MAGL,OAAOhX,KAAKgI,eAAe,MAAO,CAChCjB,YAAa,4BACbuQ,MAAO,CACL,yCAAyD,WAAftX,KAAK6T,OAAsB7T,KAAK2T,WAAWrU,OAAS,IAE/FuU,IAELsE,kBA5HO,SA6HL5U,EACA+V,EACA/E,EACAD,EACA8D,EACAX,GACa,IAAbkB,EAAa,uDAAP,QAEA3B,EAAW,CAAChX,KAAKuZ,YAEjBC,EAAoBxZ,KAAKyZ,qBAAqBlW,GAGpD,OAFAvD,KAAKkW,gBAAkBc,EAAS1Q,KAAKtG,KAAK0Z,cAAcF,IAEjDxZ,KAAKgI,eAAe,MAAOhI,KAAK2Z,aAAa3Z,KAAKyW,mBAAoB,CAC3EkC,MACA9O,IAAK8O,EACL5R,YAAa,4BACbuQ,MAAO,CACL,oCAAqC/C,EACrC,qCAAsCD,EACtC,wCAAyCtU,KAAKkW,gBAEhDwC,MAAO1Y,KAAK4Z,wBAAwBN,GACpCtS,MAAO,CACL6S,KAAM,SACNtB,SAAUvY,KAAK8V,YAAc,EAAI9V,KAAKwY,OAAOD,SAAWvY,KAAKwY,OAAOD,SAAW,EAC/E,aAAcvY,KAAKwY,OAAO,eAAiBxY,KAAKwD,MAChD,gBAAiBxD,KAAKoT,IACtB,gBAAiBpT,KAAKiT,IACtB,gBAAiBjT,KAAK6U,cACtB,gBAAiB1B,OAAOnT,KAAKuX,YAC7B,mBAAoBvX,KAAKiU,SAAW,WAAa,cAEnD9M,GAAI,CACF2S,MAAO1B,EACP2B,KAAMtC,EACNuC,QAASha,KAAKia,aAEdjD,IAENyC,qBArKO,SAqKelW,GACpB,OAAOvD,KAAKmW,aAAa,eACrBnW,KAAKmW,aAAa,eAAgB,CAAE5S,UACpC,CAACvD,KAAKgI,eAAe,OAAQ,CAACmL,OAAO5P,OAE3CmW,cA1KO,SA0KQQ,GACb,IAAMC,EAAOC,eAAcpa,KAAK0T,WAE1B2G,EAAYra,KAAKiU,SAAL,qCACiBf,OAAOlT,KAAK0T,WAAa,EAAK,EAD/C,0GAIlB,OAAO1T,KAAKgI,eAAesS,OAAkB,CAC3CrW,MAAO,CAAEsW,OAAQ,kBAChB,CACDva,KAAKgI,eAAe,MAAO,CACzBjB,YAAa,kCACbyC,WAAY,CAAC,CACX3F,KAAM,OACNN,MAAOvD,KAAKsU,WAAatU,KAAKuU,UAAgC,WAApBvU,KAAKuT,cAEhD,CACDvT,KAAKgI,eAAe,MAAOhI,KAAKyY,mBAAmBzY,KAAKyW,mBAAoB,CAC1E1P,YAAa,wBACb2R,MAAO,CACLW,OAAQc,EACRhB,MAAOgB,EACPE,eAEA,CAACra,KAAKgI,eAAe,MAAOkS,UAItCX,SAtMO,WAuML,OAAOvZ,KAAKgI,eAAe,MAAOhI,KAAKyY,mBAAmBzY,KAAKyW,mBAAoB,CACjF1P,YAAa,sBAGjB6S,wBA3MO,SA2MkBT,GACvB,IAAML,EAAY9Y,KAAKiU,SAAW,MAAQ,OACtC1Q,EAAQvD,KAAK4V,SAASC,IAAM,IAAMsD,EAAQA,EAG9C,OAFA5V,EAAQvD,KAAKiU,SAAW,IAAM1Q,EAAQA,EAE/B,gBACLwS,WAAY/V,KAAKmV,iBAChB2D,EAFH,UAEkBvV,EAFlB,OAKFsU,kBArNO,SAqNYxQ,GAA0B,aAM3C,GALAA,EAAEmT,iBAEFxa,KAAKmU,SAAWnU,KAAK6U,cACrB7U,KAAKuU,UAAW,EAEhB,OAAK,EAAAlN,EAAEM,SAAF8S,EAAsBC,QAAQ,4DAA6D,CAC9F1a,KAAKoU,cAAe,EACpB,IAAMuG,EAAWtT,EAAEM,OAAmBiT,wBAChCC,EAAQ,YAAaxT,EAAIA,EAAEyT,QAAQ,GAAKzT,EAC9CrH,KAAKyU,YAAczU,KAAKiU,SACpB4G,EAAME,SAAWJ,EAAQtO,IAAMsO,EAAQtB,OAAS,GAChDwB,EAAMG,SAAWL,EAAQM,KAAON,EAAQxB,MAAQ,QAEpDnZ,KAAKyU,YAAc,EACnByG,OAAOC,aAAanb,KAAKqU,cACzBrU,KAAKqU,aAAe6G,OAAO/U,YAAW,WACpC,EAAKiO,cAAe,IACnB,KAGL,IAAMgH,GAAiBC,QAAmB,CAAEC,SAAS,EAAMC,SAAS,GAC9DC,IAAmBH,QAAmB,CAAEC,SAAS,GAEjDG,EAAe,YAAapU,EAElCrH,KAAK0b,YAAYrU,GACjBrH,KAAKkU,IAAIyH,iBAAiBF,EAAe,YAAc,YAAazb,KAAK0b,YAAaF,GACtFI,eAAqB5b,KAAKkU,IAAKuH,EAAe,WAAa,UAAWzb,KAAK6b,gBAAiBT,GAE5Fpb,KAAKiF,MAAM,QAASjF,KAAK6U,gBAE3BgH,gBArPO,SAqPUxU,GACfA,EAAEyU,kBACFZ,OAAOC,aAAanb,KAAKqU,cACzBrU,KAAKoU,cAAe,EACpB,IAAMoH,IAAmBH,QAAmB,CAAEC,SAAS,GACvDtb,KAAKkU,IAAI6H,oBAAoB,YAAa/b,KAAK0b,YAAaF,GAC5Dxb,KAAKkU,IAAI6H,oBAAoB,YAAa/b,KAAK0b,YAAaF,GAE5Dxb,KAAKiF,MAAM,UAAWoC,GACtBrH,KAAKiF,MAAM,MAAOjF,KAAK6U,eAClBmH,eAAUhc,KAAKmU,SAAUnU,KAAK6U,iBACjC7U,KAAKiF,MAAM,SAAUjF,KAAK6U,eAC1B7U,KAAKwU,SAAU,GAGjBxU,KAAKuU,UAAW,GAElBmH,YAtQO,SAsQMrU,GACI,cAAXA,EAAEuJ,OACJ5Q,KAAKoU,cAAe,GAEtBpU,KAAK6U,cAAgB7U,KAAKic,eAAe5U,IAE3C4S,UA5QO,SA4QI5S,GACT,GAAKrH,KAAKkc,cAAV,CAEA,IAAM3Y,EAAQvD,KAAKmc,aAAa9U,EAAGrH,KAAK6U,eAG7B,MAATtR,GACAA,EAAQvD,KAAKgV,UACbzR,EAAQvD,KAAKkV,WAGflV,KAAK6U,cAAgBtR,EACrBvD,KAAKiF,MAAM,SAAU1B,MAEvBoU,cA1RO,SA0RQtQ,GACb,GAAIrH,KAAKwU,QACPxU,KAAKwU,SAAU,MADjB,CAIA,IAAM4H,EAAQpc,KAAKqc,MAAMD,MACzBA,EAAMtC,QAEN9Z,KAAK0b,YAAYrU,GACjBrH,KAAKiF,MAAM,SAAUjF,KAAK6U,iBAE5B4C,OArSO,SAqSCpQ,GACNrH,KAAKsU,WAAY,EAEjBtU,KAAKiF,MAAM,OAAQoC,IAErB+Q,QA1SO,SA0SE/Q,GACPrH,KAAKsU,WAAY,EAEjBtU,KAAKiF,MAAM,QAASoC,IAEtB4U,eA/SO,SA+SS5U,GACd,IAAM1H,EAAQK,KAAKiU,SAAW,MAAQ,OAChC3U,EAASU,KAAKiU,SAAW,SAAW,QACpCyD,EAAQ1X,KAAKiU,SAAW,UAAY,UAE1C,EAGIjU,KAAKqc,MAAMC,MAAM1B,wBAFV2B,EADX,EACG5c,GACS6c,EAFZ,EAEGld,GAEGmd,EAAc,YAAapV,EAAIA,EAAEyT,QAAQ,GAAGpD,GAASrQ,EAAEqQ,GAGzDgF,EAAW/d,KAAKyU,IAAIzU,KAAKsU,KAAKwJ,EAAcF,EAAavc,KAAKyU,aAAe+H,EAAa,GAAI,IAAM,EAKxG,OAHIxc,KAAKiU,WAAUyI,EAAW,EAAIA,GAC9B1c,KAAK4V,SAASC,MAAK6G,EAAW,EAAIA,GAE/BpH,WAAWtV,KAAKoT,KAAOsJ,GAAY1c,KAAKkV,SAAWlV,KAAKgV,WAEjEmH,aAlUO,SAkUO9U,EAAkB9D,GAC9B,GAAKvD,KAAKkc,cAAV,CAEA,IAAQS,EAAuDC,OAAvDD,OAAQE,EAA+CD,OAA/CC,SAAUjd,EAAqCgd,OAArChd,IAAKkd,EAAgCF,OAAhCE,KAAM7B,EAA0B2B,OAA1B3B,KAAM8B,EAAoBH,OAApBG,MAAOC,EAAaJ,OAAbI,KAAMC,EAAOL,OAAPK,GAExD,GAAK,CAACN,EAAQE,EAAUjd,EAAKkd,EAAM7B,EAAM8B,EAAOC,EAAMC,GAAIjY,SAASqC,EAAE6V,SAArE,CAEA7V,EAAEmT,iBACF,IAAMnH,EAAOrT,KAAKqV,aAAe,EAC3B8H,GAASnd,KAAKkV,SAAWlV,KAAKgV,UAAY3B,EAChD,GAAI,CAAC4H,EAAM8B,EAAOC,EAAMC,GAAIjY,SAASqC,EAAE6V,SAAU,CAC/C,IAAME,EAAWpd,KAAK4V,SAASC,IAAM,CAACoF,EAAMgC,GAAM,CAACF,EAAOE,GACpDnE,EAAYsE,EAASpY,SAASqC,EAAE6V,SAAW,GAAK,EAChDG,EAAahW,EAAEiW,SAAW,EAAKjW,EAAEkW,QAAU,EAAI,EAErDha,GAAiBuV,EAAYzF,EAAOgK,OAC/B,GAAIhW,EAAE6V,UAAYJ,EACvBvZ,EAAQvD,KAAKgV,cACR,GAAI3N,EAAE6V,UAAYtd,EACvB2D,EAAQvD,KAAKkV,aACR,CACL,IAAM4D,EAAYzR,EAAE6V,UAAYL,EAAW,GAAK,EAChDtZ,GAAiBuV,EAAYzF,GAAQ8J,EAAQ,IAAMA,EAAQ,GAAK,IAGlE,OAAO5Z,KAET0R,WA7VO,SA6VK1R,GACV,IAAKvD,KAAKqV,YAAa,OAAO9R,EAG9B,IAAMia,EAAcxd,KAAKqT,KAAKjV,WAAWqf,OACnCC,EAAWF,EAAYG,QAAQ,MAAQ,EACxCH,EAAYle,OAASke,EAAYG,QAAQ,KAAO,EACjD,EACEC,EAAS5d,KAAKgV,SAAWhV,KAAKqV,YAE9BwI,EAAWlf,KAAK4C,OAAOgC,EAAQqa,GAAU5d,KAAKqV,aAAerV,KAAKqV,YAAcuI,EAEtF,OAAOtI,WAAW3W,KAAKyU,IAAIyK,EAAU7d,KAAKkV,UAAU4I,QAAQJ,Q,gDCjlB9DK,EAAY,eACd,EACAlX,EACA2F,GACA,EACA,KACA,KACA,MAIa,aAAAuR,EAAiB,QAoBhC,IAAkBA,EAAW,CAACC,OAAA,KAAKC,aAAAC,EAAA,KAAaC,UAAAD,EAAA,KAAUE,WAAAF,EAAA,KAAWG,YAAA,KAAUC,OAAA,KAAKC,aAAA,KAAWC,WAAA,KAASC,QAAA,KAAMC,OAAA,KAAKC,UAAA,KAAQC,QAAA,EAAQC,UAAA,KAAQC,aAAA,KAAWC,WAAA,KAASC,cAAA,U,kCCtC/J,4BAMeC,cAAIrb,OAAO,CACxBC,KAAM,aAEN2F,WAAY,CAAE0V,eAEdjb,MAAO,CACLib,OAAQ,CACNtO,KAAM,CAACzM,QAASW,QAChByC,SAAS,IAIbnC,QAAS,CACP+Z,UADO,WACwB,IAApB7a,EAAoB,uDAAF,GAC3B,OAAKtE,KAAKkf,QAEV5a,EAAKyC,YAAc,sCAEnBzC,EAAKkF,WAAalF,EAAKkF,YAAc,GACrClF,EAAKkF,WAAWlD,KAAK,CACnBzC,KAAM,SACNN,MAAO,CAAE+I,QAAQ,KAGZtM,KAAKgI,eAAe,MAAO1D,IAVT,U,qBCnB/B,EAAQ,S,2DCDO,QAEX,CACI8a,MAAO,2CACPC,MAAO,QACP9b,MAAO,YACP+b,OAAQ,OAEZ,CACIF,MAAO,2BACPC,MAAO,QACP9b,MAAO,OACP+b,OAAQ,OAEZ,CACIF,MAAO,mCACPC,MAAO,QACP9b,MAAO,cACP+b,OAAQ,OAEZ,CACIF,MAAO,8BACPC,MAAO,QACP9b,MAAO,eACP+b,OAAQ,OAEZ,CACIF,MAAO,gCACPC,MAAO,QACP9b,MAAO,YACP+b,OAAQ,OAOZ,CACIF,MAAO,gBACPC,MAAO,MACP9b,MAAO,GACP+b,OAAQ,M,uBCxChB,IAAIC,EAAY,EAAQ,QAExB9f,EAAOC,QAAU,mEAAmE8f,KAAKD,I,iLCS1EE,cAAW7b,OAAO,CAC/BC,KAAM,aAENI,MAAO,CACLyb,cAAevb,QACfwb,kBAAmB,CACjB/O,KAAMuC,OACN5L,QAAS,0BAEXqY,QAAS,CACPhP,KAAMuC,OACN5L,QAAS,gBAEXsY,OAAQ,CACNjP,KAAMuC,OACN5L,QAAS,gBAIbjD,KAnB+B,WAoB7B,MAAO,CACLwb,mBAAoB9f,KAAK0f,gBAI7BnO,SAAU,CACRmD,QADQ,WAEN,OAAO,iCACF7B,OAAO8B,QAAQpD,SAASmD,QAAQE,KAAK5U,OAD1C,IAEE,+BAA+B,EAC/B,qBAAqB,EACrB,yBAA0BA,KAAK8f,sBAGnCC,aATQ,WAUN,OAAI/f,KAAK8f,mBACA9f,KAAK2f,kBACH3f,KAAKuU,SACPvU,KAAK6f,OAEL7f,KAAK4f,SAMhBtJ,gBArBQ,WAsBN,IAAItW,KAAK8V,YAAe9V,KAAK8f,mBAC7B,OAAI9f,KAAKggB,UAAYhgB,KAAK4F,eAAuB,QAC7C5F,KAAKigB,WAAmB,UACN,OAAlBjgB,KAAKkgB,SAA0BlgB,KAAKwW,mBAAxC,IAKJ9R,MAAO,CACLgb,cADK,SACU9a,GAAG,WAEhB5E,KAAKmgB,WAAU,kBAAO,EAAKL,mBAAqBlb,MAElDkb,mBALK,SAKelb,GAClB5E,KAAKiF,MAAM,uBAAwBL,IAErC2P,SARK,WASEvU,KAAK0f,gBACV1f,KAAK8f,oBAAqB,KAI9B1a,QAAS,CACPgb,YADO,WAEL,MAAoCpgB,KAAKkH,OAAvBmZ,GAAlB,EAAQjB,MAAR,qBACA,OAAOpf,KAAKgI,eAAe,MAAO,CAChCjB,YAAa,sCACZ,CACD/G,KAAKgI,eAAesY,OAAOtgB,KAAK2Z,aAAa3Z,KAAKsW,gBAAiB,CACjErS,MAAO,CACLsc,MAAOvgB,KAAKugB,MACZC,KAAMxgB,KAAKwgB,KACXC,MAAOzgB,KAAKygB,SAEZzgB,KAAK+f,cACT/f,KAAKgY,SAAS,WAAd,iCACKqI,GADL,IAEE,eAAgBrgB,KAAK8f,mBACjB,QACA9f,KAAKuU,SAASnW,cAEpB4B,KAAKmf,UAAUnf,KAAK2Z,aAAa3Z,KAAK0gB,iBAG1C3J,eAtBO,WAuBL,MAAO,CACL/W,KAAKogB,cACLpgB,KAAKiX,iB,iTCtGP0J,EAA0B,UAC1BC,EAA4B,YAE5B1Q,EAAc,CAClB2Q,yCADkB,SACuBxT,GAiBvC,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WAEtDqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,OACX2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBkR,EAAwBlR,EAAcmR,gBAAgB5c,KAExD+a,EAAQ,UACR8B,EAAS,kBACPC,EAAYxR,EAAQyR,WACpBC,EAA2B1R,EAAQ2R,2BACnCC,EAAa,UAAG5R,EAAQ6R,sBAAX,QAA6B7R,EAAQ8R,yBACpDJ,GACFjC,EAAQ,OACR8B,EAAS,oBACAK,GACTnC,EAAQ,UACR8B,EAAS,eACCC,IACV/B,EAAQ,UACR8B,EAAS,WAGX,IAAMQ,EAAY,GACZC,EAAU,GACVC,EAAgB,GAClBC,EAAI,EACR,IAAKA,KAAKb,EAAuB,CAC/B,IAAMc,EAAgBd,EAAsBa,GACtCE,EAAMD,EAAclS,WAAWmS,IAC/BC,EAASF,EAAclS,WAAWqS,QAClCC,EAAeJ,EAAclS,WAAWuS,cAC9CT,EAAUrb,KAAK0b,GACfJ,EAAQtb,KAAK2b,GACbJ,EAAcvb,KAAK6b,GAGrB,IAAME,EAAezS,EAAQ0S,WAAa,IAAIhiB,KAAKsP,EAAQ0S,YAAc,KACnEC,EAAcF,EAAaA,EAAWnhB,UAAY,KAClDshB,EAAkBH,EAAaA,EAAWI,mBAAmB,QAAS3B,GAAe,KAErF4B,EAAM,IAAIpiB,KACVqiB,EAAaN,EAAaK,EAAML,EAAa,EAC7CO,EAAcD,EAAW,KACzBE,EAAqBD,EAAY9E,QAAQ,GAEzCgF,EAAO,CACXnW,KAAMiD,EAAQjD,KACd9I,KAAM+L,EAAQ/L,KACd0e,UAAWA,EACXniB,KAAMoiB,EACNI,YAAaC,EACb1B,OAAQA,EACR9B,MAAOA,EACP0D,uBAAwBnT,EAAQoT,2BAChCC,4BAA6BrT,EAAQsT,gCACrC5B,yBAA0BA,EAC1BE,cAAeA,EACfG,UAAWA,EACXC,QAASA,EACTC,cAAeA,GAEjBd,EAAeza,KAAKwc,GAEtB,OAAO/B,GAGToC,6CAxFkB,SAwF2B9V,GAC3C,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WAEtDqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,CACjB,IAAM2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBqT,EAAUrT,EAAcqT,QAAQ9e,KAElC+e,EAAoBD,EAAUA,EAAQvT,WAAWyT,UAAY,KAIjE,GAHuB,MAAnBD,GAAqD,GAA1BA,EAAgB/jB,SAC7C+jB,EAAkBD,EAAQvT,WAAW0T,cAEhB,MAAnBF,GAAqD,GAA1BA,EAAgB/jB,OAAa,CAC1D,IAAMkkB,EAAYJ,EAAQvT,WAAW4T,WAAWhlB,MAAM,EAAG,GACzD4kB,EAAkB,6BAAH,OAAgCG,EAAhC,KAGjB,IAAMnB,EAAa,IAAI/hB,KAAKsP,EAAQ0S,YAC9BC,EAAYF,EAAWnhB,UACvBshB,EAAgBH,EAAWI,mBAAmB,QAAS3B,GAEvD4C,EAAa,IAAIpjB,KAAKsP,EAAQ+T,YAC9BC,EAAYF,EAAWxiB,UACvB2iB,EAAgBH,EAAWjB,mBAAmB,QAAS3B,GAEvDgD,EAAe,IAAIxjB,KAAKsP,EAAQmU,cAChCC,EAAcF,EAAa5iB,UAC3B+iB,EAAkBH,EAAarB,mBAAmB,QAAS3B,GAE7DoD,EAAaF,EACZ5gB,EAAY0gB,KACfI,EAAa3B,GAGf,IAAMO,EAAO,CACXnW,KAAMiD,EAAQjD,KACd9I,KAAMwf,EACNd,UAAWA,EACXqB,UAAWA,EACXI,YAAaA,EACb5jB,KAAM6jB,EACNC,WAAYA,EACZC,aAAcvU,EAAQwU,cACtB5C,cAAe5R,EAAQ6R,eACvB4C,yBAA0BzU,EAAQ0U,4BAClCT,cAAeA,EACfrB,cAAeA,EACfyB,gBAAiBA,GAEnBlD,EAAeza,KAAKwc,GAEtB,OAAO/B,GAGTwD,0CAjJkB,SAiJwBlX,GACxC,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WAEtDqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,CACjB,IAAM2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBqT,EAAUrT,EAAcqT,QAAQ9e,KAEhCkf,EAAY5T,EAAQjD,KAAKlO,MAAM,EAAG,GAEpC4kB,EAAoBD,EAAUA,EAAQvT,WAAWyT,UAAY,KAIjE,GAHuB,MAAnBD,GAAqD,GAA1BA,EAAgB/jB,SAC7C+jB,EAAkBD,EAAQvT,WAAW0T,cAEhB,MAAnBF,GAAqD,GAA1BA,EAAgB/jB,OAAa,CAC1D,IAAMklB,EAAYpB,EAAQvT,WAAW4T,WAAWhlB,MAAM,EAAG,GACzD4kB,EAAkB,6BAAH,OAAgCmB,EAAhC,KAGjB,IAAMnC,EAAa,IAAI/hB,KAAKsP,EAAQ0S,YAC9BC,EAAYF,EAAWnhB,UACvBshB,EAAgBH,EAAWI,mBAAmB,QAAS3B,GAEvD4C,EAAa,IAAIpjB,KAAKsP,EAAQ+T,YAC9BE,EAAgBH,EAAWjB,mBAAmB,QAAS3B,GAEvD2D,EAAU,IAAInkB,KAAKsP,EAAQ8U,SAC3BC,EAAaF,EAAQhC,mBAAmB,QAAS3B,GAEjD8D,EAAuC,MAAxBhV,EAAQiV,aAAuB,KAAO,IAAIvkB,KAAKsP,EAAQiV,cACtEC,EAAkC,MAAhBF,EAAuB,KAAOA,EAAanC,mBAAmB,QAAS3B,GAEzFiE,EAAmE,MAAvCnV,EAAQoV,4BAAsC,KAAO,IAAI1kB,KAAKsP,EAAQoV,6BAClGC,EAA4D,MAA7BF,EAAoC,KAAOA,EAA0BtC,mBAAmB,QAAS3B,GAEhIgC,EAAO,CACXnW,KAAMiD,EAAQjD,KACd9I,KAAMwf,EACNd,UAAWA,EACXniB,KAAMoiB,EACNA,cAAeA,EACfqB,cAAeA,EACfqB,OAAQtV,EAAQuV,QAChBC,YAAaxV,EAAQyV,aACrBC,YAAaR,EACbS,yBAA0B3V,EAAQ4V,4BAClCC,yBAA0BR,EAC1Bd,aAAcvU,EAAQwU,cACtB5C,cAAe5R,EAAQ6R,eACvBkD,WAAYA,EACZnB,UAAWA,GAEbzC,EAAeza,KAAKwc,GAEtB,OAAO/B,GAGH2E,oBA7MY,YAkNf,kMAJDtV,EAIC,EAJDA,MAIC,IAHDuV,qBAGC,MAHe,yBAGf,MAFDC,qBAEC,aADDC,0BACC,MADoB,YACpB,EACGC,EAAY,GADf,2BAEa1V,GAFb,qDAEQ1J,EAFR,WAGOoc,EAAO1S,EAAM1J,GACbqf,EAAejD,EAAKkD,aACpBC,EALP,UAKuBnD,EAAKoD,qBAL5B,QAK6CP,EACtCQ,EAAsBrD,GAAD,UAAaA,EAAKsD,kBAAlB,QAAQ,EANpC,UAQmB,EAAKC,wBAAwB,CAC7CvD,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAbvB,QAQCL,EARD,8BAiBD,IAASnZ,KADL2Z,EAAU,GACGR,EACfQ,EAAQhgB,KAAKwf,EAAUnZ,IAGrB4Z,EAAU,GArBb,2BAsBaD,GAtBb,kDAsBQxE,EAtBR,WAuBO0E,EAAOF,EAAQxE,IACjB8D,EAxBL,kCAyB2B,EAAKa,qBAAqB,CAChDrW,MAAOoW,EAAKpW,MACZwV,eAAe,IA3BpB,QAyBSc,EAzBT,OA6BGF,EAAK,aAAeE,EACpBF,EAAK,YAAcA,EAAKX,GA9B3B,QAgCCU,EAAQjgB,KAAKkgB,GAhCd,iDAmCMD,EAAQI,MAAK,SAACC,EAAGC,GAAJ,eAAU,UAACA,EAAET,kBAAH,QAAiB,IAAjB,UAAuBQ,EAAER,kBAAzB,QAAuC,OAnCpE,+CAsCHU,kBAxPkB,SAwPAzZ,GAChB,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WAEtDqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,CACjB,IAAM2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBqT,EAAUrT,EAAcqT,QAAQ9e,KAEhCkf,EAAY5T,EAAQjD,KAAKlO,MAAM,EAAG,GAEpC4kB,EAAoBD,EAAUA,EAAQvT,WAAWyT,UAAY,KAIjE,GAHuB,MAAnBD,GAAqD,GAA1BA,EAAgB/jB,SAC7C+jB,EAAoBD,EAAUA,EAAQvT,WAAW0T,aAAe,MAE3C,MAAnBF,GAAqD,GAA1BA,EAAgB/jB,OAAa,CAC1D,IAAMklB,EAAcpB,EAAUA,EAAQvT,WAAW4T,WAAWhlB,MAAM,EAAG,GAAK,KAC1E4kB,EAAkB,6BAAH,OAAgCmB,EAAhC,KAGjB,IAAMnC,EAAa,IAAI/hB,KAAKsP,EAAQ0S,YAC9BC,EAAYF,EAAWnhB,UACvBshB,EAAgBH,EAAWI,mBAAmB,QAAS3B,GAEvD4C,EAAa,IAAIpjB,KAAKsP,EAAQ+T,YAC9BE,EAAgBH,EAAWjB,mBAAmB,QAAS3B,GAEvD2D,EAAU,IAAInkB,KAAKsP,EAAQ8U,SAC3BC,EAAaF,EAAQhC,mBAAmB,QAAS3B,GAEjD8D,EAAuC,MAAxBhV,EAAQiV,aAAuB,KAAO,IAAIvkB,KAAKsP,EAAQiV,cACtEC,EAAkC,MAAhBF,EAAuB,KAAOA,EAAanC,mBAAmB,QAAS3B,GAEzFiG,EAAqC,MAAvBnX,EAAQoX,YAAsB,KAAO,IAAI1mB,KAAKsP,EAAQoX,aACpEC,EAAgC,MAAfF,EAAsB,KAAOA,EAAYtE,mBAAmB,QAAS3B,GAEtFkF,EAAepW,EAAQsX,cACvBC,EAAennB,KAAKonB,gBAAgB,CAAEpB,aAAcA,IACpDE,EAAgBiB,EAAa/H,MAC7BiI,EAAqBF,EAAaf,WAElCtD,EAAO,CACXnW,KAAMiD,EAAQjD,KACd9I,KAAMwf,EACN2C,aAAcA,EACdE,cAAeA,EACfE,WAAYiB,EACZ9E,UAAWA,EACXniB,KAAMoiB,EACNA,cAAeA,EACfqB,cAAeA,EACfqB,OAAQtV,EAAQuV,QAChBC,YAAaxV,EAAQyV,aACrBC,YAAaR,EACbwC,WAAY1X,EAAQ2X,YACpBC,WAAYP,EACZ9C,aAAcvU,EAAQwU,cACtB5C,cAAe5R,EAAQ6R,eACvBkD,WAAYA,EACZ8C,YAAa7X,EAAQ8X,aACrB1F,IAAKpS,EAAQoS,IACbwB,UAAWA,EACXmE,cAAe/X,EAAQgY,sBAEzB7G,EAAeza,KAAKwc,GAEtB,OAAO/B,GAIT8G,qBAhUkB,SAgUGxa,GACnB,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WACtDolB,EAAmB,CAAEnlB,MAAO,QAASD,IAAK,WAE1Cqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,SACX2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBqT,EAAUrT,EAAcqT,QAAQ9e,KAChCyjB,EAAkBhY,EAAciY,iBAAiB1jB,KAEjD2jB,EAAgBlY,EAAcmY,OAAO5jB,KACrC6jB,EAAYnoB,KAAKooB,gBAAgB,CAAE/a,QAAS4a,IAC5CI,EAAeroB,KAAKsoB,mBAAmB,CAAEjb,QAAS4a,IAElDM,EAAoBxY,EAAcyY,WAAkBzY,EAAcyY,WAAWlkB,KAA9B,GAC/CmkB,EAAezoB,KAAK0oB,mBAAmB,CAAErb,QAASkb,IAElDI,EAAyB5Y,EAAc6Y,qBAAqBtkB,KAC5DukB,EAAqB7oB,KAAK8oB,yBAAyB,CAAEzb,QAASsb,IAE9DnE,EAAcpB,EAAUA,EAAQvT,WAAW4T,WAAa,KAE1DsF,EAAqB3F,EAAUA,EAAQvT,WAAWmZ,WAAa,KAC/D3F,EAAoBD,EAAUA,EAAQvT,WAAWyT,UAAY,KAIjE,GAHuB,MAAnBD,GAAqD,GAA1BA,EAAgB/jB,SAC7C+jB,EAAoBD,EAAUA,EAAQvT,WAAW0T,aAAe,MAE3C,MAAnBF,GAAqD,GAA1BA,EAAgB/jB,OAAa,CAC1D,IAAMkkB,EAAYgB,EAAU/lB,MAAM,EAAG,GACrC4kB,EAAkB,6BAAH,OAAgCG,EAAhC,KAGjB,IAAIyF,EAAsB,KACtBC,EAAuB,KACrBnB,IACJkB,EAAsBlB,EAAgBlY,WAAWlD,KACjDuc,EAAuBnB,EAAgBlY,WAAWsZ,UAGpD,IAAM9G,EAAezS,EAAQ0S,WAAa,IAAIhiB,KAAKsP,EAAQ0S,YAAc,KACnEC,EAAcF,EAAaA,EAAWnhB,UAAY,KAClDshB,EAAkBH,EAAaA,EAAWI,mBAAmB,QAAS3B,GAAe,KACrFsI,EAAuB/G,EAAaA,EAAWI,mBAAmB,QAASqF,GAAoB,KAE/FpE,EAAe9T,EAAQ+T,WAAa,IAAIrjB,KAAKsP,EAAQ+T,YAAc,KACnEC,EAAcF,EAAaA,EAAWxiB,UAAY,KAClD2iB,EAAkBH,EAAaA,EAAWjB,mBAAmB,QAAS3B,GAAe,KACrFuI,EAAuB3F,EAAaA,EAAWjB,mBAAmB,QAASqF,GAAoB,KAE/FrD,EAAY7U,EAAQ8U,QAAU,IAAIpkB,KAAKsP,EAAQ8U,SAAW,KAC1D4E,EAAW7E,EAAUA,EAAQvjB,UAAY,KACzCyjB,EAAeF,EAAUA,EAAQhC,mBAAmB,QAAS3B,GAAe,KAE5EgD,EAAiBlU,EAAQmU,aAAe,IAAIzjB,KAAKsP,EAAQmU,cAAgB,KACzEC,EAAgBF,EAAeA,EAAa5iB,UAAY,KACxD+iB,EAAoBH,EAAeA,EAAarB,mBAAmB,QAAS3B,GAAe,KAE3F8D,EAAiBhV,EAAQiV,aAAe,IAAIvkB,KAAKsP,EAAQiV,cAAgB,KACzES,EAAgBV,EAAeA,EAAa1jB,UAAY,KACxD4jB,EAAoBF,EAAeA,EAAanC,mBAAmB,QAAS3B,GAAe,KAE3FyI,EAAc3Z,EAAQ4Z,UAAY,IAAIlpB,KAAKsP,EAAQ4Z,WAAa,KAChEC,EAAaF,EAAYA,EAAUroB,UAAY,KAC/CwoB,EAAiBH,EAAYA,EAAU9G,mBAAmB,QAAS3B,GAAe,KAElF6I,EAAkB/Z,EAAQga,cAAgB,IAAItpB,KAAKsP,EAAQga,eAAiB,KAC5EC,EAAiBF,EAAgBA,EAAczoB,UAAY,KAC3D4oB,EAAqBH,EAAgBA,EAAclH,mBAAmB,QAAS3B,GAAe,KAE9FiJ,EAA0Bna,EAAQoa,wBAA0B,IAAI1pB,KAAKsP,EAAQoa,yBAA2B,KACxGC,EAAyBF,EAAwBA,EAAsB7oB,UAAY,KACnFgpB,EAA6BH,EAAwBA,EAAsBtH,mBAAmB,QAAS3B,GAAe,KACtHqJ,EAAkCJ,EAAwBA,EAAsBtH,mBAAmB,QAASqF,GAAoB,KAEhIsC,EAA4Bxa,EAAQya,0BAA4B,IAAI/pB,KAAKsP,EAAQya,2BAA6B,KAC9GC,GAA2BF,EAA0BA,EAAwBlpB,UAAY,KACzFqpB,GAA+BH,EAA0BA,EAAwB3H,mBAAmB,QAAS3B,GAAe,KAC5H0J,GAAoCJ,EAA0BA,EAAwB3H,mBAAmB,QAASqF,GAAoB,KAEtI2C,GAA2B7a,EAAQ8a,yBAA2B,IAAIpqB,KAAKsP,EAAQ8a,0BAA4B,KAC3GC,GAA0BF,GAAyBA,GAAuBvpB,UAAY,KACtF0pB,GAA8BH,GAAyBA,GAAuBhI,mBAAmB,QAAS3B,GAAe,KACzH+J,GAAmCJ,GAAyBA,GAAuBhI,mBAAmB,QAASqF,GAAoB,KAEnIgD,GAAmBlb,EAAQmb,eAAiB,IAAIzqB,KAAKsP,EAAQmb,gBAAkB,KAC/EC,GAAkBF,GAAiBA,GAAe5pB,UAAY,KAC9D+pB,GAAsBH,GAAiBA,GAAerI,mBAAmB,QAAS3B,GAAe,KAEjGoK,GAA2Btb,EAAQub,yBAA2B,IAAI7qB,KAAKsP,EAAQwb,wBAA0B,KACzGC,GAA0BH,GAAyBA,GAAuBhqB,UAAY,KACtFoqB,GAA8BJ,GAAyBA,GAAuBzI,mBAAmB,QAAS3B,GAAe,KAEzHyK,GAA0B3b,EAAQ4b,wBAA0B,IAAIlrB,KAAKsP,EAAQ6b,uBAAyB,KACtGC,GAAyBH,GAAwBA,GAAsBrqB,UAAY,KACnFyqB,GAA6BJ,GAAwBA,GAAsB9I,mBAAmB,QAAS3B,GAAe,KAEtH8K,GAA2Bhc,EAAQic,yBAA2B,IAAIvrB,KAAKsP,EAAQic,0BAA4B,KAC3GC,GAA0BF,GAAyBA,GAAuB1qB,UAAY,KACtF6qB,GAA8BH,GAAyBA,GAAuBnJ,mBAAmB,QAAS3B,GAAe,KAEzHkL,GAAkCpc,EAAQqc,sCAC1CC,GAAoCtc,EAAQuc,wCAC5CC,GAAkCxc,EAAQic,yBAA2B,IAAIvrB,KAAKsP,EAAQyc,mCAAqC,KAC3HC,GAAiCF,GAAgCA,GAA8BlrB,UAAY,KAC3GqrB,GAAqCH,GAAgCA,GAA8B3J,mBAAmB,QAAS3B,GAAe,KAE9I0L,GAAmB5c,EAAQ6c,oBAC3BC,GAAqB9c,EAAQ+c,qBAE7BC,GAAoChd,EAAQid,sCAC5CC,GAAqCld,EAAQmd,uCAC7CC,GAAuCpd,EAAQqd,yCAC/CC,GAAuCtd,EAAQud,sCAAwC,IAAI7sB,KAAKsP,EAAQud,uCAAyC,KACjJC,GAAsCF,GAAqCA,GAAmChsB,UAAY,KAC1HmsB,GAA0CH,GAAqCA,GAAmCzK,mBAAmB,QAAS3B,GAAe,KAE7JwM,GAAW1d,EAAQ2d,SACnBC,GAAUxtB,KAAKytB,cAAcH,IAE7BI,GAAU3d,EAAc4d,OAAOrpB,KAC/BspB,GAAgBF,GAAQ7d,WACxBge,GAAaH,GAAQ3d,cACrB+d,GAAuB,UAAGF,GAAcG,iCAAjB,QAA8C,GACrEC,GAAmC,UAAGJ,GAAcK,8CAAjB,QAA2D,GAC9FC,GAAcN,GAAcO,MAE9BC,GAAmB,GACvB,GAAMP,IAAgBA,GAAW9e,cAAkB8e,GAAW9e,aAAazK,KAAM,QACzE+pB,GAAsBR,GAAW9e,aAAazK,KAAKuL,WACzDue,GAAgB,WAAGC,GAAoBC,wBAAvB,UAA2C,GAE7DF,GAAiB9nB,KAAK4nB,IACtB,IAAMK,GAAkB,eAAI,IAAIC,IAAIJ,KAE9BtL,GAAO,CACXnW,KAAMiD,EAAQjD,KACdyS,MAAO8J,EACPrlB,KAAMwf,EACNoL,UAAW1F,EACXvE,UAAWA,EACXU,OAAQtV,EAAQuV,QAChBC,YAAaxV,EAAQyV,aACrBqJ,SAAU9e,EAAQ+e,UAClBC,UAAWhf,EAAQif,WACnBC,YAAalf,EAAQmf,aACrB5K,aAAcvU,EAAQwU,cACtB5C,cAAe5R,EAAQ6R,eACvBuN,sBAAuBpf,EAAQqf,yBAC/BC,qBAAsBtf,EAAQuf,wBAC9BC,sBAAuBxf,EAAQyf,yBAC/B3C,mBAAoBA,GACpBnK,UAAWA,EACXqB,UAAWA,EACXpB,cAAeA,EACf4G,mBAAoBA,EACpBvF,cAAeA,EACfwF,mBAAoBA,EACpBC,OAAQA,EACR3E,WAAYA,EACZqG,cAAeA,GACfC,kBAAmBA,GACnBjH,YAAaA,EACbC,gBAAiBA,EACjBqB,YAAaA,EACbR,gBAAiBA,EACjB2E,SAAUA,EACVC,aAAcA,EACdG,aAAcA,EACdC,iBAAkBA,EAClBwF,4BAA6B1f,EAAQ2f,iCACrCC,+BAAgC5f,EAAQ6f,qCACxCC,wBAAyB9f,EAAQ+f,2BACjCrD,6BAA8BA,GAC9BsD,+BAAgCxD,GAChCG,iCAAkCA,GAClCP,gCAAiCA,GACjCE,kCAAmCA,GACnC2D,+BAAgCjgB,EAAQkgB,mCACxCC,kCAAmCngB,EAAQogB,uCAC3C/F,qBAAsBA,EACtBgG,uBAAwBlG,EACxBG,yBAA0BA,EAC1BC,8BAA+BA,EAC/BG,uBAAwBA,GACxB4F,yBAA0B9F,EAC1BG,2BAA4BA,GAC5BC,gCAAiCA,GACjCG,sBAAuBA,GACvBwF,wBAAyB1F,GACzBG,0BAA2BA,GAC3BC,+BAAgCA,GAChC2B,iBAAkBA,GAClBgB,QAASA,GACTnC,sBAAuBA,GACvBC,0BAA2BA,GAC3BI,qBAAsBA,GACtBC,yBAA0BA,GAC1BG,sBAAuBA,GACvBC,0BAA2BA,GAC3Ba,kCAAmCA,GACnCE,mCAAoCA,GACpCE,qCAAsCA,GACtCI,kCAAmCA,GACnCC,sCAAuCA,GACvCpE,oBAAqBA,EACrBf,OAAQC,EACRE,aAAcA,EACdI,aAAcA,EACdI,mBAAoBA,EACpB0F,gBAAiBA,GACjBT,wBAAyBA,GACzBE,oCAAqCA,GACrCoC,YAAaxgB,EAAQygB,aACrBC,iBAAkB1gB,EAAQ2gB,oBAE5BxP,EAAeza,KAAKwc,IAEtB,OAAO/B,GAGT2H,mBA/hBkB,YA+hBc,IAAXrb,EAAW,EAAXA,QACfmjB,EAAW,GACf,IAAK,IAAI9pB,KAAK2G,EAAS,CACrB,IAAMyV,EAAOzV,EAAQ3G,GACfkJ,EAAUkT,EAAKjT,WACf0S,EAAY,IAAIjiB,KAAKsP,EAAQ0S,YAC7BmO,EAAclO,EAAUrhB,UACxBwvB,EAAkBxwB,OAAU6C,yBAAyB,CAAE3C,KAAMmiB,IAC7DoO,EAAc/gB,EAAQghB,aACtBC,EAAmBjhB,EAAQkhB,mBAC3BtK,EAAO,CACX7Z,KAAMiD,EAAQjD,KACdokB,KAAMnhB,EAAQwP,MACdmD,UAAWA,EACXmO,gBAAiBA,EACjBM,GAAIP,EACJ7f,KAAM+f,EACNM,YAAaJ,GAEfL,EAASlqB,KAAKkgB,GAEhB,OAAOgK,EAAS7J,MAAK,SAACC,EAAGC,GAAJ,OAAUA,EAAEmK,GAAKpK,EAAEoK,OAG1ClI,yBAvjBkB,YAujBoB,IAAXzb,EAAW,EAAXA,QACrBmjB,EAAW,GACf,IAAK,IAAI9pB,KAAK2G,EAAS,CACrB,IAAMyV,EAAOzV,EAAQ3G,GACfkJ,EAAUkT,EAAKjT,WACf0S,EAAY,IAAIjiB,KAAKsP,EAAQshB,WAC7BT,EAAclO,EAAUrhB,UACxBwvB,EAAkBxwB,OAAU6C,yBAAyB,CAAE3C,KAAMmiB,IAC7DiE,EAAO,CACX7Z,KAAMiD,EAAQjD,KACdokB,KAAMnhB,EAAQuhB,KACdvgB,KAAM,UACNqgB,YAAa,KACb1O,UAAWA,EACXmO,gBAAiBA,EACjBM,GAAIP,GAEND,EAASlqB,KAAKkgB,GAEhB,OAAOgK,EAAS7J,MAAK,SAACC,EAAGC,GAAJ,OAAUA,EAAEmK,GAAKpK,EAAEoK,OAG1C1I,mBA7kBkB,YA6kBc,IAAXjb,EAAW,EAAXA,QACf+jB,EAAU,GACVC,EAAa,GACjB,IAAK,IAAI3qB,KAAK2G,EAAS,CACrB,IAAMyV,EAAOzV,EAAQ3G,GACfkJ,EAAUkT,EAAKjT,WACfyhB,EAAc1hB,EAAQ2hB,cAC5B,IAAIF,EAAWrsB,SAASssB,GAAxB,CAGAD,EAAW/qB,KAAKgrB,GAChB,IAAME,EAAOxxB,KAAKyxB,oBAAoB,CAAEH,YAAaA,IAC/CI,EAAM,CACVrZ,GAAIiZ,EACJlS,MAAOoS,EAAKpS,MACZgH,WAAYoL,EAAKpL,WACjBuL,UAAWH,EAAKG,WAElBP,EAAQ9qB,KAAKorB,IAGf,OADAN,EAAQzK,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAER,WAAaS,EAAET,cACjCgL,GAGThJ,gBArmBkB,YAqmBW,IAAX/a,EAAW,EAAXA,QACZ8a,EAAY,GAChB,IAAK,IAAIzhB,KAAK2G,EAAS,CACrB,IAAMyV,EAAOzV,EAAQ3G,GACfkJ,EAAUkT,EAAKjT,WACf0S,EAAY,IAAIjiB,KAAKsP,EAAQ0S,YAC7BoO,EAAkBxwB,OAAU6C,yBAAyB,CAAE3C,KAAMmiB,IAC7D+O,EAAc1hB,EAAQ2hB,cACtBC,EAAOxxB,KAAKyxB,oBAAoB,CAAEH,YAAaA,IAC/CM,EAAQ,CACZjlB,KAAMiD,EAAQjD,KACdqV,IAAKpS,EAAQoS,IACb6P,cAAejiB,EAAQkiB,gBACvBC,cAAeniB,EAAQoiB,sBACvBzP,UAAWA,EACXmO,gBAAiBA,EACjBY,YAAaA,EACbW,iBAAkBT,EAAKpS,MACvB8S,sBAAuBV,EAAKpL,WAC5BuL,UAAWH,EAAKG,WAElBxJ,EAAU7hB,KAAKsrB,GAEjB,OAAO5xB,KAAKmyB,6BAA6B,CAAE/hB,MAAO+X,KAGpDgK,6BA/nBkB,YA+nBsB,IAAT/hB,EAAS,EAATA,MAC7B,OAAOA,EAAMuW,MAAK,SAACC,EAAGC,GACpB,IAAMuL,EAAQxL,EAAErE,UACV8P,EAAQxL,EAAEtE,UACV+P,EAAaF,EAAM7xB,YAAc8xB,EAAM9xB,UACvCgyB,EAAa3L,EAAEsL,sBAAwBrL,EAAEqL,sBAE/C,OAAIE,EAAM7xB,YAAc8xB,EAAM9xB,UACrB+xB,EAGAC,MAKbnL,gBA/oBkB,YA+oBgB,IAAhBpB,EAAgB,EAAhBA,aACZ5G,EAAQ,QACRgH,EAAa,EAmCjB,MAlCoB,eAAhBJ,GACF5G,EAAQ,aACRgH,EAAa,IACY,WAAhBJ,GACT5G,EAAQ,aACRgH,EAAa,IACY,QAAhBJ,GACT5G,EAAQ,iBACRgH,EAAa,IACY,QAAhBJ,GACT5G,EAAQ,UACRgH,EAAa,IACY,gBAAhBJ,GACT5G,EAAQ,mBACRgH,EAAa,IACY,mBAAhBJ,GACT5G,EAAQ,gBACRgH,EAAa,IACY,aAAhBJ,GACT5G,EAAQ,WACRgH,EAAa,IACY,gBAAhBJ,GACT5G,EAAQ,UACRgH,EAAa,IACY,aAAhBJ,GACT5G,EAAQ,MACRgH,EAAa,GACY,aAAhBJ,GACT5G,EAAQ,wBACRgH,EAAa,GACY,wBAAhBJ,IACT5G,EAAQ,WACRgH,EAAa,IAER,CAAEhH,MAAOA,EAAOgH,WAAYA,IAGrCqL,oBAvrBkB,YAurBmB,IAAfH,EAAe,EAAfA,YACdkB,EAAalB,EAAcA,EAAY7T,KAAK,QAAU,GACxD2B,EAAQpf,KAAKyyB,YAAY,CAAElvB,MAAO+tB,IAClClL,EAAa,GACD,cAAZoM,GAGmB,oBAAZA,GAFTpT,EAAQ,8BACRgH,EAAa,IAIQ,cAAZoM,GACTpT,EAAQ,kBACRgH,EAAa,GACQ,aAAZoM,GACTpT,EAAQ,2BACRgH,EAAa,GACQ,cAAZoM,GACTpT,EAAQ,yBACRgH,EAAa,GACQ,cAAZoM,GACTpT,EAAQ,YACRgH,EAAa,IACQ,eAAZoM,GACTpT,EAAQ,aACRgH,EAAa,IACQ,qBAAZoM,GACTpT,EAAQ,8BACRgH,EAAa,GACQ,oBAAZoM,GACTpT,EAAQ,wBACRgH,EAAa,GACQ,qBAAZoM,GACTpT,EAAQ,sBACRgH,EAAa,GACQ,mCAAZoM,GACTpT,EAAQ,gCACRgH,EAAa,GACQ,mCAAZoM,GACTpT,EAAQ,iCACRgH,EAAa,GACQ,kCAAZoM,GACTpT,EAAQ,mCACRgH,EAAa,GACQ,mCAAZoM,GACTpT,EAAQ,iCACRgH,EAAa,GACQ,iCAAZoM,IACTpT,EAAQ,qCACRgH,EAAa,IAEf,IAAMuL,EAAYa,EAASxtB,SAAS,QACpC,MAAO,CAAEoa,MAAOA,EAAOgH,WAAYA,EAAYuL,UAAWA,IAG5Dc,YA7uBkB,YA6uBK,IAATlvB,EAAS,EAATA,MACRmvB,EAAMnvB,EAAMovB,MAAM,KAClBC,EAAUF,EAAIzZ,KAAI,SAAA6J,GAAI,OAAIA,EAAK+P,OAAO,GAAGC,cAAgBhQ,EAAKrkB,MAAM,GAAGs0B,iBACvEC,EAAgBJ,EAAQK,KAAK,KACjC,OAAOD,GAGTE,mBApvBkB,SAovBC7lB,GACjB,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WAEtDqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,OACX2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBqT,EAAUrT,EAAcqT,QAAQ9e,KAChC6uB,EAAe/P,EAAUA,EAAQvT,WAAa,KAE9CujB,EAAuBD,EAAaA,EAAW5P,aAAe,KAC9D8P,EAAiBF,EAAaA,EAAWG,cAAgB,KAE3DjQ,EAAoB8P,EAAaA,EAAW7P,UAAY,KAI5D,GAHuB,MAAnBD,GAAqD,GAA1BA,EAAgB/jB,SAC7C+jB,EAAkB+P,GAEG,MAAnB/P,GAAqD,GAA1BA,EAAgB/jB,OAAa,CAC1D,IAAMkkB,EAAc2P,EAAaA,EAAW1P,WAAWhlB,MAAM,EAAG,GAAK,KACrE4kB,EAAkB,6BAAH,OAAgCG,EAAhC,KAGjB,IAAMnB,EAAezS,EAAQ0S,WAAa,IAAIhiB,KAAKsP,EAAQ0S,YAAc,KACnEC,EAAcF,EAAaA,EAAWnhB,UAAY,KAClDshB,EAAkBH,EAAaA,EAAWI,mBAAmB,QAAS3B,GAAe,KAErF4C,EAAe9T,EAAQ+T,WAAa,IAAIrjB,KAAKsP,EAAQ+T,YAAc,KACnEC,EAAcF,EAAaA,EAAWxiB,UAAY,KAClD2iB,EAAkBH,EAAaA,EAAWjB,mBAAmB,QAAS3B,GAAe,KAErF2D,EAAY7U,EAAQ8U,QAAU,IAAIpkB,KAAKsP,EAAQ8U,SAAW,KAC1D4E,EAAW7E,EAAUA,EAAQvjB,UAAY,KACzCyjB,EAAeF,EAAUA,EAAQhC,mBAAmB,QAAS3B,GAAe,KAE5EgD,EAAiBlU,EAAQmU,aAAe,IAAIzjB,KAAKsP,EAAQmU,cAAgB,KACzEC,EAAgBF,EAAeA,EAAa5iB,UAAY,KACxD+iB,EAAoBH,EAAeA,EAAarB,mBAAmB,QAAS3B,GAAe,KAE3FyS,EAAgB3jB,EAAQ4jB,YAAc,IAAIlzB,KAAKsP,EAAQ4jB,aAAe,KACtEC,EAAeF,EAAcA,EAAYryB,UAAY,KACrDwyB,EAAmBH,EAAcA,EAAY9Q,mBAAmB,QAAS3B,GAAe,KAExFyI,EAAc3Z,EAAQ4Z,UAAY,IAAIlpB,KAAKsP,EAAQ4Z,WAAa,KAChEC,EAAaF,EAAYA,EAAUroB,UAAY,KAC/CwoB,EAAiBH,EAAYA,EAAU9G,mBAAmB,QAAS3B,GAAe,KAElF6I,EAAkB/Z,EAAQga,cAAgB,IAAItpB,KAAKsP,EAAQga,eAAiB,KAC5EC,EAAiBF,EAAgBA,EAAczoB,UAAY,KAC3D4oB,EAAqBH,EAAgBA,EAAclH,mBAAmB,QAAS3B,GAAe,KAE9FgK,EAAmBlb,EAAQmb,eAAiB,IAAIzqB,KAAKsP,EAAQmb,gBAAkB,KAC/EC,EAAkBF,EAAiBA,EAAe5pB,UAAY,KAC9D+pB,EAAsBH,EAAiBA,EAAerI,mBAAmB,QAAS3B,GAAe,KAEjGwM,EAAW1d,EAAQ2d,SACnBC,EAAUxtB,KAAKytB,cAAcH,GAE7BqG,EAAW,UAAG/jB,EAAQgkB,oBAAX,QAA2B,GACtCC,EAAgB,GAClBC,EAAuBH,EAAYr0B,OAASu0B,EAArB,UAAwCF,EAAYl1B,MAAM,EAAGo1B,GAA7D,OAAmFF,EAExG7Q,EAAO,CACXnW,KAAMiD,EAAQjD,KACdonB,MAAOnkB,EAAQmkB,MACfC,SAAUpkB,EAAQqkB,UAClBN,YAAaA,EACbG,qBAAsBA,EACtBjwB,KAAMwf,EACN+P,mBAAoBA,EACpBC,aAAcA,EACd9Q,UAAWA,EACXqB,UAAWA,EACXxjB,KAAMyjB,EACNqN,UAAWtN,EACXsB,OAAQtV,EAAQuV,QAChBuJ,SAAU9e,EAAQ+e,UAClBG,YAAalf,EAAQmf,aACrBmF,WAAYtkB,EAAQukB,YACpBhQ,aAAcvU,EAAQwU,cACtB5C,cAAe5R,EAAQ6R,eACvBe,cAAeA,EACfqB,cAAeA,EACfyF,OAAQA,EACR3E,WAAYA,EACZqG,cAAeA,EACfC,kBAAmBA,EACnBjH,YAAaA,EACbC,gBAAiBA,EACjBwP,WAAYA,EACZC,eAAgBA,EAChBjK,SAAUA,EACVC,aAAcA,EACdG,aAAcA,EACdC,iBAAkBA,EAClB0D,QAASA,GAEXzM,EAAeza,KAAKwc,GAEtB,OAAO/B,GAGT0M,cA31BkB,SA21BJpgB,GACZ,IAAKA,EACH,MAAO,GAET,IAJqB,EAIjB+mB,EAAY,GAJK,iBAKJ/mB,GALI,IAKrB,IAAK,EAAL,qBAA0B,KAAjByV,EAAiB,QACxB,GAAKA,EAAL,CAGA,IAAMP,EAAY,IAAIjiB,KAAKwiB,EAAKoO,WAC1BF,EAAKzO,EAAUrhB,UACfwvB,EAAkBxwB,OAAU6C,yBAAyB,CAAE3C,KAAMmiB,IACnE6R,EAAU9tB,KAAK,CACbqG,KAAMmW,EAAKnW,KACXqkB,GAAIA,EACJzO,UAAWA,EACXwO,KAAMjO,EAAKqO,KACXvgB,KAAM,OACNqgB,YAAa,KACbP,gBAAiBA,MAnBA,8BAuBrB,OAAO0D,EAAUzN,MAAK,SAACC,EAAGC,GAAJ,OAAUA,EAAEmK,GAAKpK,EAAEoK,OAI3CqD,uBAt3BkB,SAs3BKhnB,GACrB,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WAEtDqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,CACjB,IAAM2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBqT,EAAUrT,EAAcqT,QAAQ9e,KAElC8uB,EAAqBxjB,EAAQ0kB,qBAC7BjR,EAAkBzT,EAAQ2kB,kBAC1BC,EAAmB5kB,EAAQ6kB,mBAE/B,GAAe,MAAXrR,GAAyC,MAAtBA,EAAQvT,WAAoB,CACjD,IAAIsjB,EAAa/P,EAAQvT,WACzBujB,EAAqBD,EAAW5P,aAChCF,EAAkB8P,EAAW7P,UAC7BkR,EAAmBrB,EAAW1P,WAGhC,IAAIiR,EAAW,GACQ,MAAnBrR,GAA2BA,EAAgB/jB,OAAS,EACtDo1B,EAASpuB,KAAK+c,GACiB,MAAtB+P,GAA8BA,EAAmB9zB,OAAS,EACnEo1B,EAASpuB,KAAK8sB,GACe,MAApBoB,GAA4BA,EAAiBl1B,OAAS,GAC/Do1B,EAASpuB,KAAKkuB,GAGhB,IAAMnS,EAAezS,EAAQ0S,WAAa,IAAIhiB,KAAKsP,EAAQ0S,YAAc,KACnEC,EAAcF,EAAaA,EAAWnhB,UAAY,KAClDshB,EAAkBH,EAAaA,EAAWI,mBAAmB,QAAS3B,GAAe,KAErF0L,EAAmB5c,EAAQ6c,oBAC3BkI,EAAqB/kB,EAAQglB,sBAE/B/wB,EAAO6wB,EAASzB,KAAK,OAEnBnQ,EAAO,CACXnW,KAAMiD,EAAQjD,KACd9I,KAAMA,EACN0e,UAAWA,EACXniB,KAAMoiB,EACN2B,aAAcvU,EAAQwU,cACtB5C,cAAe5R,EAAQ6R,eACvB+K,iBAAkBA,EAClBmI,mBAAoBA,GAEtB5T,EAAeza,KAAKwc,GAEtB,OAAO/B,GAGT8T,sBA76BkB,SA66BIxnB,GACpB,IAAMyT,EAAc,CAAEle,KAAM,UAAWD,MAAO,QAASD,IAAK,WAEtDqe,EAAiB,GACnBra,EAAI,EACR,IAAKA,KAAK2G,EAAS,CACjB,IAAM2T,EAAW3T,EAAQ3G,GACnBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBqT,EAAUrT,EAAcqT,QAAQ9e,KAElCwwB,EAAcllB,EAAQgB,KACtBmkB,EAAkB,IACH,6BAAfD,EACFC,EAAkB,iBACTD,EAAc,kBACvBC,EAAkB,kBACTD,EAAc,uBACvBC,EAAkB,uBACTD,EAAc,oBACvBC,EAAkB,oCACTD,EAAc,oBACvBC,EAAkB,iCACTD,EAAc,iCACvBC,EAAkB,6CAGpB,IAAI1R,EAAkB,KAClBmR,EAAmB,KAEvB,GAAe,MAAXpR,GAAyC,MAAtBA,EAAQvT,WAAoB,CACjD,IAAIsjB,EAAa/P,EAAQvT,WACzBwT,EAAkB8P,EAAW7P,UAC7BkR,EAAmBrB,EAAW1P,WAGhC,IAAIiR,EAAW,GACQ,MAAnBrR,GAA2BA,EAAgB/jB,OAAS,EACtDo1B,EAASpuB,KAAK+c,GACe,MAApBmR,GAA4BA,EAAiBl1B,OAAS,GAC/Do1B,EAASpuB,KAAKkuB,GAGhB,IAAMnS,EAAezS,EAAQ0S,WAAa,IAAIhiB,KAAKsP,EAAQ0S,YAAc,KACnEC,EAAcF,EAAaA,EAAWnhB,UAAY,KAClDshB,EAAkBH,EAAaA,EAAWI,mBAAmB,QAAS3B,GAAe,KAEvFjd,EAAO6wB,EAASzB,KAAK,OAEnBnQ,EAAO,CACXnW,KAAMiD,EAAQjD,KACd9I,KAAMA,EACNixB,YAAaA,EACbC,gBAAiBA,EACjBxS,UAAWA,EACXniB,KAAMoiB,EACN2B,aAAcvU,EAAQwU,cACtB4Q,YAAaplB,EAAQqlB,aACrBC,aAActlB,EAAQulB,cACtBC,WAAYxlB,EAAQylB,YACpBC,YAAa1lB,EAAQ2lB,aACrBC,eAAgB5lB,EAAQ6lB,gBACxBC,aAAc9lB,EAAQ+lB,eAExB5U,EAAeza,KAAKwc,GAEtB,OAAO/B,GAGH5Q,iBAl/BY,YAk/BgB,sKAATC,EAAS,EAATA,MACjBwlB,EAAU,QACZhpB,EAAc,GAFc,2BAGhBwD,GAHgB,qDAGrB1J,EAHqB,WAIxBoc,EAAO1S,EAAM1J,GAJW,SAKR,EAAKmvB,aAAa,CAAEljB,QAASmQ,IALrB,OAKxBnQ,EALwB,OAM9B/F,EAAYtG,KAAKqM,GANa,8BAS1BmjB,EAAoBlpB,EAAY+Z,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAE/iB,KAAKkvB,cAAcgD,cAAclP,EAAEhjB,KAAKkvB,cAAe6C,MAT9E,kBAUzBE,GAVyB,+CAa5BvlB,uBA//BY,YA+/BsB,qKAATH,EAAS,EAATA,MACvBwlB,EAAU,QACZ/oB,EAAoB,GAFc,2BAGtBuD,GAHsB,iDAG3B1J,EAH2B,WAI9Boc,EAAO1S,EAAM1J,GACbkJ,EAAUkT,EAAKjT,WACftM,EAAQqM,EAAQrM,MACjBA,EAP+B,uDAU9BkrB,EAAY7e,EAAQoZ,WACpBnlB,EAX8B,UAWpB4qB,EAXoB,YAWP7e,EAAQomB,WAC/BxyB,EAASirB,EAAD,UAAwBlrB,EAAxB,aAAkCkrB,EAAlC,KAAalrB,EACrBijB,EAAO,CACXjjB,MAAOA,EACPoJ,KAAMiD,EAAQjD,KACd9I,KAAMA,EACNL,MAAOA,GAETqJ,EAAkBvG,KAAKkgB,GAnBa,8BAqBhCyP,EAA0BppB,EAAkB8Z,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAErjB,MAAMwvB,cAAcgD,cAAclP,EAAEtjB,MAAMwvB,cAAe6C,MArBtF,kBAsB/BK,GAtB+B,+CAyBlCC,iCAxhCY,SAwhCqB1E,GAAM,yKACtCA,EADsC,yCAElC,MAFkC,cAKrCxhB,EALqC,UAKnBwhB,EAAKvhB,oBALc,QAKE,GALF,SAMjB,EAAKE,iBAAiB,CAAEC,MAAOJ,IANd,cAMrCpD,EANqC,OAQrCyD,EARqC,UAQbmhB,EAAKlhB,4BARQ,QAQgB,GARhB,SASX,EAAKC,uBAAuB,CAAEH,MAAOC,IAT1B,cASrCxD,EATqC,OAWrCspB,EAA4B3E,EAAKnjB,6BAXI,kBAapC,CACLzB,YAAaA,EACbC,kBAAmBA,EACnBspB,0BAA2BA,IAhBc,+CAoB7CC,SA5iCkB,SA4iCT7yB,GACP,MAAuB,iBAATA,GAGV8yB,iCAhjCY,SAgjCqBC,GAAW,gKAC1ClmB,EAAQ,GACV1J,EAAI,EAFwC,2BAGtC4vB,GAHsC,qDAG3C5vB,EAH2C,WAIxCsa,EAAWsV,EAAU5vB,GAJmB,SAK3B,EAAK6vB,6BAA6BvV,GALP,OAKxC8B,EALwC,OAM9C1S,EAAM9J,KAAKwc,GANmC,gDAQzC1S,GARyC,+CAW5CmmB,6BA3jCY,SA2jCiBvV,GAAU,kWACrCrM,EAAU,CAAE/R,KAAM,UAAWD,MAAO,OAAQD,IAAK,WAEjDkN,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cAEzBpD,EAAOiD,EAAQjD,KACf6X,EAAY5U,EAAQ6T,WACpBgL,EAAY7e,EAAQ4mB,mBACpBC,EAAW7mB,EAAQ8mB,kBACnBC,EAAY/mB,EAAQgnB,kBACpBC,EAAcjnB,EAAQ0kB,qBACtBnG,EAAQve,EAAQknB,cAEhBxJ,EAAW1d,EAAQ2d,SACnBC,EAAU,EAAKuJ,UAAU,CAAEC,SAAU1J,EAAU1c,KAAM,SAErDqmB,EAAernB,EAAQsnB,cACvBC,EAAc,EAAKJ,UAAU,CAAEC,SAAUC,EAAcrmB,KAAM,cAE7DwmB,EAAoBxnB,EAAQynB,mBAC5BC,EAAmB,EAAKC,uBAAuB,CAAEP,SAAUI,IAE3DI,EAAqB5nB,EAAQ6nB,oBAC7BC,EAAoB,EAAKX,UAAU,CACvCC,SAAUQ,EACV5mB,KAAM,aACN+mB,mBAAmB,IAGjBpV,EAAY,KACV3S,EAAQ0S,aACZC,EAAY,IAAIjiB,KAAKsP,EAAQ0S,aAE3BuH,EAAe,KACbja,EAAQga,gBACZC,EAAe,IAAIvpB,KAAKsP,EAAQga,gBAE9BN,EAAS,KACP1Z,EAAQ8U,UACZ4E,EAAS,IAAIhpB,KAAKsP,EAAQ8U,UAExB+E,EAAW,KACT7Z,EAAQ4Z,YACZC,EAAW,IAAInpB,KAAKsP,EAAQ4Z,YAE1BoO,EAAW,KACThoB,EAAQioB,YACZD,EAAW,IAAIt3B,KAAKsP,EAAQioB,YAE1BvS,EAAc,KACZ1V,EAAQiV,eACZS,EAAc,IAAIhlB,KAAKsP,EAAQiV,eAE7Bb,EAAc,KACZpU,EAAQmU,eACZC,EAAc,IAAI1jB,KAAKsP,EAAQmU,eAE7B+T,EAAW,KACTloB,EAAQmoB,YACZD,EAAW,IAAIx3B,KAAKsP,EAAQmoB,YAE1BC,EAAY,KACVpoB,EAAQqoB,uBACZD,EAAY,IAAI13B,KAAKsP,EAAQqoB,uBAE3BC,EAAc,KACZtoB,EAAQuoB,yBACZD,EAAc,IAAI53B,KAAKsP,EAAQuoB,yBAE7BC,EAtEuC,UAsE3BF,SAtE2B,QAsEZF,EAC3BK,EAAe,KACbzoB,EAAQ0oB,kCACZD,EAAe,IAAI/3B,KAAKsP,EAAQ0oB,kCAG5BC,EAAoB3oB,EAAQ4oB,gBAC5BC,EAAalW,EAAUE,mBAAmB,QAAS9N,GACnD+jB,EA9EqC,UA8EpBjK,EA9EoB,YA8EPgI,GAE9BkC,EAAa5oB,EAAc6oB,UAAUt0B,KAhFA,UAiFhB,EAAKu0B,yBAAyB,CAAEC,KAAMH,IAjFtB,eAiFrCI,EAjFqC,OAmFrCC,EAAcjpB,EAAckpB,gBAAgB30B,KAnFP,UAoFJ,EAAK40B,6BAA6B,CAAE50B,KAAM00B,IApFtC,eAoFrCG,EApFqC,OAsFrCzL,EAAU3d,EAAc4d,OAAOrpB,KAC/BspB,EAAgBF,EAAQ7d,WACxBupB,EAAcxL,EAAcxO,MAC5Bia,EAzFqC,UAyFbzL,EAAc0L,+BAzFD,QAyF4B,GACjEC,EA1FqC,UA0Fd3L,EAAc4L,8BA1FA,QA0F0B,GAC/DC,EA3FqC,UA2FZ7L,EAAc8L,gCA3FF,QA2F8B,GAEnEC,EAAW5pB,EAAc4C,QAAQrO,KACnCoM,GAAc,KACdkpB,GAAc,GACZD,IACEE,GAAiBF,EAAS9pB,WAChCa,GAAcmpB,GAAeltB,KAC7BitB,GAAc,GAAH,OAAMC,GAAe7Q,WAArB,YAAmC6Q,GAAe7D,YAE3D8D,GAAiB,GACjBlqB,EAAQmqB,yBACVD,IAAkBlqB,EAAQmqB,wBAExBnqB,EAAQoqB,wBACVF,IAAkB,IAAJ,OAAQlqB,EAAQoqB,wBAG1BC,GAAe/5B,OAAU4C,qBAAqB,CAAE1C,KAAMkpB,IACtD4Q,GAAiBh6B,OAAU4C,qBAAqB,CAAE1C,KAAMqpB,IACxD0Q,GAAqBj6B,OAAU4C,qBAAqB,CAAE1C,KAAMypB,IAC5DuQ,GAAoBl6B,OAAU4C,qBAAqB,CAAE1C,KAAMklB,IAC3D+U,GAAoBn6B,OAAU4C,qBAAqB,CAAE1C,KAAM4jB,IAC3DsW,GAAiBp6B,OAAU4C,qBAAqB,CAAE1C,KAAMw3B,IACxD2C,GAAiBr6B,OAAU4C,qBAAqB,CAAE1C,KAAM03B,IACxD0C,GAAkBt6B,OAAU4C,qBAAqB,CAAE1C,KAAM43B,IACzDyC,GAAoBv6B,OAAU4C,qBAAqB,CAAE1C,KAAM83B,IAC3DwC,GAAkBx6B,OAAU4C,qBAAqB,CAAE1C,KAAMg4B,IACzDuC,GAAqBz6B,OAAU4C,qBAAqB,CAAE1C,KAAMi4B,IAC5DuC,GAAiB16B,OAAUC,QAAQ63B,GACnC6C,GAAmB36B,OAAUC,QAAQ+3B,GACrC4C,GAAoB56B,OAAUQ,cAAcs3B,GAC5C+C,GAAsB76B,OAAUQ,cAAcw3B,GAC9C8C,GAAiBJ,IAAkBC,GACnCI,GAAoBH,IAAqBC,GACzCG,GAAU,EAAKA,QAAQ3Y,GAEvB4Y,GAAWprB,EAAcqrB,iBAA0BrrB,EAAcqrB,iBAAiB92B,KAAtC,KAC5C+2B,GAAoB,MAAXF,GAAkB,KAAO,EAAKG,sBAAsB,CAAExY,KAAMqY,KAErE5S,GAAoBxY,EAAcyY,WAAkBzY,EAAcyY,WAAWlkB,KAA9B,GAC/CmkB,GAAe,EAAKC,mBAAmB,CAAErb,QAASkb,KAEpDgT,GAAa,GACjB,OAAI9S,SAAJ,IAAIA,OAAcnpB,QAAQi8B,GAAWj1B,KAAX,MAAAi1B,GAAU,eAAS9S,KAC7C,OAAI+E,QAAJ,IAAIA,KAASluB,QAAQi8B,GAAWj1B,KAAX,MAAAi1B,GAAU,eAAS/N,IAElCgO,GAAmBD,GAAW5U,MAAK,SAACC,EAAGC,GAAJ,eAAU,UAACA,EAAEmK,UAAH,QAAS,IAAT,UAAepK,EAAEoK,UAAjB,QAAuB,MAEpEyK,GAAa,UAAG/C,EAAH,YAAkBkB,GAAlB,YAAiCE,GAAjC,YAAmDnD,GAAY5D,cAE5E2I,GAAoB9rB,EAAQ+rB,qBAC5BC,GAAuBhsB,EAAQisB,wBAC/BC,GAAgBJ,IAAqBE,GAErC9Y,GAAO,CACX1iB,KAAMq4B,EACNlW,UAAWA,EACX5V,KAAMA,EACN6X,UAAWA,EACX3gB,KAAM60B,EACN+C,WAAYA,GACZhN,UAAWA,EACXgI,SAAUA,EACVE,UAAWA,EACXxI,MAAOA,EACP0I,YAAaA,EACb3R,OAAQtV,EAAQuV,QAChBmE,OAAQ2Q,GACR8B,WAAYnsB,EAAQosB,YACpBtN,SAAU9e,EAAQ+e,UAClBlF,SAAUyQ,GACV+B,YAAarsB,EAAQssB,aACrBC,SAAUvsB,EAAQwsB,UAClBxE,SAAU0C,GACVlV,YAAaxV,EAAQyV,aACrBC,YAAa8U,GACbtL,YAAalf,EAAQmf,aACrB/K,YAAaqW,GACbgC,SAAUzsB,EAAQ0sB,UAClBxE,SAAUyC,GACVpW,aAAcvU,EAAQwU,cACtB0X,cAAeA,GACfJ,kBAAmBA,GACnBE,qBAAsBA,GACtB/R,aAAcsQ,GACda,eAAgBA,GAChBC,kBAAmBA,GACnB7C,UAAWsC,GACXE,eAAgBA,GAChB5C,UAAWwC,GACXK,iBAAkBA,GAClB3C,YAAauC,GACblC,kBAAmBA,EACnBQ,aAAcA,EACdI,yBAA0BA,EAC1BoD,QAAS5vB,EACT6vB,UAAW7vB,EACX8vB,SAAU9vB,EACV8a,YAAa7X,EAAQ8X,aACrBgV,mBAAoB9sB,EAAQ+sB,qBAC5BC,qBAAsBhtB,EAAQitB,uBAC9B1b,OAAQvR,EAAQktB,gBAChB5B,QAASA,GACT1N,QAASA,EACT2J,YAAaA,EACb1O,aAAcA,GACd8S,WAAYC,GACZnC,sBAAuBA,EACvBE,qBAAsBA,EACtBE,uBAAwBA,EACxB/oB,YAAaA,GACbkpB,YAAaA,GACbR,YAAaA,EACb2D,mBAAoBntB,EAAQgY,qBAC5ByT,OAAQA,GACR/D,iBAAkBA,EAClBI,kBAAmBA,EACnBW,aAAcsC,GACdqC,kBAAmBptB,EAAQqtB,qCAC3BC,6BAA8BttB,EAAQutB,0CAnNG,kBAqNpCra,IArNoC,+CAwNvCsa,uBAnxCY,SAmxCW9G,GAAW,sLAChClmB,EAAQ,GACV1J,EAAI,EAF8B,2BAG5B4vB,GAH4B,qDAGjC5vB,EAHiC,WAI9Bsa,EAAWsV,EAAU5vB,GACrBkJ,EAAUoR,EAASnR,WACnBE,EAAgBiR,EAASjR,cACzBstB,EAAettB,EAAcutB,UAAYvtB,EAAcutB,UAAUh5B,KAAO,KACxEi5B,EAAcxtB,EAAc6G,SAAW7G,EAAc6G,SAAStS,KAAO,KACrEq1B,EAAa5pB,EAAc4C,QAAU5C,EAAc4C,QAAQrO,KAAO,KAElEqI,EAAOiD,EAAQjD,KACjB4V,EAAY,KACV3S,EAAQ0S,aACZC,EAAY,IAAIjiB,KAAKsP,EAAQ0S,aAdK,UAiBZ,EAAKkb,qBAAqB,CAAEC,OAAQJ,IAjBxB,eAiB9BC,EAjB8B,iBAkBP,EAAKI,8BAA8B,CAAED,OAAQJ,IAlBtC,eAkB9BM,EAlB8B,iBAmBb,EAAKC,qBAAqB,CAAEC,IAAKN,IAnBpB,eAmB9B3mB,EAnB8B,iBAoBd,EAAKif,aAAa,CAAEljB,QAASgnB,IApBf,QAoB9BhnB,EApB8B,OAsB9BmQ,EAAO,CACXP,UAAWA,EACX5V,KAAMA,EACNyS,MAAOxP,EAAQuZ,SACfvS,SAAUA,EACV0mB,UAAWA,EACXQ,MAAOH,EACPhrB,QAASA,EACTorB,MAAOnuB,EAAQmuB,MACfntB,KAAMhB,EAAQgB,KACdke,YAAalf,EAAQmf,aACrBsN,SAAUzsB,EAAQ0sB,UAClB0B,OAAQpuB,EAAQquB,SAElB7tB,EAAM9J,KAAKwc,GApCyB,gDAsC/B1S,GAtC+B,+CAyCxC8qB,QA5zCkB,SA4zCV96B,GACN,IAAKA,EACH,OAAO,KAET,IAAMsiB,EAAM,IAAIpiB,KACV49B,EAAO,IAAI59B,KAAKF,GAEtBsiB,EAAIvhB,SAAS,EAAG,EAAG,EAAG,GACtB+8B,EAAK/8B,SAAS,EAAG,EAAG,EAAG,GACvB,IAAMg9B,EAAiBx/B,KAAK2D,IAAIogB,EAAIxhB,UAAYg9B,EAAKh9B,WAC/Ck9B,EAAiBz/B,KAAK0D,MAAM87B,EAAiB,OACnD,OAAOC,GAGHlF,6BA10CY,YA00C4B,0NAe5C,IAASxyB,KAf0B0J,EAAS,EAATA,MAa7BuE,EAAU,CAAE/R,KAAM,UAAWD,MAAO,OAAQD,IAAK,WACnD27B,EAAc,GACJjuB,EACN0S,EAAO1S,EAAM1J,GACbkJ,EAAUkT,EAAKjT,WACfE,EAAgB+S,EAAK/S,cACrButB,EAAYvtB,EAAcutB,UAAUh5B,KACpCsS,EAAW7G,EAAc6G,SAAStS,KAClCqI,EAAOiD,EAAQjD,KACf2xB,EAAa3xB,EAAKlO,MAAM,EAAG,GAC3B8jB,EAAY,IAAIjiB,KAAKsP,EAAQ0S,YAC7BmW,EAAalW,EAAUE,mBAAmB,QAAS9N,GACnD4pB,EAAW3uB,EAAQgB,KACnB4tB,EAXa,iBAWE5nB,QAXF,IAWEA,OAXF,EAWEA,EAAU/G,WAAWlD,YAXvB,QAW+B,GAE9CoxB,EAAQnuB,EAAQmuB,MACf,EAAK3H,SAAS2H,KACjBA,EAAQ,GAENU,EAAiB7uB,EAAQ8uB,gBACxB,EAAKtI,SAASqI,KACjBA,EAAiB,GAEfE,EAAkB/uB,EAAQgvB,iBACzB,EAAKxI,SAASuI,KACjBA,EAAkB,GAEhBE,EAAqBjvB,EAAQkvB,qBAC5B,EAAK1I,SAASyI,KACjBA,EAAqB,GAGnBE,EAAe,KACfC,EAAc,KACdC,EAAyB,KACX,OAAd3B,IACI4B,EAAmB5B,EAAUztB,WACnCkvB,EAAeG,EAAiBC,cAGhCH,EAAcE,EAAiB/V,SAC/B8V,EAAyBC,EAAiBE,sBAExCC,EAzCe,UAyCLhB,EAAYG,UAzCP,QAyCwB,GAC3Ca,EAAQb,aAAeA,EACvBa,EAAQjZ,WAAa,EACjBkZ,OA5Ce,EA6Cff,IAAa5d,EACf2e,EAAW,UAAGD,EAAQE,eAAX,QAAsB,GACxBhB,IAAa3d,IACtB0e,EAAW,UAAGD,EAAQG,iBAAX,QAAwB,IAErCF,EAAYh5B,KAAK,CACfqG,KAAMA,EACN2xB,WAAYA,EACZl+B,KAAMq4B,EACNlW,UAAWA,EACXgc,SAAUA,EACVkB,WAAW,EACXrgB,MAAOxP,EAAQwP,MACf2e,MAAOA,EACPU,eAAgBA,EAChBE,gBAAiBA,EACjBE,mBAAoBA,EACpBzY,WAAYxW,EAAQwW,WACpB2Y,aAAcA,EACdC,YAAaA,EACbC,uBAAwBA,IAEtBV,IAAa5d,GACf0e,EAAQE,QAAUD,EACdI,EAFoC,UAE3BL,EAAQM,yBAFmB,QAEE,EAC1CN,EAAQM,kBAAoBD,EAAS3B,GAC5BQ,IAAa3d,IACtBye,EAAQG,UAAYF,EAChBI,EAF6C,UAEpCL,EAAQO,2BAF4B,QAEL,EAC5CP,EAAQO,oBAAsBF,EAAS3B,QAEjBv+B,IAApB6/B,EAAQE,UACVF,EAAQE,QAAU,SAEM//B,IAAtB6/B,EAAQG,YACVH,EAAQG,UAAY,SAEYhgC,IAA9B6/B,EAAQM,oBACVN,EAAQM,kBAAoB,QAEMngC,IAAhC6/B,EAAQO,sBACVP,EAAQO,oBAAsB,GAEhCvB,EAAYG,GAAgBa,EAvGc,yBAyGrChB,GAzGqC,8CA4GxCxF,yBAt7CY,YAs7CuB,kKAARC,EAAQ,EAARA,KAC3BH,EAAa,GADsB,2BAEzBG,GAFyB,qDAE9BpyB,EAF8B,WAG/Bm3B,EAAM/E,EAAKpyB,GAHoB,SAId,EAAKk3B,qBAAqB,CAAEC,IAAKA,IAJnB,OAI/B7c,EAJ+B,OAKrC2X,EAAWryB,KAAK0a,GALqB,gDAOhC2X,GAPgC,+CAUnCiF,qBAh8CY,YAg8CkB,6KAAPC,EAAO,EAAPA,IACrBlpB,EAAU,CAAE/R,KAAM,UAAWD,MAAO,OAAQD,IAAK,WACjDkN,EAAUiuB,EAAIhuB,WACdlD,EAAOiD,EAAQjD,KACf2xB,EAAa3xB,EAAKlO,MAAM,EAAG,GAC3BohC,EAAW,IAAIv/B,KAAKsP,EAAQkwB,WAC5BrH,EAAaoH,EAASpd,mBAAmB,QAAS9N,GAClD+Z,EAAW9e,EAAQmwB,eACnB/Z,EAAepW,EAAQsX,cACvBlF,EAAMpS,EAAQoS,IACdge,EAV4B,eAUbC,QACjBxC,EAASuC,EAAS,GAXY,2BAYpBA,GAZoB,kDAYzBt5B,EAZyB,WAa1Bw5B,EAAUF,EAASt5B,GACrBw5B,EAAQ38B,QAAUyiB,EAdU,wBAe9ByX,EAASyC,EAfqB,4DAmB9BC,EAAuBC,OAAKC,EAAE5C,EAAOre,OACrC4B,EAAW,CACbrU,KAAMA,EACN2xB,WAAYA,EACZtc,IAAKA,EACL5hB,KAAMq4B,EACNoH,SAAUA,EACV3a,QAAQ,EACR6W,YAAY,EACZrN,SAAUA,EACV1I,aAAcA,EACdma,qBAAsBA,GA9BU,kBAgC3Bnf,GAhC2B,+CAmCpCsa,sBAn+CkB,YAm+Cc,QAARxY,EAAQ,EAARA,KAChBlT,EAAUkT,EAAKjT,WACfuR,EAAS,UAAGxR,EAAQyR,kBAAX,SACTif,EAAkB,UAAG1wB,EAAQ2wB,6BAAX,QAAoCnf,EACtDof,EAAiB5wB,EAAQ6wB,kBACzBC,EAAgB9wB,EAAQ+wB,gBACxBC,EAAahxB,EAAQixB,YACvBC,EAAmB,KACjBlxB,EAAQmxB,qBACZD,EAAmB,IAAIxgC,KAAKsP,EAAQmxB,qBAEtC,IAAIC,EAAkB,KAChBpxB,EAAQqxB,oBACZD,EAAkB,IAAI1gC,KAAKsP,EAAQqxB,oBAErC,IAAIC,EAAkB,KAChBtxB,EAAQuxB,oBACZD,EAAkB,IAAI5gC,KAAKsP,EAAQuxB,oBAGrC,IAAMC,EAAyBlhC,OAAU4C,qBAAqB,CAAE1C,KAAM0gC,IAChEO,EAAwBnhC,OAAU4C,qBAAqB,CAAE1C,KAAM4gC,IAC/DM,EAAwBphC,OAAU4C,qBAAqB,CAAE1C,KAAM8gC,IAEjElgB,EAAW,CACbrU,KAAMiD,EAAQjD,KACdyS,MAAOxP,EAAQwP,MACf6R,YAAarhB,EAAQqhB,YACrB7P,UAAWA,EACXkf,mBAAoBA,EACpBE,eAAgBA,EAChBI,WAAYA,EACZF,cAAeA,EACfI,iBAAkBM,EAClBJ,gBAAiBK,EACjBH,gBAAiBI,GAGnB,OAAOtgB,GAGHwc,qBA5gDY,YA4gDqB,qKAAVC,EAAU,EAAVA,OACtBA,EADgC,yCAE5B,MAF4B,cAI/B7tB,EAAU6tB,EAAO5tB,WAJc,SAKnB,EAAK6tB,8BAA8B,CAAED,WALlB,cAKjCK,EALiC,OAMjC9c,EAAW,CACbrU,KAAMiD,EAAQjD,KACdyS,MAAOxP,EAAQuZ,SACf/C,WAAU,UAAExW,EAAQwW,kBAAV,QAAwB,EAClC0X,MAAOA,GAV4B,kBAY9B9c,GAZ8B,8CAejC6U,aA3hDY,YA2hDc,0JAAXljB,EAAW,EAAXA,QACdA,EADyB,yCAErB,MAFqB,cAIxB/C,EAAU+C,EAAQ9C,WAClB4e,EAAY7e,EAAQoZ,WACpByN,EAAW7mB,EAAQomB,UACrBhV,EAAW,CACbrU,KAAMiD,EAAQjD,KACd9I,KAAM,GAAF,OAAK4qB,EAAL,YAAkBgI,GACtBhI,UAAWA,EACXgI,SAAUA,EACVrX,MAAOxP,EAAQwP,MACf+O,MAAOve,EAAQue,OAba,kBAevBnN,GAfuB,8CAkB1B0c,8BA7iDY,YA6iD8B,mKAAVD,EAAU,EAAVA,OAC/BA,EADyC,yCAErC,MAFqC,cAIxC1tB,EAAgB0tB,EAAO1tB,cACvBwxB,EAAcxxB,EAAc+tB,MAAQ/tB,EAAc+tB,MAAMx5B,KAAO,KALvB,SAM1B,EAAKk9B,oBAAoB,CAAE1D,MAAOyD,IANR,cAMxCzD,EANwC,yBAOvCA,GAPuC,8CAU1C0D,oBAvjDY,YAujDmB,wJAAT1D,EAAS,EAATA,MACrBA,EAD8B,yCAE1B,MAF0B,cAI7BluB,EAAUkuB,EAAMjuB,WAClBmR,EAAW,CACbrU,KAAMiD,EAAQjD,KACdyS,MAAOxP,EAAQuZ,SACf/C,WAAU,UAAExW,EAAQwW,kBAAV,QAAwB,GARD,kBAU5BpF,GAV4B,8CAa/BygB,wBApkDY,YAokDuB,mKAATrxB,EAAS,EAATA,MACzBA,EADkC,yCAE9B,MAF8B,OAKvC,IAAS1J,KADLg7B,EAAY,GACFtxB,EACN0S,EAAO1S,EAAM1J,GACnBg7B,EAAUp7B,KAAK,EAAKk7B,oBAAoB,CAAE1D,MAAOhb,KAPZ,yBAShC4e,GATgC,8CAYnCC,uBAhlDY,YAolDf,wLAHDvxB,EAGC,EAHDA,MAGC,IAFDvG,WAEC,MAFK,YAEL,MADD8b,qBACC,MADe,yBACf,EACGG,EAAY,GADf,2BAEa1V,GAFb,qDAEQ1J,EAFR,WAGOoc,EAAO1S,EAAM1J,GACbk7B,EAAW9e,EAAKjZ,GAChBkc,EAAgB6b,EAAwBA,EAASj1B,KAAtB,WAC3BsZ,EAAiB2b,EAA2BA,EAASxiB,MAAzBuG,EAC5BQ,EAAsByb,GAAD,UAAiBA,EAASxb,kBAA1B,QAAY,EAPxC,UASmB,EAAKyb,yBAAyB,CAC9C/e,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAdvB,QASCL,EATD,8BAkBD,IAASnZ,KADLm1B,EAAS,GACIhc,EACfgc,EAAOx7B,KAAKwf,EAAUnZ,IAnBvB,OAqBKipB,EAAU,QArBf,kBAsBMkM,EAAOnb,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAExH,MAAM2T,cAAcgD,cAAclP,EAAEzH,MAAM2T,cAAe6C,OAtBvF,+CAyBGmM,YA7mDY,YA6mDW,8KAAT3xB,EAAS,EAATA,MACd0V,EAAY,GADW,2BAEb1V,GAFa,iDAElB1J,EAFkB,WAGnBoc,EAAO1S,EAAM1J,GACb6b,EAAYO,EAAKP,UAClBA,EALoB,4DAQnBwD,EAAe7lB,OAAUqC,qBAAqB,CAAEnC,KAAMmiB,IACtD0D,EAAgB/lB,OAAU4C,qBAAqB,CAAE1C,KAAMmiB,IACvD4D,EAAqB,EAVF,UAYP,EAAK0b,yBAAyB,CAC9C/e,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAjBG,QAYzBL,EAZyB,8BAqB3B,IAASnZ,KADLm1B,EAAS,GACIhc,EACfgc,EAAOx7B,KAAKwf,EAAUnZ,IAtBG,OAwBrBipB,EAAU,QAxBW,kBAyBpBkM,EAAOnb,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAEja,KAAKomB,cAAcgD,cAAclP,EAAEla,KAAKomB,cAAe6C,OAzB3D,+CA4BvBoM,yBAzoDY,YAyoDwB,4KAAT5xB,EAAS,EAATA,MAC3B0V,EAAY,GADwB,2BAE1B1V,GAF0B,iDAE/B1J,EAF+B,WAGhCoc,EAAO1S,EAAM1J,GACb6b,EAAYO,EAAKP,UAClBA,EALiC,4DAQhCwD,EAAe,QACfE,EAAgB,QAChBE,EAAqB,EAVW,UAYpB,EAAK0b,yBAAyB,CAC9C/e,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAjBgB,QAYtCL,EAZsC,8BAqBxC,IAASnZ,KADLm1B,EAAS,GACIhc,EACfgc,EAAOx7B,KAAKwf,EAAUnZ,IAtBgB,yBAwBjCm1B,GAxBiC,+CA2BpCG,wBApqDY,YAoqDuB,4KAAT7xB,EAAS,EAATA,MAC1B0V,EAAY,GADuB,2BAEzB1V,GAFyB,iDAE9B1J,EAF8B,WAG/Boc,EAAO1S,EAAM1J,GACb6b,EAAYO,EAAKP,UAClBA,EALgC,4DAQ/BwD,EAAe,QACfE,EAAgB,QAChBE,EAAqB,EAVU,UAYnB,EAAKE,wBAAwB,CAC7CvD,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAjBe,QAYrCL,EAZqC,8BAqBvC,IAASnZ,KADLm1B,EAAS,GACIhc,EACfgc,EAAOx7B,KAAKwf,EAAUnZ,IAtBe,yBAwBhCm1B,GAxBgC,+CA2BnCI,wBA/rDY,YA+rDuB,qJAEvC,IAASx7B,KAFqB0J,EAAS,EAATA,MAC1B+xB,EAAU,GACA/xB,EACN0S,EAAO1S,EAAM1J,GACnBy7B,EAAQ77B,KAAKwc,EAAK4Z,oBAJmB,yBAMhCyF,GANgC,8CASnCC,wBAxsDY,YAwsDuB,yJAEvC,IAF8BhyB,EAAS,EAATA,MAC1B+xB,EAAU,GACLz7B,EAAI,EAAGA,EAAI0J,EAAM9Q,OAAQoH,IAC1Boc,EAAO1S,EAAM1J,GACb27B,EAAgB,IAAN37B,EACV47B,EAAS57B,IAAM0J,EAAM9Q,OAAS,EAChC+iC,GAAWC,EACbH,EAAQ77B,KAAKwc,EAAKnW,MAElBw1B,EAAQ77B,KAAK,KATsB,yBAYhC67B,GAZgC,8CAenCI,sBAvtDY,YA6tDf,wMALDnyB,EAKC,EALDA,MAKC,IAJDvG,WAIC,MAJK,QAIL,MAHD8b,qBAGC,MAHe,yBAGf,MAFDC,qBAEC,aADDC,0BACC,MADoB,YACpB,EACGC,EAAY,GADf,2BAEa1V,GAFb,qDAEQ1J,EAFR,WAGOoc,EAAO1S,EAAM1J,GACbk7B,EAAW9e,EAAKjZ,GAChBkc,EAAgB6b,EAAwBA,EAASj1B,KAAtB,WAC3BsZ,EAAiB2b,EAA2BA,EAASxiB,MAAzBuG,EAC5BQ,EAAsByb,GAAD,UAAiBA,EAASxb,kBAA1B,QAAY,EAPxC,UASmB,EAAKyb,yBAAyB,CAC9C/e,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAdvB,QASCL,EATD,8BAmBD,IAASnZ,KADL2Z,EAAU,GACGR,EACfQ,EAAQhgB,KAAKwf,EAAUnZ,IAGrB4Z,EAAU,GAvBb,2BAwBaD,GAxBb,kDAwBQxE,EAxBR,WAyBO0E,EAAOF,EAAQxE,IACjB8D,EA1BL,kCA2B2B,EAAK4c,eAAe,CAC1CpyB,MAAOoW,EAAKpW,MACZwV,eAAe,IA7BpB,QA2BS6c,EA3BT,OA+BGjc,EAAK,aAAeic,EACpBjc,EAAK,YAAcA,EAAKX,GAhC3B,QAkCCU,EAAQjgB,KAAKkgB,GAlCd,+BAqCKoP,EAAU,QArCf,kBAsCMrP,EAAQI,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAExH,MAAM2T,cAAcgD,cAAclP,EAAEzH,MAAM2T,cAAe6C,OAtCxF,+CAyCGiM,yBAtwDY,YA4wDf,0NALD/e,EAKC,EALDA,KACAgD,EAIC,EAJDA,UACAC,EAGC,EAHDA,aACAE,EAEC,EAFDA,cACAE,EACC,EADDA,mBAEIuc,EAAe5c,EAEbgJ,EAHL,UAGmBhM,EAAKgM,mBAHxB,SAIKuN,EAJL,UAIgBvZ,EAAKuZ,gBAJrB,SAKK2B,EALL,UAKclb,EAAKkb,cALnB,SAMK2E,EANL,UAMc7f,EAAKib,aANnB,QAM4B,EAEvB6E,EARL,UAQYF,EAAa3c,UARzB,QAQ0C,GACvC2W,EATH,UASwBkG,EAAKlG,0BAT7B,QASmD,EAChDE,EAVH,UAU0BgG,EAAKhG,4BAV/B,QAUuD,EACpDiG,EAXH,UAWuBD,EAAKC,yBAX5B,QAWiD,EAC9CC,EAZH,UAYqBF,EAAKE,uBAZ1B,QAY6C,EAE1CC,EAdH,UAckBH,EAAKG,oBAdvB,QAcuC,EACpCC,EAfH,UAeoBJ,EAAKI,sBAfzB,QAe2C,EACxCC,EAhBH,UAgBiBL,EAAKK,mBAhBtB,QAgBqC,EAClCC,EAjBH,UAiBeN,EAAKM,iBAjBpB,QAiBiC,EAElCxG,GAAsBiG,EACtBI,GAAgB,GACI,IAAhBjU,IACFkU,GAAkB,EAClBpG,GAAwB+F,IAET,IAAbtG,IACF4G,GAAe,EACfJ,GAAqBF,IAER,IAAX3E,IACFkF,GAAa,EACbJ,GAAmBH,GAGjBvyB,EAlCH,UAkCWwyB,EAAKxyB,aAlChB,QAkCyB,GAC1BA,EAAM9J,KAAKwc,GAELqgB,EAAQ,CACZ/jB,MAAO6G,EACPtZ,KAAMoZ,EACN2W,mBAAoBA,EACpBE,qBAAsBA,EACtBiG,kBAAmBA,EACnBC,gBAAiBA,EACjBC,aAAcA,EACdC,eAAgBA,EAChBC,YAAaA,EACbC,UAAWA,EACX9c,WAAYD,EACZ/V,MAAOA,GAETsyB,EAAa3c,GAAgBod,EAnD5B,kBAoDMT,GApDN,+CAuDGrc,wBAn0DY,YAy0Df,wLALDvD,EAKC,EALDA,KACAgD,EAIC,EAJDA,UACAC,EAGC,EAHDA,aACAE,EAEC,EAFDA,cACAE,EACC,EADDA,mBAEIuc,EAAe5c,EAEb8c,EAHL,UAGYF,EAAa3c,UAHzB,QAG0C,GACvCqd,EAJH,UAIetgB,EAAK2E,mBAJpB,QAImC,EAChCA,EALH,UAKiBmb,EAAKnb,mBALtB,QAKqC,EAElC4b,EAPH,UAOWT,EAAKS,aAPhB,QAOyB,EAE1B5b,GAAe2b,EACfC,GAAS,EAELjzB,EAZH,UAYWwyB,EAAKxyB,aAZhB,QAYyB,GAC1BA,EAAM9J,KAAKwc,GAEPwgB,EAAuBnd,EACA,OAAvBA,IACFmd,EAAuB7b,EAAc4b,GAGjCF,EAAQ,CACZ/jB,MAAO6G,EACPtZ,KAAMoZ,EACN0B,YAAaA,EACb4b,MAAOA,EACPjd,WAAYznB,KAAKD,KAAK4kC,GACtBlzB,MAAOA,GAETsyB,EAAa3c,GAAgBod,EA5B5B,kBA6BMT,GA7BN,+CAgCGjc,qBAz2DY,YA62Df,kLAHDrW,EAGC,EAHDA,MAGC,IAFDwV,mBAEC,aADDD,qBACC,MADe,WACf,EACGG,EAAY,GADf,2BAEa1V,GAFb,qDAEQ1J,EAFR,WAGOoc,EAAO1S,EAAM1J,GACbqf,EAAgBjD,EAAK6E,cAA6B7E,EAAK6E,cAAlB,WACrC1B,EAAiBnD,EAAK6E,cAAgC7E,EAAK6E,cAArBhC,EACtCQ,EAAqB,KAN5B,UAQmB,EAAKE,wBAAwB,CAC7CvD,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAbvB,QAQCL,EARD,8BAiBD,IAASnZ,KADL2Z,EAAU,GACGR,EACfQ,EAAQhgB,KAAKwf,EAAUnZ,IAlBxB,OAqBKipB,EAAU,QArBf,kBAsBMtP,EAAQK,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAExH,MAAM2T,cAAcgD,cAAclP,EAAEzH,MAAM2T,cAAe6C,OAtBxF,+CAyBG4M,eAt4DY,YA44Df,0MALDpyB,EAKC,EALDA,MAKC,IAJDvG,WAIC,MAJK,UAIL,MAHD8b,qBAGC,MAHe,iBAGf,MAFDC,qBAEC,aADDC,0BACC,MADoB,UACpB,EACGC,EAAY,GADf,2BAEa1V,GAFb,qDAEQ1J,EAFR,WAGOoc,EAAO1S,EAAM1J,GACbk7B,EAAW9e,EAAKjZ,GAChBkc,EAAgB6b,EAAwBA,EAASj1B,KAAtB,WAC3BsZ,EAAiB2b,EAAD,UAA6BA,EAAS/9B,YAAtC,QAA8C,GAAlC8hB,EAC5BQ,EAAsByb,GAAD,UAAiBA,EAASxb,kBAA1B,QAAY,EAPxC,UASmB,EAAKyb,yBAAyB,CAC9C/e,KAAMA,EACNgD,UAAWA,EACXC,aAAcA,EACdE,cAAeA,EACfE,mBAAoBA,IAdvB,QASCL,EATD,8BAkBD,IAASnZ,KADL2Z,EAAU,GACGR,EACfQ,EAAQhgB,KAAKwf,EAAUnZ,IAGrB4Z,EAAU,GAtBb,2BAuBaD,GAvBb,kDAuBQxE,EAvBR,WAwBO0E,EAAOF,EAAQxE,IACjB8D,EAzBL,kCA0ByB,EAAK2c,sBAAsB,CAC/CnyB,MAAOoW,EAAKpW,MACZwV,eAAe,IA5BpB,QA0BS2d,EA1BT,OA8BG/c,EAAK,WAAa+c,EAClB/c,EAAK,YAAcA,EAAKX,GA/B3B,QAiCCU,EAAQjgB,KAAKkgB,GAjCd,+BAoCKoP,EAAU,QApCf,kBAqCMrP,EAAQI,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAExH,MAAM2T,cAAcgD,cAAclP,EAAEzH,MAAM2T,cAAe6C,OArCxF,+CAwCHmB,UAp7DkB,YAo7DuC,IAA7CC,EAA6C,EAA7CA,SAAUpmB,EAAmC,EAAnCA,KAAmC,IAA7B+mB,yBAA6B,SACvD,IAAKX,EACH,MAAO,GAET,IAJuD,EAInDmL,EAAU,GACVqB,EAAqB,GAL8B,iBAMtCxM,GANsC,IAMvD,IAAK,EAAL,qBAA2B,KAAlBlU,EAAkB,QACzB,GAAKA,GAGAA,EAAKoO,UAAV,CAGA,IAAMA,EAAY,IAAI5wB,KAAKwiB,EAAKoO,WAC1BF,EAAKE,EAAUhwB,UACfwvB,EAAkBxwB,OAAU6C,yBAAyB,CAAE3C,KAAM8wB,IAC7D9R,EAAQ0D,EAAK1D,MACbqkB,EAAW3gB,EAAK2gB,SAChBxS,EAAcnO,EAAK4gB,kBACnB3S,EAAOjO,EAAKqO,KACZwS,EAAgB,GAAH,OAAMjT,EAAN,YAAyBtR,EAAzB,YAAkCqkB,EAAlC,YAA8CxS,GACjE,IAAI0G,IAAqB6L,EAAmBx+B,SAAS2+B,GAArD,CAGA,IAAMnd,EAAO,CACX7Z,KAAMmW,EAAKnW,KACXukB,UAAWA,EACXF,GAAIA,EACJpgB,KAAMA,EACNmgB,KAAMA,EACNL,gBAAiBA,EACjBtR,MAAOA,EACPqkB,SAAUA,EACVxS,YAAaA,GAEfkR,EAAQ77B,KAAKkgB,GACbgd,EAAmBl9B,KAAKq9B,MApC6B,8BAsCvD,OAAOxB,EAAQxb,MAAK,SAACC,EAAGC,GAAJ,OAAUA,EAAEmK,GAAKpK,EAAEoK,OAGzCuG,uBA79DkB,YA69D6C,IAAtCP,EAAsC,EAAtCA,SAAsC,IAA5BW,yBAA4B,SAC7D,IAAKX,EACH,MAAO,GAET,IAJ6D,EAIzDmL,EAAU,GACVqB,EAAqB,GALoC,iBAM5CxM,GAN4C,IAM7D,IAAK,EAAL,qBAA2B,KAAlBlU,EAAkB,QACzB,GAAKA,GAGAA,EAAKoO,UAAV,CAGA,IAAMA,EAAY,IAAI5wB,KAAKwiB,EAAKoO,WAC1BF,EAAKE,EAAUhwB,UACfwvB,EAAkBxwB,OAAU6C,yBAAyB,CAAE3C,KAAM8wB,IAC7D9R,EAAQ0D,EAAK1D,MACbqkB,EAAW3gB,EAAK2gB,SAChBxS,EAAcnO,EAAK4gB,kBACnBC,EAAgB,GAAH,OAAMjT,EAAN,YAAyBtR,EAAzB,YAAkCqkB,EAAlC,YAA8CxS,GACjE,IAAI0G,IAAqB6L,EAAmBx+B,SAAS2+B,GAArD,CAGA,IAAMnd,EAAO,CACX7Z,KAAMmW,EAAKnW,KACXukB,UAAWA,EACXF,GAAIA,EACJpgB,KAAMkS,EAAKlS,KACX8f,gBAAiBA,EACjBtR,MAAOA,EACPqkB,SAAUA,EACVxS,YAAaA,GAEfkR,EAAQ77B,KAAKkgB,GACbgd,EAAmBl9B,KAAKq9B,MAlCmC,8BAoC7D,OAAOxB,EAAQxb,MAAK,SAACC,EAAGC,GAAJ,OAAUA,EAAEmK,GAAKpK,EAAEoK,QAM3C,SAAS5tB,EAAYC,GACnB,OAAOA,aAAa/C,OAASgD,MAAMD,GAHtB6M,U,6KClgET,SAAU0zB,EAASv8B,GACvBA,EAAEmT,iBAIW/W,sBACboP,OACAgxB,OACAC,QACAlgC,OAAO,CACPC,KAAM,aAENyE,MAAO,CACLy7B,KAAM,aACNC,MAAO,UAGT//B,MAAO,CACLoU,GAAIlF,OACJ8wB,WAAY,KACZC,WAAY,KACZC,UAAW,KACXC,SAAU,CACRxzB,KAAMzM,QACNoD,QAAS,MAEX/D,MAAO2P,QAGT7O,KApBO,WAqBL,MAAO,CACL4b,SAAUlgB,KAAKikC,WACfnvB,UAAW9U,KAAKikC,aAIpB1yB,SAAU,CACRiF,cADQ,WAEN,GAAKxW,KAAKuU,SACV,OAAIvU,KAAKqf,MAAcrf,KAAKqf,MACxBrf,KAAKqW,SAAWrW,KAAKqkC,UAAkB,QACpC,WAETC,WAPQ,WAQN,OAAyB,IAAlBtkC,KAAKokC,UAAwC,OAAlBpkC,KAAKokC,UAAqBxwB,MAAM2wB,QAAQvkC,KAAK6U,gBAEjFN,SAVQ,WAUA,WACAhR,EAAQvD,KAAKuD,MACb+B,EAAQtF,KAAK6U,cAEnB,OAAI7U,KAAKskC,aACF1wB,MAAM2wB,QAAQj/B,IAEZA,EAAMk/B,MAAK,SAAA1hB,GAAI,OAAI,EAAK2hB,gBAAgB3hB,EAAMvf,WAGhC/D,IAAnBQ,KAAKmkC,gBAA+C3kC,IAApBQ,KAAKkkC,WAChC3gC,EACHvD,KAAKykC,gBAAgBlhC,EAAO+B,GAC5BnB,QAAQmB,GAGPtF,KAAKykC,gBAAgBn/B,EAAOtF,KAAKmkC,YAE1CO,QA5BQ,WA6BN,OAAO1kC,KAAKuU,UAEdmM,YA/BQ,WAgCN,OAAQ1gB,KAAK8V,YAAe9V,KAAKsW,gBAE7BtW,KAAKsW,qBADL9W,IAKRkF,MAAO,CACLu/B,WADK,SACOr/B,GACV5E,KAAK8U,UAAYlQ,EACjB5E,KAAKkgB,SAAWtb,IAIpBQ,QAAS,CACP6R,SADO,WAEL,IAAMzT,EAAQqP,OAAO8B,QAAQvP,QAAQ6R,SAASrC,KAAK5U,MAEnD,OAAKwD,GAELA,EAAOc,KAAM6C,GAAK,CAEhBuQ,MAAOksB,GAGFpgC,GAPYA,GASrBwU,SAbO,SAaGpH,EAAc5J,GACtB,OAAOhH,KAAKgI,eAAe,QAAS,CAClChB,MAAOlC,OAAO2J,OAAO,CACnB,eAAgBzO,KAAKuU,SAASnW,WAC9B8F,SAAUlE,KAAK8V,WACfuC,GAAIrY,KAAKsY,WACTuB,KAAMjJ,EACNA,QACC5J,GACH29B,SAAU,CACRphC,MAAOvD,KAAKuD,MACZqhC,QAAS5kC,KAAKuU,UAEhBpN,GAAI,CACF4S,KAAM/Z,KAAKyX,OACXotB,OAAQ7kC,KAAK8kC,SACbhrB,MAAO9Z,KAAKoY,QACZ4B,QAASha,KAAK+kC,UACdrtB,MAAOksB,GAETjrB,IAAK,WAGTqsB,QApCO,SAoCE39B,GACPrH,KAAK8kC,WACL9kC,KAAKiF,MAAM,QAASoC,IAEtBy9B,SAxCO,WAwCC,WACN,GAAK9kC,KAAKkc,cAAV,CAEA,IAAM3Y,EAAQvD,KAAKuD,MACf+B,EAAQtF,KAAK6U,cAEjB,GAAI7U,KAAKskC,WAAY,CACd1wB,MAAM2wB,QAAQj/B,KACjBA,EAAQ,IAGV,IAAMhG,EAASgG,EAAMhG,OAErBgG,EAAQA,EAAMS,QAAQ,SAAA+c,GAAD,OAAgB,EAAK2hB,gBAAgB3hB,EAAMvf,MAE5D+B,EAAMhG,SAAWA,GACnBgG,EAAMgB,KAAK/C,QAGb+B,OAD4B9F,IAAnBQ,KAAKmkC,gBAA+C3kC,IAApBQ,KAAKkkC,WACtClkC,KAAKykC,gBAAgBn/B,EAAOtF,KAAKmkC,WAAankC,KAAKkkC,WAAalkC,KAAKmkC,UACpE5gC,EACDvD,KAAKykC,gBAAgBn/B,EAAO/B,GAAS,KAAOA,GAE3C+B,EAGXtF,KAAK8F,UAAS,EAAMR,GACpBtF,KAAK6U,cAAgBvP,EACrBtF,KAAKkgB,SAAW5a,IAElB8S,QAtEO,SAsEE/Q,GACPrH,KAAKsU,WAAY,EACjBtU,KAAKiF,MAAM,QAASoC,IAEtBoQ,OA1EO,SA0ECpQ,GACNrH,KAAKsU,WAAY,EACjBtU,KAAKiF,MAAM,OAAQoC,IAGrB09B,UA/EO,SA+EI19B","file":"js/chunk-1a2e7806.39ff48f5.js","sourcesContent":["// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = toString(requireObjectCoercible($this));\n var intMaxLength = toLength(maxLength);\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : toString(fillString);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","const dateUtils = {\n isToday(date) {\n if (!date) {\n return false\n }\n const today = new Date()\n return date.getDate() == today.getDate() &&\n date.getMonth() == today.getMonth() &&\n date.getFullYear() == today.getFullYear()\n },\n\n isThisIsoWeek(date) {\n if (!date) {\n return false;\n }\n const today = new Date();\n const todayIsoWeek = this._getWeek(today);\n const todayIsoYear = this._getWeekYear(today);\n const dateIsoWeek = this._getWeek(date);\n const dateIsoYear = this._getWeekYear(date);\n return dateIsoWeek === todayIsoWeek && dateIsoYear === todayIsoYear;\n },\n\n _getWeek(someDate) {\n var date = new Date(someDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n var week1 = new Date(date.getFullYear(), 0, 4);\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n },\n\n _getWeekYear(someDate) {\n var date = new Date(someDate.getTime());\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n return date.getFullYear();\n },\n\n subtractDaysFromToday({ date, days, includeToday = true }) {\n let dateObj;\n if (typeof date === \"string\") {\n dateObj = new Date(date);\n } else if (date instanceof Date) {\n dateObj = date;\n } else {\n throw new Error(\n \"Invalid date format. Expected either a Date object or a valid date string.\"\n );\n }\n let offsetDays = days;\n if (includeToday) {\n offsetDays = days - 1;\n }\n return new Date(dateObj.getTime() - offsetDays * 24 * 60 * 60 * 1000);\n },\n\n daysBetweenDatesForRange({ date0, date1, includeToday = true }) {\n const ONE_DAY = 1000 * 60 * 60 * 24;\n\n // Convert dates to UTC timestamps\n const utc0 = Date.UTC(\n date0.getFullYear(),\n date0.getMonth(),\n date0.getDate()\n );\n const utc1 = Date.UTC(\n date1.getFullYear(),\n date1.getMonth(),\n date1.getDate()\n );\n\n // Calculate difference in days\n let days = Math.floor(Math.abs(utc1 - utc0) / ONE_DAY);\n if (includeToday) {\n days = days + 1\n }\n\n return days;\n },\n\n formatDateToYYYYMMDD({ date, dateString, delimiter = '-' }) {\n if (!date && !dateString) return;\n let date0 = date\n if (!date0) {\n date0 = new Date(dateString)\n }\n let day = date0.getDate().toString();\n let month = (date0.getMonth() + 1).toString();\n let year = date0.getFullYear().toString().slice(-4);\n day = day.padStart(2, '0');\n month = month.padStart(2, '0');\n return `${year}${delimiter}${month}${delimiter}${day}`;\n },\n\n formatDateToDDMMYYYY({ date, dateString, delimiter = '-' }) {\n if (!date && !dateString) return;\n let date0 = date\n if (!date0) {\n date0 = new Date(dateString);\n }\n let day = date0.getDate().toString();\n let month = (date0.getMonth() + 1).toString();\n let year = date0.getFullYear().toString().slice(-4);\n day = day.padStart(2, '0');\n month = month.padStart(2, '0');\n return `${day}${delimiter}${month}${delimiter}${year}`;\n },\n\n formatDateToDDMMYYYYTime({ date, dateString, delimiter = '-' }) {\n if (!date && !dateString) return;\n let date0 = date\n if (!date0) {\n date0 = new Date(dateString);\n }\n let day = date0.getDate().toString();\n let month = (date0.getMonth() + 1).toString();\n let year = date0.getFullYear().toString().slice(-4);\n let hour = date0.getHours().toString();\n let minute = date0.getMinutes().toString();\n day = day.padStart(2, '0');\n month = month.padStart(2, '0');\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n return `${day}${delimiter}${month}${delimiter}${year}, ${hour}:${minute}`;\n },\n\n isValidDate(d) {\n return d instanceof Date && !isNaN(d);\n }\n}\n\nexport default dateUtils\n","export default [\n {\n value: \"ea63839a-d20b-44d8-89b7-62505261a66e\",\n label: \"Aftagelig protetik\",\n },\n {\n value: \"61415af9-cc80-42fd-99dc-e326f989cdfc\",\n label: \"Bid og bidfunktion\",\n },\n {\n value: \"fb79529b-7bdd-4bc8-bb5b-ac65f6bb8141\",\n label: \"Bidskinne\",\n },\n {\n value: \"07c6607b-dfcf-4e83-828e-ed33ac71d4b7\",\n label: \"Caries\",\n },\n {\n value: \"6ae33277-5811-4c8d-acc5-eda2e95645cb\",\n label: \"Fast protetik: Krone, indlæg og facader\",\n },\n {\n value: \"98f89f2a-8835-422f-817c-5e04a4a426ce\",\n label: \"Fast protetik: Tandbro\",\n },\n {\n value: \"b3e0c7b7-ab0f-4d21-9c34-43ac253c0603\",\n label: \"Fast protetik: Vedr. krone og bro (stift, opbygning)\",\n },\n {\n value: \"dc030cf5-2b20-435d-9e9b-a032f22bcbbf\",\n label: \"Fjernelse af tand\",\n },\n {\n value: \"9bcdf49a-3277-4b78-a9df-6c16fe98753f\",\n label: \"Fyldninger: Plast og fiberforstærker\",\n },\n {\n value: \"af211883-2a9b-4dba-8f8e-c51011a3ebe4\",\n label: \"Fyldninger: Øvrige (sølv, glasionomer, o.a.)\",\n },\n {\n value: \"d146f1ff-ec8a-4054-a927-a48490de7249\",\n label: \"Implantat\",\n },\n {\n value: \"1c71c7eb-5b8f-4d5a-a5cc-68dea7255950\",\n label: \"Kirurgi\",\n },\n {\n value: \"397ce8fe-6cc6-4b17-a6ce-23478d37ab19\",\n label: \"Mundslimhinde\",\n },\n {\n value: \"256618ef-1883-4290-9c87-c17d7df92d60\",\n label: \"Parodontalbehandling\",\n },\n {\n value: \"fb50db71-7941-48f3-92f8-b896ace4ebdf\",\n label: \"Profylakse\",\n },\n {\n value: \"c36119e2-1b8a-448e-b286-1a707543c916\",\n label: \"Rodbehandling\",\n },\n {\n value: \"42466f36-65ca-450c-8ad6-5847be6ba982\",\n label: \"Rodbehandling, retrograd\",\n },\n {\n value: \"3aba4e6f-2974-4344-bd98-2efb125cff43\",\n label: \"Tandblegning\",\n },\n {\n value: \"06851a37-d8f8-422c-b84f-5ca0a545c721\",\n label: \"Tandplejeprodukter m.m.\",\n },\n {\n value: \"7c36709c-80bd-4ff1-b669-dedfb2cc88de\",\n label: \"Tandregulering\",\n },\n {\n value: \"32e2bec6-9ae2-4edd-8654-726a927c0c57\",\n label: \"Tandregulering, retainers\",\n },\n {\n value: \"79cd270a-f9f8-4cbc-8f75-26e6e4c5b2e8\",\n label: \"Tandrensning\",\n },\n {\n value: \"e4584f1d-a365-4b08-a738-267116870209\",\n label: \"Tandslid: Erosion, attrition og abrasion\",\n },\n {\n value: \"b62f5463-bb56-4e1b-9c84-6572799dd289\",\n label: \"Tandtraume\",\n },\n {\n value: \"cf9aa83b-79e3-4938-ad5c-7b05400f6d74\",\n label: \"Undersøgelse og kontrol\",\n },\n {\n value: \"4a98602e-b455-4ad5-9a20-b87306a1184f\",\n label: \"Øvrig: 3D-scan, aftryk m.m.\",\n },\n {\n value: \"b63724a4-8842-4a48-92cf-36f41baacf9e\",\n label: \"Øvrig: Andre henvendelser og behandlinger\",\n },\n {\n value: \"a29eb449-26e3-4db8-aaac-6dd7ba9a73e3\",\n label: \"Øvrig: Bedøvelse\",\n },\n {\n value: \"09d7ba0a-0d96-4b6a-8041-bb2843aac03c\",\n label: \"Øvrig: Diverse (kommentarer, m.m.)\",\n },\n {\n value: \"6aa3f623-9a59-4fda-86ff-8e85f7541eb1\",\n label: \"Øvrig: Provisorium\",\n },\n {\n value: \"84a03960-05de-4ea6-b421-1e774a631d39\",\n label: \"Øvrig: Rabat\",\n },\n {\n value: \"6467d0a7-490f-47b3-8278-df5aaef59455\",\n label: \"Øvrig: Røntgen\",\n },\n {\n value: \"376151c9-0350-408b-bd32-174a9b9ee13f\",\n label: \"Øvrig: Tandstatus\",\n },\n]\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"id\":\"user-profile\",\"fluid\":\"\",\"tag\":\"section\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"10\"}},[_c('base-material-card',[_c('v-card-title',[_vm._v(\" Indstillinger for \\\"Følg op\\\" \")]),_c('v-card-text',{staticClass:\"grey--text text--darken-2\"},[_vm._v(\" Definer hvilke kriterier, der bør gælde for overslag. \")]),_c('v-form',[_c('v-divider',{staticClass:\"mb-10\"}),_c('v-card-text',[_c('v-row',{staticClass:\"mb-1\"},[_c('div',{staticClass:\"mt-2 ml-3\"},[_vm._v(\"Ring til patient når:\")]),_c('v-select',{staticClass:\"ml-3\",staticStyle:{\"max-width\":\"250px\"},attrs:{\"items\":_vm.totalAbovePriceList,\"attach\":\"\",\"outlined\":\"\",\"dense\":\"\",\"label\":\"Pris er mere end\",\"hide-details\":\"\",\"item-value\":\"value\",\"item-text\":\"label\"},model:{value:(_vm.selectedFiltersPriceCall),callback:function ($$v) {_vm.selectedFiltersPriceCall=$$v},expression:\"selectedFiltersPriceCall\"}}),_c('div',{staticClass:\"mt-2 ml-3 grey--text\"},[_vm._v(\"F.eks. over 25.000 kr.\")])],1)],1),_c('v-card-text',[_c('v-row',{staticClass:\"mb-1\"},[_c('div',{staticClass:\"mt-2 ml-3\"},[_vm._v(\"Send besked når:\")]),_c('v-select',{staticClass:\"ml-3\",staticStyle:{\"max-width\":\"250px\"},attrs:{\"items\":_vm.totalAbovePriceList,\"attach\":\"\",\"outlined\":\"\",\"dense\":\"\",\"label\":\"Pris er mere end\",\"hide-details\":\"\",\"item-value\":\"value\",\"item-text\":\"label\"},model:{value:(_vm.selectedFiltersPriceMessage),callback:function ($$v) {_vm.selectedFiltersPriceMessage=$$v},expression:\"selectedFiltersPriceMessage\"}}),_c('div',{staticClass:\"mt-2 ml-3 grey--text\"},[_vm._v(\"F.eks. over 1.000 kr.\")])],1)],1),_c('v-card-text',[_c('v-row',{staticClass:\"mb-1\"},[_c('div',{staticClass:\"mt-2 ml-3\"},[_vm._v(\"Send som:\")]),_c('v-select',{staticClass:\"ml-3\",staticStyle:{\"max-width\":\"250px\"},attrs:{\"items\":_vm.totalFiltersMessageTypeList,\"attach\":\"\",\"chips\":\"\",\"outlined\":\"\",\"dense\":\"\",\"multiple\":\"\",\"label\":\"Beskedtype(r)\",\"hide-details\":\"\",\"item-value\":\"value\",\"item-text\":\"label\"},model:{value:(_vm.selectedFiltersMessageTypeList),callback:function ($$v) {_vm.selectedFiltersMessageTypeList=$$v},expression:\"selectedFiltersMessageTypeList\"}}),_c('div',{staticClass:\"mt-2 ml-3 grey--text\"},[_vm._v(\"Default er Email.\")])],1)],1),_c('v-card-text',[_c('v-row',{staticClass:\"mb-1\"},[_c('div',{staticClass:\"mt-2 ml-3\"},[_vm._v(\"Send automatisk:\")]),_c('v-select',{staticClass:\"ml-3\",staticStyle:{\"max-width\":\"100px\"},attrs:{\"items\":_vm.totalFiltersYesOrNo,\"disabled\":true,\"attach\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"item-value\":\"value\",\"item-text\":\"label\"},model:{value:(_vm.selectedFiltersSendAutomatic),callback:function ($$v) {_vm.selectedFiltersSendAutomatic=$$v},expression:\"selectedFiltersSendAutomatic\"}}),_c('div',{staticClass:\"mt-2 ml-3 grey--text\"},[_vm._v(\" Feature i Beta. Kontakt gerne Adent, hvis interesseret. \")])],1),_c('v-divider',{staticClass:\"mt-6 mb-3\"})],1),_c('v-card-text',[_c('v-row',{staticClass:\"mb-1\"},[_c('div',{staticClass:\"mt-2 ml-3\"},[_vm._v(\"Prioriterede behandlinger:\")]),_c('v-select',{staticClass:\"ml-3\",staticStyle:{\"max-width\":\"500px\"},attrs:{\"items\":_vm.totalTreatmentList,\"attach\":\"\",\"chips\":\"\",\"outlined\":\"\",\"dense\":\"\",\"clearable\":\"\",\"multiple\":\"\",\"label\":\"Ydelsesgruppe(r) lig med\",\"hide-details\":\"\",\"item-value\":\"value\",\"item-text\":\"label\"},model:{value:(_vm.selectedTreatmentList),callback:function ($$v) {_vm.selectedTreatmentList=$$v},expression:\"selectedTreatmentList\"}}),_c('div',{staticClass:\"mt-2 ml-3 grey--text\"},[_vm._v(\"Valgfri\")])],1)],1),_c('v-divider',{staticClass:\"mt-4 mb-2\"}),_c('v-card-text',[_c('div',{staticClass:\"grey--text text--darken-2 mb-2 text-subtitle-1\"},[_vm._v(\" Note: Standardtakst på påmindelse-SMS: 0,60 kr. Senest ajourført 1. november 2024. \")]),_c('div',{staticClass:\"grey--text text--darken-1 text-subtitle-1\"},[_vm._v(\" Note: Vælg maks. 5-10 prioriterede behandlinger (anbefaling). Ydelsesgrupper kan bruges til at filtrere på Følg op-siden. \")])]),_c('v-divider',{staticClass:\"mt-1 mb-0\"}),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"disabled\":_vm.isLoadingSend,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.updateAmount()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"GENERIC_UPDATE\"))+\" \")])],1)],1)],1)],1)],1),_c('base-material-card',{staticClass:\"mb-16\",attrs:{\"title\":'Påmindelser'}},[_c('v-card-text',[_c('span',{staticClass:\"ml-4 grey--text text--darken-2\"},[_vm._v(\" Vælg hvilke dage, I ønsker at blive påmindet om, at I bør følge op. \")])]),_c('v-divider'),_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\" Behandlingsoverslag \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.showReminderDefault = !_vm.showReminderDefault}}},[_vm._v(\" \"+_vm._s(_vm.showReminderDefault ? \"Luk afsnit\" : \"Se mere\")+\" \")])],1),_c('v-form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showReminderDefault),expression:\"showReminderDefault\"}]},[_c('v-divider',{staticClass:\"ml-7 mt-0 mb-10\"}),_c('v-row',{staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 1\",\"thumb-label\":_vm.reminder0Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.reminder0Days),callback:function ($$v) {_vm.reminder0Days=$$v},expression:\"reminder0Days\"}})]},proxy:true}]),model:{value:(_vm.reminder0Days),callback:function ($$v) {_vm.reminder0Days=$$v},expression:\"reminder0Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.reminder0Days != _vm.reminder0DaysApi),expression:\"reminder0Days != reminder0DaysApi\"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.reminder0DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder1Days),expression:\"!hideReminder1Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder1Days),expression:\"!hideReminder1Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 2\",\"thumb-label\":_vm.reminder1Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.reminder1Days),callback:function ($$v) {_vm.reminder1Days=$$v},expression:\"reminder1Days\"}})]},proxy:true}]),model:{value:(_vm.reminder1Days),callback:function ($$v) {_vm.reminder1Days=$$v},expression:\"reminder1Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder1Days && _vm.reminder1Days != _vm.reminder1DaysApi),expression:\"!hideReminder1Days && reminder1Days != reminder1DaysApi\"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.reminder1DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder2Days),expression:\"!hideReminder2Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder2Days),expression:\"!hideReminder2Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 3\",\"thumb-label\":_vm.reminder2Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.reminder2Days),callback:function ($$v) {_vm.reminder2Days=$$v},expression:\"reminder2Days\"}})]},proxy:true}]),model:{value:(_vm.reminder2Days),callback:function ($$v) {_vm.reminder2Days=$$v},expression:\"reminder2Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder2Days && _vm.reminder2Days != _vm.reminder2DaysApi),expression:\"!hideReminder2Days && reminder2Days != reminder2DaysApi\"}]},[_c('div',{staticClass:\"ml-4 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.reminder2DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder3Days),expression:\"!hideReminder3Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder3Days),expression:\"!hideReminder3Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 4\",\"thumb-label\":_vm.reminder3Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.reminder3Days),callback:function ($$v) {_vm.reminder3Days=$$v},expression:\"reminder3Days\"}})]},proxy:true}]),model:{value:(_vm.reminder3Days),callback:function ($$v) {_vm.reminder3Days=$$v},expression:\"reminder3Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideReminder3Days && _vm.reminder3Days != _vm.reminder3DaysApi),expression:\"!hideReminder3Days && reminder3Days != reminder3DaysApi\"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.reminder3DaysApi)+\" \")])]),_c('v-divider',{staticClass:\"ml-7 mt-2 mb-5\"}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 2\"},model:{value:(_vm.hideReminder1Days),callback:function ($$v) {_vm.hideReminder1Days=$$v},expression:\"hideReminder1Days\"}}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 3\"},model:{value:(_vm.hideReminder2Days),callback:function ($$v) {_vm.hideReminder2Days=$$v},expression:\"hideReminder2Days\"}}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 4\"},model:{value:(_vm.hideReminder3Days),callback:function ($$v) {_vm.hideReminder3Days=$$v},expression:\"hideReminder3Days\"}}),_c('v-card-text',[_c('div',{staticClass:\"ml-4 grey--text text--darken-1 text-subtitle-1\"},[_vm._v(\" Note: Påmindelse 1 kan ikke slås fra. Mindst én påmindelse er nødvendig i \\\"Følg op\\\". Note: Dette sender dog ikke en besked automatisk medmindre \\\"Send automatisk\\\" er slået til. \")])])],1),_c('v-divider'),_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\" Kommune (Beta) \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.showReminderPublic = !_vm.showReminderPublic}}},[_vm._v(\" \"+_vm._s(_vm.showReminderPublic ? \"Luk afsnit\" : \"Se mere\")+\" \")])],1),_c('v-form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showReminderPublic),expression:\"showReminderPublic\"}]},[_c('v-divider',{staticClass:\"ml-7 mt-0 mb-10\"}),_c('v-row',{staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 1 (for 'Kommune')\",\"thumb-label\":_vm.publicSupportReminder0Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.publicSupportReminder0Days),callback:function ($$v) {_vm.publicSupportReminder0Days=$$v},expression:\"publicSupportReminder0Days\"}})]},proxy:true}]),model:{value:(_vm.publicSupportReminder0Days),callback:function ($$v) {_vm.publicSupportReminder0Days=$$v},expression:\"publicSupportReminder0Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n _vm.publicSupportReminder0Days != _vm.publicSupportReminder0DaysApi\n ),expression:\"\\n publicSupportReminder0Days != publicSupportReminder0DaysApi\\n \"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.publicSupportReminder0DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hidePublicSupportReminder1Days),expression:\"!hidePublicSupportReminder1Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hidePublicSupportReminder1Days),expression:\"!hidePublicSupportReminder1Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 2 (for 'Kommune')\",\"thumb-label\":_vm.publicSupportReminder1Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.publicSupportReminder1Days),callback:function ($$v) {_vm.publicSupportReminder1Days=$$v},expression:\"publicSupportReminder1Days\"}})]},proxy:true}]),model:{value:(_vm.publicSupportReminder1Days),callback:function ($$v) {_vm.publicSupportReminder1Days=$$v},expression:\"publicSupportReminder1Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n !_vm.hidePublicSupportReminder1Days &&\n _vm.publicSupportReminder1Days != _vm.publicSupportReminder1DaysApi\n ),expression:\"\\n !hidePublicSupportReminder1Days &&\\n publicSupportReminder1Days != publicSupportReminder1DaysApi\\n \"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.publicSupportReminder1DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hidePublicSupportReminder2Days),expression:\"!hidePublicSupportReminder2Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hidePublicSupportReminder2Days),expression:\"!hidePublicSupportReminder2Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 3 (for 'Kommune')\",\"thumb-label\":_vm.publicSupportReminder2Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.publicSupportReminder2Days),callback:function ($$v) {_vm.publicSupportReminder2Days=$$v},expression:\"publicSupportReminder2Days\"}})]},proxy:true}]),model:{value:(_vm.publicSupportReminder2Days),callback:function ($$v) {_vm.publicSupportReminder2Days=$$v},expression:\"publicSupportReminder2Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n !_vm.hidePublicSupportReminder2Days &&\n _vm.publicSupportReminder2Days != _vm.publicSupportReminder2DaysApi\n ),expression:\"\\n !hidePublicSupportReminder2Days &&\\n publicSupportReminder2Days != publicSupportReminder2DaysApi\\n \"}]},[_c('div',{staticClass:\"ml-4 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.publicSupportReminder2DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hidePublicSupportReminder3Days),expression:\"!hidePublicSupportReminder3Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hidePublicSupportReminder3Days),expression:\"!hidePublicSupportReminder3Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 4 (for 'Kommune')\",\"thumb-label\":_vm.publicSupportReminder3Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.publicSupportReminder3Days),callback:function ($$v) {_vm.publicSupportReminder3Days=$$v},expression:\"publicSupportReminder3Days\"}})]},proxy:true}]),model:{value:(_vm.publicSupportReminder3Days),callback:function ($$v) {_vm.publicSupportReminder3Days=$$v},expression:\"publicSupportReminder3Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n !_vm.hidePublicSupportReminder3Days &&\n _vm.publicSupportReminder3Days != _vm.publicSupportReminder3DaysApi\n ),expression:\"\\n !hidePublicSupportReminder3Days &&\\n publicSupportReminder3Days != publicSupportReminder3DaysApi\\n \"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.publicSupportReminder3DaysApi)+\" \")])]),_c('v-divider',{staticClass:\"ml-7 mt-2 mb-5\"}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 2 (for 'Kommune')\"},model:{value:(_vm.hidePublicSupportReminder1Days),callback:function ($$v) {_vm.hidePublicSupportReminder1Days=$$v},expression:\"hidePublicSupportReminder1Days\"}}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 3 (for 'Kommune')\"},model:{value:(_vm.hidePublicSupportReminder2Days),callback:function ($$v) {_vm.hidePublicSupportReminder2Days=$$v},expression:\"hidePublicSupportReminder2Days\"}}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 4 (for 'Kommune')\"},model:{value:(_vm.hidePublicSupportReminder3Days),callback:function ($$v) {_vm.hidePublicSupportReminder3Days=$$v},expression:\"hidePublicSupportReminder3Days\"}}),_c('v-card-text',[_c('div',{staticClass:\"ml-4 grey--text text--darken-1 text-subtitle-1\"},[_vm._v(\" Note: Påmindelse 1 kan ikke slås fra. Mindst én påmindelse er nødvendig i \\\"Følg op\\\". Note: Dette sender dog ikke en besked automatisk medmindre \\\"Send automatisk\\\" er slået til. \")])])],1),_c('v-divider'),_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\" Forsikring (Beta) \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.showReminderInsurance = !_vm.showReminderInsurance}}},[_vm._v(\" \"+_vm._s(_vm.showReminderInsurance ? \"Luk afsnit\" : \"Se mere\")+\" \")])],1),_c('v-form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showReminderInsurance),expression:\"showReminderInsurance\"}]},[_c('v-divider',{staticClass:\"ml-7 mt-0 mb-10\"}),_c('v-row',{staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 1 (for 'Forsikring')\",\"thumb-label\":_vm.insuranceReminder0Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.insuranceReminder0Days),callback:function ($$v) {_vm.insuranceReminder0Days=$$v},expression:\"insuranceReminder0Days\"}})]},proxy:true}]),model:{value:(_vm.insuranceReminder0Days),callback:function ($$v) {_vm.insuranceReminder0Days=$$v},expression:\"insuranceReminder0Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.insuranceReminder0Days != _vm.insuranceReminder0DaysApi),expression:\"insuranceReminder0Days != insuranceReminder0DaysApi\"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.insuranceReminder0DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideInsuranceReminder1Days),expression:\"!hideInsuranceReminder1Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideInsuranceReminder1Days),expression:\"!hideInsuranceReminder1Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 2 (for 'Forsikring')\",\"thumb-label\":_vm.insuranceReminder1Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.insuranceReminder1Days),callback:function ($$v) {_vm.insuranceReminder1Days=$$v},expression:\"insuranceReminder1Days\"}})]},proxy:true}]),model:{value:(_vm.insuranceReminder1Days),callback:function ($$v) {_vm.insuranceReminder1Days=$$v},expression:\"insuranceReminder1Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n !_vm.hideInsuranceReminder1Days &&\n _vm.insuranceReminder1Days != _vm.insuranceReminder1DaysApi\n ),expression:\"\\n !hideInsuranceReminder1Days &&\\n insuranceReminder1Days != insuranceReminder1DaysApi\\n \"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.insuranceReminder1DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideInsuranceReminder2Days),expression:\"!hideInsuranceReminder2Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideInsuranceReminder2Days),expression:\"!hideInsuranceReminder2Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 3 (for 'Forsikring')\",\"thumb-label\":_vm.insuranceReminder2Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.insuranceReminder2Days),callback:function ($$v) {_vm.insuranceReminder2Days=$$v},expression:\"insuranceReminder2Days\"}})]},proxy:true}]),model:{value:(_vm.insuranceReminder2Days),callback:function ($$v) {_vm.insuranceReminder2Days=$$v},expression:\"insuranceReminder2Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n !_vm.hideInsuranceReminder2Days &&\n _vm.insuranceReminder2Days != _vm.insuranceReminder2DaysApi\n ),expression:\"\\n !hideInsuranceReminder2Days &&\\n insuranceReminder2Days != insuranceReminder2DaysApi\\n \"}]},[_c('div',{staticClass:\"ml-4 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.insuranceReminder2DaysApi)+\" \")])]),_c('v-divider',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideInsuranceReminder3Days),expression:\"!hideInsuranceReminder3Days\"}],staticClass:\"ml-7 mt-2 mb-10\"}),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideInsuranceReminder3Days),expression:\"!hideInsuranceReminder3Days\"}],staticClass:\"mt-12\"},[_c('v-slider',{staticClass:\"ml-11 mr-8\",attrs:{\"color\":\"primary\",\"label\":\"Påmindelse 4 (for 'Forsikring')\",\"thumb-label\":_vm.insuranceReminder3Days <= 100 ? 'always' : '',\"min\":\"1\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-text-field',{staticClass:\"mt-0 pt-0\",staticStyle:{\"width\":\"60px\"},attrs:{\"hide-details\":\"\",\"single-line\":\"\",\"type\":\"number\"},model:{value:(_vm.insuranceReminder3Days),callback:function ($$v) {_vm.insuranceReminder3Days=$$v},expression:\"insuranceReminder3Days\"}})]},proxy:true}]),model:{value:(_vm.insuranceReminder3Days),callback:function ($$v) {_vm.insuranceReminder3Days=$$v},expression:\"insuranceReminder3Days\"}})],1),_c('v-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n !_vm.hideInsuranceReminder3Days &&\n _vm.insuranceReminder3Days != _vm.insuranceReminder3DaysApi\n ),expression:\"\\n !hideInsuranceReminder3Days &&\\n insuranceReminder3Days != insuranceReminder3DaysApi\\n \"}]},[_c('div',{staticClass:\"ml-11 mb-4\"},[_vm._v(\" Tidligere værdi: \"+_vm._s(_vm.insuranceReminder3DaysApi)+\" \")])]),_c('v-divider',{staticClass:\"ml-7 mt-2 mb-5\"}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 2 (for 'Forsikring')\"},model:{value:(_vm.hideInsuranceReminder1Days),callback:function ($$v) {_vm.hideInsuranceReminder1Days=$$v},expression:\"hideInsuranceReminder1Days\"}}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 3 (for 'Forsikring')\"},model:{value:(_vm.hideInsuranceReminder2Days),callback:function ($$v) {_vm.hideInsuranceReminder2Days=$$v},expression:\"hideInsuranceReminder2Days\"}}),_c('v-checkbox',{staticClass:\"ml-7 mb-0 mt-0 pt-0 pb-0\",attrs:{\"label\":\"Slå fra: Påmindelse 4 (for 'Forsikring')\"},model:{value:(_vm.hideInsuranceReminder3Days),callback:function ($$v) {_vm.hideInsuranceReminder3Days=$$v},expression:\"hideInsuranceReminder3Days\"}}),_c('v-card-text',[_c('div',{staticClass:\"ml-4 grey--text text--darken-1 text-subtitle-1\"},[_vm._v(\" Note: Påmindelse 1 kan ikke slås fra. Mindst én påmindelse er nødvendig i \\\"Følg op\\\". Note: Dette sender dog ikke en besked automatisk medmindre \\\"Send automatisk\\\" er slået til. \")])])],1),_c('v-divider'),_c('v-card-text',[_c('div',{staticClass:\"ml-4 grey--text text--darken-1 mb-2 text-subtitle-1\"},[_vm._v(\" Note: Vi anbefaler som minimum at sende en reminder (automatisk eller manuelt) til patienter på Dag 7, 14, 30 og 90. \")]),_c('div',{staticClass:\"ml-4 grey--text text--darken-1 mb-2 text-subtitle-1\"},[_vm._v(\" Note: For kommunesager i nogle kommuner, anbefaler vi Dag 14, 30, 60 og 90. Samme anbefaling gælder for 'Forsikring'. \")]),_c('div',{staticClass:\"ml-4 grey--text text--darken-1 text-subtitle-1\"},[_vm._v(\" Note: For 'Kommune' og 'Forsikring' sendes der ikke beskeder til patienten. Det er kun en intern påmindelse på klinikken. \")])]),_c('v-divider',{staticClass:\"mb-1\"}),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"disabled\":_vm.isLoadingSend,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.updateDays()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"GENERIC_UPDATE\"))+\" \")])],1)],1)],1)],1)],1)],1),_c('base-material-snackbar',_vm._b({attrs:{\"type\":\"success\",\"color\":\"success\"},model:{value:(_vm.snackbar),callback:function ($$v) {_vm.snackbar=$$v},expression:\"snackbar\"}},'base-material-snackbar',{\n top: true,\n center: true,\n },false),[_vm._v(\" \"+_vm._s(_vm.snackbarText)+\" \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import authAxios from '@/helpers/axios'\n\n// import OrganizationInfo from './data/OrganizationInfo'\nimport parserUtils from '@/views/dashboard/components/lists/utils/parserUtils'\n\nconst getters = {\n}\n\nconst initialState = {\n // organizationInfo: JSON.parse(JSON.stringify(OrganizationInfo)),\n uuid: null,\n dentistList: [],\n systemInitialList: [],\n amountCall: null,\n amountMessage: null,\n reminder0Days: null,\n reminder1Days: null,\n reminder2Days: null,\n reminder3Days: null,\n publicSupportReminder0Days: null,\n publicSupportReminder1Days: null,\n publicSupportReminder2Days: null,\n publicSupportReminder3Days: null,\n insuranceReminder0Days: null,\n insuranceReminder1Days: null,\n insuranceReminder2Days: null,\n insuranceReminder3Days: null,\n messageTypeList: [],\n treatmentGroupList: [],\n}\n\nconst mutations = {\n setOrganizationFromApi(state, payload) {\n state.uuid = payload.uuid\n state.amountCall = payload.amount_threshold_to_call\n state.amountMessage = payload.amount_threshold_to_message\n state.reminder0Days = payload.reminder_0_days\n state.reminder1Days = payload.reminder_1_days\n state.reminder2Days = payload.reminder_2_days\n state.reminder3Days = payload.reminder_3_days\n state.publicSupportReminder0Days = payload.public_support_reminder_0_days\n state.publicSupportReminder1Days = payload.public_support_reminder_1_days\n state.publicSupportReminder2Days = payload.public_support_reminder_2_days\n state.publicSupportReminder3Days = payload.public_support_reminder_3_days\n state.insuranceReminder0Days = payload.insurance_reminder_0_days\n state.insuranceReminder1Days = payload.insurance_reminder_1_days\n state.insuranceReminder2Days = payload.insurance_reminder_2_days\n state.insuranceReminder3Days = payload.insurance_reminder_3_days\n state.messageTypeList = payload.message_type_list ?? []\n state.treatmentGroupList = payload.primary_treatment_group_list ?? []\n },\n // setOrganization(state, payload) {\n // state.organizationInfo = payload\n // },\n setDentistList(state, payload) {\n state.dentistList = payload\n },\n setSystemInitialList(state, payload) {\n state.systemInitialList = payload\n },\n clear(state) {\n Object.assign(state, initialState)\n },\n}\n\nconst actions = {\n async get({ commit, dispatch }) {\n /** Returns a base information related to the clinic (for the clinic).\n */\n const organization = await dispatch('auth/getOrg', null, { root: true })\n const organizationUuid = organization.uuid\n\n const endpoint = `${process.env.VUE_APP_API_ASSESSMENTS_URL}/clinics/${organizationUuid}/get_organization_by_uuid/`\n\n let queryParams = {\n include_dentist_list: true,\n include_system_initials_list: true,\n }\n\n let response\n try {\n response = await authAxios.get(endpoint, { params: queryParams })\n } catch (e) {\n const errMsg = 'Error fetching info'\n if (e.response !== undefined) {\n console.log(`${errMsg}`, e.response.data)\n }\n }\n\n const data = response.data.data\n const attribs = data.attributes\n const rels = data.relationships\n\n const dentistListJson = !rels.dentist_list ? [] : rels.dentist_list.data\n const dentistList = await parserUtils.parseDentistList({ items: dentistListJson })\n\n const systemInitialListJson = !rels.system_initials_list ? [] : rels.system_initials_list.data\n const systemInitialList = await parserUtils.parseSystemInitialList({ items: systemInitialListJson })\n\n // const groupListJson = !rels.primary_treatment_group_list ? [] : rels.primary_treatment_group_list.data\n // const groupList = parserUtils.parseTreatmentGroupList({ items: groupListJson })\n commit('setDentistList', dentistList)\n commit('setSystemInitialList', systemInitialList)\n commit('setOrganizationFromApi', attribs)\n },\n\n async _updateOrganizationApi({ _ }, {\n uuid,\n amountCall,\n amountMessage,\n messageTypeList,\n treatmentGroupList,\n reminder0Days,\n reminder1Days,\n reminder2Days,\n reminder3Days,\n publicSupportReminder0Days,\n publicSupportReminder1Days,\n publicSupportReminder2Days,\n publicSupportReminder3Days,\n insuranceReminder0Days,\n insuranceReminder1Days,\n insuranceReminder2Days,\n insuranceReminder3Days,\n dentistUuid: dentistUuid,\n dentistEmail: dentistEmail,\n }) {\n const data = {\n data: {\n type: 'dental-clinics',\n attributes: {\n organization_uuid: uuid,\n amount_threshold_to_call: amountCall,\n amount_threshold_to_message: amountMessage,\n message_type_list: messageTypeList,\n treatment_group_list: treatmentGroupList,\n reminder_0_days: reminder0Days,\n reminder_1_days: reminder1Days,\n reminder_2_days: reminder2Days,\n reminder_3_days: reminder3Days,\n public_support_reminder_0_days: publicSupportReminder0Days,\n public_support_reminder_1_days: publicSupportReminder1Days,\n public_support_reminder_2_days: publicSupportReminder2Days,\n public_support_reminder_3_days: publicSupportReminder3Days,\n insurance_reminder_0_days: insuranceReminder0Days,\n insurance_reminder_1_days: insuranceReminder1Days,\n insurance_reminder_2_days: insuranceReminder2Days,\n insurance_reminder_3_days: insuranceReminder3Days,\n dentist_uuid: dentistUuid,\n dentist_email: dentistEmail,\n },\n },\n }\n return authAxios.post(`${process.env.VUE_APP_API_ASSESSMENTS_URL}/clinics/update_organization_information/`, data)\n },\n\n updateAmountApi({ state, dispatch }, {\n amountCall,\n amountMessage,\n messageTypeList,\n treatmentGroupList,\n }) {\n const uuid = state.uuid\n dispatch('_updateOrganizationApi', {\n uuid: uuid,\n amountCall: amountCall,\n amountMessage: amountMessage,\n messageTypeList: messageTypeList,\n treatmentGroupList: treatmentGroupList,\n })\n },\n\n updateDaysApi({ state, dispatch }, {\n reminder0Days,\n reminder1Days,\n reminder2Days,\n reminder3Days,\n publicSupportReminder0Days,\n publicSupportReminder1Days,\n publicSupportReminder2Days,\n publicSupportReminder3Days,\n insuranceReminder0Days,\n insuranceReminder1Days,\n insuranceReminder2Days,\n insuranceReminder3Days,\n }) {\n const uuid = state.uuid\n dispatch('_updateOrganizationApi', {\n uuid: uuid,\n reminder0Days: reminder0Days,\n reminder1Days: reminder1Days,\n reminder2Days: reminder2Days,\n reminder3Days: reminder3Days,\n publicSupportReminder0Days: publicSupportReminder0Days,\n publicSupportReminder1Days: publicSupportReminder1Days,\n publicSupportReminder2Days: publicSupportReminder2Days,\n publicSupportReminder3Days: publicSupportReminder3Days,\n insuranceReminder0Days: insuranceReminder0Days,\n insuranceReminder1Days: insuranceReminder1Days,\n insuranceReminder2Days: insuranceReminder2Days,\n insuranceReminder3Days: insuranceReminder3Days,\n })\n },\n\n updateDentistApi({ state, dispatch }, {\n dentistUuid,\n dentistEmail,\n }) {\n const uuid = state.uuid\n dispatch('_updateOrganizationApi', {\n uuid: uuid,\n dentistUuid: dentistUuid,\n dentistEmail: dentistEmail,\n })\n },\n}\n\nexport default {\n namespaced: true,\n getters,\n state: { ...initialState },\n actions,\n mutations,\n}\n","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Organization.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Organization.vue?vue&type=script&lang=js&\"","import './VSlider.sass'\n\n// Components\nimport VInput from '../VInput'\nimport { VScaleTransition } from '../transitions'\n\n// Mixins\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { ScopedSlotChildren } from 'vue/types/vnode'\nimport { PropValidator } from 'vue/types/options'\n\ninterface options extends Vue {\n $refs: {\n track: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n VInput,\n Loadable\n/* @vue/component */\n).extend({\n name: 'v-slider',\n\n directives: {\n ClickOutside,\n },\n\n mixins: [Loadable],\n\n props: {\n disabled: Boolean,\n inverseLabel: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 1,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 32,\n },\n tickLabels: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ticks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n trackColor: String,\n trackFillColor: String,\n value: [Number, String],\n vertical: Boolean,\n },\n\n data: () => ({\n app: null as any,\n oldValue: null as any,\n thumbPressed: false,\n mouseTimeout: -1,\n isFocused: false,\n isActive: false,\n noClick: false, // Prevent click event if dragging took place, hack for #7915\n startOffset: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input__slider': true,\n 'v-input__slider--vertical': this.vertical,\n 'v-input__slider--inverse-label': this.inverseLabel,\n }\n },\n internalValue: {\n get (): number {\n return this.lazyValue\n },\n set (val: number) {\n val = isNaN(val) ? this.minValue : val\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue))\n\n if (value === this.lazyValue) return\n\n this.lazyValue = value\n\n this.$emit('input', value)\n },\n },\n trackTransition (): string {\n return this.thumbPressed\n ? this.showTicks || this.stepNumeric\n ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)'\n : 'none'\n : ''\n },\n minValue (): number {\n return parseFloat(this.min)\n },\n maxValue (): number {\n return parseFloat(this.max)\n },\n stepNumeric (): number {\n return this.step > 0 ? parseFloat(this.step) : 0\n },\n inputWidth (): number {\n const inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100\n\n return isNaN(inputWidth) ? 0 : inputWidth\n },\n trackFillStyles (): Partial {\n const startDir = this.vertical ? 'bottom' : 'left'\n const endDir = this.vertical ? 'top' : 'right'\n const valueDir = this.vertical ? 'height' : 'width'\n\n const start = this.$vuetify.rtl ? 'auto' : '0'\n const end = this.$vuetify.rtl ? '0' : 'auto'\n const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n [valueDir]: value,\n }\n },\n trackStyles (): Partial {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = '0px'\n const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n showTicks (): boolean {\n return this.tickLabels.length > 0 ||\n !!(!this.isDisabled && this.stepNumeric && this.ticks)\n },\n numTicks (): number {\n return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric)\n },\n showThumbLabel (): boolean {\n return !this.isDisabled && !!(\n this.thumbLabel ||\n this.$scopedSlots['thumb-label']\n )\n },\n computedTrackColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackColor) return this.trackColor\n if (this.isDark) return this.validationState\n return this.validationState || 'primary lighten-3'\n },\n computedTrackFillColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackFillColor) return this.trackFillColor\n return this.validationState || this.computedColor\n },\n computedThumbColor (): string | undefined {\n if (this.thumbColor) return this.thumbColor\n return this.validationState || this.computedColor\n },\n },\n\n watch: {\n min (val) {\n const parsed = parseFloat(val)\n parsed > this.internalValue && this.$emit('input', parsed)\n },\n max (val) {\n const parsed = parseFloat(val)\n parsed < this.internalValue && this.$emit('input', parsed)\n },\n value: {\n handler (v: number) {\n this.internalValue = v\n },\n },\n },\n\n // If done in as immediate in\n // value watcher, causes issues\n // with vue-test-utils\n beforeMount () {\n this.internalValue = this.value\n },\n\n mounted () {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') ||\n consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this)\n },\n\n methods: {\n genDefaultSlot (): VNodeChildrenArrayContents {\n const children: VNodeChildrenArrayContents = [this.genLabel()]\n const slider = this.genSlider()\n this.inverseLabel\n ? children.unshift(slider)\n : children.push(slider)\n\n children.push(this.genProgress())\n\n return children\n },\n genSlider (): VNode {\n return this.$createElement('div', {\n class: {\n 'v-slider': true,\n 'v-slider--horizontal': !this.vertical,\n 'v-slider--vertical': this.vertical,\n 'v-slider--focused': this.isFocused,\n 'v-slider--active': this.isActive,\n 'v-slider--disabled': this.isDisabled,\n 'v-slider--readonly': this.isReadonly,\n ...this.themeClasses,\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur,\n }],\n on: {\n click: this.onSliderClick,\n mousedown: this.onSliderMouseDown,\n touchstart: this.onSliderMouseDown,\n },\n }, this.genChildren())\n },\n genChildren (): VNodeChildrenArrayContents {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n this.genThumbContainer(\n this.internalValue,\n this.inputWidth,\n this.isActive,\n this.isFocused,\n this.onFocus,\n this.onBlur,\n ),\n ]\n },\n genInput (): VNode {\n return this.$createElement('input', {\n attrs: {\n value: this.internalValue,\n id: this.computedId,\n disabled: true,\n readonly: true,\n tabindex: -1,\n ...this.$attrs,\n },\n // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n })\n },\n genTrackContainer (): VNode {\n const children = [\n this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track-background',\n style: this.trackStyles,\n })),\n this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles,\n })),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genSteps (): VNode | null {\n if (!this.step || !this.showTicks) return null\n\n const tickSize = parseFloat(this.tickSize)\n const range = createRange(this.numTicks + 1)\n const direction = this.vertical ? 'bottom' : (this.$vuetify.rtl ? 'right' : 'left')\n const offsetDirection = this.vertical ? (this.$vuetify.rtl ? 'left' : 'right') : 'top'\n\n if (this.vertical) range.reverse()\n\n const ticks = range.map(index => {\n const children = []\n\n if (this.tickLabels[index]) {\n children.push(this.$createElement('div', {\n staticClass: 'v-slider__tick-label',\n }, this.tickLabels[index]))\n }\n\n const width = index * (100 / this.numTicks)\n const filled = this.$vuetify.rtl ? (100 - this.inputWidth) < width : width < this.inputWidth\n\n return this.$createElement('span', {\n key: index,\n staticClass: 'v-slider__tick',\n class: {\n 'v-slider__tick--filled': filled,\n },\n style: {\n width: `${tickSize}px`,\n height: `${tickSize}px`,\n [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n [offsetDirection]: `calc(50% - ${tickSize / 2}px)`,\n },\n }, children)\n })\n\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container',\n class: {\n 'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0,\n },\n }, ticks)\n },\n genThumbContainer (\n value: number,\n valueWidth: number,\n isActive: boolean,\n isFocused: boolean,\n onFocus: Function,\n onBlur: Function,\n ref = 'thumb'\n ): VNode {\n const children = [this.genThumb()]\n\n const thumbLabelContent = this.genThumbLabelContent(value)\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent))\n\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n ref,\n key: ref,\n staticClass: 'v-slider__thumb-container',\n class: {\n 'v-slider__thumb-container--active': isActive,\n 'v-slider__thumb-container--focused': isFocused,\n 'v-slider__thumb-container--show-label': this.showThumbLabel,\n },\n style: this.getThumbContainerStyles(valueWidth),\n attrs: {\n role: 'slider',\n tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n 'aria-label': this.$attrs['aria-label'] || this.label,\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.internalValue,\n 'aria-readonly': String(this.isReadonly),\n 'aria-orientation': this.vertical ? 'vertical' : 'horizontal',\n },\n on: {\n focus: onFocus,\n blur: onBlur,\n keydown: this.onKeyDown,\n },\n }), children)\n },\n genThumbLabelContent (value: number | string): ScopedSlotChildren {\n return this.$scopedSlots['thumb-label']\n ? this.$scopedSlots['thumb-label']!({ value })\n : [this.$createElement('span', [String(value)])]\n },\n genThumbLabel (content: ScopedSlotChildren): VNode {\n const size = convertToUnit(this.thumbSize)\n\n const transform = this.vertical\n ? `translateY(20%) translateY(${(Number(this.thumbSize) / 3) - 1}px) translateX(55%) rotate(135deg)`\n : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`\n\n return this.$createElement(VScaleTransition, {\n props: { origin: 'bottom center' },\n }, [\n this.$createElement('div', {\n staticClass: 'v-slider__thumb-label-container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always',\n }],\n }, [\n this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size,\n transform,\n },\n }), [this.$createElement('div', content)]),\n ]),\n ])\n },\n genThumb (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb',\n }))\n },\n getThumbContainerStyles (width: number): object {\n const direction = this.vertical ? 'top' : 'left'\n let value = this.$vuetify.rtl ? 100 - width : width\n value = this.vertical ? 100 - value : value\n\n return {\n transition: this.trackTransition,\n [direction]: `${value}%`,\n }\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderMouseUp (e: Event) {\n e.stopPropagation()\n window.clearTimeout(this.mouseTimeout)\n this.thumbPressed = false\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n\n this.$emit('mouseup', e)\n this.$emit('end', this.internalValue)\n if (!deepEqual(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue)\n this.noClick = true\n }\n\n this.isActive = false\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n this.internalValue = this.parseMouseMove(e)\n },\n onKeyDown (e: KeyboardEvent) {\n if (!this.isInteractive) return\n\n const value = this.parseKeyDown(e, this.internalValue)\n\n if (\n value == null ||\n value < this.minValue ||\n value > this.maxValue\n ) return\n\n this.internalValue = value\n this.$emit('change', value)\n },\n onSliderClick (e: MouseEvent) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n const thumb = this.$refs.thumb as HTMLElement\n thumb.focus()\n\n this.onMouseMove(e)\n this.$emit('change', this.internalValue)\n },\n onBlur (e: Event) {\n this.isFocused = false\n\n this.$emit('blur', e)\n },\n onFocus (e: Event) {\n this.isFocused = true\n\n this.$emit('focus', e)\n },\n parseMouseMove (e: MouseEvent | TouchEvent) {\n const start = this.vertical ? 'top' : 'left'\n const length = this.vertical ? 'height' : 'width'\n const click = this.vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = this.$refs.track.getBoundingClientRect()\n const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0\n\n if (this.vertical) clickPos = 1 - clickPos\n if (this.$vuetify.rtl) clickPos = 1 - clickPos\n\n return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue)\n },\n parseKeyDown (e: KeyboardEvent, value: number) {\n if (!this.isInteractive) return\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyCodes\n\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return\n\n e.preventDefault()\n const step = this.stepNumeric || 1\n const steps = (this.maxValue - this.minValue) / step\n if ([left, right, down, up].includes(e.keyCode)) {\n const increase = this.$vuetify.rtl ? [left, up] : [right, up]\n const direction = increase.includes(e.keyCode) ? 1 : -1\n const multiplier = e.shiftKey ? 3 : (e.ctrlKey ? 2 : 1)\n\n value = value + (direction * step * multiplier)\n } else if (e.keyCode === home) {\n value = this.minValue\n } else if (e.keyCode === end) {\n value = this.maxValue\n } else {\n const direction = e.keyCode === pagedown ? 1 : -1\n value = value - (direction * step * (steps > 100 ? steps / 10 : 10))\n }\n\n return value\n },\n roundValue (value: number): number {\n if (!this.stepNumeric) return value\n // Format input value using the same number\n // of decimals places as in the step prop\n const trimmedStep = this.step.toString().trim()\n const decimals = trimmedStep.indexOf('.') > -1\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n const offset = this.minValue % this.stepNumeric\n\n const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset\n\n return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals))\n },\n },\n})\n","import { render, staticRenderFns } from \"./Organization.vue?vue&type=template&id=576de9fa&\"\nimport script from \"./Organization.vue?vue&type=script&lang=js&\"\nexport * from \"./Organization.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCardActions,VCardText,VCardTitle,VCheckbox,VCol,VContainer,VDivider,VForm,VRow,VSelect,VSlider,VSpacer,VTextField,VToolbar,VToolbarTitle})\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n","export default [\n // NOTE: `value` and `format` is aligned with API\n {\n title: \"DOCUMENT_TYPE_TREATMENT_SUGGESTION_TITLE\",\n color: \"black\",\n value: \"treatment\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_BILL_TITLE\",\n color: \"black\",\n value: \"bill\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_INSTRUCTIONS_TITLE\",\n color: \"black\",\n value: \"instruction\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_JOURNAL_TITLE\",\n color: \"black\",\n value: \"journal_item\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_OTHER_PDF_TITLE\",\n color: \"black\",\n value: \"other_pdf\",\n format: \"pdf\",\n },\n // {\n // title: 'Røntgenbillede (JPG)',\n // value: '',\n // format: 'jpg',\n // },\n {\n title: \"No attachment\",\n color: \"red\",\n value: \"\",\n format: \"\",\n },\n]","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","import PatientDocumentOptions from \"@/store/static/PatientDocumentOptions\";\nimport dateUtils from '@/helpers/date-utils';\nimport i18n from '@/i18n'\n\nconst TREATMENT_TYPE__PLANNED = \"planned\"\nconst TREATMENT_TYPE__COMPLETED = \"completed\"\n\nconst parserUtils = {\n parseApiPayloadToAssessmentDataTableList(payload) {\n /** Converts a *standardized* API payload to a *standardized* assessment\n *\n * DEVELOPER NOTE:\n * This is a SUPER coupled implementation. Break it as soon as it\n * becomes constraining, but the intention is to help keep\n * assessment lists aligned and avoid regression (i.e. forgetting\n * to update one place when others are updated):\n *\n * - Assessment list for all patients\n * - Assessment list for individual patients\n *\n * Typical use case: When updating one place, we are 'forced' to come\n * here (probably why you are reading it now), and please search the\n * repo for the above function name to get reminded where similar lists\n * might need to be updated.\n */\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const relatedImageAsJsonApi = relationships.uploaded_images.data\n\n let color = 'warning'\n let status = 'Pending Consult'\n const isPending = attribs.is_pending\n const isAnamnesisQuestionnaire = attribs.is_anamnesis_questionnaire\n const isJournalized = attribs.is_journalized ?? attribs.is_journalized_by_clinic;\n if (isAnamnesisQuestionnaire) {\n color = 'grey'\n status = 'No action needed'\n } else if (isJournalized) {\n color = 'success'\n status = 'Journalized'\n } else if (!isPending) {\n color = 'success'\n status = 'Handled'\n }\n\n const imageUrls = []\n const guiUrls = []\n const thumbnailUrls = []\n let j = 0\n for (j in relatedImageAsJsonApi) {\n const imageResource = relatedImageAsJsonApi[j]\n const url = imageResource.attributes.url\n const guiUrl = imageResource.attributes.gui_url\n const thumbnailUrl = imageResource.attributes.thumbnail_url\n imageUrls.push(url)\n guiUrls.push(guiUrl)\n thumbnailUrls.push(thumbnailUrl)\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const now = new Date();\n const diffInMs = !!_createdAt ? now - _createdAt : 0;\n const diffInHours = diffInMs / 3600000;\n const roundedDiffInHours = diffInHours.toFixed(1)\n\n const item = {\n uuid: attribs.uuid,\n name: attribs.name,\n createdAt: createdAt,\n date: createdAtDate,\n diffInHours: roundedDiffInHours,\n status: status,\n color: color,\n isUserVerifiedByClinic: attribs.is_user_verified_by_clinic,\n isFromAdentAssessmentWidget: attribs.is_from_adent_assessment_widget,\n isAnamnesisQuestionnaire: isAnamnesisQuestionnaire,\n isJournalized: isJournalized,\n imageUrls: imageUrls,\n guiUrls: guiUrls,\n thumbnailUrls: thumbnailUrls,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n parseApiPayloadToMedicalHistoryDataTableList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = patient.attributes.phone_number\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const supportId = patient.attributes.cognito_id.slice(0, 8)\n patientFullname = `Navn mangler (Support id: ${supportId})`\n }\n\n const _createdAt = new Date(attribs.created_at)\n const createdAt = _createdAt.getTime()\n const createdAtDate = _createdAt.toLocaleDateString('da-DK', dateOptions);\n\n const _updatedAt = new Date(attribs.updated_at)\n const updatedAt = _updatedAt.getTime()\n const updatedAtDate = _updatedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _completedAt = new Date(attribs.completed_at)\n const completedAt = _completedAt.getTime()\n const completedAtDate = _completedAt.toLocaleDateString('da-DK', dateOptions);\n\n let sortableAt = completedAt;\n if (!isValidDate(_completedAt)) {\n sortableAt = createdAt;\n }\n\n const item = {\n uuid: attribs.uuid,\n name: patientFullname,\n createdAt: createdAt,\n updatedAt: updatedAt,\n completedAt: completedAt,\n date: completedAtDate,\n sortableAt: sortableAt,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n isJournalizedByConnector: attribs.is_journalized_by_connector,\n updatedAtDate: updatedAtDate,\n createdAtDate: createdAtDate,\n completedAtDate: completedAtDate,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n parseApiPayloadToInstallmentDataTableList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n const supportId = attribs.uuid.slice(0, 8);\n\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = patient.attributes.phone_number\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const cognitoId = patient.attributes.cognito_id.slice(0, 8)\n patientFullname = `Navn mangler (Support id: ${cognitoId})`\n }\n\n const _createdAt = new Date(attribs.created_at)\n const createdAt = _createdAt.getTime()\n const createdAtDate = _createdAt.toLocaleDateString('da-DK', dateOptions);\n\n const _updatedAt = new Date(attribs.updated_at)\n const updatedAtDate = _updatedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _sentAt = new Date(attribs.sent_at)\n const sentAtDate = _sentAt.toLocaleDateString('da-DK', dateOptions);\n\n const _confirmedAt = attribs.confirmed_at == null ? null : new Date(attribs.confirmed_at)\n const confirmedAtDate = _confirmedAt == null ? null : _confirmedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _initialPaymentReceivedAt = attribs.initial_payment_received_at == null ? null : new Date(attribs.initial_payment_received_at)\n const initialPaymentReceivedAtDate = _initialPaymentReceivedAt == null ? null : _initialPaymentReceivedAt.toLocaleDateString('da-DK', dateOptions);\n\n const item = {\n uuid: attribs.uuid,\n name: patientFullname,\n createdAt: createdAt,\n date: createdAtDate,\n createdAtDate: createdAtDate,\n updatedAtDate: updatedAtDate,\n isSent: attribs.is_sent,\n isConfirmed: attribs.is_confirmed,\n confirmedAt: confirmedAtDate,\n isInitialPaymentReceived: attribs.is_initial_payment_received,\n initialPaymentReceivedAt: initialPaymentReceivedAtDate,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n sentAtDate: sentAtDate,\n supportId: supportId,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n async groupByDocumentType({\n items,\n fallbackTitle = 'ٴ Øvrig: Uden kategori', // @sortprefix: Note the arabic prefix for alphatic sort\n allowSubgroup = false,\n primarySubgroupKey = 'byInitial',\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const categoryUuid = item.documentType\n const categoryTitle = item.documentTitle ?? fallbackTitle\n const categoryPrecedence = !item ? 0 : (item.precedence ?? 0)\n\n groupDict = await this._addToGroupDocumentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n let asList1 = []\n for (let j in asList0) {\n const elem = asList0[j]\n if (allowSubgroup) {\n const byInitial = await this.groupBySystemInitial({\n items: elem.items,\n allowSubgroup: false,\n })\n elem['byInitial'] = byInitial\n elem['subgroup'] = elem[primarySubgroupKey]\n }\n asList1.push(elem)\n }\n\n return asList1.sort((a, b) => (b.precedence ?? 0) - (a.precedence ?? 0))\n },\n\n parseDocumentList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n const supportId = attribs.uuid.slice(0, 8);\n\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = !!patient ? patient.attributes.phone_number : null\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const cognitoId = !!patient ? patient.attributes.cognito_id.slice(0, 8) : null\n patientFullname = `Navn mangler (Support id: ${cognitoId})`\n }\n\n const _createdAt = new Date(attribs.created_at)\n const createdAt = _createdAt.getTime()\n const createdAtDate = _createdAt.toLocaleDateString('da-DK', dateOptions);\n\n const _updatedAt = new Date(attribs.updated_at)\n const updatedAtDate = _updatedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _sentAt = new Date(attribs.sent_at)\n const sentAtDate = _sentAt.toLocaleDateString('da-DK', dateOptions);\n\n const _confirmedAt = attribs.confirmed_at == null ? null : new Date(attribs.confirmed_at)\n const confirmedAtDate = _confirmedAt == null ? null : _confirmedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _rejectedAt = attribs.rejected_at == null ? null : new Date(attribs.rejected_at)\n const rejectedAtDate = _rejectedAt == null ? null : _rejectedAt.toLocaleDateString('da-DK', dateOptions);\n\n const documentType = attribs.document_type;\n const documentText = this.getDocumentText({ documentType: documentType });\n const documentTitle = documentText.title\n const documentPrecedence = documentText.precedence\n\n const item = {\n uuid: attribs.uuid,\n name: patientFullname,\n documentType: documentType,\n documentTitle: documentTitle,\n precedence: documentPrecedence,\n createdAt: createdAt,\n date: createdAtDate,\n createdAtDate: createdAtDate,\n updatedAtDate: updatedAtDate,\n isSent: attribs.is_sent,\n isConfirmed: attribs.is_confirmed,\n confirmedAt: confirmedAtDate,\n isRejected: attribs.is_rejected,\n rejectedAt: rejectedAtDate,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n sentAtDate: sentAtDate,\n amountTotal: attribs.amount_total,\n url: attribs.url,\n supportId: supportId,\n systemInitial: attribs.system_user_initials,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n\n parseInstructionList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n const dateOptionsShort = { month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n const instructionCard = relationships.instruction_card.data\n\n const imageListJson = relationships.images.data\n const imageList = this._parseImageList({ payload: imageListJson })\n const imagePovList = this._parseimagePovList({ payload: imageListJson })\n\n const shareLogListJson = !relationships.share_logs ? [] : relationships.share_logs.data\n const shareLogList = this._parseShareLogList({ payload: shareLogListJson })\n\n const digitalConsultListJson = relationships.digital_consult_logs.data\n const digitalConsultList = this._parseDigitalConsultList({ payload: digitalConsultListJson })\n\n const cognitoId = !!patient ? patient.attributes.cognito_id : null\n\n let patientFirstname = !!patient ? patient.attributes.first_name : null\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = !!patient ? patient.attributes.phone_number : null\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const supportId = cognitoId.slice(0, 8)\n patientFullname = `Navn mangler (Support id: ${supportId})`\n }\n\n let instructionCardUuid = null\n let instructionCardTitle = null\n if (!!instructionCard) {\n instructionCardUuid = instructionCard.attributes.uuid\n instructionCardTitle = instructionCard.attributes.title_da\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n const createdAtDateShort = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _updatedAt = !!attribs.updated_at ? new Date(attribs.updated_at) : null;\n const updatedAt = !!_updatedAt ? _updatedAt.getTime() : null;\n const updatedAtDate = !!_updatedAt ? _updatedAt.toLocaleDateString('da-DK', dateOptions) : null;\n const updatedAtDateShort = !!_updatedAt ? _updatedAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _sentAt = !!attribs.sent_at ? new Date(attribs.sent_at) : null;\n const sentAt = !!_sentAt ? _sentAt.getTime() : null;\n const sentAtDate = !!_sentAt ? _sentAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _completedAt = !!attribs.completed_at ? new Date(attribs.completed_at) : null;\n const completedAt = !!_completedAt ? _completedAt.getTime() : null;\n const completedAtDate = !!_completedAt ? _completedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _confirmedAt = !!attribs.confirmed_at ? new Date(attribs.confirmed_at) : null;\n const confirmedAt = !!_confirmedAt ? _confirmedAt.getTime() : null;\n const confirmedAtDate = !!_confirmedAt ? _confirmedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _openedAt = !!attribs.opened_at ? new Date(attribs.opened_at) : null;\n const openedAt = !!_openedAt ? _openedAt.getTime() : null;\n const openedAtDate = !!_openedAt ? _openedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _bookmarkedAt = !!attribs.bookmarked_at ? new Date(attribs.bookmarked_at) : null;\n const bookmarkedAt = !!_bookmarkedAt ? _bookmarkedAt.getTime() : null;\n const bookmarkedAtDate = !!_bookmarkedAt ? _bookmarkedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _nextDigitalConsultAt = !!attribs.next_digital_consult_at ? new Date(attribs.next_digital_consult_at) : null;\n const nextDigitalConsultAt = !!_nextDigitalConsultAt ? _nextDigitalConsultAt.getTime() : null;\n const nextDigitalConsultAtDate = !!_nextDigitalConsultAt ? _nextDigitalConsultAt.toLocaleDateString('da-DK', dateOptions) : null;\n const nextDigitalConsultAtDateShort = !!_nextDigitalConsultAt ? _nextDigitalConsultAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _latestDigitalConsultAt = !!attribs.latest_digital_consult_at ? new Date(attribs.latest_digital_consult_at) : null;\n const latestDigitalConsultAt = !!_latestDigitalConsultAt ? _latestDigitalConsultAt.getTime() : null;\n const latestDigitalConsultAtDate = !!_latestDigitalConsultAt ? _latestDigitalConsultAt.toLocaleDateString('da-DK', dateOptions) : null;\n const latestDigitalConsultAtDateShort = !!_latestDigitalConsultAt ? _latestDigitalConsultAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _latestImageReceivedAt = !!attribs.latest_image_received_at ? new Date(attribs.latest_image_received_at) : null;\n const latestImageReceivedAt = !!_latestImageReceivedAt ? _latestImageReceivedAt.getTime() : null;\n const latestImageReceivedAtDate = !!_latestImageReceivedAt ? _latestImageReceivedAt.toLocaleDateString('da-DK', dateOptions) : null;\n const latestImageReceivedAtDateShort = !!_latestImageReceivedAt ? _latestImageReceivedAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _journalizedAt = !!attribs.journalized_at ? new Date(attribs.journalized_at) : null;\n const journalizedAt = !!_journalizedAt ? _journalizedAt.getTime() : null;\n const journalizedAtDate = !!_journalizedAt ? _journalizedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _beforeScanCompletedAt = !!attribs.before_scan_completed_at ? new Date(attribs.beforeScanCompleted_at) : null;\n const beforeScanCompletedAt = !!_beforeScanCompletedAt ? _beforeScanCompletedAt.getTime() : null;\n const beforeScanCompletedAtDate = !!_beforeScanCompletedAt ? _beforeScanCompletedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _afterScanCompletedAt = !!attribs.after_scan_completed_at ? new Date(attribs.afterScanCompleted_at) : null;\n const afterScanCompletedAt = !!_afterScanCompletedAt ? _afterScanCompletedAt.getTime() : null;\n const afterScanCompletedAtDate = !!_afterScanCompletedAt ? _afterScanCompletedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _latestScanCompletedAt = !!attribs.latest_scan_completed_at ? new Date(attribs.latest_scan_completed_at) : null;\n const latestScanCompletedAt = !!_latestScanCompletedAt ? _latestScanCompletedAt.getTime() : null;\n const latestScanCompletedAtDate = !!_latestScanCompletedAt ? _latestScanCompletedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const latestMessageToPatientSentAtRaw = attribs.latest_message_to_patient_sent_at_raw;\n const latestMessageToPatientSentAtTitle = attribs.latest_message_to_patient_sent_at_title;\n const _latestMessageToPatientSentAt = !!attribs.latest_scan_completed_at ? new Date(attribs.latest_message_to_patient_sent_at) : null;\n const latestMessageToPatientSentAt = !!_latestMessageToPatientSentAt ? _latestMessageToPatientSentAt.getTime() : null;\n const latestMessageToPatientSentAtDate = !!_latestMessageToPatientSentAt ? _latestMessageToPatientSentAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const hasAnyImageReady = attribs.has_any_image_ready\n const completedScanCount = attribs.completed_scan_count\n\n const isAutomaticallyUpdatedSinceViewed = attribs.is_automatically_updated_since_viewed;\n const automaticallyUpdatedSinceViewedRaw = attribs.automatically_updated_since_viewed_raw;\n const automaticallyUpdatedSinceViewedTitle = attribs.automatically_updated_since_viewed_title;\n const _automaticallyUpdatedSinceViewedAt = !!attribs.automatically_updated_since_viewed_at ? new Date(attribs.automatically_updated_since_viewed_at) : null;\n const automaticallyUpdatedSinceViewedAt = !!_automaticallyUpdatedSinceViewedAt ? _automaticallyUpdatedSinceViewedAt.getTime() : null;\n const automaticallyUpdatedSinceViewedAtDate = !!_automaticallyUpdatedSinceViewedAt ? _automaticallyUpdatedSinceViewedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _noteLog = attribs.note_log\n const noteLog = this._parseNoteLog(_noteLog);\n\n const _clinic = relationships.clinic.data\n const clinicAttribs = _clinic.attributes\n const clinicRels = _clinic.relationships\n const instructionSmsTemplates = clinicAttribs.instruction_sms_templates ?? []\n const instructionInternalMessageTemplates = clinicAttribs.instruction_internal_message_templates ?? []\n const clinicEmail = clinicAttribs.email\n\n let _recipientEmails = [];\n if (!!clinicRels && !!clinicRels.organization && !!clinicRels.organization.data) {\n const organizationAttribs = clinicRels.organization.data.attributes\n _recipientEmails = organizationAttribs.recipient_emails ?? [];\n }\n _recipientEmails.push(clinicEmail);\n const recipientEmails = [...new Set(_recipientEmails)];\n\n const item = {\n uuid: attribs.uuid,\n title: instructionCardTitle,\n name: patientFullname,\n firstname: patientFirstname,\n cognitoId: cognitoId,\n isSent: attribs.is_sent,\n isConfirmed: attribs.is_confirmed,\n isOpened: attribs.is_opened,\n isStarted: attribs.is_started,\n isCompleted: attribs.is_completed,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n isBeforeScanCompleted: attribs.is_before_scan_completed,\n isAfterScanCompleted: attribs.is_after_scan_completed,\n isLatestScanCompleted: attribs.is_latest_scan_completed,\n completedScanCount: completedScanCount,\n createdAt: createdAt,\n updatedAt: updatedAt,\n createdAtDate: createdAtDate,\n createdAtDateShort: createdAtDateShort,\n updatedAtDate: updatedAtDate,\n updatedAtDateShort: updatedAtDateShort,\n sentAt: sentAt,\n sentAtDate: sentAtDate,\n journalizedAt: journalizedAt,\n journalizedAtDate: journalizedAtDate,\n completedAt: completedAt,\n completedAtDate: completedAtDate,\n confirmedAt: confirmedAt,\n confirmedAtDate: confirmedAtDate,\n openedAt: openedAt,\n openedAtDate: openedAtDate,\n bookmarkedAt: bookmarkedAt,\n bookmarkedAtDate: bookmarkedAtDate,\n isMessageToPatientSentToday: attribs.is_message_to_patient_sent_today,\n isMessageToPatientSentThisWeek: attribs.is_message_to_patient_sent_this_week,\n isPendingDigitalConsult: attribs.is_pending_digital_consult,\n latestMessageToPatientSentAt: latestMessageToPatientSentAt,\n latestMessageToPatientSentAtTs: _latestMessageToPatientSentAt,\n latestMessageToPatientSentAtDate: latestMessageToPatientSentAtDate,\n latestMessageToPatientSentAtRaw: latestMessageToPatientSentAtRaw,\n latestMessageToPatientSentAtTitle: latestMessageToPatientSentAtTitle,\n isDigitalConsultCompletedToday: attribs.is_digital_consult_completed_today,\n isDigitalConsultCompletedThisWeek: attribs.is_digital_consult_completed_this_week,\n nextDigitalConsultAt: nextDigitalConsultAt,\n nextDigitalConsultAtTs: _nextDigitalConsultAt,\n nextDigitalConsultAtDate: nextDigitalConsultAtDate,\n nextDigitalConsultAtDateShort: nextDigitalConsultAtDateShort,\n latestDigitalConsultAt: latestDigitalConsultAt,\n latestDigitalConsultAtTs: _latestDigitalConsultAt,\n latestDigitalConsultAtDate: latestDigitalConsultAtDate,\n latestDigitalConsultAtDateShort: latestDigitalConsultAtDateShort,\n latestImageReceivedAt: latestImageReceivedAt,\n latestImageReceivedAtTs: _latestImageReceivedAt,\n latestImageReceivedAtDate: latestImageReceivedAtDate,\n latestImageReceivedAtDateShort: latestImageReceivedAtDateShort,\n hasAnyImageReady: hasAnyImageReady,\n noteLog: noteLog,\n beforeScanCompletedAt: beforeScanCompletedAt,\n beforeScanCompletedAtDate: beforeScanCompletedAtDate,\n afterScanCompletedAt: afterScanCompletedAt,\n afterScanCompletedAtDate: afterScanCompletedAtDate,\n latestScanCompletedAt: latestScanCompletedAt,\n latestScanCompletedAtDate: latestScanCompletedAtDate,\n isAutomaticallyUpdatedSinceViewed: isAutomaticallyUpdatedSinceViewed,\n automaticallyUpdatedSinceViewedRaw: automaticallyUpdatedSinceViewedRaw,\n automaticallyUpdatedSinceViewedTitle: automaticallyUpdatedSinceViewedTitle,\n automaticallyUpdatedSinceViewedAt: automaticallyUpdatedSinceViewedAt,\n automaticallyUpdatedSinceViewedAtDate: automaticallyUpdatedSinceViewedAtDate,\n instructionCardUuid: instructionCardUuid,\n images: imageList,\n imagePovList: imagePovList,\n shareLogList: shareLogList,\n digitalConsultList: digitalConsultList,\n recipientEmails: recipientEmails,\n instructionSmsTemplates: instructionSmsTemplates,\n instructionInternalMessageTemplates: instructionInternalMessageTemplates,\n scanWeekday: attribs.scan_weekday,\n scanIntervalDays: attribs.scan_interval_days,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n _parseShareLogList({ payload }) {\n let itemList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const createdAt = new Date(attribs.created_at);\n const createdAtTs = createdAt.getTime();\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n const messageType = attribs.message_type\n const messageBodyTrunc = attribs.message_body_trunc\n const elem = {\n uuid: attribs.uuid,\n body: attribs.title,\n createdAt: createdAt,\n prettyCreatedAt: prettyCreatedAt,\n ts: createdAtTs,\n type: messageType,\n description: messageBodyTrunc,\n }\n itemList.push(elem)\n }\n return itemList.sort((a, b) => b.ts - a.ts);\n },\n\n _parseDigitalConsultList({ payload }) {\n let itemList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const createdAt = new Date(attribs.timestamp);\n const createdAtTs = createdAt.getTime();\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n const elem = {\n uuid: attribs.uuid,\n body: attribs.note,\n type: 'consult',\n description: null,\n createdAt: createdAt,\n prettyCreatedAt: prettyCreatedAt,\n ts: createdAtTs,\n }\n itemList.push(elem)\n }\n return itemList.sort((a, b) => b.ts - a.ts);\n },\n\n _parseimagePovList({ payload }) {\n let tagList = []\n let uniqueList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const pointOfView = attribs.point_of_view\n if (uniqueList.includes(pointOfView)) {\n continue;\n }\n uniqueList.push(pointOfView)\n const meta = this._getPointOfViewMeta({ pointOfView: pointOfView })\n const tag = {\n id: pointOfView,\n title: meta.title,\n precedence: meta.precedence,\n isFacePov: meta.isFacePov,\n }\n tagList.push(tag)\n }\n tagList.sort((a, b) => a.precedence - b.precedence);\n return tagList;\n },\n\n _parseImageList({ payload }) {\n let imageList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const createdAt = new Date(attribs.created_at);\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n const pointOfView = attribs.point_of_view\n const meta = this._getPointOfViewMeta({ pointOfView: pointOfView })\n const image = {\n uuid: attribs.uuid,\n url: attribs.url,\n rawCroppedUrl: attribs.raw_cropped_url,\n hueCroppedUrl: attribs.hue_color_cropped_url,\n createdAt: createdAt,\n prettyCreatedAt: prettyCreatedAt,\n pointOfView: pointOfView,\n pointOfViewTitle: meta.title,\n pointOfViewPrecedence: meta.precedence,\n isFacePov: meta.isFacePov,\n }\n imageList.push(image)\n }\n return this._sortListByDateAndPrecedence({ items: imageList });\n },\n\n _sortListByDateAndPrecedence({ items }) {\n return items.sort((a, b) => {\n const dateA = a.createdAt;\n const dateB = b.createdAt;\n const condition0 = dateA.getDate() !== dateB.getDate();\n const condition1 = a.pointOfViewPrecedence - b.pointOfViewPrecedence;\n // Compare dates\n if (dateA.getDate() !== dateB.getDate()) {\n return condition0;\n } else {\n // If dates are the same, compare precedence\n return condition1;\n }\n });\n },\n\n getDocumentText({ documentType }) {\n let title = 'Andet' // this._capitalize({ value: documentType })\n let precedence = 0\n if (documentType == 'instruction') {\n title = 'Vejledning'\n precedence = 17\n } else if (documentType == 'receipt') {\n title = 'Kvittering'\n precedence = 19\n } else if (documentType == 'giro') {\n title = 'Afdragsordning'\n precedence = 15\n } else if (documentType == 'bill') {\n title = 'Regning'\n precedence = 18\n } else if (documentType == 'overdue_bill') {\n title = 'Rykker (regning)'\n precedence = 16\n } else if (documentType == 'medical_history') {\n title = 'Helbredsskema'\n precedence = 10\n } else if (documentType == 'treatment') {\n title = 'Overslag'\n precedence = 20\n } else if (documentType == 'journal_item') {\n title = 'Journal'\n precedence = 10\n } else if (documentType == 'other_pdf') {\n title = 'PDF'\n precedence = 9\n } else if (documentType == 'other_jpg') {\n title = 'Billede eller røntgen'\n precedence = 5\n } else if (documentType == 'standalone_free_text') {\n title = 'Fritekst'\n precedence = 11\n }\n return { title: title, precedence: precedence };\n },\n\n _getPointOfViewMeta({ pointOfView }) {\n const povClean = !!pointOfView ? pointOfView.trim('.jpg') : '';\n let title = this._capitalize({ value: pointOfView })\n let precedence = 20;\n if (povClean == 'face-smile') {\n title = 'Naturligt smil (på afstand)';\n precedence = 15;\n } else if (povClean == 'face-smile-front') {\n title = 'Naturligt smil (på afstand)';\n precedence = 15;\n } else if (povClean == 'bite-front') {\n title = 'Tænder (tæt på)';\n precedence = 1;\n } else if (povClean == 'bite-left') {\n title = 'Tænder (tæt på, venstre)';\n precedence = 5;\n } else if (povClean == 'bite-right') {\n title = 'Tænder (tæt på, højre)';\n precedence = 6;\n } else if (povClean == 'upper-arch') {\n title = 'Øvre kæbe';\n precedence = 12;\n } else if (povClean == 'bottom-arch') {\n title = 'Nedre kæbe';\n precedence = 11;\n } else if (povClean == 'closed-bite-front') {\n title = 'Sammenbid med skinne forfra'\n precedence = 3;\n } else if (povClean == 'closed-bite-left') {\n title = 'Sammenbid fra venstre'\n precedence = 5;\n } else if (povClean == 'closed-bite-right') {\n title = 'Sammenbid fra højre'\n precedence = 7;\n } else if (povClean == 'closed-bite-front-excl-aligners') {\n title = 'Sammenbid u. skinne og forfra'\n precedence = 1;\n } else if (povClean == 'closed-bite-front-incl-aligners') {\n title = 'Sammenbid med skinne og forfra'\n precedence = 2;\n } else if (povClean == 'closed-bite-left-incl-aligners') {\n title = 'Sammenbid med skinne fra venstre'\n precedence = 6;\n } else if (povClean == 'closed-bite-right-incl-aligners') {\n title = 'Sammenbid med skinne fra højre'\n precedence = 8;\n } else if (povClean == 'open-bite-front-incl-aligners') {\n title = 'Let åben mund med skinne og forfra'\n precedence = 10;\n }\n const isFacePov = povClean.includes('face');\n return { title: title, precedence: precedence, isFacePov: isFacePov }\n },\n\n _capitalize({ value }) {\n let arr = value.split('-');\n let capital = arr.map(item => item.charAt(0).toUpperCase() + item.slice(1).toLowerCase());\n let capitalString = capital.join(\" \");\n return capitalString\n },\n\n parseReviewLogList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n const patAttribs = !!patient ? patient.attributes : null\n\n const patientPhoneNumber = !!patAttribs ? patAttribs.phone_number : null\n const patientEmail = !!patAttribs ? patAttribs.contact_email : null\n\n let patientFullname = !!patAttribs ? patAttribs.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = patientPhoneNumber\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const supportId = !!patAttribs ? patAttribs.cognito_id.slice(0, 8) : null\n patientFullname = `Navn mangler (Support id: ${supportId})`\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _updatedAt = !!attribs.updated_at ? new Date(attribs.updated_at) : null;\n const updatedAt = !!_updatedAt ? _updatedAt.getTime() : null;\n const updatedAtDate = !!_updatedAt ? _updatedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _sentAt = !!attribs.sent_at ? new Date(attribs.sent_at) : null;\n const sentAt = !!_sentAt ? _sentAt.getTime() : null;\n const sentAtDate = !!_sentAt ? _sentAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _completedAt = !!attribs.completed_at ? new Date(attribs.completed_at) : null;\n const completedAt = !!_completedAt ? _completedAt.getTime() : null;\n const completedAtDate = !!_completedAt ? _completedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _resolvedAt = !!attribs.resolved_at ? new Date(attribs.resolved_at) : null;\n const resolvedAt = !!_resolvedAt ? _resolvedAt.getTime() : null;\n const resolvedAtDate = !!_resolvedAt ? _resolvedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _openedAt = !!attribs.opened_at ? new Date(attribs.opened_at) : null;\n const openedAt = !!_openedAt ? _openedAt.getTime() : null;\n const openedAtDate = !!_openedAt ? _openedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _bookmarkedAt = !!attribs.bookmarked_at ? new Date(attribs.bookmarked_at) : null;\n const bookmarkedAt = !!_bookmarkedAt ? _bookmarkedAt.getTime() : null;\n const bookmarkedAtDate = !!_bookmarkedAt ? _bookmarkedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _journalizedAt = !!attribs.journalized_at ? new Date(attribs.journalized_at) : null;\n const journalizedAt = !!_journalizedAt ? _journalizedAt.getTime() : null;\n const journalizedAtDate = !!_journalizedAt ? _journalizedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _noteLog = attribs.note_log\n const noteLog = this._parseNoteLog(_noteLog);\n\n const patientNote = attribs.patient_note ?? '';\n const maxNoteLength = 25;\n let patientNoteTruncated = patientNote.length > maxNoteLength ? `${patientNote.slice(0, maxNoteLength)}...` : patientNote;\n\n const item = {\n uuid: attribs.uuid,\n score: attribs.score,\n scoreRaw: attribs.score_raw,\n patientNote: patientNote,\n patientNoteTruncated: patientNoteTruncated,\n name: patientFullname,\n patientPhoneNumber: patientPhoneNumber,\n patientEmail: patientEmail,\n createdAt: createdAt,\n updatedAt: updatedAt,\n date: updatedAtDate,\n timestamp: updatedAt,\n isSent: attribs.is_sent,\n isOpened: attribs.is_opened,\n isCompleted: attribs.is_completed,\n isResolved: attribs.is_resolved,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n createdAtDate: createdAtDate,\n updatedAtDate: updatedAtDate,\n sentAt: sentAt,\n sentAtDate: sentAtDate,\n journalizedAt: journalizedAt,\n journalizedAtDate: journalizedAtDate,\n completedAt: completedAt,\n completedAtDate: completedAtDate,\n resolvedAt: resolvedAt,\n resolvedAtDate: resolvedAtDate,\n openedAt: openedAt,\n openedAtDate: openedAtDate,\n bookmarkedAt: bookmarkedAt,\n bookmarkedAtDate: bookmarkedAtDate,\n noteLog: noteLog,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n _parseNoteLog(payload) {\n if (!payload) {\n return []\n }\n let _dataList = []\n for (let item of payload) {\n if (!item) {\n continue\n }\n const createdAt = new Date(item.timestamp)\n const ts = createdAt.getTime();\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n _dataList.push({\n uuid: item.uuid,\n ts: ts,\n createdAt: createdAt,\n body: item.note,\n type: 'note',\n description: null,\n prettyCreatedAt: prettyCreatedAt,\n })\n }\n // NOTE: If you update sorting, also check (latest) note in list is as expected.\n return _dataList.sort((a, b) => b.ts - a.ts);\n },\n\n\n parseClinicalPhotoList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n let patientPhoneNumber = attribs.patient_phone_number\n let patientFullname = attribs.patient_full_name\n let patientCognitoId = attribs.patient_cognito_id\n\n if (patient != null && patient.attributes != null) {\n let patAttribs = patient.attributes\n patientPhoneNumber = patAttribs.phone_number\n patientFullname = patAttribs.full_name\n patientCognitoId = patAttribs.cognito_id\n }\n\n let nameList = []\n if (patientFullname != null && patientFullname.length > 0) {\n nameList.push(patientFullname)\n } else if (patientPhoneNumber != null && patientPhoneNumber.length > 0) {\n nameList.push(patientPhoneNumber)\n } else if (patientCognitoId != null && patientCognitoId.length > 0) {\n nameList.push(patientCognitoId)\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const hasAnyImageReady = attribs.has_any_image_ready\n const hasAnyImagePending = attribs.has_any_image_pending\n\n let name = nameList.join(' • ')\n\n const item = {\n uuid: attribs.uuid,\n name: name,\n createdAt: createdAt,\n date: createdAtDate,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n hasAnyImageReady: hasAnyImageReady,\n hasAnyImagePending: hasAnyImagePending,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n parseConnectorLogList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n let requestType = attribs.type\n let requestTypeName = '-'\n if (requestType == 'medical_history_completed') {\n requestTypeName = 'Helbredsskema'\n } else if (requestType = 'treatment_sent') {\n requestTypeName = 'Sendt overslag'\n } else if (requestType = 'treatment_comfirmed') {\n requestTypeName = 'Informeret samtykke'\n } else if (requestType = 'treatment_billed') {\n requestTypeName = 'Informeret samtykke (faktureret)'\n } else if (requestType = 'instruction_sent') {\n requestTypeName = 'Sendt patientbrev/-vejledning'\n } else if (requestType = 'instruction_sent_by_receipt') {\n requestTypeName = 'Sendt patientbrev/-vejledning via regning'\n }\n\n let patientFullname = null\n let patientCognitoId = null\n\n if (patient != null && patient.attributes != null) {\n let patAttribs = patient.attributes\n patientFullname = patAttribs.full_name\n patientCognitoId = patAttribs.cognito_id\n }\n\n let nameList = []\n if (patientFullname != null && patientFullname.length > 0) {\n nameList.push(patientFullname)\n } else if (patientCognitoId != null && patientCognitoId.length > 0) {\n nameList.push(patientCognitoId)\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n let name = nameList.join(' • ')\n\n const item = {\n uuid: attribs.uuid,\n name: name,\n requestType: requestType,\n requestTypeName: requestTypeName,\n createdAt: createdAt,\n date: createdAtDate,\n isBookmarked: attribs.is_bookmarked,\n isRequested: attribs.is_requested,\n isDownloaded: attribs.is_downloaded,\n isImported: attribs.is_imported,\n isProcessed: attribs.is_processed,\n shouldDownload: attribs.should_download,\n shouldImport: attribs.should_import,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n async parseDentistList({ items }) {\n const locales = \"da-DK\";\n let dentistList = []\n for (const i in items) {\n const item = items[i]\n const dentist = await this.parseDentist({ dentist: item })\n dentistList.push(dentist)\n }\n\n const dentistListSorted = dentistList.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase(), locales))\n return dentistListSorted\n },\n\n async parseSystemInitialList({ items }) {\n const locales = \"da-DK\";\n let systemInitialList = []\n for (const i in items) {\n const item = items[i]\n const attribs = item.attributes\n const value = attribs.value\n if (!value) {\n continue\n }\n const firstname = attribs.first_name\n const name = `${firstname} ${attribs.last_name}`\n const label = !firstname ? value : `${value} (${firstname})`\n const elem = {\n value: value,\n uuid: attribs.uuid,\n name: name,\n label: label,\n }\n systemInitialList.push(elem)\n }\n const systemInitialListSorted = systemInitialList.sort((a, b) => a.value.toLowerCase().localeCompare(b.value.toLowerCase(), locales))\n return systemInitialListSorted;\n },\n\n async parseTreatmentItemCollectionMeta(meta) {\n if (!meta) {\n return null;\n }\n\n const dentistListJson = meta.dentist_list ?? []\n const dentistList = await this.parseDentistList({ items: dentistListJson })\n\n const systemInitialListJson = meta.system_initials_list ?? []\n const systemInitialList = await this.parseSystemInitialList({ items: systemInitialListJson })\n\n const primaryTreatmentGroupList = meta.primary_treatment_group_list;\n\n return {\n dentistList: dentistList,\n systemInitialList: systemInitialList,\n primaryTreatmentGroupList: primaryTreatmentGroupList,\n }\n },\n\n isNumber(value) {\n return typeof value == 'number'\n },\n\n async parseTreatmentItemCollectionList(resources) {\n const items = []\n let i = 0\n for (i in resources) {\n const resource = resources[i]\n const item = await this.parseTreatmentItemCollection(resource)\n items.push(item)\n }\n return items\n },\n\n async parseTreatmentItemCollection(resource) {\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\n\n const attribs = resource.attributes\n const relationships = resource.relationships\n\n const uuid = attribs.uuid\n const cognitoId = attribs.cognito_id\n const firstname = attribs.patient_first_name\n const lastname = attribs.patient_last_name\n const birthdate = attribs.patient_birthdate\n const phonenumber = attribs.patient_phone_number\n const email = attribs.patient_email\n\n const _noteLog = attribs.note_log\n const noteLog = this._parseLog({ dataList: _noteLog, type: 'note' })\n\n const _billedAtLog = attribs.billed_at_log\n const billedAtLog = this._parseLog({ dataList: _billedAtLog, type: 'billed_at' })\n\n const _journalChangeLog = attribs.journal_change_log\n const journalChangeLog = this._parseJournalChangeLog({ dataList: _journalChangeLog })\n\n const _pipelineChangeLog = attribs.pipeline_status_log\n const pipelineChangeLog = this._parseLog({\n dataList: _pipelineChangeLog,\n type: 'change_log',\n excludeTooSimilar: true,\n })\n\n let createdAt = null\n if (!!attribs.created_at) {\n createdAt = new Date(attribs.created_at)\n }\n let bookmarkedAt = null\n if (!!attribs.bookmarked_at) {\n bookmarkedAt = new Date(attribs.bookmarked_at)\n }\n let sentAt = null\n if (!!attribs.sent_at) {\n sentAt = new Date(attribs.sent_at)\n }\n let openedAt = null\n if (!!attribs.opened_at) {\n openedAt = new Date(attribs.opened_at)\n }\n let bookedAt = null\n if (!!attribs.booked_at) {\n bookedAt = new Date(attribs.booked_at)\n }\n let confirmedAt = null\n if (!!attribs.confirmed_at) {\n confirmedAt = new Date(attribs.confirmed_at)\n }\n let completedAt = null\n if (!!attribs.completed_at) {\n completedAt = new Date(attribs.completed_at)\n }\n let billedAt = null\n if (!!attribs.billed_at) {\n billedAt = new Date(attribs.billed_at)\n }\n let smsSentAt = null\n if (!!attribs.reminder_sms_sent_at) {\n smsSentAt = new Date(attribs.reminder_sms_sent_at)\n }\n let emailSentAt = null\n if (!!attribs.reminder_email_sent_at) {\n emailSentAt = new Date(attribs.reminder_email_sent_at)\n }\n let anySentAt = emailSentAt ?? smsSentAt;\n let autoUpdateAt = null\n if (!!attribs.pipeline_status_auto_updated_at) {\n autoUpdateAt = new Date(attribs.pipeline_status_auto_updated_at)\n }\n\n const hostedPatientLink = attribs.deeplink_to_web\n const prettyDate = createdAt.toLocaleDateString('da-DK', options);\n const displayName = `${firstname} ${lastname}`\n\n const _documents = relationships.documents.data\n const documentList = await this.parsePatientDocumentList({ docs: _documents })\n\n const _treatments = relationships.treatment_items.data\n const groupedTreatmentItemList = await this.groupTreatmentItemListByType({ data: _treatments })\n\n const _clinic = relationships.clinic.data\n const clinicAttribs = _clinic.attributes\n const clinicTitle = clinicAttribs.title\n const treatmentSmsTemplates = clinicAttribs.treatment_sms_templates ?? []\n const reminderSmsTemplates = clinicAttribs.reminder_sms_templates ?? []\n const reminderEmailTemplates = clinicAttribs.reminder_email_templates ?? []\n\n const _dentist = relationships.dentist.data\n let dentistUuid = null;\n let dentistName = ''\n if (!!_dentist) {\n const dentistAttribs = _dentist.attributes\n dentistUuid = dentistAttribs.uuid;\n dentistName = `${dentistAttribs.first_name} ${dentistAttribs.last_name}`\n }\n let dentistNameRaw = ''\n if (attribs.dentist_first_name_raw) {\n dentistNameRaw += attribs.dentist_first_name_raw\n }\n if (attribs.dentist_last_name_raw) {\n dentistNameRaw += ` ${attribs.dentist_last_name_raw}`\n }\n\n const prettySentAt = dateUtils.formatDateToDDMMYYYY({ date: sentAt });\n const prettyOpenedAt = dateUtils.formatDateToDDMMYYYY({ date: openedAt });\n const prettyBookmarkedAt = dateUtils.formatDateToDDMMYYYY({ date: bookmarkedAt });\n const prettyConfirmedAt = dateUtils.formatDateToDDMMYYYY({ date: confirmedAt });\n const prettyCompletedAt = dateUtils.formatDateToDDMMYYYY({ date: completedAt });\n const prettyBookedAt = dateUtils.formatDateToDDMMYYYY({ date: bookedAt });\n const prettyBilledAt = dateUtils.formatDateToDDMMYYYY({ date: billedAt });\n const prettySmsSentAt = dateUtils.formatDateToDDMMYYYY({ date: smsSentAt });\n const prettyEmailSentAt = dateUtils.formatDateToDDMMYYYY({ date: emailSentAt });\n const prettyAnySentAt = dateUtils.formatDateToDDMMYYYY({ date: anySentAt });\n const prettyAutoUpdateAt = dateUtils.formatDateToDDMMYYYY({ date: autoUpdateAt });\n const isSmsSentToday = dateUtils.isToday(smsSentAt)\n const isEmailSentToday = dateUtils.isToday(emailSentAt)\n const isSmsSentThisWeek = dateUtils.isThisIsoWeek(smsSentAt)\n const isEmailSentThisWeek = dateUtils.isThisIsoWeek(emailSentAt)\n const isAnySentToday = isSmsSentToday || isEmailSentToday;\n const isAnySentThisWeek = isSmsSentThisWeek || isEmailSentThisWeek;\n const daysAgo = this.daysAgo(createdAt);\n\n const _action = !relationships.automated_action ? null : relationships.automated_action.data;\n const action = _action == null ? null : this._parseAutomatedAction({ item: _action })\n\n const shareLogListJson = !relationships.share_logs ? [] : relationships.share_logs.data;\n const shareLogList = this._parseShareLogList({ payload: shareLogListJson })\n\n let commonList = [];\n if (shareLogList?.length) commonList.push(...shareLogList);\n if (noteLog?.length) commonList.push(...noteLog);\n\n const sortedCommonList = commonList.sort((a, b) => (b.ts ?? 0) - (a.ts ?? 0))\n\n const searchtext = `${displayName} ${dentistName} ${dentistNameRaw} ${birthdate}`.toLowerCase()\n\n const isReminderCallAny = attribs.is_reminder_call_any\n const isReminderMessageAny = attribs.is_reminder_message_any\n const isReminderAny = isReminderCallAny || isReminderMessageAny\n\n const item = {\n date: prettyDate,\n createdAt: createdAt,\n uuid: uuid,\n cognitoId: cognitoId,\n name: displayName,\n searchtext: searchtext,\n firstname: firstname,\n lastname: lastname,\n birthdate: birthdate,\n email: email,\n phonenumber: phonenumber,\n isSent: attribs.is_sent,\n sentAt: prettySentAt,\n isReceived: attribs.is_received,\n isOpened: attribs.is_opened,\n openedAt: prettyOpenedAt,\n openedCount: attribs.opened_count,\n isBooked: attribs.is_booked,\n bookedAt: prettyBookedAt,\n isConfirmed: attribs.is_confirmed,\n confirmedAt: prettyConfirmedAt,\n isCompleted: attribs.is_completed,\n completedAt: prettyCompletedAt,\n isBilled: attribs.is_billed,\n billedAt: prettyBilledAt,\n isBookmarked: attribs.is_bookmarked,\n isReminderAny: isReminderAny,\n isReminderCallAny: isReminderCallAny,\n isReminderMessageAny: isReminderMessageAny,\n bookmarkedAt: prettyBookmarkedAt,\n isAnySentToday: isAnySentToday,\n isAnySentThisWeek: isAnySentThisWeek,\n anySentAt: prettyAnySentAt,\n isSmsSentToday: isSmsSentToday,\n smsSentAt: prettySmsSentAt,\n isEmailSentToday: isEmailSentToday,\n emailSentAt: prettyEmailSentAt,\n hostedPatientLink: hostedPatientLink,\n documentList: documentList,\n groupedTreatmentItemList: groupedTreatmentItemList,\n uuidSms: uuid,\n uuidEmail: uuid,\n uuidCall: uuid,\n amountTotal: attribs.amount_total,\n amountTotalPlanned: attribs.amount_total_planned,\n amountTotalCompleted: attribs.amount_total_completed,\n status: attribs.pipeline_status,\n daysAgo: daysAgo,\n noteLog: noteLog,\n billedAtLog: billedAtLog,\n shareLogList: shareLogList,\n commonList: sortedCommonList,\n treatmentSmsTemplates: treatmentSmsTemplates,\n reminderSmsTemplates: reminderSmsTemplates,\n reminderEmailTemplates: reminderEmailTemplates,\n dentistUuid: dentistUuid,\n dentistName: dentistName,\n clinicTitle: clinicTitle,\n systemUserInitials: attribs.system_user_initials,\n action: action,\n journalChangeLog: journalChangeLog,\n pipelineChangeLog: pipelineChangeLog,\n autoUpdateAt: prettyAutoUpdateAt,\n didChangeThisWeek: attribs.did_pipeline_status_change_this_week,\n includeAutoReminderToPatient: attribs.include_auto_reminder_message_to_patient,\n }\n return item\n },\n\n async parseTreatmentItemList(resources) {\n const items = []\n let i = 0\n for (i in resources) {\n const resource = resources[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const _treatment = !!relationships.treatment ? relationships.treatment.data : null\n const _document = !!relationships.document ? relationships.document.data : null\n const _dentist = !!relationships.dentist ? relationships.dentist.data : null\n\n const uuid = attribs.uuid\n let createdAt = null\n if (!!attribs.created_at) {\n createdAt = new Date(attribs.created_at)\n }\n\n const treatment = await this.parseTreatmentOption({ option: _treatment })\n const treatmentGroup = await this.parseTreatmentGroupFromOption({ option: _treatment })\n const document = await this.parsePatientDocument({ doc: _document })\n const dentist = await this.parseDentist({ dentist: _dentist })\n\n const item = {\n createdAt: createdAt,\n uuid: uuid,\n title: attribs.title_da,\n document: document,\n treatment: treatment,\n group: treatmentGroup,\n dentist: dentist,\n price: attribs.price,\n type: attribs.type,\n isCompleted: attribs.is_completed,\n isBilled: attribs.is_billed,\n isPaid: attribs.is_paid,\n }\n items.push(item)\n }\n return items\n },\n\n daysAgo(date) {\n if (!date) {\n return null;\n }\n const now = new Date();\n const then = new Date(date);\n // Set both dates to midnight\n now.setHours(0, 0, 0, 0);\n then.setHours(0, 0, 0, 0);\n const timeDifference = Math.abs(now.getTime() - then.getTime());\n const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24));\n return daysDifference;\n },\n\n async groupTreatmentItemListByType({ items }) {\n // Output:\n // {\n // 'documentUuid: str': {\n // precedence: int,\n // documentUuid: str\n // planned: List[Dict[str, Any]],\n // completed: List[Dict[str, Any]],\n // plannedPriceTotal: float,\n // completedPriceTotal: float,\n // },\n // ...\n // }\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\n let groupedDict = {}\n for (let i in items) {\n const item = items[i]\n const attribs = item.attributes\n const relationships = item.relationships\n const treatment = relationships.treatment.data\n const document = relationships.document.data\n const uuid = attribs.uuid\n const uuidPrefix = uuid.slice(0, 6)\n const createdAt = new Date(attribs.created_at)\n const prettyDate = createdAt.toLocaleDateString('da-DK', options);\n const itemType = attribs.type;\n const documentUuid = document?.attributes.uuid ?? ''\n\n let price = attribs.price\n if (!this.isNumber(price)) {\n price = 0\n }\n let coveragePublic = attribs.coverage_public\n if (!this.isNumber(coveragePublic)) {\n coveragePublic = 0\n }\n let coverageDanmark = attribs.coverage_danmark\n if (!this.isNumber(coverageDanmark)) {\n coverageDanmark = 0\n }\n let coverageDanmarkMax = attribs.coverage_danmark_max\n if (!this.isNumber(coverageDanmarkMax)) {\n coverageDanmarkMax = 0\n }\n\n let displayImage = null\n let titleLookup = null\n let recapDescriptionLookup = null\n if (treatment !== null) {\n const treatmentAttribs = treatment.attributes\n displayImage = treatmentAttribs.display_image\n // IMPORTANT: Using raw strings during development here.\n // TODO: Use `title_lookup` etc.\n titleLookup = treatmentAttribs.title_da\n recapDescriptionLookup = treatmentAttribs.recap_description_da\n }\n let current = groupedDict[documentUuid] ?? {}\n current.documentUuid = documentUuid\n current.precedence = 0 // TODO: update\n let currentList\n if (itemType === TREATMENT_TYPE__PLANNED) {\n currentList = current.planned ?? []\n } else if (itemType === TREATMENT_TYPE__COMPLETED) {\n currentList = current.completed ?? []\n }\n currentList.push({\n uuid: uuid,\n uuidPrefix: uuidPrefix,\n date: prettyDate,\n createdAt: createdAt,\n itemType: itemType,\n isScanned: true, // NOTE: Currently hardcoded\n title: attribs.title,\n price: price,\n coveragePublic: coveragePublic,\n coverageDanmark: coverageDanmark,\n coverageDanmarkMax: coverageDanmarkMax,\n precedence: attribs.precedence,\n displayImage: displayImage,\n titleLookup: titleLookup,\n recapDescriptionLookup: recapDescriptionLookup,\n })\n if (itemType === TREATMENT_TYPE__PLANNED) {\n current.planned = currentList\n let _total = current.plannedPriceTotal ?? 0\n current.plannedPriceTotal = _total + price\n } else if (itemType === TREATMENT_TYPE__COMPLETED) {\n current.completed = currentList\n let _total = current.completedPriceTotal ?? 0\n current.completedPriceTotal = _total + price\n }\n if (current.planned === undefined) {\n current.planned = []\n }\n if (current.completed === undefined) {\n current.completed = []\n }\n if (current.plannedPriceTotal === undefined) {\n current.plannedPriceTotal = 0\n }\n if (current.completedPriceTotal === undefined) {\n current.completedPriceTotal = 0\n }\n groupedDict[documentUuid] = current\n }\n return groupedDict\n },\n\n async parsePatientDocumentList({ docs }) {\n let _documents = []\n for (let i in docs) {\n const doc = docs[i]\n const resource = await this.parsePatientDocument({ doc: doc })\n _documents.push(resource)\n }\n return _documents\n },\n\n async parsePatientDocument({ doc }) {\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\n const attribs = doc.attributes\n const uuid = attribs.uuid\n const uuidPrefix = uuid.slice(0, 6)\n const issuedAt = new Date(attribs.issued_at)\n const prettyDate = issuedAt.toLocaleDateString('da-DK', options);\n const isOpened = attribs.is_opened_list\n const documentType = attribs.document_type\n const url = attribs.url\n const _options = [...PatientDocumentOptions]\n let option = _options[0]\n for (let i in _options) {\n const _option = _options[i]\n if (_option.value === documentType) {\n option = _option\n break\n }\n }\n let readableDocumentType = i18n.t(option.title)\n let resource = {\n uuid: uuid,\n uuidPrefix: uuidPrefix,\n url: url,\n date: prettyDate,\n issuedAt: issuedAt,\n isSent: true, // NOTE: Currently hardcoded on this list\n isReceived: true,\n isOpened: isOpened,\n documentType: documentType,\n readableDocumentType: readableDocumentType,\n }\n return resource\n },\n\n _parseAutomatedAction({ item }) {\n const attribs = item.attributes\n const isPending = attribs.is_pending ?? false\n const isPendingAnyAmount = attribs.is_pending_any_amount ?? isPending\n const isPrevThisWeek = attribs.is_prev_this_week\n const isBelowAmount = attribs.is_below_amount\n const actionType = attribs.action_type\n let prevRegisteredAt = null\n if (!!attribs.prev_registered_at) {\n prevRegisteredAt = new Date(attribs.prev_registered_at)\n }\n let prevScheduledAt = null\n if (!!attribs.prev_scheduled_at) {\n prevScheduledAt = new Date(attribs.prev_scheduled_at)\n }\n let nextScheduledAt = null\n if (!!attribs.next_scheduled_at) {\n nextScheduledAt = new Date(attribs.next_scheduled_at)\n }\n\n const prettyPrevRegisteredAt = dateUtils.formatDateToDDMMYYYY({ date: prevRegisteredAt });\n const prettyPrevScheduledAt = dateUtils.formatDateToDDMMYYYY({ date: prevScheduledAt });\n const prettyNextScheduledAt = dateUtils.formatDateToDDMMYYYY({ date: nextScheduledAt });\n\n let resource = {\n uuid: attribs.uuid,\n title: attribs.title,\n description: attribs.description,\n isPending: isPending,\n isPendingAnyAmount: isPendingAnyAmount,\n isPrevThisWeek: isPrevThisWeek,\n actionType: actionType,\n isBelowAmount: isBelowAmount,\n prevRegisteredAt: prettyPrevRegisteredAt,\n prevScheduledAt: prettyPrevScheduledAt,\n nextScheduledAt: prettyNextScheduledAt,\n }\n\n return resource\n },\n\n async parseTreatmentOption({ option }) {\n if (!option) {\n return null\n }\n const attribs = option.attributes\n let group = await this.parseTreatmentGroupFromOption({ option })\n let resource = {\n uuid: attribs.uuid,\n title: attribs.title_da,\n precedence: attribs.precedence ?? 0,\n group: group,\n }\n return resource\n },\n\n async parseDentist({ dentist }) {\n if (!dentist) {\n return null\n }\n const attribs = dentist.attributes\n const firstname = attribs.first_name\n const lastname = attribs.last_name\n let resource = {\n uuid: attribs.uuid,\n name: `${firstname} ${lastname}`,\n firstname: firstname,\n lastname: lastname,\n title: attribs.title,\n email: attribs.email,\n }\n return resource\n },\n\n async parseTreatmentGroupFromOption({ option }) {\n if (!option) {\n return null\n }\n const relationships = option.relationships\n const groupData = !!relationships.group ? relationships.group.data : null\n const group = await this.parseTreatmentGroup({ group: groupData })\n return group\n },\n\n async parseTreatmentGroup({ group }) {\n if (!group) {\n return null;\n }\n const attribs = group.attributes\n let resource = {\n uuid: attribs.uuid,\n title: attribs.title_da,\n precedence: attribs.precedence ?? 0,\n }\n return resource\n },\n\n async parseTreatmentGroupList({ items }) {\n if (!items) {\n return null\n }\n let groupList = []\n for (let i in items) {\n const item = items[i]\n groupList.push(this.parseTreatmentGroup({ group: item }))\n }\n return groupList\n },\n\n async groupByTreatmentOption({\n items,\n key = 'treatment',\n fallbackTitle = 'ٴ Øvrig: Uden kategori', // NOTE: See @sortprefix\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const category = item[key]\n const categoryUuid = !category ? 'fallback' : category.uuid\n const categoryTitle = !category ? fallbackTitle : category.title\n const categoryPrecedence = !category ? 0 : (category.precedence ?? 0)\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n const locales = \"da-DK\";\n return asList.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n async groupByDate({ items }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const createdAt = item.createdAt\n if (!createdAt) {\n continue;\n }\n const categoryUuid = dateUtils.formatDateToYYYYMMDD({ date: createdAt })\n const categoryTitle = dateUtils.formatDateToDDMMYYYY({ date: createdAt })\n const categoryPrecedence = 0 // TODO: Add if needed\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n const locales = \"da-DK\";\n return asList.sort((a, b) => a.uuid.toLowerCase().localeCompare(b.uuid.toLowerCase(), locales))\n },\n\n async groupByTotalSumTreatment({ items }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const createdAt = item.createdAt\n if (!createdAt) {\n continue;\n }\n const categoryUuid = 'total'\n const categoryTitle = 'I alt'\n const categoryPrecedence = 0\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n return asList\n },\n\n async groupByTotalSumDocument({ items }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const createdAt = item.createdAt\n if (!createdAt) {\n continue;\n }\n const categoryUuid = 'total'\n const categoryTitle = 'I alt'\n const categoryPrecedence = 0\n\n groupDict = await this._addToGroupDocumentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n return asList\n },\n\n async groupByDateFlattenValue({ items }) {\n let newList = []\n for (let i in items) {\n const item = items[i]\n newList.push(item.amountTotalPlanned)\n }\n return newList\n },\n\n async groupByDateFlattenLabel({ items }) {\n let newList = []\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const isFirst = i === 0\n const isLast = i === items.length - 1\n if (isFirst || isLast) {\n newList.push(item.uuid)\n } else {\n newList.push('-')\n }\n }\n return newList\n },\n\n async groupByTreatmentGroup({\n items,\n key = 'group',\n fallbackTitle = 'ٴ Øvrig: Uden kategori', // NOTE: See @sortprefix\n allowSubgroup = false,\n primarySubgroupKey = 'byDentist',\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const category = item[key]\n const categoryUuid = !category ? 'fallback' : category.uuid\n const categoryTitle = !category ? fallbackTitle : category.title\n const categoryPrecedence = !category ? 0 : (category.precedence ?? 0)\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n let asList1 = []\n for (let j in asList0) {\n const elem = asList0[j]\n if (allowSubgroup) {\n const byDentist = await this.groupByDentist({\n items: elem.items,\n allowSubgroup: false,\n })\n elem['byDentist'] = byDentist\n elem['subgroup'] = elem[primarySubgroupKey]\n }\n asList1.push(elem)\n }\n\n const locales = \"da-DK\";\n return asList1.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n async _addToGroupTreatmentDict({\n item,\n groupDict,\n categoryUuid,\n categoryTitle,\n categoryPrecedence,\n }) {\n let newGroupDict = groupDict\n\n const isCompleted = item.isCompleted ?? false;\n const isBilled = item.isBilled ?? false;\n const isPaid = item.isPaid ?? false;\n const amount = item.price ?? 0\n\n const curr = newGroupDict[categoryUuid] ?? {}\n let amountTotalPlanned = curr.amountTotalPlanned ?? 0\n let amountTotalCompleted = curr.amountTotalCompleted ?? 0\n let amountTotalBilled = curr.amountTotalBilled ?? 0\n let amountTotalPaid = curr.amountTotalPaid ?? 0\n\n let countPlanned = curr.countPlanned ?? 0\n let countCompleted = curr.countCompleted ?? 0\n let countBilled = curr.countBilled ?? 0\n let countPaid = curr.countPaid ?? 0\n\n amountTotalPlanned += amount;\n countPlanned += 1\n if (isCompleted === true) {\n countCompleted += 1\n amountTotalCompleted += amount\n }\n if (isBilled === true) {\n countBilled += 1\n amountTotalBilled += amount\n }\n if (isPaid === true) {\n countPaid += 1\n amountTotalPaid += amount\n }\n\n let items = curr.items ?? []\n items.push(item) // NOTE: Adds reference to components used\n\n const entry = {\n title: categoryTitle,\n uuid: categoryUuid,\n amountTotalPlanned: amountTotalPlanned,\n amountTotalCompleted: amountTotalCompleted,\n amountTotalBilled: amountTotalBilled,\n amountTotalPaid: amountTotalPaid,\n countPlanned: countPlanned,\n countCompleted: countCompleted,\n countBilled: countBilled,\n countPaid: countPaid,\n precedence: categoryPrecedence,\n items: items,\n }\n newGroupDict[categoryUuid] = entry\n return newGroupDict\n },\n\n async _addToGroupDocumentDict({\n item,\n groupDict,\n categoryUuid,\n categoryTitle,\n categoryPrecedence,\n }) {\n let newGroupDict = groupDict\n\n const curr = newGroupDict[categoryUuid] ?? {}\n let amountNew = item.amountTotal ?? 0\n let amountTotal = curr.amountTotal ?? 0\n\n let count = curr.count ?? 0\n\n amountTotal += amountNew;\n count += 1\n\n let items = curr.items ?? []\n items.push(item) // NOTE: Adds reference to components used\n\n let precedenceOrFallback = categoryPrecedence\n if (categoryPrecedence === null) {\n precedenceOrFallback = amountTotal + count\n }\n\n const entry = {\n title: categoryTitle,\n uuid: categoryUuid,\n amountTotal: amountTotal,\n count: count,\n precedence: Math.ceil(precedenceOrFallback),\n items: items,\n }\n newGroupDict[categoryUuid] = entry\n return newGroupDict\n },\n\n async groupBySystemInitial({\n items,\n allowSubgroup = false,\n fallbackTitle = 'ٴ Ukendt', // NOTE: See @sortprefix\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const categoryUuid = !item.systemInitial ? 'fallback' : item.systemInitial\n const categoryTitle = !item.systemInitial ? fallbackTitle : item.systemInitial\n const categoryPrecedence = null // NOTE: Infers in function below\n\n groupDict = await this._addToGroupDocumentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n const locales = \"da-DK\";\n return asList0.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n async groupByDentist({\n items,\n key = 'dentist',\n fallbackTitle = 'ٴ Øvrig/Ukendt', // NOTE: See @sortprefix\n allowSubgroup = false,\n primarySubgroupKey = 'byGroup',\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const category = item[key]\n const categoryUuid = !category ? 'fallback' : category.uuid\n const categoryTitle = !category ? fallbackTitle : (category.name ?? '')\n const categoryPrecedence = !category ? 0 : (category.precedence ?? 0)\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n let asList1 = []\n for (let j in asList0) {\n const elem = asList0[j]\n if (allowSubgroup) {\n const byGroup = await this.groupByTreatmentGroup({\n items: elem.items,\n allowSubgroup: false,\n })\n elem['byGroup'] = byGroup\n elem['subgroup'] = elem[primarySubgroupKey]\n }\n asList1.push(elem)\n }\n\n const locales = \"da-DK\";\n return asList1.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n _parseLog({ dataList, type, excludeTooSimilar = false }) {\n if (!dataList) {\n return []\n }\n let newList = []\n let _similarityStrList = []\n for (let item of dataList) {\n if (!item) {\n continue\n }\n if (!item.timestamp) {\n continue\n }\n const timestamp = new Date(item.timestamp)\n const ts = timestamp.getTime()\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: timestamp });\n const title = item.title\n const subtitle = item.subtitle\n const description = item.recap_description\n const body = item.note\n const similarityStr = `${prettyCreatedAt}:${title}:${subtitle}:${description}`\n if (excludeTooSimilar && _similarityStrList.includes(similarityStr)) {\n continue\n }\n const elem = {\n uuid: item.uuid,\n timestamp: timestamp,\n ts: ts,\n type: type,\n body: body,\n prettyCreatedAt: prettyCreatedAt,\n title: title,\n subtitle: subtitle,\n description: description,\n }\n newList.push(elem)\n _similarityStrList.push(similarityStr)\n }\n return newList.sort((a, b) => b.ts - a.ts);\n },\n\n _parseJournalChangeLog({ dataList, excludeTooSimilar = true }) {\n if (!dataList) {\n return []\n }\n let newList = []\n let _similarityStrList = []\n for (let item of dataList) {\n if (!item) {\n continue\n }\n if (!item.timestamp) {\n continue\n }\n const timestamp = new Date(item.timestamp)\n const ts = timestamp.getTime()\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: timestamp });\n const title = item.title\n const subtitle = item.subtitle\n const description = item.recap_description\n const similarityStr = `${prettyCreatedAt}:${title}:${subtitle}:${description}`\n if (excludeTooSimilar && _similarityStrList.includes(similarityStr)) {\n continue\n }\n const elem = {\n uuid: item.uuid,\n timestamp: timestamp,\n ts: ts,\n type: item.type,\n prettyCreatedAt: prettyCreatedAt,\n title: title,\n subtitle: subtitle,\n description: description,\n }\n newList.push(elem)\n _similarityStrList.push(similarityStr)\n }\n return newList.sort((a, b) => b.ts - a.ts);\n },\n}\n\nexport default parserUtils\n\nfunction isValidDate(d) {\n return d instanceof Date && !isNaN(d);\n}","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":""}