{"version":3,"file":"veilederUtveksling-2SpIwDge.js","sources":["../../../Features/VeilederUtveksling/Store/Valg/Types.ts","../../../Features/VeilederUtveksling/Store/Resultat/Types.ts","../../../Features/VeilederUtveksling/Store/Resultat/Actions.ts","../../../Features/VeilederUtveksling/Utilities/VerdensdelValg.ts","../../../Features/VeilederUtveksling/Utilities/VarighetValg.ts","../../../Features/VeilederUtveksling/Utilities/LandMedRekrutteringsstipendUtveksling.ts","../../../Features/VeilederUtveksling/Store/Valg/Actions.ts","../../../Features/VeilederUtveksling/Models/Ids.ts","../../../Features/VeilederUtveksling/Utilities/Utregning.ts","../../../Features/VeilederUtveksling/Component/UtregningFa.tsx","../../../Features/VeilederUtveksling/Component/UtregningFb.tsx","../../../Features/VeilederUtveksling/Component/UtbetalingsPlanDetaljer.tsx","../../../Features/VeilederUtveksling/Component/UtbetalingsPlan.tsx","../../../Features/VeilederUtveksling/App.tsx","../../../Features/VeilederUtveksling/Store/Valg/Reducers.ts","../../../Features/VeilederUtveksling/Store/Resultat/Reducers.ts","../../../Features/VeilederUtveksling/Store/Satser/Types.ts","../../../Features/VeilederUtveksling/Store/Satser/Reducers.ts","../../../Features/VeilederUtveksling/Store/index.ts","../../../Features/VeilederUtveksling/Models/SatserUtlandModel.ts","../../../Features/VeilederUtveksling/Store/Satser/Actions.ts","../../../Features/VeilederUtveksling/Utilities/Universiteter.ts","../../../Features/VeilederUtveksling/index.tsx"],"sourcesContent":["import Valg from '../../../Shared/Scripts/Models/Valg';\r\nimport ValgTillegg from '../../../Shared/Scripts/Models/ValgMedtillegg';\r\n\r\nexport interface ValgState {\r\n aVarighet?: Valg;\r\n bVerdensdel?: Valg;\r\n cLand?: Valg;\r\n dSkolepenger?: ValgTillegg;\r\n eUniversitet?: Valg; \r\n visUtbetalingsplan: boolean;\r\n}\r\n\r\nexport const UPDATE_VALG = 'UPDATE_AVALG';\r\n\r\ninterface UpdateValgAction {\r\n type: typeof UPDATE_VALG;\r\n payload: Partial;\r\n}\r\n\r\nexport type ValgStateActionTypes = UpdateValgAction;\r\n","export type ResultatValg = ResultatValgVisning;\r\n\r\nexport interface ResultatValgVisning {\r\n visBoksB: boolean;\r\n visBoksC: boolean; \r\n visBoksD: boolean;\r\n visBoksE: boolean; \r\n visBoksFa: boolean; \r\n visBoksFb: boolean; \r\n visUtbetalingsplan: boolean;\r\n}\r\n\r\nexport const SET_VISNING = 'SET_VISNING';\r\n\r\nexport interface SetVisningAction {\r\n type: typeof SET_VISNING;\r\n payload: Partial;\r\n}\r\n\r\nexport type ResultatActionTypes = SetVisningAction;\r\n","import { SetVisningAction, SET_VISNING, ResultatValgVisning } from './Types';\r\n\r\nexport function setVisning(stegVisning: Partial): SetVisningAction {\r\n return {\r\n type: SET_VISNING,\r\n payload: stegVisning,\r\n };\r\n}\r\n","import { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\nimport VeilederUtvekslingDto from '../Models/VeilederUtvekslingDto';\r\n\r\nconst afrika = 'b1-afrika';\r\nconst asia = 'b2-asia';\r\nconst europa = 'b3-europa';\r\nconst nordMellomAmerika = 'b4-nordMellomAmerika';\r\nconst oseania = 'b5-oseania';\r\nconst sorAmerika = 'b6-sorAmerika'; \r\n\r\nconst bValg: RadioButtonValgModel[] = [\r\n { id: 'afrika', value: afrika, tekst: 'valgAfrika' },\r\n { id: 'asia', value: asia, tekst: 'valgAsia' },\r\n { id: 'europa', value: europa, tekst: 'valgEuropa' },\r\n { id: 'nordmellomamerika', value: nordMellomAmerika, tekst: 'valgNordMellomAmerika' },\r\n { id: 'oseania', value: oseania, tekst: 'valgOseania' },\r\n { id: 'soramerika', value: sorAmerika, tekst: 'valgSorAmerika' }, \r\n];\r\n\r\nexport default {\r\n b1_afrika: afrika,\r\n b2_asia: asia,\r\n b3_europa: europa,\r\n b4_nordMellomAmerika: nordMellomAmerika,\r\n b5_oseania: oseania,\r\n b6_sorAmerika: sorAmerika,\r\n bValg,\r\n};\r\n","import { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\nimport VeilederUtvekslingDto from '../Models/VeilederUtvekslingDto';\r\n\r\nconst valgHost = 'a1-valgHost';\r\nconst valgVaar = 'a2-valgVaar';\r\nconst valgHel = 'a3-valgHel'; \r\n\r\nconst varighetValg: RadioButtonValgModel[] = [\r\n {\r\n id: 'a1', \r\n value: valgHost,\r\n tekst: 'valgHost',\r\n },\r\n {\r\n id: 'a2',\r\n value: valgVaar,\r\n tekst: 'valgVaar',\r\n },\r\n {\r\n id: 'a3',\r\n value: valgHel,\r\n tekst: 'valgHel',\r\n }\r\n];\r\n\r\nexport default {\r\n valgHost: valgHost,\r\n valgVaar: valgVaar,\r\n valgHel: valgHel,\r\n varighetValg,\r\n};\r\n","import * as ValgTypes from '../Store/Valg/Types';\r\n\r\nexport function harValgtLandSomGirRekrutteringsstipendUtveksling(valg: ValgTypes.ValgState): boolean {\r\n if (valg.cLand?.id === \"ZA\" // Sør-Afrika\r\n ||\r\n valg.cLand?.id === \"BR\" // Brasil\r\n ||\r\n valg.cLand?.id === \"JP\" // Japan\r\n ||\r\n valg.cLand?.id === \"IN\" // India\r\n ||\r\n valg.cLand?.id === \"CN\" // Kina\r\n ||\r\n valg.cLand?.id === \"KR\") // Sør-Korea\r\n return true;\r\n return false;\r\n}\r\n\r\n\r\n","import { ValgStateActionTypes, ValgState, UPDATE_VALG } from './Types';\r\n\r\nimport { ThunkAction, ThunkDispatch } from 'redux-thunk';\r\nimport { VeilederUtvekslingAppState } from '..';\r\nimport { AnyAction } from 'redux';\r\nimport { setVisning } from '../Resultat/Actions';\r\nimport VerdensdelValg from '../../Utilities/VerdensdelValg';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\nimport VarighetValg from '../../Utilities/VarighetValg';\r\nimport { harValgtLandSomGirRekrutteringsstipendUtveksling } from '../../Utilities/LandMedRekrutteringsstipendUtveksling';\r\n\r\nexport function updateValg(newValg: Partial): ValgStateActionTypes {\r\n return {\r\n type: UPDATE_VALG,\r\n payload: newValg,\r\n };\r\n}\r\n\r\nexport const updateVisning = (): ThunkAction => {\r\n return (dispatch: ThunkDispatch, getState: () => VeilederUtvekslingAppState): void => {\r\n const currentState = getState();\r\n\r\n const visBoksB = visB(currentState);\r\n const visBoksC = visC(currentState);\r\n const visBoksD = visD(currentState);\r\n const visBoksE = visE(currentState);\r\n const visBoksFa = visFa(currentState, visBoksE);\r\n const visBoksFb = visFb(currentState, visBoksD, visBoksE);\r\n const visUtbetalingsplan = visUtbetPlan(currentState);\r\n dispatch(setVisning({ visBoksB, visBoksC, visBoksD, visBoksE, visBoksFa, visBoksFb, visUtbetalingsplan }));\r\n };\r\n};\r\n\r\nconst visB = (state: VeilederUtvekslingAppState): boolean => {\r\n if (state.valg.aVarighet !== null && state.valg.aVarighet !== undefined) return true;\r\n\r\n return false;\r\n};\r\n\r\nconst visC = (state: VeilederUtvekslingAppState): boolean => {\r\n if (state.valg.bVerdensdel !== null\r\n && state.valg.bVerdensdel !== undefined\r\n && (state.valg.bVerdensdel.value === VerdensdelValg.b2_asia\r\n || state.valg.bVerdensdel.value === VerdensdelValg.b3_europa\r\n || state.valg.bVerdensdel.value === VerdensdelValg.b4_nordMellomAmerika\r\n || state.valg.bVerdensdel.value === VerdensdelValg.b5_oseania\r\n || state.valg.bVerdensdel.value === VerdensdelValg.b6_sorAmerika\r\n || state.valg.bVerdensdel.value === VerdensdelValg.b1_afrika)\r\n ) return true;\r\n\r\n return false;\r\n};\r\n\r\n// D = skolepenger-boks\r\nconst visD = (state: VeilederUtvekslingAppState): boolean => {\r\n if (state.valg.bVerdensdel === undefined) return false;\r\n\r\n if (state.valg.bVerdensdel !== undefined && state.valg.cLand !== undefined) return true;\r\n\r\n return false;\r\n};\r\n\r\n// E = 'velg universitet'-boks\r\nconst visE = (state: VeilederUtvekslingAppState): boolean => {\r\n\r\n if (state.valg.dSkolepenger === undefined) return false;\r\n\r\n if (state.valg.dSkolepenger !== undefined && state.valg.dSkolepenger.tillegg) return false; // tillegg = går på BI\r\n\r\n if (state.satser === null) return false;\r\n\r\n //fjerner white space fra string for at parsingen skal fungere som forventet.\r\n //TODO: fjern evt. tegn som ikke er tall fra strengen.\r\n const skolePenger: number = parseInt(state.valg.dSkolepenger.value.toString().replace(/\\s/g, ''));\r\n\r\n let nevner: number = 1;\r\n if (state.valg.aVarighet?.value === VarighetValg.valgHost || state.valg.aVarighet?.value === VarighetValg.valgVaar) {\r\n nevner = 2;\r\n }\r\n\r\n if (skolePenger <= (state.satser.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner)) return false;\r\n\r\n // skal alltid spørre om universitet dersom landet har et universitet som gir rett til utvidet stipend i lista\r\n if (harValgtLandSomHarUniversitetMedUtvidetStipend(state.valg, state.universiteter) && state.valg.dSkolepenger !== undefined) return true;\r\n\r\n return false;\r\n};\r\n\r\nconst visFa = (state: VeilederUtvekslingAppState, visBoksE: boolean): boolean => {\r\n\r\n\r\n if ((state.valg.bVerdensdel?.value === VerdensdelValg.b1_afrika ||\r\n state.valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika) &&\r\n state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger.id !== 'IngenSkolePenger')\r\n return true;\r\n\r\n if (state.valg.dSkolepenger !== undefined && state.valg.dSkolepenger.tillegg && state.valg.dSkolepenger.id !== 'IngenSkolePenger') return true;\r\n\r\n if (state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger.id !== 'IngenSkolePenger' &&\r\n state.valg.cLand !== undefined &&\r\n state.valg.cLand.id === 'E')\r\n return true;\r\n\r\n if (state.valg.dSkolepenger !== undefined) {\r\n const skolePenger: number = parseInt(state.valg.dSkolepenger.value.toString().replace(/\\s/g, ''));\r\n\r\n if (state.satser === null) return false;\r\n\r\n let nevner: number = 1;\r\n if (state.valg.aVarighet?.value === VarighetValg.valgHost || state.valg.aVarighet?.value === VarighetValg.valgVaar) {\r\n nevner = 2;\r\n }\r\n\r\n if (skolePenger <= state.satser.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner)\r\n return true;\r\n\r\n // har valgt skolepengebeløp over maks men har ikke liste med universiteter \r\n if (harValgtLandMedRekrutteringsstipend(state.valg) && !visBoksE && skolePenger > (state.satser.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner) && state.valg.dSkolepenger?.id !== 'IngenSkolePenger')\r\n return true;\r\n }\r\n\r\n if (harValgtLandMedRekrutteringsstipend(state.valg) &&\r\n state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger?.id !== 'IngenSkolePenger' &&\r\n state.valg.eUniversitet !== undefined &&\r\n state.valg.eUniversitet?.toString() !== '')\r\n return true;\r\n\r\n if (!visBoksE) return false;\r\n\r\n if (state.valg.eUniversitet !== undefined &&\r\n state.valg.eUniversitet?.toString() !== '' &&\r\n state.valg.dSkolepenger?.id !== 'IngenSkolePenger')\r\n return true;\r\n\r\n return false;\r\n};\r\n\r\nconst visFb = (state: VeilederUtvekslingAppState, visBoksD: boolean, visBoksE: boolean): boolean => {\r\n\r\n if (!visBoksD) return false;\r\n\r\n //viser boks Fb dersom man har valgt afrika og ikke skolepenger.\r\n if ((state.valg.bVerdensdel?.value === VerdensdelValg.b1_afrika ||\r\n state.valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika) &&\r\n (state.valg.eUniversitet === undefined &&\r\n state.valg.dSkolepenger?.id === 'IngenSkolePenger'))\r\n return true;\r\n\r\n // har valgt \"Går på BI\" og \"Vet ikke\"\r\n if (state.valg.dSkolepenger !== undefined && state.valg.dSkolepenger.tillegg && state.valg.dSkolepenger.id === 'IngenSkolePenger') return true;\r\n\r\n // har valgt \"Et annet land\" og \"Vet ikke\"\r\n if (state.valg.cLand !== undefined && state.valg.cLand.id == \"E\" && state.valg.dSkolepenger !== undefined && state.valg.dSkolepenger?.id === 'IngenSkolePenger') return true;\r\n\r\n // har valgt et land med rekrutteringsstipend, men som ikke har universitet med utvidet støtte, og \"vet ikke\"\r\n if (harValgtLandMedRekrutteringsstipend(state.valg) &&\r\n !harValgtLandSomHarUniversitetMedUtvidetStipend(state.valg, state.universiteter) &&\r\n state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger?.id === 'IngenSkolePenger')\r\n return true;\r\n\r\n // dersom vi har valgt et universitet og \"Vet ikke\" så vet vi at vi skal vise Fb\r\n if (state.valg.eUniversitet !== undefined && state.valg.dSkolepenger?.id === 'IngenSkolePenger') {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst visUtbetPlan = (state: VeilederUtvekslingAppState): boolean => {\r\n return state.valg.visUtbetalingsplan;\r\n}\r\n\r\n// \"Utvidet stipend\"/ tilleggsstipend gitt for visse universitet\r\nconst harValgtLandSomHarUniversitetMedUtvidetStipend = (valg: ValgState, universiteter: LandOgUniversitetModel[]): boolean => {\r\n if (valg.cLand?.id === \"E\") {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < universiteter.length; i++) {\r\n if (universiteter[i].Landkode == valg.cLand?.id && universiteter[i].Universitet !== \"\") {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// \"Rekrutteringsstipend\"/ tilleggsstipend spesielt for utveksling. Gir et ekstra stipend for visse land.\r\nconst harValgtLandMedRekrutteringsstipend = (valg: ValgState) => {\r\n\r\n if (harValgtLandSomGirRekrutteringsstipendUtveksling(valg)) {\r\n return true;\r\n }\r\n return false;\r\n\r\n}","export const AppContainerId = 'veilederUtveksling';\r\nexport const BoksA = 'boksA';\r\nexport const BoksB = 'boksB'; \r\nexport const BoksC = 'boksC'; \r\nexport const BoksD = 'boksD'; ","//MERK! HVIS MAN FINNER EN FEIL I UTREGNINGEN HER, SÅ ER DET OVERHENGENDE FARE FOR AT SAMME FEIL FINNES I UTREGNING.TS UNDER HELGRAD UTLAND VEILEDER. \r\n//ÅRSAKEN ER AT UTREGNINGENE ER SVÆRT LIKE. \r\n\r\nimport StipendLandModel from '../Models/StipendLandModel';\r\nimport {SatserUtlandModel} from '../Models/SatserUtlandModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport VerdensdelValg from '../Utilities/VerdensdelValg';\r\nimport VarighetValg from './VarighetValg';\r\nimport {harValgtLandSomGirRekrutteringsstipendUtveksling} from './LandMedRekrutteringsstipendUtveksling';\r\n\r\nexport function formatNumber(tall: number, locale: string = 'nb-NO') : string {\r\n let tallSomString: string = tall.toString();\r\n if(locale === 'en-US') {\r\n tallSomString = tallSomString.replace(/(?!^)(?=(?:\\d{3})+(?:\\.|$))/gm, ',');\r\n } else {\r\n tallSomString = tallSomString.replace(/(?!^)(?=(?:\\d{3})+(?:\\.|$))/gm, ' ');\r\n }\r\n \r\n return tallSomString;\r\n}\r\n\r\nexport function harValgtGodkjentUniversitetSomGirUtvidetStipend(valg: ValgTypes.ValgState): boolean {\r\n if (valg.eUniversitet !== undefined && valg.eUniversitet.id !== undefined && valg.eUniversitet.id !== \"\" && valg.eUniversitet.id !== \"Nei\") {\r\n //console.log(\"godkjent for tilleggstipend\");\r\n return true;\r\n }\r\n\r\n //console.log(\"ikke godkjent for tilleggstipend\");\r\n return false;\r\n}\r\n\r\n\r\n\r\nexport function regnUtBasisLan(valg: ValgTypes.ValgState, stamData: SatserUtlandModel | null) : StipendLandModel {\r\n\r\n let basisLan: StipendLandModel = {\r\n stipendKroner:0,\r\n stipendProsent:0,\r\n lanKroner:0,\r\n lanProsent:0,\r\n totaltStipendOgLan:0\r\n };\r\n\r\n if(stamData == null) return basisLan;\r\n\r\n let antallDagerMedStotte: number = 0;\r\n\r\n if(valg.aVarighet?.value === VarighetValg.valgHel) {\r\n antallDagerMedStotte = 330;\r\n } else if(valg.aVarighet?.value === VarighetValg.valgHost) {\r\n antallDagerMedStotte = 150;\r\n } else if(valg.aVarighet?.value === VarighetValg.valgVaar) {\r\n antallDagerMedStotte = 180;\r\n } \r\n\r\n let basis: number = stamData.SATS_ST01_MAKS_BASISSTOTTE_DAG * antallDagerMedStotte;\r\n \r\n basisLan.lanProsent = 60;\r\n basisLan.stipendProsent = 40;\r\n\r\n basisLan.totaltStipendOgLan = Math.round(basis);\r\n\r\n basisLan.stipendKroner = Math.round(basisLan.totaltStipendOgLan * (basisLan.stipendProsent / 100));\r\n basisLan.lanKroner = Math.round((basisLan.totaltStipendOgLan * (basisLan.lanProsent / 100)) - 0.1);\r\n\r\n return basisLan;\r\n}\r\n\r\nexport function regnUtReiseStotte(valg: ValgTypes.ValgState, stamData: SatserUtlandModel | null): StipendLandModel {\r\n\r\n let reiseStotte: StipendLandModel = {\r\n stipendKroner: 0,\r\n stipendProsent: 0,\r\n lanKroner: 0,\r\n lanProsent: 0,\r\n totaltStipendOgLan: 0\r\n };\r\n\r\n let antallReiser: number = 4;\r\n\r\n if(valg.aVarighet?.value !== VarighetValg.valgHel) {\r\n antallReiser = 2;\r\n reiseStotte.lanProsent = 65;\r\n reiseStotte.stipendProsent = 35;\r\n } else {\r\n reiseStotte.lanProsent = 82.5;\r\n reiseStotte.stipendProsent = 17.5;\r\n }\r\n\r\n if(stamData == null) return reiseStotte;\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b1_afrika) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_AFRIKA * antallReiser);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b2_asia) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_ASIA * antallReiser);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b3_europa) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_EUROPA * antallReiser);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b4_nordMellomAmerika) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_NORD_OG_MELLOM_AMERIKA * antallReiser);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b5_oseania) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_OSEANIA * antallReiser);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_SOR_AMERIKA * antallReiser);\r\n }\r\n\r\n reiseStotte.stipendKroner = Math.round(reiseStotte.totaltStipendOgLan * (reiseStotte.stipendProsent / 100));\r\n reiseStotte.lanKroner = Math.round((reiseStotte.totaltStipendOgLan * (reiseStotte.lanProsent / 100)) - 0.1);\r\n\r\n return reiseStotte;\r\n}\r\n\r\nexport function regnUtSkolepengeUtvidetStipend(valg: ValgTypes.ValgState, stamData:SatserUtlandModel | null): number {\r\n\r\n if(!harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) return 0; \r\n\r\n if(valg.dSkolepenger === null || valg.dSkolepenger === undefined) return 0;\r\n\r\n if(stamData === null || stamData === undefined) return 0;\r\n\r\n let skoleKostnad: number = parseInt(valg.dSkolepenger.value.replace(/\\s/g, ''));\r\n\r\n if (skoleKostnad <= 0) return 0;\r\n\r\n let utvidetStipend: number = 0;\r\n\r\n let nevner: number = 1;\r\n if(valg.aVarighet?.value === VarighetValg.valgHost || valg.aVarighet?.value === VarighetValg.valgVaar) {\r\n nevner = 2;\r\n }\r\n\r\n if (skoleKostnad > stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner\r\n && skoleKostnad < (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR) / nevner)\r\n {\r\n utvidetStipend = skoleKostnad - (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner);\r\n }\r\n\r\n if (skoleKostnad > (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR) / nevner)\r\n {\r\n utvidetStipend = stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR / nevner;\r\n }\r\n\r\n return Math.round(utvidetStipend);\r\n}\r\n\r\nexport function regnUtSkolepengerStotte(valg: ValgTypes.ValgState, stamData: SatserUtlandModel | null): StipendLandModel {\r\n\r\n let skolepengeStotte: StipendLandModel = {\r\n stipendKroner: 0,\r\n stipendProsent: 0,\r\n lanKroner: 0,\r\n lanProsent: 0,\r\n totaltStipendOgLan: 0\r\n };\r\n\r\n //vi setter riktig prosentsats for stipend og lån er lik uansett hvilken type grad. Dette skiller seg fra helgrad utland. \r\n skolepengeStotte.stipendProsent = 40;\r\n skolepengeStotte.lanProsent = 60;\r\n\r\n if (valg.dSkolepenger === undefined) return skolepengeStotte;\r\n\r\n if(stamData == null) return skolepengeStotte;\r\n\r\n let skoleKostnad: number = parseInt(valg.dSkolepenger.value.replace(/\\s/g, ''));\r\n\r\n //man får ingen skolepenge-støtte dersom det ikke skal betales skolepenger.\r\n if (skoleKostnad <= 0) {\r\n return skolepengeStotte;\r\n }\r\n\r\n let nevner: number = 1;\r\n if(valg.aVarighet?.value === VarighetValg.valgHost || valg.aVarighet?.value === VarighetValg.valgVaar) {\r\n nevner = 2;\r\n }\r\n\r\n //maks sum av ID6 som man deler mellom stipend og lån. restverdien av ID6 er alltid lån. \r\n let ID77 = stamData.SATS_ST01_SKOLEPENGEGRUNNLAG_STIPEND_MAKS_PER_AAR / nevner;\r\n\r\n //restverdien av ID6 er alltid lån.\r\n let ID6_rest_etter_ID77 = (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner) - (stamData.SATS_ST01_SKOLEPENGEGRUNNLAG_STIPEND_MAKS_PER_AAR / nevner);\r\n\r\n //MERK AT ALLE UTREGNINGENE NEDENFOR TAR HENSYN TIL OM DET ER HEL ÅR ELLER ETT SEMESTER. \r\n //DET GJØRES VED AT MAN DELER PÅ NEVNER SOM ENTEN BLIR SATT TIL 1 ELLER 2 BASERT PÅ OM DET ER HELT ÅR ELLER IKKE.\r\n\r\n if (valg.dSkolepenger.tillegg){\r\n //skolepengeStøtte relatert til studenter fra BI\r\n\r\n skolepengeStotte.stipendProsent = 0;\r\n skolepengeStotte.lanProsent = 100;\r\n\r\n if(skoleKostnad === 0) {\r\n skolepengeStotte.stipendKroner = 0;\r\n skolepengeStotte.lanKroner = 0;\r\n } else if (skoleKostnad < (stamData.SATS_ST01_SKOLEPENGESTOTTE_MAKS_PER_AR_NORDEN / nevner)) {\r\n skolepengeStotte.stipendKroner = 0;\r\n skolepengeStotte.lanKroner = skoleKostnad;\r\n } else if (skoleKostnad > (stamData.SATS_ST01_SKOLEPENGESTOTTE_MAKS_PER_AR_NORDEN / nevner)){ \r\n skolepengeStotte.stipendKroner = 0;\r\n skolepengeStotte.lanKroner = stamData.SATS_ST01_SKOLEPENGESTOTTE_MAKS_PER_AR_NORDEN / nevner;\r\n }\r\n }\r\n else if (skoleKostnad > stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner\r\n && skoleKostnad < ((stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR) / nevner)\r\n && harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på tilleggsstipend (ID10)\r\n //får differansen mellom ID6 og D1 som tilleggsstipend\r\n\r\n //vi regner ut andel stipend og lån av ID77 siden det er kun den summen av ID6 man kan få omgjort til stipend.\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n let tillegsstipend: number = skoleKostnad - (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner);\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend + tillegsstipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + ID6_rest_etter_ID77 - 0.1);\r\n\r\n //console.log(\"Utregning 1\");\r\n\r\n } else if (skoleKostnad > ((stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR) / nevner)\r\n && harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på tilleggsstipend (ID10) og tilleggslån (ID9)\r\n //Tilleggsstipend er ID10 \r\n //Tilleggslånet er D1 minus maks støtte og lån (ID6 og ID10), men lånet er maks opptil ID9.\r\n\r\n // ***VI REGNER FØRST UT STIPEND***\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let tillegsstipend: number = stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR / nevner;\r\n let tot_stipend: number = ID6_stipend + tillegsstipend;\r\n\r\n // ***VI REGNER UT LÅN***\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100) + ID6_rest_etter_ID77;\r\n let tilleggs_lan: number = skoleKostnad - (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner) - (stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR / nevner);\r\n\r\n //lån er maks opptil ID9. \r\n if (tilleggs_lan > stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR / nevner) {\r\n tilleggs_lan = stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR / nevner;\r\n }\r\n\r\n let tot_lan: number = ID6_lan + tilleggs_lan;\r\n\r\n skolepengeStotte.lanKroner = Math.round(tot_lan - 0.1);\r\n skolepengeStotte.stipendKroner = Math.round(tot_stipend);\r\n\r\n //console.log(\"Utregning 2\");\r\n } else if (skoleKostnad > stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner\r\n && skoleKostnad <= ((stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR) / nevner)\r\n && !harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på skolepengestøtte og tilleggslån\r\n //tilleggslånet er differansen mellom ID6 og skoleKostnad. \r\n\r\n let ID6_stipend = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n let tileggsLan: number = skoleKostnad - (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner);\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + tileggsLan + ID6_rest_etter_ID77 - 0.1);\r\n\r\n //console.log(\"Utregning 3\");\r\n } else if (skoleKostnad > ((stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR) / nevner)\r\n && !harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på skolepengestøtte og tilleggslån\r\n //får ID9 som tilleggslån\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + (stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR / nevner) + ID6_rest_etter_ID77 - 0.1);\r\n\r\n //console.log(\"Utregning 4\");\r\n } else if (skoleKostnad < stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevner) {\r\n //hvis D1 er mindre enn ID6 så får man kun D1 i støtte. Man får ikke ID9 eller ID10. \r\n //hva som er lån og hva som er stipend følger vanlige regler basert på type studie. \r\n\r\n //console.log(\"Utregning 5 - skolekostnad er mindre enn ID6\");\r\n\r\n if (skoleKostnad <= ID77) {\r\n let ID6_stipend: number = skoleKostnad * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = skoleKostnad * (skolepengeStotte.lanProsent / 100);\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan - 0.1);\r\n\r\n //console.log(\"Utregning 5a - skolekostnad er mindre enn ID77\");\r\n } else {\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n let ID6_rest_lan: number = skoleKostnad - ID77;\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + ID6_rest_lan - 0.1);\r\n\r\n //console.log(\"Utregning 5b - skolekostnad er større enn ID77\");\r\n }\r\n }\r\n\r\n //deler resultatet på 2(nevner) dersom det er snakk om ett semester. \r\n skolepengeStotte.lanKroner = Math.round(skolepengeStotte.lanKroner - 0.1); \r\n skolepengeStotte.stipendKroner = Math.round(skolepengeStotte.stipendKroner); \r\n \r\n skolepengeStotte.totaltStipendOgLan = Math.round(skolepengeStotte.lanKroner + skolepengeStotte.stipendKroner); \r\n\r\n return skolepengeStotte;\r\n}\r\n\r\nexport function regnUtRekrutteringsstipendUtveksling(valg: ValgTypes.ValgState, stamData:SatserUtlandModel | null): number {\r\n \r\n if(!harValgtLandSomGirRekrutteringsstipendUtveksling(valg)) return 0; \r\n \r\n if(stamData === null || stamData === undefined) return 0;\r\n \r\n let rekrutteringsstipend: number = 0;\r\n let antallDagerMedStotte: number = 0;\r\n\r\n if(valg.aVarighet?.value === VarighetValg.valgHel) {\r\n antallDagerMedStotte = 300;\r\n } else if(valg.aVarighet?.value === VarighetValg.valgHost) {\r\n antallDagerMedStotte = 150;\r\n } else if(valg.aVarighet?.value === VarighetValg.valgVaar) {\r\n antallDagerMedStotte = 150;\r\n } \r\n\r\n rekrutteringsstipend = stamData.SATS_ST01_STIPENDTILUTVEKSLING_DAGSATS * antallDagerMedStotte;\r\n \r\n return Math.round(rekrutteringsstipend);\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport { SatserUtlandModel } from '../Models/SatserUtlandModel';\r\nimport { ArticleContentComponent } from '../../Shared/Scripts/Components/ArticleContentComponent';\r\nimport { ModalCompontent } from '../../Shared/Scripts/Components/ModalComponent';\r\nimport * as UtregningUtland from '../Utilities/Utregning';\r\nimport VarighetValg from '../Utilities/VarighetValg';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface UtregningAProps {\r\n tittelUtregning: JSX.Element | null;\r\n satser: SatserUtlandModel | null;\r\n valg: ValgTypes.ValgState;\r\n valutaBenevnelseUtregning: string;\r\n stipendVilkarTekst: JSX.Element | null;\r\n stipendTittelUtregning: JSX.Element | null;\r\n lanTittelUtregning: JSX.Element | null;\r\n tekstForLanOgStipendSomAlleFaar: JSX.Element | null;\r\n tekstForDeMedSkolepenger: JSX.Element | null;\r\n tekstForDeMedSkolepengerOgTilleggsstipend: JSX.Element | null;\r\n tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan: JSX.Element | null;\r\n tekstForDeMedSkolepengerOgTilleggslan: JSX.Element | null;\r\n tekstForBiStudenterMedSkolepenger: JSX.Element | null;\r\n tekstForBiStudenterMed0Skolepenger: JSX.Element | null;\r\n vilkarStudieStotteLenkeTekst: JSX.Element | null;\r\n vilkarStudieStotteTittel: JSX.Element | null;\r\n vilkarStudieStotteTekst: JSX.Element | null;\r\n vilkarLukkStudieStottePopupAriaTekst: string;\r\n visUtbetalingsPlanHandler: any;\r\n utbetalingsPlanLenkeTekst: JSX.Element | null;\r\n locale: string;\r\n TekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling: JSX.Element | null;\r\n tekstForDeMedSkolepengerTilleggsstipendOgTilleggsstipendUtveksling: JSX.Element | null;\r\n tekstForDeMedSkolepengerOgTilleggsstipendTilleggslanOgTilleggsstipendUtveksling: JSX.Element | null;\r\n tekstForDeMedSkolepengerTilleggslanOgTilleggsstipendUtveksling: JSX.Element | null;\r\n tekstForDeMedSkolepengerOgTilleggsstipendUtveksling: JSX.Element | null;\r\n}\r\n\r\nexport default function UtregningFa(props: UtregningAProps): JSX.Element {\r\n const [visVilkarAModal, setVisVilkarAModal] = useState(false);\r\n const [visUtbetalingsplan, setVisUtbetalingsplan] = useState(false);\r\n\r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n \r\n function onVilkarAClick(): void {\r\n setVisVilkarAModal(true);\r\n }\r\n\r\n function onRequestLukkVilkarA(): void {\r\n setVisVilkarAModal(false);\r\n }\r\n\r\n function onVisUtbetalingsPlan(): void {\r\n if (visUtbetalingsplan) {\r\n setVisUtbetalingsplan(false);\r\n props.visUtbetalingsPlanHandler(false);\r\n } else {\r\n setVisUtbetalingsplan(true);\r\n props.visUtbetalingsPlanHandler(true);\r\n }\r\n }\r\n\r\n function erTildeltRekrutteringsstipendUtveksling() {\r\n if (UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser) > 0) return true;\r\n return false;\r\n }\r\n\r\n function hentYtelsesBeskrivelseTekst(): JSX.Element | null {\r\n if (props.valg.dSkolepenger == undefined) return null;\r\n if (props.satser == undefined) return null;\r\n\r\n \r\n let skoleKostnad: number = parseInt(props.valg.dSkolepenger.value.replace(/\\s/g, ''));\r\n\r\n let nevnerBrok: number = 1;\r\n\r\n if (\r\n props.valg.aVarighet?.value === VarighetValg.valgHost ||\r\n props.valg.aVarighet?.value === VarighetValg.valgVaar\r\n ) {\r\n nevnerBrok = 2;\r\n }\r\n\r\n console.log(\"erTildeltRekrutteringsstipendUtveksling = \"+erTildeltRekrutteringsstipendUtveksling());\r\n console.log(\"UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) = \"+UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg));\r\n console.log(\"props.valg.dSkolepenger.tillegg = \"+props.valg.dSkolepenger.tillegg); \r\n console.log(\"skoleKostnad < SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAr = \"+ (skoleKostnad < props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevnerBrok) );\r\n \r\n //hvis D4 (BI) er sjekket og D1=0\r\n if (props.valg.dSkolepenger.tillegg && skoleKostnad === 0) {\r\n return {props.tekstForBiStudenterMed0Skolepenger};\r\n }\r\n\r\n //hvis D4 (BI) er sjekket og D1 > 0\r\n if (props.valg.dSkolepenger.tillegg && skoleKostnad > 0 && !erTildeltRekrutteringsstipendUtveksling()) {\r\n return {props.tekstForBiStudenterMedSkolepenger};\r\n }\r\n\r\n //hvis D1 < ID6 og D1 > 0\r\n if (\r\n skoleKostnad < props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevnerBrok &&\r\n skoleKostnad > 0 && \r\n !UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) &&\r\n !erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepenger};\r\n }\r\n //ny\r\n if (\r\n skoleKostnad < props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevnerBrok &&\r\n skoleKostnad > 0 && \r\n !UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) && \r\n erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepengerOgTilleggsstipendUtveksling};\r\n }\r\n\r\n //hvis D1 < ID6+ID10 og E1=ja\r\n if (\r\n skoleKostnad <\r\n props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR +\r\n props.satser?.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR / nevnerBrok &&\r\n UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) &&\r\n !erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepengerOgTilleggsstipend};\r\n }\r\n if (\r\n skoleKostnad <\r\n props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR +\r\n props.satser?.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR / nevnerBrok &&\r\n UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) &&\r\n erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepengerTilleggsstipendOgTilleggsstipendUtveksling};\r\n }\r\n\r\n //hvis D1 > ID6+ID10 og E1=ja\r\n if (\r\n skoleKostnad >\r\n props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR +\r\n props.satser?.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR / nevnerBrok &&\r\n UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) &&\r\n !erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan};\r\n }\r\n if (\r\n skoleKostnad >\r\n props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR +\r\n props.satser?.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR / nevnerBrok &&\r\n UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) &&\r\n erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepengerOgTilleggsstipendTilleggslanOgTilleggsstipendUtveksling};\r\n }\r\n\r\n //hvis D1 > ID6 og E1=nei\r\n if (\r\n skoleKostnad > props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevnerBrok &&\r\n !UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) &&\r\n !erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepengerOgTilleggslan};\r\n }\r\n \r\n //\r\n if (\r\n skoleKostnad > props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR / nevnerBrok &&\r\n !UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg) &&\r\n erTildeltRekrutteringsstipendUtveksling()\r\n ) {\r\n return {props.tekstForDeMedSkolepengerTilleggslanOgTilleggsstipendUtveksling};\r\n } \r\n\r\n if (erTildeltRekrutteringsstipendUtveksling()) {\r\n return {props.TekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling};\r\n } else {\r\n return {props.tekstForLanOgStipendSomAlleFaar};\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{props.tittelUtregning}

\r\n
\r\n
\r\n
\r\n \r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).totaltStipendOgLan +\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).totaltStipendOgLan +\r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser)\r\n .totaltStipendOgLan +\r\n UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser),\r\n props.locale,\r\n )}\r\n \r\n \r\n  {props.valutaBenevnelseUtregning}\r\n \r\n
\r\n

{hentYtelsesBeskrivelseTekst()}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{props.stipendTittelUtregning}
\r\n\r\n
\r\n \r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).stipendKroner +\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).stipendKroner +\r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).stipendKroner +\r\n UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser),\r\n props.locale,\r\n )}\r\n \r\n \r\n  {props.valutaBenevnelseUtregning}\r\n \r\n
\r\n

\r\n {props.stipendVilkarTekst}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{props.lanTittelUtregning}
\r\n
\r\n \r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).lanKroner +\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).lanKroner +\r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).lanKroner,\r\n props.locale,\r\n )}\r\n \r\n \r\n  {props.valutaBenevnelseUtregning}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {props.vilkarStudieStotteLenkeTekst}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {props.utbetalingsPlanLenkeTekst}\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { SatserUtlandModel } from '../Models/SatserUtlandModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport * as UtregningUtland from '../Utilities/Utregning';\r\nimport { ModalCompontent } from '../../Shared/Scripts/Components/ModalComponent';\r\nimport { ArticleContentComponent } from '../../Shared/Scripts/Components/ArticleContentComponent';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface UtregningBProps {\r\n tittelUtregning: JSX.Element | null;\r\n satser: SatserUtlandModel | null;\r\n valg: ValgTypes.ValgState;\r\n valutaBenevnelseUtregning: string;\r\n beskrivelseLanFb: JSX.Element | null;\r\n overskriftLanFb: JSX.Element | null;\r\n tekstForLanOgStipendSomAlleFaar: JSX.Element | null;\r\n vilkarStudieStotteLenkeTekst: JSX.Element | null;\r\n vilkarStudieStotteTittel: JSX.Element | null;\r\n vilkarStudieStotteTekst: JSX.Element | null;\r\n vilkarLukkStudieStottePopupAriaTekst: string;\r\n visUtbetalingsPlanHandler: any;\r\n utbetalingsPlanLenkeTekst: JSX.Element | null;\r\n locale: string;\r\n tekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling: JSX.Element | null;\r\n}\r\n\r\nexport default function UtregningFb(props: UtregningBProps): JSX.Element {\r\n const [visVilkarBModal, setVisVilkarBModal] = useState(false);\r\n const [visUtbetalingsplan, setVisUtbetalingsplan] = useState(false);\r\n \r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n\r\n function onVilkarBClick(): void {\r\n setVisVilkarBModal(true);\r\n }\r\n\r\n function onRequestLukkVilkarA(): void {\r\n setVisVilkarBModal(false);\r\n }\r\n\r\n function onVisUtbetalingsPlan(): void {\r\n if (visUtbetalingsplan) {\r\n setVisUtbetalingsplan(false);\r\n props.visUtbetalingsPlanHandler(false);\r\n } else {\r\n setVisUtbetalingsplan(true);\r\n props.visUtbetalingsPlanHandler(true);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{props.tittelUtregning}

\r\n
\r\n
\r\n
\r\n \r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).totaltStipendOgLan +\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).totaltStipendOgLan +\r\n UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser),\r\n props.locale,\r\n )}\r\n \r\n \r\n  {props.valutaBenevnelseUtregning}\r\n \r\n
\r\n {UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser) == 0 && (\r\n

\r\n {props.tekstForLanOgStipendSomAlleFaar}\r\n

\r\n )}\r\n {UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser) > 0 && (\r\n

\r\n {props.tekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling}\r\n

\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{props.overskriftLanFb}
\r\n
\r\n \r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).totaltStipendOgLan,\r\n props.locale,\r\n )}\r\n \r\n \r\n  {props.valutaBenevnelseUtregning}\r\n \r\n
\r\n

\r\n {props.beskrivelseLanFb}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n {props.vilkarStudieStotteLenkeTekst}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {props.utbetalingsPlanLenkeTekst}\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport VeilederUtvekslingDto from '../Models/VeilederUtvekslingDto';\r\nimport { VeilederUtvekslingAppState } from '../Store';\r\nimport { connect } from 'react-redux';\r\nimport contentResolver from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { SatserUtlandModel } from '../Models/SatserUtlandModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport * as UtregningUtland from '../Utilities/Utregning';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface UtbetalingOwnProps {\r\n satser: SatserUtlandModel | null;\r\n valg: ValgTypes.ValgState;\r\n locale: string;\r\n valuta: string;\r\n}\r\n\r\ntype UtbetalingProps = UtbetalingOwnProps & MapStateToProps & {};\r\n\r\nconst UtbetalingDetaljerComponent = (props: UtbetalingProps): JSX.Element => {\r\n const { epiContext } = props;\r\n\r\n let skolepengeUtvidetStipend: number = UtregningUtland.regnUtSkolepengeUtvidetStipend(props.valg, props.satser);\r\n let skolepengeLanUtenUtvidetStipend =\r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).stipendKroner - skolepengeUtvidetStipend; \r\n\r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n \r\n function hentSkolepengeStipend(): JSX.Element | null {\r\n if (props!.valg!.dSkolepenger!.tillegg) return null;\r\n\r\n if (skolepengeUtvidetStipend > 0) {\r\n return (\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerSkolepengeStipend')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(skolepengeLanUtenUtvidetStipend, props.locale)}\r\n  {props.valuta}\r\n
\r\n ;\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerSkolepengeStipend')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).stipendKroner,\r\n props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n );\r\n }\r\n }\r\n\r\n function hentTilleggsstipend(): JSX.Element | null {\r\n if (props!.valg!.dSkolepenger!.tillegg) return null;\r\n\r\n if (skolepengeUtvidetStipend > 0) {\r\n return (\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerSkolepengeTilleggsstipend')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(skolepengeUtvidetStipend, props.locale)}\r\n  {props.valuta}\r\n
\r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n

{contentResolver(epiContext, 'tittelYtelser')}

\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'tittelYtelseKolonne')}\r\n
\r\n
\r\n {contentResolver(epiContext, 'tittelBelopKolonne')}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerBasisLan')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).totaltStipendOgLan,\r\n props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n {UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser) > 0 && (\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerTilleggsStipendUtveksling')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser),\r\n props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerSkolepengeLan')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).lanKroner,\r\n props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n {hentSkolepengeStipend()}\r\n {hentTilleggsstipend()}\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerReiselan')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).lanKroner,\r\n props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerReiseStipend')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).stipendKroner,\r\n props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\ninterface MapStateToProps {\r\n epiContext: EpiContext;\r\n}\r\n\r\nexport default connect(\r\n (state: VeilederUtvekslingAppState): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n };\r\n },\r\n)(UtbetalingDetaljerComponent);\r\n","import React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { SatserUtlandModel } from '../Models/SatserUtlandModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport { ResultatValgVisning } from '../Store/Resultat/Types';\r\nimport VeilederUtvekslingDto from '../Models/VeilederUtvekslingDto';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport contentResolver from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { resolveRawText } from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { VeilederUtvekslingAppState } from '../Store';\r\nimport VerdensdelValg from '../Utilities/VerdensdelValg';\r\nimport * as UtregningUtland from '../Utilities/Utregning';\r\nimport VarighetValg from '../Utilities/VarighetValg';\r\nimport UtbetalingsPlanDetaljer from './UtbetalingsPlanDetaljer';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface UtbetalingOwnProps {\r\n satser: SatserUtlandModel | null;\r\n valg: ValgTypes.ValgState;\r\n resultat: ResultatValgVisning;\r\n locale: string;\r\n valuta: string;\r\n}\r\n\r\ntype UtbetalingProps = UtbetalingOwnProps & MapStateToProps;\r\n\r\nfunction Utbetalingsplan(props: UtbetalingProps): JSX.Element {\r\n const { epiContext } = props;\r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n\r\n let brokNevner: number = 1;\r\n if (props.valg.aVarighet?.value === VarighetValg.valgHel) brokNevner = 2;\r\n\r\n let utbetalingsDetaljer: JSX.Element | null = null;\r\n if (props.resultat.visBoksFa) {\r\n utbetalingsDetaljer = (\r\n \r\n );\r\n }\r\n\r\n function hentUtbetalingsMnd(): string {\r\n if (\r\n props.valg.bVerdensdel?.value === VerdensdelValg.b5_oseania ||\r\n props.valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika\r\n ) {\r\n return resolveRawText(epiContext, 'mndJuni');\r\n } else {\r\n return resolveRawText(epiContext, 'mndJuli');\r\n }\r\n }\r\n\r\n function hentBasisStotteHalvtÅr(): number {\r\n if (props.satser === null || props.satser === undefined) return 0;\r\n\r\n if (\r\n props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === null ||\r\n props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === undefined\r\n )\r\n return 0;\r\n\r\n return Math.round(props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG * 150);\r\n }\r\n\r\n function hentBasisStotteEnMnd(): number {\r\n if (props.satser === null || props.satser === undefined) return 0;\r\n\r\n if (\r\n props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === null ||\r\n props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === undefined\r\n )\r\n return 0;\r\n\r\n return Math.round(props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG * 30);\r\n }\r\n\r\n function hentHtmlForHostSemester(): JSX.Element | null {\r\n let html: JSX.Element | null = null;\r\n\r\n if (\r\n props.valg.aVarighet?.value === VarighetValg.valgHel ||\r\n props.valg.aVarighet?.value === VarighetValg.valgHost\r\n ) {\r\n html = (\r\n
\r\n

\r\n {contentResolver(epiContext, 'kolonneTittelHost')}\r\n

\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelDatoUtbetalingsplan')}\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelBelopUtbetalingsplan')}\r\n
\r\n
\r\n
\r\n
\r\n {hentUtbetalingsMnd()}\r\n
\r\n
\r\n {\r\n //tar minus 0.1 for å unngå feil i avrundingen.\r\n //dersom svaret blir 0.5 så avrunder desember alltid ned, og juni/juli alltid opp.\r\n UtregningUtland.formatNumber(\r\n Math.round(\r\n (UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser)\r\n .totaltStipendOgLan +\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser)\r\n .totaltStipendOgLan) /\r\n brokNevner -\r\n 0.1 +\r\n UtregningUtland.regnUtRekrutteringsstipendUtveksling(\r\n props.valg,\r\n props.satser,\r\n ) /\r\n brokNevner,\r\n ) + hentBasisStotteHalvtÅr(),\r\n props.locale,\r\n )\r\n }\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n return html;\r\n }\r\n\r\n function hentHtmlForVaarSemester(): JSX.Element | null {\r\n let html: JSX.Element | null = null;\r\n\r\n if (\r\n props.valg.aVarighet?.value === VarighetValg.valgHel ||\r\n props.valg.aVarighet?.value === VarighetValg.valgVaar\r\n ) {\r\n html = (\r\n
\r\n

\r\n {contentResolver(epiContext, 'kolonneTittelVar')}\r\n

\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelDatoUtbetalingsplan')}\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelBelopUtbetalingsplan')}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'mndDesember')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n Math.round(\r\n (UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser)\r\n .totaltStipendOgLan +\r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser)\r\n .totaltStipendOgLan) /\r\n brokNevner,\r\n ) +\r\n hentBasisStotteHalvtÅr() +\r\n UtregningUtland.regnUtRekrutteringsstipendUtveksling(props.valg, props.satser) /\r\n brokNevner,\r\n props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'mndJuni')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(hentBasisStotteEnMnd(), props.locale)}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n return html;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {hentHtmlForHostSemester()}\r\n {hentHtmlForVaarSemester()}\r\n
\r\n
\r\n
\r\n

\r\n {contentResolver(epiContext, 'tittelVenstreSpalte')}\r\n

\r\n {contentResolver(epiContext, 'venstreSpalte')}\r\n
\r\n
\r\n

\r\n {contentResolver(epiContext, 'tittelHoyreSpalte')}\r\n

\r\n {contentResolver(epiContext, 'hoyreSpalte')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{utbetalingsDetaljer}
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\ninterface MapStateToProps {\r\n epiContext: EpiContext;\r\n}\r\n\r\nexport default connect(\r\n (state: VeilederUtvekslingAppState): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n };\r\n },\r\n)(Utbetalingsplan);\r\n","import React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport { connect } from 'react-redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { AnyAction } from 'redux';\r\n\r\nimport { EpiContext } from '../Shared/Scripts/Store/EpiContext/Types';\r\nimport { resolveRawText } from '../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { FeilmeldingComponent } from '../Shared/Scripts/Components/FeilmeldingComponent';\r\nimport contentResolver from '../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport RadioButtonsStegContainer from '../Shared/Scripts/Components/RadioButtonsStegComponent';\r\nimport Valg from '../Shared/Scripts/Models/Valg';\r\nimport ValgTillegg from '../Shared/Scripts/Models/ValgMedtillegg';\r\nimport { DisplayValue } from '../Shared/Scripts/Models/Valg';\r\nimport SkolePengerInputSteg from '../Shared/Scripts/Components/SkolePengerSteg';\r\nimport VelgUniversitetComponentVisning from '../Shared/Scripts/Components/VelgUniversitetComponent';\r\nimport LandOgUniversitetModel from '../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nimport VeilederUtvekslingDto from './Models/VeilederUtvekslingDto';\r\nimport { SatserUtlandModel } from './Models/SatserUtlandModel';\r\nimport { VeilederUtvekslingAppState } from './Store';\r\nimport * as ValgTypes from './Store/Valg/Types';\r\nimport { ResultatValg } from './Store/Resultat/Types';\r\nimport { updateValg, updateVisning } from './Store/Valg/Actions';\r\nimport * as Ids from './Models/Ids';\r\nimport VarighetValg from './Utilities/VarighetValg';\r\nimport VerdensdelValg from './Utilities/VerdensdelValg';\r\nimport SelectOptionStegDisplay from '../Shared/Scripts/Components/SelectOptionStegComponent';\r\nimport UtregningFa from './Component/UtregningFa';\r\nimport UtregningFb from './Component/UtregningFb';\r\nimport Utbetalingsplan from './Component/UtbetalingsPlan';\r\nimport SiteImproveHandler, {\r\n SiteImproveState,\r\n SiteImproveEvents,\r\n SiteImproveKategorier,\r\n} from '../Shared/Scripts/Utilities/SiteImproveEventsHandler';\r\n\r\ninterface AppOwnProps {}\r\nconst RadioButtonsStegComponent = RadioButtonsStegContainer();\r\ntype AppProps = AppOwnProps & MapStateToProps & MapDispatchToProps;\r\nReactModal.setAppElement(document.getElementById(Ids.AppContainerId) as HTMLElement);\r\ninterface AppState {}\r\n\r\nclass App extends React.Component {\r\n constructor(props: AppProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n render(): JSX.Element {\r\n const { valg, dispatchUpdateValg, epiContext, resultat, satser, universiteter } = this.props;\r\n const { epiModel, locale, valuta } = this.props.epiContext;\r\n\r\n function registerSiteImproveEvents(): void {\r\n if (!SiteImproveState.Startet) {\r\n if (valg.aVarighet != undefined) {\r\n //veileder påstartet\r\n SiteImproveState.Startet = true;\r\n SiteImproveHandler.registerSiteImproveEvent(\r\n SiteImproveKategorier.Veileder,\r\n SiteImproveEvents.VeilederStart,\r\n SiteImproveHandler.hentOverskrift(),\r\n );\r\n }\r\n }\r\n\r\n if (!SiteImproveState.Fullfort) {\r\n if (resultat.visBoksFa || resultat.visBoksFb) {\r\n //veileder fullført\r\n SiteImproveState.Fullfort = true;\r\n SiteImproveHandler.registerSiteImproveEvent(\r\n SiteImproveKategorier.Veileder,\r\n SiteImproveEvents.VeilederFullfort,\r\n SiteImproveHandler.hentOverskrift(),\r\n );\r\n }\r\n }\r\n }\r\n\r\n function getLand(): DisplayValue[] {\r\n const items: DisplayValue[] = [];\r\n\r\n if (universiteter == null || universiteter == undefined || universiteter.length <= 0) return [];\r\n\r\n let annetLand: LandOgUniversitetModel | null = null;\r\n\r\n for (let i = 0; i < universiteter.length; i++) {\r\n if (universiteter[i].Kode === valg.bVerdensdel?.id) {\r\n let erAlleredeLagtTilILandListen: boolean = false;\r\n for (let x = 0; x < items.length; x++) {\r\n if (items[x].id == universiteter[i].Landkode) erAlleredeLagtTilILandListen = true;\r\n }\r\n\r\n if (erAlleredeLagtTilILandListen) continue;\r\n\r\n if (universiteter[i].Landkode === 'E') {\r\n annetLand = universiteter[i];\r\n continue;\r\n }\r\n\r\n if (locale === 'en-US') {\r\n items.push({\r\n id: universiteter[i].Landkode,\r\n displayValue: universiteter[i].EngelskLandNavn,\r\n });\r\n } else {\r\n items.push({\r\n id: universiteter[i].Landkode,\r\n displayValue: universiteter[i].LandNavn,\r\n });\r\n }\r\n }\r\n }\r\n\r\n let sorted: DisplayValue[] = items.sort(function (a, b) {\r\n var nameA = a.displayValue.toUpperCase();\r\n var nameB = b.displayValue.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n if (annetLand !== null) {\r\n if (locale === 'en-US') {\r\n sorted.push({\r\n id: annetLand.Landkode,\r\n displayValue: annetLand.EngelskLandNavn,\r\n });\r\n } else {\r\n sorted.push({\r\n id: annetLand.Landkode,\r\n displayValue: annetLand.LandNavn,\r\n });\r\n }\r\n }\r\n\r\n return sorted;\r\n }\r\n\r\n function hentUniversiteterBasertPaLandValg() {\r\n let items: DisplayValue[] = [];\r\n\r\n if (valg.cLand?.id === 'E') {\r\n return items;\r\n }\r\n\r\n for (let i = 0; i < universiteter!.length; i++) {\r\n if (universiteter![i].Landkode === valg.cLand?.id) {\r\n items.push({ id: universiteter![i].Universitet, displayValue: universiteter![i].Universitet });\r\n }\r\n }\r\n return items;\r\n }\r\n\r\n if (epiContext.epiModelFeilet) {\r\n return ;\r\n }\r\n\r\n if (epiModel != null) {\r\n registerSiteImproveEvents()\r\n return (\r\n
\r\n ): void => {\r\n dispatchUpdateValg({ aVarighet: nyttValg });\r\n }}\r\n neverCollapse={true}\r\n classModifier=\"c-veileder__panel--input-white\"\r\n value={valg.aVarighet}\r\n />\r\n {resultat.visBoksB && (\r\n {contentResolver(epiContext, 'infoVerdensdel')}
}\r\n sporsmal=\"ledetekstVerdensdel\"\r\n neverCollapse={false}\r\n valg={VerdensdelValg.bValg}\r\n onInputChange={(nyttValg: Valg): void => {\r\n dispatchUpdateValg({\r\n bVerdensdel: nyttValg,\r\n cLand: undefined,\r\n visUtbetalingsplan: false,\r\n dSkolepenger: undefined,\r\n });\r\n }}\r\n value={valg.bVerdensdel}\r\n />\r\n )}\r\n {resultat.visBoksC && (\r\n ): void => {\r\n dispatchUpdateValg({ cLand: nyttValg, eUniversitet: undefined, visUtbetalingsplan: false, });\r\n }}\r\n value={valg.cLand}\r\n />\r\n )}\r\n {resultat.visBoksD && (\r\n ): void => {\r\n dispatchUpdateValg({ dSkolepenger: nyttValg });\r\n }}\r\n value={valg.dSkolepenger}\r\n visMerOmSkolePengerLenkeTekst={contentResolver(epiContext, 'merOmSkolePengerLenkeTekst')}\r\n lukkSkolepengerPopupAriaTekst={resolveRawText(epiContext, 'lukkSkolepengerPopupAriaTekst')}\r\n tittelMerSkolePengerTekst={contentResolver(epiContext, 'tittelMerSkolePengerTekst', 2)}\r\n brodtekstMerSkolePengerTekst={contentResolver(\r\n epiContext,\r\n 'brodtekstMerSkolePengerTekst',\r\n 2,\r\n )}\r\n locale={locale}\r\n visBiCheckbox={true}\r\n biLabel={resolveRawText(epiContext, 'biStudent')}\r\n />\r\n )}\r\n {resultat.visBoksE && (\r\n ): void => {\r\n dispatchUpdateValg({ eUniversitet: nyttValg });\r\n }}\r\n value={valg.eUniversitet}\r\n showSearch={true}\r\n />\r\n )}\r\n {resultat.visBoksFa && (\r\n {\r\n dispatchUpdateValg({ visUtbetalingsplan: visPlan });\r\n }}\r\n valutaBenevnelseUtregning={valuta}\r\n stipendVilkarTekst={contentResolver(epiContext, 'stipendVilkarTekst')}\r\n stipendTittelUtregning={contentResolver(epiContext, 'stipendTittelUtregning')}\r\n lanTittelUtregning={contentResolver(epiContext, 'lanTittelUtregning')}\r\n tekstForLanOgStipendSomAlleFaar={contentResolver(\r\n epiContext,\r\n 'tekstForLanOgStipendSomAlleFaar',\r\n )}\r\n tekstForDeMedSkolepenger={contentResolver(epiContext, 'tekstForDeMedSkolepenger')}\r\n tekstForDeMedSkolepengerOgTilleggsstipend={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggsstipend',\r\n )}\r\n tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan',\r\n )}\r\n tekstForDeMedSkolepengerOgTilleggslan={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggslan',\r\n )}\r\n tekstForBiStudenterMedSkolepenger={contentResolver(\r\n epiContext,\r\n 'tekstForBiStudenterMedSkolepenger',\r\n )}\r\n tekstForBiStudenterMed0Skolepenger={contentResolver(\r\n epiContext,\r\n 'tekstForBiStudenterMed0Skolepenger',\r\n )}\r\n vilkarStudieStotteLenkeTekst={contentResolver(epiContext, 'vilkarStudieStotteLenkeTekst')}\r\n vilkarStudieStotteTittel={contentResolver(epiContext, 'vilkarStudieStotteTittel')}\r\n vilkarStudieStotteTekst={contentResolver(epiContext, 'vilkarStudieStotteTekst')}\r\n vilkarLukkStudieStottePopupAriaTekst={resolveRawText(\r\n epiContext,\r\n 'vilkarLukkStudieStottePopupAriaTekst',\r\n )}\r\n utbetalingsPlanLenkeTekst={contentResolver(epiContext, 'utbetalingsPlanLenkeTekst')}\r\n locale={locale}\r\n TekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling={contentResolver(\r\n epiContext,\r\n 'tekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling',\r\n )}\r\n tekstForDeMedSkolepengerTilleggsstipendOgTilleggsstipendUtveksling={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerTilleggsstipendOgTilleggsstipendUtveksling',\r\n )}\r\n tekstForDeMedSkolepengerOgTilleggsstipendTilleggslanOgTilleggsstipendUtveksling={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggsstipendTilleggslanOgTilleggsstipendUtveksling',\r\n )}\r\n tekstForDeMedSkolepengerTilleggslanOgTilleggsstipendUtveksling={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerTilleggslanOgTilleggsstipendUtveksling',\r\n )}\r\n tekstForDeMedSkolepengerOgTilleggsstipendUtveksling={contentResolver(epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggsstipendUtveksling')}\r\n />\r\n )}\r\n {resultat.visBoksFb && (\r\n {\r\n dispatchUpdateValg({ visUtbetalingsplan: visPlanen });\r\n }}\r\n valutaBenevnelseUtregning={valuta}\r\n beskrivelseLanFb={contentResolver(epiContext, 'beskrivelseLanFb')}\r\n overskriftLanFb={contentResolver(epiContext, 'overskriftLanFb')}\r\n tekstForLanOgStipendSomAlleFaar={contentResolver(\r\n epiContext,\r\n 'tekstForLanOgStipendSomAlleFaar',\r\n )}\r\n vilkarStudieStotteLenkeTekst={contentResolver(epiContext, 'vilkarStudieStotteLenkeTekst')}\r\n vilkarStudieStotteTittel={contentResolver(epiContext, 'vilkarStudieStotteTittel')}\r\n vilkarStudieStotteTekst={contentResolver(epiContext, 'vilkarStudieStotteTekst')}\r\n vilkarLukkStudieStottePopupAriaTekst={resolveRawText(\r\n epiContext,\r\n 'vilkarLukkStudieStottePopupAriaTekst',\r\n )}\r\n utbetalingsPlanLenkeTekst={contentResolver(epiContext, 'utbetalingsPlanLenkeTekst')}\r\n locale={locale}\r\n tekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling={contentResolver(\r\n epiContext,\r\n 'tekstForLanOgStipendSomAlleFaarOgTilleggsstipendUtveksling',\r\n )}\r\n />\r\n )}\r\n {resultat.visUtbetalingsplan && (\r\n \r\n )}\r\n \r\n );\r\n } else {\r\n return
Laster
;\r\n }\r\n }\r\n}\r\n\r\ninterface MapStateToProps {\r\n valg: ValgTypes.ValgState;\r\n epiContext: EpiContext;\r\n resultat: ResultatValg;\r\n satser: SatserUtlandModel | null;\r\n universiteter: Array | null;\r\n}\r\n\r\ninterface MapDispatchToProps {\r\n dispatchUpdateValg: (newValg: Partial) => void;\r\n}\r\n\r\nconst mapDispatchToProps = (\r\n dispatch: ThunkDispatch,\r\n): MapDispatchToProps => ({\r\n dispatchUpdateValg: (newValg: Partial): void => {\r\n dispatch(updateValg(newValg));\r\n dispatch(updateVisning());\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state: VeilederUtvekslingAppState): MapStateToProps => ({\r\n valg: state.valg,\r\n epiContext: state.epiContext,\r\n resultat: state.resultat,\r\n satser: state.satser,\r\n universiteter: state.universiteter,\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\r\n","import { ValgStateActionTypes, ValgState, UPDATE_VALG } from './Types';\r\n\r\nexport const initialState: ValgState = {\r\n aVarighet: undefined,\r\n bVerdensdel: undefined,\r\n cLand: undefined,\r\n dSkolepenger: undefined,\r\n eUniversitet: undefined,\r\n visUtbetalingsplan: false,\r\n};\r\n\r\nexport function valgReducer(state: ValgState = initialState, action: ValgStateActionTypes): ValgState {\r\n const newState = getNewState();\r\n return newState;\r\n\r\n function getNewState(): ValgState {\r\n switch (action.type) {\r\n case UPDATE_VALG: {\r\n if (action.payload.aVarighet) {\r\n return {\r\n ...initialState,\r\n ...action.payload,\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n }\r\n }\r\n default:\r\n return state;\r\n }\r\n }\r\n}\r\n","import { ResultatValg, SET_VISNING, ResultatActionTypes } from './Types';\r\nimport { ValgStateActionTypes } from '../Valg/Types';\r\n\r\nconst initialState: ResultatValg = {\r\n visBoksB: false,\r\n visBoksC: false,\r\n visBoksD: false,\r\n visBoksE: false,\r\n visBoksFa: false,\r\n visBoksFb: false, \r\n visUtbetalingsplan: false,\r\n};\r\n\r\nexport function resultatReducer(\r\n state: ResultatValg = initialState,\r\n action: ValgStateActionTypes | ResultatActionTypes,\r\n): ResultatValg {\r\n switch (action.type) {\r\n case SET_VISNING: {\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SatserUtlandModel } from '../../Models/SatserUtlandModel';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nexport const SET_SATSER = 'SET_SATSER';\r\nexport const SET_UNIVERSITETER = 'SET_UNIVERSITETER';\r\n\r\nexport interface SetSatserAction {\r\n type: typeof SET_SATSER;\r\n payload: SatserUtlandModel;\r\n}\r\n\r\nexport interface SetUniversiteterAction {\r\n type: typeof SET_UNIVERSITETER;\r\n payload: Array\r\n}\r\n\r\nexport type UniversitTypes = SetUniversiteterAction;\r\nexport type SatserActionTypes = SetSatserAction;","import { SET_UNIVERSITETER, SET_SATSER, SatserActionTypes, UniversitTypes } from './Types';\r\nimport { SatserUtlandModel } from '../../Models/SatserUtlandModel';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nconst initialState: SatserUtlandModel | null = null;\r\nconst universitetInitialState: Array | null = null;\r\n\r\nexport function satserReducer(state: SatserUtlandModel | null = initialState, action: SatserActionTypes): SatserUtlandModel | null {\r\n switch (action.type) {\r\n case SET_SATSER: {\r\n return action.payload;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function universiteterReducer(state: Array | null = universitetInitialState, action: UniversitTypes): Array | null {\r\n switch (action.type) {\r\n case SET_UNIVERSITETER: {\r\n return action.payload;\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import ReduxThunk from 'redux-thunk';\r\nimport { createStore, combineReducers, Store, applyMiddleware } from 'redux';\r\nimport { EpiContext, UpdateEpiContextActionTypes } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport { epiContextReducer } from '../../Shared/Scripts/Store/EpiContext/Reducers';\r\nimport { stegVisningReducer } from '../../Shared/Scripts/Store/StegVisning/Reducers';\r\nimport { EpiAppStateMedSteg } from '../../Shared/Scripts/Store/Types';\r\nimport VeilederUtvekslingDto from '../Models/VeilederUtvekslingDto';\r\nimport { valgReducer } from './Valg/Reducers';\r\nimport { resultatReducer } from './Resultat/Reducers';\r\nimport { satserReducer, universiteterReducer } from './Satser/Reducers';\r\n\r\nconst rootReducer = combineReducers({\r\n valg: valgReducer,\r\n epiContext: (\r\n state: EpiContext | undefined,\r\n action: UpdateEpiContextActionTypes,\r\n ): EpiContext => epiContextReducer(state, action),\r\n stegVisning: stegVisningReducer,\r\n resultat: resultatReducer,\r\n satser: satserReducer, \r\n universiteter: universiteterReducer,\r\n});\r\n\r\nexport type VeilederUtvekslingAppState = EpiAppStateMedSteg & {\r\n valg: ReturnType;\r\n resultat: ReturnType;\r\n satser: ReturnType; \r\n universiteter: ReturnType;\r\n};\r\n\r\nexport default function configureStore(): Store {\r\n return createStore(rootReducer, applyMiddleware(ReduxThunk));\r\n}","import axios, { AxiosResponse } from 'axios';\r\n\r\nexport const getSatser = (): Promise> => {\r\n return axios.get('/api/mt1535/satser/utlandsatser');\r\n};\r\n\r\nexport interface SatserUtlandModel {\r\n SATS_ST01_SKOLEPENGESTOTTE_MAKS_PER_AR_NORDEN: number;\r\n SATS_ST01_MAKS_BASISSTOTTE_DAG: number;\r\n SATS_ST01_REISETILSKUDD_NORD_OG_MELLOM_AMERIKA: number;\r\n SATS_ST01_REISETILSKUDD_ASIA: number;\r\n SATS_ST01_REISETILSKUDD_OSEANIA: number;\r\n SATS_ST01_REISETILSKUDD_AFRIKA: number;\r\n SATS_ST01_REISETILSKUDD_SOR_AMERIKA: number;\r\n SATS_ST01_REISETILSKUDD_EUROPA: number;\r\n SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR: number;\r\n SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR: number;\r\n SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR: number;\r\n SATS_ST01_SKOLEPENGEGRUNNLAG_STIPEND_MAKS_PER_AAR: number;\r\n SATS_ST01_STIPENDTILUTVEKSLING_DAGSATS: number;\r\n}\r\n","import { SET_SATSER, SetSatserAction, SetUniversiteterAction, SET_UNIVERSITETER } from './Types';\r\nimport { SatserUtlandModel } from '../../Models/SatserUtlandModel';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nexport function setSatser(satser: SatserUtlandModel): SetSatserAction {\r\n return {\r\n type: SET_SATSER,\r\n payload: satser,\r\n };\r\n}\r\n\r\nexport function setUniversiteter(universiteter: Array): SetUniversiteterAction {\r\n return {\r\n type: SET_UNIVERSITETER,\r\n payload: universiteter\r\n }\r\n}","import axios, { AxiosResponse } from 'axios';\r\nimport LandOgUniversitetModel from '../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nexport const hentUniversiteter = (id: string): Promise>> => {\r\n return axios.get>('/api/mt1535/satser/utlandutveksling/' + id);\r\n};","import React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { Provider } from 'react-redux';\r\nimport App from './App';\r\nimport configureStore from './Store';\r\nimport InitEpiMessages from '../Shared/Scripts/Utilities/EpiMessages';\r\nimport { updateLanguage } from '../Shared/Scripts/Store/EpiContext/Actions';\r\nimport { epiResolveLanguage } from '../Shared/Scripts/Utilities/EpiResolveLanguage';\r\nimport * as Ids from './Models/Ids';\r\nimport * as SatserUtlandModel from './Models/SatserUtlandModel';\r\nimport { AxiosResponse } from 'axios';\r\nimport { setSatser, setUniversiteter } from './Store/Satser/Actions';\r\nimport * as Universiteter from './Utilities/Universiteter';\r\nimport LandOgUniversitetModel from '../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nconst store = configureStore();\r\nstore.dispatch(updateLanguage(epiResolveLanguage()));\r\n\r\nconst container = document.getElementById(Ids.AppContainerId);\r\n\r\nif (container != null) {\r\n const root = createRoot(container!);\r\n const contentLink = container.attributes['data-content'].value as string;\r\n InitEpiMessages(store, contentLink);\r\n\r\n SatserUtlandModel.getSatser()\r\n .then((response: AxiosResponse): void => {\r\n store.dispatch(setSatser(response.data));\r\n })\r\n .catch((reason: any): void => {\r\n //store.dispatch(setVisning({ visGenerellFeil: true }));\r\n });\r\n\r\n Universiteter.hentUniversiteter(contentLink)\r\n .then((response: AxiosResponse>): void => {\r\n store.dispatch(setUniversiteter(response.data));\r\n }).catch((reason: any): void => {\r\n //store.dispatch(setVisning({ visGenerellFeil: true }));\r\n });\r\n\r\n const AppRoot = (): JSX.Element => (\r\n \r\n \r\n \r\n );\r\n\r\n root.render();\r\n}"],"names":["useState","useEffect","UtregningUtland.regnUtRekrutteringsstipendUtveksling","UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend","jsx","jsxs","UtregningUtland.formatNumber","UtregningUtland.regnUtBasisLan","UtregningUtland.regnUtReiseStotte","UtregningUtland.regnUtSkolepengerStotte","UtregningUtland.regnUtSkolepengeUtvidetStipend","contentResolver","Ids.AppContainerId","Ids.BoksA","Ids.BoksB","Ids.BoksD","VelgUniversitetComponentVisning","Utbetalingsplan","initialState","ReduxThunk","createRoot","SatserUtlandModel.getSatser","Universiteter.hentUniversiteter","App"],"mappings":";;;;;;;;;;;;;;;;;;;;AAYO,MAAM,cAAc;ACApB,MAAM,cAAc;ACVpB,SAAS,WAAW,aAA6D;AAC7E,SAAA;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AACJ;ACJA,MAAM,SAAS;AACf,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,oBAAoB;AAC1B,MAAM,UAAU;AAChB,MAAM,aAAa;AAEnB,MAAM,QAAuD;AAAA,EACzD,EAAE,IAAI,UAAU,OAAO,QAAQ,OAAO,aAAa;AAAA,EACnD,EAAE,IAAI,QAAQ,OAAO,MAAM,OAAO,WAAW;AAAA,EAC7C,EAAE,IAAI,UAAU,OAAO,QAAQ,OAAO,aAAa;AAAA,EACnD,EAAE,IAAI,qBAAqB,OAAO,mBAAmB,OAAO,wBAAwB;AAAA,EACpF,EAAE,IAAI,WAAW,OAAO,SAAS,OAAO,cAAc;AAAA,EACtD,EAAE,IAAI,cAAc,OAAO,YAAY,OAAO,iBAAiB;AACnE;AAEA,MAAe,iBAAA;AAAA,EACX,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,YAAY;AAAA,EACZ,eAAe;AAAA,EACf;AACJ;ACxBA,MAAM,WAAW;AACjB,MAAM,WAAW;AACjB,MAAM,UAAU;AAEhB,MAAM,eAA8D;AAAA,EAChE;AAAA,IACI,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACX;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACX;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAEf;AAEA,MAAe,eAAA;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AC5BO,SAAS,iDAAiD,MAAoC;AAC7F,MAAA,KAAK,OAAO,OAAO,QAEnB,KAAK,OAAO,OAAO,QAEnB,KAAK,OAAO,OAAO,QAEnB,KAAK,OAAO,OAAO,QAEnB,KAAK,OAAO,OAAO,QAEnB,KAAK,OAAO,OAAO;AACZ,WAAA;AACJ,SAAA;AACX;ACLO,SAAS,WAAW,SAAmD;AACnE,SAAA;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AACJ;AAEO,MAAM,gBAAgB,MAAoE;AACtF,SAAA,CAAC,UAAoE,aAAqD;AAC7H,UAAM,eAAe,SAAS;AAExB,UAAA,WAAW,KAAK,YAAY;AAC5B,UAAA,WAAW,KAAK,YAAY;AAC5B,UAAA,WAAW,KAAK,YAAY;AAC5B,UAAA,WAAW,KAAK,YAAY;AAC5B,UAAA,YAAY,MAAM,cAAc,QAAQ;AAC9C,UAAM,YAAY,MAAM,cAAc,QAAkB;AAClD,UAAA,qBAAqB,aAAa,YAAY;AAC3C,aAAA,WAAW,EAAE,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,mBAAmB,CAAC,CAAC;AAAA,EAC7G;AACJ;AAEA,MAAM,OAAO,CAAC,UAA+C;AACrD,MAAA,MAAM,KAAK,cAAc,QAAQ,MAAM,KAAK,cAAc,OAAkB,QAAA;AAEzE,SAAA;AACX;AAEA,MAAM,OAAO,CAAC,UAA+C;AACrD,MAAA,MAAM,KAAK,gBAAgB,QACxB,MAAM,KAAK,gBAAgB,WAC1B,MAAM,KAAK,YAAY,UAAU,eAAe,WAC7C,MAAM,KAAK,YAAY,UAAU,eAAe,aAChD,MAAM,KAAK,YAAY,UAAU,eAAe,wBAChD,MAAM,KAAK,YAAY,UAAU,eAAe,cAChD,MAAM,KAAK,YAAY,UAAU,eAAe,iBAChD,MAAM,KAAK,YAAY,UAAU,eAAe,WAClD,QAAA;AAEF,SAAA;AACX;AAGA,MAAM,OAAO,CAAC,UAA+C;AACzD,MAAI,MAAM,KAAK,gBAAgB,OAAkB,QAAA;AAE7C,MAAA,MAAM,KAAK,gBAAgB,UAAa,MAAM,KAAK,UAAU,OAAkB,QAAA;AAE5E,SAAA;AACX;AAGA,MAAM,OAAO,CAAC,UAA+C;AAEzD,MAAI,MAAM,KAAK,iBAAiB,OAAkB,QAAA;AAE9C,MAAA,MAAM,KAAK,iBAAiB,UAAa,MAAM,KAAK,aAAa,QAAgB,QAAA;AAEjF,MAAA,MAAM,WAAW,KAAa,QAAA;AAI5B,QAAA,cAAsB,SAAS,MAAM,KAAK,aAAa,MAAM,WAAW,QAAQ,OAAO,EAAE,CAAC;AAEhG,MAAI,SAAiB;AACjB,MAAA,MAAM,KAAK,WAAW,UAAU,aAAa,YAAY,MAAM,KAAK,WAAW,UAAU,aAAa,UAAU;AACvG,aAAA;AAAA,EAAA;AAGb,MAAI,eAAgB,MAAM,OAAO,yDAAyD,OAAgB,QAAA;AAGtG,MAAA,+CAA+C,MAAM,MAAM,MAAM,aAAa,KAAK,MAAM,KAAK,iBAAiB,OAAkB,QAAA;AAE9H,SAAA;AACX;AAEA,MAAM,QAAQ,CAAC,OAAmC,aAA+B;AAG7E,OAAK,MAAM,KAAK,aAAa,UAAU,eAAe,aAClD,MAAM,KAAK,aAAa,UAAU,eAAe,kBACjD,MAAM,KAAK,iBAAiB,UAC5B,MAAM,KAAK,aAAa,OAAO;AACxB,WAAA;AAEX,MAAI,MAAM,KAAK,iBAAiB,UAAa,MAAM,KAAK,aAAa,WAAW,MAAM,KAAK,aAAa,OAAO,mBAA2B,QAAA;AAE1I,MAAI,MAAM,KAAK,iBAAiB,UAC5B,MAAM,KAAK,aAAa,OAAO,sBAC/B,MAAM,KAAK,UAAU,UACrB,MAAM,KAAK,MAAM,OAAO;AACjB,WAAA;AAEP,MAAA,MAAM,KAAK,iBAAiB,QAAW;AACjC,UAAA,cAAsB,SAAS,MAAM,KAAK,aAAa,MAAM,WAAW,QAAQ,OAAO,EAAE,CAAC;AAE5F,QAAA,MAAM,WAAW,KAAa,QAAA;AAElC,QAAI,SAAiB;AACjB,QAAA,MAAM,KAAK,WAAW,UAAU,aAAa,YAAY,MAAM,KAAK,WAAW,UAAU,aAAa,UAAU;AACvG,eAAA;AAAA,IAAA;AAGT,QAAA,eAAe,MAAM,OAAO,yDAAyD;AAC9E,aAAA;AAGX,QAAI,oCAAoC,MAAM,IAAI,KAAK,CAAC,YAAY,cAAe,MAAM,OAAO,yDAAyD,UAAW,MAAM,KAAK,cAAc,OAAO;AACzL,aAAA;AAAA,EAAA;AAGX,MAAA,oCAAoC,MAAM,IAAI,KAC9C,MAAM,KAAK,iBAAiB,UAC5B,MAAM,KAAK,cAAc,OAAO,sBAChC,MAAM,KAAK,iBAAiB,UAC5B,MAAM,KAAK,cAAc,SAAe,MAAA;AACjC,WAAA;AAEP,MAAA,CAAC,SAAiB,QAAA;AAEtB,MAAI,MAAM,KAAK,iBAAiB,UAC5B,MAAM,KAAK,cAAc,SAAA,MAAe,MACxC,MAAM,KAAK,cAAc,OAAO;AACzB,WAAA;AAEJ,SAAA;AACX;AAEA,MAAM,QAAQ,CAAC,OAAmC,UAAmB,aAA+B;AAE5F,MAAA,CAAC,SAAiB,QAAA;AAGtB,OAAK,MAAM,KAAK,aAAa,UAAU,eAAe,aAClD,MAAM,KAAK,aAAa,UAAU,eAAe,mBAChD,MAAM,KAAK,iBAAiB,UACzB,MAAM,KAAK,cAAc,OAAO;AAC7B,WAAA;AAGX,MAAI,MAAM,KAAK,iBAAiB,UAAa,MAAM,KAAK,aAAa,WAAW,MAAM,KAAK,aAAa,OAAO,mBAA2B,QAAA;AAG1I,MAAI,MAAM,KAAK,UAAU,UAAa,MAAM,KAAK,MAAM,MAAM,OAAO,MAAM,KAAK,iBAAiB,UAAa,MAAM,KAAK,cAAc,OAAO,mBAA2B,QAAA;AAGxK,MAAI,oCAAoC,MAAM,IAAI,KAC9C,CAAC,+CAA+C,MAAM,MAAM,MAAM,aAAa,KAC/E,MAAM,KAAK,iBAAiB,UAC5B,MAAM,KAAK,cAAc,OAAO;AACzB,WAAA;AAGP,MAAA,MAAM,KAAK,iBAAiB,UAAa,MAAM,KAAK,cAAc,OAAO,oBAAoB;AACtF,WAAA;AAAA,EAAA;AAGJ,SAAA;AACX;AAEA,MAAM,eAAe,CAAC,UAA+C;AACjE,SAAO,MAAM,KAAK;AACtB;AAGA,MAAM,iDAAiD,CAAC,MAAiB,kBAAqD;AACtH,MAAA,KAAK,OAAO,OAAO,KAAK;AACjB,WAAA;AAAA,EAAA;AAGX,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AACvC,QAAA,cAAc,CAAC,EAAE,YAAY,KAAK,OAAO,MAAM,cAAc,CAAC,EAAE,gBAAgB,IAAI;AAC7E,aAAA;AAAA,IAAA;AAAA,EACX;AAGG,SAAA;AACX;AAGA,MAAM,sCAAsC,CAAC,SAAoB;AAEzD,MAAA,iDAAiD,IAAI,GAAG;AACjD,WAAA;AAAA,EAAA;AAEJ,SAAA;AAEX;ACvMO,MAAM,iBAAiB;AACvB,MAAM,QAAQ;AACd,MAAM,QAAQ;AAEd,MAAM,QAAQ;ACML,SAAA,aAAa,MAAc,SAAiB,SAAkB;AACtE,MAAA,gBAAwB,KAAK,SAAS;AAC1C,MAAG,WAAW,SAAS;AACH,oBAAA,cAAc,QAAQ,iCAAiC,GAAG;AAAA,EAAA,OACvE;AACa,oBAAA,cAAc,QAAQ,iCAAiC,GAAG;AAAA,EAAA;AAGvE,SAAA;AACX;AAEO,SAAS,gDAAgD,MAAoC;AAChG,MAAI,KAAK,iBAAiB,UAAa,KAAK,aAAa,OAAO,UAAa,KAAK,aAAa,OAAO,MAAM,KAAK,aAAa,OAAO,OAAO;AAEjI,WAAA;AAAA,EAAA;AAIJ,SAAA;AACX;AAIgB,SAAA,eAAe,MAA2B,UAAuD;AAE7G,MAAI,WAA6B;AAAA,IAC7B,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,WAAU;AAAA,IACV,YAAW;AAAA,IACX,oBAAmB;AAAA,EACvB;AAEG,MAAA,YAAY,KAAa,QAAA;AAE5B,MAAI,uBAA+B;AAEnC,MAAG,KAAK,WAAW,UAAU,aAAa,SAAS;AACxB,2BAAA;AAAA,EACjB,WAAA,KAAK,WAAW,UAAU,aAAa,UAAU;AAChC,2BAAA;AAAA,EACjB,WAAA,KAAK,WAAW,UAAU,aAAa,UAAU;AAChC,2BAAA;AAAA,EAAA;AAGvB,MAAA,QAAgB,SAAS,iCAAiC;AAE9D,WAAS,aAAa;AACtB,WAAS,iBAAiB;AAEjB,WAAA,qBAAqB,KAAK,MAAM,KAAK;AAE9C,WAAS,gBAAgB,KAAK,MAAM,SAAS,sBAAsB,SAAS,iBAAiB,IAAI;AACxF,WAAA,YAAY,KAAK,MAAO,SAAS,sBAAsB,SAAS,aAAa,OAAQ,GAAG;AAE1F,SAAA;AACX;AAEgB,SAAA,kBAAkB,MAA2B,UAAsD;AAE/G,MAAI,cAAgC;AAAA,IAChC,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,oBAAoB;AAAA,EACxB;AAEA,MAAI,eAAuB;AAE3B,MAAG,KAAK,WAAW,UAAU,aAAa,SAAS;AAChC,mBAAA;AACf,gBAAY,aAAa;AACzB,gBAAY,iBAAiB;AAAA,EAAA,OAC1B;AACH,gBAAY,aAAa;AACzB,gBAAY,iBAAiB;AAAA,EAAA;AAG9B,MAAA,YAAY,KAAa,QAAA;AAE5B,MAAI,KAAK,aAAa,UAAU,eAAe,WAAW;AACtD,gBAAY,qBAAqB,KAAK,MAAM,SAAS,iCAAiC,YAAY;AAAA,EAAA;AAGtG,MAAI,KAAK,aAAa,UAAU,eAAe,SAAS;AACpD,gBAAY,qBAAqB,KAAK,MAAM,SAAS,+BAA+B,YAAY;AAAA,EAAA;AAGpG,MAAI,KAAK,aAAa,UAAU,eAAe,WAAW;AACtD,gBAAY,qBAAqB,KAAK,MAAM,SAAS,iCAAiC,YAAY;AAAA,EAAA;AAGtG,MAAI,KAAK,aAAa,UAAU,eAAe,sBAAsB;AACjE,gBAAY,qBAAqB,KAAK,MAAM,SAAS,iDAAiD,YAAY;AAAA,EAAA;AAGtH,MAAI,KAAK,aAAa,UAAU,eAAe,YAAY;AACvD,gBAAY,qBAAqB,KAAK,MAAM,SAAS,kCAAkC,YAAY;AAAA,EAAA;AAGvG,MAAI,KAAK,aAAa,UAAU,eAAe,eAAe;AAC1D,gBAAY,qBAAqB,KAAK,MAAM,SAAS,sCAAsC,YAAY;AAAA,EAAA;AAG3G,cAAY,gBAAgB,KAAK,MAAM,YAAY,sBAAsB,YAAY,iBAAiB,IAAI;AAC9F,cAAA,YAAY,KAAK,MAAO,YAAY,sBAAsB,YAAY,aAAa,OAAQ,GAAG;AAEnG,SAAA;AACX;AAEgB,SAAA,+BAA+B,MAA2B,UAA2C;AAEjH,MAAG,CAAC,gDAAgD,IAAI,EAAU,QAAA;AAElE,MAAG,KAAK,iBAAiB,QAAQ,KAAK,iBAAiB,OAAkB,QAAA;AAEzE,MAAG,aAAa,QAAQ,aAAa,OAAkB,QAAA;AAEnD,MAAA,eAAuB,SAAS,KAAK,aAAa,MAAM,QAAQ,OAAO,EAAE,CAAC;AAE1E,MAAA,gBAAgB,EAAU,QAAA;AAE9B,MAAI,iBAAyB;AAE7B,MAAI,SAAiB;AAClB,MAAA,KAAK,WAAW,UAAU,aAAa,YAAY,KAAK,WAAW,UAAU,aAAa,UAAU;AAC1F,aAAA;AAAA,EAAA;AAGT,MAAA,eAAe,SAAS,yDAAyD,UAC9E,gBAAgB,SAAS,yDAAyD,SAAS,yCAAyC,QAC3I;AACqB,qBAAA,eAAgB,SAAS,yDAAyD;AAAA,EAAA;AAGvG,MAAI,gBAAgB,SAAS,yDAAyD,SAAS,yCAAyC,QACxI;AACI,qBAAiB,SAAS,wCAAwC;AAAA,EAAA;AAG/D,SAAA,KAAK,MAAM,cAAc;AACpC;AAEgB,SAAA,wBAAwB,MAA2B,UAAsD;AAErH,MAAI,mBAAqC;AAAA,IACrC,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,oBAAoB;AAAA,EACxB;AAGA,mBAAiB,iBAAiB;AAClC,mBAAiB,aAAa;AAE1B,MAAA,KAAK,iBAAiB,OAAkB,QAAA;AAEzC,MAAA,YAAY,KAAa,QAAA;AAExB,MAAA,eAAuB,SAAS,KAAK,aAAa,MAAM,QAAQ,OAAO,EAAE,CAAC;AAG9E,MAAI,gBAAgB,GAAG;AACZ,WAAA;AAAA,EAAA;AAGX,MAAI,SAAiB;AAClB,MAAA,KAAK,WAAW,UAAU,aAAa,YAAY,KAAK,WAAW,UAAU,aAAa,UAAU;AAC1F,aAAA;AAAA,EAAA;AAIT,MAAA,OAAO,SAAS,oDAAoD;AAGxE,MAAI,sBAAuB,SAAS,yDAAyD,SAAW,SAAS,oDAAoD;AAKjK,MAAA,KAAK,aAAa,SAAQ;AAG1B,qBAAiB,iBAAiB;AAClC,qBAAiB,aAAa;AAE9B,QAAG,iBAAiB,GAAG;AACnB,uBAAiB,gBAAgB;AACjC,uBAAiB,YAAY;AAAA,IACtB,WAAA,eAAgB,SAAS,gDAAgD,QAAS;AACzF,uBAAiB,gBAAgB;AACjC,uBAAiB,YAAY;AAAA,IACtB,WAAA,eAAgB,SAAS,gDAAgD,QAAQ;AACxF,uBAAiB,gBAAgB;AAChB,uBAAA,YAAY,SAAS,gDAAgD;AAAA,IAAA;AAAA,EAGrF,WAAA,eAAe,SAAS,yDAAyD,UACnF,gBAAiB,SAAS,yDAAyD,SAAS,yCAAyC,UACrI,gDAAgD,IAAI,GAAG;AAKtD,QAAA,cAAsB,QAAQ,iBAAiB,iBAAiB;AAChE,QAAA,UAAkB,QAAQ,iBAAiB,aAAa;AACxD,QAAA,iBAAyB,eAAgB,SAAS,yDAAyD;AAE/G,qBAAiB,gBAAgB,KAAK,MAAM,cAAc,cAAc;AACxE,qBAAiB,YAAY,KAAK,MAAM,UAAU,sBAAsB,GAAG;AAAA,EAAA,WAIpE,gBAAiB,SAAS,yDAAyD,SAAS,yCAAyC,UACzI,gDAAgD,IAAI,GAAG;AAMtD,QAAA,cAAsB,QAAQ,iBAAiB,iBAAiB;AAChE,QAAA,iBAAyB,SAAS,wCAAwC;AAC9E,QAAI,cAAsB,cAAc;AAGxC,QAAI,UAAkB,QAAQ,iBAAiB,aAAa,OAAO;AACnE,QAAI,eAAuB,eAAgB,SAAS,yDAAyD,SAAW,SAAS,wCAAwC;AAGrK,QAAA,eAAe,SAAS,sCAAsC,QAAQ;AACtE,qBAAe,SAAS,sCAAsC;AAAA,IAAA;AAGlE,QAAI,UAAkB,UAAU;AAEhC,qBAAiB,YAAY,KAAK,MAAM,UAAU,GAAG;AACpC,qBAAA,gBAAgB,KAAK,MAAM,WAAW;AAAA,EAAA,WAGhD,eAAe,SAAS,yDAAyD,UACrF,iBAAkB,SAAS,yDAAyD,SAAS,uCAAuC,UACpI,CAAC,gDAAgD,IAAI,GAAG;AAIvD,QAAA,cAAc,QAAQ,iBAAiB,iBAAiB;AACxD,QAAA,UAAkB,QAAQ,iBAAiB,aAAa;AACxD,QAAA,aAAqB,eAAgB,SAAS,yDAAyD;AAE1F,qBAAA,gBAAgB,KAAK,MAAM,WAAW;AACvD,qBAAiB,YAAY,KAAK,MAAM,UAAU,aAAa,sBAAsB,GAAG;AAAA,EAG5F,WAAW,gBAAiB,SAAS,yDAAyD,SAAS,uCAAuC,UACvI,CAAC,gDAAgD,IAAI,GAAG;AAGvD,QAAA,cAAsB,QAAQ,iBAAiB,iBAAiB;AAChE,QAAA,UAAkB,QAAQ,iBAAiB,aAAa;AAE3C,qBAAA,gBAAgB,KAAK,MAAM,WAAW;AACtC,qBAAA,YAAY,KAAK,MAAM,UAAW,SAAS,sCAAsC,SAAU,sBAAsB,GAAG;AAAA,EAG9H,WAAA,eAAe,SAAS,yDAAyD,QAAQ;AAMhG,QAAI,gBAAgB,MAAM;AAClB,UAAA,cAAsB,gBAAgB,iBAAiB,iBAAiB;AACxE,UAAA,UAAkB,gBAAgB,iBAAiB,aAAa;AAEnD,uBAAA,gBAAgB,KAAK,MAAM,WAAW;AACvD,uBAAiB,YAAY,KAAK,MAAM,UAAU,GAAG;AAAA,IAAA,OAGlD;AACC,UAAA,cAAsB,QAAQ,iBAAiB,iBAAiB;AAChE,UAAA,UAAkB,QAAQ,iBAAiB,aAAa;AAC5D,UAAI,eAAuB,eAAe;AAEzB,uBAAA,gBAAgB,KAAK,MAAM,WAAW;AACvD,uBAAiB,YAAY,KAAK,MAAM,UAAU,eAAe,GAAG;AAAA,IAAA;AAAA,EAGxE;AAIJ,mBAAiB,YAAY,KAAK,MAAM,iBAAiB,YAAY,GAAG;AACxE,mBAAiB,gBAAgB,KAAK,MAAM,iBAAiB,aAAa;AAE1E,mBAAiB,qBAAqB,KAAK,MAAM,iBAAiB,YAAY,iBAAiB,aAAa;AAErG,SAAA;AACX;AAEgB,SAAA,qCAAqC,MAA2B,UAA2C;AAEvH,MAAG,CAAC,iDAAiD,IAAI,EAAU,QAAA;AAEnE,MAAG,aAAa,QAAQ,aAAa,OAAkB,QAAA;AAEvD,MAAI,uBAA+B;AACnC,MAAI,uBAA+B;AAEnC,MAAG,KAAK,WAAW,UAAU,aAAa,SAAS;AACxB,2BAAA;AAAA,EACjB,WAAA,KAAK,WAAW,UAAU,aAAa,UAAU;AAChC,2BAAA;AAAA,EACjB,WAAA,KAAK,WAAW,UAAU,aAAa,UAAU;AAChC,2BAAA;AAAA,EAAA;AAG3B,yBAAuB,SAAS,yCAAyC;AAElE,SAAA,KAAK,MAAM,oBAAoB;AAC1C;ACtSA,SAAwB,YAAY,OAAqC;AACrE,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,aAAAA,SAAS,KAAK;AAC5D,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,aAAAA,SAAS,KAAK;AAElEC,eAAAA,UAAU,MAAM;AACM,sBAAA;AAAA,EACtB,GAAG,EAAE;AAEL,WAAS,iBAAuB;AAC5B,uBAAmB,IAAI;AAAA,EAAA;AAG3B,WAAS,uBAA6B;AAClC,uBAAmB,KAAK;AAAA,EAAA;AAG5B,WAAS,uBAA6B;AAClC,QAAI,oBAAoB;AACpB,4BAAsB,KAAK;AAC3B,YAAM,0BAA0B,KAAK;AAAA,IAAA,OAClC;AACH,4BAAsB,IAAI;AAC1B,YAAM,0BAA0B,IAAI;AAAA,IAAA;AAAA,EACxC;AAGJ,WAAS,0CAA0C;AAC3C,QAAAC,qCAAqD,MAAM,MAAM,MAAM,MAAM,IAAI,EAAU,QAAA;AACxF,WAAA;AAAA,EAAA;AAGX,WAAS,8BAAkD;AACvD,QAAI,MAAM,KAAK,gBAAgB,OAAkB,QAAA;AAC7C,QAAA,MAAM,UAAU,OAAkB,QAAA;AAGlC,QAAA,eAAuB,SAAS,MAAM,KAAK,aAAa,MAAM,QAAQ,OAAO,EAAE,CAAC;AAEpF,QAAI,aAAqB;AAGrB,QAAA,MAAM,KAAK,WAAW,UAAU,aAAa,YAC7C,MAAM,KAAK,WAAW,UAAU,aAAa,UAC/C;AACe,mBAAA;AAAA,IAAA;AAGT,YAAA,IAAI,+CAA6C,yCAAyC;AAClG,YAAQ,IAAI,mFAAiFC,gDAAgE,MAAM,IAAI,CAAC;AACxK,YAAQ,IAAI,uCAAqC,MAAM,KAAK,aAAa,OAAO;AAChF,YAAQ,IAAI,8EAA6E,eAAe,MAAM,QAAQ,yDAAyD,WAAY;AAG3L,QAAI,MAAM,KAAK,aAAa,WAAW,iBAAiB,GAAG;AAChD,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,mCAAmC,CAAA;AAAA,IAAA;AAIvD,QAAA,MAAM,KAAK,aAAa,WAAW,eAAe,KAAK,CAAC,2CAA2C;AAC5F,aAAAA,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,kCAAkC,CAAA;AAAA,IAAA;AAI1D,QACI,eAAe,MAAM,QAAQ,yDAAyD,cACtF,eAAe,KACf,CAACD,gDAAgE,MAAM,IAAI,KAC3E,CAAC,2CACH;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,yBAAyB,CAAA;AAAA,IAAA;AAGjD,QACI,eAAe,MAAM,QAAQ,yDAAyD,cACtF,eAAe,KACf,CAACD,gDAAgE,MAAM,IAAI,KAC3E,2CACF;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,oDAAoD,CAAA;AAAA,IAAA;AAI5E,QACI,eACI,MAAM,QAAQ,yDACV,MAAM,QAAQ,wCAAwC,cAC9DD,gDAAgE,MAAM,IAAI,KAC1E,CAAC,2CACH;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,0CAA0C,CAAA;AAAA,IAAA;AAElE,QACI,eACI,MAAM,QAAQ,yDACV,MAAM,QAAQ,wCAAwC,cAC9DD,gDAAgE,MAAM,IAAI,KAC1E,2CACF;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,mEAAmE,CAAA;AAAA,IAAA;AAI3F,QACI,eACI,MAAM,QAAQ,yDACV,MAAM,QAAQ,wCAAwC,cAC9DD,gDAAgE,MAAM,IAAI,KAC1E,CAAC,2CACH;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,uDAAuD,CAAA;AAAA,IAAA;AAE/E,QACI,eACI,MAAM,QAAQ,yDACV,MAAM,QAAQ,wCAAwC,cAC9DD,gDAAgE,MAAM,IAAI,KAC1E,2CACF;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,gFAAgF,CAAA;AAAA,IAAA;AAIxG,QACI,eAAe,MAAM,QAAQ,yDAAyD,cACtF,CAACD,gDAAgE,MAAM,IAAI,KAC3E,CAAC,2CACH;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,sCAAsC,CAAA;AAAA,IAAA;AAI9D,QACI,eAAe,MAAM,QAAQ,yDAAyD,cACtF,CAACD,gDAAgE,MAAM,IAAI,KAC3E,wCAAA,GACF;AACS,aAAAC,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,+DAA+D,CAAA;AAAA,IAAA;AAGvF,QAAI,2CAA2C;AACpC,aAAAA,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,2DAA2D,CAAA;AAAA,IAAA,OAC5E;AACI,aAAAA,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,gCAAgC,CAAA;AAAA,IAAA;AAAA,EACxD;AAGJ,SACKC,kCAAAA,KAAA,OAAA,EAAI,WAAU,8EAA6E,IAAG,eAC3F,UAAA;AAAA,IAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,yBACX,UAAA;AAAA,MAACD,kCAAA,IAAA,OAAA,EAAI,WAAU,mDACX,UAAAA,kCAAAA,IAAC,QAAG,WAAU,mDAAmD,UAAM,MAAA,gBAAA,CAAgB,EAC3F,CAAA;AAAA,MACAC,kCAAAA,KAAC,OAAI,EAAA,WAAU,iFACX,UAAA;AAAA,QAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,8BACX,UAAA;AAAA,UAAAD,sCAAC,UACI,UAAgBE;AAAAA,YACbC,eAA+B,MAAM,MAAM,MAAM,MAAM,EAAE,qBACrDC,kBAAkC,MAAM,MAAM,MAAM,MAAM,EAAE,qBAC5DC,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAC3D,qBACLP,qCAAqD,MAAM,MAAM,MAAM,MAAM;AAAA,YACjF,MAAM;AAAA,UAAA,GAEd;AAAA,UACAG,kCAAAA,KAAC,QAAK,EAAA,WAAU,gDAA+C,UAAA;AAAA,YAAA;AAAA,YACpD,MAAM;AAAA,UAAA,EACjB,CAAA;AAAA,QAAA,GACJ;AAAA,QACCD,kCAAA,IAAA,KAAA,EAAE,WAAU,6CAA6C,wCAA8B,CAAA;AAAA,MAAA,EAC5F,CAAA;AAAA,IAAA,GACJ;AAAA,IACAC,kCAAAA,KAAC,OAAI,EAAA,WAAU,yBACX,UAAA;AAAA,MAACD,kCAAAA,IAAA,OAAA,EAAI,WAAU,sBAAsB,CAAA;AAAA,MACrCC,kCAAAA,KAAC,OAAI,EAAA,WAAU,iFACX,UAAA;AAAA,QAAAD,kCAAA,IAAC,OAAI,EAAA,WAAU,yCAAyC,UAAA,MAAM,wBAAuB;AAAA,QAErFC,kCAAAA,KAAC,OAAI,EAAA,WAAU,mCACX,UAAA;AAAA,UAAAD,sCAAC,UACI,UAAgBE;AAAAA,YACbC,eAA+B,MAAM,MAAM,MAAM,MAAM,EAAE,gBACrDC,kBAAkC,MAAM,MAAM,MAAM,MAAM,EAAE,gBAC5DC,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAAE,gBAClEP,qCAAqD,MAAM,MAAM,MAAM,MAAM;AAAA,YACjF,MAAM;AAAA,UAAA,GAEd;AAAA,UACAG,kCAAAA,KAAC,QAAK,EAAA,WAAU,gDAA+C,UAAA;AAAA,YAAA;AAAA,YACpD,MAAM;AAAA,UAAA,EACjB,CAAA;AAAA,QAAA,GACJ;AAAA,QACAD,kCAAAA,IAAC,OAAE,WAAU,6CACT,gDAAC,QAAM,EAAA,UAAA,MAAM,mBAAmB,CAAA,EACpC,CAAA;AAAA,MAAA,EACJ,CAAA;AAAA,IAAA,GACJ;AAAA,IACAC,kCAAAA,KAAC,OAAI,EAAA,WAAU,yBACX,UAAA;AAAA,MAACD,kCAAAA,IAAA,OAAA,EAAI,WAAU,kDAAkD,CAAA;AAAA,MACjEC,kCAAAA,KAAC,OAAI,EAAA,WAAU,iFACX,UAAA;AAAA,QAAAD,kCAAA,IAAC,OAAI,EAAA,WAAU,yCAAyC,UAAA,MAAM,oBAAmB;AAAA,QACjFC,kCAAAA,KAAC,OAAI,EAAA,WAAU,mCACX,UAAA;AAAA,UAAAD,sCAAC,UACI,UAAgBE;AAAAA,YACbC,eAA+B,MAAM,MAAM,MAAM,MAAM,EAAE,YACrDC,kBAAkC,MAAM,MAAM,MAAM,MAAM,EAAE,YAC5DC,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,YACtE,MAAM;AAAA,UAAA,GAEd;AAAA,UACAJ,kCAAAA,KAAC,QAAK,EAAA,WAAU,gDAA+C,UAAA;AAAA,YAAA;AAAA,YACpD,MAAM;AAAA,UAAA,EACjB,CAAA;AAAA,QAAA,EACJ,CAAA;AAAA,MAAA,EACJ,CAAA;AAAA,IAAA,GACJ;AAAA,IACAA,kCAAAA,KAAC,OAAI,EAAA,WAAU,yBACX,UAAA;AAAA,MAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,uBACX,UAAA;AAAA,QAAAD,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS;AAAA,YAER,UAAM,MAAA;AAAA,UAAA;AAAA,QACX;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,eAAe,MAAM;AAAA,YAErB,UAAAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,eAAe,MAAM;AAAA,gBACrB,gBAAgB,MAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UAC1B;AAAA,QAAA;AAAA,MACJ,GACJ;AAAA,MACAA,kCAAAA,IAAC,OAAI,EAAA,WAAU,qDACX,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS;AAAA,UAER,UAAM,MAAA;AAAA,QAAA;AAAA,MAAA,EAEf,CAAA;AAAA,IAAA,EACJ,CAAA;AAAA,EAAA,GACJ;AAER;AClQA,SAAwB,YAAY,OAAqC;AACrE,QAAM,CAAC,iBAAiB,kBAAkB,IAAIJ,aAAAA,SAAS,KAAK;AAC5D,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,aAAAA,SAAS,KAAK;AAElEC,eAAAA,UAAU,MAAM;AACM,sBAAA;AAAA,EACtB,GAAG,EAAE;AAEL,WAAS,iBAAuB;AAC5B,uBAAmB,IAAI;AAAA,EAAA;AAG3B,WAAS,uBAA6B;AAClC,uBAAmB,KAAK;AAAA,EAAA;AAG5B,WAAS,uBAA6B;AAClC,QAAI,oBAAoB;AACpB,4BAAsB,KAAK;AAC3B,YAAM,0BAA0B,KAAK;AAAA,IAAA,OAClC;AACH,4BAAsB,IAAI;AAC1B,YAAM,0BAA0B,IAAI;AAAA,IAAA;AAAA,EACxC;AAGJ,SACKI,kCAAAA,KAAA,OAAA,EAAI,WAAU,8EAA6E,IAAG,eAC3F,UAAA;AAAA,IAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,yBACX,UAAA;AAAA,MAACD,kCAAA,IAAA,OAAA,EAAI,WAAU,mDACX,UAAAA,kCAAAA,IAAC,QAAG,WAAU,mDAAmD,UAAM,MAAA,gBAAA,CAAgB,EAC3F,CAAA;AAAA,MACAC,kCAAAA,KAAC,OAAI,EAAA,WAAU,iFACX,UAAA;AAAA,QAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,8BACX,UAAA;AAAA,UAAAD,sCAAC,UACI,UAAgBE;AAAAA,YACbC,eAA+B,MAAM,MAAM,MAAM,MAAM,EAAE,qBACrDC,kBAAkC,MAAM,MAAM,MAAM,MAAM,EAAE,qBAC5DN,qCAAqD,MAAM,MAAM,MAAM,MAAM;AAAA,YACjF,MAAM;AAAA,UAAA,GAEd;AAAA,UACAG,kCAAAA,KAAC,QAAK,EAAA,WAAU,gDAA+C,UAAA;AAAA,YAAA;AAAA,YACpD,MAAM;AAAA,UAAA,EACjB,CAAA;AAAA,QAAA,GACJ;AAAA,QACCH,qCAAqD,MAAM,MAAM,MAAM,MAAM,KAAK,KAC9EE,kCAAA,IAAA,KAAA,EAAE,WAAU,6CACT,UAAAA,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,gCAAgC,CAAA,GACjD;AAAA,QAEHF,qCAAqD,MAAM,MAAM,MAAM,MAAM,IAAI,KAC7EE,kCAAA,IAAA,KAAA,EAAE,WAAU,6CACT,UAAAA,kCAAAA,IAAC,QAAM,EAAA,UAAA,MAAM,4DAA2D,EAC5E,CAAA;AAAA,MAAA,EAER,CAAA;AAAA,IAAA,GACJ;AAAA,IACAC,kCAAAA,KAAC,OAAI,EAAA,WAAU,yBACX,UAAA;AAAA,MAACD,kCAAAA,IAAA,OAAA,EAAI,WAAU,kDAAkD,CAAA;AAAA,MACjEC,kCAAAA,KAAC,OAAI,EAAA,WAAU,iFACX,UAAA;AAAA,QAAAD,kCAAA,IAAC,OAAI,EAAA,WAAU,yCAAyC,UAAA,MAAM,iBAAgB;AAAA,QAC9EC,kCAAAA,KAAC,OAAI,EAAA,WAAU,mCACX,UAAA;AAAA,UAAAD,sCAAC,UACI,UAAgBE;AAAAA,YACbG,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,YAClE,MAAM;AAAA,UAAA,GAEd;AAAA,UACAJ,kCAAAA,KAAC,QAAK,EAAA,WAAU,gDAA+C,UAAA;AAAA,YAAA;AAAA,YACpD,MAAM;AAAA,UAAA,EACjB,CAAA;AAAA,QAAA,GACJ;AAAA,QACAD,kCAAAA,IAAC,OAAE,WAAU,6CACT,gDAAC,QAAM,EAAA,UAAA,MAAM,iBAAiB,CAAA,EAClC,CAAA;AAAA,MAAA,EACJ,CAAA;AAAA,IAAA,GACJ;AAAA,IACAC,kCAAAA,KAAC,OAAI,EAAA,WAAU,yBACX,UAAA;AAAA,MAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,uBACX,UAAA;AAAA,QAAAD,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS;AAAA,YAER,UAAM,MAAA;AAAA,UAAA;AAAA,QACX;AAAA,QACAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,eAAe,MAAM;AAAA,YAErB,UAAAA,kCAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,eAAe,MAAM;AAAA,gBACrB,gBAAgB,MAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UAC1B;AAAA,QAAA;AAAA,MACJ,GACJ;AAAA,MACAA,kCAAAA,IAAC,OAAI,EAAA,WAAU,qDACX,UAAAA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS;AAAA,UAER,UAAM,MAAA;AAAA,QAAA;AAAA,MAAA,EAEf,CAAA;AAAA,IAAA,EACJ,CAAA;AAAA,EAAA,GACJ;AAER;ACpHA,MAAM,8BAA8B,CAAC,UAAwC;AACnE,QAAA,EAAE,eAAe;AAEvB,MAAI,2BAAmCM,+BAA+C,MAAM,MAAM,MAAM,MAAM;AAC1G,MAAA,kCACAD,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAAE,gBAAgB;AAEtFR,eAAAA,UAAU,MAAM;AACM,sBAAA;AAAA,EACtB,GAAG,EAAE;AAEL,WAAS,wBAA4C;AACjD,QAAI,MAAO,KAAM,aAAc,QAAgB,QAAA;AAE/C,QAAI,2BAA2B,GAAG;AAC9B,aACKI,kCAAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,2BAA2B,EAC5D,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC,aAAa,iCAAiC,MAAM,MAAM;AAAA,UAAE;AAAA,UACtE,MAAM;AAAA,QAAA,GACjB;AAAA,QAAM;AAAA,MAAA,GAEV;AAAA,IAAA,OAED;AACH,aACKD,kCAAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,2BAA2B,EAC5D,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC;AAAAA,YACbG,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,YAClE,MAAM;AAAA,UACV;AAAA,UAAE;AAAA,UACK,MAAM;AAAA,QAAA,EACjB,CAAA;AAAA,MAAA,GACJ;AAAA,IAAA;AAAA,EAER;AAGJ,WAAS,sBAA0C;AAC/C,QAAI,MAAO,KAAM,aAAc,QAAgB,QAAA;AAE/C,QAAI,2BAA2B,GAAG;AAC9B,aACKJ,kCAAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,mCAAmC,EACpE,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC,aAAa,0BAA0B,MAAM,MAAM;AAAA,UAAE;AAAA,UAC/D,MAAM;AAAA,QAAA,EACjB,CAAA;AAAA,MAAA,GACJ;AAAA,IAAA;AAGD,WAAA;AAAA,EAAA;AAGX,gDACK,OACG,EAAA,UAAA;AAAA,IAAAF,kCAAA,IAAC,MAAI,EAAA,UAAAO,QAAgB,YAAY,eAAe,GAAE;AAAA,IACjDN,kCAAA,KAAA,OAAA,EAAI,MAAK,SAAQ,WAAU,WACxB,UAAA;AAAA,MAAAA,kCAAA,KAAC,OAAI,EAAA,MAAK,OAAM,WAAU,uBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,gBAAe,WAAU,oDAC9B,UAAgBO,QAAA,YAAY,qBAAqB,EACtD,CAAA;AAAA,QACAP,kCAAAA,IAAC,SAAI,MAAK,gBAAe,WAAU,oDAC9B,UAAAO,QAAgB,YAAY,oBAAoB,EACrD,CAAA;AAAA,MAAA,GACJ;AAAA,MACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,kBAAkB,EACnD,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC;AAAAA,YACbC,eAA+B,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,YACzD,MAAM;AAAA,UACV;AAAA,UAAE;AAAA,UACK,MAAM;AAAA,QAAA,EACjB,CAAA;AAAA,MAAA,GACJ;AAAA,MACCL,qCAAqD,MAAM,MAAM,MAAM,MAAM,IAAI,KAC7EG,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,mCAAmC,EACpE,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC;AAAAA,YACbJ,qCAAqD,MAAM,MAAM,MAAM,MAAM;AAAA,YAC7E,MAAM;AAAA,UACV;AAAA,UAAE;AAAA,UACK,MAAM;AAAA,QAAA,EACjB,CAAA;AAAA,MAAA,GACJ;AAAA,MAEHG,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,uBAAuB,EACxD,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC;AAAAA,YACbG,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,YAClE,MAAM;AAAA,UACV;AAAA,UAAE;AAAA,UACK,MAAM;AAAA,QAAA,EACjB,CAAA;AAAA,MAAA,GACJ;AAAA,MACC,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,MACpBJ,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,kBAAkB,EACnD,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC;AAAAA,YACbE,kBAAkC,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,YAC5D,MAAM;AAAA,UACV;AAAA,UAAE;AAAA,UACK,MAAM;AAAA,QAAA,EACjB,CAAA;AAAA,MAAA,GACJ;AAAA,MACCH,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,QAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,sBAAsB,EACvD,CAAA;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,UAAgBC;AAAAA,YACbE,kBAAkC,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,YAC5D,MAAM;AAAA,UACV;AAAA,UAAE;AAAA,UACK,MAAM;AAAA,QAAA,EACjB,CAAA;AAAA,MAAA,EACJ,CAAA;AAAA,IAAA,EACJ,CAAA;AAAA,EAAA,GACJ;AAER;AAKA,MAAA,0BAAe;AAAA,EACX,CAAC,UAAuD;AAC7C,WAAA;AAAA,MACH,YAAY,MAAM;AAAA,IACtB;AAAA,EAAA;AAER,EAAE,2BAA2B;ACpJ7B,SAAS,gBAAgB,OAAqC;AACpD,QAAA,EAAE,eAAe;AACvBP,eAAAA,UAAU,MAAM;AACM,sBAAA;AAAA,EACtB,GAAG,EAAE;AAEL,MAAI,aAAqB;AACzB,MAAI,MAAM,KAAK,WAAW,UAAU,aAAa,QAAsB,cAAA;AAEvE,MAAI,sBAA0C;AAC1C,MAAA,MAAM,SAAS,WAAW;AAEtB,0BAAAG,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM;AAAA,MAAA;AAAA,IAClB;AAAA,EAAA;AAIR,WAAS,qBAA6B;AAE9B,QAAA,MAAM,KAAK,aAAa,UAAU,eAAe,cACjD,MAAM,KAAK,aAAa,UAAU,eAAe,eACnD;AACS,aAAA,eAAe,YAAY,SAAS;AAAA,IAAA,OACxC;AACI,aAAA,eAAe,YAAY,SAAS;AAAA,IAAA;AAAA,EAC/C;AAGJ,WAAS,yBAAiC;AACtC,QAAI,MAAM,WAAW,QAAQ,MAAM,WAAW,OAAkB,QAAA;AAEhE,QACI,MAAM,OAAO,mCAAmC,QAChD,MAAM,OAAO,mCAAmC;AAEzC,aAAA;AAEX,WAAO,KAAK,MAAM,MAAM,OAAO,iCAAiC,GAAG;AAAA,EAAA;AAGvE,WAAS,uBAA+B;AACpC,QAAI,MAAM,WAAW,QAAQ,MAAM,WAAW,OAAkB,QAAA;AAEhE,QACI,MAAM,OAAO,mCAAmC,QAChD,MAAM,OAAO,mCAAmC;AAEzC,aAAA;AAEX,WAAO,KAAK,MAAM,MAAM,OAAO,iCAAiC,EAAE;AAAA,EAAA;AAGtE,WAAS,0BAA8C;AACnD,QAAI,OAA2B;AAG3B,QAAA,MAAM,KAAK,WAAW,UAAU,aAAa,WAC7C,MAAM,KAAK,WAAW,UAAU,aAAa,UAC/C;AAEM,aAAAC,kCAAA,KAAC,OAAI,EAAA,WAAU,uBACX,UAAA;AAAA,QAAAD,sCAAC,QAAG,WAAU,+CACT,UAAgBO,QAAA,YAAY,mBAAmB,GACpD;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,SAAQ,WAAU,WACxB,UAAA;AAAA,UAAAA,kCAAA,KAAC,OAAI,EAAA,MAAK,OAAM,WAAU,uBACtB,UAAA;AAAA,YAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,gBAAe,WAAU,wBAC9B,UAAgBO,QAAA,YAAY,kCAAkC,EACnE,CAAA;AAAA,YACAP,kCAAAA,IAAC,SAAI,MAAK,gBAAe,WAAU,wBAC9B,UAAAO,QAAgB,YAAY,mCAAmC,EACpE,CAAA;AAAA,UAAA,GACJ;AAAA,UACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,YAAAD,sCAAC,SAAI,MAAK,QAAO,WAAU,sBACtB,gCACL;AAAA,YACCC,kCAAAA,KAAA,OAAA;AAAA,cAAI,MAAK;AAAA,cAAO,WAAU;AAAA;AAAA;AAAA,cAInB,UAAA;AAAA,gBAAgBC;AAAAA,kBACZ,KAAK;AAAA,qBACAG,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAC5D,qBACDD,kBAAkC,MAAM,MAAM,MAAM,MAAM,EACrD,sBACL,aACA,MACAN;AAAAA,sBACI,MAAM;AAAA,sBACN,MAAM;AAAA,oBAAA,IAEN;AAAA,sBACR,uBAAuB;AAAA,kBAC3B,MAAM;AAAA,gBACV;AAAA,gBACH;AAAA,gBACM,MAAM;AAAA,cAAA;AAAA,YACjB,CAAA;AAAA,UAAA,EACJ,CAAA;AAAA,QAAA,EACJ,CAAA;AAAA,MAAA,GACJ;AAAA,IAAA;AAGD,WAAA;AAAA,EAAA;AAGX,WAAS,0BAA8C;AACnD,QAAI,OAA2B;AAG3B,QAAA,MAAM,KAAK,WAAW,UAAU,aAAa,WAC7C,MAAM,KAAK,WAAW,UAAU,aAAa,UAC/C;AAEM,aAAAG,kCAAA,KAAC,OAAI,EAAA,WAAU,uBACX,UAAA;AAAA,QAAAD,sCAAC,QAAG,WAAU,+CACT,UAAgBO,QAAA,YAAY,kBAAkB,GACnD;AAAA,QACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,SAAQ,WAAU,WACxB,UAAA;AAAA,UAAAA,kCAAA,KAAC,OAAI,EAAA,MAAK,OAAM,WAAU,uBACtB,UAAA;AAAA,YAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,gBAAe,WAAU,oDAC9B,UAAgBO,QAAA,YAAY,kCAAkC,EACnE,CAAA;AAAA,YACAP,kCAAAA,IAAC,SAAI,MAAK,gBAAe,WAAU,oDAC9B,UAAAO,QAAgB,YAAY,mCAAmC,EACpE,CAAA;AAAA,UAAA,GACJ;AAAA,UACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,YAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,aAAa,EAC9C,CAAA;AAAA,YACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,cAAgBC;AAAAA,gBACb,KAAK;AAAA,mBACAG,wBAAwC,MAAM,MAAM,MAAM,MAAM,EAC5D,qBACDD,kBAAkC,MAAM,MAAM,MAAM,MAAM,EACrD,sBACL;AAAA,gBAAA,IAEJ,uBACA,IAAAN,qCAAqD,MAAM,MAAM,MAAM,MAAM,IACzE;AAAA,gBACR,MAAM;AAAA,cACV;AAAA,cAAE;AAAA,cACK,MAAM;AAAA,YAAA,EACjB,CAAA;AAAA,UAAA,GACJ;AAAA,UACCG,kCAAA,KAAA,OAAA,EAAI,MAAK,OAAM,WAAU,qBACtB,UAAA;AAAA,YAACD,kCAAAA,IAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAgBO,QAAA,YAAY,SAAS,EAC1C,CAAA;AAAA,YACCN,kCAAA,KAAA,OAAA,EAAI,MAAK,QAAO,WAAU,sBACtB,UAAA;AAAA,cAAAC,aAA6B,qBAAA,GAAwB,MAAM,MAAM;AAAA,cAAE;AAAA,cAC7D,MAAM;AAAA,YAAA,EACjB,CAAA;AAAA,UAAA,EACJ,CAAA;AAAA,QAAA,EACJ,CAAA;AAAA,MAAA,GACJ;AAAA,IAAA;AAGD,WAAA;AAAA,EAAA;AAIP,SAAAD,kCAAA,KAAC,OAAI,EAAA,WAAU,gFACX,UAAA;AAAA,IAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,yBACV,UAAA;AAAA,MAAwB,wBAAA;AAAA,MACxB,wBAAwB;AAAA,IAAA,GAC7B;AAAA,IACAA,kCAAAA,KAAC,OAAI,EAAA,WAAU,yBACX,UAAA;AAAA,MAACA,kCAAAA,KAAA,OAAA,EAAI,WAAU,uBACX,UAAA;AAAA,QAAAD,sCAAC,QAAG,WAAU,+CACT,UAAgBO,QAAA,YAAY,qBAAqB,GACtD;AAAA,QACCA,QAAgB,YAAY,eAAe;AAAA,MAAA,GAChD;AAAA,MACAN,kCAAAA,KAAC,OAAI,EAAA,WAAU,uBACX,UAAA;AAAA,QAAAD,sCAAC,QAAG,WAAU,+CACT,UAAgBO,QAAA,YAAY,mBAAmB,GACpD;AAAA,QACCA,QAAgB,YAAY,aAAa;AAAA,MAAA,EAC9C,CAAA;AAAA,IAAA,GACJ;AAAA,0CACC,OAAI,EAAA,WAAU,yBACX,UAACP,sCAAA,OAAA,EAAI,WAAU,0CACX,UAAAA,kCAAAA,IAAC,SAAI,WAAU,mDACX,gDAAC,OAAI,EAAA,WAAU,4BAA4B,UAAoB,oBAAA,CAAA,EACnE,CAAA,EACJ,CAAA,EACJ,CAAA;AAAA,EAAA,GACJ;AAER;AAMA,MAAA,oBAAe;AAAA,EACX,CAAC,UAAuD;AAC7C,WAAA;AAAA,MACH,YAAY,MAAM;AAAA,IACtB;AAAA,EAAA;AAER,EAAE,eAAe;ACvMjB,MAAM,4BAA4B,0BAAiD;AAEnF,WAAW,cAAc,SAAS,eAAeQ,cAAkB,CAAgB;AAGnF,MAAM,YAAY,MAAM,UAA8B;AAAA,EAClD,YAAY,OAAiB;AACzB,UAAM,KAAK;AACX,SAAK,QAAQ,CAAC;AAAA,EAAA;AAAA,EAGlB,SAAsB;AACZ,UAAA,EAAE,MAAM,oBAAoB,YAAY,UAAU,QAAQ,kBAAkB,KAAK;AACvF,UAAM,EAAE,UAAU,QAAQ,OAAO,IAAI,KAAK,MAAM;AAEhD,aAAS,4BAAkC;AACnC,UAAA,CAAC,iBAAiB,SAAS;AACvB,YAAA,KAAK,aAAa,QAAW;AAE7B,2BAAiB,UAAU;AACR,6BAAA;AAAA,YACf,sBAAsB;AAAA,YACtB,kBAAkB;AAAA,YAClB,mBAAmB,eAAe;AAAA,UACtC;AAAA,QAAA;AAAA,MACJ;AAGA,UAAA,CAAC,iBAAiB,UAAU;AACxB,YAAA,SAAS,aAAa,SAAS,WAAW;AAE1C,2BAAiB,WAAW;AACT,6BAAA;AAAA,YACf,sBAAsB;AAAA,YACtB,kBAAkB;AAAA,YAClB,mBAAmB,eAAe;AAAA,UACtC;AAAA,QAAA;AAAA,MACJ;AAAA,IACJ;AAGJ,aAAS,UAA0B;AAC/B,YAAM,QAAwB,CAAC;AAE3B,UAAA,iBAAiB,QAAQ,iBAAiB,UAAa,cAAc,UAAU,UAAU,CAAC;AAE9F,UAAI,YAA2C;AAE/C,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC3C,YAAI,cAAc,CAAC,EAAE,SAAS,KAAK,aAAa,IAAI;AAChD,cAAI,+BAAwC;AAC5C,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAC/B,gBAAA,MAAM,CAAC,EAAE,MAAM,cAAc,CAAC,EAAE,SAAyC,gCAAA;AAAA,UAAA;AAGjF,cAAI,6BAA8B;AAElC,cAAI,cAAc,CAAC,EAAE,aAAa,KAAK;AACnC,wBAAY,cAAc,CAAC;AAC3B;AAAA,UAAA;AAGJ,cAAI,WAAW,SAAS;AACpB,kBAAM,KAAK;AAAA,cACP,IAAI,cAAc,CAAC,EAAE;AAAA,cACrB,cAAc,cAAc,CAAC,EAAE;AAAA,YAAA,CAClC;AAAA,UAAA,OACE;AACH,kBAAM,KAAK;AAAA,cACP,IAAI,cAAc,CAAC,EAAE;AAAA,cACrB,cAAc,cAAc,CAAC,EAAE;AAAA,YAAA,CAClC;AAAA,UAAA;AAAA,QACL;AAAA,MACJ;AAGJ,UAAI,SAAyB,MAAM,KAAK,SAAU,GAAG,GAAG;AAChD,YAAA,QAAQ,EAAE,aAAa,YAAY;AACnC,YAAA,QAAQ,EAAE,aAAa,YAAY;AACvC,YAAI,QAAQ,OAAO;AACR,iBAAA;AAAA,QAAA;AAEX,YAAI,QAAQ,OAAO;AACR,iBAAA;AAAA,QAAA;AAEJ,eAAA;AAAA,MAAA,CACV;AAED,UAAI,cAAc,MAAM;AACpB,YAAI,WAAW,SAAS;AACpB,iBAAO,KAAK;AAAA,YACR,IAAI,UAAU;AAAA,YACd,cAAc,UAAU;AAAA,UAAA,CAC3B;AAAA,QAAA,OACE;AACH,iBAAO,KAAK;AAAA,YACR,IAAI,UAAU;AAAA,YACd,cAAc,UAAU;AAAA,UAAA,CAC3B;AAAA,QAAA;AAAA,MACL;AAGG,aAAA;AAAA,IAAA;AAGX,aAAS,oCAAoC;AACzC,UAAI,QAAwB,CAAC;AAEzB,UAAA,KAAK,OAAO,OAAO,KAAK;AACjB,eAAA;AAAA,MAAA;AAGX,eAAS,IAAI,GAAG,IAAI,cAAe,QAAQ,KAAK;AAC5C,YAAI,cAAe,CAAC,EAAE,aAAa,KAAK,OAAO,IAAI;AAC/C,gBAAM,KAAK,EAAE,IAAI,cAAe,CAAC,EAAE,aAAa,cAAc,cAAe,CAAC,EAAE,YAAA,CAAa;AAAA,QAAA;AAAA,MACjG;AAEG,aAAA;AAAA,IAAA;AAGX,QAAI,WAAW,gBAAgB;AAC3B,mDAAQ,sBAAqB,EAAA;AAAA,IAAA;AAGjC,QAAI,YAAY,MAAM;AACQ,gCAAA;AAEtB,aAAAP,kCAAA,KAAC,OAAI,EAAA,WAAU,cACX,UAAA;AAAA,QAAAD,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,YAAYS;AAAAA,YACZ,QAAQF,QAAgB,YAAY,gBAAgB;AAAA,YACpD,YAAYA,QAAgB,YAAY,cAAc;AAAA,YACtD,UAAS;AAAA,YACT,MAAM,aAAa;AAAA,YACnB,eAAe,CAAC,aAAiC;AAC1B,iCAAA,EAAE,WAAW,UAAU;AAAA,YAC9C;AAAA,YACA,eAAe;AAAA,YACf,eAAc;AAAA,YACd,OAAO,KAAK;AAAA,UAAA;AAAA,QAChB;AAAA,QACC,SAAS,YACNP,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,YAAYU;AAAAA,YACZ,QAAQH,QAAgB,YAAY,kBAAkB;AAAA,YACtD,YAAaP,kCAAAA,IAAA,OAAA,EAAK,UAAgBO,QAAA,YAAY,gBAAgB,GAAE;AAAA,YAChE,UAAS;AAAA,YACT,eAAe;AAAA,YACf,MAAM,eAAe;AAAA,YACrB,eAAe,CAAC,aAAiC;AAC1B,iCAAA;AAAA,gBACf,aAAa;AAAA,gBACb,OAAO;AAAA,gBACP,oBAAoB;AAAA,gBACpB,cAAc;AAAA,cAAA,CACjB;AAAA,YACL;AAAA,YACA,OAAO,KAAK;AAAA,UAAA;AAAA,QAChB;AAAA,QAEH,SAAS,YACNP,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,YAAW;AAAA,YACX,QAAQO,QAAgB,YAAY,YAAY;AAAA,YAChD,SAAS,QAAQ;AAAA,YACjB,YAAYA,QAAgB,YAAY,UAAU;AAAA,YAClD,WAAWA,QAAgB,YAAY,eAAe;AAAA,YACtD,gBAAgB,CAAC,aAAiC;AAC9C,iCAAmB,EAAE,OAAO,UAAU,cAAc,QAAW,oBAAoB,OAAQ;AAAA,YAC/F;AAAA,YACA,OAAO,KAAK;AAAA,UAAA;AAAA,QAChB;AAAA,QAEH,SAAS,YACNP,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,YAAYW;AAAAA,YACZ,QAAQJ,QAAgB,YAAY,mBAAmB;AAAA,YACvD,YAAYA,QAAgB,YAAY,iBAAiB;AAAA,YACzD,WAAWA,QAAgB,YAAY,sBAAsB;AAAA,YAC7D,0BAA0BA,QAAgB,YAAY,0BAA0B;AAAA,YAChF,kBAAkB;AAAA,YAClB,0BAA0BA,QAAgB,YAAY,uBAAuB;AAAA,YAC7E,gBAAgBA,QAAgB,YAAY,sBAAsB;AAAA,YAClE,UAAU,CAAC,aAAwC;AAC5B,iCAAA,EAAE,cAAc,UAAU;AAAA,YACjD;AAAA,YACA,OAAO,KAAK;AAAA,YACZ,+BAA+BA,QAAgB,YAAY,4BAA4B;AAAA,YACvF,+BAA+B,eAAe,YAAY,+BAA+B;AAAA,YACzF,2BAA2BA,QAAgB,YAAY,6BAA6B,CAAC;AAAA,YACrF,8BAA8BA;AAAAA,cAC1B;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,YACA;AAAA,YACA,eAAe;AAAA,YACf,SAAS,eAAe,YAAY,WAAW;AAAA,UAAA;AAAA,QACnD;AAAA,QAEH,SAAS,YACNP,kCAAA;AAAA,UAACY;AAAAA,UAAA;AAAA,YACG,YAAY;AAAA,YACZ,QAAQL,QAAgB,YAAY,mBAAmB;AAAA,YACvD,YAAYA,QAAgB,YAAY,iBAAiB;AAAA,YACzD,WAAWA,QAAgB,YAAY,sBAAsB;AAAA,YAC7D,gBAAgB,eAAe,YAAY,2BAA2B;AAAA,YACtE,SAAS,kCAAkC;AAAA,YAC3C,mBAAmBA,QAAgB,YAAY,0BAA0B;AAAA,YACzE,gBAAgB,CAAC,aAAiC;AAC3B,iCAAA,EAAE,cAAc,UAAU;AAAA,YACjD;AAAA,YACA,OAAO,KAAK;AAAA,YACZ,YAAY;AAAA,UAAA;AAAA,QAChB;AAAA,QAEH,SAAS,aACNP,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,iBAAiBO,QAAgB,YAAY,iBAAiB;AAAA,YAC9D;AAAA,YACA;AAAA,YACA,2BAA2B,CAAC,YAA2B;AAChC,iCAAA,EAAE,oBAAoB,SAAS;AAAA,YACtD;AAAA,YACA,2BAA2B;AAAA,YAC3B,oBAAoBA,QAAgB,YAAY,oBAAoB;AAAA,YACpE,wBAAwBA,QAAgB,YAAY,wBAAwB;AAAA,YAC5E,oBAAoBA,QAAgB,YAAY,oBAAoB;AAAA,YACpE,iCAAiCA;AAAAA,cAC7B;AAAA,cACA;AAAA,YACJ;AAAA,YACA,0BAA0BA,QAAgB,YAAY,0BAA0B;AAAA,YAChF,2CAA2CA;AAAAA,cACvC;AAAA,cACA;AAAA,YACJ;AAAA,YACA,wDAAwDA;AAAAA,cACpD;AAAA,cACA;AAAA,YACJ;AAAA,YACA,uCAAuCA;AAAAA,cACnC;AAAA,cACA;AAAA,YACJ;AAAA,YACA,mCAAmCA;AAAAA,cAC/B;AAAA,cACA;AAAA,YACJ;AAAA,YACA,oCAAoCA;AAAAA,cAChC;AAAA,cACA;AAAA,YACJ;AAAA,YACA,8BAA8BA,QAAgB,YAAY,8BAA8B;AAAA,YACxF,0BAA0BA,QAAgB,YAAY,0BAA0B;AAAA,YAChF,yBAAyBA,QAAgB,YAAY,yBAAyB;AAAA,YAC9E,sCAAsC;AAAA,cAClC;AAAA,cACA;AAAA,YACJ;AAAA,YACA,2BAA2BA,QAAgB,YAAY,2BAA2B;AAAA,YAClF;AAAA,YACA,4DAA4DA;AAAAA,cACxD;AAAA,cACA;AAAA,YACJ;AAAA,YACA,oEAAoEA;AAAAA,cAChE;AAAA,cACA;AAAA,YACJ;AAAA,YACA,iFAAiFA;AAAAA,cAC7E;AAAA,cACA;AAAA,YACJ;AAAA,YACA,gEAAgEA;AAAAA,cAC5D;AAAA,cACA;AAAA,YACJ;AAAA,YACA,qDAAqDA;AAAAA,cAAgB;AAAA,cACjE;AAAA,YAAA;AAAA,UAAqD;AAAA,QAC7D;AAAA,QAEH,SAAS,aACNP,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,iBAAiBO,QAAgB,YAAY,iBAAiB;AAAA,YAC9D;AAAA,YACA;AAAA,YACA,2BAA2B,CAAC,cAA6B;AAClC,iCAAA,EAAE,oBAAoB,WAAW;AAAA,YACxD;AAAA,YACA,2BAA2B;AAAA,YAC3B,kBAAkBA,QAAgB,YAAY,kBAAkB;AAAA,YAChE,iBAAiBA,QAAgB,YAAY,iBAAiB;AAAA,YAC9D,iCAAiCA;AAAAA,cAC7B;AAAA,cACA;AAAA,YACJ;AAAA,YACA,8BAA8BA,QAAgB,YAAY,8BAA8B;AAAA,YACxF,0BAA0BA,QAAgB,YAAY,0BAA0B;AAAA,YAChF,yBAAyBA,QAAgB,YAAY,yBAAyB;AAAA,YAC9E,sCAAsC;AAAA,cAClC;AAAA,cACA;AAAA,YACJ;AAAA,YACA,2BAA2BA,QAAgB,YAAY,2BAA2B;AAAA,YAClF;AAAA,YACA,4DAA4DA;AAAAA,cACxD;AAAA,cACA;AAAA,YAAA;AAAA,UACJ;AAAA,QACJ;AAAA,QAEH,SAAS,sBACNP,kCAAA;AAAA,UAACa;AAAAA,UAAA;AAAA,YACG;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,MACJ,GAER;AAAA,IAAA,OAED;AACI,aAAAb,kCAAA,IAAC,SAAI,UAAM,SAAA,CAAA;AAAA,IAAA;AAAA,EACtB;AAER;AAcA,MAAM,qBAAqB,CACvB,cACsB;AAAA,EACtB,oBAAoB,CAAC,YAAgD;AACxD,aAAA,WAAW,OAAO,CAAC;AAC5B,aAAS,eAAe;AAAA,EAAA;AAEhC;AAEA,MAAM,kBAAkB,CAAC,WAAwD;AAAA,EAC7E,MAAM,MAAM;AAAA,EACZ,YAAY,MAAM;AAAA,EAClB,UAAU,MAAM;AAAA,EAChB,QAAQ,MAAM;AAAA,EACd,eAAe,MAAM;AACzB;AAEA,MAAe,QAAA,QAAQ,iBAAiB,kBAAkB,EAAE,GAAG;AC1YxD,MAAMc,iBAA0B;AAAA,EACnC,WAAW;AAAA,EACX,aAAa;AAAA,EACb,OAAO;AAAA,EACP,cAAc;AAAA,EACd,cAAc;AAAA,EACd,oBAAoB;AACxB;AAEgB,SAAA,YAAY,QAAmBA,gBAAc,QAAyC;AAClG,QAAM,WAAW,YAAY;AACtB,SAAA;AAEP,WAAS,cAAyB;AAC9B,YAAQ,OAAO,MAAM;AAAA,MACjB,KAAK,aAAa;AACV,YAAA,OAAO,QAAQ,WAAW;AACnB,iBAAA;AAAA,YACH,GAAGA;AAAAA,YACH,GAAG,OAAO;AAAA,UACd;AAAA,QAAA,OACG;AACI,iBAAA;AAAA,YACH,GAAG;AAAA,YACH,GAAG,OAAO;AAAA,UACd;AAAA,QAAA;AAAA,MACJ;AAAA,MAEJ;AACW,eAAA;AAAA,IAAA;AAAA,EACf;AAER;AC/BA,MAAMA,iBAA6B;AAAA,EAC/B,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,oBAAoB;AACxB;AAEgB,SAAA,gBACZ,QAAsBA,gBACtB,QACY;AACZ,UAAQ,OAAO,MAAM;AAAA,IACjB,KAAK,aAAa;AACP,aAAA;AAAA,QACH,GAAG;AAAA,QACH,GAAG,OAAO;AAAA,MACd;AAAA,IAAA;AAAA,IAEJ;AACW,aAAA;AAAA,EAAA;AAEnB;ACxBO,MAAM,aAAa;AACnB,MAAM,oBAAoB;ACAjC,MAAM,eAAyC;AAC/C,MAAM,0BAAgE;AAEtD,SAAA,cAAc,QAAkC,cAAc,QAAqD;AAC/H,UAAQ,OAAO,MAAM;AAAA,IACjB,KAAK,YAAY;AACb,aAAO,OAAO;AAAA,IAAA;AAAA,IAElB;AACW,aAAA;AAAA,EAAA;AAEnB;AAEgB,SAAA,qBAAqB,QAA8C,yBAAyB,QAA8D;AACtK,UAAQ,OAAO,MAAM;AAAA,IACjB,KAAK,mBAAmB;AACpB,aAAO,OAAO;AAAA,IAAA;AAAA,IAElB;AACW,aAAA;AAAA,EAAA;AAEnB;ACdA,MAAM,cAAc,gBAA4C;AAAA,EAC5D,MAAM;AAAA,EACN,YAAY,CACR,OACA,WACoC,kBAAkB,OAAO,MAAM;AAAA,EACvE,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,eAAe;AACnB,CAAC;AASD,SAAwB,iBAAoD;AACxE,SAAO,YAAY,aAAa,gBAAgBC,KAAU,CAAC;AAC/D;AC9BO,MAAM,YAAY,MAAiD;AAC/D,SAAA,MAAM,IAAuB,iCAAiC;AACzE;ACAO,SAAS,UAAU,QAA4C;AAC3D,SAAA;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AACJ;AAEO,SAAS,iBAAiB,eAAsE;AAC5F,SAAA;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AACJ;ACba,MAAA,oBAAoB,CAAC,OAAsE;AAC7F,SAAA,MAAM,IAAmC,yCAAyC,EAAE;AAC/F;ACUA,MAAM,QAAQ,eAAe;AAC7B,MAAM,SAAS,eAAe,mBAAmB,CAAC,CAAC;AAEnD,MAAM,YAAY,SAAS,eAAeP,cAAkB;AAE5D,IAAI,aAAa,MAAM;AACb,QAAA,OAAOQ,yBAAW,SAAU;AAClC,QAAM,cAAc,UAAU,WAAW,cAAc,EAAE;AACzD,kBAAgB,OAAO,WAAW;AAElCC,YAA4B,EACvB,KAAK,CAAC,aAAuE;AAC1E,UAAM,SAAS,UAAU,SAAS,IAAI,CAAC;AAAA,EAAA,CAC1C,EACA,MAAM,CAAC,WAAsB;AAAA,EAAA,CAE7B;AAELC,oBAAgC,WAAW,EAC1C,KAAK,CAAC,aAAiE;AACpE,UAAM,SAAS,iBAAiB,SAAS,IAAI,CAAC;AAAA,EAAA,CACjD,EAAE,MAAM,CAAC,WAAsB;AAAA,EAAA,CAE/B;AAED,QAAM,UAAU,MACZlB,sCAAC,YAAS,OACN,UAAAA,sCAACmB,QAAI,CAAA,GACT;AAGC,OAAA,OAAQnB,kCAAAA,IAAA,SAAA,CAAQ,CAAA,CAAE;AAC3B;"}