{"version":3,"sources":["webpack:///./src/components/charts/ostanizdrav/UserPublishedByCountChart.vue?7147","webpack:///./src/vega/userPublishedByCount.js","webpack:///src/components/charts/ostanizdrav/UserPublishedByCountChart.vue","webpack:///./src/components/charts/ostanizdrav/UserPublishedByCountChart.vue?f199","webpack:///./src/components/charts/ostanizdrav/UserPublishedByCountChart.vue","webpack:///./src/components/cards/InfoCard.vue?9f90","webpack:///./src/assets/svg/tw-icon.svg","webpack:///../../src/fable-library/Date.ts","webpack:///./src/components/charts/ostanizdrav/PublishedChart.vue?4309","webpack:///./src/vega/published.js","webpack:///src/components/charts/ostanizdrav/PublishedChart.vue","webpack:///./src/components/charts/ostanizdrav/PublishedChart.vue?38ee","webpack:///./src/components/charts/ostanizdrav/PublishedChart.vue","webpack:///src/visualizations/Types.fs","webpack:///../../src/fable-library/AsyncBuilder.ts","webpack:///../../src/fable-library/Async.ts","webpack:///../../src/fable-library/Observable.ts","webpack:///../../src/fable-library/Event.ts","webpack:///../../src/fable-library/Timer.ts","webpack:///.fable/Fable.Elmish.3.0.6/prelude.fs","webpack:///.fable/Fable.Elmish.3.0.6/cmd.fs","webpack:///.fable/Fable.SimpleHttp.3.0.0/Http.fs","webpack:///src/visualizations/data/WeeklyStats.fs","webpack:///../../src/fable-library/TimeSpan.ts","webpack:///.fable/Feliz.1.16.0/Interop.fs","webpack:///src/visualizations/I18N.fs","webpack:///src/visualizations/Utils.fs","webpack:///.fable/FsToolkit.ErrorHandling.1.4.3/ResultCE.fs","webpack:///src/visualizations/data/Regions.fs","webpack:///src/visualizations/data/Stats.fs","webpack:///src/visualizations/Highcharts.fs","webpack:///src/visualizations/data/Hospitals.fs","webpack:///src/visualizations/data/Patients.fs","webpack:///./.fable/Feliz.1.16.0/ReactInterop.js","webpack:///.fable/Feliz.1.16.0/React.fs","webpack:///.fable/Fable.Promise.2.1.0/Promise.fs","webpack:///.fable/Fable.Promise.2.1.0/PromiseImpl.fs","webpack:///.fable/Feliz.UseElmish.1.4.1/UseElmish.fs","webpack:///src/visualizations/HospitalsChart.fs","webpack:///.fable/Fable.Elmish.React.3.0.1/common.fs","webpack:///src/visualizations/MetricsComparisonChart.fs","webpack:///src/visualizations/DailyComparisonChart.fs","webpack:///src/visualizations/SpreadChart.fs","webpack:///src/visualizations/MapChart.fs","webpack:///src/visualizations/MunicipalitiesChart.fs","webpack:///src/visualizations/data/OurWorldInData.fs","webpack:///src/visualizations/EuropeMapChart.fs","webpack:///src/visualizations/Days.fs","webpack:///src/visualizations/AgeGroupsTimelineViz/Analysis.fs","webpack:///src/visualizations/Statistics.fs","webpack:///./.fable/fable-library.2.13.0/System.Text.js","webpack:///src/visualizations/AgeGroupsTimelineViz/Synthesis.fs","webpack:///src/visualizations/AgeGroupsTimelineViz/Rendering.fs","webpack:///src/visualizations/TestsChart.fs","webpack:///src/visualizations/data/HCenters.fs","webpack:///src/visualizations/HCentersChart.fs","webpack:///src/visualizations/InfectionsChart.fs","webpack:///src/visualizations/CasesChart.fs","webpack:///src/visualizations/PatientsChart.fs","webpack:///src/visualizations/RatiosChart.fs","webpack:///src/visualizations/AgeGroupsChart.fs","webpack:///src/visualizations/RegionsChart.fs","webpack:///src/visualizations/SourcesChart.fs","webpack:///src/visualizations/HcCasesChart.fs","webpack:///src/visualizations/CountriesChartViz/Analysis.fs","webpack:///src/visualizations/CountriesChartViz/Synthesis.fs","webpack:///src/visualizations/CountriesChartViz/CountrySets.fs","webpack:///src/visualizations/CountriesChartViz/Rendering.fs","webpack:///src/visualizations/PhaseDiagram/Types.fs","webpack:///src/visualizations/PhaseDiagram/Data.fs","webpack:///src/visualizations/PhaseDiagram/Chart.fs","webpack:///src/visualizations/MetricsCorrelationViz/Rendering.fs","webpack:///src/visualizations/ShareButton.fs","webpack:///./src/visualizations/IntersectionObserver.js","webpack:///src/visualizations/IntersectionObserver.fs","webpack:///src/visualizations/App.fs","webpack:///.fable/Fable.Elmish.3.0.6/ring.fs","webpack:///.fable/Fable.Elmish.3.0.6/program.fs","webpack:///.fable/Fable.Elmish.React.3.0.1/react.fs","webpack:///src/visualizations/Main.fs","webpack:///./src/components/Navbar.vue?6358","webpack:///../../../src/fable-library/lib/long.js","webpack:///../../src/fable-library/Long.ts","webpack:///.fable/Fable.SimpleJson.3.11.0/Json.Converter.fs","webpack:///./.fable/Fable.Parsimmon.4.0.0/Parsimmon.js","webpack:///../../../src/fable-library/lib/big.js","webpack:///../../src/fable-library/Decimal.ts","webpack:///./src/components/cards/InfoCard.vue?8c8a","webpack:///src/components/cards/InfoCard.vue","webpack:///./src/components/cards/InfoCard.vue?ca27","webpack:///./src/components/cards/InfoCard.vue","webpack:///./src/assets/svg/gh-icon.svg","webpack:///./.fable/fable-library.2.13.0/MutableMap.js","webpack:///./.fable/fable-library.2.13.0/Map.js","webpack:///./src/App.vue?bdff","webpack:///./src/components/Navbar.vue?bad3","webpack:///./src/components/LanguageSwitcher.vue?3699","webpack:///src/components/LanguageSwitcher.vue","webpack:///./src/components/LanguageSwitcher.vue?4f5d","webpack:///./src/components/LanguageSwitcher.vue","webpack:///src/components/Navbar.vue","webpack:///./src/components/Navbar.vue?9640","webpack:///./src/components/Navbar.vue","webpack:///./src/components/Footer.vue?6e0f","webpack:///src/components/Footer.vue","webpack:///./src/components/Footer.vue?a982","webpack:///./src/components/Footer.vue","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/services/api.service.js","webpack:///./src/store/stats.store.js","webpack:///./src/store/hospitals.store.js","webpack:///./src/store/patients.store.js","webpack:///./src/store/municipalities.store.js","webpack:///./src/store/skopje-municipalities.store.js","webpack:///./src/store/health-centers.store.js","webpack:///./src/store/tables.store.js","webpack:///./src/store/ostanizdrav.store.js","webpack:///./src/store/index.js","webpack:///./.fable/fable-library.2.13.0/List.js","webpack:///./src/components/charts/ostanizdrav/UserCountChart.vue?e88e","webpack:///./src/vega/usercount.js","webpack:///src/components/charts/ostanizdrav/UserCountChart.vue","webpack:///./src/components/charts/ostanizdrav/UserCountChart.vue?ca3c","webpack:///./src/components/charts/ostanizdrav/UserCountChart.vue","webpack:///./.fable/fable-library.2.13.0/Array.js","webpack:///../../src/fable-library/RegExp.ts","webpack:///../../src/fable-library/String.ts","webpack:///./src/filters.js","webpack:///./src/directives.js","webpack:///./src/main.js","webpack:///./.fable/fable-library.2.13.0/MutableSet.js","webpack:///./.fable/fable-library.2.13.0/Set.js","webpack:///./src/App.vue?c650","webpack:///../../src/fable-library/Types.ts","webpack:///./src/assets/svg/fb-icon.svg","webpack:///./src/components/Footer.vue?91be","webpack:///.fable/Fable.Parsimmon.4.0.0/Parsimmon.fs","webpack:///.fable/Fable.SimpleJson.3.11.0/Parser.fs","webpack:///.fable/Fable.SimpleJson.3.11.0/TypeCheck.fs","webpack:///.fable/Fable.SimpleJson.3.11.0/SimpleJson.fs","webpack:///./src/i18n.js","webpack:///./src/components/LanguageSwitcher.vue?6eb7","webpack:///./src/components/charts/ostanizdrav/ValidByRiskChart.vue?dc41","webpack:///./src/vega/validByRisk.js","webpack:///src/components/charts/ostanizdrav/ValidByRiskChart.vue","webpack:///./src/components/charts/ostanizdrav/ValidByRiskChart.vue?4b0c","webpack:///./src/components/charts/ostanizdrav/ValidByRiskChart.vue","webpack:///./.fable/fable-library.2.13.0/BigInt/n.js","webpack:///./.fable/fable-library.2.13.0/BigInt/z.js","webpack:///./.fable/fable-library.2.13.0/BigInt.js","webpack:///../../src/fable-library/Double.ts","webpack:///../../src/fable-library/Guid.ts","webpack:///../../src/fable-library/BitConverter.ts","webpack:///../../src/fable-library/Reflection.ts","webpack:///../../src/fable-library/Int32.ts","webpack:///./src/components/charts/VegaChart.vue?9fbe","webpack:///./src/vega/opts.js","webpack:///src/components/charts/VegaChart.vue","webpack:///./src/components/charts/VegaChart.vue?06f2","webpack:///./src/components/charts/VegaChart.vue","webpack:///.fable/Fable.SimpleJson.3.11.0/TypeInfo.Converter.fs","webpack:///../../src/fable-library/Option.ts","webpack:///./src/components/charts/VegaChart.vue?3fd4","webpack:///./src/components/charts/ostanizdrav/PublishedByRiskChart.vue?be04","webpack:///./src/vega/publishedByRisk.js","webpack:///src/components/charts/ostanizdrav/PublishedByRiskChart.vue","webpack:///./src/components/charts/ostanizdrav/PublishedByRiskChart.vue?c665","webpack:///./src/components/charts/ostanizdrav/PublishedByRiskChart.vue","webpack:///../../src/fable-library/Seq.ts","webpack:///../../src/fable-library/Util.ts","webpack:///./src/visualizations/_highcharts.js","webpack:///./src/components/charts/ostanizdrav/ValidChart.vue?33cf","webpack:///./src/vega/valid.js","webpack:///src/components/charts/ostanizdrav/ValidChart.vue","webpack:///./src/components/charts/ostanizdrav/ValidChart.vue?b32e","webpack:///./src/components/charts/ostanizdrav/ValidChart.vue","webpack:///../../src/fable-library/DateOffset.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","$t","plotData","staticRenderFns","name","components","VegaChart","data","userPublishedByCount","component","module","exports","rep","utc","date","getUTCHours","getHours","d","published","a","clo1","b","clo2","x","text","ex","console","interval","callback","t","returnVal","Start","dispatch","cmd","List","sub","cmds","msg","start","task","arg","ofSuccess","ofError","arg00","_arg1","value","Header","HttpMethod","BodyContent","ResponseContent","delimiter","input","url","defaultRequest","httpVerb","req","singleHeader","headers","tupledArg","xhr","serializeMethod","responseText","matchValue","statusCode","responseType","content","elements","array","readyState","status","response","getAllResponseHeaders","splitAt","headerLine","parts","forLoopVar","setRequestHeader","mimeType","overrideMimeType","send","request","method","mapKeysToUpperCase","map","source","Seq","ToDomain","parseWStatsData","responseData","transferWStatsData","inputJson","typeInfo","transferDataPoint","Array","countryTotals","weeklyStats","table","ws","state","a_","key","b_","v","arg0","_arg2","arg10","mkAttr","mkStyle","i18n","tOptions","options","tt","section","dow","dayOfWeek","chartText","chartTextsGroup","textId","zeroToNone","optionToInt","parseDate","str","roundDecimals","decimals","roundTo1Decimal","roundTo3Decimals","formatToInt","formatted","formatTo1DecimalWithTrailingZero","formatTo3DecimalWithTrailingZero","percentageValuesWith1DecimalTrailingZeroLabelFormatter","percentageValuesLabelFormatter","copyOfStruct","abs","findDoublingTime","values","reversedValues","list","dp","Value","Date","halfValue","classes","classTuples","names","renderScaleSelector","scaleType","elems","xs","renderSelector","currentScaleType","label","defaultProps","yLabel","linearLabel","logLabel","renderChartTopControls","children","renderChartTopControlRight","topControl","properties","loadingLabel","renderErrorLoading","error","renderMaybeVisible","visible","transliterateCSZ","Set","groupKey","fromValue","toValue","exn","ageGroupId","toAgeGroupId","agePopulationStats","__","generator","( .ctor )","parseRegionsData","csv","headerMunicipalities","rows","header","col","region","municipality","row","columns","result","municipalities","apiEndpoint","loadSkMun","item","parseStatsData","transferStatsData","y","jsNoon","nWeeks","saturday","origin","i","from","to","addContainmentMeasuresFlags","startDate","endDate","events","title","ts","showMeasure","onLoadEvent","e","event","document","createEvent","initEvent","optionsWithOnLoadEvent","className","o","configureRangeSelector","selectedRangeSelectionButtonIndex","buttons","inputDateFormat","inputEditDateFormat","arg20","localStorage","getItem","arg30","clo3","basicChartOptions","rangeSelectorButtonClickHandler","labels","plotLines","plotBands","week","type","min","max","maxPadding","showFirstLabel","tickInterval","condition","chart","xAxis","tooltip","shadedWeekendPlotBands","yAxis","navigator","scrollbar","legend","responsive","plotOptions","rangeSelector","credictsOptions","count","counts","asset","assets","getValue","facilitySeriesInfo","ps","getSortedFacilityCodes","quality","Option","vents","option","hospitals","tuple","cached","useEffect","getDisposable","useEffectReact","disposable","Dispose","useEffectWithDeps","deps","useLayoutEffect","useLayoutEffectReact","renderElement","withKey","props","propsWithKey","areEqual","memoElementType","f","dispose","effect","dependencies","createDisposable","_arg3","_arg4","callbackFunction","initialValue","createFunction","functionComponent","memo","lastRenderCallbackRef","useRef","callbackRef","useCallback","initial","PromiseBuilder","guard","p","While","f1","f2","er","success","fail","size","_","rix'","init","update","token","ring","patternInput","cts","setChildState","current","pr","nextMsg","Pop","record","useElmish","breakdown","cmd2","facilities","switchBreakdown","getAllScopes","fcode","extractFacilityDataPoint","scope","atype","ctype","fa","binder","extractPatientDataPoint","cType","extractTotalsCount","extractFacilityCount","renderChartOptions","spline","yAxes","getYAxis","renderFacilitiesSeries","aType","scaleBy","color","dash","renderPoint","n","dashStyle","extra","renderPatientsProjection","growthFactor","limit","k","Math","renderPatientsSeries","mapping","nDays","series","baseOptions","buttonIndex","enabled","renderChartContainer","renderTable","getFacilityDp","getPatientsDp","numericCell","pt","cur","total","free","renderScopeSelector","onClick","renderBreakdownSelectors","err","hospitalsChart","fullKey","equal","view","comp","lazyViewWith","nextProps","_nextState","metric","fn","metrics","mc","Error","Metrics","Visible","statsDataGenerator","point","patientsDataGenerator","calcRunningAverage","entriesCount","cutOff","averagedDataLength","averages","daysOfMovingAverageFloat","currentSum","average","valueToSubtract","prepareMetricsData","untrimmedData","UseStatsData","isValueMissing","trimmedData","finalData","allSeries","startTime","visibleMetrics","MetricType","metricStartTime","marker","lineWidth","states","ax","renderMetricSelector","style","renderMetricsSelectors","renderMetricTypeSelectors","activeMetricType","metricTypesSelectors","metricTypeToRender","active","Name","availableMetricTypes","metricsComparisonChart","dType","fourWeeks","percentageFormatter","valueF","aa","bb","weekIdx","rgb","sat","argb","r","g","avg","newR","newG","newB","idx","len","getColor","Int32","diff","credits","fmtStr","jsThis","category","pts","getName","fmtLine","yStr","arg40","clo4","dt","isActive","renderDisplaySelectors","all","dailyComparisonChart","inputRecord","legendTitle","daily","yesterday","rate","days","chartCfg","fromScale","dataLabels","renderExplainer","h","positive","hospitalized","renderScaleSelectors","page","spreadChart","munGeoJsonUrl","regGeoJsonUrl","skopjeGeoJsonUrl","mapToDisplay","regionsData","municipalityDataMap","dataTimeInterval","regionsDataPoint","excludedMunicipalities","MunicipalityKey","totalCases","TotalConfirmedCases","TotalDeceasedCases","projection","regDataMap","munData","cases","skopjeMunData","RegionKey","regData","Default","activePatternResult25038","GeoJson","newContentType","( |ConfirmedCasesMsgCase|DeceasedMsgCase| )","newDisplayType","loadRegGeoJson","loadSkopjeMunGeoJson","loadMunGeoJson","seriesData","areaData","index","confirmedCasesValue","newCases","cc","deceasedValue","totalConfirmed","lastValueTotal","lastValueRelative","dateInterval","firstValueTotal","lastValue","weeklyIncrease","scaled","value100k","parseNumber","casesNow","cases7dAgo","cases14dAgo","increaseThisWeek","increaseLastWeek","renderMap","keys","joinBy","normal","colorMax","dataMax","colorAxis","lastDate","colorMin","stops","c","dateText","noData","subtitle","MapToDisplay","desaturateColor","color2","color3","temp","columnColors","arrays","points","area","absolute","population","pctPopulation","labelKey","e2","areaLocalized","currentOption","renderSelectors","renderDisplayTypeSelector","selectors","renderDataTimeIntervalSelector","dataTimeIntervals","renderContentTypeSelector","selected","renderedTypes","ContentType","ev","mapChart","query","regions","Query","search","Regions","sort","queryObj","dataToDisplay","lastDataPoint","reg","last","before","totals","ActiveCases","ConfirmedToDate","DeceasedToDate","totalsShown","maxConfirmed","showMaxBars","lastChange","activeCases","maxActive","dayBefore","doublingTime","Search","Region","View","DataToDisplay","ShowAll","evt","dispatchEvent","renderMunicipality","renderLastCase","renderedDoublingTime","renderedBars","displayValue","maxValue","confirmedToDate","deceasedToDate","recoveredToDate","aHeight","barMaxHeight","dHeight","rHeight","showDate","renderMunicipalities","dataFilteredByQuery","dataFilteredByRegion","compareStringOption","sortedMunicipalities","s1","s2","compareActiveCases","m1","m2","d1","d2","collapsedMunicipalityCount","renderShowMore","showAll","preventDefault","element","getElementById","position","getBoundingClientRect","window","pageYOffset","renderSearch","renderRegionSelector","renderedRegions","renderView","currentView","municipalitiesChart","loadData","apiUrl","URLSearchParams","rowString","parseInt","parseFloat","europeGeoJsonUrl","worldGeoJsonUrl","cmdGeoJson","cmdOwdData","CountrySelection","euCountries","prepareCountryData","weeklyData","importedFrom","dataForLastTwoWeeks","importedDate","incidence","incidenceMaxValue","owdDate","fixedCode","country","incidence100k","imported","redCountries","greenCountries","redNote","greenNote","cd","OwdData","owdCountries","code","someWeeksAgo","ret","CountryData","loadWorldGeoJson","loadEuropeGeoJson","mapData","countries","worldCountries","nc","casesLastWeek","casesWeekBefore","relativeIncrease","twoWeekCaseNumbers","ncDate","impDate","baseRec","twoWeekCases","geoJson","align","verticalAlign","clo5","clo6","maxCases","tickScale","twoWeekIncidence","textHtml","renderChartTypeSelectors","activeChartType","renderChartSelector","chartSelector","daysInYear","year","between","date1","date2","yearsDays","daysToAdd","mapDateTuplesListToArray","dateTupleList","arraySize","daysSince","trimDatedArray","trimPredicate","datedArray","trimmedLeading","daysToIncrement","newStartDate","trimmed","mapDatedArrayItems","mapDatedArray","calcCasesByAgeForDay","prevDay","currentDay","calcIntOptionDiff","value1","value2","prevDayGroups","keyValuePairs","ageGroup","calculateCasesByAgeTimeline","totalCasesByAgeGroups","newCasesTimelineArray","totalCasesTimelineArray","forDay","group","movingAverageCentered","keyFunc","valueFunc","centerIndex","averageValue","targetKey","movingAverages","averageFunc","daysOfMovingAverage","roundKeyValueFloatArray","howManyDecimals","calculateWindowedSumInt","windowSize","runningSum","addValue","subValue","StringBuilder","declare","capacity","$this$$1","buf","isNullOrEmpty","push","StringBuilder$$$$002Ector$$Z18115A39","call","StringBuilder$$$$002Ector","StringBuilder$$Append$$Z721C83C5","s","StringBuilder$$AppendFormat$$433E080","x$$2","fmt","format","prototype","toString","join","listAgeGroups","timeline","extractTimelineForAgeGroup","ageGroupKey","metricsType","casesTimeline","newCasesTimeline","dayGroupsData","dataForGroup","tooltipFormatter","ageGroupLabel","ageGroupColor","dataPoint","dataValue","percentage","ageGroupTooltip","availableDisplayMetrics","totalCasesByAgeGroupsList","allGroupsKeys","colors","groupTimeline","activeMetrics","renderChart","positiveTests","negativeTests","allYAxis","performed","testsChart","sumOption","( + )","None","parseData","municipalityStats","PhoneTriage","Tests","SentTo","getRegionList","hcData","hc","hCentersChart","filter","without","metricType","availableDisplayTypes","allMetricsData","metricsToDisplay","runningTotals","pointData","metricFunc","skipLeadingMissing","allDates","sources","activeDisplayType","displayType","halfDaysOfMovingAverage","infectionsChart","legendFormatter","fmtDate","fmtUnder","subtract","negative","getPoint","getPointTotal","getSeriesInfo","casesChart","hTypeToDisplay","getAllBreakdowns","getFacilitiesList","AllFacilities","renderByHospitalChart","stats","renderStructureChart","psData","fmtTotal","structure","renderBreakdownSelector","patientsChart","renderRatiosChart","getClassName","ratio","percent","renderRatioPoint","getSeries","renderDisplaySelector","ratiosChart","mode","maybeFloat","populationOf","sexLabel","fromAge","toAge","ageGroupStats","percentageOfPopulation","affected","rawPercentage","percentageOfPopulationMaybe","infections","percentageOfInfected","deaths","deathsPerInfectionsMaybe","mergeInfectionsAndDeathsByGroups","mappedInfections","deathsDict","merged","combined","latestAgeData","extractAgeGroupsDataMaybe","ageGroupsData","deathsData","infectionsData","infectionsDataMaybe","deathsDataMaybe","ag","calculateChartData","infectionsAndDeathsPerAge","chartMode","mapNoneToZero","infectionsWithoutNones","categories","ageGroupData","populationStats","male","female","renderScaleTypeSelectors","activeScaleType","renderScaleTypeSelector","renderChartCategorySelector","activeChartMode","chartModeToRender","renderChartCategorySelectors","ScaleType","latestDate","chartData","valuesLabelFormatter","AgeGroupsLabels","sex","arg50","arg60","arg70","clo7","MaleValues","FemaleValues","toChartMode","latest","regionTotal","city","config","regionsWithoutExcluded","regionsByTotalCases","excludedRegions","regionsInfo","newMetrics","m","tooltipValueFormatter","regionTooltip","regionName","regionColor","metricsToRender","totalSum","finalValue","muni","regionPopulation","regionPopBy100k","typeSelector","strings","fmtWeekYearFromTo","tooltipFormatterWithTotal","totalText","splitOutFromTotal","split","split_","total_","renderSeriesImportedByCountry","countryCodesSortedByTotal","countriesToShowInLegend","countryIndex","countryCode","countryColors","showInLegend","renderSeries","legendIndex","onRangeSelectorButtonClick","lastWeek","quarantine","quarantineRelative","bySource","reversedStacks","disclaimer","sourcesChart","healthcare","hcCasesChart","groupEntriesByCountries","metricToDisplay","entries","groupedRaw","entry","countryEntries","entryRaw","totalDeaths","calculateActiveCases","runningActiveCases","countryEntry","calculateMovingAverages","averagesSetLength","entryToRemove","buildFromSloveniaDomesticData","statsData","domesticDataForDate","dataForDate","extractMetricIfPresent","metricValue","SloveniaPopulationInM","updateWithSloveniaDomesticData","countryData","aggregateOurWorldInData","owidDataState","doAggregate","owidData","dataPointsWithLocalSloveniaData","groupedByCountries","averagedAndFilteredByCountries","postProcessedEntries","trimmedEntries","minValueFilter","DashStyle","yAxisValueFormatter","dataDescription","countryTooltip","countryName","countryColor","prepareChartData","aggregated","colorsInPalette","countriesCount","ColorPalette","countryIsoCode","colorIndex","countriesDisplaySets","setCriticalEU","setCriticalWorld","setNeighboringCountries","setNordic","setEastAsiaOceania","setLatinAmerica","getCountriesCodes","selectedSet","countriesCodes","newOwidDataState","renderChartCode","countrySeries","renderCountriesSetsSelectors","activeSet","setToRender","topControls","totalVsWeekData","normalizedData","aCount","bCount","bCountToDate","CountToDate","countToDate","countInWindow","Count","weekVsWeekBeforeData","doubleWindow","firstWindowSum","secondWindowSum","diagramKind","displayData","Day","newState","activePatternResult25889","Metric","newDisplayData","sharedChartOptions","totalVsWeekChartOptions","sharedOptions","weekVsWeekBeforeOptions","renderDiagramKindSelectors","chartOptions","Props","All","casesYAxis","hospitalizedYAxis","deceasedYAxis","yAxesResponsive","dropdown","viz","graphUrl","embedUrl","createIntersectionObserver","targetElementId","target","observer","IntersectionObserver","observe","intersectionObserverEntries","visualization","renderingMode","initialState","WeeklyStatsData","RegionsData","SkopjeMunicipalitiesData","StatsData","visualizationType","brandLink","metricsComparison","dailyComparison","spread","regionMap","skopjeMunMap","skopjeMunicipalities","europeMap","worldMap","ageGroupsTimeline","tests","hCenters","patients","patientsCare","ratios","ageGroups","regionsAbs","regions100k","hcCases","countriesCasesPer1M","countriesActiveCasesPer1M","countriesDeathsPer1M","countriesDeathsPerCases","phaseDiagram","metricsCorrelation","localVisualizations","worldVisualizations","allVisualizations","renderFaqLink","context","wix'","doubleSize","wix","ix","items","model","setState","program","rb","reentered","syncDispatch","runWith","lazyView2With","placeholderId","withReactSynchronousUsing","Visualizations","elementId","Long","compare","$this","other","fromBits","parse","_a","flattenMap","json","activePatternResult14283","( |MapKey|_| )","left","right","activePatternResult14285","activePatternResult14289","( |MapEmpty|_| )","activePatternResult14288","( |MapOne|_| )","activePatternResult14287","( |MapNode|_| )","leftMap","rightMap","generateMap","case","isRecord","foundCase","testExpr","comparer","getlElemType","getElemType","getTypes","jsonValue","optionalTypeDelayed","elemType","insideBrowser","caseName","activePatternResult14307","( |NonArray|_| )","caseNames","expectedCases","arrayLike","deserialized","fromJsonAs","optional","parsedOptional","parsedValues","array2","caseInfo","caseType","unionOfRecords","unexpectedJson","expectedType","discriminators","foundDiscriminatorKey","keyword","discriminatorKey","discriminatorValueJson","foundUnionCase","optionalType","dict","isQuoted","get","high","low","lowBytes","highBytes","combinedBytes","removeQuotes","serializedRecord","caseValue","elementTypeDelayed","tupleTypesDelayed","tuples","getType","_arg5","otherwise","_arg6","_arg7","types","foundCaseName","elementType","converted","tupleTypes","recordValues","_arg8","dictKeys","recordFields","pairs","keyValuePair","output","inputSequence","hashset","tree","internalMap","nextKey","nextValue","unknownType","Parsimmon","action","times","forEach","arr","length","reduce","seed","elem","acc","concat","bufferExists","Buffer","isParser","obj","isArray","isBuffer","makeSuccess","furthest","expected","makeFailure","mergeReplies","union","makeLineColumnIndex","offset","line","column","lines","slice","lineWeAreUpTo","columnWeAreUpTo","ys","j","hasOwnProperty","assertParser","charAt","assertArray","assertNumber","assertRegexp","RegExp","flags","assertFunction","assertString","linesBeforeStringError","linesAfterStringError","bytesPerLine","bytesBefore","bytesAfter","defaultLinePrefix","repeat","string","amount","formatExpected","leftPad","pad","char","add","toChunks","chunkSize","chunks","chunkIndex","rangeFromIndexAndOffsets","after","byteRangeToRange","byteRange","floor","formatGot","lineWithErrorIndex","lineRange","lastLineNumberLabelLength","verticalMarkerLength","byteLineWithErrorIndex","columnByteIndex","bytes","bytesInChunks","toJSON","byteLines","byteRow","byteValue","byteLine","inputLines","lineWithErrorCurrentIndex","linesWithLineNumbers","lineSource","lineNumberLabel","isLineWithError","prefix","formatError","re","lastIndexOf","anchoredRegexp","seq","parsers","arguments","numParsers","accum","seqMap","args","mapper","pop","apply","results","alt","sepBy","parser","separator","sepBy1","or","succeed","then","many","rs","head","regexp","anchored","match","exec","fullMatch","groupMatch","message","lookahead","notFollowedBy","test","predicate","oneOf","ch","indexOf","desc","noneOf","takeWhile","lazy","undefined","empty","skip","eof","tryParse","alternative","trim","wrap","leftParser","rightParser","middle","thru","wrapper","next","self","tieWith","tie","prevResult","res","atMost","atLeast","rest","contramap","promap","mark","end","node","reply","fallback","ap","chain","nextParser","of","any","digit","letter","letters","optWhitespace","whitespace","cr","lf","crlf","newline","rm","P","staticClass","class","specialCardStyleClass","_v","_s","round","renderValues","lastDay","_f","field","diffClass","percentDiff","_e","iconClass","renderActiveValues","fieldNewCases","renderTotalValues","totalIn","fieldDeceased","totalOut","totalDeceased","staticStyle","displayDate","String","goodTrend","default","seriesType","computed","incidenceClass","cardTitle","Object","$route","firstDate","showAbsolute","showIn","showIncidence","showOut","showDeceased","methods","MutableMap$00602","this$","FSharpRef","contents","hashMap","Map","iterate","pair","MutableMap$00602$$Add$$5BDDA1","MutableMap$00602$$$$002Ector$$6623D9B3","MutableMap$00602$$TryFindIndex$$2B595","this$$$1","GetHashCode","tryGetValue","findIndex","pair$$1","Equals","MutableMap$00602$$TryFind$$2B595","this$$$2","k$$1","$target$$10","matchValue$$1","getItemFromDict","MutableMap$00602$$Clear","this$$$4","clear","MutableMap$00602$$get_Count","this$$$5","sumBy","pairs$$2","GetZero","Add","$x$$2","$y$$3","MutableMap$00602$$get_Item$$2B595","this$$$6","k$$2","matchValue$$2","pair$$2","MutableMap$00602$$set_Item$$5BDDA1","this$$$7","k$$3","$target$$20","matchValue$$3","set","this$$$8","k$$4","v$$1","$target$$24","matchValue$$4","MutableMap$00602$$ContainsKey$$2B595","this$$$9","k$$5","$target$$27","matchValue$$5","MutableMap$00602$$Remove$$2B595","this$$$10","k$$6","$target$$30","matchValue$$6","splice","Symbol","iterator","this$$$11","toIterator","delay","collect","pairs$$3","pair$$3","getEnumerator","this$$$12","Clear","this$$$13","Contains","item$$1","$target$$31","this$$$14","matchValue$$7","equals","CopyTo","arrayIndex","this$$$15","iterateIndexed","i$$10","defineProperty","this$$$16","Remove","item$$2","this$$$18","matchValue$$8","pair$$4","this$$$19","this$$$20","delete","k$$7","this$$$21","this$$$22","k$$8","this$$$23","has","k$$9","this$$$24","this$$$25","pair$$5","k$$10","v$$2","this$$$26","this$$$27","pair$$6","MapTree$00602","tag","fields","Union","MapTreeModule$$$sizeAux","$acc$$5","$m$$6","MapTreeModule$$$size","MapTreeModule$$$empty","MapTreeModule$$$height","MapTreeModule$$$isEmpty","m$$1","MapTreeModule$$$mk","l$$1","r$$1","$target$$14","hl","hr","m$$2","MapTreeModule$$$rebalance","t1","t2","t1h","t2h","MapTreeModule$$$add","m$$3","Compare","c$$1","MapTreeModule$$$find","$comparer$$1$$23","$k$$3$$24","$m$$4$$25","comparer$$1","m$$4","c$$2","c$$3","MapTreeModule$$$tryFind","$comparer$$2$$26","$k$$4$$27","$m$$5$$28","comparer$$2","m$$5","c$$4","some","c$$5","MapTreeModule$$$filter1","comparer$$6","f$$3","v$$6","acc$$4","MapTreeModule$$$filterAux","$comparer$$7$$48","$f$$4$$49","$s$$2$$50","$acc$$5$$51","comparer$$7","f$$4","s$$2","acc$$5","acc$$6","acc$$7","MapTreeModule$$$filter","comparer$$8","f$$5","s$$3","MapTreeModule$$$spliceOutSuccessor","m$$6","MapTreeModule$$$remove","comparer$$9","k$$11","m$$7","c$$6","c$$7","patternInput$$1","MapTreeModule$$$mem","$comparer$$10$$59","$k$$12$$60","$m$$8$$61","comparer$$10","k$$12","m$$8","c$$8","MapTreeModule$$$iter","$f$$6$$62","$m$$9$$63","f$$6","m$$9","MapTreeModule$$$mapi","f$$11","m$$14","l2$$1","v2$$17","r2$$1","MapTreeModule$$$fold","$f$$13$$77","$x$$4$$78","$m$$16$$79","f$$13","x$$4","m$$16","x$$5","x$$6","MapTreeModule$$$loop","$m$$19$$92","$acc$$8$$93","m$$19","acc$$8","MapTreeModule$$$toList","m$$20","MapTreeModule$$$ofList","comparer$$13","l$$20","fold$$1","acc$$9","MapTreeModule$$$mkFromEnumerator","$comparer$$14$$97","$acc$$10$$98","$e$$99","comparer$$14","acc$$10","MoveNext","patternInput$$2","Current","MapTreeModule$$$ofArray","comparer$$15","res$$2","patternInput$$3","MapTreeModule$$$ofSeq","comparer$$16","c$$9","ie","isDisposable","MapTreeModule$$$copyToArray","s$$4","arr$$1","i$$1","x$$15","y$$2","MapTreeModule$002EMapIterator$00602","stack","started","Record","MapTreeModule$$$collapseLHS","$stack$$111","tail","MapTreeModule$$$mkIterator","s$$5","MapTreeModule$$$notStarted","MapTreeModule$$$alreadyFinished","MapTreeModule$$$current","i$$2","MapTreeModule$$$moveNext","i$$3","MapTreeModule$002EmkIEnumerator$0027$00602","s$$6","MapTreeModule$002EmkIEnumerator$0027$00602$$$$002Ector$$Z26BC498C","MapTreeModule$$$mkIEnumerator","s$$7","MapTreeModule$$$toSeq","s$$8","en","unfold","en$$1","__$$1","Reset","__$$2","FSharpMap","comparer$$17","$this$$2","FSharpMap$$$$002Ector$$58ADD115","FSharpMap$$get_Tree","__$$5","FSharpMap$$Add$$5BDDA1","__$$6","k$$28","v$$24","FSharpMap$$get_IsEmpty","__$$7","FSharpMap$$get_Item$$2B595","__$$8","k$$29","FSharpMap$$Filter$$Z395DDC35","__$$12","f$$19","FSharpMap$$Map$$Z6F6B671C","__$$18","f$$25","FSharpMap$$get_Count","__$$20","FSharpMap$$ContainsKey$$2B595","__$$21","k$$31","FSharpMap$$Remove$$2B595","__$$22","k$$32","FSharpMap$$TryFind$$2B595","__$$23","k$$33","FSharpMap$$ToList","__$$24","isEmpty","m$$23","k$$37","v$$27","m$$24","find","k$$38","m$$25","tryFind","k$$39","m$$26","remove","k$$40","m$$27","containsKey","k$$41","m$$28","f$$31","m$$33","f$$35","m$$37","fold","f$$36","z","m$$38","toSeq","m$$40","ofList","l$$22","comparer$$18","ofSeq","l$$23","comparer$$19","ofArray","comparer$$20","toList","m$$45","toArray","m$$46","res$$6","comparer$$21","createMutable","source$$3","comparer$$22","map$$1","MutableMap$002400602$0024$0024$0024$0024002Ector$0024$00246623D9B3","groupBy","comparer$$23","empty$$1","iterate$$1","v$$30","map$$2","kv$$3","kv","combineHash","x$$16","y$$3","res$$3","e$$1","patternInput$$5","activePatternResult3682","structuralHash","that","CompareTo","__$$25","m$$22","res$$4","finished","e1","kvp1","kvp2","c$$10","this$$$3","_arg1$$1","k$$34","k$$35","source$$1","kv$$1","k$$36","v$$26","source$$2","kv$$2","embed","path","scrolled","scrollPosition","menuOpen","menuOpened","closingMenu","on","toggleMenu","isMobile","_l","lang","$i18n","i18next","language","toLowerCase","replace","$event","changeLanguage","lng","toggleDropdown","selectedLanguage","toUpperCase","directives","rawName","expression","showFullLang","mixins","languages","onResize","innerWidth","params","log","hideDropdown","mounted","addEventListener","beforeDestroy","removeEventListener","LanguageSwitcher","dropdownVisible","created","handleScroll","scrollY","closeMenu","setTimeout","watch","_m","metaInfo","pathWithoutLanguage","links","htmlAttrs","meta","link","Boolean","Navbar","Footer","$store","hash","elm","clearInterval","checker","ApiService","baseURL","axios","defaults","resource","opts","axiosETAGCache","cumulative","day2Before","month","padStart","day","getTime","exportTime","loaded","getters","getValueOn","searchResult","getLastValue","reverse","setHours","actions","fetchData","commit","tempDate","setDate","getDate","ApiEndpoint","timestamp","refreshDataEvery","seconds","setInterval","mutations","setData","setRegions","setExportTime","statsStore","namespaced","hospitalName","id","hospitalsJSON","setHospitals","hospitalsStore","patientsStore","municipalitiesStore","skopjeMunicipalitiesStore","healthCentersStore","processTableData","dimension","newData","interpolation","escapeValue","val","tableData","filterTableData","includes","dim","sample","stickyColumn","sortable","loadCsv","resp","unix","location","d3","Vue","use","Vuex","store","Store","modules","healthCenters","ostanizdrav","ostanizdravStore","$_arg1$$3$$5","_arg1$$3","tryLast","$_arg1$$4$$6","_arg1$$4","foldIndexedAux","$f$$12","$i$$13","$acc$$14","$_arg1$$5$$15","_arg1$$5","foldIndexed","f$$1","xs$$7","$f$$2$$19","$state$$1$$20","$xs$$8$$21","f$$2","state$$1","xs$$8","xs$$9","acc$$1","xs$$12","xs$$13","acc$$3","x$$9","lists","xs$$15","state$$3","xs$$14","x$$10","xs$$27","_arg1$$7","append","xs$$28","ys$$10","f$$16","xs$$31","xs$$32","acc$$11","mapIndexed","f$$17","xs$$33","xs$$34","acc$$12","x$$17","f$$24","xs$$46","unitVar0","x$$24","xs$$50","res$$1","i$$9","tryPickIndexedAux","$f$$28$$120","$i$$10$$121","$_arg1$$9$$122","f$$28","_arg1$$9","tryPickIndexed","f$$29","xs$$52","tryPick","f$$30","xs$$53","_arg1$$10","x$$29","pick","xs$$54","x$$30","value$$1","tryFindIndexed","f$$32","xs$$55","i$$11","x$$31","f$$33","xs$$56","_arg1$$11","x$$32","findIndexed","f$$34","xs$$57","x$$33","xs$$58","_arg1$$12","x$$34","xs$$69","i$$13","_arg1$$13","f$$42","xs$$71","xs$$72","acc$$17","x$$37","choose","f$$44","xs$$74","xs$$75","acc$$18","x$$39","y$$10","contains","eq","loop$$1","$xs$$76$$162","xs$$76","f$$47","_arg1$$16","exists","$f$$51$$180","$_arg1$$18$$181","f$$51","_arg1$$18","sortBy","xs$$90","comparer$$3","xs$$92","xs$$91","x$$50","y$$18","sortByDescending","projection$$1","xs$$96","xs$$98","xs$$97","x$$52","y$$20","sum","xs$$102","adder","acc$$21","x$$53","maxBy","projection$$2","xs$$104","comparer$$11","x$$55","y$$21","li","comparer$$12","x$$56","y$$22","minBy","projection$$3","xs$$105","x$$57","y$$23","skipWhile","$predicate$$243","$xs$$120$$244","$target$$245","t$$4","xs$$120","takeSplitAux","$error$$246","$i$$21$$247","$acc$$25$$248","$xs$$121$$249","i$$21","acc$$25","xs$$121","i$$30","xs$$129","$target$$260","i$$33","xs$$131","outOfRange","lower","upper","xs$$132","lower$$1","defaultArg","hasUpper","lastIndex","state$$13","i$$34","acc$$26","x$$67","projection$$5","xs$$139","eq$$4","createMutable$$1","matchValue$$16","addToDict","result$$1","xs$$141","key$$1","pairwise","xs$$145","pairwise$$1","windowed","i$$35","usercount","indexNotFoundMsg","array1","cons","ArrayBuffer","isView","len1","len2","newArray","fill","targetIndex","getSubArray","array$$3","start$$1","count$$2","array$$5","array$$6","cons$$1","target$$1","delegateArg0","delegateArg1","cons$$2","len$$1","target$$2","i$$4","x$$1","map2","source1$$1","source2$$1","cons$$4","i$$6","cons$$9","arr$$4","arrays$$1","totalIdx","totalLength","arr$$5","result$$4","idx$$1","arr$$6","array$$26","cons$$11","eq$$5","dict$$1","keys$$1","idx$$3","key$$2","result$$6","key$$3","array$$28","initialize","count$$8","initializer","cons$$15","result$$7","array$$30","count$$9","result$$8","i$$14","replicate","count$$10","cons$$16","result$$9","i$$15","copy","array$$31","cons$$17","array$$33","cons$$18","array$$35","count$$11","array$$39","cons$$21","count$$12","predicate$$7","array$$41","cons$$23","count$$14","count$$15","take","count$$16","array$$43","cons$$25","predicate$$13","array$$61","findIndexBack","predicate$$22","array$$72","loop$$6","$i$$27$$164","i$$27","tryFindIndexBack","predicate$$23","array$$73","loop$$7","$i$$28$$167","i$$28","chooser$$2","array$$74","cons$$30","arr$$7","option$$1","value$$15","folder$$4","state$$6","array$$78","delegateArg0$$2","delegateArg1$$2","action$$1","array$$81","i$$31","permute","f$$8","array$$85","isValid","res$$7","checkFlags","Int32Array","j$$1","every","projection$$4","xs$$4","comparer$$4","xs$$5","x$$14","y$$4","y$$6","sortWith","xs$$10","xs$$11","zip","array1$$4","array2$$4","result$$10","len$$15","i$$38","chunkBySize","array$$97","result$$12","x$$18","ceil","start$$8","compareWith","array1$$6","array2$$6","i$$40","result$$13","length1","length2","equalsWith","array1$$7","array2$$7","tryItem","index$$6","array$$109","reduction","array$$114","array$$120","i$$44","projection$$6","array$$121","adder$$1","i$$45","projection$$7","x$$25","y$$11","source$$6","cons$$31","source$$7","cons$$32","source$$8","len$$17","target$$6","i$$48","source$$9","res$$9","len$$18","max$$1","comparePrimitives","i$$49","splitInto","array$$124","result$$14","chunks$$1","min$$1","minChunkSize","chunksWithExtraItem","i$$50","chunkSize$$1","start$$11","slice$$1","precision","minimumFractionDigits","maximumFractionDigits","formatNumber","signDisplay","marked","directive","bind","el","binding","innerHTML","LayoutPlugin","TabsPlugin","FormTextareaPlugin","TooltipPlugin","BTable","BFormSelect","library","faSpinner","faGlobe","faCaretDown","FontAwesomeIcon","productionTip","MutableSet$00601","MutableSet$00601$$Add$$2B595","MutableSet$00601$$$$002Ector$$Z6150332D","MutableSet$00601$$TryFindIndex$$2B595","MutableSet$00601$$Clear","MutableSet$00601$$get_Count","$target$$16","MutableSet$00601$$Contains$$2B595","$target$$19","MutableSet$00601$$Remove$$2B595","$target$$22","values$$1","value$$2","i$$8","item$$3","this$$$17","add_","SetTree$00601","SetTreeModule$$$SetOne","SetTreeModule$$$SetNode","SetTreeModule$$$height","SetTreeModule$$$tolerance","SetTreeModule$$$mk","l$$2","r$$2","SetTreeModule$$$rebalance","SetTreeModule$$$add","t$$1","SetTreeModule$$$mem","$comparer$$4$$35","$k$$5$$36","$t$$5$$37","t$$5","SetTreeModule$002ESetIterator$00601","SetTreeModule$$$collapseLHS","$stack$$104","SetTreeModule$$$mkIterator","s$$13","SetTreeModule$$$notStarted","SetTreeModule$$$alreadyFinished","SetTreeModule$$$current","SetTreeModule$$$moveNext","SetTreeModule$002EmkIEnumerator$00601","s$$14","SetTreeModule$002EmkIEnumerator$00601$$$$002Ector$$Z5B395D56","SetTreeModule$$$mkIEnumerator","s$$15","SetTreeModule$$$compareStacks","$comparer$$17$$112","$l1$$113","$l2$$114","$target$$115","t1$$6","t2$$6","n1k","n2k","t1$$7","t2$$7","n1k$$1","n2k$$1","n2r","t1$$8","t2$$8","emp","n1k$$2","n1r","n2k$$2","t1$$9","t2$$9","n1k$$3","n1r$$1","n2k$$3","n2r$$1","t1$$10","t2$$10","n1k$$4","t1$$11","n1k$$5","n1l","n1r$$2","t1$$12","n2k$$4","t2$$11","n2k$$5","n2l","n2r$$2","t2$$12","l1","l2","SetTreeModule$$$compare","SetTreeModule$$$mkFromEnumerator","$comparer$$19$$126","$acc$$11$$127","$e$$128","SetTreeModule$$$ofSeq","c$$11","SetTreeModule$$$ofArray","FSharpSet","FSharpSet$$$$002Ector$$2528C5CB","FSharpSet$$get_Comparer","__$$4","FSharpSet$$get_Tree","FSharpSet$$Contains$$2B595","s$$23","x$$11","x$$23","s$$34","comparer$$28","arr$$2","comparer$$29","comparer$$31","MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D","x$$21","x$$22","that$$1","s$$32","otherParser","skipped","keep","others","digits","jint","dot","digitsLeft","jfloat","negativeJFloat","negJint","escape","escapedCharSnippet","anyCharSnippet","normalCharSnippet","stringLiteral","withWhitespace","jnull","jbool","jnumber","jstring","jarray","leftBracket","rightBracket","arrayValue","comma","keyValues","jobject","leftBrace","rightBrace","jvalue","isObjectLiteral","isDateOffset","dateOffset","isBigInt","bigInt","activePatternResult14213","activePatternResult14212","number","activePatternResult14211","activePatternResult14210","activePatternResult14209","parseNative'","activePatternResult14208","object","parsed","VueI18Next","detectionOptions","order","lookupLocalStorage","lookupFromPathIndex","setHighchartsOptions","Highcharts","setOptions","global","useUTC","loading","months","shortMonths","weekdays","rangeSelectorFrom","rangeSelectorTo","rangeSelectorZoom","resetZoom","resetZoomTitle","thousandsSep","decimalPoint","dateFormats","W","getWeek","weekStartsOn","LanguageDetector","process","fallbackLng","returnObjects","resources","mk","translation","sq","detection","time","dateFormat","services","pluralResolver","addRule","numbers","plurals","Number","setItem","Intl","NumberFormat","validByRisk","BigNat","bound","BigNatModule$002EFFT$$$pow32","$x$$1","$n$$2","BigNatModule$002EFFT$$$patternInput$004075","BigNatModule$002EFFT$$$maxTwoPower","BigNatModule$$$bound","n$$10","BigNatModule$$$coeff","n$$12","i$$5","BigNatModule$$$coeff64","n$$13","fromInteger","BigNatModule$$$setCoeff","n$$14","i$$7","v$$4","BigNatModule$$$pow64","$x$$23$$48","$n$$15$$49","n$$15","op_Multiply","BigNatModule$$$pow32","$x$$24$$50","$n$$16$$51","n$$16","BigNatModule$$$hash","n$$17","BigNatModule$$$maxInt","b$$2","BigNatModule$$$baseBits","BigNatModule$$$baseN","BigNatModule$$$baseMask","BigNatModule$$$baseNi64","BigNatModule$$$baseMaski64","BigNatModule$$$divbase","BigNatModule$$$modbase","x$$26","BigNatModule$$$createN","b$$4","BigNatModule$$$copyN","x$$27","BigNatModule$$$normN","n$$18","findLeastBound","$na$$62","$i$$9$$63","na","bound$$1","BigNatModule$$$boundInt","BigNatModule$$$boundInt64","BigNatModule$$$embed","x$$28","r$$3","BigNatModule$$$embed64","r$$4","toInt","op_Modulus","op_Division","BigNatModule$$$eval32","n$$19","i$$12","BigNatModule$$$one","BigNatModule$$$zero","BigNatModule$$$degree","n$$24","BigNatModule$$$addP","$i$$16$$75","$n$$25$$76","$c$$77","$p$$78","$q$$79","$r$$5$$80","i$$16","n$$25","q","r$$5","BigNatModule$$$add","p$$1","q$$1","rbound","r$$6","BigNatModule$$$isZero","p$$4","BigNatModule$$$equal","p$$7","q$$4","check","$pa$$96","$qa$$97","$i$$22$$98","pa","qa","i$$22","BigNatModule$$$shiftCompare","p$$8","pn","q$$5","qn","check$$1","$pa$$1$$103","$qa$$1$$104","$i$$23$$105","pa$$1","qa$$1","i$$23","pai","qai","BigNatModule$$$compare","p$$9","q$$6","check$$2","$pa$$2$$108","$qa$$2$$109","$i$$24$$110","pa$$2","qa$$2","i$$24","BigNatModule$$$lt","p$$10","q$$7","BigNatModule$$$mulSchoolBookBothSmall","p$$15","q$$11","r$$11","rak","op_BitwiseAnd","BigNatModule$$$mulSchoolBookCarry","$r$$12$$130","$c$$8$$131","$k$$4$$132","r$$12","rak$$1","op_Addition","BigNatModule$$$mulSchoolBookOneSmall","p$$16","q$$12","value$$3","bp","rbound$$3","r$$13","q$$13","rak$$2","BigNatModule$$$mulSchoolBookNeitherSmall","p$$17","q$$14","value$$4","rbound$$4","r$$14","i$$29","pai$$1","qaj","rak$$3","BigNatModule$$$mulSchoolBook","p$$18","q$$15","pSmall","qSmall","BigNatModule$002Eencoding","bigL","twoToBigL","bigK","bigN","splits","BigNatModule$$$mkEncoding","bigK$$2","BigNatModule$$$table","i$$32","BigNatModule$$$mul","p$$20","q$$17","BigNatModule$$$scaleSubInPlace","a$$5","n$$30","j$$4","z$$7","zLo","value$$6","x$$59","value$$5","zHi","x$$60","BigNatModule$$$scaleAddInPlace","x$$62","a$$8","n$$32","patternInput$$4","j$$5","z$$8","zLo$$1","value$$8","x$$64","value$$7","zHi$$1","x$$65","BigNatModule$$$removeFactor","a$$11","n$$34","patternInput$$6","f64","f64$$1","lte","BigNatModule$$$divmod","b$$7","a$$12","x$$68","d$$6","p$$21","n$$35","Invariant","f$$7","BigNatModule$$$toFloat","n$$40","basef","evalFloat","$acc$$4$$219","$k$$10$$220","$i$$49$$221","BigNatModule$$$ofInt32","n$$41","BigNatModule$$$ofInt64","n$$42","BigNatModule$$$toString","n$$45","degn","route","$prior$$227","$k$$11$$228","$ten2k$$229","prior","ten2k","kten2ks","isLeading","n$$46","patternInput$$13","digits$$1","digits$$2","digits$$3","n$$47","int32ToString","digits$$4","BigNatModule$$$ofString","ten","build","$acc$$5$$235","$i$$50$$236","c$$12","d$$7","charCodeAt","BigNatModule$$$isSmall","n$$48","BigNatModule$$$getSmall","n$$49","BigInteger","signInt","BigInteger$$$$002Ector$$Z2BE94A1","BigInteger$$$nat$$Z67CCE57D","n$$1","BigNatModule$0024$0024$0024isSmall","BigNatModule$0024$0024$0024getSmall","smallLim","smallPosTab","BigInteger$$$posn$$Z67CCE57D","n$$3","BigInteger$$$negn$$Z67CCE57D","n$$4","BigInteger$$get_SignInt","BigInteger$$get_V","BigInteger$$$op_Equality$$56F059C0","x$$3","$target$$12","BigNatModule$0024$0024$0024equal","BigNatModule$0024$0024$0024isZero","BigInteger$$$op_LessThan$$56F059C0","$target$$17","BigNatModule$0024$0024$0024lt","BigInteger$$$compare$$56F059C0","n$$5","nn","BigInteger$$$hash$$Z665282C2","BigNatModule$0024$0024$0024hash","BigInteger$$$$002Ector$$Z524259A4","n$$6","BigNatModule$0024$0024$0024ofInt32","BigNatModule$0024$0024$0024ofInt64","op_UnaryNegation","op_UnaryNegation_Int32","BigInteger$$$$002Ector$$Z524259C1","n$$7","BigNatModule$0024$0024$0024add","BigNatModule$0024$0024$0024one","BigInteger$$$get_One","one","BigInteger$$$get_Two","two","BigInteger$$$get_Zero","zero","BigInteger$$get_ToDouble","matchValue$$12","BigNatModule$0024$0024$0024toFloat","BigInteger$$get_ToDecimal","x$$40","Decimal","BigInteger$$$Parse$$Z721C83C5","text$$1","matchValue$$13","BigNatModule$0024$0024$0024ofString","x$$7","BigNatModule$0024$0024$0024toString","obj$$1","BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5","BigInteger$0024$0024$0024get_Zero","BigInteger$0024$0024$0024get_One","BigInteger$0024$0024$0024get_Two","fromInt32","BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1","BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4","toDecimal","BigInteger$0024$0024get_ToDecimal","guidRegex","smoothScroll","faqAnchor","visualizationId","timeFormatLocale","periods","shortDays","formatLocale","decimal","thousands","grouping","required","description","reuqired","toCamel","$1","scrollTo","history","pushState","primType","prop","info","caseTypes","genArgs","flattenFuncTypes","typeDef","lazyToDelayed","l","_createTypeInfo","resolvedType","activePatternResult14142","( |PrimitiveType|_| )","activePatternResult14141","( |FuncType|_| )","createTypeInfo","activePatternResult14140","( |RecordType|_| )","activePatternResult14139","( |UnionType|_| )","activePatternResult14138","( |EnumType|_| )","activePatternResult14137","( |ListType|_| )","activePatternResult14136","( |ResizeArrayType|_| )","activePatternResult14135","( |HashSetType|_| )","activePatternResult14134","( |ArrayType|_| )","activePatternResult14133","( |TupleType|_| )","activePatternResult14132","( |OptionType|_| )","activePatternResult14131","( |Nullable|_| )","activePatternResult14130","( |SetType|_| )","activePatternResult14129","( |MapType|_| )","keyType","valueType","activePatternResult14128","( |DictionaryType|_| )","activePatternResult14127","( |SeqType|_| )","activePatternResult14126","( |AsyncType|_| )","activePatternResult14125","( |PromiseType|_| )","typeInfoCache","ti","notAnonymousRecord","isPrimitive","enumUnion","publishedByRisk","iter","StockModule","MapModule","require","wrapLabelFormatterWithThis","labelFormatter","lfmt","React","createElement","HighchartsReact","highcharts","containerProps","height","renderChartFromWindow","constructorType","sparklineChart","documentElementId","valid"],"mappings":"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","file":"js/chunk-common.5d75805a.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VegaChart',{attrs:{\"title\":_vm.$t('charts.ostanizdrav.userPublishedByCount.title'),\"name\":\"userPublishedByCount\",\"data\":_vm.plotData,\"description\":_vm.$t('charts.ostanizdrav.userPublishedByCount.description'),\"faqAnchor\":\"ostanizdrav-userPublishedByCount\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function ($t) {\n return {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\",\n \"width\": \"container\",\n \"height\": 250,\n \"data\": {\n \"url\": \"https://ostanizdrav.sledilnik.org/plots/usersByCount.json\"\n },\n \"transform\": [\n {\n \"calculate\": $t('charts.ostanizdrav.userPublishedByCount.tooltip'),\n \"as\": \"tt\"\n }\n ],\n \"layer\": [\n {\n \"encoding\": {\n \"x\": {\n \"title\": $t('charts.ostanizdrav.userPublishedByCount.date'),\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0,\n \"tickCount\": \"week\",\n \"labelExpr\": \"[timeFormat(datum.value, '%d'), timeFormat(datum.value, '%d') <= '07' ? timeFormat(datum.value, '%b') : '']\",\n \"gridDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n },\n \"tickDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n }\n }\n },\n \"y\": {\n \"field\": \"key_count\",\n \"type\": \"quantitative\",\n \"scale\": {\n \"domain\": [\n 0,\n 14\n ]\n },\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.userPublishedByCount.count')\n }\n },\n \"color\": {\n \"title\": $t('charts.ostanizdrav.userPublishedByCount.users'),\n \"field\": \"user_count\",\n \"type\": \"quantitative\"\n }\n },\n \"layer\": [\n {\n \"mark\": \"point\"\n },\n {\n \"selection\": {\n \"label\": {\n \"type\": \"single\",\n \"nearest\": true,\n \"on\": \"mouseover\",\n \"encodings\": [\n \"x\"\n ],\n \"empty\": \"none\"\n }\n },\n \"mark\": \"point\",\n \"encoding\": {\n \"opacity\": {\n \"condition\": {\n \"selection\": \"label\",\n \"value\": 1\n },\n \"value\": 0\n }\n }\n }\n ]\n },\n {\n \"mark\": {\n \"type\": \"line\",\n \"interpolate\": \"monotone\",\n \"point\": true\n },\n \"encoding\": {\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\"\n },\n \"y\": {\n \"field\": \"average_key_count_per_user\",\n \"type\": \"quantitative\"\n }\n }\n },\n {\n \"transform\": [\n {\n \"filter\": {\n \"selection\": \"label\"\n }\n }\n ],\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"rule\",\n \"color\": \"gray\"\n },\n \"encoding\": {\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0\n }\n }\n }\n },\n {\n \"encoding\": {\n \"text\": {\n \"type\": \"text\",\n \"field\": \"tt\"\n },\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0\n }\n },\n \"y\": {\n \"type\": \"quantitative\",\n \"field\": \"key_count\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"text\",\n \"stroke\": \"white\",\n \"strokeWidth\": 2,\n \"align\": \"right\",\n \"dx\": -5,\n \"dy\": -5\n }\n },\n {\n \"mark\": {\n \"type\": \"text\",\n \"align\": \"right\",\n \"dx\": -5,\n \"dy\": -5\n },\n \"encoding\": {\n \"color\": {\n \"type\": \"quantitative\",\n \"field\": \"user_count\",\n \"scale\": {\n \"scheme\": {\n \"name\": \"blues\",\n \"extent\": [\n 0.25,\n 1\n ]\n }\n }\n }\n }\n }\n ]\n }\n ]\n }\n ]\n }\n}","\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserPublishedByCountChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserPublishedByCountChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UserPublishedByCountChart.vue?vue&type=template&id=5c5aa6fa&\"\nimport script from \"./UserPublishedByCountChart.vue?vue&type=script&lang=js&\"\nexport * from \"./UserPublishedByCountChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoCard.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoCard.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/tw-icon.acda4903.svg\";","/**\n * DateTimeOffset functions.\n *\n * Note: Date instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoc when `.getTime()` is called.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { fromValue, ticksToUnixEpochMilliseconds, unixEpochMillisecondsToTicks } from \"./Long\";\nimport { compareDates, dateOffset, padWithZeros } from \"./Util\";\nexport const offsetRegex = /(?:Z|[+-](\\d+):?([0-5]?\\d)?)\\s*$/;\nexport function dateOffsetToString(offset) {\n const isMinus = offset < 0;\n offset = Math.abs(offset);\n const hours = ~~(offset / 3600000);\n const minutes = (offset % 3600000) / 60000;\n return (isMinus ? \"-\" : \"+\") +\n padWithZeros(hours, 2) + \":\" +\n padWithZeros(minutes, 2);\n}\nexport function dateToHalfUTCString(date, half) {\n const str = date.toISOString();\n return half === \"first\"\n ? str.substring(0, str.indexOf(\"T\"))\n : str.substring(str.indexOf(\"T\") + 1, str.length - 1);\n}\nfunction dateToISOString(d, utc) {\n if (utc) {\n return d.toISOString();\n }\n else {\n // JS Date is always local\n const printOffset = d.kind == null ? true : d.kind === 2 /* Local */;\n return padWithZeros(d.getFullYear(), 4) + \"-\" +\n padWithZeros(d.getMonth() + 1, 2) + \"-\" +\n padWithZeros(d.getDate(), 2) + \"T\" +\n padWithZeros(d.getHours(), 2) + \":\" +\n padWithZeros(d.getMinutes(), 2) + \":\" +\n padWithZeros(d.getSeconds(), 2) + \".\" +\n padWithZeros(d.getMilliseconds(), 3) +\n (printOffset ? dateOffsetToString(d.getTimezoneOffset() * -60000) : \"\");\n }\n}\nfunction dateToISOStringWithOffset(dateWithOffset, offset) {\n const str = dateWithOffset.toISOString();\n return str.substring(0, str.length - 1) + dateOffsetToString(offset);\n}\nfunction dateToStringWithCustomFormat(date, format, utc) {\n return format.replace(/(\\w)\\1*/g, (match) => {\n let rep = Number.NaN;\n switch (match.substring(0, 1)) {\n case \"y\":\n const y = utc ? date.getUTCFullYear() : date.getFullYear();\n rep = match.length < 4 ? y % 100 : y;\n break;\n case \"M\":\n rep = (utc ? date.getUTCMonth() : date.getMonth()) + 1;\n break;\n case \"d\":\n rep = utc ? date.getUTCDate() : date.getDate();\n break;\n case \"H\":\n rep = utc ? date.getUTCHours() : date.getHours();\n break;\n case \"h\":\n const h = utc ? date.getUTCHours() : date.getHours();\n rep = h > 12 ? h % 12 : h;\n break;\n case \"m\":\n rep = utc ? date.getUTCMinutes() : date.getMinutes();\n break;\n case \"s\":\n rep = utc ? date.getUTCSeconds() : date.getSeconds();\n break;\n case \"f\":\n rep = utc ? date.getUTCMilliseconds() : date.getMilliseconds();\n break;\n }\n if (Number.isNaN(rep)) {\n return match;\n }\n else {\n return (rep < 10 && match.length > 1) ? \"0\" + rep : \"\" + rep;\n }\n });\n}\nfunction dateToStringWithOffset(date, format) {\n var _a, _b, _c;\n const d = new Date(date.getTime() + ((_a = date.offset) !== null && _a !== void 0 ? _a : 0));\n if (typeof format !== \"string\") {\n return d.toISOString().replace(/\\.\\d+/, \"\").replace(/[A-Z]|\\.\\d+/g, \" \") + dateOffsetToString(((_b = date.offset) !== null && _b !== void 0 ? _b : 0));\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\": return dateToHalfUTCString(d, \"first\");\n case \"T\":\n case \"t\": return dateToHalfUTCString(d, \"second\");\n case \"O\":\n case \"o\": return dateToISOStringWithOffset(d, ((_c = date.offset) !== null && _c !== void 0 ? _c : 0));\n default: throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(d, format, true);\n }\n}\nfunction dateToStringWithKind(date, format) {\n const utc = date.kind === 1 /* UTC */;\n if (typeof format !== \"string\") {\n return utc ? date.toUTCString() : date.toLocaleString();\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\":\n return utc ? dateToHalfUTCString(date, \"first\") : date.toLocaleDateString();\n case \"T\":\n case \"t\":\n return utc ? dateToHalfUTCString(date, \"second\") : date.toLocaleTimeString();\n case \"O\":\n case \"o\":\n return dateToISOString(date, utc);\n default:\n throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(date, format, utc);\n }\n}\nexport function toString(date, format, _provider) {\n return date.offset != null\n ? dateToStringWithOffset(date, format)\n : dateToStringWithKind(date, format);\n}\nexport function DateTime(value, kind) {\n const d = new Date(value);\n d.kind = (kind == null ? 0 /* Unspecified */ : kind) | 0;\n return d;\n}\nexport function fromTicks(ticks, kind) {\n ticks = fromValue(ticks);\n kind = kind != null ? kind : 0 /* Unspecified */;\n let date = DateTime(ticksToUnixEpochMilliseconds(ticks), kind);\n // Ticks are local to offset (in this case, either UTC or Local/Unknown).\n // If kind is anything but UTC, that means that the tick number was not\n // in utc, thus getTime() cannot return UTC, and needs to be shifted.\n if (kind !== 1 /* UTC */) {\n date = DateTime(date.getTime() - dateOffset(date), kind);\n }\n return date;\n}\nexport function fromDateTimeOffset(date, kind) {\n var _a;\n switch (kind) {\n case 1 /* UTC */: return DateTime(date.getTime(), 1 /* UTC */);\n case 2 /* Local */: return DateTime(date.getTime(), 2 /* Local */);\n default:\n const d = DateTime(date.getTime() + ((_a = date.offset) !== null && _a !== void 0 ? _a : 0), kind);\n return DateTime(d.getTime() - dateOffset(d), kind);\n }\n}\nexport function getTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), dateOffset(date));\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTime(-62135596800000, 0 /* Unspecified */);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTime(253402300799999, 0 /* Unspecified */);\n}\nexport function parseRaw(input) {\n if (input === null) {\n throw new Error(\"Value cannot be null when parsing DateTime\");\n }\n if (input.trim() === \"\") {\n throw new Error(\"An empty string is not recognized as a valid DateTime\");\n }\n let date = new Date(input);\n if (isNaN(date.getTime())) {\n // Try to check strings JS Date cannot parse (see #1045, #1422)\n // tslint:disable-next-line:max-line-length\n const m = /^\\s*(\\d+[^\\w\\s:]\\d+[^\\w\\s:]\\d+)?\\s*(\\d+:\\d+(?::\\d+(?:\\.\\d+)?)?)?\\s*([AaPp][Mm])?\\s*([+-]\\d+(?::\\d+)?)?\\s*$/.exec(input);\n if (m != null) {\n let baseDate;\n let timeInSeconds = 0;\n if (m[2] != null) {\n const timeParts = m[2].split(\":\");\n timeInSeconds =\n parseInt(timeParts[0], 10) * 3600 +\n parseInt(timeParts[1] || \"0\", 10) * 60 +\n parseFloat(timeParts[2] || \"0\");\n if (m[3] != null && m[3].toUpperCase() === \"PM\") {\n timeInSeconds += 720;\n }\n }\n if (m[4] != null) { // There's an offset, parse as UTC\n if (m[1] != null) {\n baseDate = new Date(m[1] + \" UTC\");\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getUTCFullYear() + \"/\" + (d.getUTCMonth() + 1) + \"/\" + d.getUTCDate());\n }\n const offsetParts = m[4].substr(1).split(\":\");\n let offsetInMinutes = parseInt(offsetParts[0], 10) * 60 + parseInt(offsetParts[1] || \"0\", 10);\n if (m[4][0] === \"+\") {\n offsetInMinutes *= -1;\n }\n timeInSeconds += offsetInMinutes * 60;\n }\n else {\n if (m[1] != null) {\n baseDate = new Date(m[1]);\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate());\n }\n }\n date = new Date(baseDate.getTime() + timeInSeconds * 1000);\n // correct for daylight savings time\n date = new Date(date.getTime() + (date.getTimezoneOffset() - baseDate.getTimezoneOffset()) * 60000);\n }\n else {\n throw new Error(\"The string is not a valid Date.\");\n }\n }\n return date;\n}\nexport function parse(str, detectUTC = false) {\n const date = parseRaw(str);\n const offset = offsetRegex.exec(str);\n // .NET always parses DateTime as Local if there's offset info (even \"Z\")\n // Newtonsoft.Json uses UTC if the offset is \"Z\"\n const kind = offset != null\n ? (detectUTC && offset[0] === \"Z\" ? 1 /* UTC */ : 2 /* Local */)\n : 0 /* Unspecified */;\n return DateTime(date.getTime(), kind);\n}\nexport function tryParse(v, _refValue) {\n try {\n return [true, parse(v)];\n }\n catch (_err) {\n return [false, minValue()];\n }\n}\nexport function create(year, month, day, h = 0, m = 0, s = 0, ms = 0, kind) {\n const dateValue = kind === 1 /* UTC */\n ? Date.UTC(year, month - 1, day, h, m, s, ms)\n : new Date(year, month - 1, day, h, m, s, ms).getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date.\");\n }\n const date = DateTime(dateValue, kind);\n if (year <= 99) {\n date.setFullYear(year, month - 1, day);\n }\n return date;\n}\nexport function now() {\n return DateTime(Date.now(), 2 /* Local */);\n}\nexport function utcNow() {\n return DateTime(Date.now(), 1 /* UTC */);\n}\nexport function today() {\n return date(now());\n}\nexport function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nexport function daysInMonth(year, month) {\n return month === 2\n ? (isLeapYear(year) ? 29 : 28)\n : (month >= 8 ? (month % 2 === 0 ? 31 : 30) : (month % 2 === 0 ? 30 : 31));\n}\nexport function toUniversalTime(date) {\n return date.kind === 1 /* UTC */ ? date : DateTime(date.getTime(), 1 /* UTC */);\n}\nexport function toLocalTime(date) {\n return date.kind === 2 /* Local */ ? date : DateTime(date.getTime(), 2 /* Local */);\n}\nexport function specifyKind(d, kind) {\n return create(year(d), month(d), day(d), hour(d), minute(d), second(d), millisecond(d), kind);\n}\nexport function timeOfDay(d) {\n return hour(d) * 3600000\n + minute(d) * 60000\n + second(d) * 1000\n + millisecond(d);\n}\nexport function date(d) {\n return create(year(d), month(d), day(d), 0, 0, 0, 0, d.kind);\n}\nexport function day(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCDate() : d.getDate();\n}\nexport function hour(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCHours() : d.getHours();\n}\nexport function millisecond(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCMilliseconds() : d.getMilliseconds();\n}\nexport function minute(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCMinutes() : d.getMinutes();\n}\nexport function month(d) {\n return (d.kind === 1 /* UTC */ ? d.getUTCMonth() : d.getMonth()) + 1;\n}\nexport function second(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCSeconds() : d.getSeconds();\n}\nexport function year(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCFullYear() : d.getFullYear();\n}\nexport function dayOfWeek(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCDay() : d.getDay();\n}\nexport function dayOfYear(d) {\n const _year = year(d);\n const _month = month(d);\n let _day = day(d);\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n const newDate = DateTime(d.getTime() + ts, d.kind);\n if (d.kind === 2 /* Local */) {\n const oldTzOffset = d.getTimezoneOffset();\n const newTzOffset = newDate.getTimezoneOffset();\n return oldTzOffset !== newTzOffset\n ? DateTime(newDate.getTime() + (newTzOffset - oldTzOffset) * 60000, d.kind)\n : newDate;\n }\n else {\n return newDate;\n }\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addYears(d, v) {\n const newMonth = month(d);\n const newYear = year(d) + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function addMonths(d, v) {\n let newMonth = month(d) + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = year(d) + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? add(d, -that)\n : d.getTime() - that.getTime();\n}\nexport function toLongDateString(d) {\n return d.toDateString();\n}\nexport function toShortDateString(d) {\n return d.toLocaleDateString();\n}\nexport function toLongTimeString(d) {\n return d.toLocaleTimeString();\n}\nexport function toShortTimeString(d) {\n return d.toLocaleTimeString().replace(/:\\d\\d(?!:)/, \"\");\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport const compare = compareDates;\nexport const compareTo = compareDates;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function isDaylightSavingTime(x) {\n const jan = new Date(x.getFullYear(), 0, 1);\n const jul = new Date(x.getFullYear(), 6, 1);\n return isDST(jan.getTimezoneOffset(), jul.getTimezoneOffset(), x.getTimezoneOffset());\n}\nfunction isDST(janOffset, julOffset, tOffset) {\n return Math.min(janOffset, julOffset) === tOffset;\n}\nexport default DateTime;\n//# sourceMappingURL=Date.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VegaChart',{attrs:{\"title\":_vm.$t('charts.ostanizdrav.published.title'),\"name\":\"published-chart\",\"data\":_vm.plotData,\"description\":_vm.$t('charts.ostanizdrav.published.description'),\"faqAnchor\":\"ostanizdrav-published\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function ($t) {\n return {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\",\n \"width\": \"container\",\n \"height\": 250,\n \"data\": {\n \"url\": \"https://ostanizdrav.sledilnik.org/plots/data.json\"\n },\n \"transform\": [\n {\n \"window\": [\n {\n \"op\": \"sum\",\n \"field\": \"published\",\n \"as\": \"sum_published\"\n }\n ]\n }\n ],\n \"layer\": [\n {\n \"encoding\": {\n \"x\": {\n \"title\": $t('charts.ostanizdrav.published.date'),\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0,\n \"tickCount\": \"week\",\n \"labelExpr\": \"[timeFormat(datum.value, '%d'), timeFormat(datum.value, '%d') <= '07' ? timeFormat(datum.value, '%b') : '']\",\n \"gridDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n },\n \"tickDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n }\n }\n },\n \"y\": {\n \"field\": \"published\",\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.published.perDay'),\n \"titleColor\": \"steelblue\"\n }\n },\n \"text\": {\n \"field\": \"published\",\n \"type\": \"quantitative\"\n }\n },\n \"layer\": [\n {\n \"mark\": \"bar\"\n },\n {\n \"mark\": {\n \"type\": \"text\",\n \"color\": \"steelblue\",\n \"align\": \"right\",\n \"baseline\": \"middle\",\n \"fontSize\": 9,\n \"angle\": 90,\n \"dx\": -3,\n \"dy\": -4\n }\n }\n ]\n },\n {\n \"encoding\": {\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\"\n },\n \"y\": {\n \"field\": \"sum_published\",\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.published.runningTotal'),\n \"titleColor\": \"#b4464b\"\n }\n },\n \"text\": {\n \"field\": \"sum_published\",\n \"type\": \"quantitative\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"line\",\n \"interpolate\": \"monotone\",\n \"point\": {\n \"color\": \"#b4464b\"\n },\n \"color\": \"#b4464b\"\n }\n }\n ]\n }\n ],\n \"resolve\": {\n \"scale\": {\n \"y\": \"independent\"\n }\n }\n }\n}","\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublishedChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublishedChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PublishedChart.vue?vue&type=template&id=7a4498cb&\"\nimport script from \"./PublishedChart.vue?vue&type=script&lang=js&\"\nexport * from \"./PublishedChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module Types\n\ntype ScaleType =\n | Linear\n | Logarithmic\n\ntype RemoteData<'data, 'error> =\n | NotAsked\n | Loading\n | Failure of 'error\n | Success of 'data\n\ntype TestMeasure =\n { ToDate : int option\n Today : int option }\n\ntype TestGroup =\n { Performed : TestMeasure\n Positive : TestMeasure }\n\ntype Tests =\n { Performed : TestMeasure\n Positive : TestMeasure\n Regular : TestGroup\n NsApr20 : TestGroup\n }\n\ntype Cases =\n { ConfirmedToday : int option\n ConfirmedToDate : int option\n RecoveredToDate : int option\n ClosedToDate : int option\n Active : int option\n }\n\ntype Vaccination =\n { Administered : TestMeasure\n Administered2nd : TestMeasure }\n\ntype Treatment =\n { InHospital : int option\n InHospitalToDate : int option\n InICU : int option\n Critical : int option\n DeceasedToDate : int option\n Deceased : int option\n OutOfHospitalToDate : int option\n OutOfHospital : int option\n RecoveredToDate : int option }\n\ntype AgeGroupKey = {\n AgeFrom : int option\n AgeTo : int option\n } with\n\n member this.Label =\n match this.AgeFrom, this.AgeTo with\n | None, None -> \"\"\n | None, Some b -> sprintf \"0-%d\" b\n | Some a, Some b -> sprintf \"%d-%d\" a b\n | Some a, None -> sprintf \"%d+\" a\n\ntype AgeGroup =\n { GroupKey : AgeGroupKey\n Male : int option\n Female : int option\n All : int option }\n\ntype AgeGroupsList = AgeGroup list\n\ntype StatsDataPoint =\n { DayFromStart : int\n Date : System.DateTime\n Phase : string\n Tests : Tests\n Cases : Cases\n StatePerTreatment : Treatment\n StatePerAgeToDate : AgeGroupsList\n DeceasedPerAgeToDate : AgeGroupsList\n HospitalEmployeePositiveTestsToDate : int option\n RestHomeEmployeePositiveTestsToDate : int option\n RestHomeOccupantPositiveTestsToDate : int option\n UnclassifiedPositiveTestsToDate : int option\n Vaccination : Vaccination\n }\n\ntype StatsData = StatsDataPoint list\n\ntype InfectionSource =\n { FromQuarantine : int option\n Local : int option\n Import : int option\n ImportRelated : int option\n Unknown : int option\n }\n\ntype WeeklyStatsDataPoint =\n { Week : string\n Date : System.DateTime\n DateTo : System.DateTime\n ConfirmedCases : int option\n InvestigatedCases : int option\n HealthcareCases : int option\n SentToQuarantine : int option\n Source : InfectionSource\n ImportedFrom : Map\n }\n\ntype WeeklyStatsData = WeeklyStatsDataPoint[]\n\ntype Municipality =\n { Name : string\n ActiveCases : int option\n ConfirmedToDate : int option\n DeceasedToDate : int option }\n\ntype Region =\n { Name : string\n Municipalities : Municipality list }\n\ntype RegionsDataPoint =\n { Date : System.DateTime\n Regions : Region list }\n\ntype RegionsData = RegionsDataPoint list\n\ntype VisualizationType =\n | MetricsComparison\n | DailyComparison\n | Patients\n | CarePatients\n | Ratios\n | HCenters\n | Hospitals\n | HcCases\n | Tests\n | Cases\n | Spread\n | Regions\n | Regions100k\n | Sources\n | Municipalities\n | SkopjeMunicipalities\n | AgeGroups\n | AgeGroupsTimeline\n | Map\n | RegionMap\n | SkopjeMunMap\n | EuropeMap\n | WorldMap\n | Infections\n | CountriesCasesPer1M\n | CountriesActiveCasesPer1M\n | CountriesDeathsPer1M\n | PhaseDiagram\n | MetricsCorrelation\n\ntype RenderingMode =\n | Normal\n | Embedded of VisualizationType option\n\ntype State =\n {\n ApiEndpoint : string\n Page : string\n Query : obj // URL query parameters\n StatsData : RemoteData\n WeeklyStatsData : RemoteData\n RegionsData : RemoteData\n SkopjeMunicipalitiesData : RemoteData\n RenderingMode : RenderingMode }\n\ntype Visualization = {\n VisualizationType: VisualizationType\n ClassName: string\n ChartTextsGroup: string\n Explicit: bool\n Renderer: State -> Fable.React.ReactElement\n}\n\ntype Msg =\n | StatsDataRequested\n | StatsDataLoaded of RemoteData\n | WeeklyStatsDataRequested\n | WeeklyStatsDataLoaded of RemoteData\n | RegionsDataRequest\n | RegionsDataLoaded of RemoteData\n | SkopjeMunicipalitiesDataRequest\n | SkopjeMunicipalitiesDataLoaded of RemoteData\n","export class CancellationToken {\n constructor(cancelled = false) {\n this._id = 0;\n this._cancelled = cancelled;\n this._listeners = new Map();\n }\n get isCancelled() {\n return this._cancelled;\n }\n cancel() {\n if (!this._cancelled) {\n this._cancelled = true;\n for (const [, listener] of this._listeners) {\n listener();\n }\n }\n }\n addListener(f) {\n const id = this._id;\n this._listeners.set(this._id++, f);\n return id;\n }\n removeListener(id) {\n return this._listeners.delete(id);\n }\n register(f, state) {\n const $ = this;\n const id = this.addListener(state == null ? f : () => f(state));\n return { Dispose() { $.removeListener(id); } };\n }\n}\nexport class OperationCanceledError extends Error {\n constructor() {\n super(\"The operation was canceled\");\n Object.setPrototypeOf(this, OperationCanceledError.prototype);\n }\n}\nexport class Trampoline {\n constructor() {\n this.callCount = 0;\n }\n static get maxTrampolineCallCount() {\n return 2000;\n }\n incrementAndCheck() {\n return this.callCount++ > Trampoline.maxTrampolineCallCount;\n }\n hijack(f) {\n this.callCount = 0;\n setTimeout(f, 0);\n }\n}\nexport function protectedCont(f) {\n return (ctx) => {\n if (ctx.cancelToken.isCancelled) {\n ctx.onCancel(new OperationCanceledError());\n }\n else if (ctx.trampoline.incrementAndCheck()) {\n ctx.trampoline.hijack(() => {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(err);\n }\n });\n }\n else {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(err);\n }\n }\n };\n}\nexport function protectedBind(computation, binder) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n try {\n binder(x)(ctx);\n }\n catch (ex) {\n ctx.onError(ex);\n }\n },\n onError: ctx.onError,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function protectedReturn(value) {\n return protectedCont((ctx) => ctx.onSuccess(value));\n}\nexport class AsyncBuilder {\n Bind(computation, binder) {\n return protectedBind(computation, binder);\n }\n Combine(computation1, computation2) {\n return this.Bind(computation1, () => computation2);\n }\n Delay(generator) {\n return protectedCont((ctx) => generator()(ctx));\n }\n For(sequence, body) {\n const iter = sequence[Symbol.iterator]();\n let cur = iter.next();\n return this.While(() => !cur.done, this.Delay(() => {\n const res = body(cur.value);\n cur = iter.next();\n return res;\n }));\n }\n Return(value) {\n return protectedReturn(value);\n }\n ReturnFrom(computation) {\n return computation;\n }\n TryFinally(computation, compensation) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n compensation();\n ctx.onSuccess(x);\n },\n onError: (x) => {\n compensation();\n ctx.onError(x);\n },\n onCancel: (x) => {\n compensation();\n ctx.onCancel(x);\n },\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n }\n TryWith(computation, catchHandler) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: ctx.onSuccess,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n onError: (ex) => {\n try {\n catchHandler(ex)(ctx);\n }\n catch (ex2) {\n ctx.onError(ex2);\n }\n },\n });\n });\n }\n Using(resource, binder) {\n return this.TryFinally(binder(resource), () => resource.Dispose());\n }\n While(guard, computation) {\n if (guard()) {\n return this.Bind(computation, () => this.While(guard, computation));\n }\n else {\n return this.Return(void 0);\n }\n }\n Zero() {\n return protectedCont((ctx) => ctx.onSuccess(void 0));\n }\n}\nexport const singleton = new AsyncBuilder();\n//# sourceMappingURL=AsyncBuilder.js.map","import { OperationCanceledError, Trampoline } from \"./AsyncBuilder\";\nimport { CancellationToken } from \"./AsyncBuilder\";\nimport { protectedCont } from \"./AsyncBuilder\";\nimport { protectedBind } from \"./AsyncBuilder\";\nimport { protectedReturn } from \"./AsyncBuilder\";\nimport { choice1Of2, choice2Of2 } from \"./Option\";\nimport { map } from \"./Seq\";\n// Implemented just for type references\nexport class Async {\n}\nfunction emptyContinuation(_x) {\n // NOP\n}\n// MakeAsync: body:(AsyncActivation<'T> -> AsyncReturn) -> Async<'T>\nexport function makeAsync(body) {\n return body;\n}\n// Invoke: computation: Async<'T> -> ctxt:AsyncActivation<'T> -> AsyncReturn\nexport function invoke(computation, ctx) {\n return computation(ctx);\n}\n// CallThenInvoke: ctxt:AsyncActivation<'T> -> result1:'U -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function callThenInvoke(ctx, result1, part2) {\n return part2(result1)(ctx);\n}\n// Bind: ctxt:AsyncActivation<'T> -> part1:Async<'U> -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function bind(ctx, part1, part2) {\n return protectedBind(part1, part2)(ctx);\n}\nexport function createCancellationToken(arg) {\n const token = new CancellationToken(typeof arg === \"boolean\" ? arg : false);\n if (typeof arg === \"number\") {\n setTimeout(() => { token.cancel(); }, arg);\n }\n return token;\n}\nexport function cancel(token) {\n token.cancel();\n}\nexport function cancelAfter(token, ms) {\n setTimeout(() => { token.cancel(); }, ms);\n}\nexport function isCancellationRequested(token) {\n return token != null && token.isCancelled;\n}\nexport function startChild(computation) {\n const promise = startAsPromise(computation);\n // JS Promises are hot, computation has already started\n // but we delay returning the result\n return protectedCont((ctx) => protectedReturn(awaitPromise(promise))(ctx));\n}\nexport function awaitPromise(p) {\n return fromContinuations((conts) => p.then(conts[0]).catch((err) => (err instanceof OperationCanceledError\n ? conts[2] : conts[1])(err)));\n}\nexport function cancellationToken() {\n return protectedCont((ctx) => ctx.onSuccess(ctx.cancelToken));\n}\nexport const defaultCancellationToken = new CancellationToken();\nexport function catchAsync(work) {\n return protectedCont((ctx) => {\n work({\n onSuccess: (x) => ctx.onSuccess(choice1Of2(x)),\n onError: (ex) => ctx.onSuccess(choice2Of2(ex)),\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function fromContinuations(f) {\n return protectedCont((ctx) => f([ctx.onSuccess, ctx.onError, ctx.onCancel]));\n}\nexport function ignore(computation) {\n return protectedBind(computation, (_x) => protectedReturn(void 0));\n}\nexport function parallel(computations) {\n return awaitPromise(Promise.all(map((w) => startAsPromise(w), computations)));\n}\nexport function sleep(millisecondsDueTime) {\n return protectedCont((ctx) => {\n let tokenId;\n const timeoutId = setTimeout(() => {\n ctx.cancelToken.removeListener(tokenId);\n ctx.onSuccess(void 0);\n }, millisecondsDueTime);\n tokenId = ctx.cancelToken.addListener(() => {\n clearTimeout(timeoutId);\n ctx.onCancel(new OperationCanceledError());\n });\n });\n}\nexport function start(computation, cancellationToken) {\n return startWithContinuations(computation, cancellationToken);\n}\nexport function startImmediate(computation, cancellationToken) {\n return start(computation, cancellationToken);\n}\nexport function startWithContinuations(computation, continuation, exceptionContinuation, cancellationContinuation, cancelToken) {\n if (typeof continuation !== \"function\") {\n cancelToken = continuation;\n continuation = undefined;\n }\n const trampoline = new Trampoline();\n computation({\n onSuccess: continuation ? continuation : emptyContinuation,\n onError: exceptionContinuation ? exceptionContinuation : emptyContinuation,\n onCancel: cancellationContinuation ? cancellationContinuation : emptyContinuation,\n cancelToken: cancelToken ? cancelToken : defaultCancellationToken,\n trampoline,\n });\n}\nexport function startAsPromise(computation, cancellationToken) {\n return new Promise((resolve, reject) => startWithContinuations(computation, resolve, reject, reject, cancellationToken ? cancellationToken : defaultCancellationToken));\n}\nexport default Async;\n//# sourceMappingURL=Async.js.map","import { tryValueIfChoice1Of2, tryValueIfChoice2Of2, value } from \"./Option\";\nexport class Observer {\n constructor(onNext, onError, onCompleted) {\n this.OnNext = onNext;\n this.OnError = onError || ((_e) => { return; });\n this.OnCompleted = onCompleted || (() => { return; });\n }\n}\nclass Observable {\n constructor(subscribe) {\n this.Subscribe = subscribe;\n }\n}\nexport function protect(f, succeed, fail) {\n try {\n return succeed(f());\n }\n catch (e) {\n fail(e);\n }\n}\nexport function add(callback, source) {\n source.Subscribe(new Observer(callback));\n}\nexport function choose(chooser, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => protect(() => chooser(t), (u) => { if (u != null) {\n observer.OnNext(value(u));\n } }, observer.OnError), observer.OnError, observer.OnCompleted)));\n}\nexport function filter(predicate, source) {\n return choose((x) => predicate(x) ? x : null, source);\n}\nexport function map(mapping, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => {\n protect(() => mapping(t), observer.OnNext, observer.OnError);\n }, observer.OnError, observer.OnCompleted)));\n}\nexport function merge(source1, source2) {\n return new Observable((observer) => {\n let stopped = false;\n let completed1 = false;\n let completed2 = false;\n const h1 = source1.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed1 = true;\n if (completed2) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n const h2 = source2.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed2 = true;\n if (completed1) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n return {\n Dispose() {\n h1.Dispose();\n h2.Dispose();\n },\n };\n });\n}\nexport function pairwise(source) {\n return new Observable((observer) => {\n let last;\n return source.Subscribe(new Observer((next) => {\n if (last != null) {\n observer.OnNext([last, next]);\n }\n last = next;\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function partition(predicate, source) {\n return [filter(predicate, source), filter((x) => !predicate(x), source)];\n}\nexport function scan(collector, state, source) {\n return new Observable((observer) => {\n return source.Subscribe(new Observer((t) => {\n protect(() => collector(state, t), (u) => { state = u; observer.OnNext(u); }, observer.OnError);\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function split(splitter, source) {\n return [\n choose((v) => tryValueIfChoice1Of2(splitter(v)), source),\n choose((v) => tryValueIfChoice2Of2(splitter(v)), source)\n ];\n}\nexport function subscribe(callback, source) {\n return source.Subscribe(new Observer(callback));\n}\n//# sourceMappingURL=Observable.js.map","import { Observer, protect } from \"./Observable\";\nimport { some, tryValueIfChoice1Of2, tryValueIfChoice2Of2, value } from \"./Option\";\nimport { iterate as seqIterate } from \"./Seq\";\nexport class Event {\n constructor(_subscriber, delegates) {\n this._subscriber = _subscriber;\n this.delegates = delegates || new Array();\n }\n Add(f) {\n this._addHandler(f);\n }\n // IEvent methods\n get Publish() {\n return this;\n }\n Trigger(value) {\n seqIterate((f) => f(value), this.delegates);\n }\n // IDelegateEvent methods\n AddHandler(handler) {\n if (this._dotnetDelegates == null) {\n this._dotnetDelegates = new Map();\n }\n const f = (x) => handler(null, x);\n this._dotnetDelegates.set(handler, f);\n this._addHandler(f);\n }\n RemoveHandler(handler) {\n if (this._dotnetDelegates != null) {\n const f = this._dotnetDelegates.get(handler);\n if (f != null) {\n this._dotnetDelegates.delete(handler);\n this._removeHandler(f);\n }\n }\n }\n // IObservable methods\n Subscribe(arg) {\n return typeof arg === \"function\"\n ? this._subscribeFromCallback(arg)\n : this._subscribeFromObserver(arg);\n }\n _addHandler(f) {\n this.delegates.push(f);\n }\n _removeHandler(f) {\n const index = this.delegates.indexOf(f);\n if (index > -1) {\n this.delegates.splice(index, 1);\n }\n }\n _subscribeFromObserver(observer) {\n if (this._subscriber) {\n return this._subscriber(observer);\n }\n const callback = observer.OnNext;\n this._addHandler(callback);\n return { Dispose: () => { this._removeHandler(callback); } };\n }\n _subscribeFromCallback(callback) {\n this._addHandler(callback);\n return { Dispose: () => { this._removeHandler(callback); } };\n }\n}\nexport function add(callback, sourceEvent) {\n sourceEvent.Subscribe(new Observer(callback));\n}\nexport function choose(chooser, sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => source.Subscribe(new Observer((t) => protect(() => chooser(t), (u) => { if (u != null) {\n observer.OnNext(value(u));\n } }, observer.OnError), observer.OnError, observer.OnCompleted)), source.delegates);\n}\nexport function filter(predicate, sourceEvent) {\n return choose((x) => predicate(x) ? some(x) : undefined, sourceEvent);\n}\nexport function map(mapping, sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => source.Subscribe(new Observer((t) => protect(() => mapping(t), observer.OnNext, observer.OnError), observer.OnError, observer.OnCompleted)), source.delegates);\n}\nexport function merge(event1, event2) {\n const source1 = event1;\n const source2 = event2;\n return new Event((observer) => {\n let stopped = false;\n let completed1 = false;\n let completed2 = false;\n const h1 = source1.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed1 = true;\n if (completed2) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n const h2 = source2.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed2 = true;\n if (completed1) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n return {\n Dispose() {\n h1.Dispose();\n h2.Dispose();\n },\n };\n }, source1.delegates.concat(source2.delegates));\n}\nexport function pairwise(sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => {\n let last;\n return source.Subscribe(new Observer((next) => {\n if (last != null) {\n observer.OnNext([last, next]);\n }\n last = next;\n }, observer.OnError, observer.OnCompleted));\n }, source.delegates);\n}\nexport function partition(predicate, sourceEvent) {\n return [filter(predicate, sourceEvent), filter((x) => !predicate(x), sourceEvent)];\n}\nexport function scan(collector, state, sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => {\n return source.Subscribe(new Observer((t) => {\n protect(() => collector(state, t), (u) => { state = u; observer.OnNext(u); }, observer.OnError);\n }, observer.OnError, observer.OnCompleted));\n }, source.delegates);\n}\nexport function split(splitter, sourceEvent) {\n return [\n choose((v) => tryValueIfChoice1Of2(splitter(v)), sourceEvent),\n choose((v) => tryValueIfChoice2Of2(splitter(v)), sourceEvent),\n ];\n}\nexport default Event;\n//# sourceMappingURL=Event.js.map","import Event from \"./Event\";\nexport class Timer {\n constructor(interval) {\n this._enabled = false;\n this._isDisposed = false;\n this._intervalId = 0;\n this._timeoutId = 0;\n this.Interval = interval && interval > 0 ? interval : 100;\n this.AutoReset = true;\n this._elapsed = new Event();\n }\n get Elapsed() {\n return this._elapsed;\n }\n get Enabled() {\n return this._enabled;\n }\n set Enabled(x) {\n if (!this._isDisposed && this._enabled !== x) {\n this._enabled = x;\n if (this._enabled) {\n if (this.AutoReset) {\n this._intervalId = setInterval(() => {\n if (!this.AutoReset) {\n this.Enabled = false;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n else {\n this._timeoutId = setTimeout(() => {\n this.Enabled = false;\n this._timeoutId = 0;\n if (this.AutoReset) {\n this.Enabled = true;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n }\n else {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n this._timeoutId = 0;\n }\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = 0;\n }\n }\n }\n }\n Dispose() {\n this.Enabled = false;\n this._isDisposed = true;\n }\n Close() {\n this.Dispose();\n }\n Start() {\n this.Enabled = true;\n }\n Stop() {\n this.Enabled = false;\n }\n}\nexport default Timer;\n//# sourceMappingURL=Timer.js.map","namespace Elmish\n\n(**\nLog\n---------\nBasic cross-platform logging API.\n\n*)\nmodule internal Log =\n\n#if FABLE_COMPILER\n open Fable.Core.JS\n\n let onError (text: string, ex: exn) = console.error (text,ex)\n let toConsole(text: string, o: #obj) = console.log(text,o)\n\n#else\n#if NETSTANDARD2_0\n let onError (text: string, ex: exn) = System.Diagnostics.Trace.TraceError(\"{0}: {1}\", text, ex)\n let toConsole(text: string, o: #obj) = printfn \"%s: %A\" text o\n#else\n let onError (text: string, ex: exn) = System.Console.Error.WriteLine(\"{0}: {1}\", text, ex)\n let toConsole(text: string, o: #obj) = printfn \"%s: %A\" text o\n#endif\n#endif\n\n#if FABLE_COMPILER\nmodule internal Timer =\n open System.Timers\n let delay interval callback =\n let t = new Timer(float interval, AutoReset = false)\n t.Elapsed.Add callback\n t.Enabled <- true\n t.Start()\n#endif\n","(**\nCmd\n---------\nCore abstractions for dispatching messages in Elmish.\n\n*)\n\nnamespace Elmish\n\nopen System\n\n/// Dispatch - feed new message into the processing loop\ntype Dispatch<'msg> = 'msg -> unit\n\n/// Subscription - return immediately, but may schedule dispatch of a message at any time\ntype Sub<'msg> = Dispatch<'msg> -> unit\n\n/// Cmd - container for subscriptions that may produce messages\ntype Cmd<'msg> = Sub<'msg> list\n\n/// Cmd module for creating and manipulating commands\n[]\nmodule Cmd =\n /// Execute the commands using the supplied dispatcher\n let internal exec (dispatch:Dispatch<'msg>) (cmd:Cmd<'msg>) =\n cmd |> List.iter (fun sub -> sub dispatch)\n\n /// None - no commands, also known as `[]`\n let none : Cmd<'msg> =\n []\n\n /// When emitting the message, map to another type\n let map (f: 'a -> 'msg) (cmd: Cmd<'a>) : Cmd<'msg> =\n cmd |> List.map (fun g -> (fun dispatch -> f >> dispatch) >> g)\n\n /// Aggregate multiple commands\n let batch (cmds: #seq>) : Cmd<'msg> =\n cmds |> List.concat\n\n /// Command to call the subscriber\n let ofSub (sub: Sub<'msg>) : Cmd<'msg> =\n [sub]\n\n module OfFunc =\n /// Command to evaluate a simple function and map the result\n /// into success or error (of exception)\n let either (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n try\n task arg\n |> (ofSuccess >> dispatch)\n with x ->\n x |> (ofError >> dispatch)\n [bind]\n\n /// Command to evaluate a simple function and map the success to a message\n /// discarding any possible error\n let perform (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n try\n task arg\n |> (ofSuccess >> dispatch)\n with x ->\n ()\n [bind]\n\n /// Command to evaluate a simple function and map the error (in case of exception)\n let attempt (task: 'a -> unit) (arg: 'a) (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n try\n task arg\n with x ->\n x |> (ofError >> dispatch)\n [bind]\n\n /// Command to issue a specific message\n let result (msg:'msg) : Cmd<'msg> =\n [fun dispatch -> dispatch msg]\n\n module OfAsyncWith =\n /// Command that will evaluate an async block and map the result\n /// into success or error (of exception)\n let either (start: Async -> unit) \n (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task arg |> Async.Catch\n dispatch (match r with\n | Choice1Of2 x -> ofSuccess x\n | Choice2Of2 x -> ofError x)\n }\n [bind >> start]\n\n /// Command that will evaluate an async block and map the success\n let perform (start: Async -> unit) \n (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task arg |> Async.Catch\n match r with\n | Choice1Of2 x -> dispatch (ofSuccess x)\n | _ -> ()\n }\n [bind >> start]\n\n /// Command that will evaluate an async block and map the error (of exception)\n let attempt (start: Async -> unit) \n (task: 'a -> Async<_>)\n (arg: 'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task arg |> Async.Catch\n match r with\n | Choice2Of2 x -> dispatch (ofError x)\n | _ -> ()\n }\n [bind >> start]\n\n /// Command that will evaluate an async block to the message\n let result (start: Async -> unit) \n (task: Async<'msg>) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task |> Async.Catch\n match r with\n | Choice1Of2 x -> dispatch x\n | _ -> ()\n }\n [bind >> start]\n\n module OfAsync =\n#if FABLE_COMPILER\n let start x = Timer.delay 0 (fun _ -> Async.StartImmediate x)\n#else\n let inline start x = Async.Start x\n#endif \n /// Command that will evaluate an async block and map the result\n /// into success or error (of exception)\n let inline either (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.either start task arg ofSuccess ofError\n\n /// Command that will evaluate an async block and map the success\n let inline perform (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.perform start task arg ofSuccess\n\n /// Command that will evaluate an async block and map the error (of exception)\n let inline attempt (task: 'a -> Async<_>)\n (arg: 'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.attempt start task arg ofError\n\n /// Command that will evaluate an async block to the message\n let inline result (task: Async<'msg>) : Cmd<'msg> =\n OfAsyncWith.result start task\n\n module OfAsyncImmediate =\n /// Command that will evaluate an async block and map the result\n /// into success or error (of exception)\n let inline either (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.either Async.StartImmediate task arg ofSuccess ofError\n\n /// Command that will evaluate an async block and map the success\n let inline perform (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.perform Async.StartImmediate task arg ofSuccess\n\n /// Command that will evaluate an async block and map the error (of exception)\n let inline attempt (task: 'a -> Async<_>)\n (arg: 'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.attempt Async.StartImmediate task arg ofError\n\n /// Command that will evaluate an async block to the message\n let inline result (task: Async<'msg>) : Cmd<'msg> =\n OfAsyncWith.result Async.StartImmediate task\n\n#if FABLE_COMPILER\n module OfPromise =\n /// Command to call `promise` block and map the results\n let either (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: #exn -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n (task arg)\n .``then``(ofSuccess >> dispatch)\n .catch(unbox >> ofError >> dispatch)\n |> ignore\n [bind]\n\n /// Command to call `promise` block and map the success\n let perform (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg) =\n let bind dispatch =\n (task arg)\n .``then``(ofSuccess >> dispatch)\n |> ignore\n [bind]\n\n /// Command to call `promise` block and map the error\n let attempt (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofError: #exn -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n (task arg)\n .catch(unbox >> ofError >> dispatch)\n |> ignore\n [bind]\n\n /// Command to dispatch the `promise` result\n let result (task: Fable.Core.JS.Promise<'msg>) =\n let bind dispatch =\n task.``then`` dispatch\n |> ignore\n [bind]\n\n []\n let inline ofPromise (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfPromise.either task arg ofSuccess ofError \n#else\n open System.Threading.Tasks\n module OfTask =\n /// Command to call a task and map the results\n let inline either (task: 'a -> Task<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsync.either (task >> Async.AwaitTask) arg ofSuccess ofError\n\n /// Command to call a task and map the success\n let inline perform (task: 'a -> Task<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfAsync.perform (task >> Async.AwaitTask) arg ofSuccess\n\n /// Command to call a task and map the error\n let inline attempt (task: 'a -> Task<_>)\n (arg:'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsync.attempt (task >> Async.AwaitTask) arg ofError\n\n /// Command and map the task success\n let inline result (task: Task<'msg>) : Cmd<'msg> =\n OfAsync.result (task |> Async.AwaitTask)\n\n []\n let inline ofTask (task: 'a -> Task<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfTask.either task arg ofSuccess ofError\n#endif\n\n // Synonymous with `OfFunc.result`, may be removed in the future\n let inline ofMsg (msg:'msg) : Cmd<'msg> =\n OfFunc.result msg\n\n []\n let inline ofAsync (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsync.either task arg ofSuccess ofError\n\n []\n let inline ofFunc (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) (ofError: _ -> 'msg) : Cmd<'msg> =\n OfFunc.either task arg ofSuccess ofError\n\n []\n let inline performFunc (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfFunc.perform task arg ofSuccess\n\n []\n let attemptFunc (task: 'a -> unit) (arg: 'a) (ofError: _ -> 'msg) : Cmd<'msg> =\n OfFunc.attempt task arg ofError\n\n","namespace Fable.SimpleHttp\r\n\r\nopen System\r\nopen Browser\r\nopen Browser.Types\r\nopen Fable.Core\r\n\r\n#if !FABLE_COMPILER\r\nopen System.Net.Http\r\n#endif\r\n\r\nmodule Blob =\r\n /// Creates a Blob from the given input string\r\n []\r\n let fromText (value: string) : Blob = jsNative\r\n\r\n\r\nmodule File =\r\n /// Creates a File from the given input string and file name\r\n []\r\n let fromText (value: string) (fileName: string) : File = jsNative\r\n\r\n\r\n/// Utility functions to work with blob and file APIs.\r\nmodule FileReader =\r\n /// Asynchronously reads the blob data content as string\r\n let readBlobAsText (blob: Blob) : Async =\r\n Async.FromContinuations <| fun (resolve, _, _) ->\r\n let reader = FileReader.Create()\r\n reader.onload <- fun _ ->\r\n if reader.readyState = FileReaderState.DONE\r\n then resolve (unbox reader.result)\r\n\r\n reader.readAsText(blob)\r\n\r\n /// Asynchronously reads the blob data content as string\r\n let readFileAsText (file: File) : Async =\r\n Async.FromContinuations <| fun (resolve, _, _) ->\r\n let reader = FileReader.Create()\r\n reader.onload <- fun _ ->\r\n if reader.readyState = FileReaderState.DONE\r\n then resolve (unbox reader.result)\r\n\r\n reader.readAsText(file)\r\n\r\nmodule FormData =\r\n\r\n []\r\n /// Creates a new FormData object\r\n let create() : FormData = jsNative\r\n\r\n /// Appends a key-value pair to the form data\r\n let append (key:string) (value:string) (form : FormData) : FormData =\r\n form.append(key, value)\r\n form\r\n\r\n /// Appends a file to the form data\r\n let appendFile (key: string) (file: File) (form: FormData) : FormData =\r\n form.append (key, file)\r\n form\r\n\r\n /// Appends a named file to the form data\r\n let appendNamedFile (key: string) (fileName: string) (file: File) (form: FormData) : FormData =\r\n form.append (key, file, fileName)\r\n form\r\n\r\n /// Appends a blog to the form data\r\n let appendBlob (key: string) (blob: Blob) (form: FormData) : FormData =\r\n form.append (key, blob)\r\n form\r\n\r\n /// Appends a blog to the form data\r\n let appendNamedBlob (key: string) (fileName: string) (blob: Blob) (form: FormData) : FormData =\r\n form.append (key, blob, fileName)\r\n form\r\n\r\nmodule Headers =\r\n let contentType value = Header(\"Content-Type\", value)\r\n let accept value = Header(\"Accept\", value)\r\n let acceptCharset value = Header(\"Accept-Charset\", value)\r\n let acceptEncoding value = Header(\"Accept-Encoding\", value)\r\n let acceptLanguage value = Header(\"Accept-Language\", value)\r\n let acceptDateTime value = Header(\"Accept-Datetime\", value)\r\n let authorization value = Header(\"Authorization\", value)\r\n let cacheControl value = Header(\"Cache-Control\", value)\r\n let connection value = Header(\"Connection\", value)\r\n let cookie value = Header(\"Cookie\", value)\r\n let contentMD5 value = Header(\"Content-MD5\", value)\r\n let date value = Header(\"Date\", value)\r\n let expect value = Header(\"Expect\", value)\r\n let ifMatch value = Header(\"If-Match\", value)\r\n let ifModifiedSince value = Header(\"If-Modified-Since\", value)\r\n let ifNoneMatch value = Header(\"If-None-Match\", value)\r\n let ifRange value = Header(\"If-Range\", value)\r\n let IfUnmodifiedSince value = Header(\"If-Unmodified-Since\", value)\r\n let maxForwards value = Header(\"Max-Forwards\", value)\r\n let origin value = Header (\"Origin\", value)\r\n let pragma value = Header(\"Pragma\", value)\r\n let proxyAuthorization value = Header(\"Proxy-Authorization\", value)\r\n let range value = Header(\"Range\", value)\r\n let referer value = Header(\"Referer\", value)\r\n let userAgent value = Header(\"User-Agent\", value)\r\n let create key value = Header(key, value)\r\n\r\nmodule Http =\r\n\r\n let private defaultRequest =\r\n { url = \"\";\r\n method = HttpMethod.GET\r\n headers = []\r\n withCredentials = false\r\n overridenMimeType = None\r\n overridenResponseType = None\r\n content = BodyContent.Empty }\r\n\r\n let private emptyResponse =\r\n { statusCode = 0\r\n responseText = \"\"\r\n responseType = \"\"\r\n responseHeaders = Map.empty\r\n content = ResponseContent.Text \"\" }\r\n\r\n let private splitAt (delimiter: string) (input: string) : string [] =\r\n if String.IsNullOrEmpty input then [| input |]\r\n else input.Split([| delimiter |], StringSplitOptions.None)\r\n\r\n let private serializeMethod = function\r\n | HttpMethod.GET -> \"GET\"\r\n | HttpMethod.POST -> \"POST\"\r\n | HttpMethod.PATCH -> \"PATCH\"\r\n | HttpMethod.PUT -> \"PUT\"\r\n | HttpMethod.DELETE -> \"DELETE\"\r\n | HttpMethod.OPTIONS -> \"OPTIONS\"\r\n | HttpMethod.HEAD -> \"HEAD\"\r\n\r\n /// Starts the configuration of the request with the specified url\r\n let request (url: string) : HttpRequest =\r\n { defaultRequest with url = url }\r\n\r\n /// Sets the Http method of the request\r\n let method httpVerb (req: HttpRequest) =\r\n { req with method = httpVerb }\r\n\r\n /// Appends a header to the request configuration\r\n let header (singleHeader: Header) (req: HttpRequest) =\r\n { req with headers = List.append req.headers [singleHeader] }\r\n\r\n /// Appends a list of headers to the request configuration\r\n let headers (values: Header list) (req: HttpRequest) =\r\n { req with headers = List.append req.headers values }\r\n\r\n /// Enables cross-site credentials such as cookies\r\n let withCredentials (enabled: bool) (req: HttpRequest) =\r\n { req with withCredentials = enabled }\r\n\r\n /// Specifies a MIME type other than the one provided by the server to be used instead when interpreting the data being transferred in a request. This may be used, for example, to force a stream to be treated and parsed as \"text/xml\", even if the server does not report it as such.\r\n let overrideMimeType (value: string) (req: HttpRequest) =\r\n { req with overridenMimeType = Some value }\r\n\r\n /// Change the expected response type from the server\r\n let overrideResponseType (value: ResponseTypes) (req: HttpRequest) =\r\n { req with overridenResponseType = Some value }\r\n\r\n /// Sets the body content of the request\r\n let content (bodyContent: BodyContent) (req: HttpRequest) : HttpRequest =\r\n { req with content = bodyContent }\r\n\r\n /// Sends the request to the server, this function does not throw\r\n let send (req: HttpRequest) : Async =\r\n#if FABLE_COMPILER\r\n Async.FromContinuations <| fun (resolve, reject, _) ->\r\n let xhr = XMLHttpRequest.Create()\r\n xhr.``open``(serializeMethod req.method, req.url)\r\n xhr.onreadystatechange <- fun _ ->\r\n if xhr.readyState = ReadyState.Done\r\n then resolve {\r\n responseText =\r\n match xhr.responseType with\r\n | \"\" -> xhr.responseText\r\n | \"text\" -> xhr.responseText\r\n | _ -> \"\"\r\n\r\n statusCode = int xhr.status\r\n responseType = xhr.responseType\r\n content =\r\n match xhr.responseType with\r\n | (\"\" | \"text\") -> ResponseContent.Text xhr.responseText\r\n | \"arraybuffer\" -> ResponseContent.ArrayBuffer (unbox xhr.response)\r\n | \"blob\" -> ResponseContent.Blob (unbox xhr.response)\r\n | _ -> ResponseContent.Unknown xhr.response\r\n\r\n responseHeaders =\r\n xhr.getAllResponseHeaders()\r\n |> splitAt \"\\r\\n\"\r\n |> Array.choose (fun headerLine ->\r\n let parts = splitAt \":\" headerLine\r\n match List.ofArray parts with\r\n | key :: rest -> Some (key.ToLower(), (String.concat \":\" rest).Trim())\r\n | otherwise -> None)\r\n |> Map.ofArray\r\n }\r\n\r\n for (Header(key, value)) in req.headers do\r\n xhr.setRequestHeader(key, value)\r\n\r\n xhr.withCredentials <- req.withCredentials\r\n\r\n match req.overridenMimeType with\r\n | Some mimeType -> xhr.overrideMimeType(mimeType)\r\n | None -> ()\r\n\r\n match req.overridenResponseType with\r\n | Some ResponseTypes.Text -> xhr.responseType <- \"text\"\r\n | Some ResponseTypes.Blob -> xhr.responseType <- \"blob\"\r\n | Some ResponseTypes.ArrayBuffer -> xhr.responseType <- \"arraybuffer\"\r\n | None -> ()\r\n\r\n match req.method, req.content with\r\n | GET, _ -> xhr.send(None)\r\n | _, BodyContent.Empty -> xhr.send(None)\r\n | _, BodyContent.Text value -> xhr.send(value)\r\n | _, BodyContent.Form formData -> xhr.send(formData)\r\n | _, BodyContent.Binary blob -> xhr.send(blob)\r\n#else\r\n async {\r\n try\r\n use requestMessage = new HttpRequestMessage()\r\n requestMessage.RequestUri <- Uri(req.url)\r\n requestMessage.Method <-\r\n match req.method with\r\n | HttpMethod.GET -> HttpMethod.Get\r\n | HttpMethod.POST -> HttpMethod.Post\r\n | HttpMethod.PUT -> HttpMethod.Put\r\n | HttpMethod.PATCH -> HttpMethod \"PATCH\"\r\n | HttpMethod.DELETE -> HttpMethod.Delete\r\n | HttpMethod.HEAD -> HttpMethod.Head\r\n | HttpMethod.OPTIONS -> HttpMethod.Options\r\n req.headers\r\n |> Seq.iter (fun (Header (key, value)) ->\r\n requestMessage.Headers.Add(key, value))\r\n use content =\r\n match req.content with\r\n | BodyContent.Text text -> new StringContent(text)\r\n | BodyContent.Empty -> null\r\n | _ -> failwith \"Only BodyContent.Text is supported in the dotnet implementation\"\r\n requestMessage.Content <- content\r\n\r\n use client = new HttpClient()\r\n let! response = client.SendAsync requestMessage |> Async.AwaitTask\r\n let! responseBody = response.Content.ReadAsStringAsync() |> Async.AwaitTask\r\n\r\n let headers =\r\n response.Headers\r\n |> Seq.choose (fun kv ->\r\n kv.Value\r\n |> Seq.tryLast\r\n |> Option.map (fun value -> kv.Key, value))\r\n |> Map.ofSeq\r\n\r\n return\r\n { statusCode = int response.StatusCode\r\n responseText = responseBody\r\n responseType = \"text\"\r\n responseHeaders = headers\r\n content = ResponseContent.Text responseBody }\r\n with\r\n // We're catching a lot here to mimic the behaviour of the JS\r\n // implementation, which isn't able to expose the kind of error.\r\n | :? ArgumentException ->\r\n return emptyResponse // invalid uri\r\n | :? HttpRequestException\r\n | :? AggregateException as aggrEx when (aggrEx.InnerException :? HttpRequestException) ->\r\n return emptyResponse // connection errors\r\n }\r\n#endif\r\n\r\n /// Safely sends a GET request and returns a tuple(status code * response text). This function does not throw.\r\n let get url : Async =\r\n async {\r\n let! response =\r\n request url\r\n |> method HttpMethod.GET\r\n |> send\r\n return response.statusCode, response.responseText\r\n }\r\n\r\n /// Safely sends a PUT request and returns a tuple(status code * response text). This function does not throw.\r\n let put url (data: string) : Async =\r\n async {\r\n let! response =\r\n request url\r\n |> method HttpMethod.PUT\r\n |> content (BodyContent.Text data)\r\n |> send\r\n return response.statusCode, response.responseText\r\n }\r\n\r\n /// Safely sends a DELETE request and returns a tuple(status code * response text). This function does not throw.\r\n let delete url : Async =\r\n async {\r\n let! response =\r\n request url\r\n |> method HttpMethod.DELETE\r\n |> send\r\n return response.statusCode, response.responseText\r\n }\r\n\r\n /// Safely sends a PUT request and returns a tuple(status code * response text). This function does not throw.\r\n let patch url (data: string) : Async =\r\n async {\r\n let! response =\r\n request url\r\n |> method HttpMethod.PATCH\r\n |> content (BodyContent.Text data)\r\n |> send\r\n return response.statusCode, response.responseText\r\n }\r\n\r\n /// Safely sends a POST request and returns a tuple(status code * response text). This function does not throw.\r\n let post url (data: string) : Async =\r\n async {\r\n let! response =\r\n request url\r\n |> method HttpMethod.POST\r\n |> content (BodyContent.Text data)\r\n |> send\r\n return response.statusCode, response.responseText\r\n }\r\n","module Data.WeeklyStats\n\nopen Fable.SimpleHttp\nopen Fable.SimpleJson\nopen Types\n\n// let url = \"https://api.sledilnik.org/api/stats-weekly\" SLO-spec\nlet url = \"https://api.treker.mk/api/stats-weekly\"\n\ntype private TransferSource =\n { quarantine : int option\n local : int option\n import : int option\n ``import-related`` : int option\n unknown : int option\n }\n\n member this.ToDomain : InfectionSource =\n { FromQuarantine = this.quarantine\n Local = this.local\n Import = this.import\n ImportRelated = this.``import-related``\n Unknown = this.unknown }\n\nlet private mapKeysToUpperCase (map: Map) =\n Map.toSeq map\n |> Seq.map (fun (k, v) -> (k.ToUpper(), v))\n |> Map.ofSeq\n\ntype private TransferWStatsDataPoint =\n {\n week : string\n year : int\n month : int\n day : int\n ``to`` :\n {|\n year : int\n month : int\n day : int\n |}\n confirmed : int option\n investigated : int option\n healthcare : int option\n sentTo :\n {|\n quarantine : int option\n |}\n source : TransferSource\n from : Map\n }\n\n member this.ToDomain : WeeklyStatsDataPoint =\n {\n Week = this.week\n Date = System.DateTime(this.year, this.month, this.day)\n DateTo = System.DateTime(this.``to``.year, this.``to``.month, this.``to``.day)\n ConfirmedCases = this.confirmed\n InvestigatedCases = this.investigated\n HealthcareCases = this.healthcare\n SentToQuarantine = this.sentTo.quarantine\n Source = this.source.ToDomain\n ImportedFrom = this.from |> mapKeysToUpperCase\n }\n\ntype private TransferWStatsData = TransferWStatsDataPoint[]\n\nlet parseWStatsData responseData =\n let transferWStatsData =\n responseData\n |> Json.parseNativeAs\n\n transferWStatsData\n |> Array.map (fun transferDataPoint -> transferDataPoint.ToDomain)\n\nlet countryTotals (weeklyStats: seq) =\n let sum (a: int option) (b: int option) =\n match a, b with\n | None, Some b_ -> b_\n | Some a_, Some b_ -> a_ + b_\n | Some a_, None -> a_\n | _ -> 0\n\n let sumOfMaps (a: Map) (b: Map) =\n Map.fold (fun a_ key value -> Map.add key (sum (a.TryFind key) value) a_) a b\n\n weeklyStats\n |> Seq.map (fun ws -> ws.ImportedFrom)\n |> Seq.fold sumOfMaps Map.empty\n |> Map.filter (fun _ v -> v > 0)\n |> Map.toArray\n |> Array.sortByDescending (fun (_, v) -> v)\n\nlet load =\n async {\n let! (statusCode, response) = Http.get url\n\n if statusCode <> 200 then\n return WeeklyStatsDataLoaded (sprintf \"Napaka pri nalaganju statističnih podatkov: %d\" statusCode |> Failure)\n else\n try\n let data = parseWStatsData response\n return WeeklyStatsDataLoaded (Success data)\n with\n | ex -> return WeeklyStatsDataLoaded (sprintf \"Napaka pri branju statističnih podatkov: %s\" (ex.Message.Substring(0, 1000)) |> Failure)\n }\n","// tslint:disable:max-line-length\nimport { fromNumber, op_Division, op_Multiply, toNumber } from \"./Long\";\nimport { comparePrimitives, padLeftAndRightWithZeros, padWithZeros } from \"./Util\";\n// TimeSpan in runtime just becomes a number representing milliseconds\n/**\n * Calls:\n * - `Math.ceil` if the `value` is **negative**\n * - `Math.floor` if the `value` is **positive**\n * @param value Value to round\n */\nfunction signedRound(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n}\nexport function create(d = 0, h = 0, m = 0, s = 0, ms = 0) {\n switch (arguments.length) {\n case 1:\n // ticks\n return fromTicks(arguments[0]);\n case 3:\n // h,m,s\n d = 0, h = arguments[0], m = arguments[1], s = arguments[2], ms = 0;\n break;\n default:\n // d,h,m,s,ms\n break;\n }\n return d * 86400000 + h * 3600000 + m * 60000 + s * 1000 + ms;\n}\nexport function fromTicks(ticks) {\n return toNumber(op_Division(ticks, 10000));\n}\nexport function fromDays(d) {\n return create(d, 0, 0, 0);\n}\nexport function fromHours(h) {\n return create(h, 0, 0);\n}\nexport function fromMinutes(m) {\n return create(0, m, 0);\n}\nexport function fromSeconds(s) {\n return create(0, 0, s);\n}\nexport function days(ts) {\n return signedRound(ts / 86400000);\n}\nexport function hours(ts) {\n return signedRound(ts % 86400000 / 3600000);\n}\nexport function minutes(ts) {\n return signedRound(ts % 3600000 / 60000);\n}\nexport function seconds(ts) {\n return signedRound(ts % 60000 / 1000);\n}\nexport function milliseconds(ts) {\n return signedRound(ts % 1000);\n}\nexport function ticks(ts) {\n return op_Multiply(fromNumber(ts), 10000);\n}\nexport function totalDays(ts) {\n return ts / 86400000;\n}\nexport function totalHours(ts) {\n return ts / 3600000;\n}\nexport function totalMinutes(ts) {\n return ts / 60000;\n}\nexport function totalSeconds(ts) {\n return ts / 1000;\n}\nexport function negate(ts) {\n return ts * -1;\n}\nexport function add(ts1, ts2) {\n return ts1 + ts2;\n}\nexport function subtract(ts1, ts2) {\n return ts1 - ts2;\n}\nexport const op_Addition = add;\nexport const op_Subtraction = subtract;\nexport const compare = comparePrimitives;\nexport const compareTo = comparePrimitives;\nexport function duration(x) {\n return Math.abs(x);\n}\nexport function toString(ts, format = \"c\", _provider) {\n if ([\"c\", \"g\", \"G\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const d = Math.abs(days(ts));\n const h = Math.abs(hours(ts));\n const m = Math.abs(minutes(ts));\n const s = Math.abs(seconds(ts));\n const ms = Math.abs(milliseconds(ts));\n const sign = ts < 0 ? \"-\" : \"\";\n return `${sign}${d === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"c\" ? d + \".\" : d + \":\"}${format === \"g\" ? h : padWithZeros(h, 2)}:${padWithZeros(m, 2)}:${padWithZeros(s, 2)}${ms === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"g\" ? \".\" + padWithZeros(ms, 3) : \".\" + padLeftAndRightWithZeros(ms, 3, 7)}`;\n}\nexport function parse(str) {\n const firstDot = str.search(\"\\\\.\");\n const firstColon = str.search(\"\\\\:\");\n if (firstDot === -1 && firstColon === -1) { // There is only a day ex: 4\n const d = parseInt(str, 0);\n if (isNaN(d)) {\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n else {\n return create(d, 0, 0, 0, 0);\n }\n }\n if (firstColon > 0) { // process time part\n // WIP: (-?)(((\\d+)\\.)?([0-9]|0[0-9]|1[0-9]|2[0-3]):(\\d+)(:\\d+(\\.\\d{1,7})?)?|\\d+(?:(?!\\.)))\n const r = /^(-?)((\\d+)\\.)?(?:0*)([0-9]|0[0-9]|1[0-9]|2[0-3]):(?:0*)([0-5][0-9]|[0-9])(:(?:0*)([0-5][0-9]|[0-9]))?\\.?(\\d+)?$/.exec(str);\n if (r != null && r[4] != null && r[5] != null) {\n let d = 0;\n let ms = 0;\n let s = 0;\n const sign = r[1] != null && r[1] === \"-\" ? -1 : 1;\n const h = +r[4];\n const m = +r[5];\n if (r[3] != null) {\n d = +r[3];\n }\n if (r[7] != null) {\n s = +r[7];\n }\n if (r[8] != null) {\n // Depending on the number of decimals passed, we need to adapt the numbers\n switch (r[8].length) {\n case 1:\n ms = +r[8] * 100;\n break;\n case 2:\n ms = +r[8] * 10;\n break;\n case 3:\n ms = +r[8];\n break;\n case 4:\n ms = +r[8] / 10;\n break;\n case 5:\n ms = +r[8] / 100;\n break;\n case 6:\n ms = +r[8] / 1000;\n break;\n case 7:\n ms = +r[8] / 10000;\n break;\n default:\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n }\n return sign * create(d, h, m, s, ms);\n }\n }\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n}\nexport function tryParse(v, _refValue) {\n try {\n return [true, parse(v)];\n }\n catch (_err) {\n return [false, 0];\n }\n}\n//# sourceMappingURL=TimeSpan.js.map","namespace Feliz\r\n\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\nopen Fable.React\r\nopen Feliz.ReactApi\r\n\r\n[]\r\nmodule Interop =\r\n let reactApi : IReactApi = importDefault \"react\"\r\n let reactElement (name: string) (props: 'a) : ReactElement = import \"createElement\" \"react\"\r\n let mkAttr (key: string) (value: obj) : IReactProperty = unbox (key, value)\r\n let mkStyle (key: string) (value: obj) : IStyleAttribute = unbox (key, value)\r\n let inline reactElementWithChild (name: string) (child: 'a) =\r\n reactElement name (createObj [ \"children\" ==> [| child |] ])\r\n let inline reactElementWithChildren (name: string) (children: #seq) =\r\n reactElement name (createObj [ \"children\" ==> reactApi.Children.toArray (Array.ofSeq children) ])\r\n let inline createElement name (properties: IReactProperty list) : ReactElement =\r\n reactElement name (createObj !!properties)\r\n","module I18N\n\nopen Fable.Core.JsInterop\n\ntype Ii18n =\n abstract t : string -> string\n abstract t : string * obj -> string\n\nlet i18n : Ii18n = importDefault \"i18n\"\n\nlet t key = i18n.t key\n\nlet tOptions key options = i18n.t (key, options)\n\nlet tt section key =\n t (section + \".\" + key)\n\nlet dow dayOfWeek =\n t (sprintf \"weekday.%d\" dayOfWeek)\n\nlet chartText chartTextsGroup textId =\n t (\"charts.\" + chartTextsGroup + \".\" + textId)\n","[]\nmodule Utils\n\nopen Fable.Core\nopen Feliz\n\nopen Types\nopen System\n\nlet memoize f =\n let cache = new System.Collections.Generic.Dictionary<_,_>()\n (fun x ->\n match cache.TryGetValue x with\n | true, value ->\n value\n | false, _ ->\n let value = f x\n cache.Add(x, value)\n value)\n\n// Converts Some 0 value to None\nlet zeroToNone value =\n match value with\n | Some 0 -> None\n | _ -> value\n\nlet optionToInt (value: int option) =\n match value with\n | Some x -> x\n | None -> 0\n\n[ isNaN(x) ? null : x)(+$0)\")>]\nlet nativeParseInt (input : string) : int option = jsNative\n\n[ isNaN(x) ? null : x)(+$0)\")>]\nlet nativeParseFloat (input : string) : float option = jsNative\n\nlet parseDate (str : string) =\n try\n DateTime.Parse(str) |> Ok\n with _ ->\n sprintf \"Invalid date representation: %s\" str |> Error\n\nlet roundDecimals (decimals:int) (value: float) = Math.Round(value, decimals)\n\nlet roundToInt = roundDecimals 0\n\nlet roundTo1Decimal = roundDecimals 1\n\nlet roundTo3Decimals = roundDecimals 3\n\nlet formatToInt (value: float) =\n let formatted = sprintf \"%.0f\" value\n // A hack to replace decimal point with decimal comma.\n formatted.Replace('.', ',')\n\nlet formatTo1DecimalWithTrailingZero (value: float) =\n let formatted = sprintf \"%.1f\" value\n // A hack to replace decimal point with decimal comma.\n formatted.Replace('.', ',')\n\nlet formatTo3DecimalWithTrailingZero (value: float) =\n let formatted = sprintf \"%.3f\" value\n // A hack to replace decimal point with decimal comma.\n formatted.Replace('.', ',')\n\nlet percentageValuesWith1DecimalTrailingZeroLabelFormatter (value: float) =\n let formatted = sprintf \"%.1f\" value\n formatted.Replace('.', ',') + \"%\"\n\nlet percentageValuesLabelFormatter (value: float) =\n // A hack to replace decimal point with decimal comma.\n ((abs value).ToString() + \"%\").Replace('.', ',')\n\nlet calculateDoublingTime (v1 : {| Day : int ; PositiveTests : int |}) (v2 : {| Day : int ; PositiveTests : int |}) =\n let v1, v2, dt = float v1.PositiveTests, float v2.PositiveTests, float (v2.Day - v1.Day)\n if v1 = v2 then None\n else\n let value = log10 2.0 / log10 ((v2 / v1) ** (1.0 / dt))\n if value < 0.0 then None\n else Some value\n\nlet findDoublingTime (values : {| Date : DateTime ; Value : int option |} list) =\n let reversedValues =\n values\n |> List.choose (fun dp ->\n match dp.Value with\n | None -> None\n | Some value -> Some {| Date = dp.Date ; Value = value |}\n )\n |> List.rev\n\n match reversedValues with\n | head :: tail ->\n match tail |> List.tryFind (fun dp ->\n float head.Value / 2. >= float dp.Value) with\n | None -> None\n | Some halfValue -> (head.Date - halfValue.Date).TotalDays |> Some\n | _ -> None\n\nlet classes (classTuples: seq) =\n classTuples\n |> Seq.filter (fun (visible, _) -> visible)\n |> Seq.map (fun (_, className) -> className)\n |> Seq.toList\n |> prop.className\n\nlet renderScaleSelector scaleType dispatch =\n let renderSelector (scaleType : ScaleType) (currentScaleType : ScaleType) (label : string) =\n let defaultProps =\n [ prop.text label\n classes [\n (true, \"chart-display-property-selector__item\")\n (scaleType = currentScaleType, \"selected\") ] ]\n if scaleType = currentScaleType\n then Html.div defaultProps\n else Html.div ((prop.onClick (fun _ -> dispatch scaleType)) :: defaultProps)\n\n let yLabel = I18N.t \"charts.common.yAxis\"\n let linearLabel = I18N.t \"charts.common.linear\"\n let logLabel = I18N.t \"charts.common.log\"\n Html.div [\n prop.className \"chart-display-property-selector\"\n prop.children [\n Html.div [\n prop.text yLabel\n prop.className \"chart-display-property-selector__item\"\n ]\n renderSelector Linear scaleType linearLabel\n renderSelector Logarithmic scaleType logLabel\n ]\n ]\n\nlet renderChartTopControls (children: ReactElement seq) =\n Html.div [\n prop.className \"chart-display-properties\"\n prop.children children\n ]\n\nlet renderChartTopControlRight (topControl: ReactElement) =\n Html.div [\n prop.className \"chart-display-properties\"\n prop.style [ style.justifyContent.flexEnd ]\n prop.children [ topControl ]\n ]\n\nlet renderLoading =\n let loadingLabel = I18N.t \"charts.common.loading\"\n Html.div [\n prop.className \"loader\"\n prop.text loadingLabel\n ]\n\nlet renderErrorLoading (error : string) =\n Html.text error\n\nlet renderMaybeVisible (visible: bool) (children: ReactElement seq) =\n Html.div [\n prop.className (match visible with\n | true -> \"\"\n | false -> \"invisible\" )\n prop.children children\n ]\n\nlet monthNameOfDate (date : DateTime) =\n match date.Month with\n | 1 -> I18N.t \"month.0\"\n | 2 -> I18N.t \"month.1\"\n | 3 -> I18N.t \"month.2\"\n | 4 -> I18N.t \"month.3\"\n | 5 -> I18N.t \"month.4\"\n | 6 -> I18N.t \"month.5\"\n | 7 -> I18N.t \"month.6\"\n | 8 -> I18N.t \"month.7\"\n | 9 -> I18N.t \"month.8\"\n | 10 -> I18N.t \"month.9\"\n | 11 -> I18N.t \"month.10\"\n | 12 -> I18N.t \"month.11\"\n | _ -> failwith \"Invalid month\"\n\nlet transliterateCSZ (str : string) =\n str\n .Replace(\"Č\", \"C\")\n .Replace(\"Š\", \"S\")\n .Replace(\"Ž\", \"Z\")\n .Replace(\"č\", \"c\")\n .Replace(\"š\", \"s\")\n .Replace(\"ž\", \"z\")\n\nlet mixColors\n (minColorR, minColorG, minColorB)\n (maxColorR, maxColorG, maxColorB)\n mixRatio =\n\n let colorR =\n ((maxColorR - minColorR) |> float)\n * mixRatio + (float minColorR)\n |> round |> int\n let colorG =\n ((maxColorG - minColorG) |> float)\n * mixRatio + (float minColorG)\n |> round |> int\n let colorB =\n ((maxColorB - minColorB) |> float)\n * mixRatio + (float minColorB)\n |> round |> int\n\n \"#\" + colorR.ToString(\"X2\")\n + colorG.ToString(\"X2\")\n + colorB.ToString(\"X2\")\n\nmodule Dictionaries =\n\n type Region = {\n Key : string\n Name : string\n Population : int option }\n\n(* SLO-spec - replaced for MK *)\n let excludedRegions = Set.ofList [\"mk\"]\n\n let regions =\n [ \"mk\", Some 2076255\n \"va\", Some 151492\n \"is\", Some 182785\n \"jz\", Some 219180\n \"ji\", Some 172824\n \"pe\", Some 226837\n \"po\", Some 322872\n \"si\", Some 166992\n \"sk\", Some 633273 ]\n |> List.map (fun (key, population) -> key, { Key = key ; Name = key ; Population = population }) \n |> Map.ofList\n\n type Municipality = {\n Key : string\n Name : string\n Code : string\n Population : int\n }\n\n(* SLO-spec - replaced for MK *)\n let municipalities =\n [ \"berovo\", 12493, \"Berovo\"\n \"bitola\", 99873, \"Bitola\"\n \"valandovo\", 11621, \"Valandovo\"\n \"veles\", 65749, \"Veles\"\n \"vinica\", 19207, \"Vinitsa\"\n \"gevgelija\", 33860, \"Gevgelija\"\n \"gostivar\", 120348, \"Gostivar\"\n \"debar\", 28181, \"Debar\"\n \"delcevo\", 23057, \"Delchevo\"\n \"demir_hisar\", 7873, \"Demir Hisar\"\n \"kavadarci\", 42703, \"Kavadartsi\"\n \"kicevo\", 56487, \"Kichevo\"\n \"kocani\", 46960, \"Kochani\"\n \"kratovo\", 8981, \"Kratovo\"\n \"kriva_palanka\", 23245, \"Kriva Palanka\"\n \"krusevo\", 9255, \"Krushevo\"\n \"kumanovo\", 143747, \"Kumanovo\"\n \"makedonski_brod\", 10961, \"Makedonski Brod\"\n \"negotino\", 23141, \"Negotino\"\n \"ohrid\", 55030, \"Ohrid\"\n \"pehcevo\", 4722, \"Pehchevo\"\n \"prilep\", 93678, \"Prilep\"\n \"probistip\", 14771, \"Probishtip\"\n \"radovis\", 32609, \"Radovish\"\n \"resen\", 16158, \"Resen\"\n \"sveti_nikole\", 19899, \"Sveti Nikole\"\n \"skopje\", 633273, \"Skopje\"\n \"struga\", 68521, \"Struga\"\n \"strumica\", 94734, \"Strumitsa\"\n \"tetovo\", 202524, \"Tetovo\"\n \"stip\", 52594, \"Shtip\" ] \n |> List.map (fun (key, population, code) -> key, { Key = key ; Name = key ; Population = population ; Code = code })\n |> Map.ofList\n\n let skopjeMunicipalities =\n [ \"chair\", 64773, \"Chair\"\n \"aerodrom\", 72009, \"Aerodrom\"\n \"butel\", 36154, \"Butel\"\n \"gazi_baba\", 72617, \"Gazi Baba\"\n \"centar\", 45412, \"Centar\"\n \"karposh\", 59666, \"Karposh\"\n \"saraj\", 35408, \"Saraj\"\n \"kisela_voda\", 57236, \"Kisela Voda\"\n \"gjorche_petrov\", 41634, \"Gjorche Petrov\"\n \"studenichani\", 17246, \"Studenichani\"\n \"shuto_orizari\", 22017, \"Shuto Orizari\"\n \"arachinovo\", 11597, \"Arachinovo\"\n \"ilinden\", 15894, \"Ilinden\"\n \"petrovets\", 8255, \"Petrovets\"\n \"chucher-sandevo\", 8493, \"Chucher - Sandevo\"\n \"sopishte\", 5656, \"Sopishte\"\n \"zelenikovo\", 4077, \"Zelenikovo\" ] \n |> List.map (fun (key, population, code) -> key, { Municipality.Key = key ; Municipality.Name = key ; Municipality.Population = population ; Municipality.Code = code })\n |> Map.ofList\n\nmodule AgePopulationStats =\n type AgeGroupId = string\n\n type AgeGroupPopulationStats = {\n Key: AgeGroupId\n Male: int\n Female: int\n }\n\n let agePopulationStats =\n [\n \"0-4\", 53183, 50328\n \"5-14\", 106600, 100566\n \"15-24\", 100391, 93739\n \"25-34\", 133471, 122333\n \"35-44\", 162436, 146922\n \"45-54\", 153735, 146868\n \"55-64\", 147957, 147089\n \"65-74\", 101173, 113253\n \"75-84\", 54460, 81981\n \"85+\", 13635, 36760\n ]\n |> List.map (fun (ageGroupId, male, female) ->\n ageGroupId, { Key = ageGroupId; Male = male; Female = female })\n |> Map.ofList\n\n let parseAgeGroupId (ageGroupId: AgeGroupId): AgeGroupKey =\n if ageGroupId.Contains('-') then\n let i = ageGroupId.IndexOf('-')\n let fromAge = Int32.Parse(ageGroupId.Substring(0, i))\n let toAge = Int32.Parse(ageGroupId.Substring(i+1))\n { AgeFrom = Some fromAge; AgeTo = Some toAge }\n else if ageGroupId.Contains('+') then\n let i = ageGroupId.IndexOf('+')\n let fromAge = Int32.Parse(ageGroupId.Substring(0, i-1))\n { AgeFrom = Some fromAge; AgeTo = None }\n else\n sprintf \"Invalid age group ID: %s\" ageGroupId\n |> ArgumentException |> raise\n\n let toAgeGroupId (groupKey: AgeGroupKey): AgeGroupId =\n match groupKey.AgeFrom, groupKey.AgeTo with\n | Some fromValue, Some toValue -> sprintf \"%d-%d\" fromValue toValue\n | Some fromValue, None -> sprintf \"%d+\" fromValue\n | _ -> sprintf \"Invalid age group key (%A)\" groupKey\n |> ArgumentException |> raise\n\n let populationStatsForAgeGroup (groupKey: AgeGroupKey)\n : AgeGroupPopulationStats =\n let ageGroupId = toAgeGroupId groupKey\n\n if agePopulationStats.ContainsKey ageGroupId then\n agePopulationStats.[ageGroupId]\n else\n sprintf \"Age group '%s' does not exist.\" ageGroupId\n |> ArgumentException |> raise\n","namespace FsToolkit.ErrorHandling\n\nopen System \n\n[]\nmodule ResultCE =\n\n type ResultBuilder() =\n member __.Return (value: 'T) : Result<'T, 'TError> =\n Ok value\n\n member inline __.ReturnFrom (result: Result<'T, 'TError>) : Result<'T, 'TError> =\n result\n\n member this.Zero () : Result =\n this.Return ()\n\n member inline __.Bind\n (result: Result<'T, 'TError>, binder: 'T -> Result<'U, 'TError>)\n : Result<'U, 'TError> =\n Result.bind binder result\n\n member __.Delay\n (generator: unit -> Result<'T, 'TError>)\n : unit -> Result<'T, 'TError> =\n generator\n\n member inline __.Run\n (generator: unit -> Result<'T, 'TError>)\n : Result<'T, 'TError> =\n generator ()\n\n member this.Combine\n (result: Result, binder: unit -> Result<'T, 'TError>)\n : Result<'T, 'TError> =\n this.Bind(result, binder)\n\n member this.TryWith\n (generator: unit -> Result<'T, 'TError>,\n handler: exn -> Result<'T, 'TError>)\n : Result<'T, 'TError> =\n try this.Run generator with | e -> handler e\n\n member this.TryFinally\n (generator: unit -> Result<'T, 'TError>, compensation: unit -> unit)\n : Result<'T, 'TError> =\n try this.Run generator finally compensation ()\n\n member this.Using\n (resource: 'T when 'T :> IDisposable, binder: 'T -> Result<'U, 'TError>)\n : Result<'U, 'TError> =\n this.TryFinally (\n (fun () -> binder resource),\n (fun () -> if not <| obj.ReferenceEquals(resource, null) then resource.Dispose ())\n )\n\n member this.While\n (guard: unit -> bool, generator: unit -> Result)\n : Result =\n if not <| guard () then this.Zero ()\n else this.Bind(this.Run generator, fun () -> this.While (guard, generator))\n\n member this.For\n (sequence: #seq<'T>, binder: 'T -> Result)\n : Result =\n this.Using(sequence.GetEnumerator (), fun enum ->\n this.While(enum.MoveNext,\n this.Delay(fun () -> binder enum.Current)))\n\n member _.BindReturn(x: Result<'T,'U>, f) = Result.map f x\n\n member _.MergeSources(t1: Result<'T,'U>, t2: Result<'T1,'U>) = Result.zip t1 t2\n\n /// \n /// Method lets us transform data types into our internal representation. This is the identity method to recognize the self type.\n /// \n /// See https://stackoverflow.com/questions/35286541/why-would-you-use-builder-source-in-a-custom-computation-expression-builder\n /// \n /// \n /// \n member inline _.Source(result : Result<_,_>) : Result<_,_> = result\n\n let result = ResultBuilder()\n\n[]\nmodule ResultCEExtensions =\n\n type ResultBuilder with\n /// \n /// Needed to allow `for..in` and `for..do` functionality\n /// \n member inline __.Source(s: #seq<_>) = s\n\n\n// Having Choice<_> members as extensions gives them lower priority in\n// overload resolution and allows skipping more type annotations.\n[]\nmodule ResultCEChoiceExtensions =\n type ResultBuilder with\n /// \n /// Method lets us transform data types into our internal representation.\n /// \n /// \n member inline _.Source(choice : Choice<_,_>) = Result.ofChoice choice\n\n","module Data.Regions\n\nopen FsToolkit.ErrorHandling\nopen Fable.SimpleHttp\n\nopen Types\n\ntype Metric =\n | ActiveCases\n | ConfirmedToDate\n | DeceasedToDate\n\ntype DataPoint = {\n Region : string\n Municipality : string\n Metric : Metric\n Value : int option\n}\n\nlet parseRegionsData (csv : string) =\n let rows = csv.Split(\"\\n\")\n let header = rows.[0].Split(\",\")\n\n // Parse municipality header (region, municipality and metric)\n let headerMunicipalities =\n header.[1..]\n |> Array.map (fun col ->\n match col.Split(\".\") with\n | [| \"region\" ; region ; municipality ; \"cases\" ; \"active\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = ActiveCases ; Value = None }\n | [| \"region\" ; region ; municipality ; \"cases\" ; \"confirmed\" ; \"todate\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = ConfirmedToDate ; Value = None }\n | [| \"region\" ; region ; municipality ; \"deceased\" ; \"todate\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = DeceasedToDate ; Value = None }\n | unknown ->\n printfn \"Error parsing municipalities header: %s\" col\n None\n )\n\n // Parse data rows\n rows.[1..]\n |> Array.map (fun row ->\n result {\n let columns = row.Split(\",\")\n\n if headerMunicipalities.Length <> columns.[1..].Length then\n return! Error \"\"\n else\n // Date is in the first column\n let! date = Utils.parseDate(columns.[0])\n // Merge municipality header information with data columns\n let data =\n Array.map2 (fun header value ->\n match header with\n | None _ -> None\n | Some header -> Some { header with Value = Utils.nativeParseInt value }\n ) headerMunicipalities columns.[1..]\n |> Array.choose id\n // Group by region\n |> Array.groupBy (fun dp -> dp.Region)\n |> Array.map (fun (region, dps) ->\n let municipalities =\n dps\n // Group by municipality and combine values\n |> Array.groupBy (fun dp -> dp.Municipality)\n |> Array.map (fun (municipality, dps) ->\n dps\n |> Array.fold (fun state dp ->\n match dp.Metric with\n | ActiveCases -> { state with ActiveCases = dp.Value }\n | ConfirmedToDate -> { state with ConfirmedToDate = dp.Value }\n | DeceasedToDate -> { state with DeceasedToDate = dp.Value }\n ) { Name = municipality ; ActiveCases = None ; ConfirmedToDate = None ; DeceasedToDate = None })\n // Region\n { Name = region ; Municipalities = municipalities |> Array.toList }\n )\n // RegionsDataPoint\n return { Date = date ; Regions = data |> Array.toList }\n })\n |> Array.choose (fun row ->\n match row with\n | Ok row -> Some row\n | Error _ -> None)\n |> Array.toList\n\nlet load(apiEndpoint: string) =\n async {\n let! (statusCode, response) = Http.get (sprintf \"%s/api/municipalities?format=csv\" apiEndpoint)\n\n if statusCode <> 200 then\n return RegionsDataLoaded (sprintf \"Napaka pri nalaganju podatkov o občinah: %d\" statusCode |> Failure)\n else\n let data = parseRegionsData response\n return RegionsDataLoaded (Success data)\n }\n \nlet loadSkMun(apiEndpoint: string) =\n async {\n let! (statusCode, response) = Http.get (sprintf \"%s/api/skopje-municipalities?format=csv\" apiEndpoint)\n\n if statusCode <> 200 then\n return SkopjeMunicipalitiesDataLoaded (sprintf \"Napaka pri nalaganju podatkov o občinah: %d\" statusCode |> Failure)\n else\n let data = parseRegionsData response\n return SkopjeMunicipalitiesDataLoaded (Success data)\n }\n","module Data.Stats\n\nopen Fable.SimpleHttp\nopen Fable.SimpleJson\n\nopen Types\n\nlet url = \"https://api.treker.mk/api/stats\"\n\ntype TransferAgeGroup =\n { ageFrom : int option\n ageTo : int option\n allToDate : int option\n femaleToDate : int option\n maleToDate : int option }\n\n member this.ToDomain : AgeGroup =\n { GroupKey = { AgeFrom = this.ageFrom; AgeTo = this.ageTo }\n Male = this.maleToDate\n Female = this.femaleToDate\n All = this.allToDate }\n\ntype private TransferStatsDataPoint =\n { dayFromStart : int\n year : int\n month : int\n day : int\n phase : string\n tests :\n {|\n performed : {| toDate : int option; today : int option |}\n positive : {| toDate : int option; today : int option |}\n regular :\n {|\n performed : {| toDate : int option; today : int option |}\n positive : {| toDate : int option; today : int option |}\n |}\n nsApr20 :\n {|\n performed : {| toDate : int option; today : int option |}\n positive : {| toDate : int option; today : int option |}\n |}\n |}\n cases :\n {| confirmedToday : int option\n confirmedToDate : int option\n recoveredToDate : int option\n closedToDate : int option\n active : int option\n hs : {| employeeConfirmedToDate: int option |}\n rh : {| employeeConfirmedToDate: int option; occupantConfirmedToDate: int option |}\n unclassified : {| confirmedToDate: int option |}\n |}\n statePerTreatment :\n {| inHospital : int option\n inHospitalToDate : int option\n inICU : int option\n critical : int option\n deceasedToDate : int option\n deceased : int option\n outOfHospitalToDate : int option\n outOfHospital : int option\n recoveredToDate : int option |}\n statePerAgeToDate : TransferAgeGroup list\n deceasedPerAgeToDate : TransferAgeGroup list\n vaccination :\n {|\n administered : {| toDate : int option; today : int option |}\n administered2nd : {| toDate : int option; today : int option |}\n |}\n }\n\n member this.ToDomain : StatsDataPoint =\n { DayFromStart = this.dayFromStart\n Date = System.DateTime(this.year, this.month, this.day)\n Phase = this.phase\n Tests =\n { Performed = { ToDate = this.tests.performed.toDate; Today = this.tests.performed.today }\n Positive = { ToDate = this.tests.positive.toDate; Today = this.tests.positive.today }\n Regular =\n { Performed = { ToDate = this.tests.regular.performed.toDate; Today = this.tests.regular.performed.today }\n Positive = { ToDate = this.tests.regular.positive.toDate; Today = this.tests.regular.positive.today } }\n NsApr20 =\n { Performed = { ToDate = this.tests.nsApr20.performed.toDate; Today = this.tests.nsApr20.performed.today }\n Positive = { ToDate = this.tests.nsApr20.positive.toDate; Today = this.tests.nsApr20.positive.today } }\n }\n Cases =\n { ConfirmedToday = this.cases.confirmedToday\n ConfirmedToDate = this.cases.confirmedToDate\n RecoveredToDate = this.cases.recoveredToDate\n ClosedToDate = this.cases.closedToDate\n Active = this.cases.active }\n StatePerTreatment =\n { InHospital = this.statePerTreatment.inHospital\n InHospitalToDate = this.statePerTreatment.inHospitalToDate\n InICU = this.statePerTreatment.inICU\n Critical = this.statePerTreatment.critical\n DeceasedToDate = this.statePerTreatment.deceasedToDate\n Deceased = this.statePerTreatment.deceased\n OutOfHospitalToDate = this.statePerTreatment.outOfHospitalToDate\n OutOfHospital = this.statePerTreatment.outOfHospital\n RecoveredToDate = this.statePerTreatment.recoveredToDate }\n StatePerAgeToDate = this.statePerAgeToDate |> List.map (fun item -> item.ToDomain)\n DeceasedPerAgeToDate = this.deceasedPerAgeToDate |> List.map (fun item -> item.ToDomain)\n HospitalEmployeePositiveTestsToDate = this.cases.hs.employeeConfirmedToDate\n RestHomeEmployeePositiveTestsToDate = this.cases.rh.employeeConfirmedToDate\n RestHomeOccupantPositiveTestsToDate = this.cases.rh.occupantConfirmedToDate\n UnclassifiedPositiveTestsToDate = this.cases.unclassified.confirmedToDate\n Vaccination =\n { Administered = { ToDate = this.vaccination.administered.toDate; Today = this.vaccination.administered.today }\n Administered2nd = { ToDate = this.vaccination.administered2nd.toDate; Today = this.vaccination.administered2nd.today } }\n }\n\ntype private TransferStatsData = TransferStatsDataPoint list\n\nlet parseStatsData responseData =\n let transferStatsData =\n responseData\n |> Json.parseNativeAs\n\n transferStatsData\n |> List.map (fun transferDataPoint -> transferDataPoint.ToDomain)\n\nlet load =\n async {\n let! (statusCode, response) = Http.get url\n\n if statusCode <> 200 then\n return StatsDataLoaded (sprintf \"Napaka pri nalaganju statističnih podatkov: %d\" statusCode |> Failure)\n else\n try\n let data = parseStatsData response\n return StatsDataLoaded (Success data)\n with\n | ex -> return StatsDataLoaded (sprintf \"Napaka pri branju statističnih podatkov: %s\" (ex.Message.Substring(0, 1000)) |> Failure)\n }\n","module Highcharts\n\nopen System\nopen Fable.Core\nopen Fable.React\nopen Browser\n\nopen Types\n\n[]\nlet chart: obj -> ReactElement = jsNative\n\n[]\nlet chartFromWindow: obj -> ReactElement = jsNative\n\n[]\nlet map: obj -> ReactElement = jsNative\n\n[]\nlet sparklineChart (documentElementId : string, options : obj) : unit = jsNative\n\n[]\nmodule Helpers =\n // Plain-Old-Javascript-Object (i.e. box)\n let inline pojo o = JsInterop.toPlainJsObj o\n\n // plain old javascript object\n []\n let poja (a: 'T[]) : obj = jsNative\n\n type JsTimestamp = float\n\n []\n let jsTime (x: DateTime): JsTimestamp = jsNative\n\n let jsNoon : JsTimestamp = 43200000.0\n let jsTime12h = jsTime >> ( + ) jsNoon\n []\n let jsTimeMidnight (x: DateTime): JsTimestamp = jsNative\n\n /// Given two dates it calculates the middle point between the midnight for the first date and end of day for the second date\n let jsDatesMiddle (a: DateTime) (b: DateTime): JsTimestamp = ( + ) (0.5 * jsTimeMidnight a) (0.5 * jsTimeMidnight b) + 43200000.0\n\ntype DashStyle =\n | Solid\n | ShortDash\n | ShortDot\n | ShortDashDot\n | ShortDashDotDot\n | Dot\n | Dash\n | LongDash\n | DashDot\n | LongDashDot\n | LongDashDotDot\n with\n static member toString = function\n | Solid -> \"Solid\"\n | ShortDash -> \"ShortDash\"\n | ShortDot -> \"ShortDot\"\n | ShortDashDot -> \"ShortDashDot\"\n | ShortDashDotDot -> \"ShortDashDotDot\"\n | Dot -> \"Dot\"\n | Dash -> \"Dash\"\n | LongDash -> \"LongDash\"\n | DashDot -> \"DashDot\"\n | LongDashDot -> \"LongDashDot\"\n | LongDashDotDot -> \"LongDashDotDot\"\n\n\nlet shadedWeekendPlotBands =\n let saturday = DateTime(2020,02,22)\n let nWeeks = (DateTime.Today-saturday).TotalDays / 7.0 |> int\n let oneDay = 86400000.0\n let origin = jsTime saturday // - oneDay / 2.0\n [|\n for i in 0..nWeeks+2 do\n //yield {| value=origin + oneDay * 7.0 * float i; label=None; color=Some \"rgba(0,0,0,0.05)\"; width=Some 5 |}\n //yield {| value=origin + oneDay * 7.0 * float (i+1); label=None; color=Some \"rgba(0,0,0,0.05)\"; width=Some 5 |}\n yield\n {|\n ``from`` = origin + oneDay * 7.0 * float i\n ``to`` = origin + oneDay * 7.0 * float i + oneDay * 2.0\n color = \"rgb(0,0,0,0.025)\"\n label = None\n |}\n |]\n\n// if set to true:\n// - MunicipalitiesChart will showDoublesInXday\nlet showDoublingTimeFeatures =\n true\n\n// if set to true:\n// - SpreadChart will show exponential growth pages\nlet showExpGrowthFeatures =\n true\n\nlet addContainmentMeasuresFlags\n (startDate: JsTimestamp)\n (endDate: JsTimestamp option) =\n let events = [|\n // day, mo, year, color, i18n\n 28, 2, 2020, \"#FFe6e6\", \"gatheringsMass\"\n 16, 3, 2020, \"#FFe6e6\", \"bordersClosure\"\n 17, 3, 2020, \"#FFe6e6\", \"debarQuarantine\"\n 19, 3, 2020, \"#FFe6e6\", \"gatherings5\"\n 21, 3, 2020, \"#FFe6e6\", \"21hLockdown\"\n 22, 4, 2020, \"#FFe6e6\", \"masksOn\"\n 12, 5, 2020, \"#FFe6e6\", \"lessMeasures\"\n 27, 5, 2020, \"#ebfaeb\", \"kafanasOpen\"\n 23, 6, 2020, \"#e6f0ff\", \"bordersOopen\"\n 9, 9, 2020, \"#ebfaeb\", \"kindergartensOpen\" \n 1, 10, 2020, \"#ebfaeb\", \"ucilistaOpen\"\n 4, 11, 2020, \"#FFe6e6\", \"kafanas21h\"\n 18, 12, 2020, \"#FFe6e6\", \"kafanas18h\"\n 21, 1, 2021, \"#ebfaeb\", \"kafanas21h\"\n 17, 2, 2021, \"#ebfaeb\", \"vaksajns\"\n 10, 3, 2021, \"#FFe6e6\", \"22_05hLockdown\"\n 6, 4, 2021, \"#FFe6e6\", \"kafanasClosed\"\n 28, 4, 2021, \"#ebfaeb\", \"goceva_terasa\"\n |]\n {|\n ``type`` = \"flags\"\n shape = \"flag\"\n showInLegend = false\n color = \"#444\"\n data =\n events |> Array.choose (fun (d,m,y,color,i18n) ->\n let ts = DateTime(y,m,d) |> jsTime\n let showMeasure =\n match startDate, endDate with\n | startDate, None -> ts >= startDate\n | startDate, Some endDate ->\n ts >= startDate && ts <= endDate\n\n let title = \"mk.cm.\" + i18n + \".title\"\n let text = \"mk.cm.\" + i18n + \".description\"\n if showMeasure then\n Some {| x=ts; fillColor=color; title=I18N.t title; text=I18N.t text |}\n else None\n )\n |}\n\n(* Trigger document event for iframe resizing *)\nlet onLoadEvent (name : String) =\n let res (e : Event) =\n let event = document.createEvent(\"Event\")\n event.initEvent(\"chartLoaded\", true, true)\n document.dispatchEvent(event)\n res\n\nlet optionsWithOnLoadEvent (className : string) =\n {| chart = pojo\n {| events = pojo\n {| load = onLoadEvent(className) |}\n |}\n |}\n\nlet parseDate (value: String) =\n match I18N.t \"charts.common.numDateFormat\" with\n | \"%m/%d/%Y\" -> // EN, ME\n let date = value.Replace(\" \", \"\").Split('/')\n DateTime\n .Parse(date.[2] + \"-\" + date.[0] + \"-\" + date.[1])\n .Subtract(DateTime(1970,1,1))\n .TotalMilliseconds\n | \"%d/%m/%Y\" -> // IT\n let date = value.Replace(\" \", \"\").Split('/')\n DateTime\n .Parse(date.[2] + \"-\" + date.[1] + \"-\" + date.[0])\n .Subtract(DateTime(1970,1,1))\n .TotalMilliseconds\n | _ -> // DE, HR, MK, SL, SQ\n let date = value.Replace(\" \", \"\").Split('.')\n DateTime\n .Parse(date.[2] + \"-\" + date.[1] + \"-\" + date.[0])\n .Subtract(DateTime(1970,1,1))\n .TotalMilliseconds\n\nlet configureRangeSelector selectedRangeSelectionButtonIndex buttons =\n pojo {|\n enabled = true\n allButtonsEnabled = true\n selected = selectedRangeSelectionButtonIndex\n inputDateFormat = I18N.t \"charts.common.numDateFormat\"\n inputEditDateFormat = I18N.t \"charts.common.numDateFormat\"\n inputDateParser = parseDate\n x = 0\n inputBoxBorderColor = \"#ced4da\"\n buttonTheme = pojo {| r = 6; states = pojo {| select = pojo {| fill = \"#ffd922\" |} |} |}\n buttons = buttons\n |}\n\nlet credictsOptions =\n {| enabled = true\n text = sprintf \"%s: %s, %s\"\n (I18N.t \"charts.common.dataSource\")\n (I18N.tOptions (\"charts.common.dsNIJZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n (I18N.tOptions (\"charts.common.dsMZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n // SLO-spec href = \"https://www.nijz.si/sl/dnevno-spremljanje-okuzb-s-sars-cov-2-covid-19\"\n href = \"http://www.iph.mk\"\n |} |> pojo\n\n\nlet basicChartOptions\n (scaleType:ScaleType)\n (className:string)\n (selectedRangeSelectionButtonIndex: int)\n (rangeSelectorButtonClickHandler: int -> (Event -> bool))\n =\n {|\n chart = pojo\n {|\n animation = false\n ``type`` = \"line\"\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n title = pojo {| text = None |}\n xAxis = [|\n {|\n index=0; crosshair=true; ``type``=\"datetime\"\n gridLineWidth=1 //; isX=true\n gridZIndex = -1\n tickInterval=86400000\n //labels = pojo {| align = \"center\"; y = 30; reserveSpace = false |} // style = pojo {| marginBottom = \"-30px\" |}\n labels = pojo {| align = \"center\"; y = 30; reserveSpace = true; distance = -20; |} // style = pojo {| marginBottom = \"-30px\" |}\n //labels = {| rotation= -45 |}\n plotLines=[|\n(* SLO-spec \n {| value=jsTime <| DateTime(2020,3,13); label=Some {| text=I18N.t \"phase.2.description\"; rotation=270; align=\"right\"; x=12 |} |}\n {| value=jsTime <| DateTime(2020,3,20); label=Some {| text=I18N.t \"phase.3.description\"; rotation=270; align=\"right\"; x=12 |} |}\n {| value=jsTime <| DateTime(2020,4,8); label=Some {| text=I18N.t \"phase.4.description\"; rotation=270; align=\"right\"; x=12 |} |}\n {| value=jsTime <| DateTime(2020,4,15); label=Some {| text=I18N.t \"phase.5.description\"; rotation=270; align=\"right\"; x=12 |} |}\n {| value=jsTime <| DateTime(2020,4,21); label=Some {| text=I18N.t \"phase.6.description\"; rotation=270; align=\"right\"; x=12 |} |}\n {| value=jsTime <| DateTime(2020,5,15); label=Some {| text=I18N.t \"phase.7.description\"; rotation=270; align=\"right\"; x=12 |} |}\n*)\n |]\n\n plotBands=[|\n // SLO-spec - TODO: this is just placeholder/hack until you have MK phases \n {| ``from``=jsTime <| DateTime(2020,2,29);\n ``to``=jsTime <| DateTime(2020,3,13);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=\"\" |}\n |}\n(* SLO-spec \n {| ``from``=jsTime <| DateTime(2020,2,29);\n ``to``=jsTime <| DateTime(2020,3,13);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=I18N.t \"phase.1.title\" |}\n |}\n {| ``from``=jsTime <| DateTime(2020,3,13);\n ``to``=jsTime <| DateTime(2020,3,20);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=I18N.t \"phase.2.title\" |}\n |}\n {| ``from``=jsTime <| DateTime(2020,3,20);\n ``to``=jsTime <| DateTime(2020,4,8);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=I18N.t \"phase.3.title\" |}\n |}\n {| ``from``=jsTime <| DateTime(2020,4,8);\n ``to``=jsTime <| DateTime(2020,4,15);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=I18N.t \"phase.4.title\" |}\n |}\n {| ``from``=jsTime <| DateTime(2020,4,15);\n ``to``=jsTime <| DateTime(2020,4,21);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=I18N.t \"phase.5.title\" |}\n |}\n {| ``from``=jsTime <| DateTime(2020,4,21);\n ``to``=jsTime <| DateTime(2020,5,15);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=I18N.t \"phase.6.title\" |}\n |}\n {| ``from``=jsTime <| DateTime(2020,5,15);\n ``to``=jsTime <| DateTime(2020,9,10);\n color=\"transparent\"\n label=Some {| align=\"center\"; text=I18N.t \"phase.7.title\" |}\n |}\n*)\n yield! shadedWeekendPlotBands\n |]\n // https://api.highcharts.com/highcharts/xAxis.dateTimeLabelFormats\n dateTimeLabelFormats = pojo\n {|\n week = I18N.t \"charts.common.shortDateFormat\"\n day = I18N.t \"charts.common.shortDateFormat\"\n |}\n |}\n |]\n yAxis = [|\n {|\n index = 0\n ``type`` = if scaleType=Linear then \"linear\" else \"logarithmic\"\n min = if scaleType=Linear then None else Some 1\n max = None\n //floor = if scaleType=Linear then None else Some 1.0\n opposite = true // right side\n maxPadding = if scaleType = Linear then None else Some 0.25\n title = {| text = null |} // \"oseb\" |}\n showFirstLabel = None\n tickInterval = if scaleType=Linear then None else Some 0.4\n gridZIndex = -1\n plotLines = [| {| value = 0; color = \"black\" |} |]\n crosshair = true\n |}\n |]\n\n tooltip = pojo\n {|\n shared = true\n split = false\n xDateFormat = \"\" + I18N.t \"charts.common.dateFormat\" + \"\"\n |}\n\n legend =\n {|\n enabled = false\n align = \"left\"\n verticalAlign = \"top\"\n borderColor = \"#ddd\"\n borderWidth = 1\n //labelFormatter = string //fun series -> series.name\n layout = \"vertical\"\n //backgroundColor = None :> string option\n |}\n\n navigator = pojo {| enabled = false |}\n scrollbar = pojo {| enabled = false |}\n rangeSelector = configureRangeSelector selectedRangeSelectionButtonIndex [|\n {|\n ``type`` = \"month\"\n count = 2\n text = I18N.tOptions \"charts.common.x_months\" {| count = 2 |}\n events = pojo {| click = rangeSelectorButtonClickHandler 0 |}\n |}\n {|\n ``type`` = \"month\"\n count = 3\n text = I18N.tOptions \"charts.common.x_months\" {| count = 3 |}\n events = pojo {| click = rangeSelectorButtonClickHandler 1 |}\n |}\n {|\n ``type`` = \"all\"\n count = 1\n text = I18N.t \"charts.common.all\"\n events = pojo {| click = rangeSelectorButtonClickHandler 2 |}\n |}\n |]\n\n responsive = pojo\n {|\n rules =\n [| {|\n condition = {| maxWidth = 768 |}\n chartOptions =\n {|\n yAxis = [| {| labels = pojo {| enabled = false |} |} |]\n |}\n |} |]\n |}\n\n plotOptions = pojo\n {|\n line = pojo\n {|\n //dataLabels = pojo {| enabled = true |}\n marker = pojo {| symbol = \"circle\"; radius = 3 |}\n //enableMouseTracking = false\n |}\n |}\n\n credits = credictsOptions\n |}\n","module Data.Hospitals\n\nopen System\n\n// let url = \"https://api.sledilnik.org/api/hospitals\" SLO-spec\nlet url = \"https://api.treker.mk/api/hospitals\"\n\ntype CountType =\n | Total\n | Max\n | Occupied\n | Free\n | MaxFree\n\ntype AssetCounts = {\n total: int option\n max: int option\n occupied: int option\n free: int option\n maxFree: int option\n } with\n static member getValue count (counts: AssetCounts) =\n match count with\n | Total -> counts.total\n | Max -> counts.max\n | Occupied -> counts.occupied\n | Free -> counts.free\n | MaxFree -> counts.maxFree\n\ntype AssetType =\n | Beds\n | Icus\n | Vents\n\ntype Assets = {\n beds: AssetCounts\n icu: AssetCounts\n vents: AssetCounts\n } with\n static member getValue (count: CountType) asset assets =\n match asset with\n | Beds -> assets.beds |> AssetCounts.getValue count\n | Icus -> assets.icu |> AssetCounts.getValue count\n | Vents -> assets.vents |> AssetCounts.getValue count\n\n\n\ntype FacilityCode = string // ukclj, sbce, ukg, ...\n\n/// return (seriesName * color) based on facility name\nlet facilitySeriesInfo : FacilityCode -> (string option * string) = function\n | \"bse\" -> None , \"B Sežana\"\n | \"bto\" -> None , \"B Topolšica\"\n | \"sbbr\" -> None , \"SB Brežice\"\n | \"sbce\" -> Some \"#70a471\", \"SB Celje\"\n | \"sbje\" -> None , \"SB Jesenice\"\n | \"sbiz\" -> None , \"SB Izola\"\n | \"sbms\" -> None , \"SB Murska Sobota\"\n | \"sbng\" -> None , \"SB Nova Gorica\"\n | \"sbnm\" -> None , \"SB Novo mesto\"\n | \"sbpt\" -> None , \"SB Ptuj\"\n | \"sbsg\" -> None , \"SB Slovenj Gradec\"\n | \"sbtr\" -> None , \"SB Trbovlje\"\n | \"upklj\" -> None , \"UPK Ljubljana\"\n | \"pbbe\" -> None , \"PB Begunje\"\n | \"pbvo\" -> None , \"PB Vojnik\"\n | \"pbor\" -> None , \"PB Ormož\"\n | \"pbid\" -> None , \"PB Idrija\"\n | other -> None , I18N.t (\"mk.hospital.\" + other) // SLO-spec\n\n\ntype FacilityAssets = {\n year: int\n month: int\n day: int\n overall: Assets\n perHospital: Map\n } with\n member ps.Date = DateTime(ps.year, ps.month, ps.day)\n member ps.JsDate12h = DateTime(ps.year, ps.month, ps.day)\n |> Highcharts.Helpers.jsTime12h\n\nlet getSortedFacilityCodes (data: FacilityAssets []) =\n match data with\n | [||] -> []\n | [| _ |] -> []\n | data ->\n // TODO: in future we'll need more\n seq { // take few samples\n data.[data.Length/2]\n data.[data.Length-2]\n data.[data.Length-1]\n }\n |> Seq.collect (fun assets ->\n assets.perHospital\n |> Map.toSeq\n |> Seq.map (fun (facility, stats) ->\n let quality =\n seq {\n stats.beds.total\n stats.vents.total |> Option.map (fun vents -> if vents>0 then 1000 else 0)\n //stats.icu.total\n }\n |> Seq.sumBy (Option.defaultValue -1)\n facility,quality)) // hospital name\n |> Seq.fold (fun hospitals (hospital,cnt) -> hospitals |> Map.add hospital cnt) Map.empty // all\n |> Map.toList\n |> List.sortBy (fun (fc,quality) ->\n //printfn \"hospital %s %A\" fc cnt\n -quality, (if fc.Length = 3 then fc else \"x\"+fc))\n |> List.map fst\n\n\nlet getOrFetch = DataLoader.makeDataLoader url\n","module Data.Patients\n\nopen System\n\nlet url = \"https://api.treker.mk/api/patients\"\n//let url = \"https://api.sledilnik.org/api/patients\"\n\ntype DeceasedCounts = {\n today: int option\n toDate: int option\n}\n\ntype HDeceasedCounts = {\n today: int option\n toDate: int option\n icu : DeceasedCounts\n}\n\ntype TDeceasedCounts = {\n today: int option\n toDate: int option\n hospital : HDeceasedCounts\n home : DeceasedCounts\n}\n\ntype DepartmentCounts = {\n ``in``: int option\n out: int option\n today: int option\n toDate: int option\n}\n\ntype FacilityPatientStats = {\n inHospital: DepartmentCounts\n icu: DepartmentCounts\n critical: DepartmentCounts\n care: DepartmentCounts\n deceasedCare: DeceasedCounts\n deceased: HDeceasedCounts\n}\n\ntype TotalPatientStats =\n {\n outOfHospital: DepartmentCounts\n inHospital: DepartmentCounts\n icu: DepartmentCounts\n critical: DepartmentCounts\n care: DepartmentCounts\n deceasedCare: DeceasedCounts\n deceased: TDeceasedCounts\n }\n member this.ToFacilityStats : FacilityPatientStats =\n { inHospital = this.inHospital\n icu = this.icu\n critical = this.critical\n care = this.care\n deceasedCare = this.deceasedCare\n deceased = this.deceased.hospital }\n\n\ntype PatientsStats = {\n dayFromStart: int\n year: int\n month: int\n day: int\n total: TotalPatientStats\n facilities: Map\n } with\n member ps.Date = DateTime(ps.year, ps.month, ps.day)\n member ps.JsDate12h = DateTime(ps.year, ps.month, ps.day)\n |> Highcharts.Helpers.jsTime12h\n\n\nlet getOrFetch = DataLoader.makeDataLoader url\n","import {\r\n useEffect as useEffectReact,\r\n useLayoutEffect as useLayoutEffectReact,\r\n useDebugValue as useDebugValueReact } from 'react'\r\n\r\nexport const useEffect = getDisposable => {\r\n useEffectReact(() => {\r\n const disposable = getDisposable()\r\n return () => {\r\n disposable.Dispose();\r\n }\r\n })\r\n}\r\n\r\nexport const useEffectWithDeps = (getDisposable, deps) => {\r\n useEffectReact(() => {\r\n const disposable = getDisposable()\r\n return () => {\r\n disposable.Dispose();\r\n }\r\n }, deps)\r\n}\r\n\r\nexport const useLayoutEffect = getDisposable => {\r\n useLayoutEffectReact(() => {\r\n const disposable = getDisposable()\r\n return () => {\r\n disposable.Dispose();\r\n }\r\n })\r\n}\r\n\r\nexport const useLayoutEffectWithDeps = (getDisposable, deps) => {\r\n useLayoutEffectReact(() => {\r\n const disposable = getDisposable()\r\n return () => {\r\n disposable.Dispose();\r\n }\r\n }, deps)\r\n}\r\n\r\nexport const useDebugValue = (value, formatter) => useDebugValueReact(value, formatter)","namespace Feliz\r\n\r\nopen System\r\nopen System.ComponentModel\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\nopen Browser.Types\r\n\r\nmodule internal ReactInterop =\r\n let useDebugValueWithFormatter<'t>(value: 't, formatter: 't -> string) : unit = import \"useDebugValue\" \"./ReactInterop.js\"\r\n let useEffect (effect: obj) : unit = import \"useEffect\" \"./ReactInterop.js\"\r\n let useEffectWithDeps (effect: obj) (deps: obj) : unit = import \"useEffectWithDeps\" \"./ReactInterop.js\"\r\n let useLayoutEffect (effect: obj) : unit = import \"useLayoutEffect\" \"./ReactInterop.js\"\r\n let useLayoutEffectWithDeps (effect: obj) (deps: obj) : unit = import \"useLayoutEffectWithDeps\" \"./ReactInterop.js\"\r\n\r\n[]\r\n[]\r\nmodule Helpers =\r\n let inline optDispose (disposeOption: #IDisposable option) =\r\n { new IDisposable with member _.Dispose () = disposeOption |> Option.iter (fun d -> d.Dispose()) }\r\n\r\ntype internal Internal() =\r\n static let propsWithKey (withKey: ('props -> string) option) props =\r\n match withKey with\r\n | Some f ->\r\n props?key <- f props\r\n props\r\n | None -> props\r\n static member\r\n functionComponent\r\n (\r\n renderElement: 'props -> ReactElement,\r\n ?name: string,\r\n ?withKey: 'props -> string\r\n )\r\n : 'props -> Fable.React.ReactElement =\r\n name |> Option.iter (fun name -> renderElement?displayName <- name)\r\n fun props ->\r\n let props = props |> propsWithKey withKey\r\n Interop.reactApi.createElement(renderElement, props)\r\n static member\r\n memo\r\n (\r\n renderElement: 'props -> ReactElement,\r\n ?name: string,\r\n ?areEqual: 'props -> 'props -> bool,\r\n ?withKey: 'props -> string\r\n )\r\n : 'props -> Fable.React.ReactElement =\r\n let memoElementType = Interop.reactApi.memo(renderElement, (defaultArg areEqual (unbox null)))\r\n name |> Option.iter (fun name -> renderElement?displayName <- name)\r\n fun props ->\r\n let props = props |> propsWithKey withKey\r\n Interop.reactApi.createElement(memoElementType, props)\r\n\r\ntype React =\r\n /// Creates a disposable instance by providing the implementation of the dispose member.\r\n static member createDisposable(dispose: unit -> unit) =\r\n { new IDisposable with member _.Dispose() = dispose() }\r\n\r\n /// The `React.fragment` component lets you return multiple elements in your `render()` method without creating an additional DOM element.\r\n static member inline fragment xs = Fable.React.Helpers.fragment [] xs\r\n\r\n /// The `React.fragment` component lets you return multiple elements in your `render()` method without creating an additional DOM element.\r\n static member inline keyedFragment(key: int, xs) = Fable.React.Helpers.fragment [ !!(\"key\", key) ] xs\r\n /// The `React.fragment` component lets you return multiple elements in your `render()` method without creating an additional DOM element.\r\n static member inline keyedFragment(key: string, xs) = Fable.React.Helpers.fragment [ !!(\"key\", key) ] xs\r\n /// The `React.fragment` component lets you return multiple elements in your `render()` method without creating an additional DOM element.\r\n static member inline keyedFragment(key: System.Guid, xs) = Fable.React.Helpers.fragment [ !!(\"key\", string key) ] xs\r\n\r\n /// The `useState` hook that create a state variable for React function components from a initialization function.\r\n static member useState<'t>(initializer: unit -> 't) = Interop.reactApi.useState 't,'t>(initializer)\r\n\r\n /// Accepts a reducer and returns the current state paired with a dispatch.\r\n static member useReducer(update, initialState) = Interop.reactApi.useReducer update initialState\r\n\r\n /// The `useEffect` hook that creates a disposable effect for React function components\r\n /// This effect has no dependencies which means the effect is re-executed on every re-render.\r\n /// To make the effect run once (for example you subscribe once to web sockets) then provide an empty array\r\n /// for the dependencies: `React.useEffect(disposableEffect, [| |])`.\r\n static member useEffect(effect: unit -> #IDisposable) : unit = ReactInterop.useEffect(effect)\r\n /// The `useEffect` hook that creates a disposable effect for React function components\r\n /// This effect has no dependencies which means the effect is re-executed on every re-render.\r\n /// To make the effect run once (for example you subscribe once to web sockets) then provide an empty array\r\n /// for the dependencies: `React.useEffect(disposableEffect, [| |])`.\r\n static member inline useEffect(effect: unit -> #IDisposable option) = React.useEffect(effect >> Helpers.optDispose)\r\n /// The `useEffect` hook that creates a disposable effect for React function components.\r\n /// This effect takes a array of *dependencies*.\r\n /// Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\r\n /// you have to explicitly provide an empty array for the dependencies: `React.useEffect(effect, [| |])`.\r\n static member useEffect(effect: unit -> #IDisposable, dependencies: obj []) : unit = ReactInterop.useEffectWithDeps effect dependencies\r\n /// The `useEffect` hook that creates a disposable effect for React function components.\r\n /// This effect takes a array of *dependencies*.\r\n /// Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\r\n /// you have to explicitly provide an empty array for the dependencies: `React.useEffect(effect, [| |])`.\r\n static member inline useEffect(effect: unit -> #IDisposable option, dependencies: obj []) = React.useEffect(effect >> Helpers.optDispose, dependencies)\r\n\r\n /// The `useLayoutEffect` hook that creates a disposable effect for React function components\r\n /// This effect has no dependencies which means the effect is re-executed on every re-render.\r\n /// To make the effect run once (for example you subscribe once to web sockets) then provide an empty array\r\n /// for the dependencies: `React.useLayoutEffect(disposableEffect, [| |])`.\r\n /// The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\r\n static member useLayoutEffect(effect: unit -> #IDisposable) : unit = ReactInterop.useLayoutEffect(effect)\r\n /// The `useLayoutEffect` hook that creates a disposable effect for React function components\r\n /// This effect has no dependencies which means the effect is re-executed on every re-render.\r\n /// To make the effect run once (for example you subscribe once to web sockets) then provide an empty array\r\n /// for the dependencies: `React.useLayoutEffect(disposableEffect, [| |])`.\r\n /// The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\r\n static member inline useLayoutEffect(effect: unit -> #IDisposable option) = React.useLayoutEffect(effect >> Helpers.optDispose)\r\n /// The `useLayoutEffect` hook that creates a disposable effect for React function components.\r\n /// This effect takes a array of *dependencies*.\r\n /// Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\r\n /// you have to explicitly provide an empty array for the dependencies: `React.useLayoutEffect(effect, [| |])`.\r\n /// The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\r\n static member useLayoutEffect(effect: unit -> #IDisposable, dependencies: obj []) : unit = ReactInterop.useLayoutEffectWithDeps effect dependencies\r\n /// The `useLayoutEffect` hook that creates a disposable effect for React function components.\r\n /// This effect takes a array of *dependencies*.\r\n /// Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\r\n /// you have to explicitly provide an empty array for the dependencies: `React.useLayoutEffect(effect, [| |])`.\r\n /// The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\r\n static member inline useLayoutEffect(effect: unit -> #IDisposable option, dependencies: obj []) =\r\n React.useLayoutEffect(effect >> Helpers.optDispose, dependencies)\r\n /// The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\r\n /// This effect is executed on every (re)render\r\n static member useLayoutEffect(effect: unit -> unit) =\r\n ReactInterop.useLayoutEffect\r\n (fun _ ->\r\n effect()\r\n React.createDisposable(ignore))\r\n\r\n /// The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\r\n static member useLayoutEffect(effect: unit -> unit, dependencies: obj []) =\r\n ReactInterop.useLayoutEffectWithDeps\r\n (fun _ ->\r\n effect()\r\n React.createDisposable(ignore))\r\n dependencies\r\n\r\n static member inline useLayoutEffectOnce(effect: unit -> unit) =\r\n React.useLayoutEffect(effect, [| |])\r\n\r\n static member inline useLayoutEffectOnce(effect: unit -> #IDisposable) =\r\n React.useLayoutEffect(effect, [| |])\r\n\r\n static member inline useLayoutEffectOnce(effect: unit -> #IDisposable option) =\r\n React.useLayoutEffect(effect, [| |])\r\n\r\n /// React hook to define and use an effect only once when a function component renders for the first time.\r\n /// This an alias for `React.useEffect(effect, [| |])` which explicitly provide an empty array for the dependencies of the effect which means the effect will only run once.\r\n static member useEffectOnce(effect: unit -> unit) =\r\n React.useEffect(effect, [| |])\r\n\r\n /// React hook to define and use a disposable effect only once when a function component renders for the first time.\r\n /// This an alias for `React.useEffect(effect, [| |])` which explicitly provide an empty array for the dependencies of the effect which means the effect will only run once.\r\n static member useEffectOnce(effect: unit -> #IDisposable) =\r\n React.useEffect(effect, [| |])\r\n /// React hook to define and use a disposable effect only once when a function component renders for the first time.\r\n /// This an alias for `React.useEffect(effect, [| |])` which explicitly provide an empty array for the dependencies of the effect which means the effect will only run once.\r\n static member useEffectOnce(effect: unit -> #IDisposable option) =\r\n React.useEffect(effect >> Helpers.optDispose, [| |])\r\n\r\n /// The `useEffect` hook that creates an effect for React function components.\r\n /// This effect is executed *every time* the function component re-renders.\r\n ///\r\n /// To make the effect run only once, write: `React.useEffect(effect, [| |])` which explicitly states\r\n /// that this effect has no dependencies and should only run once on initial render.\r\n static member useEffect(effect: unit -> unit) : unit =\r\n ReactInterop.useEffect\r\n (fun _ ->\r\n effect()\r\n React.createDisposable(ignore))\r\n\r\n /// The `useEffect` hook that creates an effect for React function components. This effect takes a array of *dependencies*.\r\n /// Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\r\n /// you have to explicitly provide an empty array for the dependencies: `React.useEffect(effect, [| |])`.\r\n static member useEffect(effect: unit -> unit, dependencies: obj []) : unit =\r\n ReactInterop.useEffectWithDeps\r\n (fun _ ->\r\n effect()\r\n React.createDisposable(ignore))\r\n dependencies\r\n\r\n /// Can be used to display a label for custom hooks in React DevTools.\r\n static member useDebugValue(value: string) =\r\n ReactInterop.useDebugValueWithFormatter(value, id)\r\n\r\n /// Can be used to display a label for custom hooks in React DevTools.\r\n static member useDebugValue(value: 't, formatter: 't -> string) =\r\n ReactInterop.useDebugValueWithFormatter(value, formatter)\r\n\r\n /// \r\n /// The `useCallback` hook. Returns a memoized callback. Pass an inline callback and an array of dependencies.\r\n /// `useCallback` will return a memoized version of the callback that only changes if one of the dependencies has changed.\r\n /// \r\n /// A callback function to be memoized.\r\n /// An array of dependencies upon which the callback function depends.\r\n /// If not provided, defaults to empty array, representing dependencies that never change.\r\n static member useCallback(callbackFunction: 'a -> 'b, ?dependencies: obj array) =\r\n Interop.reactApi.useCallback callbackFunction (defaultArg dependencies [||])\r\n\r\n /// Returns a mutable ref object whose .current property is initialized to the passed argument (initialValue). The returned object will persist for the full lifetime of the component.\r\n ///\r\n /// Essentially, useRef is like a container that can hold a mutable value in its .current property.\r\n static member useRef(initialValue) = Interop.reactApi.useRef(initialValue)\r\n\r\n /// A specialized version of React.useRef() that creates a reference to an input element.\r\n ///\r\n /// Useful for controlling the internal properties and methods that element, for example to enable focus().\r\n static member useInputRef() : IRefValue = React.useRef(None)\r\n\r\n /// A specialized version of React.useRef() that creates a reference to a button element.\r\n static member useButtonRef() : IRefValue = React.useRef(None)\r\n\r\n /// A specialized version of React.useRef() that creates a reference to a generic HTML element.\r\n ///\r\n /// Useful for controlling the internal properties and methods that element, for integration with third-party libraries that require a Html element.\r\n static member useElementRef() : IRefValue = React.useRef(None)\r\n\r\n /// \r\n /// The `useMemo` hook. Returns a memoized value. Pass a \"create\" function and an array of dependencies.\r\n /// `useMemo` will only recompute the memoized value when one of the dependencies has changed.\r\n /// \r\n /// A create function returning a value to be memoized.\r\n /// An array of dependencies upon which the create function depends.\r\n /// If not provided, defaults to empty array, representing dependencies that never change.\r\n static member useMemo(createFunction: unit -> 'a, ?dependencies: obj array) =\r\n Interop.reactApi.useMemo createFunction (defaultArg dependencies [||])\r\n\r\n //\r\n // React.functionComponent\r\n //\r\n\r\n /// \r\n /// Creates a React function component from a function that accepts a \"props\" object and renders a result.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// A render function that returns an element.\r\n /// A function to derive a component key from the props.\r\n static member functionComponent(render: 'props -> ReactElement, ?withKey: 'props -> string) =\r\n Internal.functionComponent(render, ?withKey=withKey)\r\n\r\n /// \r\n /// Creates a React function component from a function that accepts a \"props\" object and renders a result.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// The component name to display in the React dev tools.\r\n /// A render function that returns an element.\r\n /// A function to derive a component key from the props.\r\n static member functionComponent(name: string, render: 'props -> ReactElement, ?withKey: 'props -> string) =\r\n Internal.functionComponent(render, name, ?withKey=withKey)\r\n\r\n /// \r\n /// Creates a React function component from a function that accepts a \"props\" object and renders a result.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// A render function that returns a list of elements.\r\n /// A function to derive a component key from the props.\r\n static member functionComponent(render: 'props -> #seq, ?withKey: 'props -> string) =\r\n Internal.functionComponent(render >> React.fragment, ?withKey=withKey)\r\n\r\n /// \r\n /// Creates a React function component from a function that accepts a \"props\" object and renders a result.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// A render function that returns a list of elements.\r\n /// The component name to display in the React dev tools.\r\n /// A function to derive a component key from the props.\r\n static member functionComponent(name: string, render: 'props -> #seq, ?withKey: 'props -> string) =\r\n Internal.functionComponent(render >> React.fragment, name, ?withKey=withKey)\r\n\r\n //\r\n // React.memo\r\n //\r\n\r\n /// \r\n /// `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\r\n /// By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// A render function or a React.functionComponent.\r\n /// A custom comparison function to use instead of React's default shallow compare.\r\n /// A function to derive a component key from the props.\r\n static member memo(render: 'props -> ReactElement, ?withKey: 'props -> string, ?areEqual: 'props -> 'props -> bool) =\r\n Internal.memo(render, ?areEqual=areEqual, ?withKey=withKey)\r\n\r\n /// \r\n /// `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\r\n /// By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// The component name to display in the React dev tools.\r\n /// A render function or a React.functionComponent.\r\n /// A custom comparison function to use instead of React's default shallow compare.\r\n /// A function to derive a component key from the props.\r\n static member memo(name: string, render: 'props -> ReactElement, ?withKey: 'props -> string, ?areEqual: 'props -> 'props -> bool) =\r\n Internal.memo(render, name, ?areEqual=areEqual, ?withKey=withKey)\r\n\r\n /// \r\n /// `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\r\n /// By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// A render function that returns a list of elements.\r\n /// A function to derive a component key from the props.\r\n /// A custom comparison function to use instead of React's default shallow compare.\r\n static member memo(render: 'props -> #seq, ?withKey: 'props -> string, ?areEqual: 'props -> 'props -> bool) =\r\n Internal.memo(render >> React.fragment, ?areEqual=areEqual, ?withKey=withKey)\r\n\r\n /// \r\n /// `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\r\n /// By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\r\n /// A component key can be provided in the props object, or a custom `withKey` function can be provided.\r\n /// \r\n /// The component name to display in the React dev tools.\r\n /// A render function that returns a list of elements.\r\n /// A function to derive a component key from the props.\r\n /// A custom comparison function to use instead of React's default shallow compare.\r\n static member memo(name: string, render: 'props -> #seq, ?withKey: 'props -> string, ?areEqual: 'props -> 'props -> bool) =\r\n Internal.memo(render >> React.fragment, name, ?areEqual=areEqual, ?withKey=withKey)\r\n\r\n //\r\n // React.useContext\r\n //\r\n\r\n /// \r\n /// Creates a Context object. When React renders a component that subscribes to this Context object\r\n /// it will read the current context value from the closest matching Provider above it in the tree.\r\n /// \r\n /// The component name to display in the React dev tools.\r\n /// A default value that is only used when a component does not have a matching Provider above it in the tree.\r\n static member createContext<'a>(?name: string, ?defaultValue: 'a) =\r\n let contextObject = Interop.reactApi.createContext (defaultArg defaultValue Fable.Core.JS.undefined<'a>)\r\n name |> Option.iter (fun name -> contextObject?displayName <- name)\r\n contextObject\r\n\r\n /// \r\n /// A Provider component that allows consuming components to subscribe to context changes.\r\n /// \r\n /// A context object returned from a previous React.createContext call.\r\n /// The context value to be provided to descendant components.\r\n /// A child element.\r\n static member contextProvider(contextObject: Fable.React.IContext<'a>, contextValue: 'a, child: ReactElement) : ReactElement =\r\n Interop.reactApi.createElement(contextObject?Provider, createObj [\"value\" ==> contextValue], [child])\r\n /// \r\n /// A Provider component that allows consuming components to subscribe to context changes.\r\n /// \r\n /// A context object returned from a previous React.createContext call.\r\n /// The context value to be provided to descendant components.\r\n /// A sequence of child elements.\r\n static member contextProvider(contextObject: Fable.React.IContext<'a>, contextValue: 'a, children: #seq) : ReactElement =\r\n Interop.reactApi.createElement(contextObject?Provider, createObj [\"value\" ==> contextValue], children)\r\n\r\n /// \r\n /// A Consumer component that subscribes to context changes.\r\n /// \r\n /// A context object returned from a previous React.createContext call.\r\n /// A render function that returns an element.\r\n static member contextConsumer(contextObject: Fable.React.IContext<'a>, render: 'a -> ReactElement) : ReactElement =\r\n Interop.reactApi.createElement(contextObject?Consumer, null, [!!render])\r\n /// \r\n /// A Consumer component that subscribes to context changes.\r\n /// \r\n /// A context object returned from a previous React.createContext call.\r\n /// A render function that returns a sequence of elements.\r\n static member contextConsumer(contextObject: Fable.React.IContext<'a>, render: 'a -> #seq) : ReactElement =\r\n Interop.reactApi.createElement(contextObject?Consumer, null, [!!(render >> React.fragment)])\r\n\r\n /// \r\n /// The `useContext` hook. Accepts a context object (the value returned from React.createContext) and returns the current context value for that context.\r\n /// The current context value is determined by the value prop of the nearest Provider component above the calling component in the tree.\r\n /// \r\n /// A context object returned from a previous React.createContext call.\r\n static member useContext(contextObject: Fable.React.IContext<'a>) = Interop.reactApi.useContext contextObject\r\n\r\n /// \r\n /// Creates a callback that keeps the same reference during the entire lifecycle of the component while having access to\r\n /// the current value of the dependencies on every call.\r\n ///\r\n /// This hook should only be used for (like a dispatch) functions that are not used to provide information during render.\r\n ///\r\n /// This is not a complete replacement for the `useCallback` hook. It returns a callback that does not need explicit\r\n /// dependency declarations and never causes a re-render.\r\n /// \r\n /// The function call.\r\n static member useCallbackRef(callback: ('a -> 'b)) =\r\n let lastRenderCallbackRef = React.useRef(callback)\r\n\r\n let callbackRef =\r\n React.useCallback((fun (arg: 'a) ->\r\n lastRenderCallbackRef.current(arg)\r\n ), [||])\r\n\r\n React.useLayoutEffect(fun () ->\r\n // render is commited - it's safe to update the callback\r\n lastRenderCallbackRef.current <- callback\r\n )\r\n\r\n callbackRef\r\n\r\n /// \r\n /// Just like React.useState except that the updater function uses the previous state of the state variable as input and allows you to compute the next value using it.\r\n /// This is extremely useful in cases where defining helpers functions inside the definition of a React function component would actually cache the initial value (because they become closures) during first render as opposed to using the current value after multiple render cycles.\r\n /// \r\n static member useStateWithUpdater (initial: 't) : ('t * (('t -> 't) -> unit)) = import \"useState\" \"react\"\r\n\r\n /// \r\n /// Forwards a given ref, allowing you to pass it further down to a child.\r\n /// \r\n /// A render function that returns an element.\r\n static member forwardRef(render: ('props * IRefValue<'t> -> ReactElement)) : ('props * IRefValue<'t> -> ReactElement) =\r\n let forwardRefType = Interop.reactApi.forwardRef(Func<'props,IRefValue<'t>,ReactElement> (fun props ref -> render(props,ref)))\r\n fun (props, ref) ->\r\n Interop.reactApi.createElement(forwardRefType, {| props = props; ref = ref |} |> JsInterop.toPlainJsObj)\r\n\r\n /// \r\n /// Forwards a given ref, allowing you to pass it further down to a child.\r\n /// \r\n /// The component name to display in the React dev tools.\r\n /// A render function that returns an element.\r\n static member forwardRef(name: string, render: ('props * IRefValue<'t> -> ReactElement)) : ('props * IRefValue<'t> -> ReactElement) =\r\n let forwardRefType = Interop.reactApi.forwardRef(Func<'props,IRefValue<'t>,ReactElement> (fun props ref -> render(props,ref)))\r\n render?displayName <- name\r\n fun (props, ref) ->\r\n Interop.reactApi.createElement(forwardRefType, {| props = props; ref = ref |} |> JsInterop.toPlainJsObj)\r\n\r\n /// \r\n /// Highlights potential problems in an application by enabling additional checks\r\n /// and warnings for descendants. As well as double rendering function components.\r\n ///\r\n /// This *does not do anything* in production mode. You do not need to hide it\r\n /// with compiler directives.\r\n /// \r\n /// The elements that will be rendered with additional\r\n /// checks and warnings.\r\n static member strictMode(children: ReactElement list) =\r\n Interop.reactApi.createElement(Interop.reactApi.StrictMode, None, children)\r\n\r\n /// \r\n /// Lets you define a component that is loaded dynamically. Which helps with code\r\n /// splitting.\r\n /// \r\n /// \r\n /// The dynamicImport of the component.\r\n ///\r\n /// Such as `let asyncComponent : JS.Promise ReactElement> = JsInterop.importDynamic \"./CodeSplitting.fs\"`.\r\n ///\r\n /// Where you would then pass in `asyncComponent`.\r\n /// \r\n /// The props to be passed to the component.\r\n static member lazy'<'t,'props>(dynamicImport: JS.Promise<'t>, props: 'props) =\r\n Interop.reactApi.createElement(Interop.reactApi.lazy'(fun () -> dynamicImport),props)\r\n /// \r\n /// Lets you define a component that is loaded dynamically. Which helps with code\r\n /// splitting.\r\n /// \r\n /// \r\n /// The dynamicImport of the component.\r\n ///\r\n /// Such as `let asyncComponent : JS.Promise ReactElement> = JsInterop.importDynamic \"./CodeSplitting.fs\"`.\r\n ///\r\n /// Where you would then pass in `fun () -> asyncComponent`.\r\n /// \r\n /// The props to be passed to the component.\r\n static member lazy'<'t,'props>(dynamicImport: unit -> JS.Promise<'t>, props: 'props) =\r\n Interop.reactApi.createElement(Interop.reactApi.lazy'(dynamicImport),props)\r\n\r\n /// \r\n /// Lets you specify a loading indicator whenever a child element is not yet ready\r\n /// to render.\r\n ///\r\n /// Currently this is only usable with `React.lazy'`.\r\n /// \r\n /// The elements that will be rendered within the suspense block.\r\n static member suspense(children: ReactElement list) =\r\n Interop.reactApi.createElement(Interop.reactApi.Suspense, {| fallback = Html.none |} |> JsInterop.toPlainJsObj, children)\r\n /// \r\n /// Lets you specify a loading indicator whenever a child element is not yet ready\r\n /// to render.\r\n ///\r\n /// Currently this is only usable with `React.lazy'`.\r\n /// \r\n /// The elements that will be rendered within the suspense block.\r\n /// The element that will be rendered while the children are loading.\r\n static member suspense(children: ReactElement list, fallback: ReactElement) =\r\n Interop.reactApi.createElement(Interop.reactApi.Suspense, {| fallback = fallback |} |> JsInterop.toPlainJsObj, children)\r\n\r\n /// \r\n /// Allows you to override the behavior of a given ref.\r\n ///\r\n /// \r\n /// The ref you want to override.\r\n /// A function that returns a new ref with changed behavior.\r\n static member useImperativeHandle(ref: IRefValue<'t>, createHandle: unit -> 't) =\r\n Interop.reactApi.useImperativeHandleNoDeps ref createHandle\r\n\r\n /// \r\n /// Lets you specify a loading indicator whenever a child element is not yet ready\r\n /// to render.\r\n ///\r\n /// Currently this is only usable with `React.lazy'`.\r\n /// \r\n /// The ref you want to override.\r\n /// A function that returns a new ref with changed behavior.\r\n /// An array of dependencies upon which the imperative handle function depends.\r\n static member useImperativeHandle(ref: IRefValue<'t>, createHandle: unit -> 't, dependencies: obj []) =\r\n Interop.reactApi.useImperativeHandle ref createHandle dependencies\r\n\r\n /// \r\n /// Creates a CancellationToken that is cancelled when a component is unmounted.\r\n /// \r\n static member inline useCancellationToken () =\r\n let cts = React.useRef(new System.Threading.CancellationTokenSource())\r\n let token = React.useRef(cts.current.Token)\r\n\r\n React.useEffectOnce(fun () ->\r\n React.createDisposable(fun () ->\r\n cts.current.Cancel()\r\n cts.current.Dispose()\r\n )\r\n )\r\n\r\n token\r\n\r\n[]\r\nmodule ReactOverloadMagic =\r\n type React with\r\n /// Creates a disposable instance by merging multiple IDisposables.\r\n static member inline createDisposable([] disposables: #IDisposable []) =\r\n React.createDisposable(fun () ->\r\n disposables\r\n |> Array.iter (fun d -> d.Dispose())\r\n )\r\n /// Creates a disposable instance by merging multiple IDisposable options.\r\n static member inline createDisposable([] disposables: #IDisposable option []) =\r\n React.createDisposable(fun () ->\r\n disposables\r\n |> Array.iter (Option.iter (fun d -> d.Dispose()))\r\n )\r\n /// Creates a disposable instance by merging multiple IDisposable refs.\r\n static member inline createDisposable([] disposables: IRefValue<#IDisposable> []) =\r\n React.createDisposable(fun () ->\r\n disposables\r\n |> Array.iter (fun d -> d.current.Dispose())\r\n )\r\n /// Creates a disposable instance by merging multiple IDisposable refs.\r\n static member inline createDisposable([] disposables: IRefValue<#IDisposable option> []) =\r\n React.createDisposable(fun () ->\r\n disposables\r\n |> Array.iter (fun d -> d.current |> Option.iter (fun d -> d.Dispose()))\r\n )\r\n\r\n /// The `useState` hook that create a state variable for React function components.\r\n static member useState<'t>(initial: 't) = Interop.reactApi.useState<'t,'t>(initial)\r\n","\r\n[]\r\nmodule Promise\r\n\r\n#nowarn \"1182\" // Unused values\r\n\r\nopen System\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\n\r\nlet inline private (!!) (x:obj): 'T = unbox x\r\n\r\n[]\r\n/// The promise function receives two other function parameters: success and fail\r\nlet create (f: ('T->unit)->(Exception->unit)->unit): JS.Promise<'T> = jsNative\r\n\r\n[ setTimeout(resolve, $0))\")>]\r\nlet sleep (ms: int): JS.Promise = jsNative\r\n\r\n[]\r\nlet lift<'T> (a: 'T): JS.Promise<'T> = jsNative\r\n\r\n/// Creates promise (in rejected state) with supplied reason.\r\nlet reject<'T> reason : JS.Promise<'T> = JS.Constructors.Promise.reject<'T> reason\r\n\r\n[]\r\nlet bind (a: 'T->JS.Promise<'R>) (pr: JS.Promise<'T>): JS.Promise<'R> = jsNative\r\n\r\n[]\r\nlet map (a: 'T->'R) (pr: JS.Promise<'T>): JS.Promise<'R> = jsNative\r\n\r\n[]\r\nlet iter (a: 'T->unit) (pr: JS.Promise<'T>): unit = jsNative\r\n\r\n[]\r\n/// This version of `catch` fakes a function returning just 'T, as opposed to `Promise<'T>`. If you need to return `Promise<'T>`, use `catchBind`.\r\nlet catch (fail: Exception->'T) (pr: JS.Promise<'T>): JS.Promise<'T> = jsNative\r\n\r\n[]\r\n/// This is a version of `catch` that fakes a function returning Promise<'T> as opposed to just 'T. If you need to return just 'T, use `catch`.\r\nlet catchBind (fail: Exception->JS.Promise<'T>) (pr: JS.Promise<'T>): JS.Promise<'T> = jsNative\r\n\r\n[]\r\n/// Used to catch errors at the end of a promise chain.\r\nlet catchEnd (fail: Exception->unit) (pr: JS.Promise<'T>): unit = jsNative\r\n\r\n[]\r\n/// A combination of `map/bind` and `catch/catchBind`, this function applies the `success` continuation when the input promise resolves successfully, or `fail` continuation when the input promise fails. Both continuations may return either naked value `'R` or another promise `Promise<'R>`. Use the erased-cast operator `!^` to cast values when returning, for example:\r\n/// ```\r\n/// somePromise |> Promise.either (fun x -> !^(string x)) (fun err -> ^!(Promise.lift err.Message))\r\n/// ```\r\nlet either (success: 'T->U2<'R, JS.Promise<'R>>) (fail: 'E->U2<'R, JS.Promise<'R>>) (pr: JS.Promise<'T>): JS.Promise<'R> = jsNative\r\n\r\n[]\r\nlet eitherEnd (success: 'T->unit) (fail: 'E->unit) (pr: JS.Promise<'T>): unit = jsNative\r\n\r\n[]\r\nlet start (pr: JS.Promise<'T>): unit = jsNative\r\n\r\n[]\r\nlet tryStart (fail: Exception->unit) (pr: JS.Promise<'T>): unit = jsNative\r\n\r\n[]\r\nlet Parallel (pr: seq>): JS.Promise<'T[]> = jsNative\r\n\r\n[]\r\nlet all (pr: seq>): JS.Promise<'T[]> = jsNative\r\n\r\nlet result (a: JS.Promise<'A>): JS.Promise> =\r\n either (U2.Case1 << Ok) (U2.Case1 << Error) a\r\n\r\nlet mapResult (fn: 'A -> 'B) (a: JS.Promise>): JS.Promise> =\r\n a |> map (Result.map fn)\r\n\r\nlet bindResult (fn: 'A -> JS.Promise<'B>) (a: JS.Promise>): JS.Promise> =\r\n a |> bind (fun a ->\r\n match a with\r\n | Ok a ->\r\n result (fn a)\r\n | Error e ->\r\n lift (Error e))\r\n\r\nlet mapResultError (fn: 'B -> 'C) (a: JS.Promise>): JS.Promise> =\r\n a |> map (Result.mapError fn)\r\n\r\nlet tap (fn: 'A -> unit) (a: JS.Promise<'A>): JS.Promise<'A> =\r\n a |> map (fun x -> fn x; x)\r\n\r\ntype PromiseBuilder() =\r\n []\r\n member x.Bind(p: JS.Promise<'T>, f: 'T->JS.Promise<'R>): JS.Promise<'R> = jsNative\r\n\r\n [ $2)\")>]\r\n member x.Combine(p1: JS.Promise, p2: JS.Promise<'T>): JS.Promise<'T> = jsNative\r\n\r\n member x.For(seq: seq<'T>, body: 'T->JS.Promise): JS.Promise =\r\n // (lift (), seq)\r\n // ||> Seq.fold (fun p a ->\r\n // bind (fun () -> body a) p)\r\n let mutable p = lift ()\r\n for a in seq do\r\n p <- !!p?``then``(fun () -> body a)\r\n p\r\n\r\n []\r\n member x.For(p: JS.Promise<'T>, f: 'T->JS.Promise<'R>): JS.Promise<'R> = jsNative\r\n\r\n member x.While(guard, p): JS.Promise =\r\n if guard()\r\n then bind (fun () -> x.While(guard, p)) p\r\n else lift()\r\n\r\n []\r\n member x.Return(a: 'T): JS.Promise<'T> = jsNative\r\n\r\n []\r\n member x.ReturnFrom(p: JS.Promise<'T>): JS.Promise<'T> = jsNative\r\n\r\n []\r\n member x.Zero(): JS.Promise = jsNative\r\n\r\n member x.TryFinally(p: JS.Promise<'T>, compensation: unit->unit): JS.Promise<'T> =\r\n either (fun (x: 'T) -> compensation(); U2.Case1 x) (fun er -> compensation(); raise !!er) p\r\n\r\n []\r\n member x.TryWith(p: JS.Promise<'T>, catchHandler: Exception->JS.Promise<'T>): JS.Promise<'T> = jsNative\r\n\r\n member x.Delay(generator: unit->JS.Promise<'T>): JS.Promise<'T> =\r\n !!createObj[\r\n \"then\" ==> fun f1 f2 ->\r\n try generator()?``then``(f1,f2)\r\n with er ->\r\n if box f2 = null\r\n then !!JS.Constructors.Promise.reject(er)\r\n else\r\n try !!JS.Constructors.Promise.resolve(f2(er))\r\n with er -> !!JS.Constructors.Promise.reject(er)\r\n \"catch\" ==> fun f ->\r\n try generator()?catch(f)\r\n with er ->\r\n try !!JS.Constructors.Promise.resolve(f(er))\r\n with er -> !!JS.Constructors.Promise.reject(er)\r\n ]\r\n\r\n member x.Run(p:JS.Promise<'T>): JS.Promise<'T> =\r\n create (fun success fail ->\r\n try\r\n let p : JS.Promise<'T> = !!JS.Constructors.Promise.resolve(p)\r\n p?``then``(success, fail)\r\n with\r\n er -> fail(er)\r\n )\r\n\r\n member x.Using<'T, 'R when 'T :> IDisposable>(resource: 'T, binder: 'T->JS.Promise<'R>): JS.Promise<'R> =\r\n x.TryFinally(binder(resource), fun () -> resource.Dispose())\r\n\r\n [ $3(a,b))\")>]\r\n []\r\n member x.Merge(a: JS.Promise<'T1>, b: JS.Promise<'T2>, [] resultSelector : 'T1 -> 'T2 -> 'R): JS.Promise<'R> = jsNative\r\n","[]\r\nmodule PromiseImpl\r\n\r\nlet promise = Promise.PromiseBuilder()","namespace Feliz.UseElmish\r\n\r\nopen Feliz\r\nopen Elmish\r\nopen Fable.Core\r\n\r\n[]\r\ntype internal RingState<'item> =\r\n | Writable of wx:'item array * ix:int\r\n | ReadWritable of rw:'item array * wix:int * rix:int\r\n\r\ntype internal RingBuffer<'item>(size) =\r\n let doubleSize ix (items: 'item array) =\r\n seq { yield! items |> Seq.skip ix\r\n yield! items |> Seq.take ix\r\n for _ in 0..items.Length do\r\n yield Unchecked.defaultof<'item> }\r\n |> Array.ofSeq\r\n\r\n let mutable state : 'item RingState =\r\n Writable (Array.zeroCreate (max size 10), 0)\r\n\r\n member _.Pop() =\r\n match state with\r\n | ReadWritable (items, wix, rix) ->\r\n let rix' = (rix + 1) % items.Length\r\n match rix' = wix with\r\n | true ->\r\n state <- Writable(items, wix)\r\n | _ ->\r\n state <- ReadWritable(items, wix, rix')\r\n Some items.[rix]\r\n | _ ->\r\n None\r\n\r\n member _.Push (item:'item) =\r\n match state with\r\n | Writable (items, ix) ->\r\n items.[ix] <- item\r\n let wix = (ix + 1) % items.Length\r\n state <- ReadWritable(items, wix, ix)\r\n | ReadWritable (items, wix, rix) ->\r\n items.[wix] <- item\r\n let wix' = (wix + 1) % items.Length\r\n match wix' = rix with\r\n | true ->\r\n state <- ReadWritable(items |> doubleSize rix, items.Length, 0)\r\n | _ ->\r\n state <- ReadWritable(items, wix', rix)\r\n\r\n[]\r\nmodule UseElmishExtensions =\r\n let inline internal getDisposable (record: 'State) =\r\n match box record with\r\n | :? System.IDisposable as disposable -> Some disposable\r\n | _ -> None\r\n\r\n type React with\r\n static member useElmish<'State,'Msg> (init: 'State * Cmd<'Msg>, update: 'Msg -> 'State -> 'State * Cmd<'Msg>, dependencies: obj[]) =\r\n let state = React.useRef(fst init)\r\n let ring = React.useRef(RingBuffer(10))\r\n let childState, setChildState = React.useState(fst init)\r\n let token = React.useCancellationToken()\r\n let setChildState () = \r\n JS.setTimeout(fun () ->\r\n if not token.current.IsCancellationRequested then\r\n setChildState state.current\r\n ) 0 |> ignore\r\n\r\n let rec dispatch (msg: 'Msg) =\r\n promise {\r\n let mutable nextMsg = Some msg\r\n\r\n while nextMsg.IsSome && not (token.current.IsCancellationRequested) do\r\n let msg = nextMsg.Value\r\n let (state', cmd') = update msg state.current\r\n cmd' |> List.iter (fun sub -> sub dispatch)\r\n nextMsg <- ring.current.Pop()\r\n state.current <- state'\r\n setChildState()\r\n }\r\n |> Promise.start\r\n\r\n let dispatch = React.useCallbackRef(dispatch)\r\n\r\n React.useEffect((fun () -> \r\n React.createDisposable(fun () -> \r\n getDisposable state.current \r\n |> Option.iter (fun o -> o.Dispose())\r\n )\r\n ), dependencies)\r\n\r\n React.useEffect((fun () ->\r\n state.current <- fst init\r\n setChildState()\r\n\r\n snd init\r\n |> List.iter (fun sub -> sub dispatch)\r\n ), dependencies)\r\n\r\n React.useEffect(fun () -> ring.current.Pop() |> Option.iter dispatch)\r\n\r\n (childState, dispatch)\r\n\r\n static member inline useElmish<'State,'Msg> (init: 'State * Cmd<'Msg>, update: 'Msg -> 'State -> 'State * Cmd<'Msg>) =\r\n React.useElmish(init, update, [||])\r\n\r\n static member useElmish<'State,'Msg> (init: unit -> 'State * Cmd<'Msg>, update: 'Msg -> 'State -> 'State * Cmd<'Msg>, dependencies: obj[]) =\r\n let init = React.useMemo(init, dependencies)\r\n\r\n React.useElmish(init, update, dependencies)\r\n\r\n static member inline useElmish<'State,'Msg> (init: unit -> 'State * Cmd<'Msg>, update: 'Msg -> 'State -> 'State * Cmd<'Msg>) =\r\n React.useElmish(init, update, [||])\r\n","[]\nmodule HospitalsChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Types\nopen Data.Patients\nopen Data.Hospitals\nopen Highcharts\n\n\ntype Scope =\n | Totals\n | Projection\n | Facility of FacilityCode\n\ntype State = {\n scaleType : ScaleType\n facData : FacilityAssets []\n patientsData: PatientsStats []\n error: string option\n facilities: FacilityCode list\n scope: Scope\n RangeSelectionButtonIndex: int\n } with\n static member initial =\n {\n scaleType = Linear\n facData = [||]\n patientsData = [||]\n error = None\n facilities = []\n scope = Totals\n RangeSelectionButtonIndex = 1\n }\n static member switchBreakdown breakdown state = { state with scope = breakdown }\n\ntype Msg =\n | ConsumeHospitalsData of Result\n | ConsumePatientsData of Result\n | ConsumeServerError of exn\n | ScaleTypeChanged of ScaleType\n | SwitchBreakdown of Scope\n | RangeSelectionChanged of int\n\nlet init () : State * Cmd =\n let cmd = Cmd.OfAsync.either getOrFetch () ConsumeHospitalsData ConsumeServerError\n let cmd2 = Cmd.OfAsync.either Data.Patients.getOrFetch () ConsumePatientsData ConsumeServerError\n State.initial, (cmd @ cmd2)\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ConsumeHospitalsData (Ok data) ->\n { state with\n facData = data\n facilities = data |> getSortedFacilityCodes\n } |> State.switchBreakdown state.scope, Cmd.none\n | ConsumeHospitalsData (Error err) ->\n { state with error = Some err }, Cmd.none\n\n | ConsumePatientsData (Ok data) ->\n { state with\n patientsData = data\n } |> State.switchBreakdown state.scope, Cmd.none\n | ConsumePatientsData (Error err) ->\n { state with error = Some err }, Cmd.none\n\n | ConsumeServerError ex ->\n { state with error = Some ex.Message }, Cmd.none\n | ScaleTypeChanged scaleType ->\n { state with scaleType = scaleType }, Cmd.none\n | SwitchBreakdown breakdown ->\n (state |> State.switchBreakdown breakdown), Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet getAllScopes state = seq {\n yield Totals, I18N.t \"charts.hospitals.allHospitals\"\n yield Projection, I18N.t \"charts.hospitals.projection\"\n for fcode in state.facilities do\n let _, name = fcode |> facilitySeriesInfo\n yield Facility fcode, name\n}\n\n\nlet zeroToNone value =\n match value with\n | None -> None\n | Some x ->\n if x = 0 then None\n else Some x\n\nlet extractFacilityDataPoint (scope: Scope) (atype:AssetType) (ctype: CountType) : (FacilityAssets -> (JsTimestamp * int option)) =\n match scope with\n | Totals\n | Projection ->\n fun (fa: FacilityAssets) -> fa.JsDate12h, (fa.overall |> Assets.getValue ctype atype)\n | Facility fcode ->\n fun fa ->\n let value =\n fa.perHospital\n |> Map.tryFind fcode\n |> Option.bind (Assets.getValue ctype atype)\n |> zeroToNone\n fa.JsDate12h, value\n\nlet extractPatientDataPoint scope cType : (PatientsStats -> (JsTimestamp * int option)) =\n let extractTotalsCount : TotalPatientStats -> int option =\n match cType with\n | Beds -> fun ps -> ps.inHospital.today\n | Icus -> fun ps -> ps.icu.today\n | Vents -> fun _ -> failwithf \"no vents in data\"\n let extractFacilityCount : FacilityPatientStats -> int option =\n match cType with\n | Beds -> fun ps -> ps.inHospital.today\n | Icus -> fun ps -> ps.icu.today\n | Vents -> fun _ -> failwithf \"no vents in data\"\n\n match scope with\n | Totals ->\n fun (fa: PatientsStats) -> fa.JsDate12h, (fa.total |> extractTotalsCount)\n | Projection ->\n fun (fa: PatientsStats) -> fa.JsDate12h, (fa.total |> extractTotalsCount)\n | Facility fcode ->\n fun (fa: PatientsStats) ->\n let value =\n fa.facilities\n |> Map.tryFind fcode\n |> Option.bind extractFacilityCount\n |> zeroToNone\n fa.JsDate12h, value\n\n\nlet renderChartOptions (state : State) dispatch =\n\n let projectDays = 40\n\n let yAxes = [|\n {|\n index = 0\n height = \"55%\"; top = \"0%\"\n offset = 0\n ``type`` = if state.scaleType=Linear then \"linear\" else \"logarithmic\"\n min = if state.scaleType=Linear then None else Some 1.0\n //floor = if scaleType=Linear then None else Some 1.0\n opposite = true // right side\n title = pojo {| text = I18N.t \"charts.hospitals.bedsShort\" |} // \"oseb\" |}\n //showFirstLabel = false\n tickInterval = if state.scaleType=Linear then None else Some 0.25\n gridZIndex = -1\n visible = true\n plotLines=[| {| value=0; color=\"black\"; |} |]\n |}\n {|\n index = 1\n height = \"40%\"; top = \"60%\"\n offset = 0\n ``type`` = if state.scaleType=Linear then \"linear\" else \"logarithmic\"\n min = if state.scaleType=Linear then None else Some 1.0\n //floor = if scaleType=Linear then None else Some 1.0\n opposite = true // right side\n title = pojo {| text = I18N.t \"charts.hospitals.bedsICUShort\" |} // \"oseb\" |}\n //showFirstLabel = false\n tickInterval = if state.scaleType=Linear then None else Some 0.25\n gridZIndex = -1\n visible = true\n plotLines=[| {| value=0; color=\"black\"; |} |]\n |}\n |]\n let getYAxis = function\n | Beds -> 0\n | Icus\n | Vents -> 1\n\n\n let extendFacilitiesData (data: ((JsTimestamp*option)[])) =\n match data with\n | [||] -> data\n | _ ->\n let startDate, point = data.[data.Length-1]\n //printfn \"xy %A\" (startDate, point)\n match point with\n | None -> data\n | Some 0 -> data\n | _ ->\n let extra = [| for i in 1..projectDays+1 -> startDate + 86400000.0*float i, point |]\n Array.append data extra\n\n let renderFacilitiesSeries (scope: Scope) (aType:AssetType) (cType: CountType) scaleBy color dash name =\n let renderPoint =\n match scaleBy with\n | 1.0 -> extractFacilityDataPoint scope aType cType\n | k ->\n let scale = fun (ts,x) -> ts, x |> Option.map (fun n -> float n * k |> int)\n extractFacilityDataPoint scope aType cType >> scale\n\n {|\n //visible = state.activeSeries |> Set.contains series\n ``type``=\"line\"\n color = color\n name = name\n dashStyle = dash |> DashStyle.toString\n showInLegend = true\n data =\n state.facData\n |> Seq.map renderPoint\n |> Seq.skipWhile (function\n | _, None -> true\n | _, Some 0 -> true\n | _ -> false)\n |> Array.ofSeq\n |> if scope=Projection then extendFacilitiesData else id\n yAxis = getYAxis aType\n options = pojo {| dataLabels = false |}\n |}\n |> pojo\n\n\n let renderPatientsProjection (scope: Scope) (aType:AssetType) color dash growthFactor limit name =\n let startDate, point =\n match state.patientsData with\n | [||] -> DateTime.Now |> jsTime, None\n | data -> data.[data.Length-1] |> extractPatientDataPoint scope aType\n {|\n ``type``=\"line\"\n color = color\n name = name\n showInLegend = false\n dashStyle = dash |> DashStyle.toString\n //lineWidth = \"1\"\n data =\n [| for i in 1..projectDays+1 do\n let k = Math.Pow(growthFactor,float i)\n match point with\n | Some 0\n | None -> ()\n | Some n ->\n let value = k * float n |> int\n if value < limit then\n yield startDate + 86400000.0*float i, point |> Option.map (fun n -> k * float n |> int)\n |]\n yAxis = getYAxis aType\n |}\n |> pojo\n\n let renderPatientsSeries (scope: Scope) (aType) color dash name =\n {|\n ``type``=\"spline\"\n color = color\n name = name\n dashStyle = dash |> DashStyle.toString\n data =\n state.patientsData\n |> Seq.map (extractPatientDataPoint scope aType)\n |> Seq.skipWhile (snd >> Option.isNone)\n |> Array.ofSeq\n yAxis = getYAxis aType\n |}\n |> pojo\n\n let growthFactor nDays =\n Math.Exp(Math.Log 2.0 / float nDays)\n\n let series = [|\n let gf7, gf14, gf21 = growthFactor 7, growthFactor 14, growthFactor 21\n\n let clr = \"#444\"\n if state.scope = Projection then\n yield renderFacilitiesSeries state.scope Beds Max 1.0 clr Dash (I18N.t \"charts.hospitals.bedsMax\")\n else\n yield pojo {| showInLegend = false; data=[||] |}\n\n yield renderFacilitiesSeries state.scope Beds Total 1.0 clr Solid (I18N.t \"charts.hospitals.bedsAll\")\n yield renderFacilitiesSeries state.scope Beds Total 0.7 \"#777\" Dash (I18N.t \"charts.hospitals.beds70\")\n //yield renderFacilitiesSeries state.scope Beds Free clr ShortDot \"Postelje, proste\"\n //yield renderFacilitiesSeries state.scope Beds Occupied clr Solid \"Postelje, zasedene\"\n yield renderPatientsSeries state.scope Beds clr Solid (I18N.t \"charts.hospitals.bedsFull\")\n\n let clr = \"#c44\"\n //yield renderFacilitiesSeries state.scope Icus Max clr Dash \"Intenzivne, maksimalno\"\n yield renderFacilitiesSeries state.scope Icus Total 1.0 clr Solid (I18N.t \"charts.hospitals.bedsICUAll\")\n yield renderFacilitiesSeries state.scope Icus Total 0.7 \"#c88\" Dash (I18N.t \"charts.hospitals.bedsICU70\")\n //yield renderFacilitiesSeries state.scope Icus Occupied clr Solid \"Intenzivne, zasedene\"\n yield renderPatientsSeries state.scope Icus clr Solid (I18N.t \"charts.hospitals.bedsICUFull\")\n if state.scope = Projection then\n let clr = \"#888\"\n yield renderPatientsProjection state.scope Beds clr ShortDash gf7 1100 (I18N.t \"charts.hospitals.projection7\")\n yield renderPatientsProjection state.scope Beds clr ShortDash gf14 1100 (I18N.t \"charts.hospitals.projection14\")\n yield renderPatientsProjection state.scope Beds clr ShortDash gf21 1100 (I18N.t \"charts.hospitals.projection21\")\n\n let clr = \"#c88\"\n yield renderPatientsProjection state.scope Icus clr ShortDash gf7 130 (I18N.t \"charts.hospitals.projection7\")\n yield renderPatientsProjection state.scope Icus clr ShortDash gf14 130 (I18N.t \"charts.hospitals.projection14\")\n yield renderPatientsProjection state.scope Icus clr ShortDash gf21 130 (I18N.t \"charts.hospitals.projection21\")\n\n\n //let clr = \"#4ad\"\n //yield renderFacilitiesSeries state.scope Vents Total clr Dash \"Respiratorji, vsi\"\n //yield renderFacilitiesSeries state.scope Vents Occupied clr Solid \"Respiratorji, v uporabi\"\n |]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let baseOptions =\n basicChartOptions\n state.scaleType \"hospitals-chart\"\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n {| baseOptions with\n yAxis = yAxes\n series = series\n legend = pojo\n {|\n enabled = Some true\n title = \"\"\n align = \"left\"\n verticalAlign = \"top\"\n borderColor = \"#ddd\"\n borderWidth = 1\n //labelFormatter = string //fun series -> series.name\n layout = \"vertical\"\n floating = true\n x = 20\n y = 30\n backgroundColor = \"rgba(255,255,255,0.5)\"\n |}\n xAxis = baseOptions.xAxis |> Array.map (fun xAxis ->\n if false //state.scope = Projection\n then\n {| xAxis with\n plotLines=[| {| value=jsTime <| DateTime.Now; label=None |} |]\n plotBands=[|\n {| ``from``=jsTime <| DateTime(2020,2,29);\n ``to``=jsTime <| DateTime.Now\n color=\"transparent\"\n label={| align=\"center\"; text=I18N.t \"charts.hospitals.data\" |}\n |}\n {| ``from``=jsTime <| DateTime.Today;\n ``to``=jsTime <| DateTime(2020,3,20) + TimeSpan.FromDays (float projectDays)\n color=\"transparent\"\n label={| align=\"center\"; text=(I18N.t \"charts.hospitals.projection\") |}\n |}\n |]\n |}\n else {| xAxis with plotLines=[||]; plotBands=[||] |}\n )\n plotOptions = pojo\n {|\n spline = pojo {| dataLabels = pojo {| enabled = true |} |}\n line = pojo {| dataLabels = pojo {| enabled = false |}; marker = pojo {| enabled = false |} |}\n |}\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> chartFromWindow\n ]\n ]\n\nlet renderTable (state: State) dispatch =\n\n let getFacilityDp (breakdown: Scope) (atype:AssetType) (ctype: CountType) =\n let renderPoint = extractFacilityDataPoint breakdown atype ctype\n match state.facData with\n | [||]\n | [| _ |] -> None\n | data ->\n seq {\n for i = data.Length-1 downto data.Length / 2 do\n yield data.[i]\n }\n |> Seq.map (renderPoint >> snd)\n |> Seq.skipWhile Option.isNone\n |> Seq.take 1\n |> Seq.tryExactlyOne\n |> Option.flatten\n\n let getPatientsDp (breakdown: Scope) (atype:AssetType) =\n let renderPoint = extractPatientDataPoint breakdown atype\n match state.patientsData with\n | [||]\n | [| _ |] -> None\n | data ->\n seq {\n yield data.[data.Length-1]\n yield data.[data.Length-2]\n }\n |> Seq.map (renderPoint >> snd)\n |> Seq.skipWhile Option.isNone\n |> Seq.take 1\n |> Seq.tryExactlyOne\n |> Option.flatten\n\n let renderFacilityCells scope (facilityName: string) = [\n yield Html.th [\n prop.className \"text-left\"\n prop.text facilityName\n ]\n\n let numericCell (pt: int option) =\n Html.td [ prop.text (pt |> Option.map string |> Option.defaultValue \"\") ]\n\n // postelje\n let cur = getPatientsDp scope Beds\n let total = getFacilityDp scope Beds Total\n //let free = getFree cur total\n let free = getFacilityDp scope Beds Free\n yield free |> numericCell\n yield cur |> numericCell\n yield total |> numericCell\n yield getFacilityDp scope Beds Max |> numericCell\n // icu\n let cur = getPatientsDp scope Icus\n let total = getFacilityDp scope Icus Total\n //let free = getFree cur total\n let free = getFacilityDp scope Icus Free\n yield free |> numericCell\n yield cur |> numericCell\n yield total |> numericCell\n yield getFacilityDp scope Icus Max |> numericCell\n // resp\n //let cur = getPatientsDp scope Vents\n let cur = getFacilityDp scope Vents Occupied\n let total = getFacilityDp scope Vents Total\n //let free = getFree cur total\n let free = getFacilityDp scope Vents Free\n yield free |> numericCell\n yield cur |> numericCell\n yield total |> numericCell\n yield Html.td []\n ]\n\n Html.table [\n prop.className \"facilities-navigate b-table-sticky-header b-table table-striped table-hover table-bordered text-lg-right\"\n prop.style [ style.width (length.percent 100.0); style.fontSize 16 ]\n prop.children [\n Html.thead [\n prop.children [\n Html.tableRow [\n prop.className \"text-center\"\n prop.children [\n Html.th []\n Html.th [ prop.text (I18N.t \"charts.hospitals.bedsShort\"); prop.colSpan 4 ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.bedsICUShort\"); prop.colSpan 4 ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.ventilators\"); prop.colSpan 4 ]\n ]\n ]\n Html.tableRow [\n prop.children [\n Html.th []\n // postelje\n Html.th [ prop.text (I18N.t \"charts.hospitals.empty\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.full\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.all\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.max\") ]\n // icu\n Html.th [ prop.text (I18N.t \"charts.hospitals.empty\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.full\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.all\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.max\") ]\n // vents\n Html.th [ prop.text (I18N.t \"charts.hospitals.empty\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.full\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.all\") ]\n Html.th [ prop.text (I18N.t \"charts.hospitals.max\") ]\n ]\n ]\n ]\n ]\n Html.tbody [\n prop.children [\n for scope, facilityName in getAllScopes state do\n if scope <> Projection then\n yield Html.tableRow [\n yield prop.children (renderFacilityCells scope facilityName)\n if scope = state.scope then\n yield prop.className \"current highlight\" // bg-light\"\n yield prop.style [\n style.fontWeight.bold;\n style.cursor.defaultCursor\n style.backgroundColor \"#ccc\"\n ]\n else\n yield prop.onClick (fun _ -> SwitchBreakdown scope |> dispatch)\n yield prop.style [ style.cursor.pointer ]\n ]\n ]\n ]\n ]\n ]\n\n\nlet renderScopeSelector state scope (name:string) onClick =\n Html.div [\n prop.onClick onClick\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (state.scope = scope, \"metric-selector--selected\") ]\n prop.text name\n ]\n\nlet renderBreakdownSelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n getAllScopes state\n |> Seq.map (fun (scope,name) ->\n renderScopeSelector state scope name (fun _ -> SwitchBreakdown scope |> dispatch)\n ) ) ]\n\nlet render (state : State) dispatch =\n match state.facData, state.error with\n | [||], None -> Html.div [ Utils.renderLoading ]\n | _, Some err -> Html.div [ Utils.renderErrorLoading err ]\n | _, None ->\n Html.div [\n Utils.renderChartTopControlRight\n (Utils.renderScaleSelector\n state.scaleType (ScaleTypeChanged >> dispatch))\n\n renderChartContainer state dispatch\n //Html.div [ prop.style [ style.height 10 ] ]\n renderBreakdownSelectors state dispatch\n Html.div [\n prop.style [ style.overflow.scroll ]\n prop.children [\n renderTable state dispatch\n ]\n ]\n ]\n\nlet hospitalsChart () =\n React.elmishComponent(\"HospitalsChart\", init (), update, render)\n","namespace Elmish.React\n\nopen Fable.React\nopen Elmish\n\ntype LazyProps<'model> = {\n model:'model\n render:unit->ReactElement\n equal:'model->'model->bool\n}\n\nmodule Components =\n type LazyView<'model>(props) =\n inherit Component,obj>(props)\n\n override this.shouldComponentUpdate(nextProps, _nextState) =\n not <| this.props.equal this.props.model nextProps.model\n\n override this.render () =\n this.props.render ()\n\n[]\nmodule Common =\n /// Avoid rendering the view unless the model has changed.\n /// equal: function to compare the previous and the new states\n /// view: function to render the model\n /// state: new state to render\n let lazyViewWith (equal:'model->'model->bool)\n (view:'model->ReactElement)\n (state:'model) =\n ofType,_,_>\n { render = fun () -> view state\n equal = equal\n model = state }\n []\n\n /// Avoid rendering the view unless the model has changed.\n /// equal: function to compare the previous and the new states\n /// view: function to render the model using the dispatch\n /// state: new state to render\n /// dispatch: dispatch function\n let lazyView2With (equal:'model->'model->bool)\n (view:'model->'msg Dispatch->ReactElement)\n (state:'model)\n (dispatch:'msg Dispatch) =\n ofType,_,_>\n { render = fun () -> view state dispatch\n equal = equal\n model = state }\n []\n\n /// Avoid rendering the view unless the model has changed.\n /// equal: function to compare the previous and the new model (a tuple of two states)\n /// view: function to render the model using the dispatch\n /// state1: new state to render\n /// state2: new state to render\n /// dispatch: dispatch function\n let lazyView3With (equal:_->_->bool) (view:_->_->_->ReactElement) state1 state2 (dispatch:'msg Dispatch) =\n ofType,_,_>\n { render = fun () -> view state1 state2 dispatch\n equal = equal\n model = (state1,state2) }\n []\n\n /// Avoid rendering the view unless the model has changed.\n /// view: function of model to render the view\n let lazyView (view:'model->ReactElement) =\n lazyViewWith (=) view\n\n /// Avoid rendering the view unless the model has changed.\n /// view: function of two arguments to render the model using the dispatch\n let lazyView2 (view:'model->'msg Dispatch->ReactElement) =\n lazyView2With (=) view\n\n /// Avoid rendering the view unless the model has changed.\n /// view: function of three arguments to render the model using the dispatch\n let lazyView3 (view:_->_->_->ReactElement) =\n lazyView3With (=) view\n\n\n","[]\nmodule MetricsComparisonChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Highcharts\nopen Types\n\nopen Data.Patients\n\nlet chartText = I18N.chartText \"metricsComparison\"\n\ntype MetricType =\n | Active\n | Today\n | ToDate\n\ntype FullMetricType = {\n MetricType: MetricType\n IsAveraged: bool\n}\n with\n member this.Name =\n match this.MetricType, this.IsAveraged with\n | Active, _ -> chartText \"showActive\"\n | Today, false -> chartText \"showToday\"\n | Today, true -> chartText \"show7DaysAverage\"\n | ToDate, _ -> chartText \"showToDate\"\n\nlet availableMetricTypes =\n [ { MetricType = Active; IsAveraged = false }\n { MetricType = Today; IsAveraged = false }\n { MetricType = ToDate; IsAveraged = false }\n { MetricType = Today; IsAveraged = true } ]\n\ntype Metric =\n | PerformedTestsToday\n | PerformedTestsToDate\n | ConfirmedCasesToday\n | ConfirmedCasesToDate\n | ActiveCases\n | RecoveredToDate\n | HospitalIn\n | HospitalOut\n | HospitalToday\n | HospitalToDate\n | HospitalOutToDate\n | ICUIn\n | ICUOut\n | ICUToday\n | ICUToDate\n | VentilatorIn\n | VentilatorOut\n | VentilatorToday\n | VentilatorToDate\n | DeceasedToday\n | DeceasedToDate\n | VacAdministeredToday\n | VacAdministeredToDate\n | VacAdministered2Today\n | VacAdministered2ToDate\n with\n static member UseStatsData metric =\n [PerformedTestsToday; PerformedTestsToDate; ConfirmedCasesToday\n ConfirmedCasesToDate; ActiveCases; RecoveredToDate\n VacAdministeredToday; VacAdministeredToDate; VacAdministered2Today; VacAdministered2ToDate]\n |> List.contains metric\n\ntype MetricCfg = {\n Metric: Metric\n Color : string\n Visible : bool\n Type : MetricType\n Id: string\n}\n\ntype Metrics = MetricCfg list\n\nmodule Metrics =\n let initial = [\n { Metric=ActiveCases; Color=\"#dba51d\"; Visible=true; Type=Active; Id=\"activeCases\" }\n { Metric=HospitalToday; Color=\"#be7A2a\"; Visible=true; Type=Active; Id=\"hospitalized\" }\n { Metric=ICUToday; Color=\"#d96756\"; Visible=true; Type=Active; Id=\"icu\" }\n // SLO-spec { Metric=VentilatorToday; Color=\"#bf5747\"; Visible=true; Type=Active; Id=\"ventilator\" }\n { Metric=PerformedTestsToday; Color=\"#19aebd\"; Visible=false; Type=Today; Id=\"testsPerformed\" }\n { Metric=ConfirmedCasesToday; Color=\"#bda506\"; Visible=true; Type=Today; Id=\"confirmedCases\" }\n { Metric=VacAdministeredToday; Color=\"#189a73\"; Visible=true; Type=Today; Id=\"vaccinationAdministered\" }\n { Metric=VacAdministered2Today; Color=\"#0e5842\"; Visible=true; Type=Today; Id=\"vaccinationAdministered2nd\" }\n // SLO-spec { Metric=HospitalIn; Color=\"#be7A2a\"; Visible=true; Type=Today; Id=\"hospitalAdmitted\" }\n // SLO-spec { Metric=HospitalOut; Color=\"#8cd4b2\"; Visible=false; Type=Today; Id=\"hospitalDischarged\" }\n // SLO-spec { Metric=ICUIn; Color=\"#d96756\"; Visible=true; Type=Today; Id=\"icuAdmitted\" }\n // SLO-spec { Metric=ICUOut; Color=\"#ffb4a2\"; Visible=false; Type=Today; Id=\"icuDischarged\" }\n // SLO-spec { Metric=VentilatorIn; Color=\"#bf5747\"; Visible=true; Type=Today; Id=\"ventilatorAdmitted\" }\n // SLO-spec { Metric=VentilatorOut; Color=\"#d99a91\"; Visible=false; Type=Today; Id=\"ventilatorDischarged\" }\n { Metric=DeceasedToday; Color=\"#000000\"; Visible=true; Type=Today; Id=\"deceased\" }\n { Metric=PerformedTestsToDate; Color=\"#19aebd\"; Visible=false; Type=ToDate; Id=\"testsPerformed\" }\n { Metric=ConfirmedCasesToDate; Color=\"#bda506\"; Visible=true; Type=ToDate; Id=\"confirmedCases\" }\n { Metric=RecoveredToDate; Color=\"#20b16d\"; Visible=true; Type=ToDate; Id=\"recovered\" }\n { Metric=VacAdministeredToDate; Color=\"#189a73\"; Visible=true; Type=ToDate; Id=\"vaccinationAdministered\" }\n { Metric=VacAdministered2ToDate;Color=\"#0e5842\"; Visible=true; Type=ToDate; Id=\"vaccinationAdministered2nd\" }\n { Metric=HospitalToDate; Color=\"#be7A2a\"; Visible=true; Type=ToDate; Id=\"hospitalAdmitted\" }\n // SLO-spec { Metric=HospitalOutToDate; Color=\"#8cd4b2\"; Visible=false; Type=ToDate; Id=\"hospitalDischarged\" }\n // SLO-spec { Metric=ICUToDate; Color=\"#d96756\"; Visible=false; Type=ToDate; Id=\"icuAdmitted\" }\n // SLO-spec { Metric=VentilatorToDate; Color=\"#d96756\"; Visible=false; Type=ToDate; Id=\"ventilatorAdmitted\" }\n { Metric=DeceasedToDate; Color=\"#000000\"; Visible=true; Type=ToDate; Id=\"deceased\" }\n ]\n /// Find a metric in the list and apply provided function to modify its value\n let update (fn: MetricCfg -> MetricCfg) metric metrics =\n metrics\n |> List.map (fun mc -> if mc.Metric = metric then fn mc else mc)\n\ntype State =\n { ScaleType : ScaleType\n MetricType : FullMetricType\n Metrics : Metrics\n StatsData : StatsData\n PatientsData : PatientsStats []\n Error : string option\n RangeSelectionButtonIndex: int\n }\n\ntype Msg =\n | ConsumePatientsData of Result\n | ConsumeServerError of exn\n | ToggleMetricVisible of Metric\n | ScaleTypeChanged of ScaleType\n | MetricTypeChanged of FullMetricType\n | RangeSelectionChanged of int\n\nlet init data : State * Cmd =\n let cmd = Cmd.OfAsync.either getOrFetch () ConsumePatientsData ConsumeServerError\n let state = {\n ScaleType = Linear\n MetricType = { MetricType = Today; IsAveraged = true }\n Metrics = Metrics.initial\n StatsData = data\n PatientsData = [||]\n Error = None\n RangeSelectionButtonIndex = 1\n }\n state, cmd\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ConsumePatientsData (Ok data) ->\n { state with PatientsData = data; }, Cmd.none\n | ConsumePatientsData (Error err) ->\n { state with Error = Some err }, Cmd.none\n | ConsumeServerError ex ->\n { state with Error = Some ex.Message }, Cmd.none\n | ToggleMetricVisible metric ->\n { state with\n Metrics = state.Metrics\n |> Metrics.update (fun mc -> { mc with Visible = not mc.Visible}) metric\n }, Cmd.none\n | ScaleTypeChanged scaleType ->\n { state with ScaleType = scaleType }, Cmd.none\n | MetricTypeChanged metricType ->\n { state with\n MetricType = metricType\n }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\n\nlet statsDataGenerator metric =\n fun point ->\n match metric.Metric with\n | PerformedTestsToday -> point.Tests.Performed.Today\n | PerformedTestsToDate -> point.Tests.Performed.ToDate\n | ConfirmedCasesToday -> point.Cases.ConfirmedToday\n | ConfirmedCasesToDate -> point.Cases.ConfirmedToDate\n | ActiveCases -> point.Cases.Active\n | RecoveredToDate -> point.Cases.RecoveredToDate\n | VacAdministeredToday -> point.Vaccination.Administered.Today\n | VacAdministeredToDate -> point.Vaccination.Administered.ToDate\n | VacAdministered2Today -> point.Vaccination.Administered2nd.Today\n | VacAdministered2ToDate -> point.Vaccination.Administered2nd.ToDate\n | _ -> None\n\nlet patientsDataGenerator metric =\n fun point ->\n match metric.Metric with\n | HospitalToday -> point.total.inHospital.today\n | HospitalIn -> point.total.inHospital.``in``\n | HospitalOut -> point.total.inHospital.out\n | HospitalToDate -> point.total.inHospital.toDate\n | HospitalOutToDate -> point.total.outOfHospital.toDate\n | ICUToday -> point.total.icu.today\n | ICUIn -> point.total.icu.``in``\n | ICUOut -> point.total.icu.out\n | ICUToDate -> point.total.icu.toDate\n | VentilatorToday -> point.total.critical.today\n | VentilatorIn -> point.total.critical.``in``\n | VentilatorOut -> point.total.critical.out\n | VentilatorToDate -> point.total.critical.toDate\n | DeceasedToday -> point.total.deceased.today |> Utils.zeroToNone\n | DeceasedToDate -> point.total.deceased.toDate\n | _ -> None\n\n\nlet calcRunningAverage (data: (JsTimestamp * float)[]) =\n let daysOfMovingAverage = 7\n let roundToDecimals = 1\n\n let entriesCount = data.Length\n\n if entriesCount >= daysOfMovingAverage then\n let cutOff = daysOfMovingAverage / 2\n let averagedDataLength = entriesCount - cutOff * 2\n\n let averages = Array.zeroCreate averagedDataLength\n\n let daysOfMovingAverageFloat = float daysOfMovingAverage\n let mutable currentSum = 0.\n\n let movingAverageFunc index =\n let (_, entryValue) = data.[index]\n\n currentSum <- currentSum + entryValue\n\n match index with\n | index when index >= daysOfMovingAverage - 1 ->\n let date = data.[index - cutOff] |> fst\n let average =\n currentSum / daysOfMovingAverageFloat\n |> Utils.roundDecimals roundToDecimals\n\n averages.[index - (daysOfMovingAverage - 1)] <- (date, average)\n\n let valueToSubtract =\n data.[index - (daysOfMovingAverage - 1)] |> snd\n currentSum <- currentSum - valueToSubtract\n\n | _ -> ignore()\n\n for i in 0 .. entriesCount-1 do\n movingAverageFunc i\n\n averages\n else\n [||]\n\n\nlet prepareMetricsData (metric: MetricCfg) (state: State) =\n\n let statsData = statsDataGenerator metric\n let patientsData = patientsDataGenerator metric\n\n let untrimmedData =\n if Metric.UseStatsData metric.Metric then\n state.StatsData\n |> Seq.map (fun dp -> (dp.Date |> jsTime12h, statsData dp))\n else\n state.PatientsData\n |> Seq.map (fun dp -> (dp.Date |> jsTime12h, patientsData dp))\n\n let isValueMissing ((_, value): (JsTimestamp * int option)) = value.IsNone\n\n let intOptionToFloat value =\n match value with\n | Some x -> float x\n | None -> 0.\n\n let trimmedData =\n untrimmedData\n |> Seq.toArray\n |> Array.skipWhile isValueMissing\n |> Array.rev\n |> Array.skipWhile isValueMissing\n |> Array.rev\n |> Array.map(fun (date, value) -> (date, value |> intOptionToFloat))\n\n let finalData =\n match state.MetricType.IsAveraged with\n | true -> trimmedData |> calcRunningAverage\n | false -> trimmedData\n\n finalData\n\n\nlet renderChartOptions state dispatch =\n\n let allSeries = [\n let mutable startTime = DateTime.Today |> jsTime\n\n let visibleMetrics =\n state.Metrics\n |> Seq.filter (fun metric ->\n metric.Type = state.MetricType.MetricType\n && metric.Visible)\n\n for metric in visibleMetrics do\n let data = prepareMetricsData metric state\n\n if data |> Array.length > 0 then\n let metricStartTime = data.[0] |> fst\n if metricStartTime < startTime then\n startTime <- metricStartTime\n\n yield pojo\n {|\n visible = true\n ``type`` =\n if state.MetricType.IsAveraged then \"spline\"\n else \"line\"\n color = metric.Color\n name = chartText metric.Id\n marker =\n if metric.Metric = DeceasedToday then\n pojo {| enabled = true; symbol = \"diamond\" |}\n else pojo {| enabled = false |}\n lineWidth = if metric.Metric = DeceasedToday then 0 else 2\n states =\n if metric.Metric = DeceasedToday then\n pojo {| hover = {| lineWidthPlus = 0 |} |}\n else pojo {||}\n dashStyle =\n match state.MetricType.MetricType with\n | Active -> \"Solid\"\n | Today -> \"ShortDot\"\n | ToDate -> \"Dot\"\n data = data\n |}\n\n yield addContainmentMeasuresFlags startTime None |> pojo\n ]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let baseOptions =\n basicChartOptions state.ScaleType \"covid19-metrics-comparison\"\n state.RangeSelectionButtonIndex\n onRangeSelectorButtonClick\n {| baseOptions with\n series = List.toArray allSeries\n yAxis =\n let showFirstLabel = state.ScaleType <> Linear\n baseOptions.yAxis |> Array.map (fun ax -> {| ax with showFirstLabel = Some showFirstLabel |})\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> chartFromWindow\n ]\n ]\n\nlet renderMetricSelector (metric : MetricCfg) dispatch =\n let style =\n if metric.Visible\n then [ style.backgroundColor metric.Color ; style.borderColor metric.Color ]\n else [ ]\n Html.div [\n prop.onClick (fun _ -> ToggleMetricVisible metric.Metric |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (metric.Visible, \"metric-selector--selected\")]\n prop.style style\n prop.text (chartText metric.Id) ]\n\nlet renderMetricsSelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children [\n for mc in state.Metrics do\n if mc.Type = state.MetricType.MetricType then\n yield renderMetricSelector mc dispatch\n ]\n ]\n\nlet renderMetricTypeSelectors (activeMetricType: FullMetricType) dispatch =\n let renderMetricTypeSelector (metricTypeToRender: FullMetricType) =\n let active = metricTypeToRender = activeMetricType\n Html.div [\n prop.onClick (fun _ -> dispatch metricTypeToRender)\n Utils.classes\n [(true, \"chart-display-property-selector__item\")\n (active, \"selected\") ]\n prop.text (metricTypeToRender.Name)\n ]\n\n let metricTypesSelectors =\n availableMetricTypes\n |> List.map renderMetricTypeSelector\n\n Html.div [\n prop.className \"chart-display-property-selector\"\n prop.children (metricTypesSelectors)\n ]\n\nlet render state dispatch =\n match state.PatientsData, state.Error with\n | [||], None -> Html.div [ Utils.renderLoading ]\n | _, Some err -> Html.div [ Utils.renderErrorLoading err ]\n | _, None ->\n Html.div [\n Utils.renderChartTopControls [\n renderMetricTypeSelectors\n state.MetricType (MetricTypeChanged >> dispatch)\n Utils.renderScaleSelector\n state.ScaleType (ScaleTypeChanged >> dispatch)\n ]\n renderChartContainer state dispatch\n renderMetricsSelectors state dispatch\n ]\n\nlet metricsComparisonChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"MetricsComparisonChart\", init props.data, update, render)\n","[]\nmodule DailyComparisonChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Browser\n\nopen Types\nopen Highcharts\n\nopen Data.Patients\n\ntype DisplayType =\n | Active\n | New\n | Tests\n | PositivePct\n | HospitalAdmitted\n | HospitalDischarged\n | ICUAdmitted\n | Deceased\n | VacDosesAdministered\nwith\n static member UseStatsData dType = [ Active; New; Tests; PositivePct; VacDosesAdministered; ] |> List.contains dType\n static member all = [ New; Active; Tests; PositivePct; VacDosesAdministered; (* SLO-spec HospitalAdmitted; HospitalDischarged; ICUAdmitted; *)Deceased; ]\n static member getName = function\n | New -> I18N.t \"charts.dailyComparison.new\"\n | Active -> I18N.t \"charts.dailyComparison.active\"\n | Tests -> I18N.t \"charts.dailyComparison.tests\"\n | PositivePct -> I18N.t \"charts.dailyComparison.positivePct\"\n | HospitalAdmitted -> I18N.t \"charts.dailyComparison.hospitalAdmitted\"\n | HospitalDischarged -> I18N.t \"charts.dailyComparison.hospitalDischarged\"\n | ICUAdmitted -> I18N.t \"charts.dailyComparison.icuAdmitted\"\n | Deceased -> I18N.t \"charts.dailyComparison.deceased\"\n | VacDosesAdministered -> I18N.t \"charts.dailyComparison.vaccineDosesAdministered\"\n static member getColor = function\n | New -> \"#bda506\"\n | Active -> \"#dba51d\"\n | Tests -> \"#19aebd\"\n | PositivePct -> \"#665191\"\n | HospitalAdmitted -> \"#be7A2a\"\n | HospitalDischarged -> \"#20b16d\"\n | ICUAdmitted -> \"#d96756\"\n | Deceased -> \"#696969\"\n | VacDosesAdministered -> \"#189a73\"\n\ntype State = {\n StatsData: StatsData\n PatientsData : PatientsStats []\n Error : string option\n DisplayType: DisplayType\n}\n\ntype Msg =\n | ConsumePatientsData of Result\n | ConsumeServerError of exn\n | ChangeDisplayType of DisplayType\n\nlet init data : State * Cmd =\n let cmd = Cmd.OfAsync.either getOrFetch () ConsumePatientsData ConsumeServerError\n let state = {\n StatsData = data\n PatientsData = [||]\n Error = None\n DisplayType = New\n }\n state, cmd\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ConsumePatientsData (Ok data) ->\n { state with PatientsData = data; }, Cmd.none\n | ConsumePatientsData (Error err) ->\n { state with Error = Some err }, Cmd.none\n | ConsumeServerError ex ->\n { state with Error = Some ex.Message }, Cmd.none\n | ChangeDisplayType dt ->\n { state with DisplayType = dt }, Cmd.none\n\nlet renderChartOptions (state : State) dispatch =\n\n let weeksShown = 6\n\n let percentageFormatter value =\n let valueF = float value / 100.0\n sprintf \"%0.2f%%\" valueF\n\n let tooltipFormatter state jsThis =\n let category = jsThis?x\n let pts: obj[] = jsThis?points\n\n let mutable fmtStr = sprintf \"%s
%s
\" (DisplayType.getName state.DisplayType) category\n let mutable fmtLine = \"\"\n fmtStr <- fmtStr + \"\"\n for p in pts do\n let yStr =\n match state.DisplayType with\n | PositivePct -> percentageFormatter p?point?y\n | _ -> sprintf \"%d\" p?point?y\n fmtLine <- sprintf \"\"\n p?series?color\n p?point?date\n yStr\n p?point?diff\n fmtStr <- fmtStr + fmtLine\n fmtStr <- fmtStr + \"
%s%s%s
\"\n fmtStr\n\n let add (a : int option) (b : int option) =\n match a, b with\n | Some aa, Some bb -> Some (aa + bb)\n | Some _, None -> a\n | None, Some _ -> b\n | _ -> None\n\n let getStatsValue dp =\n match state.DisplayType with\n | New -> dp.Cases.ConfirmedToday\n | Active -> dp.Cases.Active\n | Tests -> dp.Tests.Performed.Today\n | VacDosesAdministered -> dp.Vaccination.Administered.Today |> add dp.Vaccination.Administered2nd.Today\n | PositivePct -> \n match dp.Tests.Positive.Today, dp.Tests.Performed.Today with\n | Some p, Some t -> Some ( (float p / float t * 100.0 * 100.0) |> int)\n | _ -> None \n | _ -> None\n\n let getPatientsValue dp =\n match state.DisplayType with\n | HospitalAdmitted -> dp.total.inHospital.``in``\n | HospitalDischarged -> dp.total.inHospital.out\n | ICUAdmitted -> dp.total.icu.``in``\n | Deceased -> dp.total.deceased.today\n | _ -> None\n\n let fourWeeks = \n if DisplayType.UseStatsData state.DisplayType then\n state.StatsData \n |> Seq.skipWhile (fun dp -> dp.Date < DateTime.Today.AddDays(float (- weeksShown * 7)))\n |> Seq.skipWhile (fun dp -> dp.Date.DayOfWeek <> DayOfWeek.Monday)\n |> Seq.map (fun dp -> (dp.Date, getStatsValue dp)) \n |> Seq.toArray\n else\n state.PatientsData \n |> Seq.skipWhile (fun dp -> dp.Date < DateTime.Today.AddDays(float (- weeksShown * 7)))\n |> Seq.skipWhile (fun dp -> dp.Date.DayOfWeek <> DayOfWeek.Monday)\n |> Seq.map (fun dp -> (dp.Date, getPatientsValue dp)) \n |> Seq.toArray\n\n let allSeries = [\n for weekIdx in 0 .. weeksShown-1 do \n let idx = weekIdx * 7\n let len = min 7 (fourWeeks.Length - idx)\n\n let desaturateColor (rgb:string) (sat:float) = \n let argb = Int32.Parse (rgb.Replace(\"#\", \"\"), Globalization.NumberStyles.HexNumber)\n let r = (argb &&& 0x00FF0000) >>> 16\n let g = (argb &&& 0x0000FF00) >>> 8\n let b = (argb &&& 0x000000FF)\n let avg = (float(r + g + b) / 3.0) * 1.6\n let newR = int (Math.Round (float(r) * sat + avg * (1.0 - sat)))\n let newG = int (Math.Round (float(g) * sat + avg * (1.0 - sat)))\n let newB = int (Math.Round (float(b) * sat + avg * (1.0 - sat)))\n sprintf \"#%02x%02x%02x\" newR newG newB\n\n let getSeriesColor dt series = \n desaturateColor (DisplayType.getColor dt) (float (series) / float (weeksShown))\n\n let percent a b =\n match a, b with\n | Some v, Some p -> \n if p = 0 \n then if v = 0 then \"\" else \">500%\" \n else sprintf \"%+0.0f%%\" (float(v) / float(p) * 100.0 - 100.0)\n | _, _ -> \"\"\n\n yield pojo\n {|\n ``type`` = \"column\"\n color = getSeriesColor state.DisplayType weekIdx\n data = \n fourWeeks\n |> Array.skip idx\n |> Array.take len \n |> Array.mapi (fun i (date, value) -> \n {|\n y = value\n date = I18N.tOptions \"days.date\" {| date = date |}\n diff = \n if weekIdx > 0\n then \n let _ , prev = fourWeeks.[(weekIdx-1) * 7 + i]\n percent value prev \n else \"\"\n dataLabels = \n if weekIdx = weeksShown-1 \n then \n if state.DisplayType = PositivePct\n then pojo {| enabled = true; formatter = fun () -> percentageFormatter jsThis?y |}\n else pojo {| enabled = true |}\n else pojo {||}\n |} |> pojo\n )\n |}\n ]\n\n {| optionsWithOnLoadEvent \"covid19-daily-comparison\" with\n chart = pojo {| ``type`` = \"column\" |}\n title = pojo {| text = None |}\n xAxis = [| \n {|\n ``type`` = \"category\"\n categories = [| I18N.dow 1; I18N.dow 2; I18N.dow 3; I18N.dow 4; I18N.dow 5; I18N.dow 6; I18N.dow 0; |]\n |} \n |]\n yAxis = [|\n {|\n opposite = true\n title = {| text = null |}\n labels = \n if state.DisplayType = PositivePct \n then pojo {| formatter = fun () -> percentageFormatter jsThis?value |}\n else pojo {| formatter = None |}\n |}\n |]\n\n series = List.toArray allSeries\n\n plotOptions = pojo {| series = {| groupPadding = 0.05 |} |}\n\n legend = pojo {| enabled = false |}\n\n tooltip = pojo\n {|\n formatter = fun () -> tooltipFormatter state jsThis\n shared = true\n useHTML = true\n |}\n\n credits = pojo\n {|\n enabled = true\n text =\n sprintf \"%s: %s, %s\"\n (I18N.t \"charts.common.dataSource\")\n (I18N.tOptions (\"charts.common.dsNIJZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n (I18N.tOptions (\"charts.common.dsMZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n // SLO-spec href = \"https://www.nijz.si/sl/dnevno-spremljanje-okuzb-s-sars-cov-2-covid-19\"\n href = \"http://www.iph.mk\"\n |}\n\n navigator = pojo {| enabled = false |}\n scrollbar = pojo {| enabled = false |}\n rangeSelector = pojo {| enabled = false |}\n |}\n\nlet renderChartContainer (state : State) dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> Highcharts.chart\n ]\n ]\n\nlet renderSelector state (dt: DisplayType) dispatch =\n Html.div [\n let isActive = state.DisplayType = dt\n prop.onClick (fun _ -> ChangeDisplayType dt |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (isActive, \"metric-selector--selected\")]\n prop.text (DisplayType.getName dt) ]\n\nlet renderDisplaySelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n DisplayType.all\n |> List.map (fun dt -> renderSelector state dt dispatch) ) ]\n\nlet render (state: State) dispatch =\n match state.PatientsData, state.Error with\n | [||], None -> Html.div [ Utils.renderLoading ]\n | _, Some err -> Html.div [ Utils.renderErrorLoading err ]\n | _, None ->\n Html.div [\n renderChartContainer state dispatch\n renderDisplaySelectors state dispatch\n ]\n\nlet dailyComparisonChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"DailyComparisonChart\", init props.data, update, render)\n","[]\nmodule SpreadChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Types\nopen Highcharts\n\ntype Scale =\n | Absolute\n | Percentage\n | DoublingRate\n with\n static member all = [ Absolute; Percentage; DoublingRate ]\n static member getName = function\n | Absolute -> I18N.t \"charts.spread.absolute\"\n | Percentage -> I18N.t \"charts.spread.percentage\"\n | DoublingRate -> I18N.t \"charts.spread.doublingRate\"\n\ntype Page =\n | Chart of Scale\n | Explainer\n with\n static member all = (Scale.all |> List.map Chart) @ [ Explainer ]\n static member getName = function\n | Chart scale -> Scale.getName scale\n | Explainer -> I18N.t \"charts.spread.explainer\"\n\ntype State = {\n page: Page\n data: StatsData\n RangeSelectionButtonIndex: int\n}\n\ntype Msg =\n | ChangePage of Page\n | RangeSelectionChanged of int\n\nlet init data : State * Cmd =\n let state = {\n page = Chart Absolute\n data = data\n RangeSelectionButtonIndex = 1\n }\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ChangePage page ->\n { state with page = page }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet maxOption a b =\n match a, b with\n | None, None -> None\n | Some x, None -> Some x\n | None, Some y -> Some y\n | Some x, Some y -> Some (max x y)\n\nlet inline yAxisBase () =\n {|\n ``type`` = \"linear\"\n opposite = true\n reversed = false\n title = {| text = null |}\n showFirstLabel = not Highcharts.showExpGrowthFeatures // need to hide negative label for addContainmentMeasuresFlags\n tickInterval = None\n gridZIndex = -1\n max = None\n plotLines = [| {| value = 0; color = \"black\" |} |]\n crosshair = true\n |}\n\nlet inline legend title =\n {|\n enabled = Highcharts.showExpGrowthFeatures\n title = {| text=title |}\n align = \"left\"\n verticalAlign = \"middle\"\n borderColor = \"#aaa\"\n borderWidth = 1\n layout = \"vertical\"\n floating = true\n x = 8\n y = 60\n backgroundColor = \"#FFF\"\n |}\n |> pojo\n\ntype ChartCfg = {\n seriesLabel: string\n legendTitle: string\n yAxis: obj\n dataKey: StatsDataPoint -> float*float\n } with\n static member fromScale = function\n | Absolute ->\n {\n legendTitle = I18N.t \"charts.spread.absoluteTitle\"\n seriesLabel = I18N.t \"charts.spread.absoluteLabel\"\n yAxis = yAxisBase ()\n dataKey = fun dp -> (dp.Date |> jsTime12h), dp.Cases.ConfirmedToday |> Option.map float |> Option.defaultValue nan\n }\n | Percentage ->\n {\n legendTitle = I18N.t \"charts.spread.relativeTitle\"\n seriesLabel = I18N.t \"charts.spread.relativeLabel\"\n yAxis = {| yAxisBase () with ``type``=\"logarithmic\" |}\n dataKey = fun dp ->\n let daily = dp.Cases.ConfirmedToday |> Utils.zeroToNone\n let total = dp.Cases.ConfirmedToDate |> Utils.zeroToNone (* SLO-spec dp.Cases.Active *)\n let value =\n (daily, total)\n ||> Option.map2 (fun daily total ->\n let yesterday = total-daily\n if yesterday < 2 then nan\n else\n (float total / float yesterday - 1.0) * 100.0\n |> Utils.roundDecimals 1\n )\n |> Option.defaultValue nan\n dp.Date |> jsTime12h, value\n }\n\n | DoublingRate ->\n {\n legendTitle = I18N.t \"charts.spread.doublingRateTitle\"\n seriesLabel = I18N.t \"charts.spread.doublingRateLabel\"\n yAxis =\n {| yAxisBase () with\n ``type``=\"logarithmic\"\n reversed=true\n plotLines=[|\n //pojo {| value=40.0; label={| text=I18N.t \"charts.spread.averageSouthKorea\"; align=\"right\"; y= 12; x= -300 |}; color=\"#408040\"; width=3; dashStyle=\"longdashdot\" |} // rotation=270; align=\"right\"; x=12 |} |}\n pojo {| value= 1.0; label={| text=I18N.t \"charts.spread.oneDay\" |}; color=\"#aaa\"; dashStyle=\"ShortDash\" |}\n pojo {| value= 7.0; label={| text=I18N.t \"charts.spread.oneWeek\" |}; color=\"#888\"; dashStyle=\"ShortDash\" |}\n pojo {| value=30.0; label={| text=I18N.t \"charts.spread.oneMonth\"|}; color=\"#888\"; dashStyle=\"ShortDash\" |}\n |]\n max = Some 100\n |}\n\n dataKey = fun dp ->\n let daily = dp.Cases.ConfirmedToday |> Utils.zeroToNone\n let total = dp.Cases.Active |> Utils.zeroToNone\n let value =\n (daily, total)\n ||> Option.map2 (fun daily total ->\n let yesterday = total-daily\n let v =\n if yesterday < 2 then nan\n else\n let rate = float total / float yesterday\n let days = Math.Log 2.0 / Math.Log rate\n days |> Utils.roundDecimals 1\n v\n )\n |> Option.defaultValue nan\n dp.Date |> jsTime12h, value\n }\n\n\nlet renderChartOptions scaleType state dispatch =\n\n let chartCfg = ChartCfg.fromScale scaleType\n let startDate = DateTime(2020,3,4)\n let mutable startTime = startDate |> jsTime\n\n let allSeries = [|\n yield pojo\n {|\n id = \"data\"\n color = \"#bda506\"\n name = chartCfg.seriesLabel\n dataLabels = pojo {| enabled = true |}\n data =\n state.data\n |> Seq.skipWhile (fun dp -> dp.Date < startDate)\n |> Seq.map chartCfg.dataKey\n |> Seq.toArray\n |}\n if Highcharts.showExpGrowthFeatures then\n yield addContainmentMeasuresFlags startTime None |> pojo \n |]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n // return highcharts options\n {| basicChartOptions Linear \"covid19-spread\"\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n with\n series = allSeries\n yAxis=chartCfg.yAxis\n legend=legend chartCfg.legendTitle\n |}\n\nlet renderExplainer (data: StatsData) =\n let curPositive, curHospitalized =\n data\n |> List.rev\n |> Seq.choose (fun dp ->\n match dp.Cases.Active, dp.StatePerTreatment.InHospital with\n | Some p, Some h -> Some (p, h)\n | _, _ -> None)\n |> Seq.take 1\n |> Seq.toList |> List.head\n |> fun (p, h) -> (p,h)\n\n let box (title: string) times positive hospitalized =\n Html.div [\n prop.className \"box\"\n prop.children [\n Html.h3 title\n Html.p [\n match times with\n | 0 -> Html.span \"\"\n | 1 -> Html.span (sprintf \"%d%s\" (1<< Html.span (sprintf \"%d%s\" (1<< List.map (fun (title, doublings) ->\n box title doublings (curPositive <<< doublings) (curHospitalized <<< doublings)\n )\n ]\n ]\n ]\n ]\n\nlet renderChartContainer scaleType data dispatch =\n Html.div [\n prop.style [ style.height 480; (Interop.mkStyle \"width\" \"100%\"); style.position.absolute ] //; style.width 500; ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions scaleType data dispatch\n |> Highcharts.chartFromWindow\n ]\n ]\n\nlet renderScaleSelectors state dispatch =\n\n let renderScaleSelector (page: Page) dispatch =\n let isActive = state.page = page\n let style =\n if isActive\n then [ style.backgroundColor \"#808080\" ]\n else [ ]\n Html.div [\n prop.onClick (fun _ -> ChangePage page |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (isActive, \"metric-selector--selected\")]\n prop.style style\n prop.text (page |> Page.getName) ]\n\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children [\n for page in Page.all do\n yield renderScaleSelector page dispatch\n ]\n ]\n\nlet render (state: State) dispatch =\n Html.div [\n prop.children [\n Html.div [\n prop.style [ style.height 480; (Interop.mkStyle \"width\" \"100%\"); style.position.relative ]\n prop.children [\n match state.page with\n | Chart scale ->\n yield renderChartContainer scale state dispatch\n | Explainer ->\n yield renderChartContainer DoublingRate state dispatch\n yield renderExplainer state.data\n ]\n ]\n if Highcharts.showExpGrowthFeatures then\n renderScaleSelectors state dispatch\n ]\n ]\n\nlet spreadChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"SpreadChart\", init props.data, update, render)\n","[]\nmodule Map\n\nopen System\n\nopen Fable.SimpleHttp\n\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Browser\n\nopen Highcharts\nopen Types\n\ntype MapToDisplay = Municipality | Region | SkopjeMunicipality\n\n(* SLO-spec \nlet munGeoJsonUrl = \"/maps/municipalities-gurs-simplified-3857.geojson\"\n*)\nlet munGeoJsonUrl = \"/maps/new_31_Cities_MKD-3857.json\"\nlet regGeoJsonUrl = \"/maps/statistical-regions-gurs-simplified-3857.geojson\"\nlet skopjeGeoJsonUrl = \"/maps/SkopjeOpstini-3857.json\"\n\nlet excludedMunicipalities = Set.ofList [\"kraj\" ; \"tujina\"]\n\ntype TotalCasesForDate =\n { Date : System.DateTime\n TotalConfirmedCases : int option\n TotalDeceasedCases : int option }\n\ntype Area =\n { Id : string\n Code : string\n Name : string\n Population : int\n Cases : TotalCasesForDate seq option }\n\ntype ContentType =\n | ConfirmedCases\n | Deceased\n\n override this.ToString() =\n match this with\n | ConfirmedCases -> I18N.t \"charts.map.confirmedCases\"\n | Deceased -> I18N.t \"charts.map.deceased\"\n\nlet (|ConfirmedCasesMsgCase|DeceasedMsgCase|) str =\n if str = I18N.t \"charts.map.confirmedCases\" \n then ConfirmedCasesMsgCase\n else DeceasedMsgCase \n\ntype DisplayType =\n | AbsoluteValues\n | RegionPopulationWeightedValues\n | RelativeIncrease\nwith\n static member Default = AbsoluteValues // SLO-specRegionPopulationWeightedValues\n\n override this.ToString() =\n match this with\n | AbsoluteValues -> I18N.t \"charts.map.absolute\"\n | RegionPopulationWeightedValues -> I18N.t \"charts.map.populationShare\"\n | RelativeIncrease -> I18N.t \"charts.map.relativeIncrease\" \n\ntype DataTimeInterval =\n | Complete\n | LastDays of int\n\n override this.ToString() =\n match this with\n | Complete -> I18N.t \"charts.map.all\"\n | LastDays days -> I18N.tOptions \"charts.map.last_x_days\" {| count = days |}\n\nlet dataTimeIntervals =\n [ LastDays 1\n LastDays 7\n LastDays 14\n LastDays 21\n Complete ]\n\ntype GeoJson = RemoteData\n\ntype State =\n { MapToDisplay : MapToDisplay\n GeoJson : GeoJson\n Data : Area seq\n DataTimeInterval : DataTimeInterval\n ContentType : ContentType\n DisplayType : DisplayType }\n\ntype Msg =\n | GeoJsonRequested\n | GeoJsonLoaded of GeoJson\n | DataTimeIntervalChanged of DataTimeInterval\n | ContentTypeChanged of string\n | DisplayTypeChanged of DisplayType\n\nlet loadMunGeoJson =\n async {\n let! (statusCode, response) = Http.get munGeoJsonUrl\n\n if statusCode <> 200 then\n return GeoJsonLoaded (sprintf \"Error loading map: %d\" statusCode |> Failure)\n else\n try\n let data = response |> Fable.Core.JS.JSON.parse\n return GeoJsonLoaded (data |> Success)\n with\n | ex -> return GeoJsonLoaded (sprintf \"Error loading map: %s\" ex.Message |> Failure)\n }\n\nlet loadRegGeoJson =\n async {\n let! (statusCode, response) = Http.get regGeoJsonUrl\n\n if statusCode <> 200 then\n return GeoJsonLoaded (sprintf \"Error loading map: %d\" statusCode |> Failure)\n else\n try\n let data = response |> Fable.Core.JS.JSON.parse\n return GeoJsonLoaded (data |> Success)\n with\n | ex -> return GeoJsonLoaded (sprintf \"Error loading map: %s\" ex.Message |> Failure)\n }\n\nlet loadSkopjeMunGeoJson =\n async {\n let! (statusCode, response) = Http.get skopjeGeoJsonUrl\n\n if statusCode <> 200 then\n return GeoJsonLoaded (sprintf \"Error loading map: %d\" statusCode |> Failure)\n else\n try\n let data = response |> Fable.Core.JS.JSON.parse\n return GeoJsonLoaded (data |> Success)\n with\n | ex -> return GeoJsonLoaded (sprintf \"Error loading map: %s\" ex.Message |> Failure)\n }\n\nlet init (mapToDisplay : MapToDisplay) (regionsData : RegionsData) : State * Cmd =\n let dataTimeInterval = if mapToDisplay = SkopjeMunicipality then Complete else LastDays 14\n\n let municipalityDataMap =\n seq {\n for regionsDataPoint in regionsData do\n for region in regionsDataPoint.Regions do\n for municipality in region.Municipalities do\n if not (Set.contains municipality.Name excludedMunicipalities) then\n yield {| Date = regionsDataPoint.Date\n MunicipalityKey = municipality.Name\n TotalConfirmedCases = municipality.ConfirmedToDate\n TotalDeceasedCases = municipality.DeceasedToDate |} }\n |> Seq.groupBy (fun dp -> dp.MunicipalityKey)\n |> Seq.map (fun (municipalityKey, dp) ->\n let totalCases =\n dp\n |> Seq.map (fun dp ->\n { Date = dp.Date\n TotalConfirmedCases = dp.TotalConfirmedCases\n TotalDeceasedCases = dp.TotalDeceasedCases } )\n |> Seq.sortBy (fun dp -> dp.Date)\n ( municipalityKey, totalCases ) )\n |> Map.ofSeq\n\n let munData =\n seq {\n for municipality in Utils.Dictionaries.municipalities do\n match Map.tryFind municipality.Key municipalityDataMap with\n | None ->\n yield { Id = municipality.Key\n Code = municipality.Value.Code\n Name = municipality.Value.Name\n Population = municipality.Value.Population\n Cases = None }\n | Some cases ->\n yield { Id = municipality.Key\n Code = municipality.Value.Code\n Name = municipality.Value.Name\n Population = municipality.Value.Population\n Cases = Some cases }\n }\n\n let skopjeMunData = \n seq {\n for municipality in Utils.Dictionaries.skopjeMunicipalities do\n match Map.tryFind municipality.Key municipalityDataMap with\n | None ->\n yield { Id = municipality.Key\n Code = municipality.Value.Code\n Name = municipality.Value.Name\n Population = municipality.Value.Population\n Cases = None }\n | Some cases ->\n yield { Id = municipality.Key\n Code = municipality.Value.Code\n Name = municipality.Value.Name\n Population = municipality.Value.Population\n Cases = Some cases }\n }\n\n let regDataMap =\n seq {\n for regionsDataPoint in regionsData do\n for region in regionsDataPoint.Regions do\n yield {| Date = regionsDataPoint.Date\n RegionKey = region.Name\n TotalConfirmedCases =\n region.Municipalities\n |> Seq.sumBy (fun municipality -> municipality.ConfirmedToDate |> Option.defaultValue 0)\n TotalDeceasedCases =\n region.Municipalities\n |> Seq.sumBy (fun municipality -> municipality.DeceasedToDate |> Option.defaultValue 0) |} }\n |> Seq.groupBy (fun dp -> dp.RegionKey)\n |> Seq.map (fun (regionKey, dp) ->\n let totalCases =\n dp\n |> Seq.map (fun dp ->\n { Date = dp.Date\n TotalConfirmedCases = Some dp.TotalConfirmedCases\n TotalDeceasedCases = Some dp.TotalDeceasedCases } )\n |> Seq.sortBy (fun dp -> dp.Date)\n ( regionKey, totalCases ) )\n |> Map.ofSeq\n\n let regData =\n seq {\n for region in Utils.Dictionaries.regions do\n match Map.tryFind region.Key regDataMap with\n | None ->\n yield { Id = region.Key\n Code = region.Key\n Name = I18N.tt \"region\" region.Key\n Population = region.Value.Population |> Option.defaultValue 0\n Cases = None }\n | Some cases ->\n yield { Id = region.Key\n Code = region.Key\n Name = I18N.tt \"region\" region.Key\n Population = region.Value.Population |> Option.defaultValue 0\n Cases = Some cases }\n }\n\n let data =\n match mapToDisplay with\n | Municipality -> munData\n | Region -> regData\n | SkopjeMunicipality -> skopjeMunData\n\n { MapToDisplay = mapToDisplay\n GeoJson = NotAsked\n Data = data\n DataTimeInterval = dataTimeInterval\n ContentType = ConfirmedCases \n DisplayType = DisplayType.Default\n }, Cmd.ofMsg GeoJsonRequested\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | GeoJsonRequested ->\n let cmd =\n match state.MapToDisplay with\n | Municipality -> Cmd.OfAsync.result loadMunGeoJson\n | Region -> Cmd.OfAsync.result loadRegGeoJson\n | SkopjeMunicipality -> Cmd.OfAsync.result loadSkopjeMunGeoJson\n { state with GeoJson = Loading }, cmd\n | GeoJsonLoaded geoJson ->\n { state with GeoJson = geoJson }, Cmd.none\n | DataTimeIntervalChanged dataTimeInterval ->\n { state with DataTimeInterval = dataTimeInterval }, Cmd.none\n | ContentTypeChanged contentType ->\n let newContentType =\n match contentType with\n | ConfirmedCasesMsgCase -> ConfirmedCases\n | DeceasedMsgCase -> Deceased\n let newDisplayType =\n if state.DisplayType = RelativeIncrease && newContentType = Deceased\n then DisplayType.Default // for Deceased, RelativeIncrease not supported\n else state.DisplayType\n { state with ContentType = newContentType; DisplayType = newDisplayType }, Cmd.none\n | DisplayTypeChanged displayType ->\n { state with DisplayType = displayType }, Cmd.none\n\nlet seriesData (state : State) =\n\n seq {\n for areaData in state.Data do\n let dlabel, value, absolute, value100k, totalConfirmed, weeklyIncrease, population, newCases =\n match areaData.Cases with\n | None -> None, 0.0001, 0, 0., 0, 0., areaData.Population, null\n | Some totalCases ->\n let confirmedCasesValue = totalCases |> Seq.map (fun dp -> dp.TotalConfirmedCases) |> Seq.choose id |> Seq.toArray\n let newCases = \n confirmedCasesValue \n |> Array.mapi (fun i cc -> if i > 0 then cc - confirmedCasesValue.[i-1] else cc) \n |> Array.skip (confirmedCasesValue.Length - 56) // we only show last 56 days\n |> Seq.toArray\n let deceasedValue = totalCases |> Seq.map (fun dp -> dp.TotalDeceasedCases) |> Seq.choose id |> Seq.toArray\n let values =\n match state.ContentType with\n | ConfirmedCases -> confirmedCasesValue\n | Deceased -> deceasedValue\n\n let totalConfirmed = confirmedCasesValue |> Array.tryLast\n\n let lastValueTotal = values |> Array.tryLast\n let lastValueRelative =\n let dateInterval = \n if state.DisplayType = RelativeIncrease \n then LastDays 7 // for weekly relative increase we force 7 day interval for display in tooltip\n else state.DataTimeInterval\n match dateInterval with\n | Complete -> lastValueTotal\n | LastDays days ->\n let firstValueTotal = values |> Array.tryItem (values.Length - days - 1)\n match firstValueTotal, lastValueTotal with\n | None, None -> None\n | None, Some b -> Some b\n | Some a, None -> Some a\n | Some a, Some b -> Some (b - a)\n\n match lastValueRelative with\n | None -> None, 0.0001, 0, 0., 0, 0., areaData.Population, null\n | Some lastValue ->\n let absolute = lastValue\n let value100k =\n float absolute * 100000. / float areaData.Population\n let dlabel, value =\n match state.DisplayType with\n | AbsoluteValues -> ((Some absolute) |> Utils.zeroToNone), absolute\n | RegionPopulationWeightedValues -> None, 10. * value100k |> System.Math.Round |> int //factor 10 for better resolution in graph\n | RelativeIncrease -> None, absolute \n let weeklyIncrease = \n let parseNumber x = \n match x with \n | None -> 0.\n | Some x -> x |> float \n let casesNow = values |> Array.tryItem(values.Length - 1) |> parseNumber \n let cases7dAgo = values |> Array.tryItem(values.Length - 8) |> parseNumber\n let cases14dAgo = values |> Array.tryItem(values.Length - 15) |> parseNumber\n \n let increaseThisWeek = casesNow - cases7dAgo\n let increaseLastWeek = cases7dAgo - cases14dAgo \n\n if (increaseThisWeek, increaseLastWeek) = (0.,0.) then 0.\n else 100. * min ( increaseThisWeek/increaseLastWeek - 1.) 5. // Set the maximum value to 5 to cut off infinities\n let scaled =\n match state.ContentType with\n | ConfirmedCases ->\n match state.DisplayType with\n | AbsoluteValues -> \n if absolute > 0 then float absolute\n else 0.0001\n | RegionPopulationWeightedValues -> \n if value100k > 0.0 then value100k \n else 0.0001\n | RelativeIncrease -> \n min weeklyIncrease 200. // for colorAxis limit to 200%\n | Deceased ->\n match value with\n | 0 -> 0.\n | x -> float x + Math.E |> Math.Log\n\n dlabel, scaled, absolute, value100k, totalConfirmed.Value, weeklyIncrease, areaData.Population, newCases\n {|\n code = areaData.Code\n area = areaData.Name\n value = value\n absolute = absolute\n value100k = value100k\n totalConfirmed = totalConfirmed\n weeklyIncrease = weeklyIncrease\n population = population\n dlabel = dlabel\n dataLabels = {| enabled = true; format = \"{point.dlabel}\" |}\n newCases = newCases\n |}\n } |> Seq.toArray\n\n\nlet renderMap (state : State) =\n\n match state.GeoJson with\n | NotAsked\n | Loading -> Html.none\n | Failure str -> Html.text str\n | Success geoJson ->\n let data = seriesData state\n\n let key =\n match state.MapToDisplay with\n | Municipality -> \"Name4_E\" (* \"isoid\" SLO-spec *)\n | Region -> \"code\"\n | SkopjeMunicipality -> \"Name4_E\"\n\n let series geoJson =\n {| visible = true\n mapData = geoJson\n data = data\n keys = [| \"code\" ; \"value\" |]\n joinBy = [| key ; \"code\" |]\n nullColor = \"white\"\n borderColor = \"#000\"\n borderWidth = 0.2\n mapline = {| animation = {| duration = 0 |} |}\n states =\n {| normal = {| animation = {| duration = 0 |} |}\n hover = {| borderColor = \"black\" ; animation = {| duration = 0 |} |} |}\n |}\n\n let sparklineFormatter newCases =\n let desaturateColor (rgb:string) (sat:float) = \n let argb = Int32.Parse (rgb.Replace(\"#\", \"\"), Globalization.NumberStyles.HexNumber)\n let r = (argb &&& 0x00FF0000) >>> 16\n let g = (argb &&& 0x0000FF00) >>> 8\n let b = (argb &&& 0x000000FF)\n let avg = (float(r + g + b) / 3.0) * 1.6\n let newR = int (Math.Round (float(r) * sat + avg * (1.0 - sat)))\n let newG = int (Math.Round (float(g) * sat + avg * (1.0 - sat)))\n let newB = int (Math.Round (float(b) * sat + avg * (1.0 - sat)))\n sprintf \"#%02x%02x%02x\" newR newG newB\n\n let color1 = \"#bda506\"\n let color2 = desaturateColor color1 0.6\n let color3 = desaturateColor color1 0.3\n\n let temp = [|([| color3 |] |> Array.replicate 42 |> Array.concat ); ([|color2 |] |> Array.replicate 7 |> Array.concat)|] |> Array.concat\n let columnColors = [| temp; ([| color1 |] |> Array.replicate 7 |> Array.concat) |] |> Array.concat\n\n\n let options =\n {|\n chart = \n {|\n ``type`` = \"column\"\n backgroundColor = \"transparent\"\n |} |> pojo\n credits = {| enabled = false |}\n xAxis = \n {| \n visible = true \n labels = {| enabled = false |} \n title = {| enabled = false |}\n tickInterval = 7 \n lineColor = \"#696969\"\n tickColor = \"#696969\"\n tickLength = 4\n |}\n yAxis = \n {| \n title = {| enabled = false |}\n visible = true \n opposite = true \n min = 0.\n max = newCases |> Array.max \n tickInterval = 5 \n endOnTick = true \n startOnTick = false \n allowDecimals = false \n showFirstLabel = true\n showLastLabel = true\n gridLineColor = \"#000000\"\n gridLineDashStyle = \"dot\"\n |} |> pojo\n title = {| text = \"\" |}\n legend = {| enabled = false |}\n series = \n [| \n {| \n data = newCases |> Array.map ( max 0.)\n animation = false\n colors = columnColors \n borderColor = columnColors \n pointWidth = 2\n colorByPoint = true\n |} |> pojo \n |]\n |} |> pojo\n match state.MapToDisplay with \n | Municipality -> \n Fable.Core.JS.setTimeout (fun () -> sparklineChart(\"tooltip-chart-mun\", options)) 10 |> ignore\n \"\"\"
\"\"\"\n | SkopjeMunicipality -> \n Fable.Core.JS.setTimeout (fun () -> sparklineChart(\"tooltip-chart-mun\", options)) 10 |> ignore\n \"\"\"
\"\"\"\n | Region -> \n Fable.Core.JS.setTimeout (fun () -> sparklineChart(\"tooltip-chart-reg\", options)) 10 |> ignore\n \"\"\"
\"\"\"\n\n\n\n let tooltipFormatter state jsThis =\n let points = jsThis?point\n let area = points?area\n let absolute = points?absolute\n let value100k = points?value100k\n let totalConfirmed = points?totalConfirmed\n let weeklyIncrease = points?weeklyIncrease\n let newCases= points?newCases\n let population = points?population\n let pctPopulation = float absolute * 100.0 / float population\n let fmtStr = sprintf \"%s: %d\" (I18N.t \"charts.map.populationC\") population\n\n let lastTwoWeeks = newCases \n\n let label =\n match state.ContentType with\n | ConfirmedCases ->\n let labelKey = if state.MapToDisplay = MapToDisplay.SkopjeMunicipality then \"charts.map.activeCases\" else \"charts.map.confirmedCases\" \n let label = fmtStr + sprintf \"
%s: %d\" (I18N.t labelKey) absolute\n if totalConfirmed > 0 then\n if state.MapToDisplay = MapToDisplay.SkopjeMunicipality then\n label\n + sprintf \" (%s %% %s)\" (Utils.formatTo3DecimalWithTrailingZero pctPopulation) (I18N.t \"charts.map.population\")\n else\n label\n + sprintf \" (%s %% %s)\" (Utils.formatTo3DecimalWithTrailingZero pctPopulation) (I18N.t \"charts.map.population\")\n + sprintf \"
%s: %0.1f %s\" (I18N.t \"charts.map.confirmedCases\") value100k (I18N.t \"charts.map.per100k\")\n + sprintf \"
%s: %s%s%%\" (I18N.t \"charts.map.relativeIncrease\") (if weeklyIncrease < 500. then \"\" else \">\") (weeklyIncrease |> Utils.formatTo1DecimalWithTrailingZero)\n + if (Array.max lastTwoWeeks) > 0. then sparklineFormatter lastTwoWeeks else \"\"\n else\n label\n | Deceased ->\n let label = fmtStr + sprintf \"
%s: %d\" (I18N.t \"charts.map.deceased\") absolute\n if absolute > 0 && state.DataTimeInterval = Complete then // deceased\n label + sprintf \" (%s %% %s)\"\n (Utils.formatTo3DecimalWithTrailingZero pctPopulation)\n (I18N.t \"charts.map.population\")\n + sprintf \"
%s: %d (%s %% %s)\"\n (I18N.t \"charts.map.confirmedCases\")\n totalConfirmed (Utils.formatTo3DecimalWithTrailingZero (float totalConfirmed * 100.0 / float population))\n (I18N.t \"charts.map.population\")\n + sprintf \"
%s: %s %%\"\n (I18N.t \"charts.map.mortalityOfConfirmedCases\")\n (Utils.formatTo1DecimalWithTrailingZero (float absolute * 100.0 / float totalConfirmed))\n else\n label\n let areaLocalized = I18N.tt \"mk.municipality\" area\n sprintf \"%s
%s
\" areaLocalized label\n\n let legend =\n let enabled = state.ContentType = ConfirmedCases \n {| enabled = enabled\n title = {| text = null |}\n align = \"right\"\n verticalAlign = \"bottom\"\n layout = \"vertical\"\n floating = false // SLO-spec true (in mk on phone we want to not cover the map)\n borderWidth = 1\n backgroundColor = \"white\"\n valueDecimals = 0 \n width = 58 // SLO-spec 70\n |}\n |> pojo\n\n let colorMax = \n match state.ContentType with\n | ConfirmedCases -> \n match state.DataTimeInterval with\n | Complete -> 20000.\n | LastDays days -> \n match days with\n | 21 -> 10500.\n | 14 -> 7000.\n | 7 -> 3500.\n | 1 -> 500.\n | _ -> 100.\n | Deceased -> \n let dataMax = data |> Seq.map(fun dp -> dp.value) |> Seq.max\n if dataMax < 1. then 10. else dataMax\n\n\n\n let colorMin = \n match state.DisplayType with \n | AbsoluteValues -> 0.9\n | RegionPopulationWeightedValues -> colorMax / 7000.\n | RelativeIncrease -> -100.\n\n let colorAxis = \n match state.ContentType with\n | Deceased ->\n {|\n ``type`` = \"linear\"\n tickInterval = 0.4\n max = colorMax \n min = colorMin \n endOnTick = false \n startOnTick = false \n stops =\n [|\n (0.000, \"#ffffff\")\n (0.111, \"#efedf5\")\n (0.222, \"#dadaeb\")\n (0.333, \"#bcbddc\")\n (0.444, \"#9e9ac8\")\n (0.556, \"#807dba\")\n (0.667, \"#6a51a3\")\n (0.778, \"#54278f\")\n (0.889, \"#3f007d\")\n |]\n |} |> pojo\n | ConfirmedCases ->\n match state.DisplayType with\n | AbsoluteValues -> \n {|\n ``type`` = \"logarithmic\"\n tickInterval = 0.4\n max = colorMax\n min = colorMin \n endOnTick = false\n startOnTick = false\n stops =\n [|\n (0.000,\"#ffffff\")\n (0.001,\"#fff7db\")\n (0.200,\"#ffefb7\") \n (0.280,\"#ffe792\") \n (0.360,\"#ffdf6c\") \n (0.440,\"#ffb74d\") \n (0.520,\"#ff8d3c\") \n (0.600,\"#f85d3a\") \n (0.680,\"#ea1641\") \n (0.760,\"#d0004e\") \n (0.840,\"#ad005b\") \n (0.920,\"#800066\") \n (0.999,\"#43006e\")\n |]\n reversed = true\n labels = \n {| \n formatter = fun() -> jsThis?value\n |} |> pojo\n |} |> pojo \n \n | RegionPopulationWeightedValues -> \n {|\n ``type`` = \"logarithmic\"\n tickInterval = 0.4\n max = colorMax\n min = colorMin \n endOnTick = false\n startOnTick = false\n stops =\n [|\n (0.000,\"#ffffff\")\n (0.001,\"#fff7db\")\n (0.200,\"#ffefb7\") \n (0.280,\"#ffe792\") \n (0.360,\"#ffdf6c\") \n (0.440,\"#ffb74d\") \n (0.520,\"#ff8d3c\") \n (0.600,\"#f85d3a\") \n (0.680,\"#ea1641\") \n (0.760,\"#d0004e\") \n (0.840,\"#ad005b\") \n (0.920,\"#800066\") \n (0.999,\"#43006e\")\n |]\n reversed = true\n labels = \n {| \n formatter = fun() -> jsThis?value\n |} |> pojo\n |} |> pojo\n | RelativeIncrease -> \n {| \n ``type`` = \"linear\"\n tickInterval = 50\n max = 200\n min = -100\n endOnTick = false\n startOnTick = false\n stops =\n [|\n (0.000,\"#009e94\")\n (0.166,\"#6eb49d\")\n (0.250,\"#b2c9a7\") \n (0.333,\"#f0deb0\") \n (0.500,\"#e3b656\")\n (0.600,\"#cc8f00\")\n (0.999,\"#b06a00\")\n |]\n reversed=false\n labels = \n {| \n formatter = fun() -> sprintf \"%s%%\" jsThis?value\n |} |> pojo\n |} |> pojo\n\n let lastDate = \n state.Data \n |> Seq.map (fun a ->\n match a.Cases with\n | Some c -> c |> Seq.tryLast\n |_ -> None ) \n |> Seq.pick (fun c -> \n match c with\n | Some c -> Some c.Date\n | _ -> None) \n\n let dateText = (I18N.tOptions \"charts.common.dataDate\" {| date = lastDate |})\n let noData = (I18N.t \"noData.skopjeMun\")\n \n let subtitle = if state.MapToDisplay = MapToDisplay.SkopjeMunicipality then noData else dateText\n\n {| Highcharts.optionsWithOnLoadEvent \"covid19-map\" with\n title = null\n subtitle = {| text = subtitle ; align=\"left\"; verticalAlign=\"bottom\" |}\n series = [| series geoJson |]\n legend = legend\n colorAxis = colorAxis\n tooltip =\n {|\n formatter = fun () -> tooltipFormatter state jsThis\n useHTML = true\n distance = 50\n |} |> pojo\n credits =\n {|\n enabled = true\n text =\n sprintf \"%s: %s, %s\"\n (I18N.t \"charts.common.dataSource\")\n (I18N.tOptions (\"charts.common.dsNIJZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n (I18N.tOptions (\"charts.common.dsMZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n mapTextFull = \"\"\n mapText = \"\"\n // SLO-spec href = \"https://www.nijz.si/sl/dnevno-spremljanje-okuzb-s-sars-cov-2-covid-19\"\n href = \"http://www.iph.mk\"\n position = {| align = \"right\" ; verticalAlign = \"bottom\" ; x = -10 ; y = -5 |}\n style = {| color = \"#999999\" ; cursor = \"pointer\" ; fontSize = \"9px\" |}\n |}\n |}\n |> Highcharts.map\n\nlet renderSelector option currentOption dispatch =\n let defaultProps =\n [ prop.text (option.ToString())\n Utils.classes\n [(true, \"chart-display-property-selector__item\")\n (option = currentOption, \"selected\") ] ]\n if option = currentOption\n then Html.div defaultProps\n else Html.div ((prop.onClick (fun _ -> dispatch option)) :: defaultProps)\n\nlet renderSelectors options currentOption dispatch =\n options\n |> List.map (fun option ->\n renderSelector option currentOption dispatch)\n\nlet renderDisplayTypeSelector state dispatch =\n let selectors = \n if state.ContentType = ConfirmedCases && state.MapToDisplay <> MapToDisplay.SkopjeMunicipality\n then [ RelativeIncrease; AbsoluteValues; RegionPopulationWeightedValues ]\n else [ AbsoluteValues; RegionPopulationWeightedValues ]\n Html.div [\n prop.className \"chart-display-property-selector\"\n prop.children (renderSelectors selectors state.DisplayType dispatch)\n ]\n\nlet renderDataTimeIntervalSelector state dispatch =\n if state.DisplayType <> RelativeIncrease then\n Html.div [\n prop.className \"chart-data-interval-selector\"\n prop.children ( Html.text \"\" :: renderSelectors dataTimeIntervals state.DataTimeInterval dispatch )\n ]\n else Html.none\n\nlet renderContentTypeSelector selected dispatch =\n let renderedTypes = seq {\n yield Html.option [\n prop.text (ContentType.ConfirmedCases.ToString())\n prop.value (ContentType.ConfirmedCases.ToString())\n ]\n yield Html.option [\n prop.text (ContentType.Deceased.ToString())\n prop.value (ContentType.Deceased.ToString())\n ]\n }\n\n Html.select [\n prop.value (selected.ToString())\n prop.className \"form-control form-control-sm filters__type\"\n prop.children renderedTypes\n prop.onChange (ContentTypeChanged >> dispatch)\n ]\n\nlet render (state : State) dispatch =\n Html.div [\n prop.children [\n Utils.renderChartTopControls [\n match state.MapToDisplay with\n | SkopjeMunicipality -> Html.none\n | _ ->\n Html.div [\n prop.className \"filters\"\n prop.children [\n renderContentTypeSelector state.ContentType dispatch \n renderDataTimeIntervalSelector state (DataTimeIntervalChanged >> dispatch)\n ]\n ]\n renderDisplayTypeSelector state (DisplayTypeChanged >> dispatch)\n ]\n Html.div [\n prop.className \"map\"\n prop.children [ renderMap state ]\n ]\n ]\n ]\n\nlet mapChart (props : {| mapToDisplay : MapToDisplay; data : RegionsData |}) =\n React.elmishComponent(\"MapChart\", init props.mapToDisplay props.data, update, render)","[]\nmodule MunicipalitiesChart\n\nopen System\nopen Elmish\nopen Browser\nopen Fable.Core.JsInterop\n\nopen Feliz\nopen Feliz.ElmishComponents\n\nopen Types\n\ntype DataToDisplay = Municipality | SkopjeMunicipality\n\nlet barMaxHeight = 65\nlet showMaxBars = 30\nlet collapsedMunicipalityCount = 16\n\nlet excludedMunicipalities = Set.ofList [\"kraj\"]\n\ntype Region =\n { Key : string\n Name : string }\n\ntype TotalsForDate =\n { Date : DateTime\n ActiveCases : int option\n ConfirmedToDate : int option\n DeceasedToDate : int option\n }\n\ntype Municipality =\n { Key : string\n Name : string option\n RegionKey : string\n DoublingTime : float option\n NewCases : int option\n ActiveCases : int option\n MaxActiveCases : int option\n MaxConfirmedCases : int option\n LastConfirmedCase : DateTime\n DaysSinceLastCase : int\n TotalsForDate : TotalsForDate list }\n\ntype View =\n | ActiveCases\n | TotalConfirmedCases\n | LastConfirmedCase\n | DoublingTime\n\ntype Query (query : obj, regions : Region list) =\n member this.Query = query\n member this.Regions =\n regions\n |> List.map (fun region -> region.Key)\n |> Set.ofList\n member this.Search =\n match query?(\"search\") with\n | Some (search : string) -> Some search\n | _ -> None\n member this.Region =\n match query?(\"region\") with\n | Some (region : string) when Set.contains (region.ToLower()) this.Regions ->\n Some (region.ToLower())\n | _ -> None\n member this.View =\n match query?(\"sort\") with\n | Some (sort : string) ->\n match sort.ToLower() with\n | \"active-cases\" -> Some ActiveCases\n | \"total-confirmed-cases\" -> Some TotalConfirmedCases\n | \"last-confirmed-case\" -> Some LastConfirmedCase\n | \"time-to-double\" ->\n match Highcharts.showDoublingTimeFeatures with\n | true -> Some DoublingTime\n | _ -> None\n | _ -> None\n | _ -> None\n\ntype State =\n { DataToDisplay : DataToDisplay\n Municipalities : Municipality seq\n Regions : Region list\n ShowAll : bool\n SearchQuery : string\n FilterByRegion : string\n View : View }\n\ntype Msg =\n | ToggleShowAll\n | SearchInputChanged of string\n | RegionFilterChanged of string\n | ViewChanged of View\n\nlet init (queryObj : obj) (dataToDisplay : DataToDisplay) (data : RegionsData) : State * Cmd =\n let lastDataPoint = List.last data\n\n let regions =\n lastDataPoint.Regions\n |> List.filter (fun region -> Set.contains region.Name Utils.Dictionaries.excludedRegions |> not)\n |> List.map (fun reg -> { Key = reg.Name ; Name = I18N.tt \"mk.region\" reg.Name }) // SLO-spec\n |> List.sortBy (fun region -> region.Name)\n\n let query = Query(queryObj, regions)\n\n let municipalities =\n seq {\n for regionsDataPoint in data do\n for region in regionsDataPoint.Regions do\n for municipality in region.Municipalities do\n if not (Set.contains municipality.Name excludedMunicipalities) then\n yield {| Date = regionsDataPoint.Date\n RegionKey = region.Name\n MunicipalityKey = municipality.Name\n ActiveCases = municipality.ActiveCases\n ConfirmedToDate = municipality.ConfirmedToDate\n DeceasedToDate = municipality.DeceasedToDate |} }\n |> Seq.groupBy (fun dp -> dp.MunicipalityKey)\n |> Seq.map (fun (municipalityKey, dp) ->\n let totals =\n dp\n |> Seq.map (\n fun dp -> {\n Date = dp.Date\n ActiveCases = dp.ActiveCases\n ConfirmedToDate = dp.ConfirmedToDate\n DeceasedToDate = dp.DeceasedToDate } )\n |> Seq.sortBy (fun dp -> dp.Date)\n |> Seq.toList\n let totalsShown = totals |> Seq.skip ((Seq.length totals) - showMaxBars) |> Seq.toList\n let maxConfirmed = totals |> Seq.tryLast |> Option.map (fun dp -> dp.ConfirmedToDate) |> Option.defaultValue None\n let lastChange = totals |> Seq.filter (fun dp -> dp.ConfirmedToDate = maxConfirmed) |> Seq.head\n let activeCases = totalsShown |> Seq.tryLast |> Option.map (fun dp -> dp.ActiveCases) |> Option.defaultValue None\n let maxActive = totalsShown |> Seq.map (fun dp -> dp.ActiveCases) |> Seq.max\n let dayBefore = totalsShown |> Seq.skip (Seq.length totalsShown - 2) |> Seq.tryHead |> Option.map (fun dp -> dp.ConfirmedToDate) |> Option.defaultValue None\n let newCases =\n match dayBefore, maxConfirmed with\n | Some before, Some last -> if last > before then Some (last - before) else None\n | None, Some last -> Some last\n | _ -> None\n let doublingTime =\n if activeCases.IsSome && activeCases.Value >= 1 (* SLO-spec SLO activeCases.Value >= 5 *)\n then \n dp\n |> Seq.map (fun dp -> {| Date = dp.Date ; Value = dp.ActiveCases |})\n |> Seq.toList\n |> Utils.findDoublingTime\n else None\n { Key = municipalityKey\n Name = Some (I18N.tt \"mk.municipality\" municipalityKey) // SLO-spec\n RegionKey = (dp |> Seq.last).RegionKey\n DoublingTime = doublingTime\n NewCases = newCases\n ActiveCases = activeCases\n MaxActiveCases = maxActive\n MaxConfirmedCases = maxConfirmed\n LastConfirmedCase = lastChange.Date\n DaysSinceLastCase = DateTime.Today.Subtract(lastChange.Date).Days\n TotalsForDate = totalsShown\n })\n\n let state =\n { DataToDisplay = dataToDisplay\n Municipalities = municipalities\n Regions = regions\n ShowAll = false\n SearchQuery = \n match query.Search with\n | None -> \"\"\n | Some search -> search\n FilterByRegion =\n match query.Region with\n | None -> \"\"\n | Some region -> region\n View =\n match query.View with\n | None -> if dataToDisplay = DataToDisplay.SkopjeMunicipality then ActiveCases else LastConfirmedCase\n | Some view -> view }\n\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n // trigger event for iframe resize\n let evt = document.createEvent(\"event\")\n evt.initEvent(\"chartLoaded\", true, true)\n document.dispatchEvent(evt) |> ignore\n\n match msg with\n | ToggleShowAll ->\n { state with ShowAll = not state.ShowAll }, Cmd.none\n | SearchInputChanged query ->\n { state with SearchQuery = query }, Cmd.none\n | RegionFilterChanged region ->\n { state with FilterByRegion = region }, Cmd.none\n | ViewChanged view ->\n { state with View = view }, Cmd.none\n\nlet renderMunicipality (state : State) (municipality : Municipality) =\n\n let renderLastCase =\n let label, value =\n match municipality.DaysSinceLastCase with\n | 0 -> I18N.t \"charts.municipalities.lastCase\", I18N.t \"charts.municipalities.today\"\n | 1 -> I18N.t \"charts.municipalities.lastCase\", I18N.t \"charts.municipalities.yesterday\"\n | x -> I18N.t \"charts.municipalities.lastCase\", I18N.tOptions \"days.x_days_ago\" {| count = x |}\n\n Html.div [\n prop.className \"last-case-days\"\n prop.children [\n Html.span [\n prop.className \"label\"\n prop.text label\n ]\n Html.span [\n prop.className \"value\"\n prop.text value\n ]\n ]\n ]\n\n let renderedDoublingTime =\n match municipality.DoublingTime with\n | None -> Html.none\n | Some value ->\n let displayValue = int (round value)\n Html.div [\n prop.className \"doubling-time\"\n prop.children [\n Html.span [\n prop.className \"label\"\n prop.text (I18N.t \"charts.municipalities.doubles\")\n ]\n Html.span [\n prop.className \"value\"\n prop.text (I18N.tOptions \"days.in_x_days\" {| count = displayValue |})\n ]\n ]\n ]\n\n let renderedBars =\n let maxValue = if state.View = TotalConfirmedCases then municipality.MaxConfirmedCases else municipality.MaxActiveCases\n match maxValue with\n | None -> Seq.empty\n | Some maxValue ->\n seq {\n for dp in municipality.TotalsForDate do\n match dp.ConfirmedToDate with\n | None ->\n yield Html.div [\n prop.className \"bar bar--empty\"\n ]\n | Some confirmedToDate ->\n yield Html.div [\n prop.className \"bar-wrapper\"\n prop.children [\n let activeCases = dp.ActiveCases |> Option.defaultValue 0\n let deceasedToDate = dp.DeceasedToDate |> Option.defaultValue 0\n let recoveredToDate = confirmedToDate - deceasedToDate - activeCases\n let aHeight = Math.Ceiling(float activeCases * float barMaxHeight / float maxValue)\n let dHeight = Math.Ceiling(float deceasedToDate * float barMaxHeight / float maxValue)\n let rHeight = confirmedToDate * barMaxHeight / maxValue - int dHeight - int aHeight\n Html.div [\n prop.className \"bar\"\n prop.children [\n if state.View = TotalConfirmedCases then\n Html.div [\n prop.style [ style.height (int dHeight) ]\n prop.className \"bar--deceased\" ]\n Html.div [\n prop.style [ style.height rHeight ]\n prop.className \"bar--recovered\" ]\n Html.div [\n prop.style [ style.height (int aHeight) ]\n prop.className \"bar--active\" ]\n ]\n ]\n Html.div [\n prop.className \"total-and-date total-and-date--hover\"\n prop.children [\n Html.div [\n prop.className \"date\"\n prop.text (I18N.tOptions \"days.date\" {| date = dp.Date |} )]\n Html.div [\n if (activeCases > 0) then\n prop.className \"active\"\n prop.children [\n Html.span [ prop.text (I18N.tOptions \"charts.map.last_x_days\" {| count = 7 |} + \": \") ]\n Html.b [ prop.text activeCases ] ] ]\n Html.div [\n if (recoveredToDate > 0) then\n prop.className \"recovered\"\n prop.children [\n Html.span [ prop.text (I18N.t \"charts.municipalities.recovered\") ]\n Html.b [ prop.text recoveredToDate ] ] ]\n Html.div [\n if (deceasedToDate > 0) then\n prop.className \"deceased\"\n prop.children [\n Html.span [ prop.text (I18N.t \"charts.municipalities.deceased\") ]\n Html.b [ prop.text deceasedToDate ] ] ]\n if state.DataToDisplay <> DataToDisplay.SkopjeMunicipality then\n Html.div [\n prop.className \"confirmed\"\n prop.children [\n Html.span [ prop.text (I18N.t \"charts.municipalities.all\") ]\n Html.b [ prop.text confirmedToDate ] ] ]\n ]\n ]\n ]\n ]\n }\n\n Html.div [\n prop.className \"municipality\"\n prop.children [\n Html.div [\n prop.className \"name\"\n prop.text (\n match municipality.Name with\n | None -> municipality.Key\n | Some name -> name)\n ]\n Html.div [\n prop.className \"positive-tests\"\n prop.children [\n Html.div [\n prop.className \"bars\"\n prop.children renderedBars\n ]\n Html.div [\n let showDate = state.DataToDisplay <> DataToDisplay.SkopjeMunicipality\n let className = if showDate then \"total-and-date\" else \"total-and-date no-date\"\n \n prop.className className\n prop.children [\n Html.div [\n prop.className \"active\"\n prop.text (sprintf \"%d\" (municipality.ActiveCases |> Option.defaultValue 0)) ]\n Html.div [\n prop.className \"total-and-new\"\n prop.children [\n Html.div [\n prop.className \"total\"\n prop.text (sprintf \"%d\" (municipality.MaxConfirmedCases |> Option.defaultValue 0)) ]\n if municipality.NewCases.IsSome then\n Html.div [\n prop.className \"new\"\n prop.text (sprintf \"(+%d)\" (municipality.NewCases |> Option.defaultValue 0)) ]\n ]\n ]\n if showDate\n then\n Html.div [\n prop.className \"date\"\n prop.text (I18N.tOptions \"days.date\" {| date = municipality.LastConfirmedCase.Date |})]\n ]\n ]\n ]\n ]\n if state.DataToDisplay <> DataToDisplay.SkopjeMunicipality then\n if Highcharts.showDoublingTimeFeatures then\n renderedDoublingTime\n else\n renderLastCase\n ]\n ]\n\nlet renderMunicipalities (state : State) _ =\n\n let dataFilteredByQuery =\n let query = state.SearchQuery.Trim().ToLower() |> Utils.transliterateCSZ\n if query = \"\"\n then state.Municipalities\n else\n state.Municipalities\n |> Seq.filter (fun municipality ->\n let name =\n match municipality.Name with\n | None -> municipality.Key\n | Some name -> name\n (name.ToLower() |> Utils.transliterateCSZ).Contains(query))\n\n let dataFilteredByRegion =\n dataFilteredByQuery\n |> Seq.filter (fun municipality ->\n if state.FilterByRegion = \"\"\n then true\n else municipality.RegionKey = state.FilterByRegion\n )\n\n let compareStringOption s1 s2 =\n match s1, s2 with\n | None, None -> 0\n | Some _, None -> 1\n | None, Some _ -> -1\n | Some s1, Some s2 -> String.Compare(s1, s2)\n\n let compareActiveCases m1 m2 =\n if m1.ActiveCases < m2.ActiveCases then 1\n else if m1.ActiveCases > m2.ActiveCases then -1\n else compareStringOption m1.Name m2.Name\n\n let compareMaxCases m1 m2 =\n if m1.MaxConfirmedCases < m2.MaxConfirmedCases then 1\n else if m1.MaxConfirmedCases > m2.MaxConfirmedCases then -1\n else compareStringOption m1.Name m2.Name\n\n let sortedMunicipalities =\n match state.View with\n | ActiveCases ->\n dataFilteredByRegion\n |> Seq.sortWith compareActiveCases\n | TotalConfirmedCases ->\n dataFilteredByRegion\n |> Seq.sortWith compareMaxCases\n | DoublingTime ->\n dataFilteredByRegion\n |> Seq.sortWith (fun m1 m2 ->\n match m1.DoublingTime, m2.DoublingTime with\n | None, None -> compareStringOption m1.Name m2.Name\n | Some _, None -> -1\n | None, Some _ -> 1\n | Some d1, Some d2 ->\n if d1 > d2 then 1\n else if d1 < d2 then -1\n else compareActiveCases m1 m2)\n | LastConfirmedCase ->\n dataFilteredByRegion\n |> Seq.sortWith (fun m1 m2 ->\n if m1.LastConfirmedCase < m2.LastConfirmedCase then 1\n else if m1.LastConfirmedCase > m2.LastConfirmedCase then -1\n else if m1.NewCases < m2.NewCases then 1\n else if m1.NewCases > m2.NewCases then -1\n else compareActiveCases m1 m2)\n\n let truncatedData, displayShowAllButton =\n if state.DataToDisplay = DataToDisplay.SkopjeMunicipality then sortedMunicipalities, false\n else if state.ShowAll then sortedMunicipalities, true\n else if Seq.length sortedMunicipalities <= collapsedMunicipalityCount then sortedMunicipalities, false\n else Seq.take collapsedMunicipalityCount sortedMunicipalities, true\n\n (truncatedData |> Seq.map (fun municipality -> renderMunicipality state municipality), displayShowAllButton)\n\nlet renderShowMore showAll dispatch =\n\n let scrollToElement (e: MouseEvent) =\n e.preventDefault ()\n\n dispatch ToggleShowAll\n\n let element =\n document.getElementById \"municipalities-chart\"\n\n let offset = -100.\n\n let position =\n element.getBoundingClientRect().top\n + window.pageYOffset\n + offset\n\n if showAll then\n window.scrollTo\n ({| top = position\n behavior = \"auto\" |}\n |> unbox) // behavior = smooth | auto\n\n Html.div [\n prop.className \"show-all\"\n prop.children [\n Html.div [\n Html.a [\n prop.className \"btn btn-primary\"\n prop.text (if showAll then I18N.t \"charts.municipalities.showLess\" else I18N.t \"charts.municipalities.showAll\")\n prop.onClick scrollToElement\n ]\n ]\n ]\n ]\n\n\nlet renderSearch (query : string) dispatch =\n Html.input [\n prop.className \"form-control form-control-sm filters__query\"\n prop.type' .text\n prop.placeholder (I18N.t \"charts.municipalities.search\")\n prop.valueOrDefault query\n prop.onChange (SearchInputChanged >> dispatch)\n ]\n\nlet renderRegionSelector (regions : Region list) (selected : string) dispatch =\n let renderedRegions = seq {\n yield Html.option [\n prop.text (I18N.t \"charts.municipalities.allRegions\")\n prop.value \"\"\n ]\n\n for region in regions do\n yield Html.option [\n prop.text region.Name\n prop.value region.Key\n ]\n }\n\n Html.select [\n prop.value selected\n prop.className \"form-control form-control-sm filters__region\"\n prop.children renderedRegions\n prop.onChange (RegionFilterChanged >> dispatch)\n ]\n\nlet renderView (currentView : View) (dataToDisplay : DataToDisplay) dispatch =\n\n let renderSelector (view : View) (label : string) =\n let defaultProps =\n [ prop.text label\n Utils.classes [\n (true, \"chart-display-property-selector__item\")\n (view = currentView, \"selected\") ] ]\n if view = currentView\n then Html.div defaultProps\n else Html.div ((prop.onClick (fun _ -> ViewChanged view |> dispatch)) :: defaultProps)\n\n if dataToDisplay <> DataToDisplay.SkopjeMunicipality\n then\n Html.div [\n prop.className \"chart-display-property-selector\"\n prop.children [\n Html.text (I18N.t \"charts.common.sortBy\")\n if Highcharts.showDoublingTimeFeatures then\n renderSelector View.DoublingTime (I18N.t \"charts.municipalities.viewDoublingTime\")\n renderSelector View.LastConfirmedCase (I18N.t \"charts.municipalities.viewLast\")\n renderSelector View.ActiveCases (I18N.tOptions \"charts.map.last_x_days\" {| count = 7 |})\n renderSelector View.TotalConfirmedCases (I18N.t \"charts.municipalities.viewTotal\")\n ]\n ]\n else\n Html.none\n\nlet render (state : State) dispatch =\n let renderedMunicipalities, showMore = renderMunicipalities state dispatch\n\n let element = Html.div [\n prop.children [\n Utils.renderChartTopControls [\n if state.DataToDisplay <> DataToDisplay.SkopjeMunicipality\n then \n Html.div [\n prop.className \"filters\"\n prop.children [\n renderRegionSelector state.Regions state.FilterByRegion dispatch\n renderSearch state.SearchQuery dispatch\n ]\n ]\n renderView state.View state.DataToDisplay dispatch\n ]\n Html.div [\n prop.className \"municipalities\"\n prop.children renderedMunicipalities ]\n (if showMore then renderShowMore state.ShowAll dispatch else Html.none)\n \n if state.DataToDisplay <> DataToDisplay.SkopjeMunicipality\n then\n Html.div [\n prop.className \"highcharts-subtitle\"\n prop.children [\n Html.p [\n prop.text (I18N.t \"noData.macedoniaMun\")\n ]\n ]\n prop.style [ \n style.marginLeft 10 \n style.marginRight 10 \n style.marginTop 20 \n ]\n ]\n else\n Html.none\n\n Html.div [\n prop.className \"credits\"\n prop.children [\n Html.a [\n // SLO-spec prop.href \"https://www.nijz.si/sl/dnevno-spremljanje-okuzb-s-sars-cov-2-covid-19\"\n prop.href \"http://www.iph.mk\"\n prop.text (sprintf \"%s: %s, %s\"\n (I18N.t \"charts.common.dataSource\")\n (I18N.tOptions (\"charts.common.dsNIJZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n (I18N.tOptions (\"charts.common.dsMZ\") {| context = localStorage.getItem (\"contextCountry\") |}))\n ]\n ]\n ]\n ]\n ]\n\n // trigger event for iframe resize\n let evt = document.createEvent(\"event\")\n evt.initEvent(\"chartLoaded\", true, true)\n document.dispatchEvent(evt) |> ignore\n\n element\n\nlet municipalitiesChart (props : {| query : obj ; dataToDisplay : DataToDisplay; data : RegionsData |}) =\n React.elmishComponent(\"MunicipalitiesChart\", init props.query props.dataToDisplay props.data, update, render)\n","module Data.OurWorldInData\n\nopen System\nopen Fable.SimpleHttp\nopen Fable.Extras.Web\n\nopen Types\n\n// let apiUrl = \"https://api.sledilnik.org/api/owid\" SLO-spec\nlet apiUrl = \"https://api.treker.mk/api/owid\"\n\ntype CountryIsoCode = string\n\ntype DataPoint = {\n CountryCode : CountryIsoCode\n Date : DateTime\n NewCases : int option\n NewCasesPerMillion : float option\n TotalCases : int option\n TotalCasesPerMillion : float option\n TotalDeaths : int option\n TotalDeathsPerMillion : float option\n}\n\n[]\ntype CountrySelection =\n | All\n | Selected of CountryIsoCode list\n\ntype Query =\n { DateFrom : DateTime option\n DateTo : DateTime option\n Countries : CountrySelection\n }\n\n with\n\n member this.URLSearchParams =\n [ this.DateFrom |> Option.map (fun date-> (\"from\", date.ToString(\"yyyy-MM-dd\")))\n this.DateTo |> Option.map (fun date-> (\"to\", date.ToString(\"yyyy-MM-dd\")))\n match this.Countries with\n | CountrySelection.All -> None\n | CountrySelection.Selected countries -> Some (\"countries\", (String.Join(\",\", countries))) ]\n |> List.choose id\n |> JSe.URLSearchParams\n\ntype OurWorldInDataRemoteData = RemoteData\n\nlet parseInt = Utils.nativeParseInt\n\nlet parseFloat = Utils.nativeParseFloat\n\nlet loadData (query : Query) msg =\n async {\n let url = JSe.URL apiUrl\n url.Search <- query.URLSearchParams.ToString()\n\n let! response =\n Http.request (url.ToString())\n |> Http.method GET\n |> Http.header (Headers.accept \"text/csv\")\n |>Http.send\n\n match response.statusCode = 200 with\n | false ->\n return sprintf\n \"Napaka pri nalaganju OurWorldInData podatkov: %d\" response.statusCode |> Failure |> msg\n | true ->\n let csv = response.content.ToString()\n let data =\n csv.Split(\"\\n\").[1..]\n |> Array.map (fun rowString ->\n let row = rowString.Split(\";\")\n try\n Some {\n Date = DateTime.Parse(row.[0])\n CountryCode = row.[1]\n NewCases = parseInt row.[2]\n NewCasesPerMillion = parseFloat row.[3]\n TotalCases = parseInt row.[4]\n TotalCasesPerMillion = parseFloat row.[5]\n TotalDeaths = parseInt row.[6]\n TotalDeathsPerMillion = parseFloat row.[7]\n }\n with\n | _ -> None\n )\n |> Array.choose id\n |> Array.toList\n\n return data |> Success |> msg\n }\n","[]\nmodule EuropeMap\n\nopen System\nopen Feliz\nopen Elmish\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Fable.SimpleHttp\nopen Browser\n\nopen Highcharts\nopen Types\nopen Data.OurWorldInData\n\nlet chartText = I18N.chartText \"europe\"\n\ntype MapToDisplay = Europe | World\n\nlet europeGeoJsonUrl = \"/maps/europe.geo.json\"\nlet worldGeoJsonUrl = \"/maps/world-robinson.geo.json\"\n\ntype GeoJson = RemoteData\n\ntype OwdData = OurWorldInDataRemoteData\n\ntype CountryData =\n { Country: string\n // OWD data\n TwoWeekIncidence100k: float\n TwoWeekIncidence: float []\n TwoWeekIncidenceMaxValue: float\n NewCases: int list\n OwdDate: DateTime\n // NIJZ data\n RestrictionColor: string\n RestrictionText: string\n RestrictionAltText: string\n ImportedFrom: int\n ImportedDate: DateTime }\n\ntype CountriesMap = Map\n\ntype ChartType =\n | TwoWeekIncidence\n | Restrictions\n | WeeklyIncrease\n\n override this.ToString() =\n match this with\n | TwoWeekIncidence -> chartText \"twoWeekIncidence\"\n | Restrictions -> chartText \"restrictions\"\n | WeeklyIncrease -> chartText \"weeklyIncrease\"\n\ntype State =\n { MapToDisplay : MapToDisplay\n Data : WeeklyStatsData\n Countries : CountrySelection\n GeoJson: GeoJson\n OwdData: OwdData\n CountryData: CountriesMap\n ChartType: ChartType }\n\ntype Msg =\n | GeoJsonRequested\n | GeoJsonLoaded of GeoJson\n | OwdDataRequested\n | OwdDataReceived of OwdData\n | ChartTypeChanged of ChartType\n\nlet worldCountries =\n [ \"AFG\" ; \"ALB\" ; \"DZA\" ; \"ASM\" ; \"AND\" ; \"AGO\" ; \"AIA\" ; \"ATA\" ; \"ATG\" ; \"ARG\" ; \"ARM\" ; \"ABW\" ; \"AUS\" ; \"AUT\" ; \"AZE\" ; \"BHS\" ; \"BHR\" ; \"BGD\" ; \"BRB\" ; \"BLR\" ; \"BEL\" ; \"BLZ\" ; \"BEN\" ; \"BMU\" ; \"BTN\" ; \"BOL\" ; \"BES\" ; \"BIH\" ; \"BWA\" ; \"BVT\" ; \"BRA\" ; \"IOT\" ; \"BRN\" ; \"BGR\" ; \"BFA\" ; \"BDI\" ; \"CPV\" ; \"KHM\" ; \"CMR\" ; \"CAN\" ; \"CYM\" ; \"CAF\" ; \"TCD\" ; \"CHL\" ; \"CHN\" ; \"CXR\" ; \"CCK\" ; \"COL\" ; \"COM\" ; \"COD\" ; \"COG\" ; \"COK\" ; \"CRI\" ; \"HRV\" ; \"CUB\" ; \"CUW\" ; \"CYP\" ; \"CZE\" ; \"CIV\" ; \"DNK\" ; \"DJI\" ; \"DMA\" ; \"DOM\" ; \"ECU\" ; \"EGY\" ; \"SLV\" ; \"GNQ\" ; \"ERI\" ; \"EST\" ; \"SWZ\" ; \"ETH\" ; \"FLK\" ; \"FRO\" ; \"FJI\" ; \"FIN\" ; \"FRA\" ; \"GUF\" ; \"PYF\" ; \"ATF\" ; \"GAB\" ; \"GMB\" ; \"GEO\" ; \"DEU\" ; \"GHA\" ; \"GIB\" ; \"GRC\" ; \"GRL\" ; \"GRD\" ; \"GLP\" ; \"GUM\" ; \"GTM\" ; \"GGY\" ; \"GIN\" ; \"GNB\" ; \"GUY\" ; \"HTI\" ; \"HMD\" ; \"VAT\" ; \"HND\" ; \"HKG\" ; \"HUN\" ; \"ISL\" ; \"IND\" ; \"IDN\" ; \"IRN\" ; \"IRQ\" ; \"IRL\" ; \"IMN\" ; \"ISR\" ; \"ITA\" ; \"JAM\" ; \"JPN\" ; \"JEY\" ; \"JOR\" ; \"KAZ\" ; \"KEN\" ; \"KIR\" ; \"PRK\" ; \"KOR\" ; \"KWT\" ; \"KGZ\" ; \"LAO\" ; \"LVA\" ; \"LBN\" ; \"LSO\" ; \"LBR\" ; \"LBY\" ; \"LIE\" ; \"LTU\" ; \"LUX\" ; \"MAC\" ; \"MDG\" ; \"MWI\" ; \"MYS\" ; \"MDV\" ; \"MLI\" ; \"MLT\" ; \"MHL\" ; \"MTQ\" ; \"MRT\" ; \"MUS\" ; \"MYT\" ; \"MEX\" ; \"FSM\" ; \"MDA\" ; \"MCO\" ; \"MNG\" ; \"MNE\" ; \"MSR\" ; \"MAR\" ; \"MOZ\" ; \"MMR\" ; \"NAM\" ; \"NRU\" ; \"NPL\" ; \"NLD\" ; \"NCL\" ; \"NZL\" ; \"NIC\" ; \"NER\" ; \"NGA\" ; \"NIU\" ; \"NFK\" ; \"MNP\" ; \"NOR\" ; \"OMN\" ; \"PAK\" ; \"PLW\" ; \"PSE\" ; \"PAN\" ; \"PNG\" ; \"PRY\" ; \"PER\" ; \"PHL\" ; \"PCN\" ; \"POL\" ; \"PRT\" ; \"PRI\" ; \"QAT\" ; \"MKD\" ; \"ROU\" ; \"RUS\" ; \"RWA\" ; \"REU\" ; \"BLM\" ; \"SHN\" ; \"KNA\" ; \"LCA\" ; \"MAF\" ; \"SPM\" ; \"VCT\" ; \"WSM\" ; \"SMR\" ; \"STP\" ; \"SAU\" ; \"SEN\" ; \"SRB\" ; \"SYC\" ; \"SLE\" ; \"SGP\" ; \"SXM\" ; \"SVK\" ; \"SVN\" ; \"SLB\" ; \"SOM\" ; \"ZAF\" ; \"SGS\" ; \"SSD\" ; \"ESP\" ; \"LKA\" ; \"SDN\" ; \"SUR\" ; \"SJM\" ; \"SWE\" ; \"CHE\" ; \"SYR\" ; \"TWN\" ; \"TJK\" ; \"TZA\" ; \"THA\" ; \"TLS\" ; \"TGO\" ; \"TKL\" ; \"TON\" ; \"TTO\" ; \"TUN\" ; \"TUR\" ; \"TKM\" ; \"TCA\" ; \"TUV\" ; \"UGA\" ; \"UKR\" ; \"ARE\" ; \"GBR\" ; \"UMI\" ; \"USA\" ; \"URY\" ; \"UZB\" ; \"VUT\" ; \"VEN\" ; \"VNM\" ; \"VGB\" ; \"VIR\" ; \"WLF\" ; \"ESH\" ; \"YEM\" ; \"ZMB\" ; \"ZWE\" ; \"ALA\" ; \"XKX\"]\n\nlet euCountries =\n [ \"ALB\"\n \"AND\"\n \"AUT\"\n \"BLR\"\n \"BEL\"\n \"BIH\"\n \"BGR\"\n \"HRV\"\n \"CYP\"\n \"CZE\"\n \"DNK\"\n \"EST\"\n \"FRO\"\n \"FIN\"\n \"FRA\"\n \"DEU\"\n \"GRC\"\n \"HUN\"\n \"ISL\"\n \"IRL\"\n \"ITA\"\n \"LVA\"\n \"LIE\"\n \"LTU\"\n \"LUX\"\n \"MKD\"\n \"MLT\"\n \"MDA\"\n \"MCO\"\n \"MNE\"\n \"NLD\"\n \"NOR\"\n \"POL\"\n \"PRT\"\n \"SRB\"\n \"ROU\"\n \"RUS\"\n \"SMR\"\n \"SVK\"\n \"SVN\"\n \"ESP\"\n \"SWE\"\n \"CHE\"\n \"TUR\"\n \"UKR\"\n \"GBR\"\n \"VAT\"\n \"XKX\"\n \"NCY\"\n \"NMA\" ]\n\nlet greenCountries =\n Map.ofList\n [\n (\"AUS\", \"\")\n (\"NZL\", \"\")\n (\"URY\", \"\")\n ]\n\nlet redCountries =\n Map.ofList\n [\n (\"AFG\", \"\")\n (\"ALB\", \"\")\n (\"DZA\", \"\")\n (\"AND\", \"\")\n (\"AGO\", \"\")\n (\"ARG\", \"\")\n (\"ARM\", \"\")\n (\"AUT\", \"vse razen administrativne enote Koroška (Kärnten)\")\n (\"AZE\", \"\")\n (\"BAH\", \"\")\n (\"BHR\", \"\")\n (\"BGD\", \"\")\n (\"BEL\", \"\")\n (\"BLZ\", \"\")\n (\"BLR\", \"\")\n (\"BEN\", \"\")\n (\"BGR\", \"administrativna enota: Blagoevgrad, Rasgrad, Sliven, Sofia (mesto Sofija), Targovishte\")\n (\"BOL\", \"\")\n (\"BIH\", \"\")\n (\"BRA\", \"\")\n (\"BFA\", \"\")\n (\"BDI\", \"\")\n (\"BTN\", \"\")\n (\"TCD\", \"\")\n (\"CZE\", \"\")\n (\"CHL\", \"\")\n (\"MNE\", \"\")\n (\"DNK\", \"administrativna enota: Hovedstaden, regija glavnega mesta\")\n (\"DOM\", \"\")\n (\"EGY\", \"\")\n (\"ECU\", \"\")\n (\"GNQ\", \"\")\n (\"ERI\", \"\")\n (\"EST\", \"administrativna enota: Jogeva\")\n (\"SWZ\", \"\")\n (\"ETH\", \"\")\n (\"PHL\", \"\")\n (\"FIN\", \"administrativna enota: Österbotten\")\n (\"FRA\", \"vse administrativne enote celinske Francije, čezmorsko ozemlje: Francoska Gvajana, Guadeloupe, Sveti Martin, La Réunion, Martinique\")\n (\"GAB\", \"\")\n (\"GMB\", \"\")\n (\"GHA\", \"\")\n (\"GEO\", \"\")\n (\"GUY\", \"\")\n (\"GTM\", \"\")\n (\"GIN\", \"\")\n (\"GNB\", \"\")\n (\"HTI\", \"\")\n (\"HND\", \"\")\n (\"HRV\", \"administrativne enote: Bjelovarsko-bilogorska, Dubrovniško-neretvanska, Karlovška, Krapinsko-zagorska, Liško-senjska, Medžimurska, Osiješko-baranjska, Požeško-slavonska, Sisaško-moslavška, Splitsko-dalmatinska, Varaždinska, Virovitiško-podravska, Vukovarsko-sremska, Zagreb (celotna županija, vključno z mestom Zagreb)\")\n (\"IND\", \"\")\n (\"IDN\", \"\")\n (\"IRQ\", \"\")\n (\"IRN\", \"\")\n (\"IRL\", \"\")\n (\"ISL\", \"\")\n (\"ITA\", \"administrativne enote: Abruzzo, Valle d'Aosta, Campania, Emilia-Romagna, Friuli Venezia Giulia, Lazio, Liguria, Lombardia, Piedmont, Sardegna, Toscana, Umbria, Veneto, Provincia autonoma di Bolzano – Alto Adige\")\n (\"ISR\", \"\")\n (\"JAM\", \"\")\n (\"YEM\", \"\")\n (\"JOR\", \"\")\n (\"ZAF\", \"\")\n (\"SSD\", \"\")\n (\"CMR\", \"\")\n (\"QAT\", \"\")\n (\"KAZ\", \"\")\n (\"KEN\", \"\")\n (\"KGZ\", \"\")\n (\"COL\", \"\")\n (\"COM\", \"\")\n (\"COG\", \"\")\n (\"COD\", \"\")\n (\"XKX\", \"\")\n (\"CRI\", \"\")\n (\"KWT\", \"\")\n (\"LSO\", \"\")\n (\"LBN\", \"\")\n (\"LBR\", \"\")\n (\"LBY\", \"\")\n (\"LIE\", \"\")\n (\"LTU\", \"administrativna enota: Šiaulių, Kaunas\")\n (\"LUX\", \"\")\n (\"MDG\", \"\")\n (\"HUN\", \"administrativne enote: Budimpešta, Baranya, Borsod-Abaúj-Zemplén, Csongrád-Csanád, Győr-Moson-Sopron, Pest, Hajdú-Bihar, Heves, Jász-Nagykun-Szolnok, Komárom-Esztergom, Nógrád, Pešta (Pest), Somogy, Szabolcs-Szatmár-Bereg, Vas, Veszprém, Zala\")\n (\"MWL\", \"\")\n (\"MDV\", \"\")\n (\"MLI\", \"\")\n (\"MLT\", \"\")\n (\"MAR\", \"\")\n (\"MRT\", \"\")\n (\"MEX\", \"\")\n (\"MDA\", \"\")\n (\"MNG\", \"\")\n (\"MOZ\", \"\")\n (\"NPL\", \"\")\n (\"NIG\", \"\")\n (\"NGA\", \"\")\n (\"NIC\", \"\")\n (\"NLD\", \"\")\n (\"OMN\", \"\")\n (\"PAK\", \"\")\n (\"PAN\", \"\")\n (\"PNG\", \"\")\n (\"PRY\", \"\")\n (\"PER\", \"\")\n (\"POL\", \"\")\n (\"PRT\", \"administrativna enota: Lizbona (Lisboa), Norte\")\n (\"ROU\", \"\")\n (\"RUS\", \"\")\n (\"SLV\", \"\")\n (\"STP\", \"\")\n (\"SAU\", \"\")\n (\"SEN\", \"\")\n (\"PRK\", \"\")\n (\"MKD\", \"\")\n (\"SLE\", \"\")\n (\"SYR\", \"\")\n (\"CIV\", \"\")\n (\"SVK\", \"\")\n (\"SOM\", \"\")\n (\"CAF\", \"\")\n (\"SUR\", \"\")\n (\"ESP\", \"vse administrativne enote razen Kanarski otoki (Islas Canarias)\")\n (\"SWE\", \"administrativne enote: Jämtland, Jönköping, Örebro, Östergötland, Stockholm, Uppsala\")\n (\"CHE\", \"\")\n (\"TJK\", \"\")\n (\"TZA\", \"\")\n (\"TGO\", \"\")\n (\"TTO\", \"\")\n (\"TUN\", \"\")\n (\"TUR\", \"\")\n (\"TKM\", \"\")\n (\"UKR\", \"\")\n (\"UZB\", \"\")\n (\"VEN\", \"\")\n (\"TLS\", \"\")\n (\"ZMB\", \"\")\n (\"USA\", \"\")\n (\"ARE\", \"\")\n (\"ZWE\", \"\")\n ]\n\nlet loadEuropeGeoJson =\n async {\n let! (statusCode, response) = Http.get europeGeoJsonUrl\n\n if statusCode <> 200 then\n return GeoJsonLoaded\n (sprintf \"Error loading map: %d\" statusCode\n |> Failure)\n else\n try\n let data = response |> Fable.Core.JS.JSON.parse\n return GeoJsonLoaded(data |> Success)\n with ex ->\n return GeoJsonLoaded\n (sprintf \"Error loading map: %s\" ex.Message\n |> Failure)\n }\n\nlet loadWorldGeoJson =\n async {\n let! (statusCode, response) = Http.get worldGeoJsonUrl\n\n if statusCode <> 200 then\n return GeoJsonLoaded\n (sprintf \"Error loading map: %d\" statusCode\n |> Failure)\n else\n try\n let data = response |> Fable.Core.JS.JSON.parse\n return GeoJsonLoaded(data |> Success)\n with ex ->\n return GeoJsonLoaded\n (sprintf \"Error loading map: %s\" ex.Message\n |> Failure)\n }\n\nlet init (mapToDisplay: MapToDisplay) (data: WeeklyStatsData): State * Cmd =\n let cmdGeoJson = Cmd.ofMsg GeoJsonRequested\n let cmdOwdData = Cmd.ofMsg OwdDataRequested\n { MapToDisplay = mapToDisplay\n Data = data\n Countries =\n match mapToDisplay with\n | World -> CountrySelection.All\n | Europe -> CountrySelection.Selected euCountries\n GeoJson = NotAsked\n OwdData = NotAsked\n CountryData = Map.empty\n ChartType =\n match mapToDisplay with\n | Europe -> TwoWeekIncidence\n (* | Europe -> Restrictions SLO-spec *)\n | World -> TwoWeekIncidence },\n (cmdGeoJson @ cmdOwdData)\n\nlet prepareCountryData (data: DataPoint list) (weeklyData: WeeklyStatsData) =\n let dataForLastTwoWeeks = Array.sub weeklyData (weeklyData.Length - 2) 2\n let importedFrom = dataForLastTwoWeeks |> Data.WeeklyStats.countryTotals |> Map.ofArray\n let importedDate = (Array.last dataForLastTwoWeeks).DateTo\n\n let last n xs = List.toSeq xs |> Seq.skip (xs.Length - n) |> Seq.toList\n\n data\n |> List.groupBy (fun dp -> dp.CountryCode)\n |> List.map (fun (code, dps) ->\n let fixedCode =\n if code = \"OWID_KOS\" then \"XKX\" else code // hack for Kosovo code\n\n let country = I18N.tt \"country\" code // TODO: change country code in i18n for Kosovo\n\n let incidence100k =\n (dps\n |> List.map (fun dp -> dp.NewCasesPerMillion)\n |> List.choose id\n |> last 14 // select the last two weeks\n |> List.sum)\n / 10.\n\n let incidence =\n dps\n |> List.map (fun dp -> dp.NewCasesPerMillion)\n |> List.choose id\n |> last 14\n |> List.toArray\n\n let incidenceMaxValue =\n if incidence.Length = 0\n then 0.\n else incidence |> Array.toList |> last 14 |> List.max\n\n let newCases =\n dps |> List.map (fun dp -> dp.NewCases |> Utils.optionToInt)\n\n let owdDate =\n dps |> List.map (fun dp -> dp.Date) |> List.max\n\n let red, green =\n redCountries.TryFind(fixedCode),\n greenCountries.TryFind(fixedCode)\n let rText, rColor, rAltText =\n match fixedCode with\n | \"SVN\" -> chartText \"statusNone\", \"#10829a\", \"\"\n | _ ->\n match red with\n | Some redNote ->\n if redNote.Length > 0\n then chartText \"statusRed\", \"#FF9057\", redNote\n else chartText \"statusRed\", \"#FF5348\", redNote\n | _ ->\n match green with\n | Some greenNote -> chartText \"statusGreen\", \"#C4DE6F\", greenNote\n | _ -> chartText \"statusOrange\", \"#FFC65A\", \"\"\n\n let imported =\n importedFrom.TryFind(fixedCode)\n |> Option.defaultValue 0\n\n let cd: CountryData =\n { CountryData.Country = country\n CountryData.TwoWeekIncidence100k = incidence100k\n CountryData.TwoWeekIncidence = incidence\n CountryData.TwoWeekIncidenceMaxValue = incidenceMaxValue\n CountryData.NewCases = newCases\n CountryData.OwdDate = owdDate\n CountryData.RestrictionColor = rColor\n CountryData.RestrictionText = rText\n CountryData.RestrictionAltText = rAltText\n CountryData.ImportedFrom = imported\n CountryData.ImportedDate = importedDate }\n\n (fixedCode, cd))\n |> Map.ofList\n\nlet update (msg: Msg) (state: State): State * Cmd =\n\n let owdCountries =\n match state.Countries with\n | CountrySelection.All ->\n CountrySelection.All\n | CountrySelection.Selected countries ->\n countries\n |> List.map (fun code -> if code = \"XKX\" then \"OWID_KOS\" else code) // hack for Kosovo code\n |> CountrySelection.Selected\n\n match msg with\n | GeoJsonRequested ->\n let cmd =\n match state.MapToDisplay with\n | Europe -> Cmd.OfAsync.result loadEuropeGeoJson\n | World -> Cmd.OfAsync.result loadWorldGeoJson\n { state with GeoJson = Loading }, cmd\n | GeoJsonLoaded geoJson -> { state with GeoJson = geoJson }, Cmd.none\n | OwdDataRequested ->\n let someWeeksAgo = DateTime.Today.AddDays(-21.0) // increased to 21 days from 14\n let cmd = Cmd.OfAsync.result (loadData {\n Countries = owdCountries\n DateFrom = Some someWeeksAgo\n DateTo = None } OwdDataReceived)\n { state with OwdData = Loading }, cmd\n | OwdDataReceived result ->\n let ret =\n match result with\n | Success owdData ->\n { state with\n OwdData = result\n CountryData = prepareCountryData owdData state.Data }\n | _ -> { state with OwdData = result }\n\n ret, Cmd.none\n | ChartTypeChanged chartType -> { state with ChartType = chartType }, Cmd.none\n\n\nlet mapData state =\n let countries =\n match state.Countries with\n | CountrySelection.All -> worldCountries\n | CountrySelection.Selected countries -> countries\n\n countries\n |> List.map (fun code ->\n match state.CountryData.TryFind(code) with\n | Some cd ->\n let incidence100k = cd.TwoWeekIncidence100k |> int\n let incidence = cd.TwoWeekIncidence\n let incidenceMaxValue = cd.TwoWeekIncidenceMaxValue\n\n let nc =\n cd.NewCases\n |> List.tryLast\n |> Option.defaultValue 0\n\n let cases = cd.NewCases |> List.toArray\n\n let casesLastWeek = Array.sub cases (cases.Length - 7) 7 |> Array.sum\n let casesWeekBefore = Array.sub cases (cases.Length - 14) 7 |> Array.sum\n let relativeIncrease =\n if casesWeekBefore > 0\n then 100. * (float casesLastWeek/ float casesWeekBefore - 1.) |> min 500.\n else\n 0.\n\n let last n xs = List.toSeq xs |> Seq.skip (xs.Length - n) |> Seq.toList\n let twoWeekCaseNumbers =\n cd.NewCases\n |> List.filter(fun x -> x > 0) // filter out date with missing data\n |> last 14 // take the last 14 non zero data points\n |> List.toArray\n |> Array.map float\n\n let ncDate =\n (I18N.tOptions \"days.date\" {| date = cd.OwdDate |})\n\n let impDate =\n (I18N.tOptions \"days.date\" {| date = cd.ImportedDate |})\n\n let baseRec =\n {| code = code\n country = cd.Country\n incidence100k = incidence100k\n incidence = incidence\n incidenceMaxValue = incidenceMaxValue\n newCases = nc\n weeklyIncrease = relativeIncrease\n twoWeekCases = twoWeekCaseNumbers\n ncDate = ncDate\n rType = cd.RestrictionText\n rAltText = cd.RestrictionAltText\n imported = cd.ImportedFrom\n impDate = impDate |}\n\n match state.ChartType with\n | TwoWeekIncidence ->\n {| baseRec with\n value = max (float incidence100k) 0.001\n color = null\n dataLabels = {| enabled = false |} |}\n | Restrictions ->\n {| baseRec with\n value = float cd.ImportedFrom\n color = cd.RestrictionColor\n dataLabels = {| enabled = cd.ImportedFrom > 0 |} |}\n | WeeklyIncrease ->\n {| baseRec with\n value = relativeIncrease\n color = null\n dataLabels = {| enabled = false |} |}\n | _ ->\n {| code = code\n country = \"\"\n value = 0.1\n color = null\n dataLabels = {| enabled = false |}\n incidence100k = 0\n incidence = null\n incidenceMaxValue = 0.0\n newCases = 0\n weeklyIncrease = 0.\n twoWeekCases = [| |]\n ncDate = \"\"\n rType = \"\"\n rAltText = \"\"\n imported = 0\n impDate = \"\" |})\n |> List.toArray\n\nlet renderMap state geoJson _ =\n\n let legend =\n let enabled = state.ChartType <> Restrictions\n {| enabled = enabled\n title = {| text = null |}\n align = if state.MapToDisplay = World then \"left\" else \"right\"\n verticalAlign = if state.MapToDisplay = World then \"bottom\" else \"top\"\n layout = \"vertical\"\n floating = true\n borderWidth = 1\n backgroundColor = \"white\"\n valueDecimals = 0\n width = 70\n |}\n |> pojo\n\n let colorAxis =\n match state.ChartType with\n | TwoWeekIncidence ->\n {|\n ``type`` = \"logarithmic\"\n tickInterval = 0.4\n max = 7000\n min = 1\n endOnTick = false\n startOnTick = false\n stops =\n [|\n (0.000,\"#ffffff\")\n (0.001,\"#fff7db\")\n (0.200,\"#ffefb7\")\n (0.280,\"#ffe792\")\n (0.360,\"#ffdf6c\")\n (0.440,\"#ffb74d\")\n (0.520,\"#ff8d3c\")\n (0.600,\"#f85d3a\")\n (0.680,\"#ea1641\")\n (0.760,\"#d0004e\")\n (0.840,\"#ad005b\")\n (0.920,\"#800066\")\n (0.999,\"#43006e\")\n |]\n reversed = true\n labels =\n {|\n formatter = fun() -> jsThis?value\n |} |> pojo\n |} |> pojo\n | Restrictions ->\n {|\n ``type`` = \"linear\"\n tickInterval = 0.4\n max = 7000\n min = 1\n endOnTick = false\n startOnTick = false\n stops =\n [|\n (0.000,\"#ffffff\")\n (0.001,\"#fff7db\")\n (0.200,\"#ffefb7\")\n (0.280,\"#ffe792\")\n (0.360,\"#ffdf6c\")\n (0.440,\"#ffb74d\")\n (0.520,\"#ff8d3c\")\n (0.600,\"#f85d3a\")\n (0.680,\"#ea1641\")\n (0.760,\"#d0004e\")\n (0.840,\"#ad005b\")\n (0.920,\"#800066\")\n (0.999,\"#43006e\")\n |]\n reversed = true\n labels =\n {|\n formatter = fun() -> jsThis?value\n |} |> pojo\n |} |> pojo\n | WeeklyIncrease ->\n {|\n ``type`` = \"linear\"\n tickInterval = 50\n max = 200\n min = -100\n endOnTick = false\n startOnTick = false\n stops =\n [|\n (0.000,\"#009e94\")\n (0.166,\"#6eb49d\")\n (0.250,\"#b2c9a7\")\n (0.333,\"#f0deb0\")\n (0.500,\"#e3b656\")\n (0.600,\"#cc8f00\")\n (0.999,\"#b06a00\")\n |]\n reversed=false\n labels =\n {|\n formatter = fun() -> sprintf \"%s%%\" jsThis?value\n |} |> pojo\n |} |> pojo\n\n\n let sparklineFormatter newCases =\n let desaturateColor (rgb:string) (sat:float) =\n let argb = Int32.Parse (rgb.Replace(\"#\", \"\"), Globalization.NumberStyles.HexNumber)\n let r = (argb &&& 0x00FF0000) >>> 16\n let g = (argb &&& 0x0000FF00) >>> 8\n let b = (argb &&& 0x000000FF)\n let avg = (float(r + g + b) / 3.0) * 1.6\n let newR = int (Math.Round (float(r) * sat + avg * (1.0 - sat)))\n let newG = int (Math.Round (float(g) * sat + avg * (1.0 - sat)))\n let newB = int (Math.Round (float(b) * sat + avg * (1.0 - sat)))\n sprintf \"#%02x%02x%02x\" newR newG newB\n\n let maxCases = newCases |> Array.max\n let tickScale = max 1. (10. ** round (Math.Log10 (maxCases + 1.) - 1.))\n\n let color1 = \"#bda506\"\n let color2 = desaturateColor color1 0.6\n\n let columnColors = [| ([|color2 |] |> Array.replicate 7 |> Array.concat); ([| color1 |] |> Array.replicate 7 |> Array.concat) |] |> Array.concat\n let options =\n {|\n chart =\n {|\n ``type`` = \"column\"\n backgroundColor = \"transparent\"\n |} |> pojo\n credits = {| enabled = false |}\n xAxis =\n {|\n visible = true\n labels = {| enabled = false |}\n title = {| enabled = false |}\n tickInterval = 7\n lineColor = \"#696969\"\n tickColor = \"#696969\"\n tickLength = 4\n |}\n yAxis =\n {|\n title = {| enabled = false |}\n visible = true\n opposite = true\n min = 0.\n max = newCases |> Array.max\n tickInterval = tickScale\n endOnTick = true\n startOnTick = false\n allowDecimals = false\n showFirstLabel = true\n showLastLabel = true\n gridLineColor = \"#000000\"\n gridLineDashStyle = \"dot\"\n |} |> pojo\n title = {| text = \"\" |}\n legend = {| enabled = false |}\n series =\n [|\n {|\n data = newCases |> Array.map ( max 0.)\n animation = false\n colors = columnColors\n borderColor = columnColors\n pointWidth = 15 //\n colorByPoint = true\n |} |> pojo\n |]\n |} |> pojo\n match state.MapToDisplay with\n | Europe ->\n Fable.Core.JS.setTimeout (fun () -> sparklineChart(\"tooltip-chart-eur\", options)) 10 |> ignore\n \"\"\"
\"\"\"\n | World ->\n Fable.Core.JS.setTimeout (fun () -> sparklineChart(\"tooltip-chart-world\", options)) 10 |> ignore\n \"\"\"
\"\"\"\n\n let tooltipFormatter jsThis =\n let points = jsThis?point\n let twoWeekIncidence = points?incidence\n let country = points?country\n let incidence100k = points?incidence100k\n let newCases = points?newCases\n let twoWeekCases = points?twoWeekCases\n let ncDate = points?ncDate\n let imported = points?imported\n let impDate = points?impDate\n let rType = points?rType\n let rAltText = points?rAltText\n let weeklyIncrease = points?weeklyIncrease\n\n\n (* SLO-spec mk has no imported cases\n let textHtml =\n sprintf \"%s
\n %s: %s
%s

\n %s: %s (%s)

\n %s: %s
\n %s: %s (%s)
\"\n country\n (chartText \"countryStatus\") rType rAltText\n (chartText \"importedCases\") imported impDate\n (chartText \"incidence100k\") incidence100k\n (chartText \"newCases\") newCases ncDate\n + sprintf \"
%s: %s%s%%\" (I18N.t \"charts.map.relativeIncrease\") (if weeklyIncrease < 500. then \"\" else \">\") (weeklyIncrease |> Utils.formatTo1DecimalWithTrailingZero)\n *)\n\n let textHtml =\n sprintf \"%s
\n %s: %s
\n %s: %s (%s)
\"\n country\n (chartText \"incidence100k\") incidence100k\n (chartText \"newCases\") newCases ncDate\n + sprintf \"
%s: %s%s%%\" (I18N.t \"charts.map.relativeIncrease\") (if weeklyIncrease < 500. then \"\" else \">\") (weeklyIncrease |> Utils.formatTo1DecimalWithTrailingZero)\n\n match twoWeekIncidence with\n | null -> chartText \"noData\"\n | _ ->\n if (twoWeekCases |> Array.max) > 0. then\n textHtml + sparklineFormatter twoWeekCases\n else\n textHtml\n\n let series geoJson =\n {| visible = true\n mapData = geoJson\n data = mapData state\n joinBy = [| \"iso-a3\"; \"code\" |]\n nullColor = \"white\"\n borderColor = \"#888\"\n borderWidth = 0.5\n mapline = {| animation = {| duration = 0 |} |}\n states =\n {| normal = {| animation = {| duration = 0 |} |}\n hover =\n {| borderColor = \"black\"\n animation = {| duration = 0 |} |} |} |}\n |> pojo\n\n {| optionsWithOnLoadEvent \"covid19-europe-map\" with\n title = null\n series = [| series geoJson |]\n colorAxis = colorAxis\n legend = legend\n tooltip =\n pojo\n {| formatter = fun () -> tooltipFormatter jsThis\n useHTML = true\n distance = 50 |}\n credits =\n pojo\n {| enabled = true\n text =\n sprintf \"%s: %s, %s\" (I18N.t \"charts.common.dataSource\") (I18N.tOptions (\"charts.common.dsNIJZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n (I18N.tOptions (\"charts.common.dsMZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n mapTextFull = \"\"\n mapText = \"\"\n href = \"https://ourworldindata.org/coronavirus\" |} |}\n |> map\n\n\nlet renderChartTypeSelectors (activeChartType: ChartType) dispatch =\n let renderChartSelector (chartSelector: ChartType) =\n let active = chartSelector = activeChartType\n Html.div [\n prop.onClick (fun _ -> dispatch chartSelector)\n Utils.classes\n [(true, \"chart-display-property-selector__item\")\n (active, \"selected\")]\n prop.text (chartSelector.ToString())\n ]\n\n Html.div\n [ prop.className \"chart-display-property-selector\"\n prop.children\n [ // SLO-spec renderChartSelector Restrictions\n renderChartSelector TwoWeekIncidence\n renderChartSelector WeeklyIncrease\n ]\n ]\n\n\nlet render (state: State) dispatch =\n\n let chart =\n match state.GeoJson, state.OwdData with\n | Success geoJson, Success owdData -> renderMap state geoJson owdData\n | Failure err, _ -> Utils.renderErrorLoading err\n | _, Failure err -> Utils.renderErrorLoading err\n | _ -> Utils.renderLoading\n\n Html.div\n [ prop.children\n [ Utils.renderChartTopControls [ renderChartTypeSelectors state.ChartType (ChartTypeChanged >> dispatch) ]\n Html.div\n [ prop.style [ style.height 550 ]\n prop.className \"map\"\n prop.children [ chart ] ] ] ]\n\nlet mapChart (props : {| mapToDisplay : MapToDisplay; data : WeeklyStatsData |}) =\n React.elmishComponent (\"EuropeMapChart\", init props.mapToDisplay props.data, update, render)\n","[]\nmodule Days\n\nopen System\n\nlet daysInYear year =\n match DateTime.IsLeapYear year with\n | true -> 366\n | false -> 365\n\n// NOTE: Fable's (or JS?) implementation of DateTime incorrectly calculates\n// the count of days between two dates when there is a Daylight Saving Time\n// switch in-between, so use this function instead.\nlet between (date1: DateTime) (date2: DateTime) =\n let yearsDays =\n seq { date1.Year .. (date2.Year - 1) }\n |> Seq.sumBy daysInYear\n\n date2.DayOfYear - date1.DayOfYear + yearsDays\n\nlet add (daysToAdd: int) (date: DateTime) =\n (date.Date.AddDays (daysToAdd |> float)).Date\n","module AgeGroupsTimelineViz.Analysis\n\nopen System\nopen System.Collections.Generic\nopen Types\n\ntype DateTuple<'T> = DateTime * 'T\ntype DateTupleList<'T> = DateTuple<'T> list\ntype DatedArray<'T> = {\n StartDate: DateTime\n Data: 'T[]\n}\n\nlet mapDateTuplesListToArray (dateTupleList: DateTupleList<'T>)\n : DatedArray<'T> =\n // find the first and the last dates in the list\n let (firstDate, _) = dateTupleList |> List.minBy(fun (date, _) -> date.Date)\n let (lastDate, _) = dateTupleList |> List.maxBy(fun (date, _) -> date.Date)\n\n // from that, we can know the size of the resulting array\n let arraySize = (Days.between firstDate lastDate) + 1\n\n // create an empty array\n let array: 'T[] = Array.zeroCreate arraySize\n\n // now fill the array with the values from the original list\n dateTupleList\n |> List.iter(fun (date, itemData) ->\n let daysSince = Days.between firstDate date\n array.[daysSince] <- itemData\n )\n\n { StartDate = firstDate; Data = array }\n\nlet trimDatedArray trimPredicate (datedArray: DatedArray<'T>) =\n let trimmedLeading =\n datedArray.Data\n |> Array.skipWhile trimPredicate\n\n // we need to increment the start date by the count of trimmed leading days\n let daysToIncrement =\n (datedArray.Data |> Array.length) - (trimmedLeading |> Array.length)\n\n let newStartDate = datedArray.StartDate |> Days.add daysToIncrement\n\n let trimmed =\n trimmedLeading\n |> Array.rev\n |> Array.skipWhile trimPredicate\n |> Array.rev\n\n { StartDate = newStartDate; Data = trimmed }\n\nlet mapDatedArrayItems mapping datedArray =\n let startDate = datedArray.StartDate\n let originalArray = datedArray.Data\n { StartDate = startDate; Data = originalArray |> Array.map mapping }\n\nlet mapDatedArray mapping datedArray =\n let startDate = datedArray.StartDate\n let originalArray = datedArray.Data\n { StartDate = startDate; Data = originalArray |> mapping }\n\ntype CasesByAgeGroupsForDay = AgeGroupsList\n\ntype CasesByAgeGroupsTimeline = DatedArray\n\nlet calcCasesByAgeForDay\n (prevDay: AgeGroupsList option)\n (currentDay: AgeGroupsList): AgeGroupsList =\n\n let calcIntOptionDiff value1 value2 =\n match value1, value2 with\n | Some value1, Some value2 ->\n // sometimes NIJZ's data is corrected and total cases can decrease,\n // so we need to ignore this for the purposes of our visualization\n max (value2 - value1) 0 |> Some\n | Some _, None -> None\n | None, Some value2 -> Some value2\n | None, None -> None\n\n let calcAgeGroupDiff\n (prevDay: IDictionary) ageGroup =\n match prevDay.TryGetValue ageGroup.GroupKey with\n | true, prevDayGroup ->\n { GroupKey = ageGroup.GroupKey\n Male = calcIntOptionDiff prevDayGroup.Male ageGroup.Male\n Female = calcIntOptionDiff prevDayGroup.Female ageGroup.Female\n All = calcIntOptionDiff prevDayGroup.All ageGroup.All\n }\n | false, _ -> ageGroup\n\n match prevDay with\n | None -> currentDay\n | Some prevDay ->\n // create a dictionary of prevDay age groups\n let prevDayGroups =\n prevDay\n |> List.map (fun ageGroup -> (ageGroup.GroupKey, ageGroup))\n |> dict\n\n currentDay\n // for each age group of currentDay find the group in prevDay\n // and calculate the difference\n |> List.map (fun ageGroup -> calcAgeGroupDiff prevDayGroups ageGroup)\n\nlet calculateCasesByAgeTimeline\n (totalCasesByAgeGroups: CasesByAgeGroupsTimeline)\n : CasesByAgeGroupsTimeline =\n\n // returns False if there is at least one new infection for any\n // age group for the given day\n let thereAreNoCases (forDay: CasesByAgeGroupsForDay) =\n forDay\n |> List.exists\n (fun group ->\n match group.All with\n | Some cases -> cases > 0\n | None -> false\n )\n |> not\n\n let totalCasesTimelineArray: AgeGroupsList option[] =\n Array.append\n [| None |]\n (totalCasesByAgeGroups.Data |> Array.map Some)\n\n let newCasesTimelineArray =\n totalCasesTimelineArray\n |> Array.pairwise\n |> Array.map\n (fun (prevDayRecord, currentDayRecord) ->\n match prevDayRecord, currentDayRecord with\n | Some prevDay, Some currentDay ->\n calcCasesByAgeForDay (Some prevDay) currentDay\n | None, Some currentDay ->\n calcCasesByAgeForDay None currentDay\n | _ -> invalidOp \"BUG: this should never happen\"\n )\n\n { StartDate = totalCasesByAgeGroups.StartDate\n Data = newCasesTimelineArray\n }\n // skip initial and trailing days without any cases\n |> trimDatedArray thereAreNoCases\n","module Statistics\n\nopen System\n\ntype SeriesValue<'XAxis> = 'XAxis * float\ntype SeriesValues<'XAxis> = SeriesValue<'XAxis>[]\n\n/// \n/// A function that returns the key for a given data value object.\n/// \n/// The type of data value object.\n/// The type of key for the value object\n/// (like int or DateTime).\ntype ValueItemKeyFunc<'T, 'TKey> = ('T -> 'TKey)\n\n/// \n/// A function that returns the value for a given data value object.\n/// \n/// The type of data value object.\ntype ValueItemValueFunc<'T> = ('T -> float)\n\n/// \n/// A function that calculates the moving average value for a given array\n/// values.\n/// \n/// The type of key for the value\n/// (like int or DateTime).\n/// The type of value.\n/// The function that returns the key of the pair.\n/// The function that returns the value of the pair.\n/// \n/// A key-value pair containing the average value and its\n/// corresponding key.\ntype MovingAverageFunc<'TKey, 'TValue> =\n ValueItemKeyFunc<'TKey, 'TValue> -> ValueItemValueFunc<'TKey> -> 'TKey[]\n -> ('TValue * float)\n\n/// \n/// Calculates the centered moving average for a given array of values.\n/// \n/// \n/// The centered moving average takes the day that is at the center of the\n/// values array as the target day of the average.\n/// \n/// The type of key for the value\n/// (like int or DateTime).\n/// The type of value.\n/// The function that returns the key of the pair.\n/// The function that returns the value of the pair.\nlet movingAverageCentered: MovingAverageFunc<'TKey, 'TValue> =\n fun keyFunc valueFunc values ->\n match (values |> Seq.length) % 2 with\n | 1 ->\n let centerIndex = (values |> Seq.length) / 2\n let targetKey = values.[centerIndex] |> keyFunc\n let averageValue =\n values |> Seq.averageBy valueFunc\n (targetKey, averageValue)\n | _ -> ArgumentException \"values array length needs to be an odd number\"\n |> raise\n\n/// \n/// Calculates the trailing moving average for a given array of values.\n/// \n/// \n/// The centered moving average takes the day that is at the center of the\n/// values array as the target day of the average.\n/// \n/// The type of key for the value\n/// (like int or DateTime).\n/// The type of value.\n/// The function that returns the key of the pair.\n/// The function that returns the value of the pair.\n/// \n/// The trailing moving average takes the last day as the target day of the\n/// average.\n/// \nlet movingAverageTrailing: MovingAverageFunc<'TKey, 'TValue> =\n fun keyFunc valueFunc values ->\n let targetKey = values |> Array.last |> keyFunc\n let averageValue = values |> Seq.averageBy valueFunc\n (targetKey, averageValue)\n\n/// \n/// Calculates an array of moving averages array for a given array values.\n/// \n/// The type of the object holding an individual value.\n/// The type of key for the value\n/// (like int or DateTime).\n/// The function that returns the key of the pair.\n/// The function that returns the value of the pair.\nlet movingAverages<'T, 'TKey>\n (averageFunc: MovingAverageFunc<'T, 'TKey>)\n (daysOfMovingAverage: int)\n (keyFunc: ValueItemKeyFunc<'T, 'TKey>)\n (valueFunc: ValueItemValueFunc<'T>)\n (series: 'T[])\n : ('TKey * float)[] =\n series\n |> Array.windowed daysOfMovingAverage\n |> Array.map (averageFunc keyFunc valueFunc)\n\nlet roundKeyValueFloatArray<'TKey> howManyDecimals (array: ('TKey * float)[])\n : ('TKey * float)[] =\n array\n |> Array.map (fun (key, value) ->\n (key, value |> Utils.roundDecimals howManyDecimals))\n\nlet calculateWindowedSumInt windowSize (data: int[]): int[] =\n let len = data |> Array.length\n\n let mutable runningSum = 0\n\n let runningSumForItem index =\n let addValue = data.[index]\n if index >= windowSize then\n let subValue = data.[index - windowSize]\n runningSum <- runningSum + addValue - subValue\n else\n runningSum <- runningSum + addValue\n runningSum\n\n Array.init len runningSumForItem\n","import { substring, join, format, isNullOrEmpty } from \"./String.js\";\nimport { declare } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { sumBy } from \"./Seq.js\";\nimport { clear } from \"./Util.js\";\nexport const StringBuilder = declare(function System_Text_StringBuilder(value, capacity) {\n const $this$$1 = this;\n $this$$1.buf = [];\n\n if (!isNullOrEmpty(value)) {\n void $this$$1.buf.push(value);\n } else {\n void null;\n }\n\n void null;\n});\nexport function StringBuilder$reflection() {\n return class_type(\"System.Text.StringBuilder\", undefined, StringBuilder);\n}\nexport function StringBuilder$$$$002Ector$$Z18115A39(value, capacity) {\n return this instanceof StringBuilder ? StringBuilder.call(this, value, capacity) : new StringBuilder(value, capacity);\n}\nexport function StringBuilder$$$$002Ector$$Z524259A4(capacity$$1) {\n return StringBuilder$$$$002Ector$$Z18115A39.call(this, \"\", capacity$$1);\n}\nexport function StringBuilder$$$$002Ector$$Z721C83C5(value$$1) {\n return StringBuilder$$$$002Ector$$Z18115A39.call(this, value$$1, 16);\n}\nexport function StringBuilder$$$$002Ector() {\n return StringBuilder$$$$002Ector$$Z18115A39.call(this, \"\", 16);\n}\nexport function StringBuilder$$Append$$Z721C83C5(x, s) {\n void x.buf.push(s);\n return x;\n}\nexport function StringBuilder$$Append$$244C7CD6(x$$1, c) {\n void x$$1.buf.push(c);\n return x$$1;\n}\nexport function StringBuilder$$AppendFormat$$433E080(x$$2, fmt, o) {\n void x$$2.buf.push(format(fmt, o));\n return x$$2;\n}\nexport function StringBuilder$$AppendLine(x$$3) {\n void x$$3.buf.push(\"\\n\");\n return x$$3;\n}\nexport function StringBuilder$$AppendLine$$Z721C83C5(x$$4, s$$1) {\n void x$$4.buf.push(s$$1);\n void x$$4.buf.push(\"\\n\");\n return x$$4;\n}\n\nStringBuilder.prototype.toString = function () {\n const __ = this;\n return join(\"\", __.buf);\n};\n\nexport function StringBuilder$$get_Length(x$$5) {\n return sumBy(function (str) {\n return str.length;\n }, x$$5.buf, {\n GetZero() {\n return 0;\n },\n\n Add($x$$2, $y$$3) {\n return $x$$2 + $y$$3;\n }\n\n }) | 0;\n}\nexport function StringBuilder$$ToString$$Z37302880(x$$6, firstIndex, length) {\n const str$$1 = String(x$$6);\n return substring(str$$1, firstIndex, length);\n}\nexport function StringBuilder$$Clear(x$$7) {\n clear(x$$7.buf);\n return x$$7;\n}","module AgeGroupsTimelineViz.Synthesis\n\nopen Types\nopen AgeGroupsTimelineViz.Analysis\nopen System.Collections.Generic\nopen System.Text\nopen Fable.Core\nopen JsInterop\n\ntype CasesInAgeGroupForDay = int\ntype CasesInAgeGroupTimeline = DatedArray\ntype CasesInAgeGroupSeries = {\n AgeGroupKey: AgeGroupKey\n Timeline: CasesInAgeGroupTimeline\n}\n\ntype AllCasesInAgeGroupSeries = IDictionary\n\ntype ChartType =\n | StackedBarNormal\n | StackedBarPercent\n\ntype DisplayMetricsType = NewCases | ActiveCases\ntype DisplayMetrics = {\n Id: string\n MetricsType: DisplayMetricsType\n ChartType: ChartType\n}\n\nlet availableDisplayMetrics = [|\n { Id = \"newCases\"; MetricsType = NewCases\n ChartType = StackedBarNormal }\n { Id = \"newCasesRelative\"; MetricsType = NewCases\n ChartType = StackedBarPercent }\n { Id = \"activeCases\"; MetricsType = ActiveCases\n ChartType = StackedBarNormal }\n { Id = \"activeCasesRelative\"; MetricsType = ActiveCases\n ChartType = StackedBarPercent }\n|]\n\nlet listAgeGroups (timeline: CasesByAgeGroupsTimeline): AgeGroupKey list =\n timeline.Data.[0]\n |> List.map (fun group -> group.GroupKey)\n |> List.sortBy (fun groupKey -> groupKey.AgeFrom)\n\nlet extractTimelineForAgeGroup\n ageGroupKey\n (metricsType: DisplayMetricsType)\n (casesTimeline: CasesByAgeGroupsTimeline)\n : CasesInAgeGroupTimeline =\n\n let newCasesTimeline =\n casesTimeline\n |> mapDatedArrayItems (fun dayGroupsData ->\n let dataForGroup =\n dayGroupsData\n |> List.find(fun group -> group.GroupKey = ageGroupKey)\n dataForGroup.All\n |> Utils.optionToInt\n )\n match metricsType with\n | NewCases -> newCasesTimeline\n | ActiveCases ->\n newCasesTimeline\n |> mapDatedArray (Statistics.calculateWindowedSumInt 14)\n\nlet tooltipFormatter jsThis =\n let points: obj[] = jsThis?points\n\n match points with\n | [||] -> \"\"\n | _ ->\n // points.[0].point.y\n\n let totalCases =\n points\n |> Array.sumBy(fun point -> float point?point?y)\n\n let s = StringBuilder()\n\n let date = points.[0]?point?date\n s.AppendFormat (\"{0}
\", date.ToString()) |> ignore\n\n s.Append \"\" |> ignore\n\n points\n |> Array.iter\n (fun ageGroup ->\n let ageGroupLabel = ageGroup?series?name\n let ageGroupColor = ageGroup?series?color\n let dataPoint = ageGroup?point\n\n let dataValue: int = dataPoint?y\n\n match dataValue with\n | 0 -> ignore()\n | _ ->\n let format =\n \"\"+\n \"\"+\n \"\" +\n \"\"\n\n let percentage =\n (float dataValue) * 100. / totalCases\n |> Utils.percentageValuesWith1DecimalTrailingZeroLabelFormatter\n\n s.Append \"\" |> ignore\n let ageGroupTooltip =\n System.String.Format\n (format,\n ageGroupColor,\n ageGroupLabel,\n dataValue,\n percentage)\n s.Append ageGroupTooltip |> ignore\n s.Append \"\" |> ignore\n )\n\n s.Append \"
{1}:\"+\n \"{2}\" +\n \"{3}
\" |> ignore\n s.ToString()\n","[]\nmodule AgeGroupsTimelineViz.Rendering\n\nopen System\nopen Analysis\nopen Synthesis\nopen Highcharts\nopen Types\n\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Browser.Types\n\ntype DayValueIntMaybe = JsTimestamp*int option\ntype DayValueFloat = JsTimestamp*float\n\ntype State = {\n Metrics : DisplayMetrics\n Data : StatsData\n RangeSelectionButtonIndex: int\n}\n\ntype Msg =\n | ChangeMetrics of DisplayMetrics\n | RangeSelectionChanged of int\n\nlet init data : State * Cmd =\n let state = {\n Data = data\n Metrics = availableDisplayMetrics.[0]\n RangeSelectionButtonIndex = 1\n }\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ChangeMetrics metrics -> { state with Metrics=metrics }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet renderChartOptions state dispatch =\n\n // map state data into a list needed for calculateCasesByAgeTimeline\n let totalCasesByAgeGroupsList =\n state.Data\n |> List.map (fun point -> (point.Date, point.StatePerAgeToDate))\n\n let totalCasesByAgeGroups =\n mapDateTuplesListToArray totalCasesByAgeGroupsList\n\n // calculate complete merged timeline\n let timeline = calculateCasesByAgeTimeline totalCasesByAgeGroups\n\n // get keys of all age groups\n let allGroupsKeys = listAgeGroups timeline\n\n let colorOfAgeGroup ageGroupIndex =\n let colors =\n [| \"#FFEEBA\"; \"#FFDA6B\";\"#E9B825\";\"#AEEFDB\";\"#52C4A2\";\"#33AB87\"\n \"#189A73\";\"#F4B2E0\";\"#D559B0\";\"#B01C83\" |]\n colors.[ageGroupIndex]\n\n let mapPoint\n (startDate: DateTime)\n (daysFromStartDate: int)\n (cases: CasesInAgeGroupForDay) =\n let date = startDate |> Days.add daysFromStartDate\n\n pojo {|\n x = date |> jsTime12h :> obj\n y = cases\n date = I18N.tOptions \"days.longerDate\" {| date = date |}\n |}\n\n let mapAllPoints (groupTimeline: CasesInAgeGroupTimeline) =\n let startDate = groupTimeline.StartDate\n let timelineArray = groupTimeline.Data\n\n timelineArray\n |> Array.mapi (fun i cases -> mapPoint startDate i cases)\n\n // generate all series\n let allSeries =\n allGroupsKeys\n |> List.mapi (fun index ageGroupKey ->\n let points =\n timeline\n |> extractTimelineForAgeGroup\n ageGroupKey state.Metrics.MetricsType\n |> mapAllPoints\n\n pojo {|\n visible = true\n name = ageGroupKey.Label\n color = colorOfAgeGroup index\n data = points\n |}\n )\n |> List.toArray\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let className = \"covid19-infections\"\n let baseOptions =\n Highcharts.basicChartOptions\n ScaleType.Linear className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` = \"column\"\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n title = pojo {| text = None |}\n series = allSeries\n xAxis = baseOptions.xAxis\n yAxis = baseOptions.yAxis\n\n plotOptions = pojo\n {|\n column = pojo\n {|\n groupPadding = 0\n pointPadding = 0\n borderWidth = 0 |}\n series =\n match state.Metrics.ChartType with\n | StackedBarNormal -> pojo {| stacking = \"normal\" |}\n | StackedBarPercent -> pojo {| stacking = \"percent\" |}\n |}\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n tooltip = pojo {|\n formatter = fun () -> tooltipFormatter jsThis\n shared = true\n useHTML = true\n |}\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> Highcharts.chartFromWindow\n ]\n ]\n\nlet renderMetricsSelectors activeMetrics dispatch =\n let renderSelector (metrics : DisplayMetrics) =\n let active = metrics = activeMetrics\n Html.div [\n prop.text (I18N.chartText \"ageGroupsTimeline\" metrics.Id)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (active, \"metric-selector--selected selected\")]\n if not active then prop.onClick (fun _ -> dispatch metrics)\n if active then prop.style [ style.backgroundColor \"#808080\" ]\n ]\n\n Html.div [\n prop.className \"metrics-selectors\"\n availableDisplayMetrics\n |> Array.map renderSelector\n |> prop.children\n ]\n\nlet render state dispatch =\n Html.div [\n renderChartContainer state dispatch\n renderMetricsSelectors state.Metrics (ChangeMetrics >> dispatch)\n ]\n\nlet renderChart (props : {| data : StatsData |}) =\n React.elmishComponent\n (\"AgeGroupsTimelineViz/Chart\", init props.data, update, render)\n","[]\nmodule TestsChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Types\nopen Highcharts\n\ntype DisplayType =\n | Total\n | Regular\n | NsApr20\nwith\n static member all = [ Regular; NsApr20; Total; ]\n static member getName = function\n | Total -> I18N.t \"charts.tests.allTesting\"\n | Regular -> I18N.t \"charts.tests.regularTesting\"\n | NsApr20 -> I18N.t \"charts.tests.nationalStudyTesting\"\n\ntype State = {\n data: StatsData\n displayType: DisplayType\n RangeSelectionButtonIndex: int\n}\n\ntype Msg =\n | ChangeDisplayType of DisplayType\n | RangeSelectionChanged of int\n\nlet init data : State * Cmd =\n let state = {\n data = data\n displayType = Regular\n RangeSelectionButtonIndex = 1\n }\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ChangeDisplayType dt ->\n { state with displayType = dt }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet renderChartOptions (state : State) dispatch =\n let className = \"tests-chart\"\n let scaleType = ScaleType.Linear\n\n let positiveTests (dp: StatsDataPoint) =\n match state.displayType with\n | Total -> dp.Tests.Positive.Today.Value\n | Regular -> dp.Tests.Regular.Positive.Today.Value\n | NsApr20 -> dp.Tests.NsApr20.Positive.Today.Value\n let negativeTests (dp: StatsDataPoint) =\n match state.displayType with\n | Total -> dp.Tests.Performed.Today.Value - dp.Tests.Positive.Today.Value\n | Regular -> dp.Tests.Regular.Performed.Today.Value - dp.Tests.Regular.Positive.Today.Value\n | NsApr20 -> dp.Tests.NsApr20.Performed.Today.Value - dp.Tests.NsApr20.Positive.Today.Value\n let percentPositive (dp: StatsDataPoint) =\n let positive = positiveTests dp\n let performed = positiveTests dp + negativeTests dp\n Math.Round(float positive / float performed * float 100.0, 2)\n\n let allYAxis = [|\n {|\n index = 0\n title = {| text = null |}\n labels = pojo {| format = \"{value}\"; align = \"center\"; x = -15; reserveSpace = false; |}\n opposite = true\n visible = true\n max = None // SLO-spec\n crosshair = true\n |}\n {|\n index = 1\n title = {| text = null |}\n labels = pojo {| format = \"{value}%\"; align = \"center\"; x = 10; reserveSpace = false; |}\n opposite = false\n visible = true\n max = Some 45 // SLO-spec\n crosshair = true\n |}\n |]\n\n let allSeries = [\n yield pojo\n {|\n name = I18N.t \"charts.tests.negativeTests\"\n ``type`` = \"column\"\n color = \"#19aebd\"\n yAxis = 0\n data = state.data |> Seq.filter (fun dp -> dp.Tests.Positive.Today.IsSome )\n |> Seq.map (fun dp -> (dp.Date |> jsTime12h, negativeTests dp)) |> Seq.toArray\n |}\n yield pojo\n {|\n name = I18N.t \"charts.tests.positiveTests\"\n ``type`` = \"column\"\n color = \"#d5c768\"\n yAxis = 0\n data = state.data |> Seq.filter (fun dp -> dp.Tests.Positive.Today.IsSome )\n |> Seq.map (fun dp -> (dp.Date |> jsTime12h, positiveTests dp)) |> Seq.toArray\n |}\n yield pojo\n {|\n name = I18N.t \"charts.tests.shareOfPositive\"\n ``type`` = \"line\"\n color = \"#665191\"\n yAxis = 1\n data = state.data |> Seq.filter (fun dp -> dp.Tests.Positive.Today.IsSome )\n |> Seq.map (fun dp -> (dp.Date |> jsTime12h, percentPositive dp)) |> Seq.toArray\n |}\n ]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let baseOptions =\n Highcharts.basicChartOptions\n scaleType className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n {| baseOptions with\n yAxis = allYAxis\n series = List.toArray allSeries\n plotOptions = pojo\n {|\n series = {| stacking = \"normal\"; crisp = false; borderWidth = 0; pointPadding = 0; groupPadding = 0 |}\n |}\n\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n\n responsive = pojo\n {|\n rules =\n [| {|\n condition = {| maxWidth = 768 |}\n chartOptions =\n {|\n yAxis = [|\n {| labels = {| enabled = false |} |}\n {| labels = {| enabled = false |} |}\n |]\n |}\n |} |]\n |}\n |}\n\nlet renderChartContainer (state : State) dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> Highcharts.chartFromWindow\n ]\n ]\n\nlet renderSelector state (dt: DisplayType) dispatch =\n Html.div [\n let isActive = state.displayType = dt\n prop.onClick (fun _ -> ChangeDisplayType dt |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (isActive, \"metric-selector--selected\")]\n prop.text (DisplayType.getName dt) ]\n\nlet renderDisplaySelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n DisplayType.all\n |> List.map (fun dt -> renderSelector state dt dispatch) ) ]\n\nlet render (state: State) dispatch =\n Html.div [\n renderChartContainer state dispatch\n renderDisplaySelectors state dispatch\n ]\n\nlet testsChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"TestsChart\", init props.data, update, render)\n","module Data.HCenters\n\nopen System\nopen FsToolkit.ErrorHandling\nopen Fable.SimpleHttp\n\nlet sumOption a b =\n match a, b with\n | None, None -> None\n | Some x, None -> Some x\n | None, Some y -> Some y\n | Some x, Some y -> Some (x + y)\n\ntype Examinations = {\n MedicalEmergency: int option\n SuspectedCovid: int option\n} with\n static member (+) (a, b) = {\n MedicalEmergency = sumOption a.MedicalEmergency b.MedicalEmergency\n SuspectedCovid = sumOption a.SuspectedCovid b.SuspectedCovid\n }\n static member None = {\n MedicalEmergency = None\n SuspectedCovid = None\n }\n\ntype PhoneTriage = {\n SuspectedCovid: int option\n} with\n static member (+) (a, b) = {\n SuspectedCovid = sumOption a.SuspectedCovid b.SuspectedCovid\n }\n static member None = {\n SuspectedCovid = None\n }\n\ntype Tests = {\n Performed: int option\n Positive: int option\n} with\n static member (+) (a, b) = {\n Performed = sumOption a.Performed b.Performed\n Positive = sumOption a.Positive b.Positive\n }\n static member None = {\n Performed = None\n Positive = None\n }\n\ntype SentTo = {\n Hospital: int option\n SelfIsolation: int option\n} with\n static member (+) (a, b) = {\n Hospital = sumOption a.Hospital b.Hospital\n SelfIsolation = sumOption a.SelfIsolation b.SelfIsolation\n }\n static member None = {\n Hospital = None\n SelfIsolation = None\n }\n\ntype TotalHcStats = {\n Examinations: Examinations\n PhoneTriage: PhoneTriage\n Tests: Tests\n SentTo: SentTo\n} with\n static member (+) (a, b) = {\n Examinations = a.Examinations + b.Examinations\n PhoneTriage = a.PhoneTriage + b.PhoneTriage\n Tests = a.Tests + b.Tests\n SentTo = a.SentTo + b.SentTo\n }\n static member None = {\n Examinations = Examinations.None\n PhoneTriage = PhoneTriage.None\n Tests = Tests.None\n SentTo = SentTo.None\n }\n\ntype HcStats = {\n Date : DateTime\n Total: TotalHcStats\n Municipalities : Map>\n}\n\ntype Metric =\n | ExaminationsMedicalEmergency\n | ExaminationsSuspectedCovid\n | PhoneTriageSuspectedCovid\n | TestPerformed\n | TestsPositive\n | SentToHospital\n | SentToSelIsolation\n\ntype DataPoint = {\n Region : string\n Municipality : string\n Metric : Metric\n Value : int option\n}\n\nlet parseData (csv : string) =\n let rows = csv.Split(\"\\n\")\n let header = rows.[0].Split(\",\")\n\n let headerMunicipalities =\n header.[8..]\n |> Array.map (fun col ->\n match col.Split(\".\") with\n | [| \"hc\" ; region ; municipality ; \"examinations\" ; \"medical_emergency\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = ExaminationsMedicalEmergency ; Value = None }\n | [| \"hc\" ; region ; municipality ; \"examinations\" ; \"suspected_covid\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = ExaminationsSuspectedCovid ; Value = None }\n | [| \"hc\" ; region ; municipality ; \"phone_triage\" ; \"suspected_covid\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = PhoneTriageSuspectedCovid ; Value = None }\n | [| \"hc\" ; region ; municipality ; \"tests\" ; \"performed\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = TestPerformed ; Value = None }\n | [| \"hc\" ; region ; municipality ; \"tests\" ; \"positive\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = TestsPositive ; Value = None }\n | [| \"hc\" ; region ; municipality ; \"sent_to\" ; \"hospital\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = SentToHospital ; Value = None }\n | [| \"hc\" ; region ; municipality ; \"sent_to\" ; \"self_isolation\" |] ->\n Some { Region = region ; Municipality = municipality ; Metric = SentToSelIsolation ; Value = None }\n | unknown ->\n printfn \"Napaka pri branju glave podatkov zdravstvenih ustanov: %s\" col\n None\n )\n\n rows.[1..]\n |> Array.map (fun row ->\n let columns = row.Split(\",\")\n result {\n if headerMunicipalities.Length <> columns.[8..].Length then\n return! Error \"\"\n else\n // Date is in the first column\n let! date = Utils.parseDate(columns.[0])\n // Total values\n let total = {\n Examinations = { MedicalEmergency = Utils.nativeParseInt columns.[1] ; SuspectedCovid = Utils.nativeParseInt columns.[2] }\n PhoneTriage = { SuspectedCovid = Utils.nativeParseInt columns.[3] }\n Tests = { Performed = Utils.nativeParseInt columns.[4] ; Positive = Utils.nativeParseInt columns.[5] }\n SentTo = { Hospital = Utils.nativeParseInt columns.[6] ; SelfIsolation = Utils.nativeParseInt columns.[7] }\n }\n // Merge municipality header information with data columns\n let regions =\n Array.map2 (fun header value ->\n match header with\n | None _ -> None\n | Some header -> Some { header with Value = Utils.nativeParseInt value }\n ) headerMunicipalities columns.[8..]\n |> Array.choose id\n // Group by region\n |> Array.groupBy (fun dp -> dp.Region)\n |> Array.map (fun (region, dps) ->\n let municipalities =\n dps\n // Group by municipality and combine values\n |> Array.groupBy (fun dp -> dp.Municipality)\n |> Array.map (fun (municipality, dps) ->\n let municipalityStats =\n dps\n |> Array.fold (fun state dp ->\n match dp.Metric with\n | ExaminationsMedicalEmergency -> { state with Examinations = { state.Examinations with MedicalEmergency = dp.Value }}\n | ExaminationsSuspectedCovid -> { state with Examinations = { state.Examinations with SuspectedCovid = dp.Value }}\n | PhoneTriageSuspectedCovid -> { state with PhoneTriage = { state.PhoneTriage with SuspectedCovid = dp.Value }}\n | TestPerformed -> { state with Tests = { state.Tests with Performed = dp.Value }}\n | TestsPositive -> { state with Tests = { state.Tests with Positive = dp.Value }}\n | SentToHospital -> { state with SentTo = { state.SentTo with Hospital = dp.Value }}\n | SentToSelIsolation -> { state with SentTo = { state.SentTo with SelfIsolation = dp.Value }}\n ) TotalHcStats.None\n (municipality, municipalityStats))\n |> Map.ofArray\n (region, municipalities) )\n |> Map.ofArray\n return { Date = date ; Total = total ; Municipalities = regions }\n })\n |> Array.choose (fun row ->\n match row with\n | Ok row -> Some row\n | Error _ -> None)\n\nlet loadData (apiEndpoint: string) =\n async {\n let! (statusCode, response) = Http.get (sprintf \"%s/api/health-centers?format=csv\" apiEndpoint)\n\n if statusCode <> 200 then\n return Error (sprintf \"Napaka pri nalaganju podatkov zdravstvenih ustanov: %d\" statusCode)\n else\n return Ok (parseData response)\n }\n","[]\nmodule HCentersChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Types\nopen Data.HCenters\nopen Highcharts\n\nlet chartText = I18N.chartText \"hCenters\"\n\ntype Region =\n { Key : string\n Name : string }\n\ntype State = {\n HcData : HcStats []\n Error: string option\n Regions : Region list\n FilterByRegion : string\n RangeSelectionButtonIndex: int\n }\n\ntype Msg =\n | ConsumeHcData of Result\n | ConsumeServerError of exn\n | RegionFilterChanged of string\n | RangeSelectionChanged of int\n\nlet init apiEndpoint : State * Cmd =\n let cmd = Cmd.OfAsync.either Data.HCenters.loadData apiEndpoint ConsumeHcData ConsumeServerError\n\n let state = {\n HcData = [| |]\n Error = None\n Regions = [ ]\n FilterByRegion = \"\"\n RangeSelectionButtonIndex = 1\n }\n\n state, (cmd)\n\nlet getRegionList hcData =\n hcData.Municipalities\n |> Map.toList\n |> List.map (fun (reg, _) -> { Key = reg ; Name = I18N.tt \"region\" reg })\n |> List.sortBy (fun region -> region.Name)\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n\n match msg with\n | ConsumeHcData (Ok data) ->\n { state with HcData = data; Regions = getRegionList (data |> Array.last) }, Cmd.none\n | ConsumeHcData (Error err) ->\n { state with Error = Some err }, Cmd.none\n | ConsumeServerError ex ->\n { state with Error = Some ex.Message }, Cmd.none\n | RegionFilterChanged region ->\n { state with FilterByRegion = region }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet renderChartOptions (state : State) dispatch =\n let className = \"hcenters-chart\"\n let scaleType = ScaleType.Linear\n let startDate = DateTime(2020,3,18)\n let mutable startTime = startDate |> jsTime\n\n let getRegionStats region mp =\n mp |> Map.find region\n |> Map.fold ( fun total _ hc -> total + hc ) TotalHcStats.None\n\n let hcData =\n match state.FilterByRegion with\n | \"\" -> state.HcData |> Seq.map (fun dp -> (dp.Date, dp.Total)) |> Seq.toArray\n | region -> state.HcData |> Seq.map (fun dp -> (dp.Date, getRegionStats region dp.Municipalities)) |> Seq.toArray\n\n let allSeries = [\n yield pojo\n {|\n name = chartText \"emergencyExamination\"\n ``type`` = \"line\"\n visible = false\n color = \"#70a471\"\n dashStyle = Dot |> DashStyle.toString\n data = hcData |> Seq.map (fun (date, dp) -> (date |> jsTime12h, dp.Examinations.MedicalEmergency)) |> Seq.toArray\n |}\n\n yield pojo\n {|\n name = chartText \"suspectedCovidExamination\"\n ``type`` = \"line\"\n color = \"#a05195\"\n dashStyle = Dot |> DashStyle.toString\n data = hcData |> Seq.map (fun (date, dp) -> (date |> jsTime12h, dp.Examinations.SuspectedCovid)) |> Seq.toArray\n |}\n yield pojo\n {|\n name = chartText \"suspectedCovidPhone\"\n ``type`` = \"line\"\n color = \"#d45087\"\n dashStyle = Dot |> DashStyle.toString\n data = hcData |> Seq.map (fun (date, dp) -> (date |> jsTime12h, dp.PhoneTriage.SuspectedCovid)) |> Seq.toArray\n |}\n yield pojo\n {|\n name = chartText \"sentToSelfIsolation\"\n ``type`` = \"line\"\n color = \"#665191\"\n data = hcData |> Seq.map (fun (date, dp) -> (date |> jsTime12h, dp.SentTo.SelfIsolation)) |> Seq.toArray\n |}\n yield pojo\n {|\n name = chartText \"testsPerformed\"\n ``type`` = \"line\"\n color = \"#19aebd\"\n data = hcData |> Seq.map (fun (date, dp) -> (date |> jsTime12h, dp.Tests.Performed)) |> Seq.toArray\n |}\n yield pojo\n {|\n name = chartText \"testsPositive\"\n ``type`` = \"line\"\n color = \"#d5c768\"\n data = hcData |> Seq.map (fun (date, dp) -> (date |> jsTime12h, dp.Tests.Positive)) |> Seq.toArray\n |}\n yield addContainmentMeasuresFlags startTime None |> pojo\n\n ]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let baseOptions =\n Highcharts.basicChartOptions\n scaleType className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n {| baseOptions with\n series = List.toArray allSeries\n\n // need to hide negative label for addContainmentMeasuresFlags\n yAxis = baseOptions.yAxis |> Array.map (fun ax -> {| ax with showFirstLabel = false |})\n\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n |}\n\nlet renderChartContainer (state : State) dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> Highcharts.chartFromWindow\n ]\n ]\n\nlet renderRegionSelector (regions : Region list) (selected : string) dispatch =\n let renderedRegions = seq {\n yield Html.option [\n prop.text (chartText \"allRegions\")\n prop.value \"\"\n ]\n\n for region in regions do\n yield Html.option [\n prop.text region.Name\n prop.value region.Key\n ]\n }\n\n Html.select [\n prop.value selected\n prop.className \"form-control form-control-sm filters__region\"\n prop.children renderedRegions\n prop.onChange (RegionFilterChanged >> dispatch)\n ]\n\nlet render (state : State) dispatch =\n match state.HcData, state.Error with\n | [||], None -> Html.div [ Utils.renderLoading ]\n | _, Some err -> Html.div [ Utils.renderErrorLoading err ]\n | _, None ->\n Html.div [\n Utils.renderChartTopControls [\n Html.div [\n prop.className \"filters\"\n prop.children [\n renderRegionSelector state.Regions state.FilterByRegion dispatch\n ]\n ]\n ]\n renderChartContainer state dispatch\n\n Html.div [\n prop.className \"disclaimer\"\n prop.children [\n Html.text (chartText \"disclaimer\")\n ]\n ]\n ]\n\n\nlet hCentersChart (apiEndpoint : string) =\n React.elmishComponent(\"HCentersChart\", init apiEndpoint, update, render)\n","[]\nmodule InfectionsChart\n\nopen Statistics\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Highcharts\nopen Types\n\nlet chartText = I18N.chartText \"infections\"\n\ntype Metric =\n | HospitalStaff\n | RestHomeStaff\n | RestHomeOccupant\n | OtherPeople\n | AllConfirmed\n\ntype MetricCfg = {\n Metric : Metric\n Color : string\n Id : string\n}\n\ntype Metrics = MetricCfg list\n\ntype DayValueIntMaybe = JsTimestamp*int option\ntype DayValueFloat = JsTimestamp*float\n\ntype ShowAllOrOthers = ShowAllConfirmed | ShowOthers\n\nmodule Metrics =\n let all = [\n { Metric=AllConfirmed; Color=\"#bda506\"; Id=\"allConfirmed\" }\n { Metric=OtherPeople; Color=\"#FFDBA3\"; Id=\"otherPersons\" }\n { Metric=HospitalStaff; Color=\"#73ccd5\"; Id=\"hcStaff\" }\n // SLO-spec { Metric=RestHomeStaff; Color=\"#20b16d\"; Id=\"rhStaff\" }\n // SLO-spec { Metric=RestHomeOccupant; Color=\"#bf5747\"; Id=\"rhOccupant\" }\n ]\n\n let metricsToDisplay filter =\n let without metricType =\n all |> List.filter (fun metric -> metric.Metric <> metricType)\n\n match filter with\n | ShowAllConfirmed -> without OtherPeople\n | ShowOthers -> without AllConfirmed\n\ntype ValueTypes = RunningTotals | MovingAverages\ntype ChartType =\n | StackedBarNormal\n | StackedBarPercent\n | SplineChart\n\ntype DisplayType = {\n Id: string\n ValueTypes: ValueTypes\n ShowAllOrOthers: ShowAllOrOthers\n ChartType: ChartType\n ShowPhases: bool\n}\n\n[]\nlet DaysOfMovingAverage = 7\n\nlet availableDisplayTypes: DisplayType array = [|\n { Id = \"averageByDay\"\n ValueTypes = MovingAverages\n ShowAllOrOthers = ShowAllConfirmed\n ChartType = SplineChart\n ShowPhases = true\n }\n { Id = \"all\";\n ValueTypes = RunningTotals\n ShowAllOrOthers = ShowOthers\n ChartType = StackedBarNormal\n ShowPhases = false\n }\n { Id = \"relative\";\n ValueTypes = RunningTotals\n ShowAllOrOthers = ShowOthers\n ChartType = StackedBarPercent\n ShowPhases = false\n }\n|]\n\ntype State = {\n DisplayType : DisplayType\n Data : StatsData\n RangeSelectionButtonIndex: int\n}\n\ntype Msg =\n | ChangeDisplayType of DisplayType\n | RangeSelectionChanged of int\n\nlet init data : State * Cmd =\n let state = {\n Data = data\n DisplayType = availableDisplayTypes.[0]\n RangeSelectionButtonIndex = 1\n }\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ChangeDisplayType rt ->\n { state with DisplayType=rt }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet renderChartOptions state dispatch =\n\n let xAxisPoint (dp: StatsDataPoint) = dp.Date\n\n let metricDataGenerator mc : (StatsDataPoint -> int option) =\n let metricFunc =\n match mc.Metric with\n | HospitalStaff -> fun pt -> pt.HospitalEmployeePositiveTestsToDate\n | RestHomeStaff -> fun pt -> pt.RestHomeEmployeePositiveTestsToDate\n | RestHomeOccupant -> fun pt -> pt.RestHomeOccupantPositiveTestsToDate\n | OtherPeople -> fun pt -> pt.UnclassifiedPositiveTestsToDate\n | AllConfirmed -> fun pt -> pt.Cases.ConfirmedToDate\n\n fun pt -> (pt |> metricFunc |> Utils.zeroToNone)\n\n /// \n /// Calculates running totals for a given metric.\n /// \n let calcRunningTotals metric =\n let pointData = metricDataGenerator metric\n\n let skipLeadingMissing data =\n data |> List.skipWhile (fun (_,value: 'T option) -> value.IsNone)\n\n let skipTrailingMissing data =\n data\n |> List.rev\n |> skipLeadingMissing\n |> List.rev\n\n state.Data\n |> List.map (fun dp -> ((xAxisPoint dp |> jsTime12h), pointData dp))\n |> skipLeadingMissing\n |> skipTrailingMissing\n |> Seq.toArray\n\n /// \n /// Converts running total series to daily (delta) values.\n /// \n let toDailyValues (series: DayValueIntMaybe[]) =\n let mutable last = 0\n Array.init series.Length (fun i ->\n match series.[i] with\n | ts, None -> ts, None\n | ts, Some current ->\n let result = current - last\n last <- current\n ts, Some result\n )\n\n let toFloatValues (series: DayValueIntMaybe[]) =\n series\n |> Array.map (fun (date, value) ->\n (date, value |> Option.defaultValue 0 |> float))\n\n let allSeries = [\n let allMetricsData =\n Metrics.metricsToDisplay state.DisplayType.ShowAllOrOthers\n |> Seq.map(fun metric ->\n let data =\n let runningTotals = calcRunningTotals metric\n match state.DisplayType.ValueTypes with\n | RunningTotals -> runningTotals |> toFloatValues\n | MovingAverages ->\n runningTotals |> toDailyValues\n |> (movingAverages\n movingAverageCentered\n DaysOfMovingAverage\n (fun (timestamp, _) -> timestamp)\n (fun (_, value) ->\n value |> Option.defaultValue 0 |> float)\n )\n |> roundKeyValueFloatArray 1\n\n (metric, data))\n\n for (metric, metricData) in allMetricsData do\n yield pojo\n {|\n visible = true\n color = metric.Color\n name = chartText metric.Id\n data = metricData\n marker = pojo {| enabled = false |}\n |}\n\n let allDates =\n allMetricsData\n |> Seq.map (fun (_, metricData) ->\n metricData |> Seq.map (fun (date, _) -> date))\n |> Seq.concat\n let startDate = allDates |> Seq.min\n let endDate = allDates |> Seq.max |> Some\n\n if state.DisplayType.ShowPhases then\n yield addContainmentMeasuresFlags startDate endDate |> pojo\n ]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let className = \"covid19-infections\"\n let baseOptions =\n basicChartOptions\n ScaleType.Linear className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n\n let axisWithPhases() = baseOptions.xAxis\n\n let axisWithWithoutPhases() =\n baseOptions.xAxis\n |> Array.map (fun ax ->\n {| ax with\n plotBands = shadedWeekendPlotBands\n plotLines = [||]\n |})\n\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` =\n match state.DisplayType.ChartType with\n | SplineChart -> \"spline\"\n | StackedBarNormal -> \"column\"\n | StackedBarPercent -> \"column\"\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n title = pojo {| text = None |}\n series = List.toArray allSeries\n xAxis =\n if state.DisplayType.ShowPhases then axisWithPhases()\n else axisWithWithoutPhases()\n yAxis = // need to hide negative label for addContainmentMeasuresFlags\n let showFirstLabel = not state.DisplayType.ShowPhases\n baseOptions.yAxis |> Array.map (fun ax -> {| ax with showFirstLabel = Some showFirstLabel |})\n\n plotOptions = pojo\n {|\n series =\n match state.DisplayType.ChartType with\n | SplineChart -> pojo {| stacking = \"\"; |}\n | StackedBarNormal -> pojo {| stacking = \"normal\" |}\n | StackedBarPercent -> pojo {| stacking = \"percent\" |}\n |}\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> chartFromWindow\n ]\n ]\n\nlet renderDisplaySelectors activeDisplayType dispatch =\n let renderSelector (displayType : DisplayType) =\n let active = displayType = activeDisplayType\n Html.div [\n prop.text (chartText displayType.Id)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (active, \"metric-selector--selected selected\")]\n if not active then prop.onClick (fun _ -> dispatch displayType)\n if active then prop.style [ style.backgroundColor \"#808080\" ]\n ]\n\n Html.div [\n prop.className \"metrics-selectors\"\n availableDisplayTypes\n |> Array.map renderSelector\n |> prop.children\n ]\n\n\nlet halfDaysOfMovingAverage = DaysOfMovingAverage / 2\n\n// TODO: the last date of the graph should be determined from the actual data\n// because the graph cuts trailing days without any data. This requires some\n// bit of refactoring of the code, to first prepare the data and only then\n// render everything. Also the series arrays should work with native DateTime\n// so it can be used in arithmetic calculations, instead of JsTimestamp (it should be\n// transformed to JsTimestamp at the moment of setting the Highcharts objects).\nlet lastDateOfGraph =\n DateTime.Now.AddDays(-(halfDaysOfMovingAverage + 1) |> float)\n\n\nlet render state dispatch =\n Html.div [\n renderChartContainer state dispatch\n renderDisplaySelectors state.DisplayType (ChangeDisplayType >> dispatch)\n\n (* SLO-spec\n Html.div [\n prop.className \"disclaimer\"\n prop.children [\n Html.text (chartText \"disclaimer\")\n ]\n ]\n *)\n ]\n\n\nlet infectionsChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"InfectionsChart\", init props.data, update, render)\n","[]\nmodule CasesChart\n\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Browser\n\nopen Types\nopen Highcharts\n\ntype DisplayType =\n | MultiChart\n\ntype State = {\n data: StatsData\n displayType: DisplayType\n RangeSelectionButtonIndex: int\n}\n\ntype Msg =\n | ChangeDisplayType of DisplayType\n | RangeSelectionChanged of int\n\ntype Series =\n | Deceased\n | Recovered\n | Active\n | InHospital\n | Icu\n | Critical\n\nmodule Series =\n let all =\n [ Active; InHospital; Icu; Critical; Recovered; Deceased; ]\n let active =\n [ Active; InHospital; Icu; Critical; ]\n let inHospital =\n [ InHospital; Icu; Critical; ]\n let closed =\n [ Deceased; Recovered; ]\n\n let getSeriesInfo = function\n | Deceased -> true, \"#666666\", \"deceased\"\n | Recovered -> true, \"#8cd4b2\", \"recovered\"\n | Active -> true, \"#d5c768\", \"active\"\n | InHospital -> true, \"#de9a5a\", \"hospitalized\"\n | Icu -> true, \"#d96756\", \"icu\"\n | Critical -> true, \"#bf5747\", \"ventilator\"\n\nlet init data : State * Cmd =\n let state = {\n data = data\n displayType = MultiChart\n RangeSelectionButtonIndex = 1\n }\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ChangeDisplayType rt ->\n { state with displayType=rt }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet legendFormatter jsThis =\n let pts: obj[] = jsThis?points\n let fmtDate = pts.[0]?point?fmtDate\n\n let mutable fmtUnder = \"\"\n let mutable fmtStr = sprintf \"%s\" fmtDate\n for p in pts do\n match p?point?fmtTotal with\n | \"null\" -> ()\n | _ ->\n match p?point?seriesId with\n | \"active\" | \"recovered\" | \"deceased\" -> fmtUnder <- \"\"\n | _ -> fmtUnder <- fmtUnder + \"↳ \"\n fmtStr <- fmtStr + sprintf \"\"\"
%s %s: %s\"\"\"\n fmtUnder\n p?series?color\n p?series?name\n p?point?fmtTotal\n fmtStr\n\nlet renderChartOptions (state : State) dispatch =\n let className = \"cases-chart\"\n let scaleType = ScaleType.Linear\n\n let subtract (a : int option) (b : int option) =\n match a, b with\n | Some aa, Some bb -> Some (bb - aa)\n | Some aa, None -> -aa |> Some\n | None, Some _ -> b\n | _ -> None\n let negative (a : int option) =\n match a with\n | Some aa -> -aa |> Some\n | None -> None\n\n let renderSeries series =\n\n let getPoint : (StatsDataPoint -> int option) =\n match series with\n | Recovered -> fun dp -> negative dp.Cases.RecoveredToDate\n | Deceased -> fun dp -> negative dp.StatePerTreatment.DeceasedToDate\n | Active -> fun dp -> dp.Cases.Active |> subtract dp.StatePerTreatment.InHospital\n | InHospital -> fun dp -> dp.StatePerTreatment.InHospital |> subtract dp.StatePerTreatment.InICU\n | Icu -> fun dp -> dp.StatePerTreatment.InICU |> subtract dp.StatePerTreatment.Critical\n | Critical -> fun dp -> dp.StatePerTreatment.Critical\n\n let getPointTotal : (StatsDataPoint -> int option) =\n match series with\n | Recovered -> fun dp -> dp.Cases.RecoveredToDate\n | Deceased -> fun dp -> dp.StatePerTreatment.DeceasedToDate\n | Active -> fun dp -> dp.Cases.Active\n | InHospital -> fun dp -> dp.StatePerTreatment.InHospital\n | Icu -> fun dp -> dp.StatePerTreatment.InICU\n | Critical -> fun dp -> dp.StatePerTreatment.Critical\n\n let visible, color, seriesid = Series.getSeriesInfo series\n {|\n ``type`` = \"column\"\n visible = visible\n color = color\n name = I18N.tt \"charts.cases\" seriesid\n data =\n state.data\n |> Seq.filter (fun dp -> dp.Cases.Active.IsSome)\n |> Seq.map (fun dp ->\n {|\n x = dp.Date |> jsTime12h\n y = getPoint dp\n seriesId = seriesid\n fmtDate = I18N.tOptions \"days.longerDate\" {| date = dp.Date |}\n fmtTotal = getPointTotal dp |> string\n |} |> pojo\n )\n |> Array.ofSeq\n |}\n |> pojo\n\n let allSeries = [|\n for series in Series.all do\n yield renderSeries series\n |]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let baseOptions =\n Highcharts.basicChartOptions\n scaleType className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n {| baseOptions with\n series = allSeries\n plotOptions = pojo\n {|\n series = {| stacking = \"normal\"; crisp = false; borderWidth = 0; pointPadding = 0; groupPadding = 0; turboThreshold = 0 |}\n |}\n\n tooltip = pojo\n {|\n shared = true\n formatter = fun () -> legendFormatter jsThis\n |}\n\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n\n |}\n\nlet renderChartContainer (state : State) dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> Highcharts.chartFromWindow\n ]\n ]\n\nlet render (state: State) dispatch =\n Html.div [\n renderChartContainer state dispatch\n ]\n\nlet casesChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"CasesChart\", init props.data, update, render)\n","[]\nmodule PatientsChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Browser\n\nopen Highcharts\nopen Types\n\nopen Data.Patients\n\ntype HospitalType =\n | CovidHospitals\n | CareHospitals\n\ntype Breakdown =\n | ByHospital\n | AllHospitals\n | Facility of string\n with\n static member getName = function\n | ByHospital -> I18N.t \"charts.patients.byHospital\"\n | AllHospitals -> I18N.t \"charts.patients.allHospitals\"\n | Facility fcode ->\n let _, name = Data.Hospitals.facilitySeriesInfo fcode\n name\n\ntype Series =\n | InHospital\n | Icu\n | Critical\n | InHospitalIn\n | InHospitalOut\n | InHospitalDeceased\n | Care\n | CareIn\n | CareOut\n | CareDeceased\n\nmodule Series =\n let structure hTypeToDisplay =\n if hTypeToDisplay = CareHospitals\n then [ CareIn; Care; CareOut; CareDeceased; ]\n else [ InHospitalIn; InHospital; Icu; Critical; InHospitalOut; InHospitalDeceased; ]\n\n let byHospital =\n [ InHospital; ]\n\n let getSeriesInfo = function\n | InHospital -> \"#de9a5a\", \"hospitalized\"\n | Icu -> \"#d96756\", \"icu\"\n | Critical -> \"#bf5747\", \"ventilator\"\n | InHospitalIn -> \"#d5c768\", \"admitted\"\n | InHospitalOut -> \"#8cd4b2\", \"discharged\"\n | InHospitalDeceased -> \"#666666\", \"deceased\"\n | Care -> \"#dba51d\", \"care\"\n | CareIn -> \"#d5c768\", \"admitted\"\n | CareOut -> \"#8cd4b2\", \"discharged\"\n | CareDeceased -> \"#666666\", \"deceased\"\n\ntype State = {\n PatientsData : PatientsStats []\n Error : string option\n AllFacilities : string list\n HTypeToDisplay : HospitalType\n Breakdown : Breakdown\n RangeSelectionButtonIndex: int\n } with\n static member initial hTypeToDisplay =\n {\n PatientsData = [||]\n Error = None\n AllFacilities = []\n HTypeToDisplay = hTypeToDisplay\n Breakdown = AllHospitals\n RangeSelectionButtonIndex = 1\n }\n\nlet getAllBreakdowns state = seq {\n yield ByHospital\n yield AllHospitals\n for fcode in state.AllFacilities do\n yield Facility fcode\n }\n\ntype Msg =\n | ConsumePatientsData of Result\n | ConsumeServerError of exn\n | SwitchBreakdown of Breakdown\n | RangeSelectionChanged of int\n\nlet init (hTypeToDisplay : HospitalType) : State * Cmd =\n let cmd = Cmd.OfAsync.either getOrFetch () ConsumePatientsData ConsumeServerError\n State.initial hTypeToDisplay, cmd\n\nlet getFacilitiesList (state : State) (data : PatientsStats array) =\n data.[data.Length-1].facilities\n |> Map.toSeq\n |> Seq.filter \n (fun (facility, stats) -> \n if state.HTypeToDisplay = CareHospitals \n then stats.care.toDate.IsSome \n else true (* SLO-spec stats.inHospital.toDate.IsSome*))\n |> Seq.map\n (fun (facility, stats) ->\n facility, \n if state.HTypeToDisplay = CareHospitals \n then stats.care.today\n else stats.inHospital.today)\n |> Seq.fold (fun hospitals (hospital,cnt) -> hospitals |> Map.add hospital cnt) Map.empty // all\n |> Map.toList\n |> List.sortBy (fun (_,cnt) -> cnt |> Option.defaultValue -1 |> ( * ) -1)\n |> List.map (fst)\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ConsumePatientsData (Ok data) ->\n { state with PatientsData = data; AllFacilities = getFacilitiesList state data }, Cmd.none\n | ConsumePatientsData (Error err) ->\n { state with Error = Some err }, Cmd.none\n | ConsumeServerError ex ->\n { state with Error = Some ex.Message }, Cmd.none\n | SwitchBreakdown breakdown ->\n { state with Breakdown = breakdown }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet renderByHospitalChart (state : State) dispatch =\n\n let startDate = DateTime(2020,03,10)\n\n let renderSources fcode =\n let renderPoint ps : (JsTimestamp * int option) =\n let value =\n ps.facilities\n |> Map.tryFind fcode\n |> Option.bind (fun stats -> \n if state.HTypeToDisplay = CareHospitals \n then stats.care.today\n else stats.inHospital.today\n )\n ps.JsDate12h, value\n\n let color, name = Data.Hospitals.facilitySeriesInfo fcode\n {|\n visible = true\n color = color\n name = name\n dashStyle = Solid |> DashStyle.toString\n data =\n state.PatientsData\n |> Seq.skipWhile (fun dp -> dp.Date < startDate)\n |> Seq.map renderPoint\n |> Array.ofSeq\n showInLegend = true\n |} |> pojo\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let baseOptions =\n basicChartOptions\n ScaleType.Linear \"covid19-patients-by-hospital\"\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n {| baseOptions with\n\n series = [| for fcode in state.AllFacilities do yield renderSources fcode |]\n\n tooltip = pojo {| shared = true; formatter = None ; xDateFormat = \"\" + I18N.t \"charts.common.dateFormat\" + \"\"|}\n\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n\n |} |> pojo\n\n\nlet renderStructureChart (state : State) dispatch =\n\n let startDate = DateTime(2020,03,10)\n\n let tooltipFormatter jsThis =\n let pts: obj[] = jsThis?points\n let fmtDate = pts.[0]?point?fmtDate\n\n let mutable fmtStr = \"\"\n let mutable fmtLine = \"\"\n let mutable fmtUnder = \"\"\n for p in pts do\n match p?point?fmtTotal with\n | \"null\" -> ()\n | _ ->\n match p?point?seriesId with\n | \"hospitalized\" | \"care\" | \"discharged\" | \"deceased\" -> fmtUnder <- \"\"\n | _ -> fmtUnder <- fmtUnder + \"↳ \"\n fmtLine <- sprintf \"\"\"
%s %s: %s\"\"\"\n fmtUnder\n p?series?color\n p?series?name\n p?point?fmtTotal\n if fmtStr.Length > 0 && List.contains p?point?seriesId [ \"hospitalized\"; \"care\" ] then\n fmtStr <- fmtLine + fmtStr // if we got Admitted before, then put it after Hospitalized\n else\n fmtStr <- fmtStr + fmtLine\n sprintf \"%s\" fmtDate + fmtStr\n\n let psData: (DateTime * FacilityPatientStats)[] =\n match state.Breakdown with\n | Facility fcode ->\n state.PatientsData\n |> Seq.skipWhile (fun dp -> dp.Date < startDate)\n |> Seq.map (\n fun ps -> (ps.Date, ps.facilities |> Map.find fcode)\n )\n |> Seq.toArray\n | _ ->\n state.PatientsData\n |> Seq.skipWhile (fun dp -> dp.Date < startDate)\n |> Seq.map\n (fun ps -> (ps.Date, ps.total.ToFacilityStats))\n |> Seq.toArray\n\n let renderBarSeries series =\n let subtract (a : int option) (b : int option) =\n match a, b with\n | Some aa, Some bb -> Some (bb - aa)\n | Some aa, None -> -aa |> Some\n | None, Some _ -> b\n | _ -> None\n let negative (a : int option) =\n match a with\n | Some aa -> -aa |> Some\n | None -> None\n\n let getPoint : (FacilityPatientStats -> int option) =\n match series with\n | InHospital ->\n fun ps ->\n ps.inHospital.today\n |> subtract ps.icu.today\n |> subtract ps.inHospital.``in``\n | Icu ->\n fun ps ->\n ps.icu.today\n |> subtract ps.critical.today\n | Critical -> fun ps -> ps.critical.today\n | InHospitalIn -> fun ps -> ps.inHospital.``in``\n | InHospitalOut -> fun ps -> negative ps.inHospital.out\n | InHospitalDeceased -> fun ps -> negative ps.deceased.today\n | Care ->\n fun ps ->\n ps.care.today\n |> subtract ps.care.``in``\n | CareIn -> fun ps -> ps.care.``in``\n | CareOut -> fun ps -> negative ps.care.out\n | CareDeceased -> fun ps -> negative ps.deceasedCare.today\n\n let getPointTotal : (FacilityPatientStats -> int option) =\n match series with\n | InHospital -> fun ps -> ps.inHospital.today\n | Icu -> fun ps -> ps.icu.today\n | Critical -> fun ps -> ps.critical.today\n | InHospitalIn -> fun ps -> ps.inHospital.``in``\n | InHospitalOut -> fun ps -> ps.inHospital.out\n | InHospitalDeceased -> fun ps -> ps.deceased.today\n | Care -> fun ps -> ps.care.today\n | CareIn -> fun ps -> ps.care.``in``\n | CareOut -> fun ps -> ps.care.out\n | CareDeceased -> fun ps -> ps.deceasedCare.today\n\n let color, seriesId = Series.getSeriesInfo series\n {|\n color = color\n name = I18N.tt \"charts.patients\" seriesId\n data =\n psData\n |> Seq.map (fun (date,ps) ->\n {|\n x = date |> jsTime12h\n y = getPoint ps\n fmtTotal = getPointTotal ps |> string\n fmtDate = I18N.tOptions \"days.longerDate\" {| date = date |}\n seriesId = seriesId\n |} )\n |> Seq.toArray\n |} |> pojo\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let className = \"covid19-patients-structure\"\n let baseOptions =\n basicChartOptions\n ScaleType.Linear className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` = \"column\"\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n plotOptions = pojo\n {|\n column = pojo {| stacking = \"normal\"; crisp = false; borderWidth = 0; pointPadding = 0; groupPadding = 0; turboThreshold = 0 |}\n |}\n\n series = [| for series in Series.structure state.HTypeToDisplay\n do yield renderBarSeries series |]\n\n tooltip = pojo {| shared = true; formatter = (fun () -> tooltipFormatter jsThis) |}\n\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n\n |} |> pojo\n\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n match state.Breakdown with\n | ByHospital ->\n renderByHospitalChart state dispatch\n |> chartFromWindow\n | _ ->\n renderStructureChart state dispatch\n |> chartFromWindow\n ]\n ]\n\nlet renderBreakdownSelector state breakdown dispatch =\n Html.div [\n prop.onClick (fun _ -> SwitchBreakdown breakdown |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (state.Breakdown = breakdown, \"metric-selector--selected\") ]\n prop.text (breakdown |> Breakdown.getName)\n ]\n\nlet renderBreakdownSelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n getAllBreakdowns state\n |> Seq.map (fun breakdown -> renderBreakdownSelector state breakdown dispatch) ) ]\n\nlet render (state : State) dispatch =\n match state.PatientsData, state.Error with\n | [||], None -> Html.div [ Utils.renderLoading ]\n | _, Some err -> Html.div [ Utils.renderErrorLoading err ]\n | _, None ->\n Html.div [\n renderChartContainer state dispatch\n renderBreakdownSelectors state dispatch\n Html.div [\n prop.className \"highcharts-subtitle\"\n prop.children [\n Html.p [\n prop.text (I18N.t \"noData.hospitals\")\n ]\n ]\n prop.style [ \n style.marginLeft 10 \n style.marginRight 10 \n style.marginTop 20 \n ]\n ]\n ]\n\nlet patientsChart (props : {| hTypeToDisplay : HospitalType |}) =\n React.elmishComponent(\"PatientsChart\", init props.hTypeToDisplay, update, render)\n","[]\nmodule RatiosChart\n\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Highcharts\nopen Types\n\nopen Data.Patients\n\ntype DisplayType =\n | Cases\n | Hospital\n | Mortality\n with\n static member all = [ Cases; Hospital; Mortality ]\n static member getName = function\n | Cases -> I18N.t \"charts.ratios.seriousCases\"\n | Hospital -> I18N.t \"charts.ratios.hospitalizations\"\n | Mortality -> I18N.t \"charts.ratios.mortality\"\n static member getClassName = function\n | Cases -> \"covid19-ratios-cases\"\n | Hospital -> \"covid19-ratios-hospital\"\n | Mortality -> \"covid19-ratios-mortality\"\n\ntype Ratios =\n | HospitalCases\n | IcuCases\n | CriticalCases\n | DeceasedCases\n | IcuHospital\n | CriticalHospital\n | DeceasedHospital\n | DeceasedHospitalC\n | DeceasedIcuC\n | DeceasedIcuDeceasedTotal\n | DeceasedHospitalDeceasedTotal\n\nmodule Ratios =\n let getSeries = function\n | Cases -> [ HospitalCases; IcuCases; CriticalCases; DeceasedCases ]\n | Hospital -> [ IcuHospital; CriticalHospital; DeceasedHospital]\n | Mortality -> [ DeceasedHospitalDeceasedTotal; DeceasedIcuDeceasedTotal; DeceasedIcuC; DeceasedHospitalC; ]\n\n // color, dash, id\n let getSeriesInfo = function\n | HospitalCases -> \"#de9a5a\", Solid, \"hospitalCases\"\n | IcuCases -> \"#d96756\", Solid, \"icuCases\"\n | CriticalCases -> \"#bf5747\", Solid, \"ventilatorCases\"\n | DeceasedCases -> \"#666666\", Dot, \"deceasedCases\"\n | IcuHospital -> \"#d96756\", Solid, \"icuHospital\"\n | CriticalHospital -> \"#bf5747\", Solid, \"ventilatorHospital\"\n | DeceasedHospital -> \"#666666\", Dot, \"deceasedHospital\"\n | DeceasedHospitalC -> \"#de9a5a\", Dot, \"hospitalMortality\"\n | DeceasedIcuC -> \"#d96756\", Dot, \"icuMortality\"\n | DeceasedIcuDeceasedTotal -> \"#d96756\", Solid, \"icuDeceasedShare\"\n | DeceasedHospitalDeceasedTotal -> \"#de9a5a\", Solid, \"hospitalDeceasedShare\"\n\ntype State = {\n casesMap: Map\n patientsData : PatientsStats []\n error: string option\n displayType: DisplayType\n RangeSelectionButtonIndex: int\n}\n\ntype Msg =\n | ConsumePatientsData of Result\n | ConsumeServerError of exn\n | ChangeDisplayType of DisplayType\n | RangeSelectionChanged of int\n\nlet init (data : StatsData) : State * Cmd =\n let state = {\n casesMap = data |> Seq.map (fun dp -> dp.Date, dp.Cases.ConfirmedToDate) |> Map.ofSeq\n patientsData = [||]\n error = None\n displayType = Cases\n RangeSelectionButtonIndex = 1\n }\n let cmd = Cmd.OfAsync.either Data.Patients.getOrFetch () ConsumePatientsData ConsumeServerError\n state, cmd\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ConsumePatientsData (Ok data) ->\n { state with patientsData = data }, Cmd.none\n | ConsumePatientsData (Error err) ->\n { state with error = Some err }, Cmd.none\n | ConsumeServerError ex ->\n { state with error = Some ex.Message }, Cmd.none\n | ChangeDisplayType dt ->\n { state with displayType = dt }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\n\nlet renderRatiosChart (state : State) dispatch =\n\n let startDate = DateTime(2020,03,10)\n\n let renderRatiosH ratio =\n let percent (a : int option) (b : int option) =\n match a with\n | None | Some 0 -> None\n | _ -> Some (float a.Value * 100. / float b.Value |> Utils.roundTo1Decimal)\n\n let cases (date : DateTime) =\n match state.casesMap.TryFind date with\n | None -> None\n | Some i -> i\n\n let renderRatioPoint : (Data.Patients.PatientsStats -> JsTimestamp * float option) =\n match ratio with\n | HospitalCases -> fun ps -> ps.JsDate12h, percent ps.total.inHospital.toDate (cases ps.Date)\n | IcuCases -> fun ps -> ps.JsDate12h, percent ps.total.icu.toDate (cases ps.Date)\n | CriticalCases -> fun ps -> ps.JsDate12h, percent ps.total.critical.toDate (cases ps.Date)\n | DeceasedCases -> fun ps -> ps.JsDate12h, percent ps.total.deceased.toDate (cases ps.Date)\n | IcuHospital -> fun ps -> ps.JsDate12h, percent ps.total.icu.toDate ps.total.inHospital.toDate\n | CriticalHospital -> fun ps -> ps.JsDate12h, percent ps.total.critical.toDate ps.total.inHospital.toDate\n | DeceasedHospital -> fun ps -> ps.JsDate12h, percent ps.total.deceased.hospital.toDate ps.total.inHospital.toDate\n | DeceasedHospitalC -> fun ps -> ps.JsDate12h, percent ps.total.deceased.hospital.toDate ps.total.inHospital.toDate\n | DeceasedIcuC -> fun ps -> ps.JsDate12h, percent ps.total.deceased.hospital.icu.toDate ps.total.icu.toDate\n | DeceasedIcuDeceasedTotal -> fun ps -> ps.JsDate12h, percent ps.total.deceased.hospital.icu.toDate ps.total.deceased.toDate\n | DeceasedHospitalDeceasedTotal -> fun ps -> ps.JsDate12h, percent ps.total.deceased.hospital.toDate ps.total.deceased.toDate\n\n let color, line, id = Ratios.getSeriesInfo ratio\n {|\n visible = true\n color = color\n dashStyle = line |> DashStyle.toString\n name = I18N.tt \"charts.ratios\" id\n data =\n state.patientsData\n |> Seq.skipWhile (fun dp -> dp.Date < startDate || dp.total.inHospital.toDate.IsNone)\n |> Seq.map renderRatioPoint\n |> Array.ofSeq\n |}\n |> pojo\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let className = DisplayType.getClassName state.displayType\n let baseOptions =\n Highcharts.basicChartOptions\n ScaleType.Linear className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` = \"spline\"\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n plotOptions = pojo\n {|\n spline = pojo {| dataLabels = pojo {| enabled = false |}; marker = pojo {| enabled = false |} |}\n |}\n\n series = [|\n for ratio in Ratios.getSeries(state.displayType) do\n yield renderRatiosH ratio\n |]\n\n tooltip = pojo {| shared = true; split = false ; valueSuffix = \" %\" ; xDateFormat = \"\" + I18N.t \"charts.common.dateFormat\" + \"\" |}\n\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n|}\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderRatiosChart state dispatch |> Highcharts.chartFromWindow\n ]\n ]\n\nlet renderDisplaySelector state dt dispatch =\n Html.div [\n prop.onClick (fun _ -> ChangeDisplayType dt |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (state.displayType = dt, \"metric-selector--selected\") ]\n prop.text (dt |> DisplayType.getName)\n ]\n\nlet renderDisplaySelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n DisplayType.all\n |> List.map (fun dt -> renderDisplaySelector state dt dispatch) ) ]\n\nlet render (state : State) dispatch =\n match state.patientsData, state.error with\n | [||], None -> Html.div [ Utils.renderLoading ]\n | _, Some err -> Html.div [ Utils.renderErrorLoading err ]\n | _, None ->\n Html.div [\n renderChartContainer state dispatch\n renderDisplaySelectors state dispatch\n ]\n\nlet ratiosChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"RatiosChart\", init props.data, update, render)\n","[]\nmodule AgeGroupsChart\n\nopen Browser\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\n\nopen Types\nopen Highcharts\nopen System\n\ntype ScaleType = Absolute | Relative\n\ntype ChartMode =\n | AbsoluteInfections\n | AbsoluteDeaths\n | InfectionsPerPopulation\n | DeathsPerPopulation\n | DeathsPerInfections\n\n static member ScaleType mode =\n match mode with\n | AbsoluteInfections -> Absolute\n | AbsoluteDeaths -> Absolute\n | InfectionsPerPopulation -> Relative\n | DeathsPerPopulation -> Relative\n | DeathsPerInfections -> Relative\n\ntype State = {\n ChartMode: ChartMode\n Data: StatsData\n}\n\ntype Msg =\n | ChartModeChanged of ChartMode\n | ScaleTypeChanged of ScaleType\n\nlet maybeFloat = Option.map float\n\n[]\nlet LabelMale = \"Moški\"\n[]\nlet LabelFemale = \"Ženske\"\n\nlet chartText = I18N.chartText \"ageGroups\"\n\nlet populationOf sexLabel ageGroupLabel =\n let parseAgeGroupLabel (label: string): AgeGroupKey =\n if label.Contains('-') then\n let i = label.IndexOf('-')\n let fromAge = Int32.Parse(label.Substring(0, i))\n let toAge = Int32.Parse(label.Substring(i+1))\n { AgeFrom = Some fromAge; AgeTo = Some toAge }\n else if label.Contains(\"+\") then\n let i = label.IndexOf('-')\n let fromAge = Int32.Parse(label.Substring(0, i))\n { AgeFrom = Some fromAge; AgeTo = None }\n else\n sprintf \"Invalid age group label: %s\" label\n |> ArgumentException |> raise\n\n let groupKey = parseAgeGroupLabel ageGroupLabel\n let ageGroupStats =\n Utils.AgePopulationStats.populationStatsForAgeGroup groupKey\n\n match sexLabel with\n | LabelMale -> ageGroupStats.Male\n | LabelFemale -> ageGroupStats.Female\n | _ ->\n sprintf \"Invalid sex label: '%s'\" sexLabel\n |> ArgumentException |> raise\n\nlet percentageOfPopulation affected total =\n let rawPercentage = (float affected) / (float total) * 100.\n rawPercentage |> Utils.roundTo3Decimals\n\nlet percentageOfPopulationMaybe infections population =\n infections |> Option.map (fun x -> percentageOfPopulation x population)\n\nlet percentageOfInfected deaths infections =\n (float deaths) / (float infections) * 100. |> Utils.roundTo1Decimal\n\nlet deathsPerInfectionsMaybe deaths infections =\n match deaths, infections with\n | (_, Some 0) -> None\n | (Some deaths, Some infections) ->\n percentageOfInfected deaths infections |> Some\n | _ -> None\n\ntype InfectionsAndDeathsForAgeGroup = {\n GroupKey: AgeGroupKey\n InfectionsMale : int option\n InfectionsFemale : int option\n DeathsMale : int option\n DeathsFemale : int option\n}\n\ntype InfectionsAndDeathsPerAge = InfectionsAndDeathsForAgeGroup[]\n\nlet mergeInfectionsAndDeathsByGroups\n (infections: AgeGroupsList) (deaths: AgeGroupsList)\n : InfectionsAndDeathsPerAge =\n\n let mappedInfections =\n infections\n |> List.map (fun group ->\n let groupKey = group.GroupKey\n let combined = { GroupKey = groupKey\n InfectionsMale = group.Male\n InfectionsFemale = group.Female\n DeathsMale = None; DeathsFemale = None }\n combined)\n |> List.toArray\n\n let deathsDict =\n deaths\n |> Seq.map (fun group -> group.GroupKey, group)\n |> dict\n\n let merged =\n mappedInfections\n |> Array.map (fun combined ->\n match deathsDict.TryGetValue combined.GroupKey with\n | (true, deathsForGroup) ->\n { combined with\n DeathsMale = deathsForGroup.Male\n DeathsFemale = deathsForGroup.Female }\n | (false, _) -> combined\n )\n\n merged |> Array.sortBy (fun group -> group.GroupKey)\n\n/// \n/// Fetches the infections and deaths per age groups for the latest day that\n/// has both sets of data.\n/// \nlet latestAgeData state =\n /// \n /// Filter function for determining whether the specified AgeGroups\n /// actually has any data or just an empty record.\n /// \n let extractAgeGroupsDataMaybe (ageGroupsData: AgeGroupsList) =\n ageGroupsData\n |> List.filter (fun ageGroup ->\n match ageGroup.Male, ageGroup.Female with\n | None, None -> false\n | _ -> true)\n |> function // take the most recent day with some data\n | [] -> None\n | _ -> Some ageGroupsData\n\n state.Data\n |> List.rev\n |> List.pick (fun dataPoint ->\n let infectionsDataMaybe =\n extractAgeGroupsDataMaybe dataPoint.StatePerAgeToDate\n let deathsDataMaybe =\n extractAgeGroupsDataMaybe dataPoint.DeceasedPerAgeToDate\n\n match infectionsDataMaybe, deathsDataMaybe with\n | Some infectionsData, Some deathsData ->\n Some (dataPoint.Date, mergeInfectionsAndDeathsByGroups infectionsData deathsData)\n | _ -> None\n )\n\ntype AgeCategoryChartData = {\n GroupKey: AgeGroupKey\n Male: float option\n Female: float option\n}\n\ntype AgesChartData = {\n Categories: AgeCategoryChartData[]\n } with\n\n member this.AgeGroupsLabels =\n this.Categories\n |> Array.map (fun ag -> ag.GroupKey.Label)\n\n member this.MaleValues =\n this.Categories |> Array.map (fun ag -> ag.Male)\n\n member this.FemaleValues =\n this.Categories |> Array.map (fun ag -> ag.Female)\n\nlet calculateChartData\n (infectionsAndDeathsPerAge: InfectionsAndDeathsPerAge) chartMode\n : AgesChartData =\n\n let mapNoneToZero x =\n match x with\n | None -> Some 0\n | _ -> x\n\n // Since HC bar chart no longer seems to accept Nones for values,\n // we map them to zeros first.\n let infectionsWithoutNones =\n infectionsAndDeathsPerAge\n |> Array.map(fun x ->\n { GroupKey = x.GroupKey\n InfectionsMale = x.InfectionsMale |> mapNoneToZero\n InfectionsFemale = x.InfectionsFemale |> mapNoneToZero\n DeathsMale = x.DeathsMale |> mapNoneToZero\n DeathsFemale = x.DeathsFemale |> mapNoneToZero\n }\n )\n\n let categories =\n infectionsWithoutNones\n |> Array.map (fun ageGroupData ->\n let populationStats =\n Utils.AgePopulationStats.populationStatsForAgeGroup\n ageGroupData.GroupKey\n\n let (male, female) =\n match chartMode with\n | AbsoluteInfections ->\n (maybeFloat ageGroupData.InfectionsMale,\n maybeFloat ageGroupData.InfectionsFemale)\n | AbsoluteDeaths ->\n (maybeFloat ageGroupData.DeathsMale,\n maybeFloat ageGroupData.DeathsFemale)\n | InfectionsPerPopulation ->\n let male =\n percentageOfPopulationMaybe\n ageGroupData.InfectionsMale populationStats.Male\n let female =\n percentageOfPopulationMaybe\n ageGroupData.InfectionsFemale populationStats.Female\n (male, female)\n\n | DeathsPerPopulation ->\n let male =\n percentageOfPopulationMaybe\n ageGroupData.DeathsMale populationStats.Male\n let female =\n percentageOfPopulationMaybe\n ageGroupData.DeathsFemale populationStats.Female\n (male, female)\n\n | DeathsPerInfections ->\n let male =\n deathsPerInfectionsMaybe\n ageGroupData.DeathsMale\n ageGroupData.InfectionsMale\n let female =\n deathsPerInfectionsMaybe\n ageGroupData.DeathsFemale\n ageGroupData.InfectionsFemale\n (male, female)\n\n { GroupKey = ageGroupData.GroupKey\n Male = male; Female = female }\n )\n\n { Categories = categories }\n\nlet renderScaleTypeSelectors activeScaleType dispatch =\n let renderScaleTypeSelector\n (scaleType : ScaleType)\n (activeScaleType : ScaleType)\n (label : string) =\n let defaultProps =\n [ prop.text label\n Utils.classes [\n (true, \"chart-display-property-selector__item\")\n (scaleType = activeScaleType, \"selected\") ] ]\n if scaleType = activeScaleType then\n Html.div defaultProps\n else\n Html.div\n ((prop.onClick (fun _ -> dispatch scaleType)) :: defaultProps)\n\n Html.div [\n prop.className \"chart-display-property-selector\"\n prop.children [\n renderScaleTypeSelector\n Absolute activeScaleType (chartText \"absolute\")\n renderScaleTypeSelector\n Relative activeScaleType (chartText \"populationShare\")\n ]\n ]\n\nlet renderChartCategorySelector\n (activeChartMode: ChartMode)\n dispatch\n (chartModeToRender: ChartMode) =\n\n let isActive = chartModeToRender = activeChartMode\n\n Html.div [\n prop.onClick (fun _ -> ChartModeChanged chartModeToRender |> dispatch)\n Utils.classes [\n (true, \"btn btn-sm metric-selector\")\n (isActive, \"metric-selector--selected\") ]\n prop.text (\n match chartModeToRender with\n | AbsoluteInfections -> chartText \"confirmedCases\"\n | AbsoluteDeaths -> chartText \"deceased\"\n | InfectionsPerPopulation -> chartText \"confirmedCases\"\n | DeathsPerPopulation -> chartText \"deceased\"\n | DeathsPerInfections -> chartText \"deceasedPerConfirmedCases\"\n )\n ]\n\nlet renderChartCategorySelectors activeChartMode dispatch =\n let categoriesForChartMode chartMode =\n match ChartMode.ScaleType chartMode with\n | Absolute -> [ AbsoluteInfections; AbsoluteDeaths ]\n | Relative ->\n [ \n InfectionsPerPopulation;\n DeathsPerPopulation;\n // DeathsPerInfections; \n ]\n\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n categoriesForChartMode activeChartMode\n |> List.map (renderChartCategorySelector activeChartMode dispatch)\n ) ]\n\nlet renderChartOptions\n (state : State) (latestDate: DateTime) (chartData: AgesChartData) =\n\n let valuesLabelFormatter (value: float) =\n match ChartMode.ScaleType state.ChartMode with\n | Absolute -> (abs value).ToString()\n | Relative -> Utils.percentageValuesLabelFormatter value\n\n let dateText = (I18N.tOptions \"charts.common.dataDate\" {| date = latestDate |})\n\n {| optionsWithOnLoadEvent \"covid19-age-groups\" with\n chart = pojo {| ``type`` = \"bar\" |}\n title = pojo {| text = None |}\n subtitle = {| text = dateText ; align=\"left\"; verticalAlign=\"bottom\" |}\n xAxis = [|\n {| categories = chartData.AgeGroupsLabels\n reversed = false\n opposite = false\n linkedTo = None |}\n {| categories = chartData.AgeGroupsLabels // mirror axis on right side\n reversed = false\n opposite = true\n linkedTo = Some 0 |}\n |]\n yAxis = pojo\n {| title = {| text = \"\" |}\n labels = pojo\n {| formatter = fun () -> valuesLabelFormatter jsThis?value |}\n // allowDecimals needs to be enabled because the values can be\n // be below 1, otherwise it won't auto-scale to below 1.\n allowDecimals = ChartMode.ScaleType state.ChartMode = Relative\n |}\n plotOptions = pojo\n {| series = pojo\n {| stacking = \"normal\" |}\n |}\n credits = pojo\n {|\n enabled = true\n text =\n sprintf \"%s: %s, %s\"\n (I18N.chartText \"common\" \"dataSource\")\n (I18N.tOptions (\"charts.common.dsNIJZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n (I18N.tOptions (\"charts.common.dsMZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n // SLO-spec href = \"https://www.nijz.si/sl/dnevno-spremljanje-okuzb-s-sars-cov-2-covid-19\"\n href = \"http://www.iph.mk\"\n\n |}\n tooltip = pojo\n {| formatter = fun () ->\n let sex = jsThis?series?name\n let ageGroup = jsThis?point?category\n let dataValue: float = jsThis?point?y\n\n match state.ChartMode with\n | AbsoluteInfections ->\n sprintf\n \"%s
%s: %s
%s: %A\"\n sex\n (chartText \"age\")\n ageGroup\n (chartText \"confirmedCases\")\n (abs dataValue)\n | InfectionsPerPopulation ->\n sprintf\n \"%s
%s: %s
%s: %s
%s: %d\"\n sex\n (chartText \"age\")\n ageGroup\n (chartText \"shareOfInfectedPopulation\")\n (Utils.percentageValuesLabelFormatter dataValue)\n (chartText \"populationTotal\")\n (populationOf sex ageGroup)\n | AbsoluteDeaths ->\n sprintf\n \"%s
%s: %s
%s: %A\"\n sex\n (chartText \"age\")\n ageGroup\n (chartText \"deceased\")\n (abs dataValue)\n | DeathsPerPopulation ->\n sprintf\n \"%s
%s: %s
%s: %s
%s: %d\"\n sex\n (chartText \"age\")\n ageGroup\n (chartText \"shareOfDeceasedPopulation\")\n (Utils.percentageValuesLabelFormatter dataValue)\n (chartText \"populationTotal\")\n (populationOf sex ageGroup)\n | DeathsPerInfections ->\n sprintf\n \"%s
%s: %s
%s: %s\"\n sex\n (chartText \"age\")\n ageGroup\n (chartText \"shareOfDeceasedConfirmedCases\")\n (Utils.percentageValuesLabelFormatter dataValue)\n |}\n series = [|\n {| name = chartText \"male\"\n color = \"#73CCD5\"\n dataLabels = pojo\n {| enabled = true\n formatter = fun() -> valuesLabelFormatter jsThis?y\n align = \"right\"\n style = pojo {| textOutline = false |}\n padding = 10 |}\n data = chartData.MaleValues\n |> Array.map (Option.map (fun y -> -y))\n |}\n {| name = chartText \"female\"\n color = \"#D99A91\"\n dataLabels = pojo\n {| enabled = true\n formatter = fun () -> valuesLabelFormatter jsThis?y\n align = \"left\"\n style = pojo {| textOutline = false |}\n padding = 10 |}\n data = chartData.FemaleValues\n |}\n |]\n |}\n\nlet init (data : StatsData) : State * Cmd =\n { ChartMode = AbsoluteInfections; Data = data }, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ChartModeChanged chartMode ->\n { state with ChartMode = chartMode}, Cmd.none\n | ScaleTypeChanged scaleType ->\n let toChartMode =\n match scaleType with\n | Absolute ->\n match state.ChartMode with\n | DeathsPerPopulation -> AbsoluteDeaths\n | DeathsPerInfections -> AbsoluteDeaths\n | _ -> AbsoluteInfections\n | Relative ->\n match state.ChartMode with\n | AbsoluteInfections -> InfectionsPerPopulation\n | _ -> DeathsPerPopulation\n { state with ChartMode = toChartMode }, Cmd.none\n\nlet renderChartContainer state =\n let latest = latestAgeData state\n let latestDate = fst (latest)\n let infectionsAndDeathsPerAge = snd (latest)\n let chartData = calculateChartData infectionsAndDeathsPerAge state.ChartMode\n \n Html.div [\n prop.style [ style.height 400 ]\n prop.className \"highcharts-wrapper\"\n prop.children [ renderChartOptions state latestDate chartData |> chart ]\n ]\n\nlet render (state : State) dispatch =\n let activeScaleType = ChartMode.ScaleType state.ChartMode\n\n Html.div [\n Utils.renderChartTopControlRight\n (renderScaleTypeSelectors activeScaleType (ScaleTypeChanged >> dispatch))\n renderChartContainer state\n renderChartCategorySelectors state.ChartMode dispatch\n\n match state.ChartMode with\n | AbsoluteDeaths | DeathsPerPopulation | DeathsPerInfections ->\n Html.div [\n prop.className \"disclaimer\"\n prop.children [\n Html.text (chartText \"disclaimer\")\n ]\n ]\n | _ -> Html.none\n ]\n\nlet renderChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"AgeGroupsChart\", init props.data, update, render)\n","[]\nmodule RegionsChart\n\nopen Types\n\nopen Browser.Types\nopen Elmish\nopen Fable.Core\nopen Highcharts\nopen JsInterop\nopen Feliz\nopen Feliz.ElmishComponents\n\nopen System.Text\n\ntype RegionInfo = {\n Color: string\n}\n\nlet regionsInfo = dict[\n \"ce\", { Color = \"#665191\" }\n \"kk\", { Color = \"#d45087\" }\n \"kp\", { Color = \"#70a471\" }\n \"kr\", { Color = \"#ffa600\" }\n \"lj\", { Color = \"#457844\" }\n \"ng\", { Color = \"#dba51d\" }\n \"nm\", { Color = \"#afa53f\" }\n \"mb\", { Color = \"#f95d6a\" }\n \"ms\", { Color = \"#024a66\" }\n \"po\", { Color = \"#a05195\" }\n \"sg\", { Color = \"#777c29\" }\n \"za\", { Color = \"#10829a\" }\n]\n\nlet excludedRegions = Set.ofList [\"t\"]\n\ntype Metric =\n { Key : string\n Color : string\n Visible : bool }\n\ntype MetricType =\n | ActiveCases\n | ConfirmedCases\n | Deceased\n with\n static member getName = function\n | ActiveCases -> I18N.chartText \"regions\" \"activeCases\"\n | ConfirmedCases -> I18N.chartText \"regions\" \"confirmedCases\"\n | Deceased -> I18N.chartText \"regions\" \"deceased\"\n\ntype MetricRelativeTo = Absolute | Pop100k\n\ntype RegionsChartConfig = {\n RelativeTo: MetricRelativeTo\n ChartTextsGroup: string\n}\n\ntype State =\n {\n ChartConfig: RegionsChartConfig\n ScaleType : ScaleType\n MetricType : MetricType\n Data : RegionsData\n Regions : Region list\n Metrics : Metric list\n RangeSelectionButtonIndex: int\n }\n\ntype Msg =\n | ToggleRegionVisible of string\n | MetricTypeChanged of MetricType\n | ScaleTypeChanged of ScaleType\n | RangeSelectionChanged of int\n\nlet regionTotal (region : Region) : int =\n region.Municipalities\n |> List.map (fun city -> city.ActiveCases)\n |> List.choose id\n |> List.sum\n\nlet init (config: RegionsChartConfig) (data : RegionsData) : State * Cmd =\n let lastDataPoint = List.last data\n\n let regionsWithoutExcluded =\n lastDataPoint.Regions\n |> List.filter (fun region ->\n not (excludedRegions |> Set.contains region.Name))\n\n let regionsByTotalCases =\n regionsWithoutExcluded\n |> List.sortByDescending regionTotal\n\n let metrics =\n regionsByTotalCases\n |> List.map (fun region ->\n let regionKey = region.Name\n let color = regionsInfo.[regionKey].Color\n { Key = regionKey\n Color = color\n Visible = true } )\n\n { ScaleType = Linear; MetricType = ActiveCases\n ChartConfig = config\n Data = data ; Regions = regionsByTotalCases ; Metrics = metrics\n RangeSelectionButtonIndex = 1 },\n Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ToggleRegionVisible regionKey ->\n let newMetrics =\n state.Metrics\n |> List.map (fun m ->\n if m.Key = regionKey\n then { m with Visible = not m.Visible }\n else m)\n { state with Metrics = newMetrics }, Cmd.none\n | MetricTypeChanged newMetricType ->\n { state with MetricType = newMetricType }, Cmd.none\n | ScaleTypeChanged scaleType ->\n { state with ScaleType = scaleType }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet tooltipValueFormatter (state: State) value =\n match state.ChartConfig.RelativeTo with\n // todo igor: format to int for absolute values\n | Absolute -> Utils.formatToInt value\n | Pop100k -> Utils.formatTo1DecimalWithTrailingZero value\n\nlet tooltipFormatter (state: State) chartData jsThis =\n let points: obj[] = jsThis?points\n\n match points with\n | [||] -> \"\"\n | _ ->\n let s = StringBuilder()\n // todo igor: extract date\n// let date = points.[0]?point?date\n// s.AppendFormat (\"{0}
\", date.ToString()) |> ignore\n s.Append \"\" |> ignore\n\n points\n |> Array.sortByDescending\n (fun region ->\n let dataValue: float = region?point?y\n dataValue)\n |> Array.iter\n (fun region ->\n let regionName = region?series?name\n let regionColor = region?series?color\n\n let dataValue: float = region?point?y\n\n s.Append \"\" |> ignore\n let regionTooltip =\n sprintf\n \"\"\n regionColor\n regionName\n (tooltipValueFormatter state dataValue)\n s.Append regionTooltip |> ignore\n s.Append \"\" |> ignore\n )\n\n s.Append \"
%s%A
\" |> ignore\n s.ToString()\n\nlet renderChartOptions (state : State) dispatch =\n\n let metricsToRender =\n state.Metrics\n |> List.filter (fun metric -> metric.Visible)\n\n let renderRegion metricToRender (point : RegionsDataPoint) =\n let ts = point.Date |> jsTime12h\n let region =\n point.Regions\n |> List.find (fun reg -> reg.Name = metricToRender.Key)\n\n let municipalityMetricValue muni =\n match state.MetricType with\n | ActiveCases -> muni.ActiveCases\n | ConfirmedCases -> muni.ConfirmedToDate\n | Deceased -> muni.DeceasedToDate\n |> Option.defaultValue 0\n\n let totalSum =\n region.Municipalities\n |> Seq.sumBy municipalityMetricValue\n |> float\n\n let finalValue =\n match state.ChartConfig.RelativeTo with\n | Absolute -> totalSum\n | Pop100k ->\n let regionPopulation =\n Utils.Dictionaries.regions.[region.Name].Population\n |> Option.get\n |> float\n\n let regionPopBy100k = regionPopulation / 100000.0\n totalSum / regionPopBy100k\n\n ts, finalValue\n\n let allSeries =\n metricsToRender\n |> List.map (fun metric ->\n let renderPoint = renderRegion metric\n {|\n visible = metric.Visible\n color = metric.Color\n name = I18N.tt \"mk.region\" metric.Key // SLO-spec\n data = state.Data |> Seq.map renderPoint |> Array.ofSeq\n |}\n |> pojo\n )\n |> List.toArray\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let baseOptions =\n basicChartOptions\n state.ScaleType \"covid19-regions\"\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n\n let xAxis =\n baseOptions.xAxis\n |> Array.map(fun xAxis -> {| xAxis with gridZIndex = 1 |})\n\n let chartTextGroup = state.ChartConfig.ChartTextsGroup\n\n let redThreshold = 140\n let yAxis =\n baseOptions.yAxis\n |> Array.map\n (fun yAxis ->\n {| yAxis with\n min = None\n gridZIndex = 1\n plotLines =\n match state.ChartConfig.RelativeTo, state.MetricType with\n | Pop100k, ActiveCases -> [|\n {| value=redThreshold\n label={|\n text=I18N.chartText chartTextGroup \"red\"\n align=\"left\"\n verticalAlign=\"bottom\"\n |}\n color=\"red\"\n width=1\n dashStyle=\"longdashdot\"\n zIndex=2\n |}\n |]\n | _ -> [| |]\n plotBands =\n match state.ChartConfig.RelativeTo, state.MetricType with\n | Pop100k, ActiveCases -> [|\n {| from=redThreshold; ``to``=100000.0\n color=\"#FCD5CF30\"\n |}\n |]\n | _ -> [| |]\n |})\n\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` = \"spline\"\n zoomType = \"x\"\n styledMode = false // <- set this to 'true' for CSS styling\n |}\n series = allSeries\n xAxis = xAxis\n yAxis = yAxis\n legend = {| enabled = false |}\n tooltip = pojo {|\n formatter = fun () ->\n tooltipFormatter state allSeries jsThis\n shared = true\n useHTML = true\n |}\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 450 ] //; style.width 500; ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> chartFromWindow\n ]\n ]\n\nlet renderMetricSelector (metric : Metric) dispatch =\n let style =\n if metric.Visible\n then [ style.backgroundColor metric.Color ; style.borderColor metric.Color ]\n else [ ]\n Html.div [\n prop.onClick (fun _ -> ToggleRegionVisible metric.Key |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (metric.Visible, \"metric-selector--selected\") ]\n prop.style style\n prop.text (I18N.tt \"mk.region\" metric.Key) ] // SLO-spec\n\nlet renderMetricsSelectors metrics dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n metrics\n |> List.map (fun metric ->\n renderMetricSelector metric dispatch\n ) ) ]\n\nlet renderMetricTypeSelectors (activeMetricType: MetricType) dispatch =\n let renderMetricTypeSelector (typeSelector: MetricType) =\n let active = typeSelector = activeMetricType\n Html.div [\n prop.onClick (fun _ -> dispatch typeSelector)\n Utils.classes\n [(true, \"chart-display-property-selector__item\")\n (active, \"selected\") ]\n prop.text (typeSelector |> MetricType.getName)\n ]\n\n let metricTypesSelectors =\n [ ActiveCases; ConfirmedCases; Deceased ]\n |> List.map renderMetricTypeSelector\n\n Html.div [\n prop.className \"chart-display-property-selector\"\n prop.children (metricTypesSelectors)\n ]\n\nlet render (state : State) dispatch =\n Html.div [\n Utils.renderChartTopControls [\n renderMetricTypeSelectors state.MetricType (MetricTypeChanged >> dispatch)\n Utils.renderScaleSelector state.ScaleType (ScaleTypeChanged >> dispatch)\n ]\n renderChartContainer state dispatch\n renderMetricsSelectors state.Metrics dispatch\n ]\n\nlet renderChart\n (config: RegionsChartConfig) (props : {| data : RegionsData |}) =\n React.elmishComponent\n (\"RegionsChart\", init config props.data, update, render)\n","module SourcesChart\n\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Browser\nopen Types\nopen Highcharts\n\nlet chartText = I18N.chartText \"sources\"\n\nlet countryColors =\n [\n \"#dba51d\"\n \"#afa53f\"\n \"#777c29\"\n \"#70a471\"\n \"#457844\"\n \"#f95d6a\"\n \"#d45087\"\n \"#a05195\"\n \"#665191\"\n \"#10829a\"\n \"#024a66\"\n \"#f95d6a\"\n \"#a05195\"\n \"#024a66\"\n \"#665191\"\n \"#10829a\"\n \"#dba51d\"\n \"#afa53f\"\n \"#777c29\"\n \"#70a471\"\n \"#457844\"\n \"#ffa600\"\n \"#d45087\"\n ]\n\ntype DisplayType =\n | Quarantine\n | QuarantineRelative\n | BySource\n | BySourceRelative\n | BySourceCountry\n | BySourceCountryRelative\n with\n static member all = [ BySource; BySourceRelative; BySourceCountry; BySourceCountryRelative; Quarantine; QuarantineRelative ]\n static member getName = function\n | Quarantine -> chartText \"quarantine\"\n | QuarantineRelative -> chartText \"quarantineRelative\"\n | BySource -> chartText \"bySource\"\n | BySourceRelative -> chartText \"bySourceRelative\"\n | BySourceCountry -> chartText \"bySourceCountry\"\n | BySourceCountryRelative -> chartText \"bySourceCountryRelative\"\n\n// ---------------------------\n// State management\n// ---------------------------\ntype State =\n { displayType: DisplayType\n data: WeeklyStatsData\n RangeSelectionButtonIndex: int }\n\ntype Msg =\n | RangeSelectionChanged of int\n | ChangeDisplayType of DisplayType\n\nlet init data: State * Cmd =\n let state =\n { displayType = BySource\n data = data\n RangeSelectionButtonIndex = 1 }\n\n state, Cmd.none\n\nlet update (msg: Msg) (state: State): State * Cmd =\n match msg with\n | RangeSelectionChanged buttonIndex ->\n { state with\n RangeSelectionButtonIndex = buttonIndex },\n Cmd.none\n | ChangeDisplayType displayType ->\n { state with displayType = displayType },\n Cmd.none\n\n// ---------------------------\n// Display Type Selection\n// ---------------------------\nlet renderDisplaySelector state dt dispatch =\n Html.div [\n prop.onClick (fun _ -> ChangeDisplayType dt |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (state.displayType = dt, \"metric-selector--selected\") ]\n prop.text (dt |> DisplayType.getName)\n ]\n\nlet renderDisplaySelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n DisplayType.all\n |> List.map (fun dt -> renderDisplaySelector state dt dispatch) ) ]\n\ntype Series =\n | ConfirmedCases\n | SentToQuarantine\n | ConfirmedFromQuarantine\n | ImportedCases\n | ImportRelatedCases\n | SourceUnknown\n | LocalSource\n\nmodule Series =\n let quarantine = [ SentToQuarantine; ConfirmedCases; ConfirmedFromQuarantine ]\n let quarantineRelative = [ ConfirmedCases; ConfirmedFromQuarantine ]\n let bySource = [ImportedCases; ImportRelatedCases; LocalSource; SourceUnknown; ]\n\n let getSeriesInfo =\n function\n | SentToQuarantine -> \"#cccccc\", \"sentToQuarantine\", 0\n | ConfirmedFromQuarantine -> \"#665191\", \"confirmedFromQuarantine\", 1\n | ConfirmedCases -> \"#d5c768\", \"confirmedCases\", 1\n\n | ImportedCases -> \"#d559b0\", \"importedCases\", 0\n | ImportRelatedCases -> \"#f4b2e0\", \"importRelatedCases\", 0\n | SourceUnknown -> \"#f95d6a\", \"sourceUnknown\", 0\n | LocalSource ->\"#F59C9C\", \"localSource\", 0\n\n\nlet tooltipFormatter jsThis =\n let pts: obj [] = jsThis?points\n let fmtWeekYearFromTo = pts.[0]?point?fmtWeekYearFromTo\n let arrows p = match p?point?seriesId with\n | \"confirmedFromQuarantine\" -> \"↳ \"\n |_ -> \"\"\n\n fmtWeekYearFromTo\n + \"
\"\n + (pts\n |> Seq.map (fun p ->\n sprintf \"\"\"%s %s: %s\"\"\" (arrows p) p?series?color p?series?name p?point?fmtTotal)\n |> String.concat \"
\")\n\nlet tooltipFormatterWithTotal totalText jsThis =\n let pts: obj [] = jsThis?points\n let total = pts |> Array.map (fun p -> p?point?y |> Utils.optionToInt) |> Array.sum\n tooltipFormatter jsThis + sprintf \"\"\"

%s: %s\"\"\" totalText (total |> string)\n\n\n\n// ---------------------------\n// Data Massaging\n// ---------------------------\nlet splitOutFromTotal (split : int option) (total : int option) =\n match split, total with\n | Some split_, Some total_ -> Some (total_ - split_)\n | None, Some _ -> total\n | _ -> None\n\n\n// ---------------------------\n// Chart Rendering w Highcharts\n// ---------------------------\nlet renderSeriesImportedByCountry (state: State) =\n let countryCodesSortedByTotal = state.data |> Data.WeeklyStats.countryTotals |> Array.map (fun (countryCode, _) -> countryCode)\n\n let countriesToShowInLegend = Array.sub countryCodesSortedByTotal 0 10 |> Set.ofArray// Top 10\n //let countriesToShowInLegend = countriesToShowInLegend |> Set.ofArray // All\n\n let countryToSeries (countryIndex:int) (countryCode:string) =\n {|\n stack = 0\n animation = false\n legendIndex = countryIndex\n color = countryColors.[countryIndex% countryColors.Length]\n name = I18N.tt \"country\" countryCode\n showInLegend = Set.contains countryCode countriesToShowInLegend\n data = state.data |> Seq.map (fun dp -> {|\n x = jsDatesMiddle dp.Date dp.DateTo\n y = dp.ImportedFrom.Item countryCode\n fmtTotal = dp.ImportedFrom.Item countryCode |> string\n fmtWeekYearFromTo =\n I18N.tOptions \"days.weekYearFromToDate\" {| date = dp.Date; dateTo = dp.DateTo |}\n\n |} |> pojo) |> Array.ofSeq\n |} |> pojo\n\n countryCodesSortedByTotal |> Seq.mapi countryToSeries\n\nlet renderSeries state = Seq.mapi (fun legendIndex series ->\n let getPoint: (WeeklyStatsDataPoint -> int option) =\n match series with\n | ConfirmedCases -> fun dp -> dp.ConfirmedCases |> splitOutFromTotal dp.Source.FromQuarantine\n | SentToQuarantine -> fun dp -> dp.SentToQuarantine\n | ConfirmedFromQuarantine -> fun dp -> dp.Source.FromQuarantine\n | ImportedCases -> fun dp -> dp.Source.Import\n | ImportRelatedCases -> fun dp -> dp.Source.ImportRelated\n | SourceUnknown -> fun dp -> dp.Source.Unknown\n | LocalSource -> fun dp -> dp.Source.Local\n\n let getPointTotal: (WeeklyStatsDataPoint -> int option) =\n match series with\n | ConfirmedCases -> fun dp -> dp.ConfirmedCases\n | SentToQuarantine -> fun dp -> dp.SentToQuarantine\n | ConfirmedFromQuarantine -> fun dp -> dp.Source.FromQuarantine\n | ImportedCases -> fun dp -> dp.Source.Import\n | ImportRelatedCases -> fun dp -> dp.Source.ImportRelated\n | SourceUnknown -> fun dp -> dp.Source.Unknown\n | LocalSource -> fun dp -> dp.Source.Local\n\n let color, seriesId, stack = Series.getSeriesInfo (series)\n {|\n color = color\n name = chartText seriesId\n stack = stack\n animation = false\n legendIndex = legendIndex\n data =\n state.data\n |> Seq.map (fun dp ->\n {| x = jsDatesMiddle dp.Date dp.DateTo\n y = getPoint dp\n fmtTotal = getPointTotal dp |> string\n seriesId = seriesId\n fmtWeekYearFromTo =\n I18N.tOptions \"days.weekYearFromToDate\" {| date = dp.Date; dateTo = dp.DateTo |} |}\n |> pojo)\n |> Array.ofSeq |}\n |> pojo)\n\nlet renderChartOptions (state: State) dispatch =\n let onRangeSelectorButtonClick (buttonIndex: int) =\n let res (_: Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n\n res\n\n let lastWeek = state.data.[state.data.Length-1]\n\n let className = \"covid19-weekly-stats\"\n let baseOptions =\n basicChartOptions ScaleType.Linear className state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` = \"column\"\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n series = (match state.displayType with\n | Quarantine -> Series.quarantine |> renderSeries state\n | QuarantineRelative -> Series.quarantineRelative |> renderSeries state\n | BySource | BySourceRelative -> Series.bySource |> renderSeries state\n | BySourceCountry | BySourceCountryRelative -> renderSeriesImportedByCountry state\n ) |> Seq.toArray\n yAxis =\n baseOptions.yAxis\n |> Array.map (fun yAxis -> {| yAxis with\n min = None\n labels = match state.displayType with\n | QuarantineRelative | BySourceRelative | BySourceCountryRelative ->pojo {| format = \"{value} %\" |}\n | _ -> pojo {| format = \"{value}\" |}\n\n reversedStacks = match state.displayType with\n | Quarantine | QuarantineRelative -> true\n | _ -> false |})\n xAxis =\n baseOptions.xAxis\n |> Array.map (fun xAxis ->\n {| xAxis with\n tickInterval = 86400000 * 7\n plotBands =\n [|\n {| from=jsTime <| lastWeek.Date\n ``to``=jsTime <| lastWeek.DateTo\n color=\"#ffffe0\"\n |}\n |]\n |})\n tooltip =\n pojo\n {| shared = true\n split = false\n useHTML = true\n formatter = match state.displayType with\n | Quarantine | QuarantineRelative -> fun () -> tooltipFormatter jsThis\n | BySource | BySourceRelative -> fun () -> tooltipFormatterWithTotal (chartText \"totalConfirmed\") jsThis\n | BySourceCountry | BySourceCountryRelative -> fun () -> tooltipFormatterWithTotal (chartText \"totalImported\") jsThis\n |}\n legend =\n pojo\n {| enabled = true\n layout = \"horizontal\" |}\n plotOptions = pojo {|\n column = pojo {|\n stacking = match state.displayType with\n | QuarantineRelative | BySourceRelative | BySourceCountryRelative -> \"percent\"\n | _ -> \"normal\" |}\n\n |}\n rangeSelector = configureRangeSelector state.RangeSelectionButtonIndex\n [|\n {|\n ``type`` = \"week\" // Customized to align x axis to exactly 9 weeks\n count = 9\n text = I18N.tOptions \"charts.common.x_months\" {| count = 2 |}\n events = pojo {| click = onRangeSelectorButtonClick 0 |}\n |}\n {|\n ``type`` = \"month\"\n count = 3\n text = I18N.tOptions \"charts.common.x_months\" {| count = 3 |}\n events = pojo {| click = onRangeSelectorButtonClick 1 |}\n |}\n {|\n ``type`` = \"all\"\n count = 1\n text = I18N.t \"charts.common.all\"\n events = pojo {| click = onRangeSelectorButtonClick 2 |}\n |}\n |]\n\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [ prop.style [ style.height 450 ]\n prop.className \"highcharts-wrapper\"\n prop.children\n [ renderChartOptions state dispatch\n |> chartFromWindow ] ]\n\n\nlet render (state: State) dispatch =\n let disclaimer =\n match state.displayType with\n | Quarantine | QuarantineRelative -> \"disclaimer\"\n | _ -> \"disclaimerGeneral\"\n\n Html.div [\n renderChartContainer state dispatch\n renderDisplaySelectors state dispatch\n\n Html.div [\n prop.className \"disclaimer\"\n prop.children [\n Html.text (chartText disclaimer)\n ]\n ]\n ]\n\nlet sourcesChart (props: {| data: WeeklyStatsData |}) =\n React.elmishComponent (\"sourcesChart\", init props.data, update, render)\n","module HcCasesChart\n\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\nopen Browser\nopen Types\nopen Highcharts\n\nlet chartText = I18N.chartText \"hcCases\"\n\ntype DisplayType =\n | Healthcare\n | HealthcareRelative\n with\n static member all = [ Healthcare; HealthcareRelative; ]\n static member getName = function\n | Healthcare -> chartText \"healthcareEmployees\"\n | HealthcareRelative -> chartText \"healthcareEmployeesRelative\"\n\n// ---------------------------\n// State management\n// ---------------------------\ntype State =\n { scaleType : ScaleType\n displayType: DisplayType\n data: WeeklyStatsData\n RangeSelectionButtonIndex: int }\n\ntype Msg =\n | RangeSelectionChanged of int\n | ScaleTypeChanged of ScaleType\n | ChangeDisplayType of DisplayType\n\nlet init data: State * Cmd =\n let state =\n { scaleType = Linear\n displayType = Healthcare\n data = data\n RangeSelectionButtonIndex = 1 }\n\n state, Cmd.none\n\nlet update (msg: Msg) (state: State): State * Cmd =\n match msg with\n | RangeSelectionChanged buttonIndex ->\n { state with\n RangeSelectionButtonIndex = buttonIndex },\n Cmd.none\n | ScaleTypeChanged scaleType ->\n { state with scaleType = scaleType }, Cmd.none\n | ChangeDisplayType displayType ->\n { state with displayType = displayType },\n Cmd.none\n\n// ---------------------------\n// Display Type Selection\n// ---------------------------\nlet renderDisplaySelector state dt dispatch =\n Html.div [\n prop.onClick (fun _ -> ChangeDisplayType dt |> dispatch)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (state.displayType = dt, \"metric-selector--selected\") ]\n prop.text (dt |> DisplayType.getName)\n ]\n\nlet renderDisplaySelectors state dispatch =\n Html.div [\n prop.className \"metrics-selectors\"\n prop.children (\n DisplayType.all\n |> List.map (fun dt -> renderDisplaySelector state dt dispatch) ) ]\n\ntype Series =\n | ConfirmedCases\n | HealthcareCases\n\nmodule Series =\n let healthcare = [ ConfirmedCases; HealthcareCases ]\n\n let getSeriesInfo =\n function\n | HealthcareCases -> \"#73ccd5\", \"healthcareEmployeesCases\", 1\n | ConfirmedCases -> \"#d5c768\", \"totalConfirmed\", 1\n\nlet tooltipFormatter jsThis =\n let pts: obj [] = jsThis?points\n let fmtWeekYearFromTo = pts.[0]?point?fmtWeekYearFromTo\n let arrows p = match p?point?seriesId with\n | \"healthcareEmployeesCases\" -> \"↳ \"\n |_ -> \"\"\n\n fmtWeekYearFromTo\n + \"
\"\n + (pts\n |> Seq.map (fun p ->\n sprintf \"\"\"%s %s: %s\"\"\" (arrows p) p?series?color p?series?name p?point?fmtTotal)\n |> String.concat \"
\")\n\n\n// ---------------------------\n// Data Massaging\n// ---------------------------\nlet splitOutFromTotal (split : int option) (total : int option) =\n match split, total with\n | Some split_, Some total_ -> Some (total_ - split_)\n | None, Some _ -> total\n | _ -> None\n\nlet renderSeries state = Seq.mapi (fun legendIndex series ->\n let getPoint: (WeeklyStatsDataPoint -> int option) =\n match series with\n | ConfirmedCases -> fun dp -> (match state.displayType with\n | Healthcare -> dp.ConfirmedCases\n | HealthcareRelative -> dp.ConfirmedCases |> splitOutFromTotal dp.HealthcareCases) // Because \"relative\" is a stacked bar chart\n\n | HealthcareCases -> fun dp -> dp.HealthcareCases\n\n let getPointTotal: (WeeklyStatsDataPoint -> int option) =\n match series with\n | ConfirmedCases -> fun dp -> dp.ConfirmedCases\n | HealthcareCases -> fun dp -> dp.HealthcareCases\n\n let color, seriesId, stack = Series.getSeriesInfo (series)\n {|\n color = color\n name = chartText seriesId\n stack = stack\n animation = false\n legendIndex = legendIndex\n data =\n state.data\n |> Seq.map (fun dp ->\n {| x = jsDatesMiddle dp.Date dp.DateTo\n y = getPoint dp\n fmtTotal = getPointTotal dp |> string\n seriesId = seriesId\n fmtWeekYearFromTo =\n I18N.tOptions \"days.weekYearFromToDate\" {| date = dp.Date; dateTo = dp.DateTo |} |}\n |> pojo)\n |> Array.ofSeq |}\n |> pojo)\n\nlet scaleType (state:State) =\n match state.displayType with\n | HealthcareRelative -> ScaleType.Linear\n | _ -> state.scaleType\n\nlet renderChartOptions (state: State) dispatch =\n let onRangeSelectorButtonClick (buttonIndex: int) =\n let res (_: Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n\n res\n\n let className = \"covid19-healthcare-employees\"\n let baseOptions =\n basicChartOptions (scaleType state) className state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n\n let lastWeek = state.data.[state.data.Length-1]\n\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` = (match state.displayType with\n | HealthcareRelative -> \"column\"\n | _ -> \"line\")\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n series = (match state.displayType with\n | Healthcare -> Series.healthcare |> renderSeries state\n | HealthcareRelative -> Series.healthcare |> renderSeries state\n ) |> Seq.toArray\n yAxis =\n baseOptions.yAxis\n |> Array.map (fun yAxis -> {| yAxis with\n min = match (scaleType state) with\n | Linear -> Some 0\n | _ -> None\n labels = match state.displayType with\n | HealthcareRelative -> pojo {| format = \"{value} %\" |}\n | _ -> pojo {| format = \"{value}\" |}\n\n reversedStacks = true\n |})\n xAxis =\n baseOptions.xAxis\n |> Array.map (fun xAxis ->\n {| xAxis with\n tickInterval = 86400000 * 7\n plotBands =\n [|\n {| from=jsTime <| lastWeek.Date\n ``to``=jsTime <| lastWeek.DateTo\n color=\"#ffffe0\"\n |}\n |]\n |})\n tooltip =\n pojo\n {| shared = true\n split = false\n useHTML = true\n formatter = fun () -> tooltipFormatter jsThis\n |}\n legend =\n pojo\n {| enabled = true\n layout = \"horizontal\" |}\n plotOptions = pojo {|\n column = pojo {|\n stacking = match state.displayType with\n | HealthcareRelative -> \"percent\"\n | _ -> \"normal\" |}\n\n |}\n rangeSelector = configureRangeSelector state.RangeSelectionButtonIndex\n [|\n {|\n ``type`` = \"week\" // Customized to align x axis to exactly 9 weeks\n count = 9\n text = I18N.tOptions \"charts.common.x_months\" {| count = 2 |}\n events = pojo {| click = onRangeSelectorButtonClick 0 |}\n |}\n {|\n ``type`` = \"month\"\n count = 3\n text = I18N.tOptions \"charts.common.x_months\" {| count = 3 |}\n events = pojo {| click = onRangeSelectorButtonClick 1 |}\n |}\n {|\n ``type`` = \"all\"\n count = 1\n text = I18N.t \"charts.common.all\"\n events = pojo {| click = onRangeSelectorButtonClick 2 |}\n |}\n |]\n\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [ prop.style [ style.height 450 ]\n prop.className \"highcharts-wrapper\"\n prop.children\n [ renderChartOptions state dispatch\n |> chartFromWindow ] ]\n\n\n\nlet render (state: State) dispatch =\n Html.div [\n Utils.renderChartTopControlRight (\n Utils.renderMaybeVisible (match state.displayType with\n | HealthcareRelative -> false\n | _ -> true) [\n Utils.renderScaleSelector\n state.scaleType (ScaleTypeChanged >> dispatch)])\n renderChartContainer state dispatch\n renderDisplaySelectors state dispatch\n\n Html.div [\n prop.className \"disclaimer\"\n prop.children [\n Html.text (chartText \"disclaimer\")\n ]\n ]\n ]\n\nlet hcCasesChart (props: {| data: WeeklyStatsData |}) =\n React.elmishComponent (\"hcCasesChart\", init props.data, update, render)\n","module CountriesChartViz.Analysis\n\nopen Data.OurWorldInData\nopen Types\nopen System\n\ntype MetricToDisplay =\n | NewCasesPer1M\n | ActiveCasesPer1M\n | TotalDeathsPer1M\n | DeathsPerCases\n\ntype CountryDataDayEntry = {\n Date: DateTime\n Value: float\n}\n\ntype CountryData = {\n IsoCode : CountryIsoCode\n Entries: CountryDataDayEntry[]\n}\n\ntype CountriesData = Map\n\nlet groupEntriesByCountries\n (metricToDisplay: MetricToDisplay) (entries: DataPoint list)\n : CountriesData =\n\n let transformFromRawOwid (entryRaw: DataPoint)\n : CountryDataDayEntry option =\n match metricToDisplay with\n | NewCasesPer1M ->\n match entryRaw.NewCasesPerMillion with\n | Some value -> Some { Date = entryRaw.Date; Value = value / 10. }\n | None -> None\n | ActiveCasesPer1M ->\n match entryRaw.NewCasesPerMillion with\n | Some value -> Some { Date = entryRaw.Date; Value = value / 10. }\n | None -> None\n | TotalDeathsPer1M ->\n match entryRaw.TotalDeathsPerMillion with\n | Some value -> Some { Date = entryRaw.Date; Value = value / 10. }\n | None -> None\n | DeathsPerCases ->\n match entryRaw.TotalDeaths, entryRaw.TotalCases with\n | Some totalDeaths, Some totalCases ->\n if totalCases > 0 then\n let value = (float totalDeaths) * 100.0 / (float totalCases)\n Some { Date = entryRaw.Date; Value = value }\n else\n None\n | _ -> None\n\n let groupedRaw =\n entries |> Seq.groupBy (fun entry -> entry.CountryCode)\n\n groupedRaw\n |> Seq.map (fun (isoCode, countryEntriesRaw) ->\n let countryEntries =\n countryEntriesRaw\n |> Seq.choose transformFromRawOwid\n |> Seq.toArray\n\n (isoCode, { IsoCode = isoCode; Entries = countryEntries } )\n ) |> Map.ofSeq\n\nlet calculateActiveCases (countryEntries: CountryDataDayEntry[]) =\n let entriesCount = countryEntries.Length\n\n let mutable runningActiveCases = 0.\n Array.init entriesCount (fun i ->\n let countryEntry = countryEntries.[i]\n\n runningActiveCases <- runningActiveCases + countryEntry.Value\n if i >= 14 then\n runningActiveCases <-\n runningActiveCases - countryEntries.[i - 14].Value\n\n { countryEntry with Value = runningActiveCases }\n )\n\nlet calculateMovingAverages\n daysOfMovingAverage\n (countryEntries: CountryDataDayEntry[]) =\n\n let entriesCount = countryEntries.Length\n let cutOff = daysOfMovingAverage / 2\n let averagesSetLength = entriesCount - cutOff * 2\n\n let averages: CountryDataDayEntry[] = Array.zeroCreate averagesSetLength\n\n let daysOfMovingAverageFloat = float daysOfMovingAverage\n let mutable currentSum = 0.\n\n let movingAverageFunc index =\n let entry = countryEntries.[index]\n\n currentSum <- currentSum + entry.Value\n\n match index with\n | index when index >= daysOfMovingAverage - 1 ->\n let date = countryEntries.[index - cutOff].Date\n let average = currentSum / daysOfMovingAverageFloat\n\n averages.[index - (daysOfMovingAverage - 1)] <- {\n Date = date; Value = average }\n\n let entryToRemove =\n countryEntries.[index - (daysOfMovingAverage - 1)]\n currentSum <- currentSum - entryToRemove.Value\n\n | _ -> ignore()\n\n for i in 0 .. entriesCount-1 do\n movingAverageFunc i\n\n averages\n\ntype OwidDataState =\n | NotLoaded\n | PreviousAndLoadingNew of OurWorldInDataRemoteData\n | Current of OurWorldInDataRemoteData\n\nlet SloveniaPopulationInM =\n (Utils.Dictionaries.regions.[\"mk\"].Population\n |> Utils.optionToInt\n |> float)\n / 1000000.\n\nlet buildFromSloveniaDomesticData (statsData: StatsData) (date: DateTime)\n : DataPoint option =\n let domesticDataForDate =\n statsData\n |> List.tryFind(fun dataForDate -> dataForDate.Date = date)\n\n let extractMetricIfPresent (metricValue: int option)\n : (int option * float option) =\n match metricValue with\n | Some value ->\n (Some value, (float value) / SloveniaPopulationInM |> Some)\n | None -> (None, None)\n\n match domesticDataForDate with\n | Some domesticDataForDate ->\n let newCases, newCasesPerM =\n extractMetricIfPresent domesticDataForDate.Cases.ConfirmedToday\n let totalCases, totalCasesPerM =\n extractMetricIfPresent domesticDataForDate.Cases.ConfirmedToDate\n let totalDeaths, totalDeathsPerM =\n extractMetricIfPresent\n domesticDataForDate.StatePerTreatment.DeceasedToDate\n\n {\n CountryCode = \"MKD\"; Date = date\n NewCases = newCases\n NewCasesPerMillion = newCasesPerM\n TotalCases = totalCases\n TotalCasesPerMillion = totalCasesPerM\n TotalDeaths = totalDeaths\n TotalDeathsPerMillion = totalDeathsPerM\n } |> Some\n | None -> None\n\nlet updateWithSloveniaDomesticData\n (statsData: StatsData) (countryData: DataPoint): DataPoint option =\n match countryData.CountryCode with\n | \"MKD\" ->\n countryData.Date |> buildFromSloveniaDomesticData statsData\n | _ -> Some countryData\n\nlet aggregateOurWorldInData\n daysOfMovingAverage\n (metricToDisplay: MetricToDisplay)\n (owidDataState: OwidDataState)\n (statsData: StatsData)\n : CountriesData option =\n\n let doAggregate (owidData: OurWorldInDataRemoteData): CountriesData option =\n match owidData with\n | Success dataPoints ->\n let dataPointsWithLocalSloveniaData =\n dataPoints\n |> List.choose (updateWithSloveniaDomesticData statsData)\n\n let groupedByCountries: CountriesData =\n dataPointsWithLocalSloveniaData\n |> (groupEntriesByCountries metricToDisplay)\n\n let averagedAndFilteredByCountries: CountriesData =\n groupedByCountries\n |> Map.map (fun _ (countryData: CountryData) ->\n let postProcessedEntries =\n match metricToDisplay with\n | NewCasesPer1M ->\n countryData.Entries\n |> calculateMovingAverages daysOfMovingAverage\n | ActiveCasesPer1M ->\n countryData.Entries |> calculateActiveCases\n | TotalDeathsPer1M ->\n countryData.Entries\n |> calculateMovingAverages daysOfMovingAverage\n | DeathsPerCases ->\n countryData.Entries\n |> calculateMovingAverages daysOfMovingAverage\n\n let minValueFilter =\n match metricToDisplay with\n | NewCasesPer1M -> 0.1\n | ActiveCasesPer1M -> 0.1\n | TotalDeathsPer1M -> 0.1\n | DeathsPerCases -> 0.001\n\n let trimmedEntries =\n postProcessedEntries\n |> Array.skipWhile\n (fun entry -> entry.Value < minValueFilter)\n\n { countryData with Entries = trimmedEntries })\n\n Some averagedAndFilteredByCountries\n | _ -> None\n\n match owidDataState with\n | PreviousAndLoadingNew owidData -> doAggregate owidData\n | Current owidData -> doAggregate owidData\n | NotLoaded -> None\n","module CountriesChartViz.Synthesis\n\nopen System.Text\nopen CountriesChartViz.Analysis\nopen Fable.Core\nopen Highcharts\nopen JsInterop\nopen Types\nopen I18N\n\ntype CountriesChartConfig = {\n StatsData: StatsData\n MetricToDisplay: MetricToDisplay\n ChartTextsGroup: string\n DataSource: string\n}\n\ntype CountriesDisplaySet = {\n Label: string\n CountriesCodes: string[]\n}\n\ntype ChartState = {\n OwidDataState: OwidDataState\n StatsData: StatsData\n DisplayedCountriesSet: CountriesDisplaySet\n MetricToDisplay: MetricToDisplay\n ScaleType: ScaleType\n ChartTextsGroup: string\n DataSource: string\n}\n\nlet ColorPalette =\n [ \"#f95d6a\" // SLO-spec: redish color for Macedonia\n \"#ffa600\"\n \"#dba51d\"\n \"#afa53f\"\n \"#777c29\"\n \"#70a471\"\n \"#457844\"\n \"#d45087\"\n \"#a05195\"\n \"#665191\"\n \"#10829a\"\n \"#024a66\" ]\n\nlet Dashes = [ DashStyle.Solid; DashStyle.Dash ]\n\ntype CountrySeries = {\n CountryAbbr: string\n CountryName: string\n Color: string\n Entries: CountryDataDayEntry[]\n}\n\ntype ChartData = {\n LegendTitle: string\n XAxisTitle: string\n YAxisTitle: string\n Series: CountrySeries[]\n}\n\nlet yAxisValueFormatter state jsThis =\n match state.MetricToDisplay with\n | DeathsPerCases ->\n Utils.percentageValuesLabelFormatter jsThis?value\n | _ -> jsThis?value\n\nlet tooltipValueFormatter state value =\n match state.MetricToDisplay with\n | DeathsPerCases ->\n Utils.percentageValuesWith1DecimalTrailingZeroLabelFormatter value\n | _ -> Utils.formatTo1DecimalWithTrailingZero value\n\nlet tooltipFormatter state chartData jsThis =\n let points: obj[] = jsThis?points\n\n match points with\n | [||] -> \"\"\n | _ ->\n let dataDescription =\n sprintf \"%s:\" chartData.LegendTitle\n\n let s = StringBuilder()\n s.Append dataDescription |> ignore\n s.Append \"
\" |> ignore\n\n let date = points.[0]?point?date\n s.AppendFormat (\"{0}
\", date.ToString()) |> ignore\n s.Append \"\" |> ignore\n\n points\n |> Array.sortByDescending\n (fun country ->\n let dataValue: float = country?point?y\n dataValue)\n |> Array.iter\n (fun country ->\n let countryName = country?series?name\n let countryColor = country?series?color\n\n let dataValue: float = country?point?y\n\n s.Append \"\" |> ignore\n let countryTooltip =\n sprintf\n \"\"\n countryColor\n countryName\n (tooltipValueFormatter state dataValue)\n s.Append countryTooltip |> ignore\n s.Append \"\" |> ignore\n )\n\n s.Append \"
%s%A
\" |> ignore\n s.ToString()\n\nlet prepareChartData daysOfMovingAverage (state: ChartState)\n : ChartData option =\n\n /// \n /// Ensures Macedonia is über alles ;-). -- SLO-Spec\n /// \n let countriesComparer (a, countryNameA: string) (b, countryNameB: string) =\n match a.IsoCode, b.IsoCode with\n | \"MKD\", _ -> -1 // SLO-spec\n | _, \"MKD\" -> 1 // SLO-spec\n | _ -> countryNameA.CompareTo countryNameB\n\n let aggregated =\n aggregateOurWorldInData\n daysOfMovingAverage\n state.MetricToDisplay\n state.OwidDataState\n state.StatsData\n\n\n match aggregated with\n | Some aggregated ->\n let colorsInPalette = ColorPalette |> List.length\n let countriesCount = aggregated |> Seq.length\n\n let series =\n aggregated\n // assign country names\n |> Map.map (fun countryIsoCode countryData ->\n (countryData, tt \"country\" countryIsoCode))\n |> Map.toArray\n |> Array.map (fun (_, value) -> value)\n // sort by country names (but keep Slovenia at the top)\n |> Array.sortWith countriesComparer\n // assign colors to countries and transform into final records\n |> Array.mapi (fun countryIndex (countryData, countryName) ->\n let colorIndex =\n countryIndex * colorsInPalette / countriesCount\n let color = ColorPalette.[colorIndex]\n\n { CountryAbbr = countryData.IsoCode\n CountryName = countryName\n Color = color\n Entries = countryData.Entries }\n )\n\n {\n Series = series\n LegendTitle = chartText state.ChartTextsGroup \"legendTitle\"\n XAxisTitle = \"\"\n YAxisTitle = chartText state.ChartTextsGroup \"yAxisTitle\"\n }\n |> Some\n | None -> None\n","module CountriesChartViz.CountrySets\n\nopen CountriesChartViz.Analysis\nopen Synthesis\n\nlet setNeighboringCountries = {\n Label = \"groupNeighbouring\"\n CountriesCodes = [| \"BGR\"; \"GRC\"; \"ALB\"; \"OWID_KOS\"; \"SRB\"; \"BIH\"; \"ROU\"; \"TUR\"; \"MNE\"; \"SVN\"; \"HRV\"; \"HUN\" |] // SLO-spec - changed for Macedonia\n }\n\nlet setHighestNewCases = {\n Label = \"groupHighestNewCases\"\n CountriesCodes = [| \"CZE\"; \"BEL\"; \"NLD\"; \"ARM\"; \"SVN\"; \"FRA\"; \"CHE\"; \"MNE\"; \"ARG\"; \"ESP\" |]\n}\n\nlet setHighestActiveCases = {\n Label = \"groupHighestActiveCases\"\n CountriesCodes = [| \"CZE\"; \"BEL\"; \"NLD\"; \"ARM\"; \"SVN\"; \"FRA\"; \"CHE\"; \"MNE\"; \"ARG\"; \"ESP\" |]\n}\n\nlet setHighestTotalDeaths = {\n Label = \"groupHighestTotalDeaths\"\n CountriesCodes = [| \"PER\"; \"BEL\"; \"BOL\"; \"ESP\"; \"BRA\"; \"CHL\"; \"ECU\"; \"MEX\"; \"USA\"; \"GBR\" |]\n}\n\nlet setLargestEuCountries = {\n Label = \"groupLargestEuCountries\"\n CountriesCodes = [| \"DEU\"; \"GBR\"; \"FRA\"; \"ITA\"; \"ESP\"; \"POL\"; \"ROU\"; \"NLD\"; \"BEL\" |]\n}\n\nlet setLargestWorldCountries = {\n Label = \"groupLargestWorldCountries\"\n CountriesCodes = [| \"CHN\"; \"IND\"; \"USA\"; \"IDN\"; \"PAK\"; \"BRA\"; \"NGA\"; \"BGD\"; \"RUS\"; \"MEX\"; \"JPN\" |]\n}\n\nlet setNordic = {\n Label = \"groupNordic\"\n CountriesCodes = [| \"DNK\"; \"FIN\"; \"ISL\"; \"NOR\"; \"SWE\" |]\n}\n\nlet setExYU = {\n Label = \"groupExYu\"\n CountriesCodes = [| \"BIH\"; \"HRV\"; \"SVN\"; \"MNE\"; \"OWID_KOS\"; \"SRB\" |] // SLO-spec - changed for Macedonia\n}\n\nlet setEastAsiaOceania = {\n Label = \"groupEastAsiaOceania\"\n CountriesCodes = [| \"AUS\"; \"CHN\"; \"JPN\"; \"KOR\"; \"NZL\"; \"SGP\"; \"TWN\" |]\n}\n\nlet setLatinAmerica = {\n Label = \"groupLatinAmerica\"\n CountriesCodes = [| \"ARG\"; \"BRA\"; \"CHL\"; \"COL\"; \"ECU\"; \"MEX\"; \"PER\" |]\n}\n\n// SLO-spec\nlet setCriticalEU = {\n Label = \"groupCriticalEU\"\n CountriesCodes = [| \"BEL\"; \"ESP\"; \"FRA\"; \"GBR\"; \"ITA\"; \"SWE\" |]\n}\n\nlet setCriticalWorld = {\n Label = \"groupCriticalWorld\"\n CountriesCodes = [| \"BRA\"; \"ECU\"; \"ITA\"; \"RUS\"; \"SWE\"; \"USA\" |]\n}\n\nlet countriesDisplaySets (metric: MetricToDisplay) =\n [| setCriticalEU; setCriticalWorld\n setNeighboringCountries; setNordic\n setEastAsiaOceania; setLatinAmerica\n |]\n\n(* SLO-spec\nlet countriesDisplaySets (metric: MetricToDisplay) =\n match metric with\n | NewCasesPer1M ->\n [| setNeighboringCountries; setHighestNewCases\n setLargestEuCountries; setLargestWorldCountries\n setNordic; setExYU; setEastAsiaOceania; setLatinAmerica\n |]\n | ActiveCasesPer1M ->\n [| setNeighboringCountries; setHighestActiveCases\n setLargestEuCountries; setLargestWorldCountries\n setNordic; setExYU; setEastAsiaOceania; setLatinAmerica\n |]\n | TotalDeathsPer1M ->\n [| setNeighboringCountries; setHighestTotalDeaths\n setLargestEuCountries; setLargestWorldCountries\n setNordic; setExYU; setEastAsiaOceania; setLatinAmerica\n |]\n | DeathsPerCases ->\n [| setNeighboringCountries\n setLargestEuCountries; setLargestWorldCountries\n setNordic; setExYU; setEastAsiaOceania; setLatinAmerica\n |]\n*)\n","module CountriesChartViz.Rendering\n\nopen System\nopen Browser\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Fable.Core.JsInterop\n\nopen Data.OurWorldInData\nopen Analysis\nopen Synthesis\nopen CountrySets\nopen Highcharts\nopen Types\nopen I18N\n\ntype Msg =\n | DataRequested\n | DataLoaded of OurWorldInDataRemoteData\n | CountriesSelectionChanged of CountriesDisplaySet\n | ScaleTypeChanged of ScaleType\n\n[]\nlet DaysOfMovingAverage = 7\n\nlet init (config: CountriesChartConfig): ChartState * Cmd =\n let metric = config.MetricToDisplay\n let state = {\n OwidDataState = NotLoaded\n StatsData = config.StatsData\n DisplayedCountriesSet = (countriesDisplaySets metric).[0]\n MetricToDisplay = metric\n ScaleType = Linear\n ChartTextsGroup = config.ChartTextsGroup\n DataSource = config.DataSource\n }\n state, Cmd.ofMsg DataRequested\n\nlet update (msg: Msg) (state: ChartState) : ChartState * Cmd =\n let getCountriesCodes selectedSet =\n \"MKD\" :: // SLO-spec here we specify origin country\n (selectedSet.CountriesCodes |> Array.toList)\n\n match msg with\n | CountriesSelectionChanged selectedSet ->\n let countriesCodes = getCountriesCodes selectedSet\n\n let newOwidDataState =\n match state.OwidDataState with\n | NotLoaded -> PreviousAndLoadingNew Loading\n | PreviousAndLoadingNew oldOwidData ->\n PreviousAndLoadingNew oldOwidData\n | Current oldOwidData -> PreviousAndLoadingNew oldOwidData\n\n { state with\n OwidDataState = newOwidDataState\n DisplayedCountriesSet = selectedSet\n },\n Cmd.OfAsync.result\n (loadData {\n DateFrom = None\n DateTo = None\n Countries = CountrySelection.Selected countriesCodes\n } DataLoaded)\n | DataRequested ->\n let countriesCodes = getCountriesCodes state.DisplayedCountriesSet\n\n let newOwidDataState =\n match state.OwidDataState with\n | NotLoaded -> PreviousAndLoadingNew Loading\n | PreviousAndLoadingNew oldOwidData ->\n PreviousAndLoadingNew oldOwidData\n | Current oldOwidData -> PreviousAndLoadingNew oldOwidData\n\n { state with OwidDataState = newOwidDataState },\n Cmd.OfAsync.result\n (loadData {\n DateFrom = None\n DateTo = None\n Countries = CountrySelection.Selected countriesCodes\n } DataLoaded)\n | DataLoaded remoteData ->\n { state with OwidDataState = Current remoteData }, Cmd.none\n | ScaleTypeChanged newScaleType ->\n { state with ScaleType = newScaleType }, Cmd.none\n\nlet renderChartCode (state: ChartState) (chartData: ChartData) =\n let myLoadEvent _ =\n let ret _ =\n let evt = document.createEvent(\"event\")\n evt.initEvent(\"chartLoaded\", true, true);\n document.dispatchEvent(evt)\n ret\n\n let allSeries =\n chartData.Series\n |> Array.map (fun countrySeries ->\n pojo\n {|\n visible = true\n color = countrySeries.Color\n name = countrySeries.CountryName\n data =\n countrySeries.Entries\n |> Array.mapi (fun i entry ->\n pojo {|\n x = entry.Date |> jsTime12h :> obj\n y = entry.Value\n date = tOptions \"days.longerDate\"\n {| date = entry.Date |}\n dataLabels =\n if i = countrySeries.Entries.Length-1 then\n pojo {|\n enabled = true\n format = countrySeries.CountryName\n align = \"left\"\n verticalAlign = \"middle\"\n x = 0\n y = 0\n |}\n else pojo {||}\n |}\n )\n marker = pojo {| enabled = false |}\n |}\n )\n\n\n let legend =\n pojo {|\n enabled = true\n title = pojo {| text = chartData.LegendTitle |}\n align = \"left\"\n verticalAlign = \"top\"\n borderColor = \"#ddd\"\n borderWidth = 1\n layout = \"vertical\"\n floating = true\n padding = 15\n x = 0\n y = 0\n backgroundColor = \"rgba(255,255,255,0.9)\"\n |}\n\n let redZoneStart = 50\n\n let baseOptions =\n basicChartOptions state.ScaleType \"covid19-metrics-comparison\"\n 1 (fun _ -> (fun _ -> true))\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` = \"spline\"\n zoomType = \"x\"\n events = {| load = myLoadEvent(\"countries\") |}\n |}\n title = pojo {| text = None |}\n series = allSeries\n xAxis =\n pojo {|\n ``type`` = \"datetime\"\n allowDecimals = false\n title = pojo {| text = chartData.XAxisTitle |}\n dateTimeLabelFormats = pojo\n {|\n week = t \"charts.common.shortDateFormat\"\n day = t \"charts.common.shortDateFormat\"\n |}\n |}\n yAxis =\n pojo {|\n ``type`` =\n match state.ScaleType with\n | Linear -> \"linear\"\n | Logarithmic -> \"logarithmic\"\n labels = pojo {| formatter = yAxisValueFormatter state |}\n min =\n match state.ScaleType with\n | Linear -> 0\n | Logarithmic -> 1\n// max =\n// match state.MetricToDisplay with\n// // double of the red condition\n// | ActiveCasesPer1M -> Some 800\n// | _ -> None\n opposite = true\n crosshair = true\n title =\n pojo {|\n align = \"middle\"\n text = chartData.YAxisTitle\n |}\n plotLines =\n match state.MetricToDisplay with\n | ActiveCasesPer1M -> [|\n {| value=redZoneStart\n label={|\n text=t \"charts.countriesActiveCasesPer1M.red\"\n align=\"left\"\n verticalAlign=\"bottom\"\n |}\n color=\"red\"\n width=1\n dashStyle=\"longdashdot\"\n zIndex=9\n |}\n |]\n | _ -> [| |]\n plotBands =\n match state.MetricToDisplay with\n | ActiveCasesPer1M -> [|\n {| from=redZoneStart; ``to``=10000.0\n color=\"#FEF8F7\"\n |}\n |]\n | _ -> [| |]\n |}\n plotOptions = pojo\n {|\n series = pojo {| stacking = \"\" |}\n |}\n legend = legend\n tooltip = pojo {|\n formatter = fun () ->\n tooltipFormatter state chartData jsThis\n shared = true\n useHTML = true\n |}\n rangeSelector = pojo {| enabled = false |}\n credits = pojo\n {|\n enabled = true\n text =\n sprintf \"%s: %s\"\n (t \"charts.common.dataSource\")\n (t (\"charts.common.\" + state.DataSource))\n href = \"https://ourworldindata.org/coronavirus\"\n |}\n |}\n\nlet renderChartContainer state chartData =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [ renderChartCode state chartData |> chart ]\n ]\n\nlet renderCountriesSetsSelectors\n (metric: MetricToDisplay)\n (activeSet: CountriesDisplaySet)\n dispatch =\n let renderCountriesSetSelector (setToRender: CountriesDisplaySet) =\n let active = setToRender = activeSet\n Html.div [\n prop.text (t (\"country-groups.\" + setToRender.Label))\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (active, \"metric-selector--selected selected\") ]\n if not active then prop.onClick (fun _ -> dispatch setToRender)\n if active then prop.style [ style.backgroundColor \"#808080\" ]\n ]\n\n Html.div [\n prop.className \"metrics-selectors\"\n countriesDisplaySets metric\n |> Array.map renderCountriesSetSelector\n |> prop.children\n ]\n\nlet render (state: ChartState) dispatch =\n let chartData =\n state |> prepareChartData DaysOfMovingAverage\n\n let topControls = [\n Html.div [ prop.className \"chart-display-property-selector\" ]\n Utils.renderScaleSelector\n state.ScaleType (ScaleTypeChanged >> dispatch)\n ]\n\n match chartData with\n | Some chartData ->\n Html.div [\n Utils.renderChartTopControls topControls\n renderChartContainer state chartData\n renderCountriesSetsSelectors\n state.MetricToDisplay\n state.DisplayedCountriesSet\n (CountriesSelectionChanged >> dispatch)\n\n Html.div [\n prop.className \"disclaimer\"\n ]\n ]\n | None -> Html.none\n\nlet renderChart (config: CountriesChartConfig) =\n React.elmishComponent\n (\"CountriesChartViz/CountriesChart\", init config, update, render)\n","module PhaseDiagram.Types\n\nopen Browser\n\nopen Types\n\nlet i18n = I18N.tt \"charts.phaseDiagram\"\n\ntype DiagramKind =\n | TotalVsWeek\n | WeekVsWeekBefore\n\n with\n\n member this.Name =\n match this with\n | TotalVsWeek -> i18n \"totalVsWeek.name\"\n | WeekVsWeekBefore -> i18n \"weekVsWeekBefore.name\"\n\n static member All = [TotalVsWeek ; WeekVsWeekBefore]\n\ntype Color = {\n Dark : string\n Light : string\n}\n\ntype Metric =\n | Cases\n | Hospitalized\n | Deceased\n\n with\n\n member this.Name =\n match this with\n | Cases -> i18n \"cases\"\n | Hospitalized -> i18n \"hospitalized\"\n | Deceased -> i18n \"deceased\"\n\n member this.Color =\n match this with\n | Cases ->\n { Dark = \"#dba51d\"\n Light = \"#f2dba2\" }\n | Hospitalized ->\n { Dark = \"#be7A2a\"\n Light = \"#eacaa3\" }\n | Deceased ->\n { Dark = \"#000000\"\n Light = \"#999999\" }\n\n static member AllMetrics =\n [ Cases ; Hospitalized ; Deceased ]\n\nlet (|CasesMetric|HospitalizedMetric|DeceasedMetric|UnknownMetric|) str =\n if str = Metric.Cases.ToString() then CasesMetric\n elif str = Metric.Hospitalized.ToString() then HospitalizedMetric\n elif str = Metric.Deceased.ToString() then DeceasedMetric\n else UnknownMetric\n\ntype DisplayData = {\n x : int\n y : int\n date : System.DateTime\n}\n\ntype State = {\n StatsData : StatsData\n DisplayData : DisplayData array\n DiagramKind : DiagramKind\n Metric : Metric\n Day : int\n}\n\ntype Msg =\n | DiagramKindSelected of DiagramKind\n | MetricSelected of string\n | DayChanged of int\n","module PhaseDiagram.Data\n\nopen Types\n\nlet totalVsWeekData metric statsData =\n let windowSize = 7\n\n let normalizedData =\n match metric with\n | Cases ->\n statsData\n |> List.map (fun (dp : StatsDataPoint) ->\n {| Date = dp.Date\n Count = dp.Cases.ConfirmedToday\n CountToDate = dp.Cases.ConfirmedToDate\n |})\n | Deceased ->\n statsData\n |> List.map (fun (dp : StatsDataPoint) ->\n {| Date = dp.Date\n Count = dp.StatePerTreatment.Deceased\n CountToDate = dp.StatePerTreatment.DeceasedToDate\n |})\n | Hospitalized ->\n statsData\n |> List.map (fun (dp : StatsDataPoint) ->\n {| Date = dp.Date\n Count = dp.StatePerTreatment.InHospital\n CountToDate = dp.StatePerTreatment.InHospitalToDate\n |})\n |> List.pairwise\n |> List.map (fun (a, b) ->\n match a.Count, b.Count, b.CountToDate with\n | Some aCount, Some bCount, Some bCountToDate ->\n {| Date = b.Date\n Count = Some (bCount - aCount)\n CountToDate = Some bCountToDate\n |} |> Some\n | _ -> None)\n |> List.choose id\n\n normalizedData\n |> List.windowed windowSize\n |> List.map (fun window ->\n let last =\n window\n |> List.toArray\n |> Array.last\n\n match last.CountToDate with\n | None -> None\n | Some countToDate ->\n let countInWindow =\n window\n |> List.map (fun dp -> dp.Count)\n |> List.choose id\n |> List.sum\n { x = countToDate\n y = countInWindow\n date = last.Date\n } |> Some)\n |> List.choose id\n |> List.toArray\n\nlet weekVsWeekBeforeData metric statsData =\n let windowSize = 7\n\n let normalizedData =\n match metric with\n | Cases ->\n statsData\n |> List.map (fun (dp : StatsDataPoint) ->\n {| Date = dp.Date\n Count = dp.Cases.ConfirmedToday\n |})\n | Deceased ->\n statsData\n |> List.map (fun (dp : StatsDataPoint) ->\n {| Date = dp.Date\n Count = dp.StatePerTreatment.Deceased\n |})\n | Hospitalized ->\n statsData\n |> List.map (fun (dp : StatsDataPoint) ->\n {| Date = dp.Date\n Count = dp.StatePerTreatment.InHospital\n |})\n |> List.pairwise\n |> List.map (fun (a, b) ->\n match a.Count, b.Count with\n | Some aCount, Some bCount ->\n {| Date = b.Date\n Count = Some (bCount - aCount)\n |} |> Some\n | _ -> None)\n |> List.choose id\n\n normalizedData\n |> List.filter (fun dp -> dp.Count |> Option.isSome)\n |> List.windowed (windowSize * 2)\n |> List.map (fun doubleWindow ->\n let firstWindow, secondWindow = List.splitAt windowSize doubleWindow\n let firstWindowSum = firstWindow |> List.map (fun dp -> dp.Count |> Option.defaultValue 0) |> List.sum\n let secondWindowSum = secondWindow |> List.map (fun dp -> dp.Count |> Option.defaultValue 0) |> List.sum\n if firstWindowSum = 0 then\n None\n else\n Some { x = firstWindowSum\n y = (float secondWindowSum) / (float firstWindowSum) * 100.0 |> System.Convert.ToInt32\n date = (secondWindow |> List.rev |> List.head ).Date })\n |> List.choose id\n |> List.toArray\n\nlet displayData metric diagramKind statsData =\n match diagramKind with\n | TotalVsWeek ->\n totalVsWeekData metric statsData\n | WeekVsWeekBefore ->\n weekVsWeekBeforeData metric statsData\n","[]\nmodule PhaseDiagram.Chart\n\nopen Browser\nopen Fable.Core.JsInterop\nopen Elmish\nopen Feliz\nopen Feliz.UseElmish\n\nopen Components.Slider\nopen Highcharts\n\nopen Types\nopen Data\n\nlet init statsData : State * Cmd =\n let metric = Cases\n let diagramKind = TotalVsWeek\n let displayData = totalVsWeekData metric statsData\n\n let state = {\n StatsData = statsData\n DisplayData = displayData\n DiagramKind = diagramKind\n Metric = metric\n Day = displayData.Length - 1\n }\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | DayChanged day ->\n { state with Day = day }, Cmd.none\n | DiagramKindSelected diagramKind ->\n let displayData = displayData state.Metric diagramKind state.StatsData\n { state with\n DiagramKind = diagramKind\n DisplayData = displayData\n Day = displayData.Length - 1 }, Cmd.none\n | MetricSelected metric ->\n let newState =\n match metric with\n | CasesMetric -> { state with Metric = Cases }\n | HospitalizedMetric -> { state with Metric = Hospitalized }\n | DeceasedMetric -> { state with Metric = Deceased }\n | UnknownMetric -> state\n let newDisplayData = displayData newState.Metric state.DiagramKind state.StatsData\n { newState with\n DisplayData = newDisplayData\n Day = newDisplayData.Length - 1 }, Cmd.none\n\nlet sharedChartOptions displayData =\n {| title = None\n chart = pojo {| ``type`` = \"scatter\" ; animation = false ; zoomType = None |}\n legend = {| |}\n credits = Highcharts.credictsOptions |}\n\nlet totalVsWeekChartOptions state =\n let sharedOptions = sharedChartOptions()\n\n let data = state.DisplayData |> Array.map (fun dp -> dp |> pojo)\n\n {| sharedOptions with\n xAxis = pojo\n {| ``type`` = \"logarithmic\"\n gridLineWidth = 1\n title = pojo {| text = i18n \"totalVsWeek.xAxisTitle\" |}\n min = 1\n max = (state.DisplayData |> Array.maxBy (fun dp -> dp.x)).x\n |}\n\n yAxis = pojo\n {| ``type`` = \"logarithmic\"\n title = pojo {| text = i18n \"totalVsWeek.yAxisTitle\" |}\n min = 1\n max = (state.DisplayData |> Array.maxBy (fun dp -> dp.y)).y\n |}\n\n tooltip = pojo\n {| formatter = fun () ->\n let date = I18N.tOptions \"days.longerDate\" {| date = jsThis?point?date |}\n sprintf \"%s
%s: %d
%s: %d\"\n date\n (i18n \"totalVsWeek.xAxisLabel\") jsThis?x\n (i18n \"totalVsWeek.yAxisLabel\") jsThis?y |}\n\n series = [|\n {| data = data\n color = state.Metric.Color.Light\n marker = pojo {| symbol = \"circle\" ; radius = 2 |}\n states = pojo {| hover = pojo {| lineWidth = 0 |} |}\n |} |> pojo\n {| data = [| data.[state.Day] |]\n color = state.Metric.Color.Dark\n marker = pojo {| symbol = \"circle\" ; radius = 8 |}\n states = pojo {| hover = pojo {| lineWidth = 0 |} |}\n |} |> pojo\n |]\n |} |> pojo\n\nlet weekVsWeekBeforeOptions state =\n let sharedOptions = sharedChartOptions()\n\n let data = state.DisplayData |> Array.map (fun dp -> dp |> pojo)\n\n {| sharedOptions with\n xAxis = pojo\n {| ``type`` = \"logarithmic\"\n gridLineWidth = 1\n title = pojo {| text = i18n \"weekVsWeekBefore.xAxisTitle\" |}\n min = 1\n max = (state.DisplayData |> Array.maxBy (fun dp -> dp.x)).x\n |}\n\n yAxis = pojo\n {| ``type`` = \"linear\"\n title = pojo {| text = i18n \"weekVsWeekBefore.yAxisTitle\" |}\n min = 0\n max = (state.DisplayData |> Array.maxBy (fun dp -> dp.y)).y\n |}\n\n tooltip = pojo\n {| formatter = fun () ->\n let date = I18N.tOptions \"days.longerDate\" {| date = jsThis?point?date |}\n sprintf \"%s
%s: %d
%s: %d %%\"\n date\n (i18n \"weekVsWeekBefore.xAxisLabel\") jsThis?x\n (i18n \"weekVsWeekBefore.yAxisLabel\") jsThis?y |}\n\n series = [|\n {| data = data\n color = state.Metric.Color.Light\n marker = pojo {| symbol = \"circle\" ; radius = 3 |}\n states = pojo {| hover = pojo {| lineWidth = 0 |} |}\n |} |> pojo\n {| data = [| data.[state.Day] |]\n color = state.Metric.Color.Dark\n marker = pojo {| symbol = \"circle\" ; radius = 8 |}\n states = pojo {| hover = pojo {| lineWidth = 0 |} |}\n |} |> pojo\n |]\n |} |> pojo\n\nlet renderMetricSelector (selected : Metric) dispatch =\n let options =\n Metric.AllMetrics\n |> List.map (fun metric ->\n Html.option [\n prop.text metric.Name\n prop.value (metric.ToString())\n ]\n )\n\n Html.select [\n prop.value (selected.ToString())\n prop.className \"form-control form-control-sm filters__type\"\n prop.children options\n prop.onChange (MetricSelected >> dispatch)\n ]\n\nlet renderDiagramKindSelectors (selected : DiagramKind) dispatch =\n let renderDiagramKindSelector diagramKind =\n Html.div [\n prop.onClick (fun _ -> dispatch (DiagramKindSelected diagramKind))\n Utils.classes\n [(true, \"chart-display-property-selector__item\")\n (diagramKind = selected, \"selected\") ]\n prop.text diagramKind.Name\n ]\n\n Html.div [\n prop.className \"chart-display-property-selector\"\n prop.children (DiagramKind.All |> List.map renderDiagramKindSelector)\n ]\n\nlet renderChartContainer state dispatch =\n let chartOptions =\n match state.DiagramKind with\n | TotalVsWeek -> totalVsWeekChartOptions\n | WeekVsWeekBefore -> weekVsWeekBeforeOptions\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n Highcharts.chart (chartOptions state)\n ]\n ]\n\nlet renderChart state dispatch =\n let date = state.DisplayData.[state.Day].date\n\n Html.div [\n prop.children [\n Utils.renderChartTopControls [\n Html.div [\n prop.className \"filters\"\n prop.children [\n renderMetricSelector state.Metric dispatch\n ]\n ]\n renderDiagramKindSelectors state.DiagramKind dispatch\n ]\n renderChartContainer state dispatch\n Html.div [\n prop.className \"slider\"\n prop.children [\n Html.span [\n prop.className \"date\"\n prop.children [\n Html.text (sprintf \"%02d. %02d. %d\" date.Day date.Month date.Year)\n ]\n ]\n Slider [\n Props.Min 0\n Props.Max (state.DisplayData.Length - 1)\n Props.Value state.Day\n Props.OnChange (fun value -> dispatch (DayChanged value))\n ] []\n ]\n ]\n ]\n ]\n\nlet chart =\n React.functionComponent(fun (props : {| data : StatsData |}) ->\n let state, dispatch = React.useElmish(init props.data, update, [| |])\n renderChart state dispatch\n )\n","module MetricsCorrelationViz.Rendering\n\nopen DataVisualization.ChartingTypes\nopen Statistics\nopen System\nopen Elmish\nopen Feliz\nopen Feliz.ElmishComponents\nopen Browser\n\nopen Highcharts\nopen Types\nopen I18N\n\nlet chartText = I18N.chartText \"metricsCorrelation\"\n\ntype Metric =\n | Cases\n | Hospitalized\n | Deceased\n\ntype MetricCfg = {\n Metric : Metric\n Color : string\n Id : string\n YAxisIndex: int\n}\n\ntype Metrics = MetricCfg list\n\ntype DayValueIntMaybe = JsTimestamp*int option\ntype DayValueFloat = JsTimestamp*float\n\nmodule Metrics =\n let all = [\n { Metric=Cases; Color=\"#bda506\";Id=\"cases\"; YAxisIndex = 0 }\n { Metric=Hospitalized; Color=\"#be7A2a\"\n Id=\"hospitalized\"; YAxisIndex = 1 }\n { Metric=Deceased; Color=\"#8C71A8\"; Id=\"deceased\"; YAxisIndex = 2 }\n ]\n\ntype ValueTypes = RunningTotals | MovingAverages\n\ntype DisplayType = {\n Id: string\n ValueTypes: ValueTypes\n ChartType: ChartType\n ShowPhases: bool\n} with\n static member All = [|\n { Id = \"averageByDay\"\n ValueTypes = MovingAverages\n ChartType = LineChart\n ShowPhases = true\n }\n { Id = \"all\";\n ValueTypes = RunningTotals\n ChartType = LineChart\n ShowPhases = true\n }\n |]\n static member Default = DisplayType.All.[0]\n\n[]\nlet DaysOfMovingAverage = 7\n\ntype State = {\n DisplayType : DisplayType\n Data : StatsData\n RangeSelectionButtonIndex: int\n}\n\ntype Msg =\n | ChangeDisplayType of DisplayType\n | RangeSelectionChanged of int\n\nlet init data : State * Cmd =\n let state = {\n Data = data\n DisplayType = DisplayType.Default\n RangeSelectionButtonIndex = 1\n }\n state, Cmd.none\n\nlet update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | ChangeDisplayType rt ->\n { state with DisplayType=rt }, Cmd.none\n | RangeSelectionChanged buttonIndex ->\n { state with RangeSelectionButtonIndex = buttonIndex }, Cmd.none\n\nlet renderChartOptions state dispatch =\n\n let xAxisPoint (dp: StatsDataPoint) = dp.Date\n\n let metricDataGenerator mc : (StatsDataPoint -> int option) =\n let metricFunc =\n match mc.Metric with\n | Cases -> fun pt -> pt.Cases.ConfirmedToDate\n | Hospitalized -> fun pt -> pt.StatePerTreatment.InHospitalToDate\n | Deceased -> fun pt -> pt.StatePerTreatment.DeceasedToDate\n\n fun pt -> (pt |> metricFunc |> Utils.zeroToNone)\n\n /// \n /// Calculates running totals for a given metric.\n /// \n let calcRunningTotals metric =\n let pointData = metricDataGenerator metric\n\n let skipLeadingMissing data =\n data |> List.skipWhile (fun (_,value: 'T option) -> value.IsNone)\n\n let skipTrailingMissing data =\n data\n |> List.rev\n |> skipLeadingMissing\n |> List.rev\n\n state.Data\n |> List.map (fun dp -> ((xAxisPoint dp |> jsTime12h), pointData dp))\n |> skipLeadingMissing\n |> skipTrailingMissing\n |> Seq.toArray\n\n /// \n /// Converts running total series to daily (delta) values.\n /// \n let toDailyValues (series: DayValueIntMaybe[]) =\n let mutable last = 0\n Array.init series.Length (fun i ->\n match series.[i] with\n | ts, None -> ts, None\n | ts, Some current ->\n let result = current - last\n last <- current\n ts, Some result\n )\n\n let toFloatValues (series: DayValueIntMaybe[]) =\n series\n |> Array.map (fun (date, value) ->\n (date, value |> Option.defaultValue 0 |> float))\n\n let allSeries = [\n let allMetricsData =\n Metrics.all\n |> Seq.map(fun metric ->\n let data =\n let runningTotals = calcRunningTotals metric\n match state.DisplayType.ValueTypes with\n | RunningTotals -> runningTotals |> toFloatValues\n | MovingAverages ->\n runningTotals |> toDailyValues\n |> (movingAverages\n movingAverageCentered\n DaysOfMovingAverage\n (fun (timestamp, _) -> timestamp)\n (fun (_, value) ->\n value |> Option.defaultValue 0 |> float)\n )\n |> roundKeyValueFloatArray 1\n\n (metric, data))\n\n for (metric, metricData) in allMetricsData do\n yield pojo\n {|\n visible = true\n yAxis = metric.YAxisIndex\n color = metric.Color\n name = chartText metric.Id\n data = metricData\n marker = pojo {| enabled = false |}\n |}\n\n let allDates =\n allMetricsData\n |> Seq.map (fun (_, metricData) ->\n metricData |> Seq.map (fun (date, _) -> date))\n |> Seq.concat\n let startDate = allDates |> Seq.min\n let endDate = allDates |> Seq.max |> Some\n\n if state.DisplayType.ShowPhases then\n yield addContainmentMeasuresFlags startDate endDate |> pojo\n ]\n\n let onRangeSelectorButtonClick(buttonIndex: int) =\n let res (_ : Event) =\n RangeSelectionChanged buttonIndex |> dispatch\n true\n res\n\n let className = \"covid19-infections\"\n let baseOptions =\n basicChartOptions\n ScaleType.Linear className\n state.RangeSelectionButtonIndex onRangeSelectorButtonClick\n\n let axisWithPhases() = baseOptions.xAxis\n\n let axisWithWithoutPhases() =\n baseOptions.xAxis\n |> Array.map (fun ax ->\n {| ax with\n plotBands = shadedWeekendPlotBands\n plotLines = [||]\n |})\n\n let casesYAxis = {|\n gridLineWidth = 0\n title = pojo {| text = chartText Metrics.all.[0].Id |}\n index = 0\n opposite = false\n |}\n\n let hospitalizedYAxis = {|\n gridLineWidth = 0\n title = pojo {| text = chartText Metrics.all.[1].Id |}\n index = 1\n opposite = true\n |}\n\n let deceasedYAxis = {|\n gridLineWidth = 0\n title = pojo {| text = chartText Metrics.all.[2].Id |}\n index = 2\n opposite = true\n |}\n\n let yAxes = [| casesYAxis; hospitalizedYAxis; deceasedYAxis |]\n\n let yAxesResponsive =\n [|\n {| visible = false |}\n {| visible = false |}\n {| visible = false |}\n |]\n\n let responsive =\n {| rules =\n [| {|\n condition = {| maxWidth = 1000 |}\n chartOptions = {| yAxis = yAxesResponsive |}\n |} |] |}\n\n {| baseOptions with\n chart = pojo\n {|\n animation = false\n ``type`` =\n match state.DisplayType.ChartType with\n | LineChart -> \"line\"\n | StackedBarNormal -> \"column\"\n | StackedBarPercent -> \"column\"\n zoomType = \"x\"\n className = className\n events = pojo {| load = onLoadEvent(className) |}\n |}\n title = pojo {| text = None |}\n series = List.toArray allSeries\n xAxis =\n if state.DisplayType.ShowPhases then axisWithPhases()\n else axisWithWithoutPhases()\n yAxis = yAxes\n\n plotOptions = pojo\n {|\n series =\n match state.DisplayType.ChartType with\n | LineChart -> pojo {| stacking = \"\"; |}\n | StackedBarNormal -> pojo {| stacking = \"normal\" |}\n | StackedBarPercent -> pojo {| stacking = \"percent\" |}\n |}\n legend = pojo {| enabled = true ; layout = \"horizontal\" |}\n responsive = responsive\n credits = pojo\n {|\n enabled = true\n text =\n sprintf \"%s: %s, %s\"\n (I18N.t \"charts.common.dataSource\")\n (I18N.tOptions (\"charts.common.dsNIJZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n (I18N.tOptions (\"charts.common.dsMZ\") {| context = localStorage.getItem (\"contextCountry\") |})\n // SLO-spec href = \"https://www.nijz.si/sl/dnevno-spremljanje-okuzb-s-sars-cov-2-covid-19\"\n href = \"http://www.iph.mk\"\n |}\n |}\n\nlet renderChartContainer state dispatch =\n Html.div [\n prop.style [ style.height 480 ]\n prop.className \"highcharts-wrapper\"\n prop.children [\n renderChartOptions state dispatch\n |> chartFromWindow\n ]\n ]\n\nlet renderDisplaySelectors activeDisplayType dispatch =\n let renderSelector (displayType : DisplayType) =\n let active = displayType = activeDisplayType\n Html.div [\n prop.text (chartText displayType.Id)\n Utils.classes\n [(true, \"btn btn-sm metric-selector\")\n (active, \"metric-selector--selected selected\")]\n if not active then prop.onClick (fun _ -> dispatch displayType)\n if active then prop.style [ style.backgroundColor \"#808080\" ]\n ]\n\n Html.div [\n prop.className \"metrics-selectors\"\n DisplayType.All\n |> Array.map renderSelector\n |> prop.children\n ]\n\n\nlet halfDaysOfMovingAverage = DaysOfMovingAverage / 2\n\n// TODO: the last date of the graph should be determined from the actual data\n// because the graph cuts trailing days without any data. This requires some\n// bit of refactoring of the code, to first prepare the data and only then\n// render everything. Also the series arrays should work with native DateTime\n// so it can be used in arithmetic calculations, instead of JsTimestamp (it should be\n// transformed to JsTimestamp at the moment of setting the Highcharts objects).\nlet lastDateOfGraph =\n DateTime.Now.AddDays(-(halfDaysOfMovingAverage + 1) |> float)\n\n\nlet render state dispatch =\n Html.div [\n renderChartContainer state dispatch\n renderDisplaySelectors state.DisplayType (ChangeDisplayType >> dispatch)\n ]\n\n\nlet renderChart (props : {| data : StatsData |}) =\n React.elmishComponent(\"InfectionsChart\", init props.data, update, render)\n","module ShareButton\n\nopen Feliz\nopen Browser\nopen Types\nopen I18N\n\nlet dropdown (viz: Visualization) =\n React.functionComponent (fun () ->\n let (dropdown, setDropdown) = React.useState (false)\n let (modal, setModal) = React.useState (false)\n // TODO: needs refactoring eventually because we're just duplicating code from EmbedMakerPage.vue\n let (width, height) =\n match viz.VisualizationType with\n | MetricsComparison -> (1140, 720)\n | DailyComparison -> (1140, 720)\n | Cases -> (1140, 630)\n | Patients -> (1140, 720)\n | CarePatients -> (1140, 720)\n | Ratios -> (1140, 720)\n | HCenters -> (1140, 720)\n | Tests -> (1140, 720)\n | Infections -> (1140, 720)\n | Spread -> (1140, 630)\n | Regions -> (1140, 720)\n | SkopjeMunMap -> (1140, 720)\n | Regions100k -> (1140, 720)\n | HcCases -> (1140, 720)\n | Sources -> (1140, 720)\n | Map -> (1140, 820)\n | RegionMap -> (1140, 820)\n | EuropeMap -> (1140, 780)\n | WorldMap -> (1140, 780)\n | Municipalities -> (1140, 1150)\n | SkopjeMunicipalities -> (1140, 1150)\n | AgeGroups -> (1140, 720)\n | AgeGroupsTimeline -> (1140, 720)\n | Hospitals -> (1140, 1130)\n | CountriesCasesPer1M -> (1140, 740)\n | CountriesActiveCasesPer1M -> (1140, 740)\n | CountriesDeathsPer1M -> (1140, 740)\n | PhaseDiagram -> (1140, 720)\n | MetricsCorrelation -> (1140, 720)\n\n let graphUrl =\n \"https://covid-19.treker.mk/\"\n + localStorage.getItem (\"i18nextLng\")\n + \"/stats%23\"\n + viz.ClassName\n\n let embedUrl =\n \"https://covid-19.treker.mk/\"\n + \"embed.html#/\"\n + localStorage.getItem (\"i18nextLng\")\n + \"/chart/\"\n + viz.VisualizationType.ToString()\n\n // let copy (e: MouseEvent) =\n // let element = e.target\n // element.select ()\n // element.setSelectionRange (0, 99999)\n // document.execCommand (\"copy\")\n\n Html.div\n [ prop.className \"share-component-wrapper\"\n prop.children\n [ Html.div\n [ if dropdown\n then prop.className \"share-dropdown-wrapper show\"\n else prop.className \"share-dropdown-wrapper hide\"\n prop.children\n [ Html.a\n [ prop.className \"share-link\"\n prop.target \"_blank\"\n prop.href\n // TODO: make facebook sharing better by creating an app here:\n // https://developers.facebook.com/docs/sharing/reference/share-dialog\n (\"https://facebook.com/sharer/sharer.php?u=\"\n + graphUrl)\n prop.children\n [ Html.img\n [ prop.className \"share-icon\"\n prop.src \"/images/facebook-f.svg\"\n prop.alt (I18N.t \"charts.common.facebook\") ]\n Html.span [ prop.text (I18N.t \"charts.common.facebook\") ] ] ]\n Html.a\n [ prop.className \"share-link\"\n prop.target \"_blank\"\n prop.href\n // https://developer.twitter.com/en/docs/twitter-for-websites/tweet-button/guides/web-intent\n (\"https://twitter.com/intent/tweet/?\"\n + \"text=\"\n + chartText viz.ChartTextsGroup \"title\"\n + \"&url=\"\n + graphUrl)\n prop.children\n [ Html.img\n [ prop.className \"share-icon\"\n prop.src \"/images/twitter.svg\"\n prop.alt (I18N.t \"charts.common.twitter\") ]\n Html.span [ prop.text (I18N.t \"charts.common.twitter\") ] ] ]\n Html.a\n [ prop.className \"share-link\"\n prop.children\n [ Html.img\n [ prop.className \"share-icon\"\n prop.src \"/images/code.svg\"\n prop.alt (I18N.t \"charts.common.webpage\") ]\n Html.span [ prop.text (I18N.t \"charts.common.webpage\") ] ]\n prop.onClick (fun _ -> setModal (not modal)) ] ] ]\n\n // TODO: add export to PNG\n // https://www.highcharts.com/docs/export-module/client-side-export\n\n Html.div\n [ prop.className \"share-button-wrapper\"\n prop.children\n [ Html.img\n [ prop.className \"share-button-icon\"\n prop.src \"/images/share-icon.svg\"\n prop.alt (I18N.t \"charts.common.share\") ]\n Html.span\n [ prop.className \"share-button-caption\"\n prop.text (I18N.t \"charts.common.share\") ] ]\n // TODO: click outside the button should close the dropdown as well\n prop.onClick (fun _ -> setDropdown (not dropdown)) ]\n\n\n Html.div\n [ if modal then prop.className \"embed-menu show\" else prop.className \"embed-menu hide\"\n prop.children\n [ Html.h2 [ prop.text (I18N.t \"embedMaker.title\") ]\n Html.p\n // TODO: refactor https://www.i18next.com/translation-function/interpolation\n // check why this doesn't work: I18N.tOptions \"embedMaker.description\" {| interpolation = {| escapeValue = false |} }|}\n [ Html.span [ prop.text (I18N.t \"embedMaker.descriptionPart1\") ]\n Html.a\n [ prop.href\n \"https://github.com/treker-mk/website/blob/master/examples/README.md\"\n prop.text (I18N.t \"embedMaker.descriptionPart2\") ] ]\n Html.textarea\n [ prop.title (I18N.t \"embedMaker.copy\")\n prop.className \"form-control\"\n prop.defaultValue\n (\"\") ]\n // TODO: implement copy method as it is in EmbedPageMake\n // prop.onClick (fun _ -> copy) ]\n Html.button\n [ prop.text (I18N.t \"charts.common.close\")\n prop.className \"btn btn-primary btn-sm\"\n prop.onClick (fun _ -> setModal (not modal)) ] ] ] ] ])\n","let createIntersectionObserver = (targetElementId, callback, options) => {\n let target = document.getElementById(targetElementId)\n let observer = new IntersectionObserver(callback, options)\n observer.observe(target)\n return observer\n}\n\nexport {\n createIntersectionObserver\n}\n","module IntersectionObserver\n\nopen System\nopen Fable.Core\nopen Elmish\nopen Feliz\nopen Feliz.UseElmish\n\ntype Options = {\n root : Browser.Types.Element option\n rootMargin : string\n threshold: float\n}\n\nlet defaultOptions = {\n root = None\n rootMargin = \"0px\"\n threshold = 0.0\n}\n\ntype IntersectionObserver = obj\n\ntype IntersectionObserverEntry = {\n isIntersecting : bool\n intersectionRatio : float\n}\n\n[]\nlet private createIntersectionObserverJS (targetElementId : string, callback : IntersectionObserverEntry array -> obj -> unit, options : Options option) : IntersectionObserver = jsNative\n\nlet createIntersectionObserver (targetElementId : string) (callback : IntersectionObserverEntry array -> unit) (options : Options option) : IntersectionObserver =\n let callbackWrapper = fun intersectionObserverEntries _ -> callback intersectionObserverEntries\n createIntersectionObserverJS (targetElementId, callbackWrapper, options)\n\nmodule Component =\n open Fable.Core.JsInterop\n\n type Visibility =\n | Hidden\n | Visible\n\n type State = {\n Visibility : Visibility\n }\n\n type Msg =\n | Show\n\n let init data : State * Cmd =\n { Visibility = Hidden }, Cmd.none\n\n let update (msg: Msg) (state: State) : State * Cmd =\n match msg with\n | Show -> { state with Visibility = Visible }, Cmd.none\n\n let intersectionObserver = React.functionComponent(fun (props : {| targetElementId : string ; content : ReactElement ; options : Options |}) ->\n let state, dispatch = React.useElmish(init, update, [||])\n\n let subscribeToIntersectionObserver () =\n let callback (entries : IntersectionObserverEntry array) =\n match state.Visibility, entries.[0].isIntersecting with\n | Hidden, true -> dispatch Show ; ()\n | _ -> ()\n let observer = createIntersectionObserver props.targetElementId callback (Some props.options)\n { new IDisposable with member this.Dispose() = observer?disconnect() }\n\n React.useEffect(subscribeToIntersectionObserver)\n\n match state.Visibility with\n | Hidden -> Html.none\n | Visible -> props.content\n )\n","module App\n\nopen Browser\nopen Elmish\nopen Feliz\n\nopen Types\nopen CountriesChartViz.Analysis\nopen I18N\n\nlet init (query: obj) (visualization: string option) (page: string) (apiEndpoint: string)=\n let renderingMode =\n match visualization with\n | None -> Normal\n | Some viz ->\n match viz with\n | \"Map\" -> Some Map\n | \"RegionMap\" -> Some RegionMap\n | \"SkopjeMunMap\" -> Some SkopjeMunMap\n | \"EuropeMap\" -> Some EuropeMap\n | \"WorldMap\" -> Some WorldMap\n | \"MetricsComparison\" -> Some MetricsComparison\n | \"DailyComparison\" -> Some DailyComparison\n | \"Patients\" -> Some Patients\n | \"CarePatients\" -> Some CarePatients\n | \"Ratios\" -> Some Ratios\n | \"Tests\" -> Some Tests\n | \"Cases\" -> Some Cases\n | \"Spread\" -> Some Spread\n | \"Regions\" -> Some Regions\n | \"Regions100k\" -> Some Regions100k\n | \"Weekly\" -> Some Sources\n | \"HcCases\" -> Some HcCases\n | \"Municipalities\" -> Some Municipalities\n | \"SkopjeMunicipalities\" -> Some SkopjeMunicipalities\n | \"AgeGroups\" -> Some AgeGroups\n | \"AgeGroupsTimeline\" -> Some AgeGroupsTimeline\n | \"HCenters\" -> Some HCenters\n | \"Hospitals\" -> Some Hospitals\n | \"Infections\" -> Some Infections\n | \"CountriesCasesPer1M\" -> Some CountriesCasesPer1M\n | \"CountriesActiveCasesPer1M\" -> Some CountriesActiveCasesPer1M\n | \"CountriesDeathsPer1M\" -> Some CountriesDeathsPer1M\n | \"PhaseDiagram\" -> Some PhaseDiagram\n | \"MetricsCorrelation\" -> Some MetricsCorrelation\n | _ -> None\n |> Embedded\n\n let initialState =\n {\n ApiEndpoint = apiEndpoint\n Page = page\n Query = query\n StatsData = NotAsked\n WeeklyStatsData = NotAsked\n RegionsData = NotAsked\n SkopjeMunicipalitiesData = NotAsked\n RenderingMode = renderingMode }\n\n // Request data loading based on the page we are on\n let cmd =\n match page with\n | \"local\" ->\n Cmd.batch\n [ Cmd.ofMsg StatsDataRequested\n Cmd.ofMsg WeeklyStatsDataRequested\n Cmd.ofMsg RegionsDataRequest\n Cmd.ofMsg SkopjeMunicipalitiesDataRequest ]\n | \"world\" ->\n Cmd.batch\n [ Cmd.ofMsg StatsDataRequested\n Cmd.ofMsg WeeklyStatsDataRequested ]\n | _ ->\n Cmd.batch\n [ Cmd.ofMsg StatsDataRequested\n Cmd.ofMsg WeeklyStatsDataRequested\n Cmd.ofMsg RegionsDataRequest\n Cmd.ofMsg SkopjeMunicipalitiesDataRequest ]\n\n initialState, cmd\n\nlet update (msg: Msg) (state: State) =\n match msg with\n | StatsDataRequested ->\n match state.StatsData with\n | Loading -> state, Cmd.none\n | _ -> { state with StatsData = Loading }, Cmd.OfAsync.result Data.Stats.load\n | StatsDataLoaded data -> { state with StatsData = data }, Cmd.none\n | WeeklyStatsDataRequested ->\n match state.WeeklyStatsData with\n | Loading -> state, Cmd.none\n | _ -> { state with WeeklyStatsData = Loading }, Cmd.OfAsync.result Data.WeeklyStats.load\n | WeeklyStatsDataLoaded data -> { state with WeeklyStatsData = data }, Cmd.none\n | RegionsDataRequest ->\n match state.RegionsData with\n | Loading -> state, Cmd.none\n | _ -> { state with RegionsData = Loading }, Cmd.OfAsync.result (Data.Regions.load state.ApiEndpoint)\n | RegionsDataLoaded data -> { state with RegionsData = data }, Cmd.none\n | SkopjeMunicipalitiesDataRequest ->\n match state.SkopjeMunicipalitiesData with\n | Loading -> state, Cmd.none\n | _ -> { state with SkopjeMunicipalitiesData = Loading }, Cmd.OfAsync.result (Data.Regions.loadSkMun state.ApiEndpoint)\n | SkopjeMunicipalitiesDataLoaded data -> { state with SkopjeMunicipalitiesData = data }, Cmd.none\n\nopen Elmish.React\n\nlet render (state: State) (_: Msg -> unit) =\n let hospitals =\n { VisualizationType = Hospitals\n ClassName = \"hospitals-chart\"\n ChartTextsGroup = \"hospitals\"\n Explicit = true\n Renderer = fun _ -> lazyView HospitalsChart.hospitalsChart () }\n\n let metricsComparison =\n { VisualizationType = MetricsComparison\n ClassName = \"metrics-comparison-chart\"\n ChartTextsGroup = \"metricsComparison\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView MetricsComparisonChart.metricsComparisonChart {| data = data |} }\n\n let dailyComparison =\n { VisualizationType = DailyComparison\n ClassName = \"daily-comparison-chart\"\n ChartTextsGroup = \"dailyComparison\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView DailyComparisonChart.dailyComparisonChart {| data = data |} }\n\n let spread =\n { VisualizationType = Spread\n ClassName = \"spread-chart\"\n ChartTextsGroup = \"spread\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView SpreadChart.spreadChart {| data = data |} }\n\n let map =\n { VisualizationType = Map\n ClassName = \"map-chart\"\n ChartTextsGroup = \"map\"\n Explicit = false\n Renderer =\n fun state ->\n match state.RegionsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView Map.mapChart {| mapToDisplay = Map.MapToDisplay.Municipality; data = data |} }\n\n let regionMap =\n { VisualizationType = RegionMap\n ClassName = \"rmap-chart\"\n ChartTextsGroup = \"rmap\"\n Explicit = false\n Renderer =\n fun state ->\n match state.RegionsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView Map.mapChart {| mapToDisplay = Map.MapToDisplay.Region; data = data |} }\n\n let skopjeMunMap =\n { VisualizationType = SkopjeMunMap\n ClassName = \"sk-map-chart\"\n ChartTextsGroup = \"sk-map\"\n Explicit = false\n Renderer =\n fun state ->\n match state.SkopjeMunicipalitiesData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView Map.mapChart {| mapToDisplay = Map.MapToDisplay.SkopjeMunicipality; data = data |} }\n\n\n let municipalities =\n { VisualizationType = Municipalities\n ClassName = \"municipalities-chart\"\n ChartTextsGroup = \"municipalities\"\n Explicit = false\n Renderer =\n fun state ->\n match state.RegionsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView MunicipalitiesChart.municipalitiesChart {| query = state.Query; dataToDisplay = MunicipalitiesChart.DataToDisplay.Municipality; data = data |} }\n \n let skopjeMunicipalities =\n { VisualizationType = SkopjeMunicipalities\n ClassName = \"sk-municipalities-chart\"\n ChartTextsGroup = \"sk-municipalities\"\n Explicit = false\n Renderer =\n fun state ->\n match state.SkopjeMunicipalitiesData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView MunicipalitiesChart.municipalitiesChart {| query = state.Query; dataToDisplay = MunicipalitiesChart.DataToDisplay.SkopjeMunicipality; data = data |} }\n\n let europeMap =\n { VisualizationType = EuropeMap\n ClassName = \"europe-chart\"\n ChartTextsGroup = \"europe\"\n Explicit = false\n Renderer =\n fun state ->\n match state.WeeklyStatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView EuropeMap.mapChart {| mapToDisplay = EuropeMap.MapToDisplay.Europe; data = data |} }\n\n let worldMap =\n { VisualizationType = WorldMap\n ClassName = \"world-chart\"\n ChartTextsGroup = \"world\"\n Explicit = false\n Renderer =\n fun state ->\n match state.WeeklyStatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView EuropeMap.mapChart {| mapToDisplay = EuropeMap.MapToDisplay.World; data = data |} }\n\n let ageGroupsTimeline =\n { VisualizationType = AgeGroupsTimeline\n ClassName = \"age-groups-trends-chart\"\n ChartTextsGroup = \"ageGroupsTimeline\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView AgeGroupsTimelineViz.Rendering.renderChart\n {| data = data |} }\n\n let tests =\n { VisualizationType = Tests\n ClassName = \"tests-chart\"\n ChartTextsGroup = \"tests\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView TestsChart.testsChart {| data = data |} }\n\n let hCenters =\n { VisualizationType = HCenters\n ClassName = \"hcenters-chart\"\n ChartTextsGroup = \"hCenters\"\n Explicit = false\n Renderer = fun _ -> lazyView HCentersChart.hCentersChart state.ApiEndpoint }\n\n let infections =\n { VisualizationType = Infections\n ClassName = \"infections-chart\"\n ChartTextsGroup = \"infections\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView InfectionsChart.infectionsChart {| data = data |} }\n\n let cases =\n { VisualizationType = Cases\n ClassName = \"cases-chart\"\n ChartTextsGroup = \"cases\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView CasesChart.casesChart {| data = data |} }\n\n let patients =\n { VisualizationType = Patients\n ClassName = \"patients-chart\"\n ChartTextsGroup = \"patients\"\n Explicit = false\n Renderer = fun _ -> lazyView PatientsChart.patientsChart {| hTypeToDisplay = PatientsChart.HospitalType.CovidHospitals |} }\n\n let patientsCare =\n { VisualizationType = CarePatients\n ClassName = \"care-patients-chart\"\n ChartTextsGroup = \"carePatients\"\n Explicit = false\n Renderer = fun _ -> lazyView PatientsChart.patientsChart {| hTypeToDisplay = PatientsChart.HospitalType.CareHospitals |} }\n\n let ratios =\n { VisualizationType = Ratios\n ClassName = \"ratios-chart\"\n ChartTextsGroup = \"ratios\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView RatiosChart.ratiosChart {| data = data |} }\n\n let ageGroups =\n { VisualizationType = AgeGroups\n ClassName = \"age-groups-chart\"\n ChartTextsGroup = \"ageGroups\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView AgeGroupsChart.renderChart {| data = data |} }\n\n let regionsAbs =\n { VisualizationType = Regions\n ClassName = \"regions-chart\"\n ChartTextsGroup = \"regions\"\n Explicit = false\n Renderer =\n fun state ->\n match state.RegionsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n let config: RegionsChart.RegionsChartConfig =\n { RelativeTo = RegionsChart.MetricRelativeTo.Absolute\n ChartTextsGroup = \"regions\"\n }\n let props = {| data = data |}\n lazyView (RegionsChart.renderChart config) props\n }\n\n let regions100k =\n { VisualizationType = Regions100k\n ClassName = \"regions-chart-100k\"\n ChartTextsGroup = \"regions100k\"\n Explicit = false\n Renderer =\n fun state ->\n match state.RegionsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n let config: RegionsChart.RegionsChartConfig =\n { RelativeTo = RegionsChart.MetricRelativeTo.Pop100k\n ChartTextsGroup = \"regions100k\"\n }\n let props = {| data = data |}\n lazyView (RegionsChart.renderChart config) props\n }\n\n let sources =\n { VisualizationType = Sources\n ClassName = \"sources-chart\"\n ChartTextsGroup = \"sources\"\n Explicit = false\n Renderer =\n fun state ->\n match state.WeeklyStatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView SourcesChart.sourcesChart {| data = data |} }\n\n let hcCases =\n { VisualizationType = HcCases\n ClassName = \"hc-cases-chart\"\n ChartTextsGroup = \"hcCases\"\n Explicit = false\n Renderer =\n fun state ->\n match state.WeeklyStatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView HcCasesChart.hcCasesChart {| data = data |} }\n\n let countriesCasesPer1M =\n { VisualizationType = CountriesCasesPer1M\n ClassName = \"countries-cases-chart\"\n ChartTextsGroup = \"countriesNewCasesPer1M\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView CountriesChartViz.Rendering.renderChart\n { StatsData = data\n MetricToDisplay = NewCasesPer1M\n ChartTextsGroup = \"countriesNewCasesPer1M\"\n DataSource = \"dsOWD_NIJZ\"\n }\n }\n\n let countriesActiveCasesPer1M =\n { VisualizationType = CountriesActiveCasesPer1M\n ClassName = \"countries-active-chart\"\n ChartTextsGroup = \"countriesActiveCasesPer1M\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView CountriesChartViz.Rendering.renderChart\n { StatsData = data\n MetricToDisplay = ActiveCasesPer1M\n ChartTextsGroup = \"countriesActiveCasesPer1M\"\n DataSource = \"dsOWD_NIJZ\"\n }\n }\n\n let countriesDeathsPer1M =\n { VisualizationType = CountriesDeathsPer1M\n ClassName = \"countries-deaths-chart\"\n ChartTextsGroup = \"countriesTotalDeathsPer1M\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView CountriesChartViz.Rendering.renderChart\n { StatsData = data\n MetricToDisplay = TotalDeathsPer1M\n ChartTextsGroup = \"countriesTotalDeathsPer1M\"\n DataSource = \"dsOWD_MZ\"\n }\n }\n\n let countriesDeathsPerCases =\n { VisualizationType = CountriesDeathsPer1M\n ClassName = \"countries-deaths-per-cases\"\n ChartTextsGroup = \"countriesDeathsPerCases\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView CountriesChartViz.Rendering.renderChart\n { StatsData = data\n MetricToDisplay = DeathsPerCases\n ChartTextsGroup = \"countriesDeathsPerCases\"\n DataSource = \"dsOWD_MZ\"\n }\n }\n\n let phaseDiagram =\n { VisualizationType = PhaseDiagram\n ClassName = \"phase-diagram-chart\"\n ChartTextsGroup = \"phaseDiagram\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data -> lazyView PhaseDiagram.Chart.chart {| data = data |} }\n\n let metricsCorrelation =\n { VisualizationType = MetricsCorrelation\n ClassName = \"metrics-correlation-chart\"\n ChartTextsGroup = \"metricsCorrelation\"\n Explicit = false\n Renderer =\n fun state ->\n match state.StatsData with\n | NotAsked -> Html.none\n | Loading -> Utils.renderLoading\n | Failure error -> Utils.renderErrorLoading error\n | Success data ->\n lazyView MetricsCorrelationViz.Rendering.renderChart\n {| data = data |} }\n\n let localVisualizations =\n [ metricsComparison; dailyComparison; spread; map; municipalities\n europeMap; tests; infections;\n cases; patients; metricsCorrelation;\n skopjeMunMap; // skopjeMunicipalities; Venko booljash\n ]\n\n let worldVisualizations =\n [ worldMap; countriesActiveCasesPer1M\n countriesCasesPer1M; countriesDeathsPerCases; countriesDeathsPer1M ]\n\n let allVisualizations =\n [ hospitals; metricsComparison; spread; dailyComparison; map\n municipalities; sources; metricsCorrelation\n europeMap; worldMap; ageGroupsTimeline; tests; hCenters; infections\n cases; patients; patientsCare; ratios; ageGroups; regionMap; regionsAbs\n regions100k; hcCases; sources\n countriesCasesPer1M\n countriesActiveCasesPer1M\n countriesDeathsPer1M\n phaseDiagram\n skopjeMunMap; skopjeMunicipalities;\n ]\n\n let embedded, visualizations =\n match state.Page, state.RenderingMode with\n | (\"local\", Normal) ->\n false,\n localVisualizations\n |> List.filter (fun viz -> not viz.Explicit)\n | (\"world\", Normal) ->\n false,\n worldVisualizations\n |> List.filter (fun viz -> not viz.Explicit)\n | (_, Embedded visualizationType) ->\n match visualizationType with\n | None -> true, []\n | Some visualizationType ->\n true,\n allVisualizations\n |> List.filter\n (fun viz -> viz.VisualizationType = visualizationType)\n | _ -> invalidOp \"BUG: this should never happen.\"\n\n let brandLink =\n match state.RenderingMode with\n | Normal -> Html.none\n | Embedded _ ->\n Html.a\n [ prop.className \"brand-link\"\n prop.target \"_blank\"\n prop.href \"https://covid-19.treker.mk/\"\n prop.text (t \"meta.title\") ]\n\n\n let renderFaqLink (visualization: Visualization) =\n if visualization.Explicit then\n Html.none // we do not have FAQ for hidden charts yet\n else\n Html.div\n [ prop.className \"faq-link-wrapper\"\n prop.children\n [ Html.a\n [ prop.className \"faq-link\"\n prop.key visualization.ClassName\n prop.target \"_blank\"\n prop.href\n (\"/\"\n + localStorage.getItem (\"i18nextLng\")\n + \"/faq#\"\n + visualization.ClassName)\n prop.text \"?\" ]\n |> Html.div ] ]\n\n\n let renderFaqAndShareBtn (visualization: Visualization) =\n match state.RenderingMode with\n | Embedded _ ->\n Html.div\n [ prop.className \"faq-and-share-wrapper\"\n prop.children\n [ renderFaqLink visualization\n brandLink ] ]\n | Normal ->\n Html.div\n [ prop.className \"faq-and-share-wrapper\"\n prop.children\n [ renderFaqLink visualization\n ShareButton.dropdown visualization () ] ]\n\n\n let renderChartTitle (visualization: Visualization) =\n\n let scrollToElement (e: MouseEvent) visualizationId =\n e.preventDefault ()\n\n let element =\n document.getElementById (visualizationId)\n\n let offset = -100.\n\n let position =\n element.getBoundingClientRect().top\n + window.pageYOffset\n + offset\n\n window.scrollTo\n ({| top = position\n behavior = \"smooth\" |}\n |> unbox) // behavior = smooth | auto\n window.history.pushState (null, null, \"#\" + visualizationId)\n\n let context = localStorage.getItem (\"contextCountry\")\n\n Html.div\n [ prop.className \"title-brand-wrapper\"\n prop.children\n [ Html.h2\n [ prop.children\n [ Html.a\n [ prop.href (\"#\" + visualization.ClassName)\n prop.text (tOptions (\"charts.\" + visualization.ChartTextsGroup + \".title\") {| context = context |} )\n prop.onClick (fun e -> scrollToElement e visualization.ClassName) ]\n Html.span\n [ prop.text (\"charts.\" + visualization.ChartTextsGroup + \".titleMenu\")\n prop.className \"hidden\" ] ] ] ] ]\n\n Html.div\n [ Utils.classes [\n (true, \"visualization container\")\n (embedded, \"embeded\") ]\n prop.children (\n visualizations\n |> List.map (fun viz ->\n Html.section [\n prop.className [ viz.ClassName ; \"visualization-chart\" ]\n prop.id viz.ClassName\n prop.children [\n Html.div [\n prop.className \"title-chart-wrapper\"\n prop.children [\n renderChartTitle viz\n renderFaqAndShareBtn viz\n ]\n ]\n IntersectionObserver.Component.intersectionObserver\n {| targetElementId = viz.ClassName\n content = state |> viz.Renderer\n options = { IntersectionObserver.defaultOptions with rootMargin = \"100px\" }\n |}\n ] ] ) ) ]\n","namespace Elmish\nopen System\n\n[]\ntype internal RingState<'item> =\n | Writable of wx:'item array * ix:int\n | ReadWritable of rw:'item array * wix:int * rix:int\n\ntype internal RingBuffer<'item>(size) =\n let doubleSize ix (items: 'item array) =\n seq { yield! items |> Seq.skip ix\n yield! items |> Seq.take ix\n for _ in 0..items.Length do\n yield Unchecked.defaultof<'item> }\n |> Array.ofSeq\n\n let mutable state : 'item RingState =\n Writable (Array.zeroCreate (max size 10), 0)\n\n member __.Pop() =\n match state with\n | ReadWritable (items, wix, rix) ->\n let rix' = (rix + 1) % items.Length\n match rix' = wix with\n | true -> \n state <- Writable(items, wix)\n | _ ->\n state <- ReadWritable(items, wix, rix')\n Some items.[rix]\n | _ ->\n None\n\n member __.Push (item:'item) =\n match state with\n | Writable (items, ix) ->\n items.[ix] <- item\n let wix = (ix + 1) % items.Length\n state <- ReadWritable(items, wix, ix)\n | ReadWritable (items, wix, rix) ->\n items.[wix] <- item\n let wix' = (wix + 1) % items.Length\n match wix' = rix with\n | true -> \n state <- ReadWritable(items |> doubleSize rix, items.Length, 0)\n | _ -> \n state <- ReadWritable(items, wix', rix)","(**\nProgram\n---------\nCore abstractions for creating and running the dispatch loop.\n\n*)\n\nnamespace Elmish\n\n\n/// Program type captures various aspects of program behavior\ntype Program<'arg, 'model, 'msg, 'view> = private {\n init : 'arg -> 'model * Cmd<'msg>\n update : 'msg -> 'model -> 'model * Cmd<'msg>\n subscribe : 'model -> Cmd<'msg>\n view : 'model -> Dispatch<'msg> -> 'view\n setState : 'model -> Dispatch<'msg> -> unit\n onError : (string*exn) -> unit\n syncDispatch: Dispatch<'msg> -> Dispatch<'msg>\n}\n\n/// Program module - functions to manipulate program instances\n[]\n[]\nmodule Program =\n /// Typical program, new commands are produced by `init` and `update` along with the new state.\n let mkProgram \n (init : 'arg -> 'model * Cmd<'msg>) \n (update : 'msg -> 'model -> 'model * Cmd<'msg>)\n (view : 'model -> Dispatch<'msg> -> 'view) =\n { init = init\n update = update\n view = view\n setState = fun model -> view model >> ignore\n subscribe = fun _ -> Cmd.none\n onError = Log.onError\n syncDispatch = id }\n\n /// Simple program that produces only new state with `init` and `update`.\n let mkSimple \n (init : 'arg -> 'model) \n (update : 'msg -> 'model -> 'model)\n (view : 'model -> Dispatch<'msg> -> 'view) =\n { init = init >> fun state -> state,Cmd.none\n update = fun msg -> update msg >> fun state -> state,Cmd.none\n view = view\n setState = fun model -> view model >> ignore\n subscribe = fun _ -> Cmd.none\n onError = Log.onError\n syncDispatch = id }\n\n /// Subscribe to external source of events.\n /// The subscription is called once - with the initial model, but can dispatch new messages at any time.\n let withSubscription (subscribe : 'model -> Cmd<'msg>) (program: Program<'arg, 'model, 'msg, 'view>) =\n let sub model =\n Cmd.batch [ program.subscribe model\n subscribe model ]\n { program with subscribe = sub }\n\n /// Trace all the updates to the console\n let withConsoleTrace (program: Program<'arg, 'model, 'msg, 'view>) =\n let traceInit (arg:'arg) =\n let initModel,cmd = program.init arg\n Log.toConsole (\"Initial state:\", initModel)\n initModel,cmd\n\n let traceUpdate msg model =\n Log.toConsole (\"New message:\", msg)\n let newModel,cmd = program.update msg model\n Log.toConsole (\"Updated state:\", newModel)\n newModel,cmd\n\n { program with\n init = traceInit \n update = traceUpdate }\n\n /// Trace all the messages as they update the model\n let withTrace trace (program: Program<'arg, 'model, 'msg, 'view>) =\n let update msg model =\n let state,cmd = program.update msg model\n trace msg state\n state,cmd\n { program\n with update = update }\n\n /// Handle dispatch loop exceptions\n let withErrorHandler onError (program: Program<'arg, 'model, 'msg, 'view>) =\n { program\n with onError = onError }\n\n /// For library authors only: map existing error handler and return new `Program` \n let mapErrorHandler map (program: Program<'arg, 'model, 'msg, 'view>) =\n { program\n with onError = map program.onError }\n\n /// For library authors only: get the current error handler \n let onError (program: Program<'arg, 'model, 'msg, 'view>) =\n program.onError\n\n /// For library authors only: function to render the view with the latest state \n let withSetState (setState:'model -> Dispatch<'msg> -> unit)\n (program: Program<'arg, 'model, 'msg, 'view>) = \n { program\n with setState = setState }\n\n /// For library authors only: return the function to render the state \n let setState (program: Program<'arg, 'model, 'msg, 'view>) = \n program.setState\n\n /// For library authors only: return the view function \n let view (program: Program<'arg, 'model, 'msg, 'view>) = \n program.view\n\n /// For library authors only: function to synchronize the dispatch function\n let withSyncDispatch (syncDispatch:Dispatch<'msg> -> Dispatch<'msg>)\n (program: Program<'arg, 'model, 'msg, 'view>) = \n { program\n with syncDispatch = syncDispatch }\n\n /// For library authors only: map the program type\n let map mapInit mapUpdate mapView mapSetState mapSubscribe\n (program: Program<'arg, 'model, 'msg, 'view>) =\n { init = mapInit program.init\n update = mapUpdate program.update\n view = mapView program.view\n setState = mapSetState program.setState\n subscribe = mapSubscribe program.subscribe\n onError = program.onError\n syncDispatch = id }\n\n /// Start the program loop.\n /// arg: argument to pass to the init() function.\n /// program: program created with 'mkSimple' or 'mkProgram'.\n let runWith (arg: 'arg) (program: Program<'arg, 'model, 'msg, 'view>) =\n let (model,cmd) = program.init arg\n let rb = RingBuffer 10\n let mutable reentered = false\n let mutable state = model \n let rec dispatch msg = \n if reentered then\n rb.Push msg\n else\n reentered <- true\n let mutable nextMsg = Some msg\n while Option.isSome nextMsg do\n let msg = nextMsg.Value\n try\n let (model',cmd') = program.update msg state\n program.setState model' syncDispatch\n cmd' |> Cmd.exec syncDispatch\n state <- model'\n with ex ->\n program.onError (sprintf \"Unable to process the message: %A\" msg, ex)\n nextMsg <- rb.Pop()\n reentered <- false\n and syncDispatch = program.syncDispatch dispatch \n\n program.setState model syncDispatch\n let sub = \n try \n program.subscribe model \n with ex ->\n program.onError (\"Unable to subscribe:\", ex)\n Cmd.none\n sub @ cmd |> Cmd.exec syncDispatch\n\n /// Start the dispatch loop with `unit` for the init() function.\n let run (program: Program) = runWith () program\n","namespace Elmish.React\n\n[]\nmodule Helpers =\n open Fable.React.Props\n open Fable.Core.JsInterop\n\n /// `Ref` callback that sets the value of an input textbox after DOM element is created.\n /// Can be used instead of `DefaultValue` and `Value` props to override input box value.\n let inline valueOrDefault value =\n Ref <| (fun e -> if e |> isNull |> not && !!e?value <> !!value then e?value <- !!value)\n\n[]\nmodule Program =\n\n module Internal =\n\n open Fable.React\n open Browser\n open Elmish\n\n let withReactBatchedUsing lazyView2With placeholderId (program:Program<_,_,_,_>) =\n let mutable lastRequest = None\n let setState model dispatch =\n match lastRequest with\n | Some r -> window.cancelAnimationFrame r\n | _ -> ()\n\n lastRequest <- Some (window.requestAnimationFrame (fun _ ->\n ReactDom.render(\n lazyView2With (fun x y -> obj.ReferenceEquals(x,y)) (Program.view program) model dispatch,\n document.getElementById placeholderId\n )))\n\n program\n |> Program.withSetState setState\n\n let withReactSynchronousUsing lazyView2With placeholderId (program:Elmish.Program<_,_,_,_>) =\n let setState model dispatch =\n ReactDom.render(\n lazyView2With (fun x y -> obj.ReferenceEquals(x,y)) (Program.view program) model dispatch,\n document.getElementById placeholderId\n )\n\n program\n |> Program.withSetState setState\n\n let withReactHydrateUsing lazyView2With placeholderId (program:Elmish.Program<_,_,_,_>) =\n let setState model dispatch =\n ReactDom.hydrate(\n lazyView2With (fun x y -> obj.ReferenceEquals(x,y)) (Program.view program) model dispatch,\n document.getElementById placeholderId\n )\n\n program\n |> Program.withSetState setState\n\n\n /// Renders React root component inside html element identified by placeholderId.\n /// Uses `requestAnimationFrame` to batch updates to prevent drops in frame rate.\n /// NOTE: This may have unexpected effects in React controlled inputs, see https://github.com/elmish/react/issues/12\n let withReactBatched placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactBatchedUsing lazyView2With placeholderId program\n\n /// Renders React root component inside html element identified by placeholderId.\n /// New renders are triggered immediately after an update.\n let withReactSynchronous placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactSynchronousUsing lazyView2With placeholderId program\n\n []\n let withReact placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactBatchedUsing lazyView2With placeholderId program\n\n []\n let withReactUnoptimized placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactSynchronousUsing lazyView2With placeholderId program\n\n /// Renders React root component inside html element identified by placeholderId using `React.hydrate`.\n let withReactHydrate placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactHydrateUsing lazyView2With placeholderId program\n","module Main\n\nopen Elmish\nopen Elmish.React\nopen Elmish.Debug\nopen Elmish.HMR\n\nlet Visualizations\n (elementId: string,\n page: string,\n query: obj,\n apiEndpoint: string,\n visualization: string option) =\n Program.mkProgram (fun () -> App.init query visualization page apiEndpoint) App.update App.render\n #if DEBUG\n |> Program.withDebugger\n #endif\n |> Program.withReactSynchronous elementId\n |> Program.run\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&lang=scss&\"","// Adapted from: https://github.com/dcodeIO/long.js/blob/master/src/long.js\n// Apache License 2.0: https://github.com/dcodeIO/long.js/blob/master/LICENSE\nexport default Long;\n/**\n * wasm optimizations, to do native i64 multiplication and divide\n */\nvar wasm = null;\ntry {\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\n ])), {}).exports;\n}\ncatch (e) {\n // no wasm support :(\n}\n/**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\nexport function Long(low, high, unsigned) {\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n this.high = high | 0;\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n this.unsigned = !!unsigned;\n}\nLong.prototype.GetHashCode = function () {\n let h1 = this.unsigned ? 1 : 0;\n h1 = ((h1 << 5) + h1) ^ this.high;\n h1 = ((h1 << 5) + h1) ^ this.low;\n return h1;\n};\nLong.prototype.Equals = function (x) { return equals(this, x); };\nLong.prototype.CompareTo = function (x) { return compare(this, x); };\nLong.prototype.toString = function (radix) { return toString(this, radix); };\nLong.prototype.toJSON = function () { return toString(this); };\n// The internal representation of a long is the two given signed, 32-bit values.\n// We use 32-bit pieces because these are the size of integers on which\n// Javascript performs bit-operations. For operations like addition and\n// multiplication, we split each number into 16 bit pieces, which can easily be\n// multiplied within Javascript's floating-point representation without overflow\n// or change in sign.\n//\n// In the algorithms below, we frequently reduce the negative case to the\n// positive case by negating the input(s) and then post-processing the result.\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n// a positive number, it overflows back into a negative). Not handling this\n// case would often result in infinite recursion.\n//\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n// methods on which they depend.\n/**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\nLong.prototype.__isLong__;\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\n/**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\nexport function isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n}\n/**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\n// Long.isLong = isLong;\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\nvar INT_CACHE = {};\n/**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\nvar UINT_CACHE = {};\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n if (unsigned) {\n value >>>= 0;\n if (cache = (0 <= value && value < 256)) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj)\n return cachedObj;\n }\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\n if (cache)\n UINT_CACHE[value] = obj;\n return obj;\n }\n else {\n value |= 0;\n if (cache = (-128 <= value && value < 128)) {\n cachedObj = INT_CACHE[value];\n if (cachedObj)\n return cachedObj;\n }\n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache)\n INT_CACHE[value] = obj;\n return obj;\n }\n}\n/**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromInt = fromInt;\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromNumber(value, unsigned) {\n if (isNaN(value))\n return unsigned ? UZERO : ZERO;\n if (unsigned) {\n if (value < 0)\n return UZERO;\n if (value >= TWO_PWR_64_DBL)\n return MAX_UNSIGNED_VALUE;\n }\n else {\n if (value <= -TWO_PWR_63_DBL)\n return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL)\n return MAX_VALUE;\n }\n if (value < 0)\n return negate(fromNumber(-value, unsigned));\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\n}\n/**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromNumber = fromNumber;\n/**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n}\n/**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromBits = fromBits;\n/**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n/**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\nexport function fromString(str, unsigned, radix) {\n if (str.length === 0)\n throw Error('empty string');\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\n return ZERO;\n if (typeof unsigned === 'number') {\n // For goog.math.long compatibility\n radix = unsigned,\n unsigned = false;\n }\n else {\n unsigned = !!unsigned;\n }\n radix = radix || 10;\n if (radix < 2 || 36 < radix)\n throw RangeError('radix');\n var p = str.indexOf('-');\n if (p > 0)\n throw Error('interior hyphen');\n else if (p === 0) {\n return negate(fromString(str.substring(1), unsigned, radix));\n }\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 8));\n var result = ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = add(multiply(result, power), fromNumber(value));\n }\n else {\n result = multiply(result, radixToPower);\n result = add(result, fromNumber(value));\n }\n }\n result.unsigned = unsigned;\n return result;\n}\n/**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromString = fromString;\n/**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromValue(val, unsigned) {\n if (typeof val === 'number')\n return fromNumber(val, unsigned);\n if (typeof val === 'string')\n return fromString(val, unsigned);\n // Throws for non-objects, converts non-instanceof Long:\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\n}\n/**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\n// Long.fromValue = fromValue;\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n// no runtime penalty for these.\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_16_DBL = 1 << 16;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_24_DBL = 1 << 24;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n/**\n * @type {!Long}\n * @const\n * @inner\n */\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n/**\n * @type {!Long}\n * @inner\n */\nexport var ZERO = fromInt(0);\n/**\n * Signed zero.\n * @type {!Long}\n */\n// Long.ZERO = ZERO;\n/**\n * @type {!Long}\n * @inner\n */\nexport var UZERO = fromInt(0, true);\n/**\n * Unsigned zero.\n * @type {!Long}\n */\n// Long.UZERO = UZERO;\n/**\n * @type {!Long}\n * @inner\n */\nexport var ONE = fromInt(1);\n/**\n * Signed one.\n * @type {!Long}\n */\n// Long.ONE = ONE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var UONE = fromInt(1, true);\n/**\n * Unsigned one.\n * @type {!Long}\n */\n// Long.UONE = UONE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var NEG_ONE = fromInt(-1);\n/**\n * Signed negative one.\n * @type {!Long}\n */\n// Long.NEG_ONE = NEG_ONE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var MAX_VALUE = fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0, false);\n/**\n * Maximum signed value.\n * @type {!Long}\n */\n// Long.MAX_VALUE = MAX_VALUE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF | 0, 0xFFFFFFFF | 0, true);\n/**\n * Maximum unsigned value.\n * @type {!Long}\n */\n// Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n/**\n * Minimum signed value.\n * @type {!Long}\n */\n// Long.MIN_VALUE = MIN_VALUE;\n/**\n * @alias Long.prototype\n * @inner\n */\n// var LongPrototype = Long.prototype;\n/**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\nexport function toInt($this) {\n return $this.unsigned ? $this.low >>> 0 : $this.low;\n}\n;\n/**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\nexport function toNumber($this) {\n if ($this.unsigned)\n return (($this.high >>> 0) * TWO_PWR_32_DBL) + ($this.low >>> 0);\n return $this.high * TWO_PWR_32_DBL + ($this.low >>> 0);\n}\n;\n/**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\nexport function toString($this, radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix)\n throw RangeError('radix');\n if (isZero($this))\n return '0';\n if (isNegative($this)) { // Unsigned Longs are never negative\n if (equals($this, MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix), div = divide($this, radixLong), rem1 = subtract(multiply(div, radixLong), $this);\n return toString(div, radix) + toInt(rem1).toString(radix);\n }\n else\n return '-' + toString(negate($this), radix);\n }\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 6), $this.unsigned), rem = $this;\n var result = '';\n while (true) {\n var remDiv = divide(rem, radixToPower), intval = toInt(subtract(rem, multiply(remDiv, radixToPower))) >>> 0, digits = intval.toString(radix);\n rem = remDiv;\n if (isZero(rem))\n return digits + result;\n else {\n while (digits.length < 6)\n digits = '0' + digits;\n result = '' + digits + result;\n }\n }\n}\n;\n/**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\nexport function getHighBits($this) {\n return $this.high;\n}\n;\n/**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\nexport function getHighBitsUnsigned($this) {\n return $this.high >>> 0;\n}\n;\n/**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\nexport function getLowBits($this) {\n return $this.low;\n}\n;\n/**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\nexport function getLowBitsUnsigned($this) {\n return $this.low >>> 0;\n}\n;\n/**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\nexport function getNumBitsAbs($this) {\n if (isNegative($this)) // Unsigned Longs are never negative\n return equals($this, MIN_VALUE) ? 64 : getNumBitsAbs(negate($this));\n var val = $this.high != 0 ? $this.high : $this.low;\n for (var bit = 31; bit > 0; bit--)\n if ((val & (1 << bit)) != 0)\n break;\n return $this.high != 0 ? bit + 33 : bit + 1;\n}\n;\n/**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isZero($this) {\n return $this.high === 0 && $this.low === 0;\n}\n;\n/**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\n// LongPrototype.eqz = LongPrototype.isZero;\n/**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isNegative($this) {\n return !$this.unsigned && $this.high < 0;\n}\n;\n/**\n * Tests if this Long's value is positive.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isPositive($this) {\n return $this.unsigned || $this.high >= 0;\n}\n;\n/**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isOdd($this) {\n return ($this.low & 1) === 1;\n}\n;\n/**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isEven($this) {\n return ($this.low & 1) === 0;\n}\n;\n/**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function equals($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n if ($this.unsigned !== other.unsigned && ($this.high >>> 31) === 1 && (other.high >>> 31) === 1)\n return false;\n return $this.high === other.high && $this.low === other.low;\n}\n;\n/**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.eq = LongPrototype.equals;\n/**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function notEquals($this, other) {\n return !equals($this, /* validates */ other);\n}\n;\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.neq = LongPrototype.notEquals;\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.ne = LongPrototype.notEquals;\n/**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function lessThan($this, other) {\n return compare($this, /* validates */ other) < 0;\n}\n;\n/**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.lt = LongPrototype.lessThan;\n/**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function lessThanOrEqual($this, other) {\n return compare($this, /* validates */ other) <= 0;\n}\n;\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.lte = LongPrototype.lessThanOrEqual;\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.le = LongPrototype.lessThanOrEqual;\n/**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function greaterThan($this, other) {\n return compare($this, /* validates */ other) > 0;\n}\n;\n/**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.gt = LongPrototype.greaterThan;\n/**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function greaterThanOrEqual($this, other) {\n return compare($this, /* validates */ other) >= 0;\n}\n;\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.gte = LongPrototype.greaterThanOrEqual;\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.ge = LongPrototype.greaterThanOrEqual;\n/**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nexport function compare($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n if (equals($this, other))\n return 0;\n var thisNeg = isNegative($this), otherNeg = isNegative(other);\n if (thisNeg && !otherNeg)\n return -1;\n if (!thisNeg && otherNeg)\n return 1;\n // At this point the sign bits are the same\n if (!$this.unsigned)\n return isNegative(subtract($this, other)) ? -1 : 1;\n // Both are positive if at least one is unsigned\n return (other.high >>> 0) > ($this.high >>> 0) || (other.high === $this.high && (other.low >>> 0) > ($this.low >>> 0)) ? -1 : 1;\n}\n;\n/**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\n// LongPrototype.comp = LongPrototype.compare;\n/**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\nexport function negate($this) {\n if (!$this.unsigned && equals($this, MIN_VALUE))\n return MIN_VALUE;\n return add(not($this), ONE);\n}\n;\n/**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\n// LongPrototype.neg = LongPrototype.negate;\n/**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} addend Addend\n * @returns {!Long} Sum\n */\nexport function add($this, addend) {\n if (!isLong(addend))\n addend = fromValue(addend);\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n var a48 = $this.high >>> 16;\n var a32 = $this.high & 0xFFFF;\n var a16 = $this.low >>> 16;\n var a00 = $this.low & 0xFFFF;\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xFFFF;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xFFFF;\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, $this.unsigned);\n}\n;\n/**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nexport function subtract($this, subtrahend) {\n if (!isLong(subtrahend))\n subtrahend = fromValue(subtrahend);\n return add($this, negate(subtrahend));\n}\n;\n/**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\n// LongPrototype.sub = LongPrototype.subtract;\n/**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nexport function multiply($this, multiplier) {\n if (isZero($this))\n return $this.unsigned ? UZERO : ZERO;\n if (!isLong(multiplier))\n multiplier = fromValue(multiplier);\n // use wasm support if present\n if (wasm) {\n var low = wasm.mul($this.low, $this.high, multiplier.low, multiplier.high);\n return fromBits(low, wasm.get_high(), $this.unsigned);\n }\n if (isZero(multiplier))\n return $this.unsigned ? UZERO : ZERO;\n if (equals($this, MIN_VALUE))\n return isOdd(multiplier) ? MIN_VALUE : ZERO;\n if (equals(multiplier, MIN_VALUE))\n return isOdd($this) ? MIN_VALUE : ZERO;\n if (isNegative($this)) {\n if (isNegative(multiplier))\n return multiply(negate($this), negate(multiplier));\n else\n return negate(multiply(negate($this), multiplier));\n }\n else if (isNegative(multiplier))\n return negate(multiply($this, negate(multiplier)));\n // If both longs are small, use float multiplication\n if (lessThan($this, TWO_PWR_24) && lessThan(multiplier, TWO_PWR_24))\n return fromNumber(toNumber($this) * toNumber(multiplier), $this.unsigned);\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n var a48 = $this.high >>> 16;\n var a32 = $this.high & 0xFFFF;\n var a16 = $this.low >>> 16;\n var a00 = $this.low & 0xFFFF;\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xFFFF;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xFFFF;\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, $this.unsigned);\n}\n;\n/**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\n// LongPrototype.mul = LongPrototype.multiply;\n/**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nexport function divide($this, divisor) {\n if (!isLong(divisor))\n divisor = fromValue(divisor);\n if (isZero(divisor))\n throw Error('division by zero');\n // use wasm support if present\n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (!$this.unsigned &&\n $this.high === -0x80000000 &&\n divisor.low === -1 && divisor.high === -1) {\n // be consistent with non-wasm code path\n return $this;\n }\n var low = ($this.unsigned ? wasm.div_u : wasm.div_s)($this.low, $this.high, divisor.low, divisor.high);\n return fromBits(low, wasm.get_high(), $this.unsigned);\n }\n if (isZero($this))\n return $this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n if (!$this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (equals($this, MIN_VALUE)) {\n if (equals(divisor, ONE) || equals(divisor, NEG_ONE))\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (equals(divisor, MIN_VALUE))\n return ONE;\n else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = shiftRight($this, 1);\n approx = shiftLeft(divide(halfThis, divisor), 1);\n if (equals(approx, ZERO)) {\n return isNegative(divisor) ? ONE : NEG_ONE;\n }\n else {\n rem = subtract($this, multiply(divisor, approx));\n res = add(approx, divide(rem, divisor));\n return res;\n }\n }\n }\n else if (equals(divisor, MIN_VALUE))\n return $this.unsigned ? UZERO : ZERO;\n if (isNegative($this)) {\n if (isNegative(divisor))\n return divide(negate($this), negate(divisor));\n return negate(divide(negate($this), divisor));\n }\n else if (isNegative(divisor))\n return negate(divide($this, negate(divisor)));\n res = ZERO;\n }\n else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned)\n divisor = toUnsigned(divisor);\n if (greaterThan(divisor, $this))\n return UZERO;\n if (greaterThan(divisor, shiftRightUnsigned($this, 1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n }\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n rem = $this;\n while (greaterThanOrEqual(rem, divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(toNumber(rem) / toNumber(divisor)));\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2), delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), \n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx), approxRem = multiply(approxRes, divisor);\n while (isNegative(approxRem) || greaterThan(approxRem, rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, $this.unsigned);\n approxRem = multiply(approxRes, divisor);\n }\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (isZero(approxRes))\n approxRes = ONE;\n res = add(res, approxRes);\n rem = subtract(rem, approxRem);\n }\n return res;\n}\n;\n/**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\n// LongPrototype.div = LongPrototype.divide;\n/**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nexport function modulo($this, divisor) {\n if (!isLong(divisor))\n divisor = fromValue(divisor);\n // use wasm support if present\n if (wasm) {\n var low = ($this.unsigned ? wasm.rem_u : wasm.rem_s)($this.low, $this.high, divisor.low, divisor.high);\n return fromBits(low, wasm.get_high(), $this.unsigned);\n }\n return subtract($this, multiply(divide($this, divisor), divisor));\n}\n;\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n// LongPrototype.mod = LongPrototype.modulo;\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n// LongPrototype.rem = LongPrototype.modulo;\n/**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\nexport function not($this) {\n return fromBits(~$this.low, ~$this.high, $this.unsigned);\n}\n;\n/**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nexport function and($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits($this.low & other.low, $this.high & other.high, $this.unsigned);\n}\n;\n/**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nexport function or($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits($this.low | other.low, $this.high | other.high, $this.unsigned);\n}\n;\n/**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nexport function xor($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits($this.low ^ other.low, $this.high ^ other.high, $this.unsigned);\n}\n;\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nexport function shiftLeft($this, numBits) {\n if (isLong(numBits))\n numBits = toInt(numBits);\n if ((numBits &= 63) === 0)\n return $this;\n else if (numBits < 32)\n return fromBits($this.low << numBits, ($this.high << numBits) | ($this.low >>> (32 - numBits)), $this.unsigned);\n else\n return fromBits(0, $this.low << (numBits - 32), $this.unsigned);\n}\n;\n/**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shl = LongPrototype.shiftLeft;\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nexport function shiftRight($this, numBits) {\n if (isLong(numBits))\n numBits = toInt(numBits);\n if ((numBits &= 63) === 0)\n return $this;\n else if (numBits < 32)\n return fromBits(($this.low >>> numBits) | ($this.high << (32 - numBits)), $this.high >> numBits, $this.unsigned);\n else\n return fromBits($this.high >> (numBits - 32), $this.high >= 0 ? 0 : -1, $this.unsigned);\n}\n;\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shr = LongPrototype.shiftRight;\n/**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nexport function shiftRightUnsigned($this, numBits) {\n if (isLong(numBits))\n numBits = toInt(numBits);\n numBits &= 63;\n if (numBits === 0)\n return $this;\n else {\n var high = $this.high;\n if (numBits < 32) {\n var low = $this.low;\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, $this.unsigned);\n }\n else if (numBits === 32)\n return fromBits(high, 0, $this.unsigned);\n else\n return fromBits(high >>> (numBits - 32), 0, $this.unsigned);\n }\n}\n;\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shru = LongPrototype.shiftRightUnsigned;\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n/**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nexport const rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits))\n numBits = numBits.toInt();\n if ((numBits &= 63) === 0)\n return this;\n if (numBits === 32)\n return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = (32 - numBits);\n return fromBits(((this.low << numBits) | (this.high >>> b)), ((this.high << numBits) | (this.low >>> b)), this.unsigned);\n }\n numBits -= 32;\n b = (32 - numBits);\n return fromBits(((this.high << numBits) | (this.low >>> b)), ((this.low << numBits) | (this.high >>> b)), this.unsigned);\n};\n/**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n// LongPrototype.rotl = LongPrototype.rotateLeft;\n/**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nexport const rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits))\n numBits = numBits.toInt();\n if ((numBits &= 63) === 0)\n return this;\n if (numBits === 32)\n return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = (32 - numBits);\n return fromBits(((this.high << b) | (this.low >>> numBits)), ((this.low << b) | (this.high >>> numBits)), this.unsigned);\n }\n numBits -= 32;\n b = (32 - numBits);\n return fromBits(((this.low << b) | (this.high >>> numBits)), ((this.high << b) | (this.low >>> numBits)), this.unsigned);\n};\n/**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n// LongPrototype.rotr = LongPrototype.rotateRight;\n/**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\nexport function toSigned($this) {\n if (!$this.unsigned)\n return $this;\n return fromBits($this.low, $this.high, false);\n}\n;\n/**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\nexport function toUnsigned($this) {\n if ($this.unsigned)\n return $this;\n return fromBits($this.low, $this.high, true);\n}\n;\n/**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.} Byte representation\n */\nexport function toBytes($this, le) {\n return le ? toBytesLE($this) : toBytesBE($this);\n}\n;\n/**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Little endian byte representation\n */\nexport function toBytesLE($this) {\n var hi = $this.high, lo = $this.low;\n return [\n lo & 0xff,\n lo >>> 8 & 0xff,\n lo >>> 16 & 0xff,\n lo >>> 24,\n hi & 0xff,\n hi >>> 8 & 0xff,\n hi >>> 16 & 0xff,\n hi >>> 24\n ];\n}\n;\n/**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Big endian byte representation\n */\nexport function toBytesBE($this) {\n var hi = $this.high, lo = $this.low;\n return [\n hi >>> 24,\n hi >>> 16 & 0xff,\n hi >>> 8 & 0xff,\n hi & 0xff,\n lo >>> 24,\n lo >>> 16 & 0xff,\n lo >>> 8 & 0xff,\n lo & 0xff\n ];\n}\n;\n/**\n * Creates a Long from its byte representation.\n * @param {!Array.} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\nexport function fromBytes(bytes, unsigned, le) {\n return le ? fromBytesLE(bytes, unsigned) : fromBytesBE(bytes, unsigned);\n}\n;\n/**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nexport function fromBytesLE(bytes, unsigned) {\n return new Long(bytes[0] |\n bytes[1] << 8 |\n bytes[2] << 16 |\n bytes[3] << 24, bytes[4] |\n bytes[5] << 8 |\n bytes[6] << 16 |\n bytes[7] << 24, unsigned);\n}\n;\n/**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nexport function fromBytesBE(bytes, unsigned) {\n return new Long(bytes[4] << 24 |\n bytes[5] << 16 |\n bytes[6] << 8 |\n bytes[7], bytes[0] << 24 |\n bytes[1] << 16 |\n bytes[2] << 8 |\n bytes[3], unsigned);\n}\n;\n//# sourceMappingURL=long.js.map","import { isValid } from \"./Int32\";\nimport * as LongLib from \"./lib/long\";\nexport default LongLib.Long;\nexport const get_Zero = LongLib.ZERO;\nexport const get_One = LongLib.ONE;\nexport const op_Addition = LongLib.add;\nexport const op_Subtraction = LongLib.subtract;\nexport const op_Multiply = LongLib.multiply;\nexport const op_Division = LongLib.divide;\nexport const op_Modulus = LongLib.modulo;\nexport const op_UnaryNegation = LongLib.negate;\nexport const op_LeftShift = LongLib.shiftLeft;\nexport const op_RightShift = LongLib.shiftRight;\nexport const op_RightShiftUnsigned = LongLib.shiftRightUnsigned;\nexport const op_BitwiseAnd = LongLib.and;\nexport const op_BitwiseOr = LongLib.or;\nexport const op_ExclusiveOr = LongLib.xor;\nexport const op_LogicalNot = LongLib.not;\nexport const op_LessThan = LongLib.lessThan;\nexport const op_LessThanOrEqual = LongLib.lessThanOrEqual;\nexport const op_GreaterThan = LongLib.greaterThan;\nexport const op_GreaterThanOrEqual = LongLib.greaterThanOrEqual;\nexport const op_Equality = LongLib.equals;\nexport const op_Inequality = LongLib.notEquals;\nexport const equals = LongLib.equals;\nexport const compare = LongLib.compare;\nexport const fromInt = LongLib.fromInt;\nexport const fromBits = LongLib.fromBits;\nexport const fromBytes = LongLib.fromBytes;\nexport const fromNumber = LongLib.fromNumber;\nexport const fromString = LongLib.fromString;\nexport const fromValue = LongLib.fromValue;\nexport const toInt = LongLib.toInt;\nexport const toBytes = LongLib.toBytes;\nexport const toNumber = LongLib.toNumber;\nexport const toString = LongLib.toString;\nexport const getLowBits = LongLib.getLowBits;\nexport const getHighBits = LongLib.getHighBits;\nexport const getLowBitsUnsigned = LongLib.getLowBitsUnsigned;\nexport const getHighBitsUnsigned = LongLib.getHighBitsUnsigned;\nfunction getMaxValue(unsigned, radix, isNegative) {\n switch (radix) {\n case 2: return unsigned ?\n \"1111111111111111111111111111111111111111111111111111111111111111\" :\n (isNegative ? \"1000000000000000000000000000000000000000000000000000000000000000\"\n : \"111111111111111111111111111111111111111111111111111111111111111\");\n case 8: return unsigned ?\n \"1777777777777777777777\" :\n (isNegative ? \"1000000000000000000000\" : \"777777777777777777777\");\n case 10: return unsigned ?\n \"18446744073709551615\" :\n (isNegative ? \"9223372036854775808\" : \"9223372036854775807\");\n case 16: return unsigned ?\n \"FFFFFFFFFFFFFFFF\" :\n (isNegative ? \"8000000000000000\" : \"7FFFFFFFFFFFFFFF\");\n default: throw new Error(\"Invalid radix.\");\n }\n}\nexport function abs(x) {\n if (!x.unsigned && LongLib.isNegative(x)) {\n return op_UnaryNegation(x);\n }\n else {\n return x;\n }\n}\nexport function fromInteger(value, unsigned, kind) {\n let x = value;\n let xh = 0;\n switch (kind) {\n case 0:\n x = value << 24 >> 24;\n xh = x;\n break;\n case 4:\n x = value << 24 >>> 24;\n break;\n case 1:\n x = value << 16 >> 16;\n xh = x;\n break;\n case 5:\n x = value << 16 >>> 16;\n break;\n case 2:\n x = value >> 0;\n xh = x;\n break;\n case 6:\n x = value >>> 0;\n break;\n }\n return LongLib.fromBits(x, xh >> 31, unsigned);\n}\nexport function parse(str, style, unsigned, _bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n const lessOrEqual = (x, y) => {\n const len = Math.max(x.length, y.length);\n return x.padStart(len, \"0\") <= y.padStart(len, \"0\");\n };\n const isNegative = res.sign === \"-\";\n const maxValue = getMaxValue(unsigned || res.radix !== 10, res.radix, isNegative);\n if (lessOrEqual(res.digits.toUpperCase(), maxValue)) {\n str = isNegative ? res.sign + res.digits : res.digits;\n return LongLib.fromString(str, unsigned, res.radix);\n }\n }\n throw new Error(\"Input string was not in a correct format.\");\n}\nexport function tryParse(str, style, unsigned, bitsize) {\n try {\n const v = parse(str, style, unsigned, bitsize);\n return [true, v];\n }\n catch (_a) {\n // supress error\n }\n return [false, LongLib.ZERO];\n}\nexport function unixEpochMillisecondsToTicks(ms, offset) {\n return op_Multiply(op_Addition(op_Addition(LongLib.fromNumber(ms), 62135596800000), offset), 10000);\n}\nexport function ticksToUnixEpochMilliseconds(ticks) {\n return LongLib.toNumber(op_Subtraction(op_Division(ticks, 10000), 62135596800000));\n}\nexport function makeRangeStepFunction(step, last, unsigned) {\n const stepComparedWithZero = LongLib.compare(step, unsigned ? LongLib.UZERO : LongLib.ZERO);\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n }\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return (x) => {\n const comparedWithLast = LongLib.compare(x, last);\n if ((stepGreaterThanZero && comparedWithLast <= 0)\n || (!stepGreaterThanZero && comparedWithLast >= 0)) {\n return [x, op_Addition(x, step)];\n }\n else {\n return undefined;\n }\n };\n}\n//# sourceMappingURL=Long.js.map","namespace Fable.SimpleJson\r\n\r\nopen System\r\nopen Fable.Core\r\nopen FSharp.Reflection\r\nopen System.Numerics\r\nopen System.Collections\r\nopen System.Collections.Generic\r\n\r\nmodule Node =\r\n\r\n []\r\n /// Converts Base64 string into a byte array in Node environment\r\n let bytesFromBase64 (value: string) : byte array = jsNative\r\n\r\nmodule Convert =\r\n []\r\n let internal isBrowser : unit -> bool = jsNative\r\n\r\n let insideBrowser = isBrowser()\r\n\r\n []\r\n let internal insideWorker : bool = jsNative\r\n\r\n []\r\n let internal setProp o k v = jsNative\r\n\r\n type InternalMap =\r\n | MapEmpty\r\n | MapOne of string * Json\r\n | MapNode of string * Json * InternalMap * InternalMap\r\n\r\n let rec flattenMap = function\r\n | MapEmpty -> [ ]\r\n | MapOne (key, value) -> [ key, value ]\r\n | MapNode (key, value, left, right) ->\r\n [ yield! flattenMap left\r\n yield! flattenMap right\r\n yield (key, value) ]\r\n\r\n let (|KeyValue|_|) key (map: Map) =\r\n map\r\n |> Map.tryFind key\r\n |> Option.map (fun value -> key, value, Map.remove key map)\r\n\r\n let (|NonArray|_|) = function\r\n | JArray _ -> None\r\n | json -> Some json\r\n\r\n let (|MapEmpty|_|) json =\r\n match json with\r\n | JString \"MapEmpty\" -> Some json\r\n | _ -> None\r\n\r\n let (|MapKey|_|) = function\r\n | JNumber number -> Some (string number)\r\n | JString key -> Some key\r\n | _ -> None\r\n\r\n let (|MapOne|_|) = function\r\n | JArray [ JString \"MapOne\"; MapKey key; value ] -> Some (key, value)\r\n | _ -> None\r\n\r\n let (|MapNode|_|) = function\r\n | JArray [ JString \"MapNode\"; MapKey key; value; left; right; JNumber _ ] ->\r\n Some (key, value, left, right)\r\n | _ -> None\r\n\r\n let rec generateMap json =\r\n match json with\r\n | MapEmpty _ -> Some InternalMap.MapEmpty\r\n | MapOne (key, value) -> Some (InternalMap.MapOne (key, value))\r\n | MapNode (key, value, left, right) ->\r\n match generateMap left, generateMap right with\r\n | Some leftMap, Some rightMap ->\r\n Some (InternalMap.MapNode(key, value, leftMap, rightMap))\r\n | _ -> None\r\n | _ -> None\r\n\r\n let arrayLike = function\r\n | TypeInfo.Array _ -> true\r\n | TypeInfo.List _ -> true\r\n | TypeInfo.Seq _ -> true\r\n | TypeInfo.Tuple _ -> true\r\n | TypeInfo.Set _ -> true\r\n | _ -> false\r\n\r\n let isRecord = function\r\n | TypeInfo.Record recordType -> true\r\n | _ -> false\r\n\r\n let unionOfRecords = function\r\n | TypeInfo.Union getCases ->\r\n let (unionCases, unionType) = getCases()\r\n unionCases\r\n |> Seq.forall (fun case -> case.CaseTypes.Length = 1 && isRecord case.CaseTypes.[0])\r\n | _ ->\r\n false\r\n\r\n let optional = function\r\n | TypeInfo.Option _ -> true\r\n | _ -> false\r\n\r\n let isQuoted (input: string) =\r\n input.StartsWith \"\\\"\" && input.EndsWith \"\\\"\"\r\n\r\n let removeQuotes (input: string) =\r\n input.Substring(1, input.Length - 2)\r\n\r\n let rec fromJsonAs (input: Json) (typeInfo: Fable.SimpleJson.TypeInfo) : obj =\r\n match input, typeInfo with\r\n | JNumber value, TypeInfo.Float -> unbox value\r\n | JNumber value, TypeInfo.Float32 -> unbox (float32 value)\r\n | JString value, TypeInfo.Float32 -> unbox (float32 value)\r\n // reading number as int -> floor it\r\n | JNumber value, TypeInfo.Int32 -> unbox (JS.Math.floor(value))\r\n | JBool value, TypeInfo.Bool -> unbox value\r\n // reading int from string -> parse it\r\n | JString value, TypeInfo.Int32 -> unbox (int value)\r\n // reading into strings\r\n | JString value, TypeInfo.String -> unbox value\r\n | JNumber value, TypeInfo.String -> unbox (string value)\r\n // decimals\r\n | JString value, TypeInfo.Decimal -> unbox (decimal value)\r\n | JNumber value, TypeInfo.Decimal -> unbox (decimal value)\r\n | JString value, TypeInfo.Short -> unbox (int16 value)\r\n | JNumber value, TypeInfo.Short -> unbox (int16 value)\r\n // Unsigned integers\r\n | JNumber value, TypeInfo.UInt16 -> unbox (uint16 value)\r\n | JString value, TypeInfo.UInt16 -> unbox (uint16 value)\r\n | JNumber value, TypeInfo.UInt32 -> unbox (uint32 value)\r\n | JString value, TypeInfo.UInt32 -> unbox (uint32 value)\r\n | JNumber value, TypeInfo.UInt64 -> unbox (uint64 value)\r\n | JString value, TypeInfo.UInt64 -> unbox (uint64 value)\r\n | JNumber value, TypeInfo.TimeSpan -> unbox (JS.Math.floor value)\r\n | JString value, TypeInfo.Enum getlElemType ->\r\n let (underlyingType, originalType) = getlElemType()\r\n match underlyingType with\r\n | TypeInfo.Int32 ->\r\n match Int32.TryParse(value) with\r\n | true, parsedNumber ->\r\n unbox parsedNumber\r\n | false, _ ->\r\n failwithf \"The value '%s' is not valid for enum of type '%s'\" value originalType.Name\r\n | TypeInfo.Long ->\r\n match Int64.TryParse(value) with\r\n | true, parsedNumber ->\r\n unbox parsedNumber\r\n | false, _ ->\r\n failwithf \"The value '%s' is not valid for enum of type '%s'\" value originalType.Name\r\n | other ->\r\n failwithf \"The value '%s' cannot be converted to enum of type '%s'\" value originalType.Name\r\n | JNumber value, TypeInfo.Enum getElemType ->\r\n let (_, originalType) = getElemType()\r\n unbox value\r\n // byte[] coming from the server is serialized as base64 string\r\n // convert it back to the actual byte array\r\n | JString value, TypeInfo.Array getElemType ->\r\n let elemType = getElemType()\r\n match elemType with\r\n | TypeInfo.Byte ->\r\n if insideWorker || insideBrowser\r\n then unbox (Convert.FromBase64String value)\r\n else unbox (Node.bytesFromBase64 value)\r\n | otherType -> failwithf \"Cannot convert arbitrary string '%s' to %A\" value otherType\r\n\r\n // null values for strings are just the null string\r\n | JNull, TypeInfo.String -> unbox null\r\n | JNull, TypeInfo.Unit -> unbox ()\r\n // int64 as string -> parse it\r\n | JString value, TypeInfo.Long -> unbox (int64 value)\r\n | JString value, TypeInfo.Byte -> unbox (byte value)\r\n | JNumber value, TypeInfo.Byte -> unbox (byte value)\r\n // BigInt as string -> parse it\r\n | JString value, TypeInfo.BigInt -> unbox (BigInteger.Parse value)\r\n | JNumber value, TypeInfo.BigInt -> unbox (bigint (JS.Math.floor(value)))\r\n // parse formatted date time\r\n | JString value, TypeInfo.DateTime -> unbox (DateTime.Parse(value))\r\n // parse formatted date time offset\r\n | JString value, TypeInfo.DateTimeOffset -> unbox (DateTimeOffset.Parse(value))\r\n // deserialize union from objects\r\n // { \"One\": 20 } or {\"One\": [20]} -> One of int\r\n | JObject values, TypeInfo.Union (getTypes) ->\r\n let (cases, unionType) = getTypes()\r\n match Map.toList values with\r\n | [ caseName, JArray values ] ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | Some foundCase when Array.length foundCase.CaseTypes = 1 && arrayLike foundCase.CaseTypes.[0] ->\r\n let deserialized = fromJsonAs (JArray values) foundCase.CaseTypes.[0]\r\n FSharpValue.MakeUnion(foundCase.Info, [| deserialized |])\r\n |> unbox\r\n | Some foundCase when Array.length foundCase.CaseTypes = 1 && optional foundCase.CaseTypes.[0] ->\r\n let parsedOptional = unbox (fromJsonAs (JArray values) foundCase.CaseTypes.[0])\r\n FSharpValue.MakeUnion(foundCase.Info, [| parsedOptional |])\r\n |> unbox\r\n | Some foundCase ->\r\n if Array.length foundCase.CaseTypes = 1\r\n && not (arrayLike foundCase.CaseTypes.[0])\r\n && Array.length foundCase.CaseTypes <> List.length values\r\n then failwithf \"Expected case '%s' to have %d argument types but the JSON data only contained %d values\" foundCase.CaseName (Array.length foundCase.CaseTypes) (List.length values)\r\n let parsedValues =\r\n Array.ofList values\r\n |> Array.zip foundCase.CaseTypes\r\n |> Array.map (fun (valueType, value) -> fromJsonAs value valueType)\r\n FSharpValue.MakeUnion(foundCase.Info, parsedValues)\r\n |> unbox\r\n | [ caseName, NonArray json ] ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | Some ({ CaseName = caseName; Info = caseInfo; CaseTypes = [| caseType |] }) ->\r\n FSharpValue.MakeUnion(caseInfo, [| unbox fromJsonAs json caseType |])\r\n |> unbox\r\n | _ ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | otherwise when unionOfRecords typeInfo ->\r\n let discriminators = [\"__typename\"; \"$typename\"; \"$type\" ]\r\n let foundDiscriminatorKey =\r\n discriminators\r\n |> List.tryFind (fun keyword -> Map.containsKey keyword values)\r\n\r\n match foundDiscriminatorKey with\r\n | None ->\r\n failwithf \"Could not serialize the JSON object into the union of records of type %s because the JSON did not contain a known discriminator. Expected '__typename', '$typeName' or '$type'\" unionType.Name\r\n | Some discriminatorKey ->\r\n let discriminatorValueJson = Map.find discriminatorKey values\r\n match discriminatorValueJson with\r\n | JString discriminatorValue ->\r\n let foundUnionCase =\r\n cases\r\n |> Seq.tryFind (fun case -> case.CaseName.ToUpperInvariant() = discriminatorValue.ToUpperInvariant())\r\n\r\n match foundUnionCase with\r\n | None ->\r\n failwithf \"Union of records of type '%s' does not have a matching case '%s'\" unionType.Name discriminatorValue\r\n | Some case ->\r\n // Assuming the case types is [recordType]\r\n // one element of types and the first element is a record\r\n // as satisfied by the unionOfRecords function\r\n let record = unbox (fromJsonAs (JObject values) (case.CaseTypes.[0]))\r\n FSharpValue.MakeUnion(case.Info, [| record |])\r\n | otherwise ->\r\n failwithf \"Union of records of type '%s' cannot be deserialized with the value of the discriminator key is not a string to match against a specific union case\" unionType.Name\r\n | otherwise ->\r\n // TODO!!! Better error messages here\r\n let unexpectedJson = JS.JSON.stringify otherwise\r\n let expectedType = JS.JSON.stringify cases\r\n failwithf \"Expected JSON:\\n%s\\nto match the type\\n%s\" unexpectedJson expectedType\r\n | JNull, TypeInfo.Option _ -> unbox None\r\n | jsonValue, TypeInfo.Option optionalTypeDelayed when jsonValue <> JNull ->\r\n let optionalType = optionalTypeDelayed()\r\n let parsedOptional = unbox (fromJsonAs jsonValue optionalType)\r\n unbox Some parsedOptional\r\n | JString value, TypeInfo.Guid _ -> unbox (System.Guid.Parse(value))\r\n // int64 as a number, convert it to int then to in64\r\n | JNumber value , TypeInfo.Long _ -> unbox int64 (int value)\r\n // int64 as the internal representation from Long.js\r\n // then reconstruct it from the high/low (two integers) components\r\n | JObject dict, TypeInfo.Long _ ->\r\n let get key = Map.tryFind key dict\r\n [ get \"low\"; get \"high\"; get \"unsigned\" ]\r\n |> List.choose id\r\n |> function\r\n | [ JNumber low; JNumber high; JBool _ ] ->\r\n let lowBytes = BitConverter.GetBytes(int low)\r\n let highBytes = BitConverter.GetBytes(int high)\r\n let combinedBytes = Array.concat [ lowBytes; highBytes ]\r\n BitConverter.ToInt64(combinedBytes, 0)\r\n |> unbox\r\n | _ -> failwithf \"Unable to construct int64 from object literal { low: int, high: int, unsigned: bool }\"\r\n // convert a single case string to union\r\n // \"One\" -> One, here is a special case where the case in quoted inside the string\r\n | JString caseName, TypeInfo.Union getTypes when isQuoted caseName ->\r\n let (caseTypes, unionType) = getTypes()\r\n caseTypes\r\n |> Array.tryFind (fun case -> case.CaseName = removeQuotes caseName)\r\n |> function\r\n | Some ({ Info = caseInfo }) -> unbox (FSharpValue.MakeUnion(caseInfo, [||]))\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) caseTypes\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n // convert a single case string to union\r\n // \"One\" -> One\r\n | JString caseName, TypeInfo.Union getTypes ->\r\n let (caseTypes, unionType) = getTypes()\r\n caseTypes\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | Some ({ Info = caseInfo }) -> unbox (FSharpValue.MakeUnion(caseInfo, [||]))\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) caseTypes\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | JString serializedRecord, TypeInfo.Record getFields ->\r\n fromJsonAs (SimpleJson.parse serializedRecord) typeInfo\r\n // convert unions from arrays\r\n // [\"One\", 20] -> One of int\r\n | JArray caseValue, TypeInfo.Union getTypes ->\r\n let (cases, unionType) = getTypes()\r\n match caseValue with\r\n // Union case without values\r\n | [ JString caseName ] ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | Some ({ CaseName = caseName; Info = caseInfo; CaseTypes = caseInfoTypes }) ->\r\n // single case without values\r\n unbox (FSharpValue.MakeUnion(caseInfo, [||]))\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case '%s' was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | JString caseName :: values ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | None ->\r\n let caseNames = Array.map (fun ({ CaseName = name }) -> name) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid, expected one of [%s]\" caseName expectedCases\r\n | Some ({ CaseName = foundCaseName; Info = caseInfo; CaseTypes = types }) ->\r\n if Array.length types <> List.length values\r\n then failwithf \"The number of union case parameters for '%s' is different\" foundCaseName\r\n let parsedValues =\r\n Array.ofList values\r\n |> Array.zip types\r\n |> Array.map (fun (valueType, value) -> fromJsonAs value valueType)\r\n FSharpValue.MakeUnion(caseInfo, parsedValues)\r\n |> unbox\r\n | otherwise ->\r\n let unexpectedJson = JS.JSON.stringify otherwise\r\n let expectedType = JS.JSON.stringify cases\r\n failwithf \"Expected JSON:\\n%s\\nto match the type\\n%s\" unexpectedJson expectedType\r\n // Arrays\r\n | JArray values, TypeInfo.Array elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n values\r\n |> List.map (fun value -> unbox (fromJsonAs value elementType))\r\n |> Array.ofList\r\n |> unbox\r\n // Lists\r\n | JArray values, TypeInfo.List elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n values\r\n |> List.map (fun value -> unbox (fromJsonAs value elementType))\r\n |> unbox\r\n | JArray values, TypeInfo.Set elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n values\r\n |> List.map (fun value -> unbox (fromJsonAs value elementType))\r\n |> Set.ofList\r\n |> unbox\r\n\r\n | JArray values, TypeInfo.Seq elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n let converted = List.map (fun value -> unbox (fromJsonAs value elementType)) values\r\n unbox converted\r\n // Tuples, become just arrays\r\n | JArray array, TypeInfo.Tuple tupleTypesDelayed ->\r\n let tupleTypes = tupleTypesDelayed()\r\n array\r\n |> Array.ofList\r\n |> Array.zip tupleTypes\r\n |> Array.map (fun (jsonType, jsonData) -> fromJsonAs jsonData jsonType)\r\n |> unbox\r\n // Records\r\n | JObject dict, TypeInfo.Record getTypes ->\r\n let fields, recordType = getTypes()\r\n // Match the JSON object literal keys with their types\r\n let recordValues =\r\n let values = Map.toList dict\r\n fields\r\n |> Array.map (fun ({ FieldName = fieldName; FieldType = fieldType }) ->\r\n values\r\n |> List.tryFind (fun (key, value) -> fieldName = key)\r\n |> function\r\n | Some (key, value) -> unbox (fromJsonAs value fieldType)\r\n | None ->\r\n match fieldType with\r\n // field type is an option of something, just return None\r\n | TypeInfo.Option _ -> unbox None\r\n | _ ->\r\n // field type is required and it doens't exist in the JSON\r\n // then generate a nice error message\r\n let dictKeys =\r\n Map.toList dict\r\n |> List.map (fst >> sprintf \"'%s'\")\r\n |> String.concat \", \"\r\n |> sprintf \"[ %s ]\"\r\n let recordFields =\r\n fields\r\n |> Array.map (fun ({ FieldName = name; FieldType = innerFieldType }) ->\r\n match innerFieldType with\r\n | TypeInfo.Option _ -> sprintf \"optional('%s')\" name\r\n | _ -> sprintf \"required('%s')\" name)\r\n |> String.concat \", \"\r\n |> sprintf \"[ %s ]\"\r\n failwithf \"Could not find the required key '%s' in the JSON object literal with keys %s to match with record type '%s' that has fields %s\" fieldName dictKeys recordType.Name recordFields)\r\n unbox (FSharpValue.MakeRecord(recordType, recordValues))\r\n\r\n | JArray tuples, TypeInfo.Map getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n let pairs =\r\n [ for keyValuePair in tuples do\r\n let tuple = fromJsonAs keyValuePair (TypeInfo.Tuple (let a = [| keyType; valueType |] in fun () -> a))\r\n yield tuple ]\r\n match keyType with\r\n | TypeInfo.Int32\r\n | TypeInfo.String\r\n | TypeInfo.Bool ->\r\n pairs\r\n |> unbox<(string * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _ ->\r\n pairs\r\n |> unbox<(IStructuralComparable * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n\r\n | JArray tuples, TypeInfo.Dictionary getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n let pairs =\r\n [ for keyValuePair in tuples do\r\n let tuple = fromJsonAs keyValuePair (TypeInfo.Tuple (let a = [| keyType; valueType |] in fun () -> a))\r\n yield tuple ]\r\n let output = System.Collections.Generic.Dictionary()\r\n for (key, value) in (unbox<(IStructuralComparable * obj) list> pairs) do output.Add(unbox key, value)\r\n output\r\n |> unbox\r\n\r\n | JObject dict, TypeInfo.Dictionary getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n dict\r\n |> Map.toList\r\n |> List.map (fun (key, value) -> fromJsonAs (JString key) keyType, fromJsonAs value valueType )\r\n |> fun pairs ->\r\n let output = System.Collections.Generic.Dictionary()\r\n for (key, value) in pairs do output.Add(unbox key, value)\r\n output\r\n |> unbox\r\n\r\n | JArray items, TypeInfo.HashSet getType ->\r\n let elemType = getType()\r\n let hashset = HashSet()\r\n for item in items do\r\n let deserialized = fromJsonAs item elemType\r\n hashset.Add(unbox deserialized) |> ignore\r\n\r\n unbox hashset\r\n\r\n | JObject map, TypeInfo.Map getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n // check whether the map is serialized to it's internal representation\r\n // and convert that to back to a normal map from the data\r\n match Map.tryFind \"comparer\" map, Map.tryFind \"tree\" map with\r\n | Some (JObject comparer), Some (JArray tree) when Map.isEmpty comparer ->\r\n match generateMap (JArray tree) with\r\n | Some internalMap ->\r\n let pairs =\r\n flattenMap internalMap\r\n |> List.map (fun (key, value) ->\r\n let nextKey =\r\n if not (isQuoted key)\r\n then unbox (fromJsonAs (JString key) keyType)\r\n else unbox (fromJsonAs (SimpleJson.parseNative key) keyType)\r\n let nextValue = unbox (fromJsonAs value valueType)\r\n unbox nextKey, nextValue)\r\n match keyType with\r\n | TypeInfo.Int32\r\n | TypeInfo.String\r\n | TypeInfo.Bool ->\r\n pairs\r\n |> unbox<(string * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _ ->\r\n pairs\r\n |> unbox<(IStructuralComparable * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n\r\n | None ->\r\n let inputJson = SimpleJson.toString (JArray tree)\r\n failwithf \"Could not generate map from JSON\\n %s\" inputJson\r\n | _ ->\r\n // if comparer and tree are not present,\r\n // assume we are parsing Fable 1 object literal\r\n // and converting that to map\r\n let pairs =\r\n map\r\n |> Map.toList\r\n |> List.map (fun (key, value) ->\r\n let nextKey =\r\n if not (isQuoted key)\r\n then\r\n if Converter.isPrimitive keyType || Converter.enumUnion keyType\r\n then\r\n // for primitive type, just read them as string and parse\r\n unbox (fromJsonAs (JString key) keyType)\r\n else\r\n // server-side JSON can still be complex (for complex types)\r\n // but doesn't have to be quoted, parse again here\r\n unbox (fromJsonAs (SimpleJson.parseNative key) keyType)\r\n else\r\n unbox (fromJsonAs (SimpleJson.parseNative key) keyType)\r\n let nextValue = unbox (fromJsonAs value valueType)\r\n unbox nextKey, nextValue)\r\n\r\n match keyType with\r\n | TypeInfo.Int32\r\n | TypeInfo.String\r\n | TypeInfo.Bool ->\r\n pairs\r\n |> unbox<(string * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _ ->\r\n pairs\r\n |> unbox<(IStructuralComparable * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _, TypeInfo.Any getType ->\r\n let unknownType = getType()\r\n failwithf \"Cannot convert %s to %s\" (SimpleJson.toString input) unknownType.FullName\r\n | _ ->\r\n failwithf \"Cannot convert %s to %s\" (SimpleJson.toString input) (JS.JSON.stringify typeInfo)\r\n\r\n let fromJson<'t> json typeInfo =\r\n unbox<'t> (fromJsonAs json typeInfo)\r\n\r\n[]\r\nmodule ConverterExtensions =\r\n type Json with\r\n static member stringify<'t> (x: 't) =\r\n SimpleJson.stringify x\r\n\r\n /// Parses the input string as JSON and tries to convert it as the given type argument\r\n static member inline parseAs<'t> (input: string) : 't =\r\n match SimpleJson.tryParse input with\r\n | None -> failwith \"Couldn't parse the input JSON string because it seems to be invalid\"\r\n | Some inputJson ->\r\n let typeInfo = TypeInfo.createFrom<'t> ()\r\n Convert.fromJson<'t> inputJson typeInfo\r\n\r\n /// Parses the input string as JSON using native parsing and tries to convert it as the given type argument\r\n static member inline parseNativeAs<'t> (input: string) : 't =\r\n let inputJson = SimpleJson.parseNative input\r\n let typeInfo = TypeInfo.createFrom<'t> ()\r\n Convert.fromJson<'t> inputJson typeInfo\r\n\r\n /// Tries to parse the input string as JSON and tries to convert it as the given type argument, returing a (hopefully) useful error message when it fails\r\n static member inline tryParseAs<'t> (input: string) : Result<'t, string> =\r\n try Ok (Json.parseAs<'t> input)\r\n with | ex -> Error ex.Message\r\n\r\n /// Tries to parse the input string as JSON using native parsing and tries to convert it as the given type argument\r\n static member inline tryParseNativeAs<'t> (input: string) : Result<'t, string> =\r\n try Ok (Json.parseNativeAs<'t> input)\r\n with | ex -> Error ex.Message\r\n\r\n /// Tries to convert parsed JSON object as the given type parameter argument, this method is used when you want to apply transformations to the JSON object before parsing\r\n static member inline convertFromJsonAs<'t> (input: Json) : 't =\r\n let typeInfo = TypeInfo.createFrom<'t> ()\r\n Convert.fromJson<'t> input typeInfo\r\n\r\n /// Tries to convert parsed JSON object as the given type parameter argument, this method is used when you want to apply transformations to the JSON object before parsing\r\n static member inline tryConvertFromJsonAs<'t> (input: Json) : Result<'t, string> =\r\n try Ok (Json.convertFromJsonAs<'t> input)\r\n with | ex -> Error ex.Message\r\n","\"use strict\";\r\n\r\nexport function Parsimmon(action) {\r\n if (!(this instanceof Parsimmon)) {\r\n return new Parsimmon(action);\r\n }\r\n this._ = action;\r\n}\r\n\r\nvar _ = Parsimmon.prototype;\r\n\r\nexport function times(n, f) {\r\n var i = 0;\r\n for (i; i < n; i++) {\r\n f(i);\r\n }\r\n}\r\n\r\nexport function forEach(f, arr) {\r\n times(arr.length, function(i) {\r\n f(arr[i], i, arr);\r\n });\r\n}\r\n\r\nexport function reduce(f, seed, arr) {\r\n forEach(function(elem, i, arr) {\r\n seed = f(seed, elem, i, arr);\r\n }, arr);\r\n return seed;\r\n}\r\n\r\nexport function map(f, arr) {\r\n return reduce(\r\n function(acc, elem, i, a) {\r\n return acc.concat([f(elem, i, a)]);\r\n },\r\n [],\r\n arr\r\n );\r\n}\r\n\r\nexport function lshiftBuffer(input) {\r\n var asTwoBytes = reduce(\r\n function(a, v, i, b) {\r\n return a.concat(\r\n i === b.length - 1\r\n ? Buffer.from([v, 0]).readUInt16BE(0)\r\n : b.readUInt16BE(i)\r\n );\r\n },\r\n [],\r\n input\r\n );\r\n return Buffer.from(\r\n map(function(x) {\r\n return ((x << 1) & 0xffff) >> 8;\r\n }, asTwoBytes)\r\n );\r\n}\r\n\r\nfunction consumeBitsFromBuffer(n, input) {\r\n var state = { v: 0, buf: input };\r\n times(n, function() {\r\n state = {\r\n v: (state.v << 1) | bitPeekBuffer(state.buf),\r\n buf: lshiftBuffer(state.buf)\r\n };\r\n });\r\n return state;\r\n}\r\n\r\nfunction bitPeekBuffer(input) {\r\n return input[0] >> 7;\r\n}\r\n\r\nexport function sum(numArr) {\r\n return reduce(\r\n function(x, y) {\r\n return x + y;\r\n },\r\n 0,\r\n numArr\r\n );\r\n}\r\n\r\nexport function find(pred, arr) {\r\n return reduce(\r\n function(found, elem) {\r\n return found || (pred(elem) ? elem : found);\r\n },\r\n null,\r\n arr\r\n );\r\n}\r\n\r\nfunction bufferExists() {\r\n return typeof Buffer !== \"undefined\";\r\n}\r\n\r\nfunction ensureBuffer() {\r\n if (!bufferExists()) {\r\n throw new Error(\r\n \"Buffer global does not exist; please consider using https://github.com/feross/buffer if you are running Parsimmon in a browser.\"\r\n );\r\n }\r\n}\r\n\r\nfunction bitSeq(alignments) {\r\n ensureBuffer();\r\n var totalBits = sum(alignments);\r\n if (totalBits % 8 !== 0) {\r\n throw new Error(\r\n \"The bits [\" +\r\n alignments.join(\", \") +\r\n \"] add up to \" +\r\n totalBits +\r\n \" which is not an even number of bytes; the total should be divisible by 8\"\r\n );\r\n }\r\n var bytes = totalBits / 8;\r\n\r\n var tooBigRange = find(function(x) {\r\n return x > 48;\r\n }, alignments);\r\n if (tooBigRange) {\r\n throw new Error(\r\n tooBigRange + \" bit range requested exceeds 48 bit (6 byte) Number max.\"\r\n );\r\n }\r\n\r\n return new Parsimmon(function(input, i) {\r\n var newPos = bytes + i;\r\n if (newPos > input.length) {\r\n return makeFailure(i, bytes.toString() + \" bytes\");\r\n }\r\n return makeSuccess(\r\n newPos,\r\n reduce(\r\n function(acc, bits) {\r\n var state = consumeBitsFromBuffer(bits, acc.buf);\r\n return {\r\n coll: acc.coll.concat(state.v),\r\n buf: state.buf\r\n };\r\n },\r\n { coll: [], buf: input.slice(i, newPos) },\r\n alignments\r\n ).coll\r\n );\r\n });\r\n}\r\n\r\nfunction bitSeqObj(namedAlignments) {\r\n ensureBuffer();\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var fullAlignments = map(function(item) {\r\n if (isArray(item)) {\r\n var pair = item;\r\n if (pair.length !== 2) {\r\n throw new Error(\r\n \"[\" +\r\n pair.join(\", \") +\r\n \"] should be length 2, got length \" +\r\n pair.length\r\n );\r\n }\r\n assertString(pair[0]);\r\n assertNumber(pair[1]);\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, pair[0])) {\r\n throw new Error(\"duplicate key in bitSeqObj: \" + pair[0]);\r\n }\r\n seenKeys[pair[0]] = true;\r\n totalKeys++;\r\n return pair;\r\n } else {\r\n assertNumber(item);\r\n return [null, item];\r\n }\r\n }, namedAlignments);\r\n if (totalKeys < 1) {\r\n throw new Error(\r\n \"bitSeqObj expects at least one named pair, got [\" +\r\n namedAlignments.join(\", \") +\r\n \"]\"\r\n );\r\n }\r\n var namesOnly = map(function(pair) {\r\n return pair[0];\r\n }, fullAlignments);\r\n var alignmentsOnly = map(function(pair) {\r\n return pair[1];\r\n }, fullAlignments);\r\n\r\n return bitSeq(alignmentsOnly).map(function(parsed) {\r\n var namedParsed = map(function(name, i) {\r\n return [name, parsed[i]];\r\n }, namesOnly);\r\n\r\n return reduce(\r\n function(obj, kv) {\r\n if (kv[0] !== null) {\r\n obj[kv[0]] = kv[1];\r\n }\r\n return obj;\r\n },\r\n {},\r\n namedParsed\r\n );\r\n });\r\n}\r\n\r\nfunction parseBufferFor(other, length) {\r\n ensureBuffer();\r\n return new Parsimmon(function(input, i) {\r\n if (i + length > input.length) {\r\n return makeFailure(i, length + \" bytes for \" + other);\r\n }\r\n return makeSuccess(i + length, input.slice(i, i + length));\r\n });\r\n}\r\n\r\nfunction parseBuffer(length) {\r\n return parseBufferFor(\"buffer\", length).map(function(unsafe) {\r\n return Buffer.from(unsafe);\r\n });\r\n}\r\n\r\nfunction encodedString(encoding, length) {\r\n return parseBufferFor(\"string\", length).map(function(buff) {\r\n return buff.toString(encoding);\r\n });\r\n}\r\n\r\nfunction isInteger(value) {\r\n return typeof value === \"number\" && Math.floor(value) === value;\r\n}\r\n\r\nfunction assertValidIntegerByteLengthFor(who, length) {\r\n if (!isInteger(length) || length < 0 || length > 6) {\r\n throw new Error(who + \" requires integer length in range [0, 6].\");\r\n }\r\n}\r\n\r\nfunction uintBE(length) {\r\n assertValidIntegerByteLengthFor(\"uintBE\", length);\r\n return parseBufferFor(\"uintBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction uintLE(length) {\r\n assertValidIntegerByteLengthFor(\"uintLE\", length);\r\n return parseBufferFor(\"uintLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction intBE(length) {\r\n assertValidIntegerByteLengthFor(\"intBE\", length);\r\n return parseBufferFor(\"intBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction intLE(length) {\r\n assertValidIntegerByteLengthFor(\"intLE\", length);\r\n return parseBufferFor(\"intLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction floatBE() {\r\n return parseBufferFor(\"floatBE\", 4).map(function(buff) {\r\n return buff.readFloatBE(0);\r\n });\r\n}\r\n\r\nfunction floatLE() {\r\n return parseBufferFor(\"floatLE\", 4).map(function(buff) {\r\n return buff.readFloatLE(0);\r\n });\r\n}\r\n\r\nfunction doubleBE() {\r\n return parseBufferFor(\"doubleBE\", 8).map(function(buff) {\r\n return buff.readDoubleBE(0);\r\n });\r\n}\r\n\r\nfunction doubleLE() {\r\n return parseBufferFor(\"doubleLE\", 8).map(function(buff) {\r\n return buff.readDoubleLE(0);\r\n });\r\n}\r\n\r\nfunction toArray(arrLike) {\r\n return Array.prototype.slice.call(arrLike);\r\n}\r\n// -*- Helpers -*-\r\n\r\nfunction isParser(obj) {\r\n return obj instanceof Parsimmon;\r\n}\r\n\r\nfunction isArray(x) {\r\n return {}.toString.call(x) === \"[object Array]\";\r\n}\r\n\r\nfunction isBuffer(x) {\r\n /* global Buffer */\r\n return bufferExists() && Buffer.isBuffer(x);\r\n}\r\n\r\nexport function makeSuccess(index, value) {\r\n return {\r\n status: true,\r\n index: index,\r\n value: value,\r\n furthest: -1,\r\n expected: []\r\n };\r\n}\r\n\r\nexport function makeFailure(index, expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n return {\r\n status: false,\r\n index: -1,\r\n value: null,\r\n furthest: index,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction mergeReplies(result, last) {\r\n if (!last) {\r\n return result;\r\n }\r\n if (result.furthest > last.furthest) {\r\n return result;\r\n }\r\n var expected =\r\n result.furthest === last.furthest\r\n ? union(result.expected, last.expected)\r\n : last.expected;\r\n return {\r\n status: result.status,\r\n index: result.index,\r\n value: result.value,\r\n furthest: last.furthest,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction makeLineColumnIndex(input, i) {\r\n if (isBuffer(input)) {\r\n return {\r\n offset: i,\r\n line: -1,\r\n column: -1\r\n };\r\n }\r\n var lines = input.slice(0, i).split(\"\\n\");\r\n // Note that unlike the character offset, the line and column offsets are\r\n // 1-based.\r\n var lineWeAreUpTo = lines.length;\r\n var columnWeAreUpTo = lines[lines.length - 1].length + 1;\r\n return {\r\n offset: i,\r\n line: lineWeAreUpTo,\r\n column: columnWeAreUpTo\r\n };\r\n}\r\n\r\n// Returns the sorted set union of two arrays of strings\r\nfunction union(xs, ys) {\r\n var obj = {};\r\n for (var i = 0; i < xs.length; i++) {\r\n obj[xs[i]] = true;\r\n }\r\n for (var j = 0; j < ys.length; j++) {\r\n obj[ys[j]] = true;\r\n }\r\n var keys = [];\r\n for (var k in obj) {\r\n if ({}.hasOwnProperty.call(obj, k)) {\r\n keys.push(k);\r\n }\r\n }\r\n keys.sort();\r\n return keys;\r\n}\r\n\r\nfunction assertParser(p) {\r\n if (!isParser(p)) {\r\n throw new Error(\"not a parser: \" + p);\r\n }\r\n}\r\n\r\nfunction get(input, i) {\r\n if (typeof input === \"string\") {\r\n return input.charAt(i);\r\n }\r\n return input[i];\r\n}\r\n\r\n// TODO[ES5]: Switch to Array.isArray eventually.\r\nfunction assertArray(x) {\r\n if (!isArray(x)) {\r\n throw new Error(\"not an array: \" + x);\r\n }\r\n}\r\n\r\nfunction assertNumber(x) {\r\n if (typeof x !== \"number\") {\r\n throw new Error(\"not a number: \" + x);\r\n }\r\n}\r\n\r\nfunction assertRegexp(x) {\r\n if (!(x instanceof RegExp)) {\r\n throw new Error(\"not a regexp: \" + x);\r\n }\r\n var f = flags(x);\r\n for (var i = 0; i < f.length; i++) {\r\n var c = f.charAt(i);\r\n // Only allow regexp flags [imu] for now, since [g] and [y] specifically\r\n // mess up Parsimmon. If more non-stateful regexp flags are added in the\r\n // future, this will need to be revisited.\r\n if (c !== \"i\" && c !== \"m\" && c !== \"u\") {\r\n throw new Error('unsupported regexp flag \"' + c + '\": ' + x);\r\n }\r\n }\r\n}\r\n\r\nfunction assertFunction(x) {\r\n if (typeof x !== \"function\") {\r\n throw new Error(\"not a function: \" + x);\r\n }\r\n}\r\n\r\nfunction assertString(x) {\r\n if (typeof x !== \"string\") {\r\n throw new Error(\"not a string: \" + x);\r\n }\r\n}\r\n\r\n// -*- Error Formatting -*-\r\n\r\nvar linesBeforeStringError = 2;\r\nvar linesAfterStringError = 3;\r\nvar bytesPerLine = 8;\r\nvar bytesBefore = bytesPerLine * 5;\r\nvar bytesAfter = bytesPerLine * 4;\r\nvar defaultLinePrefix = \" \";\r\n\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n\r\nexport function formatExpected(expected) {\r\n if (expected.length === 1) {\r\n return \"Expected:\\n\\n\" + expected[0];\r\n }\r\n return \"Expected one of the following: \\n\\n\" + expected.join(\", \");\r\n}\r\n\r\nexport function leftPad(str, pad, char) {\r\n var add = pad - str.length;\r\n if (add <= 0) {\r\n return str;\r\n }\r\n return repeat(char, add) + str;\r\n}\r\n\r\nfunction toChunks(arr, chunkSize) {\r\n var length = arr.length;\r\n var chunks = [];\r\n var chunkIndex = 0;\r\n\r\n if (length <= chunkSize) {\r\n return [arr.slice()];\r\n }\r\n\r\n for (var i = 0; i < length; i++) {\r\n if (!chunks[chunkIndex]) {\r\n chunks.push([]);\r\n }\r\n\r\n chunks[chunkIndex].push(arr[i]);\r\n\r\n if ((i + 1) % chunkSize === 0) {\r\n chunkIndex++;\r\n }\r\n }\r\n\r\n return chunks;\r\n}\r\n\r\n// Get a range of indexes including `i`-th element and `before` and `after` amount of elements from `arr`.\r\nexport function rangeFromIndexAndOffsets(i, before, after, length) {\r\n return {\r\n // Guard against the negative upper bound for lines included in the output.\r\n from: i - before > 0 ? i - before : 0,\r\n to: i + after > length ? length : i + after\r\n };\r\n}\r\n\r\nexport function byteRangeToRange(byteRange) {\r\n // Exception for inputs smaller than `bytesPerLine`\r\n if (byteRange.from === 0 && byteRange.to === 1) {\r\n return {\r\n from: byteRange.from,\r\n to: byteRange.to\r\n };\r\n }\r\n\r\n return {\r\n from: byteRange.from / bytesPerLine,\r\n // Round `to`, so we don't get float if the amount of bytes is not divisible by `bytesPerLine`\r\n to: Math.floor(byteRange.to / bytesPerLine)\r\n };\r\n}\r\n\r\nexport function formatGot(input, error) {\r\n var index = error.index;\r\n var i = index.offset;\r\n\r\n var verticalMarkerLength = 1;\r\n var column;\r\n var lineWithErrorIndex;\r\n var lines;\r\n var lineRange;\r\n var lastLineNumberLabelLength;\r\n\r\n if (i === input.length) {\r\n return \"Got the end of the input\";\r\n }\r\n\r\n if (isBuffer(input)) {\r\n var byteLineWithErrorIndex = i - (i % bytesPerLine);\r\n var columnByteIndex = i - byteLineWithErrorIndex;\r\n var byteRange = rangeFromIndexAndOffsets(\r\n byteLineWithErrorIndex,\r\n bytesBefore,\r\n bytesAfter + bytesPerLine,\r\n input.length\r\n );\r\n var bytes = input.slice(byteRange.from, byteRange.to);\r\n var bytesInChunks = toChunks(bytes.toJSON().data, bytesPerLine);\r\n\r\n var byteLines = map(function(byteRow) {\r\n return map(function(byteValue) {\r\n // Prefix byte values with a `0` if they are shorter than 2 characters.\r\n return leftPad(byteValue.toString(16), 2, \"0\");\r\n }, byteRow);\r\n }, bytesInChunks);\r\n\r\n lineRange = byteRangeToRange(byteRange);\r\n lineWithErrorIndex = byteLineWithErrorIndex / bytesPerLine;\r\n column = columnByteIndex * 3;\r\n\r\n // Account for an extra space.\r\n if (columnByteIndex >= 4) {\r\n column += 1;\r\n }\r\n\r\n verticalMarkerLength = 2;\r\n lines = map(function(byteLine) {\r\n return byteLine.length <= 4\r\n ? byteLine.join(\" \")\r\n : byteLine.slice(0, 4).join(\" \") + \" \" + byteLine.slice(4).join(\" \");\r\n }, byteLines);\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n } else {\r\n var inputLines = input.split(/\\r\\n|[\\n\\r\\u2028\\u2029]/);\r\n column = index.column - 1;\r\n lineWithErrorIndex = index.line - 1;\r\n lineRange = rangeFromIndexAndOffsets(\r\n lineWithErrorIndex,\r\n linesBeforeStringError,\r\n linesAfterStringError,\r\n inputLines.length\r\n );\r\n\r\n lines = inputLines.slice(lineRange.from, lineRange.to);\r\n lastLineNumberLabelLength = lineRange.to.toString().length;\r\n }\r\n\r\n var lineWithErrorCurrentIndex = lineWithErrorIndex - lineRange.from;\r\n\r\n if (isBuffer(input)) {\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n }\r\n\r\n var linesWithLineNumbers = reduce(\r\n function(acc, lineSource, index) {\r\n var isLineWithError = index === lineWithErrorCurrentIndex;\r\n var prefix = isLineWithError ? \"> \" : defaultLinePrefix;\r\n var lineNumberLabel;\r\n\r\n if (isBuffer(input)) {\r\n lineNumberLabel = leftPad(\r\n ((lineRange.from + index) * 8).toString(16),\r\n lastLineNumberLabelLength,\r\n \"0\"\r\n );\r\n } else {\r\n lineNumberLabel = leftPad(\r\n (lineRange.from + index + 1).toString(),\r\n lastLineNumberLabelLength,\r\n \" \"\r\n );\r\n }\r\n\r\n return [].concat(\r\n acc,\r\n [prefix + lineNumberLabel + \" | \" + lineSource],\r\n isLineWithError\r\n ? [\r\n defaultLinePrefix +\r\n repeat(\" \", lastLineNumberLabelLength) +\r\n \" | \" +\r\n leftPad(\"\", column, \" \") +\r\n repeat(\"^\", verticalMarkerLength)\r\n ]\r\n : []\r\n );\r\n },\r\n [],\r\n lines\r\n );\r\n\r\n return linesWithLineNumbers.join(\"\\n\");\r\n}\r\n\r\nexport function formatError(input, error) {\r\n return [\r\n \"\\n\",\r\n \"-- PARSING FAILED \" + repeat(\"-\", 50),\r\n \"\\n\\n\",\r\n formatGot(input, error),\r\n \"\\n\\n\",\r\n formatExpected(error.expected),\r\n \"\\n\"\r\n ].join(\"\");\r\n}\r\n\r\nexport function flags(re) {\r\n var s = \"\" + re;\r\n return s.slice(s.lastIndexOf(\"/\") + 1);\r\n}\r\n\r\nexport function anchoredRegexp(re) {\r\n return RegExp(\"^(?:\" + re.source + \")\", flags(re));\r\n}\r\n\r\n// -*- Combinators -*-\r\n\r\nexport function seq() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = new Array(numParsers);\r\n for (var j = 0; j < numParsers; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n accum[j] = result.value;\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqObj() {\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var parsers = toArray(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var p = parsers[j];\r\n if (isParser(p)) {\r\n continue;\r\n }\r\n if (isArray(p)) {\r\n var isWellFormed =\r\n p.length === 2 && typeof p[0] === \"string\" && isParser(p[1]);\r\n if (isWellFormed) {\r\n var key = p[0];\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, key)) {\r\n throw new Error(\"seqObj: duplicate key \" + key);\r\n }\r\n seenKeys[key] = true;\r\n totalKeys++;\r\n continue;\r\n }\r\n }\r\n throw new Error(\r\n \"seqObj arguments must be parsers or [string, parser] array pairs.\"\r\n );\r\n }\r\n if (totalKeys === 0) {\r\n throw new Error(\"seqObj expects at least one named parser, found zero\");\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = {};\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var name;\r\n var parser;\r\n if (isArray(parsers[j])) {\r\n name = parsers[j][0];\r\n parser = parsers[j][1];\r\n } else {\r\n name = null;\r\n parser = parsers[j];\r\n }\r\n result = mergeReplies(parser._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n if (name) {\r\n accum[name] = result.value;\r\n }\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqMap() {\r\n var args = [].slice.call(arguments);\r\n if (args.length === 0) {\r\n throw new Error(\"seqMap needs at least one argument\");\r\n }\r\n var mapper = args.pop();\r\n assertFunction(mapper);\r\n return seq.apply(null, args).map(function(results) {\r\n return mapper.apply(null, results);\r\n });\r\n}\r\n\r\n// TODO[ES5]: Revisit this with Object.keys and .bind.\r\nexport function createLanguage(parsers) {\r\n var language = {};\r\n for (var key in parsers) {\r\n if ({}.hasOwnProperty.call(parsers, key)) {\r\n (function(key) {\r\n var func = function() {\r\n return parsers[key](language);\r\n };\r\n language[key] = lazy(func);\r\n })(key);\r\n }\r\n }\r\n return language;\r\n}\r\n\r\nexport function alt() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n if (numParsers === 0) {\r\n return fail(\"zero alternates\");\r\n }\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n for (var j = 0; j < parsers.length; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (result.status) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function sepBy(parser, separator) {\r\n // Argument asserted by sepBy1\r\n return sepBy1(parser, separator).or(succeed([]));\r\n}\r\n\r\nexport function sepBy1(parser, separator) {\r\n assertParser(parser);\r\n assertParser(separator);\r\n var pairs = separator.then(parser).many();\r\n return seqMap(parser, pairs, function(r, rs) {\r\n return [r].concat(rs);\r\n });\r\n}\r\n\r\n// -*- Core Parsing Methods -*-\r\n\r\n_.parse = function(input) {\r\n if (typeof input !== \"string\" && !isBuffer(input)) {\r\n throw new Error(\r\n \".parse must be called with a string or Buffer as its argument\"\r\n );\r\n }\r\n var result = this.skip(eof)._(input, 0);\r\n if (result.status) {\r\n return {\r\n status: true,\r\n value: result.value\r\n };\r\n }\r\n return {\r\n status: false,\r\n index: makeLineColumnIndex(input, result.furthest),\r\n expected: result.expected\r\n };\r\n};\r\n\r\n// -*- Other Methods -*-\r\n\r\n_.tryParse = function(str) {\r\n var result = this.parse(str);\r\n if (result.status) {\r\n return result.value;\r\n } else {\r\n var msg = formatError(str, result);\r\n var err = new Error(msg);\r\n err.type = \"ParsimmonError\";\r\n err.result = result;\r\n throw err;\r\n }\r\n};\r\n\r\n_.or = function(alternative) {\r\n return alt(this, alternative);\r\n};\r\n\r\n_.trim = function(parser) {\r\n return this.wrap(parser, parser);\r\n};\r\n\r\n_.wrap = function(leftParser, rightParser) {\r\n return seqMap(leftParser, this, rightParser, function(left, middle) {\r\n return middle;\r\n });\r\n};\r\n\r\n_.thru = function(wrapper) {\r\n return wrapper(this);\r\n};\r\n\r\n_.then = function(next) {\r\n assertParser(next);\r\n return seq(this, next).map(function(results) {\r\n return results[1];\r\n });\r\n};\r\n\r\n_.many = function() {\r\n var self = this;\r\n\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n\r\n for (;;) {\r\n result = mergeReplies(self._(input, i), result);\r\n if (result.status) {\r\n if (i === result.index) {\r\n throw new Error(\r\n \"infinite loop detected in .many() parser --- calling .many() on \" +\r\n \"a parser which can accept zero characters is usually the cause\"\r\n );\r\n }\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n }\r\n }\r\n });\r\n};\r\n\r\n_.tieWith = function(separator) {\r\n assertString(separator);\r\n return this.map(function(args) {\r\n assertArray(args);\r\n if (args.length) {\r\n assertString(args[0]);\r\n var s = args[0];\r\n for (var i = 1; i < args.length; i++) {\r\n assertString(args[i]);\r\n s += separator + args[i];\r\n }\r\n return s;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n};\r\n\r\n_.tie = function() {\r\n return this.tieWith(\"\");\r\n};\r\n\r\n_.times = function(min, max) {\r\n var self = this;\r\n if (arguments.length < 2) {\r\n max = min;\r\n }\r\n assertNumber(min);\r\n assertNumber(max);\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n var prevResult = undefined;\r\n for (var times = 0; times < min; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return prevResult;\r\n }\r\n }\r\n for (; times < max; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n break;\r\n }\r\n }\r\n return mergeReplies(makeSuccess(i, accum), prevResult);\r\n });\r\n};\r\n\r\n_.result = function(res) {\r\n return this.map(function() {\r\n return res;\r\n });\r\n};\r\n\r\n_.atMost = function(n) {\r\n return this.times(0, n);\r\n};\r\n\r\n_.atLeast = function(n) {\r\n return seqMap(this.times(n), this.many(), function(init, rest) {\r\n return init.concat(rest);\r\n });\r\n};\r\n\r\n_.map = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n return mergeReplies(makeSuccess(result.index, fn(result.value)), result);\r\n });\r\n};\r\n\r\n_.contramap = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self.parse(fn(input.slice(i)));\r\n if (!result.status) {\r\n return result;\r\n }\r\n return makeSuccess(i + input.length, result.value);\r\n });\r\n};\r\n\r\n_.promap = function(f, g) {\r\n assertFunction(f);\r\n assertFunction(g);\r\n return this.contramap(f).map(g);\r\n};\r\n\r\n_.skip = function(next) {\r\n return seq(this, next).map(function(results) {\r\n return results[0];\r\n });\r\n};\r\n\r\n_.mark = function() {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n start: start,\r\n value: value,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.node = function(name) {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n name: name,\r\n value: value,\r\n start: start,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.sepBy = function(separator) {\r\n return sepBy(this, separator);\r\n};\r\n\r\n_.sepBy1 = function(separator) {\r\n return sepBy1(this, separator);\r\n};\r\n\r\n_.lookahead = function(x) {\r\n return this.skip(lookahead(x));\r\n};\r\n\r\n_.notFollowedBy = function(x) {\r\n return this.skip(notFollowedBy(x));\r\n};\r\n\r\n_.desc = function(expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var reply = self._(input, i);\r\n if (!reply.status) {\r\n reply.expected = expected;\r\n }\r\n return reply;\r\n });\r\n};\r\n\r\n_.fallback = function(result) {\r\n return this.or(succeed(result));\r\n};\r\n\r\n_.ap = function(other) {\r\n return seqMap(other, this, function(f, x) {\r\n return f(x);\r\n });\r\n};\r\n\r\n_.chain = function(f) {\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n var nextParser = f(result.value);\r\n return mergeReplies(nextParser._(input, result.index), result);\r\n });\r\n};\r\n\r\n// -*- Constructors -*-\r\n\r\nexport function string(str) {\r\n assertString(str);\r\n var expected = \"'\" + str + \"'\";\r\n return Parsimmon(function(input, i) {\r\n var j = i + str.length;\r\n var head = input.slice(i, j);\r\n if (head === str) {\r\n return makeSuccess(j, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function byte(b) {\r\n ensureBuffer();\r\n assertNumber(b);\r\n if (b > 0xff) {\r\n throw new Error(\r\n \"Value specified to byte constructor (\" +\r\n b +\r\n \"=0x\" +\r\n b.toString(16) +\r\n \") is larger in value than a single byte.\"\r\n );\r\n }\r\n var expected = (b > 0xf ? \"0x\" : \"0x0\") + b.toString(16);\r\n return Parsimmon(function(input, i) {\r\n var head = get(input, i);\r\n if (head === b) {\r\n return makeSuccess(i + 1, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function regexp(re, group) {\r\n assertRegexp(re);\r\n if (arguments.length >= 2) {\r\n assertNumber(group);\r\n } else {\r\n group = 0;\r\n }\r\n var anchored = anchoredRegexp(re);\r\n var expected = \"\" + re;\r\n return Parsimmon(function(input, i) {\r\n var match = anchored.exec(input.slice(i));\r\n if (match) {\r\n if (0 <= group && group <= match.length) {\r\n var fullMatch = match[0];\r\n var groupMatch = match[group];\r\n return makeSuccess(i + fullMatch.length, groupMatch);\r\n }\r\n var message =\r\n \"valid match group (0 to \" + match.length + \") in \" + expected;\r\n return makeFailure(i, message);\r\n }\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function succeed(value) {\r\n return Parsimmon(function(input, i) {\r\n return makeSuccess(i, value);\r\n });\r\n}\r\n\r\nexport function fail(expected) {\r\n return Parsimmon(function(input, i) {\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function lookahead(x) {\r\n if (isParser(x)) {\r\n return Parsimmon(function(input, i) {\r\n var result = x._(input, i);\r\n result.index = i;\r\n result.value = \"\";\r\n return result;\r\n });\r\n } else if (typeof x === \"string\") {\r\n return lookahead(string(x));\r\n } else if (x instanceof RegExp) {\r\n return lookahead(regexp(x));\r\n }\r\n throw new Error(\"not a string, regexp, or parser: \" + x);\r\n}\r\n\r\nexport function notFollowedBy(parser) {\r\n assertParser(parser);\r\n return Parsimmon(function(input, i) {\r\n var result = parser._(input, i);\r\n var text = input.slice(i, result.index);\r\n return result.status\r\n ? makeFailure(i, 'not \"' + text + '\"')\r\n : makeSuccess(i, null);\r\n });\r\n}\r\n\r\nexport function test(predicate) {\r\n assertFunction(predicate);\r\n return Parsimmon(function(input, i) {\r\n var char = get(input, i);\r\n if (i < input.length && predicate(char)) {\r\n return makeSuccess(i + 1, char);\r\n } else {\r\n return makeFailure(i, \"a character/byte matching \" + predicate);\r\n }\r\n });\r\n}\r\n\r\nexport function oneOf(str) {\r\n var expected = str.split(\"\");\r\n for (var idx = 0; idx < expected.length; idx++) {\r\n expected[idx] = \"'\" + expected[idx] + \"'\";\r\n }\r\n return test(function(ch) {\r\n return str.indexOf(ch) >= 0;\r\n }).desc(expected);\r\n}\r\n\r\nexport function noneOf(str) {\r\n return test(function(ch) {\r\n return str.indexOf(ch) < 0;\r\n }).desc(\"none of '\" + str + \"'\");\r\n}\r\n\r\nexport function custom(parsingFunction) {\r\n return Parsimmon(parsingFunction(makeSuccess, makeFailure));\r\n}\r\n\r\n// TODO[ES5]: Improve error message using JSON.stringify eventually.\r\nexport function range(begin, end) {\r\n return test(function(ch) {\r\n return begin <= ch && ch <= end;\r\n }).desc(begin + \"-\" + end);\r\n}\r\n\r\nexport function takeWhile(predicate) {\r\n assertFunction(predicate);\r\n\r\n return Parsimmon(function(input, i) {\r\n var j = i;\r\n while (j < input.length && predicate(get(input, j))) {\r\n j++;\r\n }\r\n return makeSuccess(j, input.slice(i, j));\r\n });\r\n}\r\n\r\nexport function lazy(desc, f) {\r\n if (arguments.length < 2) {\r\n f = desc;\r\n desc = undefined;\r\n }\r\n\r\n var parser = Parsimmon(function(input, i) {\r\n parser._ = f()._;\r\n return parser._(input, i);\r\n });\r\n\r\n if (desc) {\r\n return parser.desc(desc);\r\n } else {\r\n return parser;\r\n }\r\n}\r\n\r\n// -*- Fantasy Land Extras -*-\r\n\r\nfunction empty() {\r\n return fail(\"fantasy-land/empty\");\r\n}\r\n\r\n_.concat = _.or;\r\n_.empty = empty;\r\n_.of = succeed;\r\n_[\"fantasy-land/ap\"] = _.ap;\r\n_[\"fantasy-land/chain\"] = _.chain;\r\n_[\"fantasy-land/concat\"] = _.concat;\r\n_[\"fantasy-land/empty\"] = _.empty;\r\n_[\"fantasy-land/of\"] = _.of;\r\n_[\"fantasy-land/map\"] = _.map;\r\n\r\n// -*- Base Parsers -*-\r\n\r\nexport const index = Parsimmon(function(input, i) {\r\n return makeSuccess(i, makeLineColumnIndex(input, i));\r\n});\r\n\r\nexport const any = Parsimmon(function(input, i) {\r\n if (i >= input.length) {\r\n return makeFailure(i, \"any character/byte\");\r\n }\r\n return makeSuccess(i + 1, get(input, i));\r\n});\r\n\r\nexport const all = Parsimmon(function(input, i) {\r\n return makeSuccess(input.length, input.slice(i));\r\n});\r\n\r\nexport const eof = Parsimmon(function(input, i) {\r\n if (i < input.length) {\r\n return makeFailure(i, \"EOF\");\r\n }\r\n return makeSuccess(i, null);\r\n});\r\n\r\nexport const digit = regexp(/[0-9]/).desc(\"a digit\");\r\nexport const digits = regexp(/[0-9]*/).desc(\"optional digits\");\r\nexport const letter = regexp(/[a-z]/i).desc(\"a letter\");\r\nexport const letters = regexp(/[a-z]*/i).desc(\"optional letters\");\r\nexport const optWhitespace = regexp(/\\s*/).desc(\"optional whitespace\");\r\nexport const whitespace = regexp(/\\s+/).desc(\"whitespace\");\r\nexport const cr = string(\"\\r\");\r\nexport const lf = string(\"\\n\");\r\nexport const crlf = string(\"\\r\\n\");\r\nexport const newline = alt(crlf, lf, cr).desc(\"newline\");\r\nexport const end = alt(newline, eof);","// https://github.com/MikeMcl/big.js/blob/01b3ce3a6b0ba7b42442ea48ec4ffc88d1669ec4/big.mjs\n/* tslint:disable */\nimport { combineHashCodes } from \"../Util\";\n// The shared prototype object.\nvar P = {\n GetHashCode() { return combineHashCodes([this.s, this.e].concat(this.c)); },\n Equals(x) { return !this.cmp(x); },\n CompareTo(x) { return this.cmp(x); },\n};\n/*\n * big.js v5.2.2\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\n * Copyright (c) 2018 Michael Mclaughlin \n * https://github.com/MikeMcl/big.js/LICENCE\n */\n/************************************** EDITABLE DEFAULTS *****************************************/\n// The default values below must be integers within the stated ranges.\n/*\n * The maximum number of decimal places (DP) of the results of operations involving division:\n * div and sqrt, and pow with negative exponents.\n */\nvar DP = 28, // 0 to MAX_DP\n/*\n * The rounding mode (RM) used when rounding to the above decimal places.\n *\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\n * 3 Away from zero. (ROUND_UP)\n */\nRM = 1, // 0, 1, 2 or 3\n// The maximum value of DP and Big.DP.\nMAX_DP = 1E6, // 0 to 1000000\n// The maximum magnitude of the exponent argument to the pow method.\nMAX_POWER = 1E6, // 1 to 1000000\n/*\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\n * (JavaScript numbers: -7)\n * -1000000 is the minimum recommended exponent value of a Big.\n */\nNE = -29, // 0 to -1000000\n/*\n * The positive exponent (PE) at and above which toString returns exponential notation.\n * (JavaScript numbers: 21)\n * 1000000 is the maximum recommended exponent value of a Big.\n * (This limit is not enforced or checked.)\n */\nPE = 29, // 0 to 1000000\n/**************************************************************************************************/\n// Error messages.\nNAME = '[big.js] ', INVALID = NAME + 'Invalid ', INVALID_DP = INVALID + 'decimal places', INVALID_RM = INVALID + 'rounding mode', DIV_BY_ZERO = NAME + 'Division by zero', UNDEFINED = void 0, NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\n/*\n * Create and return a Big constructor.\n *\n */\nfunction _Big_() {\n /*\n * The Big constructor and exported function.\n * Create and return a new instance of a Big number object.\n *\n * n {number|string|Big} A numeric value.\n */\n function Big(n) {\n var x = this;\n // Enable constructor usage without new.\n if (!(x instanceof Big))\n return n === UNDEFINED ? _Big_() : new Big(n);\n // Duplicate.\n if (n instanceof Big) {\n x.s = n.s;\n x.e = n.e;\n x.c = n.c.slice();\n normalize(x);\n }\n else {\n parse(x, n);\n }\n /*\n * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which\n * points to Object.\n */\n x.constructor = Big;\n }\n Big.prototype = P;\n Big.DP = DP;\n Big.RM = RM;\n Big.NE = NE;\n Big.PE = PE;\n Big.version = '5.2.2';\n return Big;\n}\nfunction normalize(x) {\n x = round(x, DP, 0);\n if (x.c.length > 1 && !x.c[0]) {\n let i = x.c.findIndex(x => x);\n x.c = x.c.slice(i);\n x.e = x.e - i;\n }\n}\n/*\n * Parse the number or string value passed to a Big constructor.\n *\n * x {Big} A Big number instance.\n * n {number|string} A numeric value.\n */\nfunction parse(x, n) {\n var e, i, nl;\n // Minus zero?\n if (n === 0 && 1 / n < 0)\n n = '-0';\n else if (!NUMERIC.test(n += ''))\n throw Error(INVALID + 'number');\n // Determine sign.\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\n // Decimal point?\n if ((e = n.indexOf('.')) > -1)\n n = n.replace('.', '');\n // Exponential form?\n if ((i = n.search(/e/i)) > 0) {\n // Determine exponent.\n if (e < 0)\n e = i;\n e += +n.slice(i + 1);\n n = n.substring(0, i);\n }\n else if (e < 0) {\n // Integer.\n e = n.length;\n }\n nl = n.length;\n // Determine leading zeros before decimal point.\n for (i = 0; i < e && i < nl && n.charAt(i) == '0';)\n ++i;\n // older version (ignores decimal point).\n // // Determine leading zeros.\n // for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\n if (i == nl) {\n // Zero.\n x.c = [x.e = 0];\n }\n else {\n x.e = e - i - 1;\n x.c = [];\n // Convert string to array of digits without leading zeros\n for (e = 0; i < nl;)\n x.c[e++] = +n.charAt(i++);\n // older version (doesn't keep trailing zeroes).\n // // Determine trailing zeros.\n // for (; nl > 0 && n.charAt(--nl) == '0';);\n // // Convert string to array of digits without leading/trailing zeros.\n // for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\n }\n x = round(x, Big.DP, Big.RM);\n return x;\n}\n/*\n * Round Big x to a maximum of dp decimal places using rounding mode rm.\n * Called by stringify, P.div, P.round and P.sqrt.\n *\n * x {Big} The Big to round.\n * dp {number} Integer, 0 to MAX_DP inclusive.\n * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP)\n * [more] {boolean} Whether the result of division was truncated.\n */\nfunction round(x, dp, rm, more) {\n var xc = x.c, i = x.e + dp + 1;\n if (i < xc.length) {\n if (rm === 1) {\n // xc[i] is the digit after the digit that may be rounded up.\n more = xc[i] >= 5;\n }\n else if (rm === 2) {\n more = xc[i] > 5 || xc[i] == 5 &&\n (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1);\n }\n else if (rm === 3) {\n more = more || !!xc[0];\n }\n else {\n more = false;\n if (rm !== 0)\n throw Error(INVALID_RM);\n }\n if (i < 1) {\n xc.length = 1;\n if (more) {\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\n x.e = -dp;\n xc[0] = 1;\n }\n else {\n // Zero.\n xc[0] = x.e = 0;\n }\n }\n else {\n // Remove any digits after the required decimal places.\n xc.length = i--;\n // Round up?\n if (more) {\n // Rounding up may mean the previous digit has to be rounded up.\n for (; ++xc[i] > 9;) {\n xc[i] = 0;\n if (!i--) {\n ++x.e;\n xc.unshift(1);\n }\n }\n }\n // Remove trailing zeros.\n for (i = xc.length; !xc[--i];)\n xc.pop();\n }\n }\n else if (rm < 0 || rm > 3 || rm !== ~~rm) {\n throw Error(INVALID_RM);\n }\n return x;\n}\n/*\n * Return a string representing the value of Big x in normal or exponential notation.\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\n *\n * x {Big}\n * id? {number} Caller id.\n * 1 toExponential\n * 2 toFixed\n * 3 toPrecision\n * 4 valueOf\n * n? {number|undefined} Caller's argument.\n * k? {number|undefined}\n */\nfunction stringify(x, id, n, k) {\n var e, s, Big = x.constructor, z = !x.c[0];\n if (n !== UNDEFINED) {\n if (n !== ~~n || n < (id == 3) || n > MAX_DP) {\n throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP);\n }\n x = new Big(x);\n // The index of the digit that may be rounded up.\n n = k - x.e;\n // Round?\n if (x.c.length > ++k)\n round(x, n, Big.RM);\n // toFixed: recalculate k as x.e may have changed if value rounded up.\n if (id == 2)\n k = x.e + n + 1;\n // Append zeros?\n for (; x.c.length < k;)\n x.c.push(0);\n }\n e = x.e;\n s = x.c.join('');\n n = s.length;\n // Exponential notation?\n if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) {\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\n // Normal notation.\n }\n else if (e < 0) {\n for (; ++e;)\n s = '0' + s;\n s = '0.' + s;\n }\n else if (e > 0) {\n if (++e > n)\n for (e -= n; e--;)\n s += '0';\n else if (e < n)\n s = s.slice(0, e) + '.' + s.slice(e);\n }\n else if (n > 1) {\n s = s.charAt(0) + '.' + s.slice(1);\n }\n return x.s < 0 && (!z || id == 4) ? '-' + s : s;\n}\n// Prototype/instance methods\n/*\n * Return a new Big whose value is the absolute value of this Big.\n */\nP.abs = function () {\n var x = new this.constructor(this);\n x.s = 1;\n return x;\n};\n/*\n * Return 1 if the value of this Big is greater than the value of Big y,\n * -1 if the value of this Big is less than the value of Big y, or\n * 0 if they have the same value.\n*/\nP.cmp = function (y) {\n var isneg, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e;\n // Either zero?\n if (!xc[0] || !yc[0])\n return !xc[0] ? !yc[0] ? 0 : -j : i;\n // Signs differ?\n if (i != j)\n return i;\n isneg = i < 0;\n // Compare exponents.\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n // Compare digit by digit.\n j = Math.max(xc.length, yc.length);\n for (i = 0; i < j; i++) {\n k = i < xc.length ? xc[i] : 0;\n l = i < yc.length ? yc[i] : 0;\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n }\n return 0;\n // old version (doesn't compare well trailing zeroes, e.g. 1.0 with 1.00)\n // j = (k = xc.length) < (l = yc.length) ? k : l;\n // // Compare digit by digit.\n // for (i = -1; ++i < j;) {\n // if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\n // }\n // // Compare lengths.\n // return k == l ? 0 : k > l ^ isneg ? 1 : -1;\n};\n/*\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.div = function (y) {\n var Big = this.constructor, x = new Big(this), y = new Big(y), a = x.c, // dividend\n b = y.c, // divisor\n k = x.s == y.s ? 1 : -1, dp = Big.DP;\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP)\n throw Error(INVALID_DP);\n // Divisor is zero?\n if (!b[0])\n throw Error(DIV_BY_ZERO);\n // Dividend is 0? Return +-0.\n if (!a[0])\n return new Big(k * 0);\n var bl, bt, n, cmp, ri, bz = b.slice(), ai = bl = b.length, al = a.length, r = a.slice(0, bl), // remainder\n rl = r.length, q = y, // quotient\n qc = q.c = [], qi = 0, d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result\n q.s = k;\n k = d < 0 ? 0 : d;\n // Create version of divisor with leading zero.\n bz.unshift(0);\n // Add zeros to make remainder as long as divisor.\n for (; rl++ < bl;)\n r.push(0);\n do {\n // n is how many times the divisor goes into current remainder.\n for (n = 0; n < 10; n++) {\n // Compare divisor and remainder.\n if (bl != (rl = r.length)) {\n cmp = bl > rl ? 1 : -1;\n }\n else {\n for (ri = -1, cmp = 0; ++ri < bl;) {\n if (b[ri] != r[ri]) {\n cmp = b[ri] > r[ri] ? 1 : -1;\n break;\n }\n }\n }\n // If divisor < remainder, subtract divisor from remainder.\n if (cmp < 0) {\n // Remainder can't be more than 1 digit longer than divisor.\n // Equalise lengths using divisor with extra leading zero?\n for (bt = rl == bl ? b : bz; rl;) {\n if (r[--rl] < bt[rl]) {\n ri = rl;\n for (; ri && !r[--ri];)\n r[ri] = 9;\n --r[ri];\n r[rl] += 10;\n }\n r[rl] -= bt[rl];\n }\n for (; !r[0];)\n r.shift();\n }\n else {\n break;\n }\n }\n // Add the digit n to the result array.\n qc[qi++] = cmp ? n : ++n;\n // Update the remainder.\n if (r[0] && cmp)\n r[rl] = a[ai] || 0;\n else\n r = [a[ai]];\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\n // Leading zero? Do not remove if result is simply zero (qi == 1).\n if (!qc[0] && qi != 1) {\n // There can't be more than one zero.\n qc.shift();\n q.e--;\n }\n // Round?\n if (qi > d)\n round(q, dp, Big.RM, r[0] !== UNDEFINED);\n return q;\n};\n/*\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\n */\nP.eq = function (y) {\n return !this.cmp(y);\n};\n/*\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\n * false.\n */\nP.gt = function (y) {\n return this.cmp(y) > 0;\n};\n/*\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\n * return false.\n */\nP.gte = function (y) {\n return this.cmp(y) > -1;\n};\n/*\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\n */\nP.lt = function (y) {\n return this.cmp(y) < 0;\n};\n/*\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\n * return false.\n */\nP.lte = function (y) {\n return this.cmp(y) < 1;\n};\n/*\n * Return a new Big whose value is the value of this Big minus the value of Big y.\n */\nP.minus = P.sub = function (y) {\n var i, j, t, xlty, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.plus(y);\n }\n var xc = x.c.slice(), xe = x.e, yc = y.c, ye = y.e;\n // Either zero?\n if (!xc[0] || !yc[0]) {\n // y is non-zero? x is non-zero? Or both are zero.\n return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0);\n }\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\n if (a = xe - ye) {\n if (xlty = a < 0) {\n a = -a;\n t = xc;\n }\n else {\n ye = xe;\n t = yc;\n }\n t.reverse();\n for (b = a; b--;)\n t.push(0);\n t.reverse();\n }\n else {\n // Exponents equal. Check digit by digit.\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\n for (a = b = 0; b < j; b++) {\n if (xc[b] != yc[b]) {\n xlty = xc[b] < yc[b];\n break;\n }\n }\n }\n // x < y? Point xc to the array of the bigger number.\n if (xlty) {\n t = xc;\n xc = yc;\n yc = t;\n y.s = -y.s;\n }\n /*\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\n * needs to start at yc.length.\n */\n if ((b = (j = yc.length) - (i = xc.length)) > 0)\n for (; b--;)\n xc[i++] = 0;\n // Subtract yc from xc.\n for (b = i; j > a;) {\n if (xc[--j] < yc[j]) {\n for (i = j; i && !xc[--i];)\n xc[i] = 9;\n --xc[i];\n xc[j] += 10;\n }\n xc[j] -= yc[j];\n }\n // Remove trailing zeros.\n for (; xc[--b] === 0;)\n xc.pop();\n // Remove leading zeros and adjust exponent accordingly.\n for (; xc[0] === 0;) {\n xc.shift();\n --ye;\n }\n if (!xc[0]) {\n // n - n = +0\n y.s = 1;\n // Result must be zero.\n xc = [ye = 0];\n }\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\n */\nP.mod = function (y) {\n var ygtx, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n if (!y.c[0])\n throw Error(DIV_BY_ZERO);\n x.s = y.s = 1;\n ygtx = y.cmp(x) == 1;\n x.s = a;\n y.s = b;\n if (ygtx)\n return new Big(x);\n a = Big.DP;\n b = Big.RM;\n Big.DP = Big.RM = 0;\n x = x.div(y);\n Big.DP = a;\n Big.RM = b;\n return this.minus(x.times(y));\n};\n/*\n * Return a new Big whose value is the value of this Big plus the value of Big y.\n */\nP.plus = P.add = function (y) {\n var t, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.minus(y);\n }\n var xe = x.e, xc = x.c, ye = y.e, yc = y.c;\n // Either zero? y is non-zero? x is non-zero? Or both are zero.\n if (!xc[0] || !yc[0])\n return yc[0] ? y : new Big(xc[0] ? x : a * 0);\n xc = xc.slice();\n // Prepend zeros to equalise exponents.\n // Note: reverse faster than unshifts.\n if (a = xe - ye) {\n if (a > 0) {\n ye = xe;\n t = yc;\n }\n else {\n a = -a;\n t = xc;\n }\n t.reverse();\n for (; a--;)\n t.push(0);\n t.reverse();\n }\n // Point xc to the longer array.\n if (xc.length - yc.length < 0) {\n t = yc;\n yc = xc;\n xc = t;\n }\n a = yc.length;\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\n for (b = 0; a; xc[a] %= 10)\n b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0;\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\n if (b) {\n xc.unshift(b);\n ++ye;\n }\n // Remove trailing zeros.\n for (a = xc.length; xc[--a] === 0;)\n xc.pop();\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a Big whose value is the value of this Big raised to the power n.\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\n * mode Big.RM.\n *\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\n */\nP.pow = function (n) {\n var Big = this.constructor, x = new Big(this), y = new Big(1), one = new Big(1), isneg = n < 0;\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER)\n throw Error(INVALID + 'exponent');\n if (isneg)\n n = -n;\n for (;;) {\n if (n & 1)\n y = y.times(x);\n n >>= 1;\n if (!n)\n break;\n x = x.times(x);\n }\n return isneg ? one.div(y) : y;\n};\n/*\n * Return a new Big whose value is the value of this Big rounded using rounding mode rm\n * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a\n * multiple of 10**-dp.\n * If dp is not specified, round to 0 decimal places.\n * If rm is not specified, use Big.RM.\n *\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\n * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP)\n */\nP.round = function (dp, rm) {\n var Big = this.constructor;\n if (dp === UNDEFINED)\n dp = 0;\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP)\n throw Error(INVALID_DP);\n return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm);\n};\n/*\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.sqrt = function () {\n var r, c, t, Big = this.constructor, x = new Big(this), s = x.s, e = x.e, half = new Big(0.5);\n // Zero?\n if (!x.c[0])\n return new Big(x);\n // Negative?\n if (s < 0)\n throw Error(NAME + 'No square root');\n // Estimate.\n s = Math.sqrt(x + '');\n // Math.sqrt underflow/overflow?\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\n if (s === 0 || s === 1 / 0) {\n c = x.c.join('');\n if (!(c.length + e & 1))\n c += '0';\n s = Math.sqrt(c);\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\n r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\n }\n else {\n r = new Big(s);\n }\n e = r.e + (Big.DP += 4);\n // Newton-Raphson iteration.\n do {\n t = r;\n r = half.times(t.plus(x.div(t)));\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\n return round(r, Big.DP -= 4, Big.RM);\n};\n/*\n * Return a new Big whose value is the value of this Big times the value of Big y.\n */\nP.times = P.mul = function (y) {\n var c, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, a = xc.length, b = yc.length, i = x.e, j = y.e;\n // Determine sign of result.\n y.s = x.s == y.s ? 1 : -1;\n // Return signed 0 if either 0.\n if (!xc[0] || !yc[0])\n return new Big(y.s * 0);\n // Initialise exponent of result as x.e + y.e.\n y.e = i + j;\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\n if (a < b) {\n c = xc;\n xc = yc;\n yc = c;\n j = a;\n a = b;\n b = j;\n }\n // Initialise coefficient array of result with zeros.\n for (c = new Array(j = a + b); j--;)\n c[j] = 0;\n // Multiply.\n // i is initially xc.length.\n for (i = b; i--;) {\n b = 0;\n // a is yc.length.\n for (j = a + i; j > i;) {\n // Current sum of products at this digit position, plus carry.\n b = c[j] + yc[i] * xc[j - i - 1] + b;\n c[j--] = b % 10;\n // carry\n b = b / 10 | 0;\n }\n c[j] = (c[j] + b) % 10;\n }\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\n if (b)\n ++y.e;\n else\n c.shift();\n // Remove trailing zeros.\n for (i = c.length; !c[--i];)\n c.pop();\n y.c = c;\n return y;\n};\n/*\n * Return a string representing the value of this Big in exponential notation to dp fixed decimal\n * places and rounded using Big.RM.\n *\n * dp? {number} Integer, 0 to MAX_DP inclusive.\n */\nP.toExponential = function (dp) {\n return stringify(this, 1, dp, dp);\n};\n/*\n * Return a string representing the value of this Big in normal notation to dp fixed decimal\n * places and rounded using Big.RM.\n *\n * dp? {number} Integer, 0 to MAX_DP inclusive.\n *\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\n */\nP.toFixed = function (dp) {\n return stringify(this, 2, dp, this.e + dp);\n};\n/*\n * Return a string representing the value of this Big rounded to sd significant digits using\n * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent\n * the integer part of the value in normal notation.\n *\n * sd {number} Integer, 1 to MAX_DP inclusive.\n */\nP.toPrecision = function (sd) {\n return stringify(this, 3, sd, sd - 1);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Omit the sign for negative zero.\n */\nP.toString = function () {\n return stringify(this);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Include the sign for negative zero.\n */\nP.valueOf = P.toJSON = function () {\n return stringify(this, 4);\n};\n// Export\nexport var Big = _Big_();\nexport default Big;\n//# sourceMappingURL=big.js.map","import Decimal from \"./lib/big\";\nexport default Decimal;\nexport const get_Zero = new Decimal(0);\nexport const get_One = new Decimal(1);\nexport const get_MinusOne = new Decimal(-1);\nexport const get_MaxValue = new Decimal(\"79228162514264337593543950335\");\nexport const get_MinValue = new Decimal(\"-79228162514264337593543950335\");\nexport function compare(x, y) {\n return x.cmp(y);\n}\nexport function equals(x, y) {\n return !x.cmp(y);\n}\nexport function abs(x) {\n return x.abs();\n}\nexport function round(x, digits = 0) {\n return x.round(digits, 2 /* ROUND_HALF_EVEN */);\n}\nexport function truncate(x) {\n return x.round(0, 0 /* ROUND_DOWN */);\n}\nexport function ceiling(x) {\n return x.round(0, x.cmp(0) >= 0 ? 3 /* ROUND_UP */ : 0 /* ROUND_DOWN */);\n}\nexport function floor(x) {\n return x.round(0, x.cmp(0) >= 0 ? 0 /* ROUND_DOWN */ : 3 /* ROUND_UP */);\n}\nexport function pow(x, n) {\n return x.pow(n);\n}\nexport function sqrt(x) {\n return x.sqrt();\n}\nexport function op_Addition(x, y) {\n return x.add(y);\n}\nexport function op_Subtraction(x, y) {\n return x.sub(y);\n}\nexport function op_Multiply(x, y) {\n return x.mul(y);\n}\nexport function op_Division(x, y) {\n return x.div(y);\n}\nexport function op_Modulus(x, y) {\n return x.mod(y);\n}\nexport function op_UnaryNegation(x) {\n const x2 = new Decimal(x);\n x2.s = -x2.s || 0;\n return x2;\n}\nexport const add = op_Addition;\nexport const subtract = op_Subtraction;\nexport const multiply = op_Multiply;\nexport const divide = op_Division;\nexport const remainder = op_Modulus;\nexport const negate = op_UnaryNegation;\nexport function toString(x) {\n return x.toString();\n}\nexport function tryParse(str) {\n try {\n return [true, new Decimal(str.trim())];\n }\n catch (_a) {\n return [false, get_Zero];\n }\n}\nexport function parse(str) {\n const [ok, value] = tryParse(str);\n if (ok) {\n return value;\n }\n else {\n throw new Error(\"Input string was not in a correct format.\");\n }\n}\nexport function toNumber(x) {\n return +x;\n}\nfunction decimalToHex(dec, bitSize) {\n const hex = new Uint8Array(bitSize / 4 | 0);\n let hexCount = 1;\n for (let d = 0; d < dec.length; d++) {\n let value = dec[d];\n for (let i = 0; i < hexCount; i++) {\n const digit = hex[i] * 10 + value | 0;\n hex[i] = digit & 0xF;\n value = digit >> 4;\n }\n if (value !== 0) {\n hex[hexCount++] = value;\n }\n }\n return hex.slice(0, hexCount); // digits in reverse order\n}\nfunction hexToDecimal(hex, bitSize) {\n const dec = new Uint8Array(bitSize * 301 / 1000 + 1 | 0);\n let decCount = 1;\n for (let d = hex.length - 1; d >= 0; d--) {\n let carry = hex[d];\n for (let i = 0; i < decCount; i++) {\n const val = dec[i] * 16 + carry | 0;\n dec[i] = (val % 10) | 0;\n carry = (val / 10) | 0;\n }\n while (carry > 0) {\n dec[decCount++] = (carry % 10) | 0;\n carry = (carry / 10) | 0;\n }\n }\n return dec.slice(0, decCount); // digits in reverse order\n}\nfunction setInt32Bits(hexDigits, bits, offset) {\n for (let i = 0; i < 8; i++) {\n hexDigits[offset + i] = (bits >> (i * 4)) & 0xF;\n }\n}\nfunction getInt32Bits(hexDigits, offset) {\n let bits = 0;\n for (let i = 0; i < 8; i++) {\n bits = bits | (hexDigits[offset + i] << (i * 4));\n }\n return bits;\n}\nexport function fromIntArray(bits) {\n return fromInts(bits[0], bits[1], bits[2], bits[3]);\n}\nexport function fromInts(low, mid, high, signExp) {\n const isNegative = signExp < 0;\n const scale = (signExp >> 16) & 0x7F;\n return fromParts(low, mid, high, isNegative, scale);\n}\nexport function fromParts(low, mid, high, isNegative, scale) {\n const bitSize = 96;\n const hexDigits = new Uint8Array(bitSize / 4);\n setInt32Bits(hexDigits, low, 0);\n setInt32Bits(hexDigits, mid, 8);\n setInt32Bits(hexDigits, high, 16);\n const decDigits = hexToDecimal(hexDigits, bitSize);\n scale = scale & 0x7F;\n const big = new Decimal(0);\n big.c = Array.from(decDigits.reverse());\n big.e = decDigits.length - scale - 1;\n big.s = isNegative ? -1 : 1;\n const d = new Decimal(big);\n return d;\n}\nexport function getBits(d) {\n const bitSize = 96;\n const decDigits = Uint8Array.from(d.c);\n const hexDigits = decimalToHex(decDigits, bitSize);\n const low = getInt32Bits(hexDigits, 0);\n const mid = getInt32Bits(hexDigits, 8);\n const high = getInt32Bits(hexDigits, 16);\n const decStr = d.toString();\n const dotPos = decStr.indexOf(\".\");\n const scale = dotPos < 0 ? 0 : decStr.length - dotPos - 1;\n const signExp = ((scale & 0x7F) << 16) | (d.s < 0 ? 0x80000000 : 0);\n return [low, mid, high, signExp];\n}\nexport function makeRangeStepFunction(step, last) {\n const stepComparedWithZero = step.cmp(get_Zero);\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n }\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return (x) => {\n const comparedWithLast = x.cmp(last);\n if ((stepGreaterThanZero && comparedWithLast <= 0)\n || (!stepGreaterThanZero && comparedWithLast >= 0)) {\n return [x, op_Addition(x, step)];\n }\n else {\n return undefined;\n }\n };\n}\n//# sourceMappingURL=Decimal.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hp-card-holder\",class:_vm.specialCardStyleClass},[(_vm.loaded)?_c('div',{staticClass:\"hp-card\"},[_c('div',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.title))]),_c('div',{staticClass:\"card-number\"},[(_vm.showIncidence)?_c('span',[_vm._v(_vm._s(Math.round(_vm.renderValues.lastDay.value / _vm.incidence)))]):_c('span',[_vm._v(_vm._s(_vm._f(\"number\")(_vm.renderValues.lastDay.value)))]),(_vm.field !== 'vaccination.administered2nd.toDate')?_c('div',{staticClass:\"card-percentage-diff\",class:_vm.diffClass},[_vm._v(\" \"+_vm._s(_vm._f(\"prefixDiff\")(_vm.renderValues.lastDay.percentDiff))+\"% \")]):_vm._e()]),_c('div',{staticClass:\"card-diff\",attrs:{\"id\":_vm.name}},[(_vm.field === 'vaccination.administered2nd.toDate')?_c('div',{staticClass:\"card-diff-item percent\"},[_c('div',{staticClass:\"trend-icon percent tests\"}),_c('span',{staticClass:\"percent tests\"},[_vm._v(_vm._s(Math.round(_vm.renderValues.lastDay.value / _vm.population * 100))+\"%\")])]):_vm._e(),(_vm.showIncidence)?_c('div',[_c('span',{staticClass:\"card-note\"},[_vm._v(_vm._s(_vm.$t('infocard.per100k'))+\" \")])]):_vm._e(),(_vm.showAbsolute)?_c('div',[_c('div',{staticClass:\"trend-icon\",class:[_vm.diffClass, _vm.iconClass]}),_c('span',{class:_vm.diffClass},[_vm._v(_vm._s(Math.abs(_vm.renderValues.lastDay.diff))+\" \")])]):_vm._e(),(_vm.showIn)?_c('div',{staticClass:\"card-diff-item\"},[_c('div',{staticClass:\"trend-icon in bad up\"}),(_vm.field === 'cases.active')?_c('span',{staticClass:\"in bad\"},[_vm._v(_vm._s(_vm.renderActiveValues(_vm.fieldNewCases).lastDay.value))]):_c('span',{staticClass:\"in bad\"},[_vm._v(_vm._s(_vm.renderTotalValues(_vm.totalIn)))])]):_vm._e(),(_vm.showOut)?_c('div',{staticClass:\"card-diff-item\"},[_c('div',{staticClass:\"trend-icon out good down\"}),(_vm.field === 'cases.active')?_c('span',{staticClass:\"out good\"},[_vm._v(_vm._s(_vm.renderActiveValues(_vm.fieldNewCases).lastDay.value - _vm.renderActiveValues(_vm.field).lastDay.diff - _vm.renderActiveValues(_vm.fieldDeceased).lastDay.value))]):_c('span',{staticClass:\"out good\"},[_vm._v(_vm._s(_vm.renderTotalValues(_vm.totalOut)))])]):_vm._e(),(_vm.showDeceased)?_c('div',{staticClass:\"card-diff-item\"},[_c('div',{staticClass:\"trend-icon deceased\"}),(_vm.field === 'cases.active')?_c('span',{staticClass:\"deceased\"},[_vm._v(_vm._s(_vm.renderActiveValues(_vm.fieldDeceased).lastDay.value))]):_c('span',{staticClass:\"deceased\"},[_vm._v(_vm._s(_vm.renderTotalValues(_vm.totalDeceased))+\" \")])]):_vm._e()]),(_vm.field === 'statePerTreatment.inHospital')?_c('div',{staticClass:\"card-title\",staticStyle:{\"font-weight\":\"300\"}},[_vm._v(\" \"+_vm._s(_vm.$t('noData.hospitals'))+\" \")]):_vm._e(),_c('div',{staticClass:\"data-time\"},[_vm._v(\" \"+_vm._s(_vm.$t('infocard.lastUpdated', { date: new Date(_vm.renderValues.lastDay.displayDate), }))+\" \")])]):_c('div',{staticClass:\"hp-card\"},[_c('div',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.title))]),_c('font-awesome-icon',{attrs:{\"icon\":\"spinner\",\"spin\":\"\"}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InfoCard.vue?vue&type=template&id=60bf4644&\"\nimport script from \"./InfoCard.vue?vue&type=script&lang=js&\"\nexport * from \"./InfoCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InfoCard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/gh-icon.250601a8.svg\";","import { declare, FSharpRef } from \"./Types.js\";\nimport { iterateIndexed, toIterator, getEnumerator, delay, collect, map, sumBy, iterate } from \"./Seq.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { equals, getItemFromDict, tryGetValue } from \"./Util.js\";\nimport { format } from \"./String.js\";\nexport const MutableMap$00602 = declare(function Fable_Collections_MutableMap(pairs, comparer) {\n const $this$$1 = this;\n const this$ = new FSharpRef(null);\n $this$$1.comparer = comparer;\n this$.contents = $this$$1;\n $this$$1.hashMap = new Map([]);\n $this$$1[\"init@20-1\"] = 1;\n iterate(function (pair) {\n MutableMap$00602$$Add$$5BDDA1(this$.contents, pair[0], pair[1]);\n }, pairs);\n void null;\n});\nexport function MutableMap$00602$reflection($gen$$4, $gen$$5) {\n return class_type(\"Fable.Collections.MutableMap`2\", [$gen$$4, $gen$$5], MutableMap$00602);\n}\nexport function MutableMap$00602$$$$002Ector$$6623D9B3(pairs, comparer) {\n return this instanceof MutableMap$00602 ? MutableMap$00602.call(this, pairs, comparer) : new MutableMap$00602(pairs, comparer);\n}\n\nfunction MutableMap$00602$$TryFindIndex$$2B595(this$$$1, k) {\n const h = this$$$1.comparer.GetHashCode(k) | 0;\n const matchValue = tryGetValue(this$$$1.hashMap, h, null);\n\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex(function (pair$$1) {\n return this$$$1.comparer.Equals(k, pair$$1[0]);\n })];\n } else {\n return [false, h, -1];\n }\n}\n\nexport function MutableMap$00602$$TryFind$$2B595(this$$$2, k$$1) {\n const matchValue$$1 = MutableMap$00602$$TryFindIndex$$2B595(this$$$2, k$$1);\n var $target$$10;\n\n if (matchValue$$1[0]) {\n if (matchValue$$1[2] > -1) {\n $target$$10 = 0;\n } else {\n $target$$10 = 1;\n }\n } else {\n $target$$10 = 1;\n }\n\n switch ($target$$10) {\n case 0:\n {\n return getItemFromDict(this$$$2.hashMap, matchValue$$1[1])[matchValue$$1[2]];\n }\n\n case 1:\n {\n return undefined;\n }\n }\n}\nexport function MutableMap$00602$$get_Comparer(this$$$3) {\n return this$$$3.comparer;\n}\nexport function MutableMap$00602$$Clear(this$$$4) {\n this$$$4.hashMap.clear();\n}\nexport function MutableMap$00602$$get_Count(this$$$5) {\n const source = this$$$5.hashMap.values();\n return sumBy(function projection(pairs$$2) {\n return pairs$$2.length;\n }, source, {\n GetZero() {\n return 0;\n },\n\n Add($x$$2, $y$$3) {\n return $x$$2 + $y$$3;\n }\n\n }) | 0;\n}\nexport function MutableMap$00602$$get_Item$$2B595(this$$$6, k$$2) {\n const matchValue$$2 = MutableMap$00602$$TryFind$$2B595(this$$$6, k$$2);\n\n if (matchValue$$2 != null) {\n const pair$$2 = matchValue$$2;\n return pair$$2[1];\n } else {\n throw new Error(\"The item was not found in collection\");\n }\n}\nexport function MutableMap$00602$$set_Item$$5BDDA1(this$$$7, k$$3, v) {\n const matchValue$$3 = MutableMap$00602$$TryFindIndex$$2B595(this$$$7, k$$3);\n var $target$$20;\n\n if (matchValue$$3[0]) {\n if (matchValue$$3[2] > -1) {\n $target$$20 = 0;\n } else {\n $target$$20 = 1;\n }\n } else {\n $target$$20 = 1;\n }\n\n switch ($target$$20) {\n case 0:\n {\n getItemFromDict(this$$$7.hashMap, matchValue$$3[1])[matchValue$$3[2]] = [k$$3, v];\n break;\n }\n\n case 1:\n {\n if (matchValue$$3[0]) {\n const value = void getItemFromDict(this$$$7.hashMap, matchValue$$3[1]).push([k$$3, v]);\n void null;\n } else {\n this$$$7.hashMap.set(matchValue$$3[1], [[k$$3, v]]);\n }\n\n break;\n }\n }\n}\nexport function MutableMap$00602$$Add$$5BDDA1(this$$$8, k$$4, v$$1) {\n const matchValue$$4 = MutableMap$00602$$TryFindIndex$$2B595(this$$$8, k$$4);\n var $target$$24;\n\n if (matchValue$$4[0]) {\n if (matchValue$$4[2] > -1) {\n $target$$24 = 0;\n } else {\n $target$$24 = 1;\n }\n } else {\n $target$$24 = 1;\n }\n\n switch ($target$$24) {\n case 0:\n {\n const msg = format(\"An item with the same key has already been added. Key: {0}\", k$$4);\n throw new Error(msg);\n break;\n }\n\n case 1:\n {\n if (matchValue$$4[0]) {\n const value$$1 = void getItemFromDict(this$$$8.hashMap, matchValue$$4[1]).push([k$$4, v$$1]);\n void null;\n } else {\n this$$$8.hashMap.set(matchValue$$4[1], [[k$$4, v$$1]]);\n }\n\n break;\n }\n }\n}\nexport function MutableMap$00602$$ContainsKey$$2B595(this$$$9, k$$5) {\n const matchValue$$5 = MutableMap$00602$$TryFindIndex$$2B595(this$$$9, k$$5);\n var $target$$27;\n\n if (matchValue$$5[0]) {\n if (matchValue$$5[2] > -1) {\n $target$$27 = 0;\n } else {\n $target$$27 = 1;\n }\n } else {\n $target$$27 = 1;\n }\n\n switch ($target$$27) {\n case 0:\n {\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\nexport function MutableMap$00602$$Remove$$2B595(this$$$10, k$$6) {\n const matchValue$$6 = MutableMap$00602$$TryFindIndex$$2B595(this$$$10, k$$6);\n var $target$$30;\n\n if (matchValue$$6[0]) {\n if (matchValue$$6[2] > -1) {\n $target$$30 = 0;\n } else {\n $target$$30 = 1;\n }\n } else {\n $target$$30 = 1;\n }\n\n switch ($target$$30) {\n case 0:\n {\n getItemFromDict(this$$$10.hashMap, matchValue$$6[1]).splice(matchValue$$6[2], 1);\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\n\nMutableMap$00602.prototype[Symbol.iterator] = function () {\n var elems;\n const this$$$11 = this;\n return toIterator((elems = delay(function () {\n return collect(function (pairs$$3) {\n return map(function (pair$$3) {\n return pair$$3;\n }, pairs$$3);\n }, this$$$11.hashMap.values());\n }), getEnumerator(elems)));\n};\n\nMutableMap$00602.prototype.Add = function (item) {\n const this$$$12 = this;\n MutableMap$00602$$Add$$5BDDA1(this$$$12, item[0], item[1]);\n};\n\nMutableMap$00602.prototype.Clear = function () {\n const this$$$13 = this;\n MutableMap$00602$$Clear(this$$$13);\n};\n\nMutableMap$00602.prototype.Contains = function (item$$1) {\n var p;\n const this$$$14 = this;\n const matchValue$$7 = MutableMap$00602$$TryFind$$2B595(this$$$14, item$$1[0]);\n var $target$$31;\n\n if (matchValue$$7 != null) {\n if (p = matchValue$$7, equals(p[1], item$$1[1])) {\n $target$$31 = 0;\n } else {\n $target$$31 = 1;\n }\n } else {\n $target$$31 = 1;\n }\n\n switch ($target$$31) {\n case 0:\n {\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n};\n\nMutableMap$00602.prototype.CopyTo = function (array, arrayIndex) {\n const this$$$15 = this;\n iterateIndexed(function action(i$$10, e) {\n array[arrayIndex + i$$10] = e;\n }, this$$$15);\n};\n\nObject.defineProperty(MutableMap$00602.prototype, \"Count\", {\n \"get\": function () {\n const this$$$16 = this;\n return MutableMap$00602$$get_Count(this$$$16) | 0;\n }\n});\nObject.defineProperty(MutableMap$00602.prototype, \"IsReadOnly\", {\n \"get\": function () {\n return false;\n }\n});\n\nMutableMap$00602.prototype.Remove = function (item$$2) {\n const this$$$18 = this;\n const matchValue$$8 = MutableMap$00602$$TryFind$$2B595(this$$$18, item$$2[0]);\n\n if (matchValue$$8 != null) {\n const pair$$4 = matchValue$$8;\n\n if (equals(pair$$4[1], item$$2[1])) {\n const value$$2 = MutableMap$00602$$Remove$$2B595(this$$$18, item$$2[0]);\n void value$$2;\n } else {\n void null;\n }\n\n return true;\n } else {\n return false;\n }\n};\n\nObject.defineProperty(MutableMap$00602.prototype, \"size\", {\n \"get\": function () {\n const this$$$19 = this;\n return MutableMap$00602$$get_Count(this$$$19) | 0;\n }\n});\n\nMutableMap$00602.prototype.clear = function () {\n const this$$$20 = this;\n MutableMap$00602$$Clear(this$$$20);\n};\n\nMutableMap$00602.prototype.delete = function (k$$7) {\n const this$$$21 = this;\n return MutableMap$00602$$Remove$$2B595(this$$$21, k$$7);\n};\n\nMutableMap$00602.prototype.entries = function () {\n const this$$$22 = this;\n return map(function mapping(x) {\n return x;\n }, this$$$22);\n};\n\nMutableMap$00602.prototype.get = function (k$$8) {\n const this$$$23 = this;\n return MutableMap$00602$$get_Item$$2B595(this$$$23, k$$8);\n};\n\nMutableMap$00602.prototype.has = function (k$$9) {\n const this$$$24 = this;\n return MutableMap$00602$$ContainsKey$$2B595(this$$$24, k$$9);\n};\n\nMutableMap$00602.prototype.keys = function () {\n const this$$$25 = this;\n return map(function mapping$$1(pair$$5) {\n return pair$$5[0];\n }, this$$$25);\n};\n\nMutableMap$00602.prototype.set = function (k$$10, v$$2) {\n const this$$$26 = this;\n MutableMap$00602$$set_Item$$5BDDA1(this$$$26, k$$10, v$$2);\n return this$$$26;\n};\n\nMutableMap$00602.prototype.values = function () {\n const this$$$27 = this;\n return map(function mapping$$2(pair$$6) {\n return pair$$6[1];\n }, this$$$27);\n};","import { Record, List, declare, Union } from \"./Types.js\";\nimport { class_type, record_type, bool_type, list_type, union_type, int32_type } from \"./Reflection.js\";\nimport { value as value$$3, some } from \"./Option.js\";\nimport { iterate as iterate$$1, empty as empty$$1, toIterator, map as map$$2, unfold, getEnumerator, fold as fold$$1 } from \"./Seq.js\";\nimport { compare, structuralHash, isDisposable } from \"./Util.js\";\nimport { join, format } from \"./String.js\";\nimport { MutableMap$00602$$$$002Ector$$6623D9B3 as MutableMap$002400602$0024$0024$0024$0024002Ector$0024$00246623D9B3 } from \"./MutableMap\";\nexport const MapTree$00602 = declare(function Map_MapTree(tag, name, ...fields) {\n this.tag = tag | 0;\n this.name = name;\n this.fields = fields;\n}, Union);\nexport function MapTree$00602$reflection($gen$$3, $gen$$4) {\n return union_type(\"Map.MapTree`2\", [$gen$$3, $gen$$4], MapTree$00602, () => [\"MapEmpty\", [\"MapOne\", [[\"Item1\", $gen$$3], [\"Item2\", $gen$$4]]], [\"MapNode\", [[\"Item1\", $gen$$3], [\"Item2\", $gen$$4], [\"Item3\", MapTree$00602$reflection($gen$$3, $gen$$4)], [\"Item4\", MapTree$00602$reflection($gen$$3, $gen$$4)], [\"Item5\", int32_type]]]]);\n}\nexport function MapTreeModule$$$sizeAux($acc$$5, $m$$6) {\n MapTreeModule$$$sizeAux: while (true) {\n const acc = $acc$$5,\n m = $m$$6;\n\n switch (m.tag) {\n case 1:\n {\n return acc + 1 | 0;\n }\n\n case 2:\n {\n $acc$$5 = MapTreeModule$$$sizeAux(acc + 1, m.fields[2]);\n $m$$6 = m.fields[3];\n continue MapTreeModule$$$sizeAux;\n }\n\n default:\n {\n return acc | 0;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$size(x) {\n return MapTreeModule$$$sizeAux(0, x);\n}\nexport function MapTreeModule$$$empty() {\n return new MapTree$00602(0, \"MapEmpty\");\n}\nexport function MapTreeModule$$$height(_arg1) {\n switch (_arg1.tag) {\n case 1:\n {\n return 1;\n }\n\n case 2:\n {\n return _arg1.fields[4] | 0;\n }\n\n default:\n {\n return 0;\n }\n }\n}\nexport function MapTreeModule$$$isEmpty(m$$1) {\n if (m$$1.tag === 0) {\n return true;\n } else {\n return false;\n }\n}\nexport function MapTreeModule$$$mk(l$$1, k, v, r$$1) {\n var $target$$14;\n\n if (l$$1.tag === 0) {\n if (r$$1.tag === 0) {\n $target$$14 = 0;\n } else {\n $target$$14 = 1;\n }\n } else {\n $target$$14 = 1;\n }\n\n switch ($target$$14) {\n case 0:\n {\n return new MapTree$00602(1, \"MapOne\", k, v);\n }\n\n case 1:\n {\n const hl = MapTreeModule$$$height(l$$1) | 0;\n const hr = MapTreeModule$$$height(r$$1) | 0;\n const m$$2 = (hl < hr ? hr : hl) | 0;\n return new MapTree$00602(2, \"MapNode\", k, v, l$$1, r$$1, m$$2 + 1);\n }\n }\n}\nexport function MapTreeModule$$$rebalance(t1, k$$1, v$$1, t2) {\n const t1h = MapTreeModule$$$height(t1) | 0;\n const t2h = MapTreeModule$$$height(t2) | 0;\n\n if (t2h > t1h + 2) {\n if (t2.tag === 2) {\n if (MapTreeModule$$$height(t2.fields[2]) > t1h + 1) {\n if (t2.fields[2].tag === 2) {\n return MapTreeModule$$$mk(MapTreeModule$$$mk(t1, k$$1, v$$1, t2.fields[2].fields[2]), t2.fields[2].fields[0], t2.fields[2].fields[1], MapTreeModule$$$mk(t2.fields[2].fields[3], t2.fields[0], t2.fields[1], t2.fields[3]));\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return MapTreeModule$$$mk(MapTreeModule$$$mk(t1, k$$1, v$$1, t2.fields[2]), t2.fields[0], t2.fields[1], t2.fields[3]);\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else if (t1h > t2h + 2) {\n if (t1.tag === 2) {\n if (MapTreeModule$$$height(t1.fields[3]) > t2h + 1) {\n if (t1.fields[3].tag === 2) {\n return MapTreeModule$$$mk(MapTreeModule$$$mk(t1.fields[2], t1.fields[0], t1.fields[1], t1.fields[3].fields[2]), t1.fields[3].fields[0], t1.fields[3].fields[1], MapTreeModule$$$mk(t1.fields[3].fields[3], k$$1, v$$1, t2));\n } else {\n throw new Error(\"re balance\");\n }\n } else {\n return MapTreeModule$$$mk(t1.fields[2], t1.fields[0], t1.fields[1], MapTreeModule$$$mk(t1.fields[3], k$$1, v$$1, t2));\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return MapTreeModule$$$mk(t1, k$$1, v$$1, t2);\n }\n}\nexport function MapTreeModule$$$add(comparer, k$$2, v$$2, m$$3) {\n switch (m$$3.tag) {\n case 1:\n {\n const c = comparer.Compare(k$$2, m$$3.fields[0]) | 0;\n\n if (c < 0) {\n return new MapTree$00602(2, \"MapNode\", k$$2, v$$2, new MapTree$00602(0, \"MapEmpty\"), m$$3, 2);\n } else if (c === 0) {\n return new MapTree$00602(1, \"MapOne\", k$$2, v$$2);\n } else {\n return new MapTree$00602(2, \"MapNode\", k$$2, v$$2, m$$3, new MapTree$00602(0, \"MapEmpty\"), 2);\n }\n }\n\n case 2:\n {\n const c$$1 = comparer.Compare(k$$2, m$$3.fields[0]) | 0;\n\n if (c$$1 < 0) {\n return MapTreeModule$$$rebalance(MapTreeModule$$$add(comparer, k$$2, v$$2, m$$3.fields[2]), m$$3.fields[0], m$$3.fields[1], m$$3.fields[3]);\n } else if (c$$1 === 0) {\n return new MapTree$00602(2, \"MapNode\", k$$2, v$$2, m$$3.fields[2], m$$3.fields[3], m$$3.fields[4]);\n } else {\n return MapTreeModule$$$rebalance(m$$3.fields[2], m$$3.fields[0], m$$3.fields[1], MapTreeModule$$$add(comparer, k$$2, v$$2, m$$3.fields[3]));\n }\n }\n\n default:\n {\n return new MapTree$00602(1, \"MapOne\", k$$2, v$$2);\n }\n }\n}\nexport function MapTreeModule$$$find($comparer$$1$$23, $k$$3$$24, $m$$4$$25) {\n MapTreeModule$$$find: while (true) {\n const comparer$$1 = $comparer$$1$$23,\n k$$3 = $k$$3$$24,\n m$$4 = $m$$4$$25;\n\n switch (m$$4.tag) {\n case 1:\n {\n const c$$2 = comparer$$1.Compare(k$$3, m$$4.fields[0]) | 0;\n\n if (c$$2 === 0) {\n return m$$4.fields[1];\n } else {\n throw new Error(\"key not found\");\n }\n }\n\n case 2:\n {\n const c$$3 = comparer$$1.Compare(k$$3, m$$4.fields[0]) | 0;\n\n if (c$$3 < 0) {\n $comparer$$1$$23 = comparer$$1;\n $k$$3$$24 = k$$3;\n $m$$4$$25 = m$$4.fields[2];\n continue MapTreeModule$$$find;\n } else if (c$$3 === 0) {\n return m$$4.fields[1];\n } else {\n $comparer$$1$$23 = comparer$$1;\n $k$$3$$24 = k$$3;\n $m$$4$$25 = m$$4.fields[3];\n continue MapTreeModule$$$find;\n }\n }\n\n default:\n {\n throw new Error(\"key not found\");\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$tryFind($comparer$$2$$26, $k$$4$$27, $m$$5$$28) {\n MapTreeModule$$$tryFind: while (true) {\n const comparer$$2 = $comparer$$2$$26,\n k$$4 = $k$$4$$27,\n m$$5 = $m$$5$$28;\n\n switch (m$$5.tag) {\n case 1:\n {\n const c$$4 = comparer$$2.Compare(k$$4, m$$5.fields[0]) | 0;\n\n if (c$$4 === 0) {\n return some(m$$5.fields[1]);\n } else {\n return undefined;\n }\n }\n\n case 2:\n {\n const c$$5 = comparer$$2.Compare(k$$4, m$$5.fields[0]) | 0;\n\n if (c$$5 < 0) {\n $comparer$$2$$26 = comparer$$2;\n $k$$4$$27 = k$$4;\n $m$$5$$28 = m$$5.fields[2];\n continue MapTreeModule$$$tryFind;\n } else if (c$$5 === 0) {\n return some(m$$5.fields[1]);\n } else {\n $comparer$$2$$26 = comparer$$2;\n $k$$4$$27 = k$$4;\n $m$$5$$28 = m$$5.fields[3];\n continue MapTreeModule$$$tryFind;\n }\n }\n\n default:\n {\n return undefined;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$partition1(comparer$$3, f, k$$5, v$$3, acc1, acc2) {\n if (f(k$$5, v$$3)) {\n return [MapTreeModule$$$add(comparer$$3, k$$5, v$$3, acc1), acc2];\n } else {\n return [acc1, MapTreeModule$$$add(comparer$$3, k$$5, v$$3, acc2)];\n }\n}\nexport function MapTreeModule$$$partitionAux($comparer$$4$$35, $f$$1$$36, $s$$37, $acc_0$$38, $acc_1$$39) {\n MapTreeModule$$$partitionAux: while (true) {\n const comparer$$4 = $comparer$$4$$35,\n f$$1 = $f$$1$$36,\n s = $s$$37,\n acc_0 = $acc_0$$38,\n acc_1 = $acc_1$$39;\n\n switch (s.tag) {\n case 1:\n {\n return MapTreeModule$$$partition1(comparer$$4, f$$1, s.fields[0], s.fields[1], acc_0, acc_1);\n }\n\n case 2:\n {\n const acc$$2 = MapTreeModule$$$partitionAux(comparer$$4, f$$1, s.fields[3], acc_0, acc_1);\n const acc$$3 = MapTreeModule$$$partition1(comparer$$4, f$$1, s.fields[0], s.fields[1], acc$$2[0], acc$$2[1]);\n $comparer$$4$$35 = comparer$$4;\n $f$$1$$36 = f$$1;\n $s$$37 = s.fields[2];\n $acc_0$$38 = acc$$3[0];\n $acc_1$$39 = acc$$3[1];\n continue MapTreeModule$$$partitionAux;\n }\n\n default:\n {\n return [acc_0, acc_1];\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$partition(comparer$$5, f$$2, s$$1) {\n return MapTreeModule$$$partitionAux(comparer$$5, f$$2, s$$1, MapTreeModule$$$empty(), MapTreeModule$$$empty());\n}\nexport function MapTreeModule$$$filter1(comparer$$6, f$$3, k$$8, v$$6, acc$$4) {\n if (f$$3(k$$8, v$$6)) {\n return MapTreeModule$$$add(comparer$$6, k$$8, v$$6, acc$$4);\n } else {\n return acc$$4;\n }\n}\nexport function MapTreeModule$$$filterAux($comparer$$7$$48, $f$$4$$49, $s$$2$$50, $acc$$5$$51) {\n MapTreeModule$$$filterAux: while (true) {\n const comparer$$7 = $comparer$$7$$48,\n f$$4 = $f$$4$$49,\n s$$2 = $s$$2$$50,\n acc$$5 = $acc$$5$$51;\n\n switch (s$$2.tag) {\n case 1:\n {\n return MapTreeModule$$$filter1(comparer$$7, f$$4, s$$2.fields[0], s$$2.fields[1], acc$$5);\n }\n\n case 2:\n {\n const acc$$6 = MapTreeModule$$$filterAux(comparer$$7, f$$4, s$$2.fields[2], acc$$5);\n const acc$$7 = MapTreeModule$$$filter1(comparer$$7, f$$4, s$$2.fields[0], s$$2.fields[1], acc$$6);\n $comparer$$7$$48 = comparer$$7;\n $f$$4$$49 = f$$4;\n $s$$2$$50 = s$$2.fields[3];\n $acc$$5$$51 = acc$$7;\n continue MapTreeModule$$$filterAux;\n }\n\n default:\n {\n return acc$$5;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$filter(comparer$$8, f$$5, s$$3) {\n return MapTreeModule$$$filterAux(comparer$$8, f$$5, s$$3, MapTreeModule$$$empty());\n}\nexport function MapTreeModule$$$spliceOutSuccessor(m$$6) {\n switch (m$$6.tag) {\n case 1:\n {\n return [m$$6.fields[0], m$$6.fields[1], new MapTree$00602(0, \"MapEmpty\")];\n }\n\n case 2:\n {\n if (m$$6.fields[2].tag === 0) {\n return [m$$6.fields[0], m$$6.fields[1], m$$6.fields[3]];\n } else {\n const patternInput = MapTreeModule$$$spliceOutSuccessor(m$$6.fields[2]);\n return [patternInput[0], patternInput[1], MapTreeModule$$$mk(patternInput[2], m$$6.fields[0], m$$6.fields[1], m$$6.fields[3])];\n }\n }\n\n default:\n {\n throw new Error(\"internal error: Map.spliceOutSuccessor\");\n }\n }\n}\nexport function MapTreeModule$$$remove(comparer$$9, k$$11, m$$7) {\n switch (m$$7.tag) {\n case 1:\n {\n const c$$6 = comparer$$9.Compare(k$$11, m$$7.fields[0]) | 0;\n\n if (c$$6 === 0) {\n return new MapTree$00602(0, \"MapEmpty\");\n } else {\n return m$$7;\n }\n }\n\n case 2:\n {\n const c$$7 = comparer$$9.Compare(k$$11, m$$7.fields[0]) | 0;\n\n if (c$$7 < 0) {\n return MapTreeModule$$$rebalance(MapTreeModule$$$remove(comparer$$9, k$$11, m$$7.fields[2]), m$$7.fields[0], m$$7.fields[1], m$$7.fields[3]);\n } else if (c$$7 === 0) {\n if (m$$7.fields[2].tag === 0) {\n return m$$7.fields[3];\n } else if (m$$7.fields[3].tag === 0) {\n return m$$7.fields[2];\n } else {\n const patternInput$$1 = MapTreeModule$$$spliceOutSuccessor(m$$7.fields[3]);\n return MapTreeModule$$$mk(m$$7.fields[2], patternInput$$1[0], patternInput$$1[1], patternInput$$1[2]);\n }\n } else {\n return MapTreeModule$$$rebalance(m$$7.fields[2], m$$7.fields[0], m$$7.fields[1], MapTreeModule$$$remove(comparer$$9, k$$11, m$$7.fields[3]));\n }\n }\n\n default:\n {\n return MapTreeModule$$$empty();\n }\n }\n}\nexport function MapTreeModule$$$mem($comparer$$10$$59, $k$$12$$60, $m$$8$$61) {\n MapTreeModule$$$mem: while (true) {\n const comparer$$10 = $comparer$$10$$59,\n k$$12 = $k$$12$$60,\n m$$8 = $m$$8$$61;\n\n switch (m$$8.tag) {\n case 1:\n {\n return comparer$$10.Compare(k$$12, m$$8.fields[0]) === 0;\n }\n\n case 2:\n {\n const c$$8 = comparer$$10.Compare(k$$12, m$$8.fields[0]) | 0;\n\n if (c$$8 < 0) {\n $comparer$$10$$59 = comparer$$10;\n $k$$12$$60 = k$$12;\n $m$$8$$61 = m$$8.fields[2];\n continue MapTreeModule$$$mem;\n } else if (c$$8 === 0) {\n return true;\n } else {\n $comparer$$10$$59 = comparer$$10;\n $k$$12$$60 = k$$12;\n $m$$8$$61 = m$$8.fields[3];\n continue MapTreeModule$$$mem;\n }\n }\n\n default:\n {\n return false;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$iter($f$$6$$62, $m$$9$$63) {\n MapTreeModule$$$iter: while (true) {\n const f$$6 = $f$$6$$62,\n m$$9 = $m$$9$$63;\n\n switch (m$$9.tag) {\n case 1:\n {\n f$$6(m$$9.fields[0], m$$9.fields[1]);\n break;\n }\n\n case 2:\n {\n MapTreeModule$$$iter(f$$6, m$$9.fields[2]);\n f$$6(m$$9.fields[0], m$$9.fields[1]);\n $f$$6$$62 = f$$6;\n $m$$9$$63 = m$$9.fields[3];\n continue MapTreeModule$$$iter;\n break;\n }\n\n default:\n {\n void null;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$tryPick($f$$7$$64, $m$$10$$65) {\n MapTreeModule$$$tryPick: while (true) {\n const f$$7 = $f$$7$$64,\n m$$10 = $m$$10$$65;\n\n switch (m$$10.tag) {\n case 1:\n {\n return f$$7(m$$10.fields[0], m$$10.fields[1]);\n }\n\n case 2:\n {\n const matchValue$$2 = MapTreeModule$$$tryPick(f$$7, m$$10.fields[2]);\n\n if (matchValue$$2 == null) {\n const matchValue$$3 = f$$7(m$$10.fields[0], m$$10.fields[1]);\n\n if (matchValue$$3 == null) {\n $f$$7$$64 = f$$7;\n $m$$10$$65 = m$$10.fields[3];\n continue MapTreeModule$$$tryPick;\n } else {\n return matchValue$$3;\n }\n } else {\n return matchValue$$2;\n }\n }\n\n default:\n {\n return undefined;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$exists($f$$8$$66, $m$$11$$67) {\n MapTreeModule$$$exists: while (true) {\n const f$$8 = $f$$8$$66,\n m$$11 = $m$$11$$67;\n\n switch (m$$11.tag) {\n case 1:\n {\n return f$$8(m$$11.fields[0], m$$11.fields[1]);\n }\n\n case 2:\n {\n if (MapTreeModule$$$exists(f$$8, m$$11.fields[2]) ? true : f$$8(m$$11.fields[0], m$$11.fields[1])) {\n return true;\n } else {\n $f$$8$$66 = f$$8;\n $m$$11$$67 = m$$11.fields[3];\n continue MapTreeModule$$$exists;\n }\n }\n\n default:\n {\n return false;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$forall($f$$9$$68, $m$$12$$69) {\n MapTreeModule$$$forall: while (true) {\n const f$$9 = $f$$9$$68,\n m$$12 = $m$$12$$69;\n\n switch (m$$12.tag) {\n case 1:\n {\n return f$$9(m$$12.fields[0], m$$12.fields[1]);\n }\n\n case 2:\n {\n if (MapTreeModule$$$forall(f$$9, m$$12.fields[2]) ? f$$9(m$$12.fields[0], m$$12.fields[1]) : false) {\n $f$$9$$68 = f$$9;\n $m$$12$$69 = m$$12.fields[3];\n continue MapTreeModule$$$forall;\n } else {\n return false;\n }\n }\n\n default:\n {\n return true;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$map(f$$10, m$$13) {\n switch (m$$13.tag) {\n case 1:\n {\n return new MapTree$00602(1, \"MapOne\", m$$13.fields[0], f$$10(m$$13.fields[1]));\n }\n\n case 2:\n {\n const l2 = MapTreeModule$$$map(f$$10, m$$13.fields[2]);\n const v2$$16 = f$$10(m$$13.fields[1]);\n const r2 = MapTreeModule$$$map(f$$10, m$$13.fields[3]);\n return new MapTree$00602(2, \"MapNode\", m$$13.fields[0], v2$$16, l2, r2, m$$13.fields[4]);\n }\n\n default:\n {\n return MapTreeModule$$$empty();\n }\n }\n}\nexport function MapTreeModule$$$mapi(f$$11, m$$14) {\n switch (m$$14.tag) {\n case 1:\n {\n return new MapTree$00602(1, \"MapOne\", m$$14.fields[0], f$$11(m$$14.fields[0], m$$14.fields[1]));\n }\n\n case 2:\n {\n const l2$$1 = MapTreeModule$$$mapi(f$$11, m$$14.fields[2]);\n const v2$$17 = f$$11(m$$14.fields[0], m$$14.fields[1]);\n const r2$$1 = MapTreeModule$$$mapi(f$$11, m$$14.fields[3]);\n return new MapTree$00602(2, \"MapNode\", m$$14.fields[0], v2$$17, l2$$1, r2$$1, m$$14.fields[4]);\n }\n\n default:\n {\n return MapTreeModule$$$empty();\n }\n }\n}\nexport function MapTreeModule$$$foldBack($f$$12$$74, $m$$15$$75, $x$$1$$76) {\n MapTreeModule$$$foldBack: while (true) {\n const f$$12 = $f$$12$$74,\n m$$15 = $m$$15$$75,\n x$$1 = $x$$1$$76;\n\n switch (m$$15.tag) {\n case 1:\n {\n return f$$12(m$$15.fields[0], m$$15.fields[1], x$$1);\n }\n\n case 2:\n {\n const x$$2 = MapTreeModule$$$foldBack(f$$12, m$$15.fields[3], x$$1);\n const x$$3 = f$$12(m$$15.fields[0], m$$15.fields[1], x$$2);\n $f$$12$$74 = f$$12;\n $m$$15$$75 = m$$15.fields[2];\n $x$$1$$76 = x$$3;\n continue MapTreeModule$$$foldBack;\n }\n\n default:\n {\n return x$$1;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$fold($f$$13$$77, $x$$4$$78, $m$$16$$79) {\n MapTreeModule$$$fold: while (true) {\n const f$$13 = $f$$13$$77,\n x$$4 = $x$$4$$78,\n m$$16 = $m$$16$$79;\n\n switch (m$$16.tag) {\n case 1:\n {\n return f$$13(x$$4, m$$16.fields[0], m$$16.fields[1]);\n }\n\n case 2:\n {\n const x$$5 = MapTreeModule$$$fold(f$$13, x$$4, m$$16.fields[2]);\n const x$$6 = f$$13(x$$5, m$$16.fields[0], m$$16.fields[1]);\n $f$$13$$77 = f$$13;\n $x$$4$$78 = x$$6;\n $m$$16$$79 = m$$16.fields[3];\n continue MapTreeModule$$$fold;\n }\n\n default:\n {\n return x$$4;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$foldFromTo(comparer$$11, lo, hi, f$$14, m$$17, x$$7) {\n switch (m$$17.tag) {\n case 1:\n {\n const cLoKey = comparer$$11.Compare(lo, m$$17.fields[0]) | 0;\n const cKeyHi = comparer$$11.Compare(m$$17.fields[0], hi) | 0;\n const x$$8 = (cLoKey <= 0 ? cKeyHi <= 0 : false) ? f$$14(m$$17.fields[0], m$$17.fields[1], x$$7) : x$$7;\n return x$$8;\n }\n\n case 2:\n {\n const cLoKey$$1 = comparer$$11.Compare(lo, m$$17.fields[0]) | 0;\n const cKeyHi$$1 = comparer$$11.Compare(m$$17.fields[0], hi) | 0;\n const x$$9 = cLoKey$$1 < 0 ? MapTreeModule$$$foldFromTo(comparer$$11, lo, hi, f$$14, m$$17.fields[2], x$$7) : x$$7;\n const x$$10 = (cLoKey$$1 <= 0 ? cKeyHi$$1 <= 0 : false) ? f$$14(m$$17.fields[0], m$$17.fields[1], x$$9) : x$$9;\n const x$$11 = cKeyHi$$1 < 0 ? MapTreeModule$$$foldFromTo(comparer$$11, lo, hi, f$$14, m$$17.fields[3], x$$10) : x$$10;\n return x$$11;\n }\n\n default:\n {\n return x$$7;\n }\n }\n}\nexport function MapTreeModule$$$foldSection(comparer$$12, lo$$1, hi$$1, f$$15, m$$18, x$$12) {\n if (comparer$$12.Compare(lo$$1, hi$$1) === 1) {\n return x$$12;\n } else {\n return MapTreeModule$$$foldFromTo(comparer$$12, lo$$1, hi$$1, f$$15, m$$18, x$$12);\n }\n}\nexport function MapTreeModule$$$loop($m$$19$$92, $acc$$8$$93) {\n MapTreeModule$$$loop: while (true) {\n const m$$19 = $m$$19$$92,\n acc$$8 = $acc$$8$$93;\n\n switch (m$$19.tag) {\n case 1:\n {\n return new List([m$$19.fields[0], m$$19.fields[1]], acc$$8);\n }\n\n case 2:\n {\n $m$$19$$92 = m$$19.fields[2];\n $acc$$8$$93 = new List([m$$19.fields[0], m$$19.fields[1]], MapTreeModule$$$loop(m$$19.fields[3], acc$$8));\n continue MapTreeModule$$$loop;\n }\n\n default:\n {\n return acc$$8;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$toList(m$$20) {\n return MapTreeModule$$$loop(m$$20, new List());\n}\nexport function MapTreeModule$$$ofList(comparer$$13, l$$20) {\n return fold$$1(function (acc$$9, tupledArg) {\n return MapTreeModule$$$add(comparer$$13, tupledArg[0], tupledArg[1], acc$$9);\n }, MapTreeModule$$$empty(), l$$20);\n}\nexport function MapTreeModule$$$mkFromEnumerator($comparer$$14$$97, $acc$$10$$98, $e$$99) {\n MapTreeModule$$$mkFromEnumerator: while (true) {\n const comparer$$14 = $comparer$$14$$97,\n acc$$10 = $acc$$10$$98,\n e = $e$$99;\n\n if (e.MoveNext()) {\n const patternInput$$2 = e.Current;\n $comparer$$14$$97 = comparer$$14;\n $acc$$10$$98 = MapTreeModule$$$add(comparer$$14, patternInput$$2[0], patternInput$$2[1], acc$$10);\n $e$$99 = e;\n continue MapTreeModule$$$mkFromEnumerator;\n } else {\n return acc$$10;\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$ofArray(comparer$$15, arr) {\n let res$$2 = MapTreeModule$$$empty();\n\n for (let i = 0; i <= arr.length - 1; i++) {\n const patternInput$$3 = arr[i];\n res$$2 = MapTreeModule$$$add(comparer$$15, patternInput$$3[0], patternInput$$3[1], res$$2);\n }\n\n return res$$2;\n}\nexport function MapTreeModule$$$ofSeq(comparer$$16, c$$9) {\n const ie = getEnumerator(c$$9);\n\n try {\n return MapTreeModule$$$mkFromEnumerator(comparer$$16, MapTreeModule$$$empty(), ie);\n } finally {\n if (isDisposable(ie)) {\n ie.Dispose();\n } else {\n void null;\n }\n }\n}\nexport function MapTreeModule$$$copyToArray(s$$4, arr$$1, i$$1) {\n let j = i$$1 | 0;\n MapTreeModule$$$iter(function f$$16(x$$15, y$$2) {\n arr$$1[j] = [x$$15, y$$2];\n j = j + 1;\n }, s$$4);\n}\nexport const MapTreeModule$002EMapIterator$00602 = declare(function Map_MapTreeModule_MapIterator(stack, started) {\n this.stack = stack;\n this.started = started;\n}, Record);\nexport function MapTreeModule$002EMapIterator$00602$reflection($gen$$109, $gen$$110) {\n return record_type(\"Map.MapTreeModule.MapIterator`2\", [$gen$$109, $gen$$110], MapTreeModule$002EMapIterator$00602, () => [[\"stack\", list_type(MapTree$00602$reflection($gen$$109, $gen$$110))], [\"started\", bool_type]]);\n}\nexport function MapTreeModule$$$collapseLHS($stack$$111) {\n MapTreeModule$$$collapseLHS: while (true) {\n const stack = $stack$$111;\n\n if (stack.tail != null) {\n if (stack.head.tag === 1) {\n return stack;\n } else if (stack.head.tag === 2) {\n $stack$$111 = new List(stack.head.fields[2], new List(new MapTree$00602(1, \"MapOne\", stack.head.fields[0], stack.head.fields[1]), new List(stack.head.fields[3], stack.tail)));\n continue MapTreeModule$$$collapseLHS;\n } else {\n $stack$$111 = stack.tail;\n continue MapTreeModule$$$collapseLHS;\n }\n } else {\n return new List();\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$mkIterator(s$$5) {\n return new MapTreeModule$002EMapIterator$00602(MapTreeModule$$$collapseLHS(new List(s$$5, new List())), false);\n}\nexport function MapTreeModule$$$notStarted() {\n throw new Error(\"enumeration not started\");\n}\nexport function MapTreeModule$$$alreadyFinished() {\n throw new Error(\"enumeration already finished\");\n}\nexport function MapTreeModule$$$current(i$$2) {\n if (i$$2.started) {\n const matchValue$$4 = i$$2.stack;\n\n if (matchValue$$4.tail == null) {\n return MapTreeModule$$$alreadyFinished();\n } else if (matchValue$$4.head.tag === 1) {\n return [matchValue$$4.head.fields[0], matchValue$$4.head.fields[1]];\n } else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n } else {\n return MapTreeModule$$$notStarted();\n }\n}\nexport function MapTreeModule$$$moveNext(i$$3) {\n if (i$$3.started) {\n const matchValue$$5 = i$$3.stack;\n\n if (matchValue$$5.tail == null) {\n return false;\n } else if (matchValue$$5.head.tag === 1) {\n i$$3.stack = MapTreeModule$$$collapseLHS(matchValue$$5.tail);\n return !(i$$3.stack.tail == null);\n } else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n } else {\n i$$3.started = true;\n return !(i$$3.stack.tail == null);\n }\n}\nexport const MapTreeModule$002EmkIEnumerator$0027$00602 = declare(function Map_MapTreeModule_mkIEnumerator_(s$$6) {\n const $this$$1 = this;\n $this$$1.s = s$$6;\n $this$$1.i = MapTreeModule$$$mkIterator($this$$1.s);\n void null;\n});\nexport function MapTreeModule$002EmkIEnumerator$0027$00602$reflection($gen$$115, $gen$$116) {\n return class_type(\"Map.MapTreeModule.mkIEnumerator'`2\", [$gen$$115, $gen$$116], MapTreeModule$002EmkIEnumerator$0027$00602);\n}\nexport function MapTreeModule$002EmkIEnumerator$0027$00602$$$$002Ector$$Z26BC498C(s$$6) {\n return this instanceof MapTreeModule$002EmkIEnumerator$0027$00602 ? MapTreeModule$002EmkIEnumerator$0027$00602.call(this, s$$6) : new MapTreeModule$002EmkIEnumerator$0027$00602(s$$6);\n}\nObject.defineProperty(MapTreeModule$002EmkIEnumerator$0027$00602.prototype, \"Current\", {\n \"get\": function () {\n const __ = this;\n return MapTreeModule$$$current(__.i);\n }\n});\n\nMapTreeModule$002EmkIEnumerator$0027$00602.prototype.MoveNext = function () {\n const __$$1 = this;\n return MapTreeModule$$$moveNext(__$$1.i);\n};\n\nMapTreeModule$002EmkIEnumerator$0027$00602.prototype.Reset = function () {\n const __$$2 = this;\n __$$2.i = MapTreeModule$$$mkIterator(__$$2.s);\n};\n\nMapTreeModule$002EmkIEnumerator$0027$00602.prototype.Dispose = function () {\n void null;\n};\n\nexport function MapTreeModule$$$mkIEnumerator(s$$7) {\n return MapTreeModule$002EmkIEnumerator$0027$00602$$$$002Ector$$Z26BC498C(s$$7);\n}\nexport function MapTreeModule$$$toSeq(s$$8) {\n const en = MapTreeModule$$$mkIEnumerator(s$$8);\n return unfold(function generator(en$$1) {\n if (en$$1.MoveNext()) {\n return [en$$1.Current, en$$1];\n } else {\n return undefined;\n }\n }, en);\n}\nexport const FSharpMap = declare(function Map_Map(comparer$$17, tree) {\n const $this$$2 = this;\n $this$$2.comparer = comparer$$17;\n $this$$2.tree = tree;\n void null;\n});\nexport function FSharpMap$reflection($gen$$120, $gen$$121) {\n return class_type(\"Map.FSharpMap\", [$gen$$120, $gen$$121], FSharpMap);\n}\nexport function FSharpMap$$$$002Ector$$58ADD115(comparer$$17, tree) {\n return this instanceof FSharpMap ? FSharpMap.call(this, comparer$$17, tree) : new FSharpMap(comparer$$17, tree);\n}\nexport function FSharpMap$$get_Comparer(__$$4) {\n return __$$4.comparer;\n}\nexport function FSharpMap$$get_Tree(__$$5) {\n return __$$5.tree;\n}\nexport function FSharpMap$$Add$$5BDDA1(__$$6, k$$28, v$$24) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$6.comparer, MapTreeModule$$$add(__$$6.comparer, k$$28, v$$24, __$$6.tree));\n}\nexport function FSharpMap$$get_IsEmpty(__$$7) {\n return MapTreeModule$$$isEmpty(__$$7.tree);\n}\nexport function FSharpMap$$get_Item$$2B595(__$$8, k$$29) {\n return MapTreeModule$$$find(__$$8.comparer, k$$29, __$$8.tree);\n}\nexport function FSharpMap$$TryGetValue$$5BDDA1(__$$9, k$$30, defValue) {\n const matchValue$$6 = MapTreeModule$$$tryFind(__$$9.comparer, k$$30, __$$9.tree);\n\n if (matchValue$$6 == null) {\n return [false, defValue];\n } else {\n const v$$25 = value$$3(matchValue$$6);\n return [true, v$$25];\n }\n}\nexport function FSharpMap$$TryPick$$72321DD7(__$$10, f$$17) {\n return MapTreeModule$$$tryPick(f$$17, __$$10.tree);\n}\nexport function FSharpMap$$Exists$$Z395DDC35(__$$11, f$$18) {\n return MapTreeModule$$$exists(f$$18, __$$11.tree);\n}\nexport function FSharpMap$$Filter$$Z395DDC35(__$$12, f$$19) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$12.comparer, MapTreeModule$$$filter(__$$12.comparer, f$$19, __$$12.tree));\n}\nexport function FSharpMap$$ForAll$$Z395DDC35(__$$13, f$$20) {\n return MapTreeModule$$$forall(f$$20, __$$13.tree);\n}\nexport function FSharpMap$$Fold(__$$14, f$$21, acc$$11) {\n return MapTreeModule$$$foldBack(f$$21, __$$14.tree, acc$$11);\n}\nexport function FSharpMap$$FoldSection(__$$15, lo$$2, hi$$2, f$$22, acc$$12) {\n return MapTreeModule$$$foldSection(__$$15.comparer, lo$$2, hi$$2, f$$22, __$$15.tree, acc$$12);\n}\nexport function FSharpMap$$Iterate$$1DCFB91D(__$$16, f$$23) {\n MapTreeModule$$$iter(f$$23, __$$16.tree);\n}\nexport function FSharpMap$$MapRange$$6DC7247(__$$17, f$$24) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$17.comparer, MapTreeModule$$$map(f$$24, __$$17.tree));\n}\nexport function FSharpMap$$Map$$Z6F6B671C(__$$18, f$$25) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$18.comparer, MapTreeModule$$$mapi(f$$25, __$$18.tree));\n}\nexport function FSharpMap$$Partition$$Z395DDC35(__$$19, f$$26) {\n const patternInput$$4 = MapTreeModule$$$partition(__$$19.comparer, f$$26, __$$19.tree);\n return [FSharpMap$$$$002Ector$$58ADD115(__$$19.comparer, patternInput$$4[0]), FSharpMap$$$$002Ector$$58ADD115(__$$19.comparer, patternInput$$4[1])];\n}\nexport function FSharpMap$$get_Count(__$$20) {\n return MapTreeModule$$$size(__$$20.tree);\n}\nexport function FSharpMap$$ContainsKey$$2B595(__$$21, k$$31) {\n return MapTreeModule$$$mem(__$$21.comparer, k$$31, __$$21.tree);\n}\nexport function FSharpMap$$Remove$$2B595(__$$22, k$$32) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$22.comparer, MapTreeModule$$$remove(__$$22.comparer, k$$32, __$$22.tree));\n}\nexport function FSharpMap$$TryFind$$2B595(__$$23, k$$33) {\n return MapTreeModule$$$tryFind(__$$23.comparer, k$$33, __$$23.tree);\n}\nexport function FSharpMap$$ToList(__$$24) {\n return MapTreeModule$$$toList(__$$24.tree);\n}\n\nFSharpMap.prototype.toString = function () {\n const this$ = this;\n let str;\n let strings;\n strings = map$$2(function toStr(kv) {\n return format(\"({0}, {1})\", kv[0], kv[1]);\n }, this$);\n str = join(\"; \", strings);\n return \"map [\" + str + \"]\";\n};\n\nFSharpMap.prototype.GetHashCode = function () {\n const this$$$1 = this;\n\n const combineHash = function combineHash(x$$16, y$$3) {\n return (x$$16 << 1) + y$$3 + 631;\n };\n\n let res$$3 = 0;\n const e$$1 = MapTreeModule$$$mkIEnumerator(FSharpMap$$get_Tree(this$$$1));\n\n while (e$$1.MoveNext()) {\n const patternInput$$5 = e$$1.Current;\n const activePatternResult3682 = patternInput$$5;\n res$$3 = combineHash(res$$3, structuralHash(activePatternResult3682[0]));\n res$$3 = combineHash(res$$3, structuralHash(activePatternResult3682[1]));\n }\n\n return Math.abs(res$$3) | 0;\n};\n\nFSharpMap.prototype.Equals = function (that) {\n const this$$$2 = this;\n return this$$$2.CompareTo(that) === 0;\n};\n\nFSharpMap.prototype[Symbol.iterator] = function () {\n const __$$25 = this;\n return toIterator(MapTreeModule$$$mkIEnumerator(__$$25.tree));\n};\n\nFSharpMap.prototype.CompareTo = function (obj) {\n const m$$22 = this;\n let res$$4 = 0;\n let finished = false;\n const e1 = MapTreeModule$$$mkIEnumerator(FSharpMap$$get_Tree(m$$22));\n\n try {\n const e2 = MapTreeModule$$$mkIEnumerator(FSharpMap$$get_Tree(obj));\n\n try {\n while (!finished ? res$$4 === 0 : false) {\n const matchValue$$7 = [e1.MoveNext(), e2.MoveNext()];\n\n if (matchValue$$7[0]) {\n if (matchValue$$7[1]) {\n const kvp1 = e1.Current;\n const kvp2 = e2.Current;\n const c$$10 = m$$22.comparer.Compare(kvp1[0], kvp2[0]) | 0;\n res$$4 = c$$10 !== 0 ? c$$10 : compare(kvp1[1], kvp2[1]);\n } else {\n res$$4 = 1;\n }\n } else if (matchValue$$7[1]) {\n res$$4 = -1;\n } else {\n finished = true;\n }\n }\n\n return res$$4 | 0;\n } finally {\n if (isDisposable(e2)) {\n e2.Dispose();\n } else {\n void null;\n }\n }\n } finally {\n if (isDisposable(e1)) {\n e1.Dispose();\n } else {\n void null;\n }\n }\n};\n\nObject.defineProperty(FSharpMap.prototype, \"size\", {\n \"get\": function () {\n const this$$$3 = this;\n return FSharpMap$$get_Count(this$$$3) | 0;\n }\n});\n\nFSharpMap.prototype.clear = function () {\n throw new Error(\"Map cannot be mutated\");\n};\n\nFSharpMap.prototype.delete = function (_arg1$$1) {\n throw new Error(\"Map cannot be mutated\");\n};\n\nFSharpMap.prototype.entries = function () {\n const this$$$4 = this;\n return MapTreeModule$$$toSeq(FSharpMap$$get_Tree(this$$$4));\n};\n\nFSharpMap.prototype.get = function (k$$34) {\n const this$$$5 = this;\n return FSharpMap$$get_Item$$2B595(this$$$5, k$$34);\n};\n\nFSharpMap.prototype.has = function (k$$35) {\n const this$$$6 = this;\n return FSharpMap$$ContainsKey$$2B595(this$$$6, k$$35);\n};\n\nFSharpMap.prototype.keys = function () {\n const this$$$7 = this;\n const source$$1 = MapTreeModule$$$toSeq(FSharpMap$$get_Tree(this$$$7));\n return map$$2(function mapping(kv$$1) {\n return kv$$1[0];\n }, source$$1);\n};\n\nFSharpMap.prototype.set = function (k$$36, v$$26) {\n throw new Error(\"Map cannot be mutated\");\n};\n\nFSharpMap.prototype.values = function () {\n const this$$$8 = this;\n const source$$2 = MapTreeModule$$$toSeq(FSharpMap$$get_Tree(this$$$8));\n return map$$2(function mapping$$1(kv$$2) {\n return kv$$2[1];\n }, source$$2);\n};\n\nexport function isEmpty(m$$23) {\n return FSharpMap$$get_IsEmpty(m$$23);\n}\nexport function add(k$$37, v$$27, m$$24) {\n return FSharpMap$$Add$$5BDDA1(m$$24, k$$37, v$$27);\n}\nexport function find(k$$38, m$$25) {\n return FSharpMap$$get_Item$$2B595(m$$25, k$$38);\n}\nexport function tryFind(k$$39, m$$26) {\n return FSharpMap$$TryFind$$2B595(m$$26, k$$39);\n}\nexport function remove(k$$40, m$$27) {\n return FSharpMap$$Remove$$2B595(m$$27, k$$40);\n}\nexport function containsKey(k$$41, m$$28) {\n return FSharpMap$$ContainsKey$$2B595(m$$28, k$$41);\n}\nexport function iterate(f$$27, m$$29) {\n FSharpMap$$Iterate$$1DCFB91D(m$$29, f$$27);\n}\nexport function tryPick(f$$28, m$$30) {\n return FSharpMap$$TryPick$$72321DD7(m$$30, f$$28);\n}\nexport function pick(f$$29, m$$31) {\n const matchValue$$8 = tryPick(f$$29, m$$31);\n\n if (matchValue$$8 != null) {\n const res$$5 = value$$3(matchValue$$8);\n return res$$5;\n } else {\n throw new Error(\"key not found\");\n }\n}\nexport function exists(f$$30, m$$32) {\n return FSharpMap$$Exists$$Z395DDC35(m$$32, f$$30);\n}\nexport function filter(f$$31, m$$33) {\n return FSharpMap$$Filter$$Z395DDC35(m$$33, f$$31);\n}\nexport function partition(f$$32, m$$34) {\n return FSharpMap$$Partition$$Z395DDC35(m$$34, f$$32);\n}\nexport function forAll(f$$33, m$$35) {\n return FSharpMap$$ForAll$$Z395DDC35(m$$35, f$$33);\n}\nexport function mapRange(f$$34, m$$36) {\n return FSharpMap$$MapRange$$6DC7247(m$$36, f$$34);\n}\nexport function map(f$$35, m$$37) {\n return FSharpMap$$Map$$Z6F6B671C(m$$37, f$$35);\n}\nexport function fold(f$$36, z, m$$38) {\n return MapTreeModule$$$fold(f$$36, z, FSharpMap$$get_Tree(m$$38));\n}\nexport function foldBack(f$$37, m$$39, z$$1) {\n return MapTreeModule$$$foldBack(f$$37, FSharpMap$$get_Tree(m$$39), z$$1);\n}\nexport function toSeq(m$$40) {\n return MapTreeModule$$$toSeq(FSharpMap$$get_Tree(m$$40));\n}\nexport function findKey(f$$38, m$$41) {\n let _arg1$$2;\n\n const m$$42 = FSharpMap$$get_Tree(m$$41);\n _arg1$$2 = MapTreeModule$$$tryPick(function f$$39(k$$42, v$$28) {\n if (f$$38(k$$42, v$$28)) {\n return some(k$$42);\n } else {\n return undefined;\n }\n }, m$$42);\n\n if (_arg1$$2 == null) {\n throw new Error(\"Key not found\");\n } else {\n const k$$43 = value$$3(_arg1$$2);\n return k$$43;\n }\n}\nexport function tryFindKey(f$$40, m$$43) {\n const m$$44 = FSharpMap$$get_Tree(m$$43);\n return MapTreeModule$$$tryPick(function f$$41(k$$44, v$$29) {\n if (f$$40(k$$44, v$$29)) {\n return some(k$$44);\n } else {\n return undefined;\n }\n }, m$$44);\n}\nexport function ofList(l$$22, comparer$$18) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$18, MapTreeModule$$$ofList(comparer$$18, l$$22));\n}\nexport function ofSeq(l$$23, comparer$$19) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$19, MapTreeModule$$$ofSeq(comparer$$19, l$$23));\n}\nexport function ofArray(array, comparer$$20) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$20, MapTreeModule$$$ofArray(comparer$$20, array));\n}\nexport function toList(m$$45) {\n return FSharpMap$$ToList(m$$45);\n}\nexport function toArray(m$$46) {\n let res$$6;\n const len = FSharpMap$$get_Count(m$$46) | 0;\n res$$6 = new Array(len);\n MapTreeModule$$$copyToArray(FSharpMap$$get_Tree(m$$46), res$$6, 0);\n return res$$6;\n}\nexport function empty(comparer$$21) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$21, new MapTree$00602(0, \"MapEmpty\"));\n}\nexport function createMutable(source$$3, comparer$$22) {\n const map$$1 = MutableMap$002400602$0024$0024$0024$0024002Ector$0024$00246623D9B3(source$$3, comparer$$22);\n return map$$1;\n}\nexport function groupBy(projection, xs, comparer$$23) {\n const dict = createMutable(empty$$1(), comparer$$23);\n iterate$$1(function (v$$30) {\n const key = projection(v$$30);\n\n if (dict.has(key)) {\n void dict.get(key).push(v$$30);\n } else {\n const value = dict.set(key, [v$$30]);\n void value;\n }\n }, xs);\n return map$$2(function mapping$$2(kv$$3) {\n return [kv$$3[0], kv$$3[1]];\n }, dict);\n}\nexport function countBy(projection$$1, xs$$1, comparer$$24) {\n const dict$$1 = createMutable(empty$$1(), comparer$$24);\n iterate$$1(function (value$$1) {\n const key$$1 = projection$$1(value$$1);\n const value$$2 = dict$$1.has(key$$1) ? dict$$1.set(key$$1, dict$$1.get(key$$1) + 1) : dict$$1.set(key$$1, 1);\n void value$$2;\n }, xs$$1);\n return map$$2(function mapping$$3(kv$$4) {\n return [kv$$4[0], kv$$4[1]];\n }, dict$$1);\n}\nexport function count(m$$47) {\n return FSharpMap$$get_Count(m$$47);\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.embed ? _vm.$route.path.slice(7) : _vm.$route.path.slice(4)],attrs:{\"id\":\"app\"}},[(!_vm.embed)?_c('Navbar'):_vm._e(),_c('main',[_c('router-view',{key:_vm.$route.path})],1),(!_vm.embed)?_c('Footer'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar-container\",class:{\n scrolled: _vm.scrollPosition > 80,\n menuOpen: _vm.menuOpened,\n closingMenu: _vm.closingMenu,\n }},[_c('router-link',{staticClass:\"navbar-logo\",attrs:{\"to\":\"stats\"}}),_c('div',{staticClass:\"🍔\",on:{\"click\":_vm.toggleMenu}},[_c('div',{staticClass:\"line line-1\"}),_c('div',{staticClass:\"line line-2\"}),_c('div',{staticClass:\"line line-3\"})]),_c('div',{staticClass:\"nav-overlay\"}),_c('div',{staticClass:\"nav-links\"},[_c('div',{staticClass:\"nav-heading\"},[_vm._v(_vm._s(_vm.$t('navbar.menu')))]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"stats\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.home')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"world\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.world')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"tables\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.tables')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"models\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.models')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"faq\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.faq')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"about\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.about')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"team\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.team')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"sources\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.sources')))])]),_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":\"links\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('navbar.links')))])]),(_vm.showFullLang)?_c('a',{staticClass:\"router-link router-link-icon github\",attrs:{\"href\":\"https://github.com/treker-mk\",\"target\":\"_blank\",\"rel\":\"noreferrer\"}},[_c('img',{attrs:{\"src\":require(\"../assets/svg/gh-icon.svg\"),\"alt\":_vm.$t('navbar.github')}}),_c('span',[_vm._v(_vm._s(_vm.$t('navbar.github')))])]):_vm._e(),_c('LanguageSwitcher')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isMobile)?_c('div',{staticClass:\"router-link router-link-icon lang-switcher\"},[_c('div',{staticClass:\"lang\",on:{\"click\":_vm.toggleDropdown}},[_c('font-awesome-icon',{attrs:{\"icon\":\"globe\"}}),(_vm.showFullLang)?_c('span',[_vm._v(_vm._s(_vm.$t('navbar.language.' + _vm.selectedLanguage)))]):_c('span',[_vm._v(_vm._s(_vm.selectedLanguage.toUpperCase()))]),_vm._v(\" \"),_c('font-awesome-icon',{attrs:{\"icon\":\"caret-down\"}})],1),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.active)?_c('ul',{directives:[{name:\"on-clickaway\",rawName:\"v-on-clickaway\",value:(_vm.hideDropdown),expression:\"hideDropdown\"}],staticClass:\"lang-list\"},_vm._l((_vm.languages),function(lang,index){return _c('li',{key:index,staticClass:\"lang-list-item\"},[(lang != _vm.selectedLanguage || !_vm.showFullLang)?_c('a',{staticClass:\"router-link-anchor\",class:{ active: _vm.$i18n.i18next.language === lang },attrs:{\"href\":(\"/\" + lang + \"/\" + (_vm.$route.path\n .slice(4)\n .toLowerCase()\n .replace(/\\/$/, ''))),\"hreflang\":lang},on:{\"click\":function($event){$event.preventDefault();return _vm.changeLanguage(lang)}}},[_vm._v(\" \"+_vm._s(_vm.$t('navbar.language.' + lang, { lng: lang }))+\" \")]):_vm._e()])}),0):_vm._e()])],1):_c('div',{staticClass:\"lang-switcher-mobile\"},_vm._l((_vm.languages),function(lang,index){return _c('div',{key:index},[_c('a',{staticClass:\"router-link router-link-anchor\",class:{ active: _vm.$i18n.i18next.language === lang },attrs:{\"href\":(\"/\" + lang + \"/\" + (_vm.$route.path\n .slice(4)\n .toLowerCase()\n .replace(/\\/$/, ''))),\"hreflang\":lang},on:{\"click\":function($event){$event.preventDefault();return _vm.changeLanguage(lang)}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"globe\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('navbar.language.' + lang, { lng: lang })))])],1)])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSwitcher.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSwitcher.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LanguageSwitcher.vue?vue&type=template&id=9a1defba&scoped=true&\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSwitcher.vue?vue&type=style&index=0&id=9a1defba&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a1defba\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=68d0c777&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',[_c('div',{staticClass:\"content-wrapper\"},[_c('div',{staticClass:\"copy\"},[_c('span',[_vm._v(_vm._s(_vm.$t('footer.copyright')))])]),_vm._m(0),_vm._m(1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"email\"},[_c('a',{attrs:{\"href\":\"mailto:info@treker.mk\"}},[_c('span',[_vm._v(\"info@treker.mk\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"social\"},[_c('a',{attrs:{\"href\":\"https://fb.me/Covid19TrekerMK\",\"target\":\"_blank\",\"rel\":\"noreferrer\"}},[_c('img',{attrs:{\"loading\":\"lazy\",\"src\":require(\"../assets/svg/fb-icon.svg\"),\"alt\":\"Facebook\"}})]),_c('a',{attrs:{\"href\":\"https://twitter.com/Covid19TrekerMK\",\"target\":\"_blank\",\"rel\":\"noreferrer\"}},[_c('img',{attrs:{\"loading\":\"lazy\",\"src\":require(\"../assets/svg/tw-icon.svg\"),\"alt\":\"Twitter\"}})]),_c('a',{attrs:{\"href\":\"https://github.com/treker-mk\",\"target\":\"_blank\",\"rel\":\"noreferrer\"}},[_c('img',{staticClass:\"gh-icon\",attrs:{\"loading\":\"lazy\",\"src\":require(\"../assets/svg/gh-icon.svg\"),\"alt\":\"GitHub\"}})])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=d39b82dc&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&scopped=true&lang=sass&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=65edcbf3&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import axios from 'axios'\nimport axiosETAGCache from 'axios-etag-cache'\n\n\nconst ApiService = {\n init(baseURL) {\n axios.defaults.baseURL = baseURL\n },\n\n get(resource, opts) {\n return axiosETAGCache(axios).get(resource, opts)\n },\n}\n\nexport default ApiService","import _ from 'lodash'\nimport { exportTime, ApiEndpoint } from './index'\nimport ApiService from '../services/api.service'\nimport regions from '../services/dict.regions.json'\n\nexport function lastChange(data, field, cumulative, date) {\n const result = {\n lastDay: {\n date: new Date(),\n firstDate: undefined,\n value: undefined,\n diff: undefined,\n percentDiff: undefined,\n },\n dayBefore: {\n date: new Date(),\n firstDate: undefined,\n value: undefined,\n diff: undefined,\n percentDiff: undefined,\n },\n day2Before: {\n date: new Date(),\n value: undefined,\n },\n }\n\n let index = data.findIndex((obj) => {\n return (\n date ===\n `${obj.year}-${obj.month\n .toString()\n .padStart(2, '0')}-${obj.day.toString().padStart(2, '0')}`\n )\n })\n\n let i\n index === -1 ? (i = data.length - 1) : (i = index)\n\n // console.log('lastDay found in row', i, data[i])\n\n while (i >= 0 && _.get(data, `${i}.${field}`) == null) i--\n\n result.lastDay.date = new Date(data[i].year, data[i].month - 1, data[i].day)\n result.lastDay.value = _.get(data, `${i}.${field}`)\n\n if (cumulative) {\n while (i >= 0 && result.lastDay.value === _.get(data, `${i}.${field}`)) i--\n let date = new Date(\n data[i + 1].year,\n data[i + 1].month - 1,\n data[i + 1].day\n )\n if (\n _.get(data, `${i + 1}.${field}`) != null &&\n result.lastDay.date.getTime() != date.getTime()\n ) {\n result.lastDay.firstDate = date\n }\n } else {\n i--\n }\n\n if (i >= 0) {\n while (i >= 0 && _.get(data, `${i}.${field}`) == null) i--\n result.dayBefore.date = new Date(\n data[i].year,\n data[i].month - 1,\n data[i].day\n )\n result.dayBefore.value = _.get(data, `${i}.${field}`)\n }\n\n if (cumulative) {\n if (i >= 0) {\n while (i >= 0 && result.dayBefore.value === _.get(data, `${i}.${field}`))\n i--\n let date = new Date(\n data[i + 1].year,\n data[i + 1].month - 1,\n data[i + 1].day\n )\n if (result.dayBefore.date.getTime() != date.getTime()) {\n result.dayBefore.firstDate = date\n }\n }\n } else {\n i--\n }\n\n if (i >= 0) {\n while (i >= 0 && _.get(data, `${i}.${field}`) == null) i--\n if (data[i]) {\n result.day2Before.date = new Date(\n data[i].year,\n data[i].month - 1,\n data[i].day\n )\n result.day2Before.value = _.get(data, `${i}.${field}`)\n }\n }\n\n if (typeof result.dayBefore.value === 'undefined') {\n result.dayBefore = undefined\n } else {\n result.lastDay.diff = result.lastDay.value - result.dayBefore.value\n result.lastDay.percentDiff =\n result.dayBefore.value === 0\n ? 0\n : Math.round((result.lastDay.diff / result.dayBefore.value) * 1000) / 10\n }\n\n if (typeof result.day2Before.value === 'undefined') {\n result.day2Before = undefined\n } else {\n result.dayBefore.diff = result.dayBefore.value - result.day2Before.value\n result.dayBefore.percentDiff =\n result.day2Before.value === 0\n ? 0\n : Math.round((result.dayBefore.diff / result.day2Before.value) * 1000) /\n 10\n }\n\n return result\n}\n\nconst state = {\n exportTime: null,\n loaded: false,\n data: [],\n regions: [],\n}\n\nconst getters = {\n data: (state) => {\n return state.data\n },\n\n regions: (state) => {\n return state.regions\n },\n\n getValueOn: (state, getters) => (field, date) => {\n if (!date) {\n return {}\n }\n let searchResult = getters.data.find((obj) => {\n return (\n date ===\n `${obj.year}-${obj.month\n .toString()\n .padStart(2, '0')}-${obj.day.toString().padStart(2, '0')}`\n )\n })\n return {\n date,\n value: searchResult ? _.get(searchResult, field) : null,\n }\n },\n\n getLastValue: (state, getters) => (field) => {\n let result = getters.data\n .slice()\n .reverse()\n .find((day) => {\n return day[field]\n })\n return {\n date: result\n ? new Date(Date.parse(result.date))\n : new Date(new Date().setHours(0, 0, 0, 0)),\n value: result ? result[field] : null,\n }\n },\n\n lastChange: (state, getters) => (field, cumulative, date) => {\n return lastChange(getters.data, field, cumulative, date)\n },\n}\n\nconst actions = {\n fetchData: async ({ commit }, to) => {\n const tempDate = typeof to === 'undefined' ? new Date() : new Date(to)\n const from = new Date(tempDate.setDate(tempDate.getDate() - 4))\n const data = await ApiService.get(`${ApiEndpoint()}/api/stats`, {params: {from, to}})\n const d =\n typeof to === 'undefined' ? exportTime(data.headers.timestamp) : to\n\n commit('setData', data.data)\n commit('setRegions', regions)\n commit('setExportTime', d)\n },\n refreshDataEvery: ({ dispatch }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setData: (state, data) => {\n state.data = data\n state.loaded = true\n },\n\n setRegions: (state, regions) => {\n state.regions = regions\n },\n\n setExportTime: (state, exportTime) => {\n state.exportTime = exportTime\n },\n}\n\nexport const statsStore = {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}\n","import {\n exportTime,\n ApiEndpoint\n} from './index'\nimport hospitalsJSON from '../services/dict.hospitals.json'\nimport ApiService from '../services/api.service'\n\nconst state = {\n loaded: false,\n exportTime: null,\n data: [],\n hospitals: {},\n}\n\nconst getters = {\n data: (state) => {\n return state.data\n },\n hospitals: (state) => {\n return state.hospitals\n },\n hospitalName: (state) => (id) => {\n return state.hospitals[id]\n },\n getSeries: (state) => (field) => {\n return state.data.map((row) => {\n return [Date.parse(row['date']), row[field]]\n })\n },\n getValueOn: (state, getters) => (field, date) => {\n if (!date) {\n return {}\n }\n let searchResult = getters.data.find((day) => {\n return (\n new Date(Date.parse(day.date)).setHours(0, 0, 0, 0) === date.getTime()\n )\n })\n return {\n date,\n value: searchResult ? searchResult[field] : null\n }\n },\n getLastValue: (state, getters) => (field) => {\n let result = getters.data\n .slice()\n .reverse()\n .find((day) => {\n return day[field]\n })\n return {\n date: result ?\n new Date(Date.parse(result.date)) : new Date(new Date().setHours(0, 0, 0, 0)),\n value: result ? result[field] : null,\n }\n },\n}\n\nconst actions = {\n fetchData: async ({\n commit\n }) => {\n const data = await ApiService.get(`${ApiEndpoint()}/api/hospitals`)\n const d = exportTime(data.headers.timestamp)\n\n let hospitals = {}\n hospitalsJSON.forEach((row) => {\n hospitals[row.id] = row.name\n })\n\n commit('setData', data.data)\n commit('setHospitals', hospitals)\n commit('setExportTime', d)\n },\n refreshDataEvery: ({\n dispatch\n }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setData: (state, data, hospitals) => {\n state.loaded = true\n state.data = data\n state.hospitals = hospitals\n },\n setHospitals: (state, hospitals) => {\n state.loaded = true\n state.hospitals = hospitals\n },\n setExportTime: (state, d) => {\n state.loaded = true\n state.exportTime = d\n },\n}\n\nexport const hospitalsStore = {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}","import ApiService from '../services/api.service'\nimport { exportTime, ApiEndpoint } from './index'\n\nconst state = {\n exportTime: null,\n loaded: false,\n data: [],\n}\n\nconst getters = {\n data: (state) => {\n return state.data\n },\n}\n\nconst actions = {\n fetchData: async ({ commit }, to) => {\n const tempDate = typeof to === 'undefined' ? new Date() : new Date(to)\n const from = new Date(tempDate.setDate(tempDate.getDate() - 3))\n const data = await ApiService.get(`${ApiEndpoint()}/api/patients`, {params: {from, to}})\n const d =\n typeof to === 'undefined' ? exportTime(data.headers.timestamp) : to\n\n commit('setData', data.data)\n commit('setExportTime', d)\n },\n refreshDataEvery: ({ dispatch }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setData: (state, data) => {\n state.data = data\n state.loaded = true\n },\n\n setExportTime: (state, exportTime) => {\n state.exportTime = exportTime\n },\n}\n\nexport const patientsStore = {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}\n","import ApiService from '../services/api.service'\nimport {\n exportTime,\n ApiEndpoint\n} from './index'\n\nconst state = {\n exportTime: null,\n loaded: false,\n data: [],\n}\n\nconst getters = {\n data: (state) => {\n return state.data\n },\n}\n\nconst actions = {\n fetchData: async ({\n commit\n }) => {\n const data = await ApiService.get(`${ApiEndpoint()}/api/municipalities`)\n const d = exportTime(data.headers.timestamp)\n\n commit('setData', data.data)\n commit('setExportTime', d)\n },\n\n refreshDataEvery: ({\n dispatch\n }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setData: (state, data) => {\n state.data = data\n state.loaded = true\n },\n\n setExportTime: (state, exportTime) => {\n state.exportTime = exportTime\n },\n}\n\nexport const municipalitiesStore = {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}","import ApiService from '../services/api.service'\nimport {\n exportTime,\n ApiEndpoint\n} from './index'\n\nconst state = {\n exportTime: null,\n loaded: false,\n data: [],\n}\n\nconst getters = {\n data: (state) => {\n return state.data\n },\n}\n\nconst actions = {\n fetchData: async ({\n commit\n }) => {\n const data = await ApiService.get(`${ApiEndpoint}/api/skopje-municipalities`)\n const d = exportTime(data.headers.timestamp)\n\n commit('setData', data.data)\n commit('setExportTime', d)\n },\n\n refreshDataEvery: ({\n dispatch\n }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setData: (state, data) => {\n state.data = data\n state.loaded = true\n },\n\n setExportTime: (state, exportTime) => {\n state.exportTime = exportTime\n },\n}\n\nexport const skopjeMunicipalitiesStore = {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}","import ApiService from '../services/api.service'\nimport {\n exportTime,\n ApiEndpoint\n} from './index'\n\nconst state = {\n exportTime: null,\n loaded: false,\n data: [],\n}\n\nconst getters = {\n data: (state) => {\n return state.data\n },\n}\n\nconst actions = {\n fetchData: async ({\n commit\n }) => {\n const data = await ApiService.get(`${ApiEndpoint()}/api/health-centers`)\n const d = exportTime(data.headers.timestamp)\n\n commit('setData', data.data)\n commit('setExportTime', d)\n },\n\n refreshDataEvery: ({\n dispatch\n }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setData: (state, data) => {\n state.data = data\n state.loaded = true\n },\n\n setExportTime: (state, exportTime) => {\n state.exportTime = exportTime\n },\n}\n\nexport const healthCentersStore = {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}","import i18next from 'i18next'\nimport { exportTime, loadCsv } from './index'\n\nfunction processTableData(data) {\n const x = Object.keys(_.last(data))\n .map((dimension) => {\n let newData = {}\n newData['dim'] = dimension\n newData[' '] = i18next.t('tableDict')[dimension.replace(/\\./g, '_')]\n\n data\n .slice()\n .reverse()\n .forEach((day, i) => {\n let date = i18next.t('tables.day', {\n date: new Date(day.date),\n interpolation: { escapeValue: false },\n })\n newData[date] = day[dimension]\n })\n return newData\n })\n .filter((val) => val)\n return x\n}\n\nconst state = {\n exportTime: null,\n data: [],\n}\n\nconst getters = {\n data: (state) => {\n return state.data\n },\n\n tableData(state, getters) {\n return getters.data.length\n ? processTableData(getters.data)\n : []\n },\n\n filterTableData: (state, getters) => (dimension) => {\n const items = getters.tableData.filter((day) => {\n return dimension.includes(day.dim)\n })\n const sample = items[0]\n const fields = Object.keys(sample)\n .map((dimension, i) => {\n return {\n key: dimension,\n label: dimension,\n stickyColumn: dimension === ' ',\n sortable: true,\n }\n })\n .filter((item) => item.key !== 'dim')\n return {\n items,\n fields,\n }\n },\n}\n\nconst actions = {\n fetchData: async ({ commit }) => {\n const ts = new Date().getTime()\n\n const d = await exportTime(\n `https://raw.githubusercontent.com/treker-mk/data/master/csv/stats.csv.timestamp?nocache=${ts}`\n )\n\n const data = await loadCsv(\n `https://raw.githubusercontent.com/treker-mk/data/master/csv/stats.csv?nocache=${ts}`\n )\n\n commit('setData', data)\n commit('setExportTime', d)\n },\n refreshDataEvery: ({ dispatch }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setData: (state, data) => {\n state.data = data\n state.loaded = true\n },\n\n setExportTime: (state, exportTime) => {\n state.exportTime = exportTime\n },\n}\n\nexport const tableData = {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}\n","import _ from 'lodash'\nimport { exportTime, ApiEndpoint } from './index'\nimport ApiService from '../services/api.service'\nimport regions from '../services/dict.regions.json'\nimport axios from 'axios'\n\nconst state = {\n exportTime: null,\n loaded: false,\n}\n\nconst getters = {\n}\n\nconst actions = {\n fetchData: async ({ commit }, to) => {\n const resp = await ApiService.get('https://ostanizdrav.sledilnik.org/plots/timestamp.json')\n commit('setExportTime', new Date(resp.data.unix * 1000))\n },\n refreshDataEvery: ({ dispatch }, seconds) => {\n setInterval(() => {\n dispatch('fetchData')\n }, seconds * 1000)\n },\n}\n\nconst mutations = {\n setExportTime: (state, exportTime) => {\n state.exportTime = exportTime\n },\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport * as d3 from 'd3'\nimport {\n statsStore\n} from './stats.store'\nimport {\n hospitalsStore\n} from './hospitals.store'\nimport {\n patientsStore\n} from './patients.store'\nimport {\n municipalitiesStore\n} from './municipalities.store'\nimport {\n skopjeMunicipalitiesStore\n} from './skopje-municipalities.store'\nimport {\n healthCentersStore\n} from './health-centers.store'\nimport {\n tableData\n} from './tables.store'\nimport ostanizdravStore from './ostanizdrav.store'\n\nVue.use(Vuex)\n\nexport function ApiEndpoint() {\n if(window.location.search.indexOf('stage') > 0) {\n return 'https://api-stage.treker.mk'\n } else {\n return 'https://api.treker.mk'\n }\n} \n\nexport function exportTime(x) {\n return new Date(x * 1000)\n}\n\n// loads csv, converts dates to Date objects, string values to numberical\nexport async function loadCsv(url) {\n const data = await d3.csv(url)\n data.forEach((row) => {\n data.columns.forEach((col) => {\n if (col != 'date') {\n row[col] = row[col] === '' ? null : +row[col]\n } else {\n row['date'] = new Date(row['date'])\n }\n })\n })\n return data\n}\n\nconst store = new Vuex.Store({\n modules: {\n stats: statsStore,\n hospitals: hospitalsStore,\n patients: patientsStore,\n municipalities: municipalitiesStore,\n skopjeMunicipalities: skopjeMunicipalitiesStore,\n healthCenters: healthCentersStore,\n ostanizdrav: ostanizdravStore,\n tableData,\n },\n})\n\nexport default store","import { defaultArg, value as value$$1, some } from \"./Option.js\";\nimport { List } from \"./Types.js\";\nimport { transpose as transpose$$1, pairwise as pairwise$$1, collect as collect$$1, scanBack as scanBack$$1, scan as scan$$1, foldBack2 as foldBack2$$1, fold2 as fold2$$1, fold as fold$$1, map as map$$1 } from \"./Seq.js\";\nimport { getItemFromDict, addToDict, tryGetValue, addToSet, count } from \"./Util.js\";\nimport { ofList } from \"./Array.js\";\nimport { splitInto as splitInto$$1, chunkBySize as chunkBySize$$1, permute as permute$$1, findIndexBack as findIndexBack$$1, tryFindIndexBack as tryFindIndexBack$$1 } from \"./Array\";\nimport { createMutable } from \"./Set.js\";\nimport { createMutable as createMutable$$1 } from \"./Map.js\";\nexport function head(_arg1) {\n if (_arg1.tail != null) {\n return _arg1.head;\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function tryHead(_arg1$$1) {\n if (_arg1$$1.tail != null) {\n return some(_arg1$$1.head);\n } else {\n return undefined;\n }\n}\nexport function tail(_arg1$$2) {\n if (_arg1$$2.tail != null) {\n return _arg1$$2.tail;\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function last($_arg1$$3$$5) {\n last: while (true) {\n const _arg1$$3 = $_arg1$$3$$5;\n\n if (_arg1$$3.tail != null) {\n if (_arg1$$3.tail.tail == null) {\n return _arg1$$3.head;\n } else {\n $_arg1$$3$$5 = _arg1$$3.tail;\n continue last;\n }\n } else {\n throw new Error(\"List was empty\");\n }\n\n break;\n }\n}\nexport function tryLast($_arg1$$4$$6) {\n tryLast: while (true) {\n const _arg1$$4 = $_arg1$$4$$6;\n\n if (_arg1$$4.tail != null) {\n if (_arg1$$4.tail.tail == null) {\n return some(_arg1$$4.head);\n } else {\n $_arg1$$4$$6 = _arg1$$4.tail;\n continue tryLast;\n }\n } else {\n return undefined;\n }\n\n break;\n }\n}\nexport function compareWith(comparer, xs$$3, ys) {\n if (xs$$3 === ys) {\n return 0;\n } else {\n const loop = function loop($xs$$4$$10, $ys$$1$$11) {\n loop: while (true) {\n const xs$$4 = $xs$$4$$10,\n ys$$1 = $ys$$1$$11;\n\n if (xs$$4.tail != null) {\n if (ys$$1.tail != null) {\n const matchValue$$1 = comparer(xs$$4.head, ys$$1.head) | 0;\n\n if (matchValue$$1 === 0) {\n $xs$$4$$10 = xs$$4.tail;\n $ys$$1$$11 = ys$$1.tail;\n continue loop;\n } else {\n return matchValue$$1 | 0;\n }\n } else {\n return 1;\n }\n } else if (ys$$1.tail == null) {\n return 0;\n } else {\n return -1 | 0;\n }\n\n break;\n }\n };\n\n return loop(xs$$3, ys) | 0;\n }\n}\nexport function foldIndexedAux($f$$12, $i$$13, $acc$$14, $_arg1$$5$$15) {\n foldIndexedAux: while (true) {\n const f = $f$$12,\n i = $i$$13,\n acc = $acc$$14,\n _arg1$$5 = $_arg1$$5$$15;\n\n if (_arg1$$5.tail != null) {\n $f$$12 = f;\n $i$$13 = i + 1;\n $acc$$14 = f(i, acc, _arg1$$5.head);\n $_arg1$$5$$15 = _arg1$$5.tail;\n continue foldIndexedAux;\n } else {\n return acc;\n }\n\n break;\n }\n}\nexport function foldIndexed(f$$1, state, xs$$7) {\n return foldIndexedAux(f$$1, 0, state, xs$$7);\n}\nexport function fold($f$$2$$19, $state$$1$$20, $xs$$8$$21) {\n fold: while (true) {\n const f$$2 = $f$$2$$19,\n state$$1 = $state$$1$$20,\n xs$$8 = $xs$$8$$21;\n\n if (xs$$8.tail != null) {\n $f$$2$$19 = f$$2;\n $state$$1$$20 = f$$2(state$$1, xs$$8.head);\n $xs$$8$$21 = xs$$8.tail;\n continue fold;\n } else {\n return state$$1;\n }\n\n break;\n }\n}\nexport function reverse(xs$$9) {\n return fold(function (acc$$1, x$$6) {\n return new List(x$$6, acc$$1);\n }, new List(), xs$$9);\n}\nexport function foldBack(f$$3, xs$$10, state$$2) {\n return fold(function (acc$$2, x$$7) {\n return f$$3(x$$7, acc$$2);\n }, state$$2, reverse(xs$$10));\n}\nexport function toSeq(xs$$11) {\n return map$$1(function (x$$8) {\n return x$$8;\n }, xs$$11);\n}\nexport function ofSeq(xs$$12) {\n const xs$$13 = fold$$1(function (acc$$3, x$$9) {\n return new List(x$$9, acc$$3);\n }, new List(), xs$$12);\n return reverse(xs$$13);\n}\nexport function concat(lists) {\n const xs$$15 = fold$$1(function (state$$3, xs$$14) {\n return fold(function f$$4(acc$$4, x$$10) {\n return new List(x$$10, acc$$4);\n }, state$$3, xs$$14);\n }, new List(), lists);\n return reverse(xs$$15);\n}\nexport function foldIndexed2Aux($f$$5$$31, $i$$1$$32, $acc$$5$$33, $bs$$34, $cs$$35) {\n foldIndexed2Aux: while (true) {\n const f$$5 = $f$$5$$31,\n i$$1 = $i$$1$$32,\n acc$$5 = $acc$$5$$33,\n bs = $bs$$34,\n cs = $cs$$35;\n var $target$$36, x$$11, xs$$16, y$$1, ys$$3;\n\n if (bs.tail != null) {\n if (cs.tail != null) {\n $target$$36 = 1;\n x$$11 = bs.head;\n xs$$16 = bs.tail;\n y$$1 = cs.head;\n ys$$3 = cs.tail;\n } else {\n $target$$36 = 2;\n }\n } else if (cs.tail == null) {\n $target$$36 = 0;\n } else {\n $target$$36 = 2;\n }\n\n switch ($target$$36) {\n case 0:\n {\n return acc$$5;\n }\n\n case 1:\n {\n $f$$5$$31 = f$$5;\n $i$$1$$32 = i$$1 + 1;\n $acc$$5$$33 = f$$5(i$$1, acc$$5, x$$11, y$$1);\n $bs$$34 = xs$$16;\n $cs$$35 = ys$$3;\n continue foldIndexed2Aux;\n }\n\n case 2:\n {\n throw new Error(\"Lists had different lengths\");\n }\n }\n\n break;\n }\n}\nexport function foldIndexed2(f$$6, state$$4, xs$$17, ys$$4) {\n return foldIndexed2Aux(f$$6, 0, state$$4, xs$$17, ys$$4);\n}\nexport function fold2(f$$7, state$$5, xs$$18, ys$$5) {\n return fold2$$1(f$$7, state$$5, xs$$18, ys$$5);\n}\nexport function foldBack2(f$$8, xs$$19, ys$$6, state$$6) {\n return foldBack2$$1(f$$8, xs$$19, ys$$6, state$$6);\n}\nexport function unfold(f$$9, state$$7) {\n const unfoldInner = function unfoldInner($acc$$6$$51, $state$$8$$52) {\n unfoldInner: while (true) {\n const acc$$6 = $acc$$6$$51,\n state$$8 = $state$$8$$52;\n const matchValue$$3 = f$$9(state$$8);\n\n if (matchValue$$3 != null) {\n const x$$12 = matchValue$$3[0];\n const state$$9 = matchValue$$3[1];\n $acc$$6$$51 = new List(x$$12, acc$$6);\n $state$$8$$52 = state$$9;\n continue unfoldInner;\n } else {\n return reverse(acc$$6);\n }\n\n break;\n }\n };\n\n return unfoldInner(new List(), state$$7);\n}\nexport function foldIndexed3Aux($f$$10$$53, $i$$2$$54, $acc$$7$$55, $bs$$1$$56, $cs$$1$$57, $ds$$58) {\n foldIndexed3Aux: while (true) {\n const f$$10 = $f$$10$$53,\n i$$2 = $i$$2$$54,\n acc$$7 = $acc$$7$$55,\n bs$$1 = $bs$$1$$56,\n cs$$1 = $cs$$1$$57,\n ds = $ds$$58;\n var $target$$59, x$$13, xs$$20, y$$2, ys$$7, z, zs;\n\n if (bs$$1.tail != null) {\n if (cs$$1.tail != null) {\n if (ds.tail != null) {\n $target$$59 = 1;\n x$$13 = bs$$1.head;\n xs$$20 = bs$$1.tail;\n y$$2 = cs$$1.head;\n ys$$7 = cs$$1.tail;\n z = ds.head;\n zs = ds.tail;\n } else {\n $target$$59 = 2;\n }\n } else {\n $target$$59 = 2;\n }\n } else if (cs$$1.tail == null) {\n if (ds.tail == null) {\n $target$$59 = 0;\n } else {\n $target$$59 = 2;\n }\n } else {\n $target$$59 = 2;\n }\n\n switch ($target$$59) {\n case 0:\n {\n return acc$$7;\n }\n\n case 1:\n {\n $f$$10$$53 = f$$10;\n $i$$2$$54 = i$$2 + 1;\n $acc$$7$$55 = f$$10(i$$2, acc$$7, x$$13, y$$2, z);\n $bs$$1$$56 = xs$$20;\n $cs$$1$$57 = ys$$7;\n $ds$$58 = zs;\n continue foldIndexed3Aux;\n }\n\n case 2:\n {\n throw new Error(\"Lists had different lengths\");\n }\n }\n\n break;\n }\n}\nexport function foldIndexed3(f$$11, seed, xs$$21, ys$$8, zs$$1) {\n return foldIndexed3Aux(f$$11, 0, seed, xs$$21, ys$$8, zs$$1);\n}\nexport function fold3(f$$12, state$$10, xs$$22, ys$$9, zs$$2) {\n return foldIndexed3(function (_arg1$$6, acc$$8, x$$14, y$$3, z$$1) {\n return f$$12(acc$$8, x$$14, y$$3, z$$1);\n }, state$$10, xs$$22, ys$$9, zs$$2);\n}\nexport function scan(f$$13, state$$11, xs$$23) {\n const xs$$24 = scan$$1(f$$13, state$$11, xs$$23);\n return ofSeq(xs$$24);\n}\nexport function scanBack(f$$14, xs$$25, state$$12) {\n const xs$$26 = scanBack$$1(f$$14, xs$$25, state$$12);\n return ofSeq(xs$$26);\n}\nexport function length(xs$$27) {\n return fold(function (acc$$9, _arg1$$7) {\n return acc$$9 + 1;\n }, 0, xs$$27);\n}\nexport function append(xs$$28, ys$$10) {\n return fold(function (acc$$10, x$$15) {\n return new List(x$$15, acc$$10);\n }, ys$$10, reverse(xs$$28));\n}\nexport function collect(f$$15, xs$$29) {\n const xs$$30 = collect$$1(f$$15, xs$$29);\n return ofSeq(xs$$30);\n}\nexport function map(f$$16, xs$$31) {\n const xs$$32 = fold(function (acc$$11, x$$16) {\n return new List(f$$16(x$$16), acc$$11);\n }, new List(), xs$$31);\n return reverse(xs$$32);\n}\nexport function mapIndexed(f$$17, xs$$33) {\n const xs$$34 = foldIndexed(function (i$$3, acc$$12, x$$17) {\n return new List(f$$17(i$$3, x$$17), acc$$12);\n }, new List(), xs$$33);\n return reverse(xs$$34);\n}\nexport function indexed(xs$$35) {\n return mapIndexed(function (i$$4, x$$18) {\n return [i$$4, x$$18];\n }, xs$$35);\n}\nexport function map2(f$$18, xs$$36, ys$$11) {\n const xs$$37 = fold2(function (acc$$13, x$$19, y$$4) {\n return new List(f$$18(x$$19, y$$4), acc$$13);\n }, new List(), xs$$36, ys$$11);\n return reverse(xs$$37);\n}\nexport function mapIndexed2(f$$19, xs$$38, ys$$12) {\n const xs$$39 = foldIndexed2(function (i$$5, acc$$14, x$$20, y$$5) {\n return new List(f$$19(i$$5, x$$20, y$$5), acc$$14);\n }, new List(), xs$$38, ys$$12);\n return reverse(xs$$39);\n}\nexport function map3(f$$20, xs$$40, ys$$13, zs$$3) {\n const xs$$41 = fold3(function (acc$$15, x$$21, y$$6, z$$2) {\n return new List(f$$20(x$$21, y$$6, z$$2), acc$$15);\n }, new List(), xs$$40, ys$$13, zs$$3);\n return reverse(xs$$41);\n}\nexport function mapIndexed3(f$$21, xs$$42, ys$$14, zs$$4) {\n const xs$$43 = foldIndexed3(function (i$$6, acc$$16, x$$22, y$$7, z$$3) {\n return new List(f$$21(i$$6, x$$22, y$$7, z$$3), acc$$16);\n }, new List(), xs$$42, ys$$14, zs$$4);\n return reverse(xs$$43);\n}\nexport function mapFold(f$$22, s, xs$$44) {\n const patternInput$$1 = fold(function foldFn(tupledArg, x$$23) {\n const patternInput = f$$22(tupledArg[1], x$$23);\n return [new List(patternInput[0], tupledArg[0]), patternInput[1]];\n }, [new List(), s], xs$$44);\n return [reverse(patternInput$$1[0]), patternInput$$1[1]];\n}\nexport function mapFoldBack(f$$23, xs$$45, s$$2) {\n return mapFold(function (s$$3, v) {\n return f$$23(v, s$$3);\n }, s$$2, reverse(xs$$45));\n}\nexport function iterate(f$$24, xs$$46) {\n fold(function (unitVar0, x$$24) {\n f$$24(x$$24);\n }, void null, xs$$46);\n}\nexport function iterate2(f$$25, xs$$47, ys$$15) {\n fold2(function (unitVar0$$1, x$$25, y$$8) {\n f$$25(x$$25, y$$8);\n }, void null, xs$$47, ys$$15);\n}\nexport function iterateIndexed(f$$26, xs$$48) {\n foldIndexed(function (i$$7, unitVar1, x$$26) {\n f$$26(i$$7, x$$26);\n }, void null, xs$$48);\n}\nexport function iterateIndexed2(f$$27, xs$$49, ys$$16) {\n foldIndexed2(function (i$$8, unitVar1$$1, x$$27, y$$9) {\n f$$27(i$$8, x$$27, y$$9);\n }, void null, xs$$49, ys$$16);\n}\nexport function ofArray(xs$$50) {\n let res$$1 = new List();\n\n for (let i$$9 = count(xs$$50) - 1; i$$9 >= 0; i$$9--) {\n res$$1 = new List(xs$$50[i$$9], res$$1);\n }\n\n return res$$1;\n}\nexport function empty() {\n return new List();\n}\nexport function isEmpty(_arg1$$8) {\n if (_arg1$$8.tail == null) {\n return true;\n } else {\n return false;\n }\n}\nexport function tryPickIndexedAux($f$$28$$120, $i$$10$$121, $_arg1$$9$$122) {\n tryPickIndexedAux: while (true) {\n const f$$28 = $f$$28$$120,\n i$$10 = $i$$10$$121,\n _arg1$$9 = $_arg1$$9$$122;\n\n if (_arg1$$9.tail != null) {\n const result = f$$28(i$$10, _arg1$$9.head);\n\n if (result == null) {\n $f$$28$$120 = f$$28;\n $i$$10$$121 = i$$10 + 1;\n $_arg1$$9$$122 = _arg1$$9.tail;\n continue tryPickIndexedAux;\n } else {\n return result;\n }\n } else {\n return undefined;\n }\n\n break;\n }\n}\nexport function tryPickIndexed(f$$29, xs$$52) {\n return tryPickIndexedAux(f$$29, 0, xs$$52);\n}\nexport function tryPick(f$$30, xs$$53) {\n return tryPickIndexed(function (_arg1$$10, x$$29) {\n return f$$30(x$$29);\n }, xs$$53);\n}\nexport function pick(f$$31, xs$$54) {\n const matchValue$$5 = tryPick(f$$31, xs$$54);\n\n if (matchValue$$5 != null) {\n const x$$30 = value$$1(matchValue$$5);\n return x$$30;\n } else {\n throw new Error(\"List did not contain any matching elements\");\n }\n}\nexport function tryFindIndexed(f$$32, xs$$55) {\n return tryPickIndexed(function (i$$11, x$$31) {\n return f$$32(i$$11, x$$31) ? some(x$$31) : undefined;\n }, xs$$55);\n}\nexport function tryFind(f$$33, xs$$56) {\n return tryPickIndexed(function (_arg1$$11, x$$32) {\n return f$$33(x$$32) ? some(x$$32) : undefined;\n }, xs$$56);\n}\nexport function findIndexed(f$$34, xs$$57) {\n const matchValue$$6 = tryFindIndexed(f$$34, xs$$57);\n\n if (matchValue$$6 != null) {\n const x$$33 = value$$1(matchValue$$6);\n return x$$33;\n } else {\n throw new Error(\"List did not contain any matching elements\");\n }\n}\nexport function find(f$$35, xs$$58) {\n return findIndexed(function (_arg1$$12, x$$34) {\n return f$$35(x$$34);\n }, xs$$58);\n}\nexport function findBack(f$$36, xs$$59) {\n let xs$$61;\n xs$$61 = reverse(xs$$59);\n return find(f$$36, xs$$61);\n}\nexport function tryFindBack(f$$37, xs$$62) {\n let xs$$64;\n xs$$64 = reverse(xs$$62);\n return tryFind(f$$37, xs$$64);\n}\nexport function tryFindIndex(f$$38, xs$$65) {\n return tryPickIndexed(function (i$$12, x$$35) {\n return f$$38(x$$35) ? i$$12 : undefined;\n }, xs$$65);\n}\nexport function tryFindIndexBack(f$$39, xs$$66) {\n const array = ofList(xs$$66, Array);\n return tryFindIndexBack$$1(f$$39, array);\n}\nexport function findIndex(f$$40, xs$$67) {\n const matchValue$$7 = tryFindIndex(f$$40, xs$$67);\n\n if (matchValue$$7 != null) {\n const x$$36 = matchValue$$7 | 0;\n return x$$36 | 0;\n } else {\n throw new Error(\"List did not contain any matching elements\");\n }\n}\nexport function findIndexBack(f$$41, xs$$68) {\n const array$$1 = ofList(xs$$68, Array);\n return findIndexBack$$1(f$$41, array$$1) | 0;\n}\nexport function item(n, xs$$69) {\n return findIndexed(function (i$$13, _arg1$$13) {\n return n === i$$13;\n }, xs$$69);\n}\nexport function tryItem(n$$1, xs$$70) {\n return tryFindIndexed(function (i$$14, _arg1$$14) {\n return n$$1 === i$$14;\n }, xs$$70);\n}\nexport function filter(f$$42, xs$$71) {\n const xs$$72 = fold(function (acc$$17, x$$37) {\n return f$$42(x$$37) ? new List(x$$37, acc$$17) : acc$$17;\n }, new List(), xs$$71);\n return reverse(xs$$72);\n}\nexport function partition(f$$43, xs$$73) {\n return fold(function (tupledArg$$1, x$$38) {\n return f$$43(x$$38) ? [new List(x$$38, tupledArg$$1[0]), tupledArg$$1[1]] : [tupledArg$$1[0], new List(x$$38, tupledArg$$1[1])];\n }, [new List(), new List()], reverse(xs$$73));\n}\nexport function choose(f$$44, xs$$74) {\n const xs$$75 = fold(function (acc$$18, x$$39) {\n const matchValue$$8 = f$$44(x$$39);\n\n if (matchValue$$8 == null) {\n return acc$$18;\n } else {\n const y$$10 = value$$1(matchValue$$8);\n return new List(y$$10, acc$$18);\n }\n }, new List(), xs$$74);\n return reverse(xs$$75);\n}\nexport function contains(value, list, eq) {\n const loop$$1 = function loop$$1($xs$$76$$162) {\n loop$$1: while (true) {\n const xs$$76 = $xs$$76$$162;\n\n if (xs$$76.tail != null) {\n if (eq.Equals(value, xs$$76.head)) {\n return true;\n } else {\n $xs$$76$$162 = xs$$76.tail;\n continue loop$$1;\n }\n } else {\n return false;\n }\n\n break;\n }\n };\n\n return loop$$1(list);\n}\nexport function except(itemsToExclude, array$$2, eq$$1) {\n if (isEmpty(array$$2)) {\n return array$$2;\n } else {\n const cached = createMutable(itemsToExclude, eq$$1);\n return filter(function f$$45(arg00) {\n return addToSet(arg00, cached);\n }, array$$2);\n }\n}\nexport function initialize(n$$2, f$$46) {\n let xs$$78 = new List();\n\n for (let i$$15 = 0; i$$15 <= n$$2 - 1; i$$15++) {\n xs$$78 = new List(f$$46(i$$15), xs$$78);\n }\n\n return reverse(xs$$78);\n}\nexport function replicate(n$$3, x$$40) {\n return initialize(n$$3, function (_arg1$$15) {\n return x$$40;\n });\n}\nexport function reduce(f$$47, _arg1$$16) {\n if (_arg1$$16.tail != null) {\n return fold(f$$47, _arg1$$16.head, _arg1$$16.tail);\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function reduceBack(f$$48, _arg1$$17) {\n if (_arg1$$17.tail != null) {\n return foldBack(f$$48, _arg1$$17.tail, _arg1$$17.head);\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function forAll(f$$49, xs$$79) {\n return fold(function (acc$$19, x$$41) {\n return acc$$19 ? f$$49(x$$41) : false;\n }, true, xs$$79);\n}\nexport function forAll2(f$$50, xs$$80, ys$$17) {\n return fold2(function (acc$$20, x$$42, y$$11) {\n return acc$$20 ? f$$50(x$$42, y$$11) : false;\n }, true, xs$$80, ys$$17);\n}\nexport function exists($f$$51$$180, $_arg1$$18$$181) {\n exists: while (true) {\n const f$$51 = $f$$51$$180,\n _arg1$$18 = $_arg1$$18$$181;\n\n if (_arg1$$18.tail != null) {\n if (f$$51(_arg1$$18.head)) {\n return true;\n } else {\n $f$$51$$180 = f$$51;\n $_arg1$$18$$181 = _arg1$$18.tail;\n continue exists;\n }\n } else {\n return false;\n }\n\n break;\n }\n}\nexport function exists2($f$$52$$182, $bs$$2$$183, $cs$$2$$184) {\n exists2: while (true) {\n const f$$52 = $f$$52$$182,\n bs$$2 = $bs$$2$$183,\n cs$$2 = $cs$$2$$184;\n var $target$$185, x$$44, xs$$82, y$$12, ys$$18;\n\n if (bs$$2.tail != null) {\n if (cs$$2.tail != null) {\n $target$$185 = 1;\n x$$44 = bs$$2.head;\n xs$$82 = bs$$2.tail;\n y$$12 = cs$$2.head;\n ys$$18 = cs$$2.tail;\n } else {\n $target$$185 = 2;\n }\n } else if (cs$$2.tail == null) {\n $target$$185 = 0;\n } else {\n $target$$185 = 2;\n }\n\n switch ($target$$185) {\n case 0:\n {\n return false;\n }\n\n case 1:\n {\n if (f$$52(x$$44, y$$12)) {\n return true;\n } else {\n $f$$52$$182 = f$$52;\n $bs$$2$$183 = xs$$82;\n $cs$$2$$184 = ys$$18;\n continue exists2;\n }\n }\n\n case 2:\n {\n throw new Error(\"Lists had different lengths\");\n }\n }\n\n break;\n }\n}\nexport function unzip(xs$$83) {\n return foldBack(function (tupledArg$$2, tupledArg$$3) {\n return [new List(tupledArg$$2[0], tupledArg$$3[0]), new List(tupledArg$$2[1], tupledArg$$3[1])];\n }, xs$$83, [new List(), new List()]);\n}\nexport function unzip3(xs$$84) {\n return foldBack(function (tupledArg$$4, tupledArg$$5) {\n return [new List(tupledArg$$4[0], tupledArg$$5[0]), new List(tupledArg$$4[1], tupledArg$$5[1]), new List(tupledArg$$4[2], tupledArg$$5[2])];\n }, xs$$84, [new List(), new List(), new List()]);\n}\nexport function zip(xs$$85, ys$$19) {\n return map2(function (x$$47, y$$15) {\n return [x$$47, y$$15];\n }, xs$$85, ys$$19);\n}\nexport function zip3(xs$$86, ys$$20, zs$$5) {\n return map3(function (x$$48, y$$16, z$$5) {\n return [x$$48, y$$16, z$$5];\n }, xs$$86, ys$$20, zs$$5);\n}\nexport function sort(xs$$87, comparer$$1) {\n let xs$$89;\n const xs$$88 = ofList(xs$$87, Array);\n xs$$88.sort(function comparer$$2(x$$49, y$$17) {\n return comparer$$1.Compare(x$$49, y$$17);\n });\n xs$$89 = xs$$88;\n return ofArray(xs$$89);\n}\nexport function sortBy(projection, xs$$90, comparer$$3) {\n let xs$$92;\n const xs$$91 = ofList(xs$$90, Array);\n xs$$91.sort(function comparer$$4(x$$50, y$$18) {\n return comparer$$3.Compare(projection(x$$50), projection(y$$18));\n });\n xs$$92 = xs$$91;\n return ofArray(xs$$92);\n}\nexport function sortDescending(xs$$93, comparer$$5) {\n let xs$$95;\n const xs$$94 = ofList(xs$$93, Array);\n xs$$94.sort(function comparer$$6(x$$51, y$$19) {\n return comparer$$5.Compare(x$$51, y$$19) * -1;\n });\n xs$$95 = xs$$94;\n return ofArray(xs$$95);\n}\nexport function sortByDescending(projection$$1, xs$$96, comparer$$7) {\n let xs$$98;\n const xs$$97 = ofList(xs$$96, Array);\n xs$$97.sort(function comparer$$8(x$$52, y$$20) {\n return comparer$$7.Compare(projection$$1(x$$52), projection$$1(y$$20)) * -1;\n });\n xs$$98 = xs$$97;\n return ofArray(xs$$98);\n}\nexport function sortWith(comparer$$9, xs$$99) {\n let xs$$101;\n const xs$$100 = ofList(xs$$99, Array);\n xs$$100.sort(comparer$$9);\n xs$$101 = xs$$100;\n return ofArray(xs$$101);\n}\nexport function sum(xs$$102, adder) {\n return fold(function (acc$$21, x$$53) {\n return adder.Add(acc$$21, x$$53);\n }, adder.GetZero(), xs$$102);\n}\nexport function sumBy(f$$53, xs$$103, adder$$1) {\n return fold(function (acc$$22, x$$54) {\n return adder$$1.Add(acc$$22, f$$53(x$$54));\n }, adder$$1.GetZero(), xs$$103);\n}\nexport function maxBy(projection$$2, xs$$104, comparer$$11) {\n return reduce(function (x$$55, y$$21) {\n return comparer$$11.Compare(projection$$2(y$$21), projection$$2(x$$55)) > 0 ? y$$21 : x$$55;\n }, xs$$104);\n}\nexport function max(li, comparer$$12) {\n return reduce(function (x$$56, y$$22) {\n return comparer$$12.Compare(y$$22, x$$56) > 0 ? y$$22 : x$$56;\n }, li);\n}\nexport function minBy(projection$$3, xs$$105, comparer$$13) {\n return reduce(function (x$$57, y$$23) {\n return comparer$$13.Compare(projection$$3(y$$23), projection$$3(x$$57)) > 0 ? x$$57 : y$$23;\n }, xs$$105);\n}\nexport function min(xs$$106, comparer$$14) {\n return reduce(function (x$$58, y$$24) {\n return comparer$$14.Compare(y$$24, x$$58) > 0 ? x$$58 : y$$24;\n }, xs$$106);\n}\nexport function average(xs$$107, averager) {\n const total = fold(function (acc$$23, x$$59) {\n return averager.Add(acc$$23, x$$59);\n }, averager.GetZero(), xs$$107);\n return averager.DivideByInt(total, length(xs$$107));\n}\nexport function averageBy(f$$54, xs$$108, averager$$1) {\n const total$$1 = fold(function (acc$$24, x$$60) {\n return averager$$1.Add(acc$$24, f$$54(x$$60));\n }, averager$$1.GetZero(), xs$$108);\n return averager$$1.DivideByInt(total$$1, length(xs$$108));\n}\nexport function permute(f$$55, xs$$109) {\n let xs$$110;\n let array$$3;\n array$$3 = ofList(xs$$109, Array);\n xs$$110 = permute$$1(f$$55, array$$3);\n return ofArray(xs$$110);\n}\nexport function chunkBySize(chunkSize, xs$$111) {\n let xs$$114;\n let xs$$112;\n let array$$4;\n array$$4 = ofList(xs$$111, Array);\n xs$$112 = chunkBySize$$1(chunkSize, array$$4);\n xs$$114 = ofArray(xs$$112);\n return map(function f$$56(xs$$113) {\n return ofArray(xs$$113);\n }, xs$$114);\n}\nexport function skip(i$$16, xs$$115) {\n const skipInner = function skipInner($i$$17$$240, $xs$$116$$241) {\n skipInner: while (true) {\n const i$$17 = $i$$17$$240,\n xs$$116 = $xs$$116$$241;\n\n if (i$$17 === 0) {\n return xs$$116;\n } else if (xs$$116.tail != null) {\n $i$$17$$240 = i$$17 - 1;\n $xs$$116$$241 = xs$$116.tail;\n continue skipInner;\n } else {\n throw new Error(\"The input sequence has an insufficient number of elements.\");\n }\n\n break;\n }\n };\n\n if (i$$16 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$242, i$$20, xs$$119;\n\n if (i$$16 === 0) {\n $target$$242 = 0;\n } else if (i$$16 === 1) {\n if (xs$$115.tail != null) {\n $target$$242 = 1;\n } else {\n $target$$242 = 2;\n i$$20 = i$$16;\n xs$$119 = xs$$115;\n }\n } else {\n $target$$242 = 2;\n i$$20 = i$$16;\n xs$$119 = xs$$115;\n }\n\n switch ($target$$242) {\n case 0:\n {\n return xs$$115;\n }\n\n case 1:\n {\n return xs$$115.tail;\n }\n\n case 2:\n {\n return skipInner(i$$20, xs$$119);\n }\n }\n }\n}\nexport function skipWhile($predicate$$243, $xs$$120$$244) {\n skipWhile: while (true) {\n const predicate = $predicate$$243,\n xs$$120 = $xs$$120$$244;\n var $target$$245, h$$4, t$$4;\n\n if (xs$$120.tail != null) {\n if (predicate(xs$$120.head)) {\n $target$$245 = 0;\n h$$4 = xs$$120.head;\n t$$4 = xs$$120.tail;\n } else {\n $target$$245 = 1;\n }\n } else {\n $target$$245 = 1;\n }\n\n switch ($target$$245) {\n case 0:\n {\n $predicate$$243 = predicate;\n $xs$$120$$244 = t$$4;\n continue skipWhile;\n }\n\n case 1:\n {\n return xs$$120;\n }\n }\n\n break;\n }\n}\nexport function takeSplitAux($error$$246, $i$$21$$247, $acc$$25$$248, $xs$$121$$249) {\n takeSplitAux: while (true) {\n const error = $error$$246,\n i$$21 = $i$$21$$247,\n acc$$25 = $acc$$25$$248,\n xs$$121 = $xs$$121$$249;\n\n if (i$$21 === 0) {\n return [reverse(acc$$25), xs$$121];\n } else if (xs$$121.tail != null) {\n $error$$246 = error;\n $i$$21$$247 = i$$21 - 1;\n $acc$$25$$248 = new List(xs$$121.head, acc$$25);\n $xs$$121$$249 = xs$$121.tail;\n continue takeSplitAux;\n } else {\n if (error) {\n throw new Error(\"The input sequence has an insufficient number of elements.\");\n } else {\n return [reverse(acc$$25), xs$$121];\n }\n }\n\n break;\n }\n}\nexport function take(i$$22, xs$$123) {\n if (i$$22 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$252, i$$25, xs$$124;\n\n if (i$$22 === 0) {\n $target$$252 = 0;\n } else if (i$$22 === 1) {\n if (xs$$123.tail != null) {\n $target$$252 = 1;\n } else {\n $target$$252 = 2;\n i$$25 = i$$22;\n xs$$124 = xs$$123;\n }\n } else {\n $target$$252 = 2;\n i$$25 = i$$22;\n xs$$124 = xs$$123;\n }\n\n switch ($target$$252) {\n case 0:\n {\n return new List();\n }\n\n case 1:\n {\n return new List(xs$$123.head, new List());\n }\n\n case 2:\n {\n const tuple = takeSplitAux(true, i$$25, new List(), xs$$124);\n return tuple[0];\n }\n }\n }\n}\nexport function takeWhile(predicate$$1, xs$$125) {\n if (xs$$125.tail != null) {\n if (xs$$125.tail.tail == null) {\n if (predicate$$1(xs$$125.head)) {\n return xs$$125;\n } else {\n return xs$$125.tail;\n }\n } else {\n if (!predicate$$1(xs$$125.head)) {\n return new List();\n } else {\n return new List(xs$$125.head, takeWhile(predicate$$1, xs$$125.tail));\n }\n }\n } else {\n return xs$$125;\n }\n}\nexport function truncate(i$$26, xs$$127) {\n if (i$$26 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$257, i$$29, xs$$128;\n\n if (i$$26 === 0) {\n $target$$257 = 0;\n } else if (i$$26 === 1) {\n if (xs$$127.tail != null) {\n $target$$257 = 1;\n } else {\n $target$$257 = 2;\n i$$29 = i$$26;\n xs$$128 = xs$$127;\n }\n } else {\n $target$$257 = 2;\n i$$29 = i$$26;\n xs$$128 = xs$$127;\n }\n\n switch ($target$$257) {\n case 0:\n {\n return new List();\n }\n\n case 1:\n {\n return new List(xs$$127.head, new List());\n }\n\n case 2:\n {\n const tuple$$1 = takeSplitAux(false, i$$29, new List(), xs$$128);\n return tuple$$1[0];\n }\n }\n }\n}\nexport function splitAt(i$$30, xs$$129) {\n if (i$$30 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$260, i$$33, xs$$131;\n\n if (i$$30 === 0) {\n $target$$260 = 0;\n } else if (i$$30 === 1) {\n if (xs$$129.tail != null) {\n $target$$260 = 1;\n } else {\n $target$$260 = 2;\n i$$33 = i$$30;\n xs$$131 = xs$$129;\n }\n } else {\n $target$$260 = 2;\n i$$33 = i$$30;\n xs$$131 = xs$$129;\n }\n\n switch ($target$$260) {\n case 0:\n {\n return [new List(), xs$$129];\n }\n\n case 1:\n {\n return [new List(xs$$129.head, new List()), xs$$129.tail];\n }\n\n case 2:\n {\n return takeSplitAux(true, i$$33, new List(), xs$$131);\n }\n }\n }\n}\nexport function outOfRange() {\n throw new Error(\"Index out of range\");\n}\nexport function slice(lower, upper, xs$$132) {\n const lower$$1 = defaultArg(lower, 0) | 0;\n const hasUpper = upper != null;\n\n if (lower$$1 < 0) {\n return outOfRange();\n } else if (hasUpper ? upper < lower$$1 : false) {\n return new List();\n } else {\n let lastIndex = -1 | 0;\n let res$$2;\n const state$$13 = new List();\n res$$2 = foldIndexed(function f$$57(i$$34, acc$$26, x$$67) {\n lastIndex = i$$34;\n\n if (lower$$1 <= i$$34 ? !hasUpper ? true : i$$34 <= upper : false) {\n return new List(x$$67, acc$$26);\n } else {\n return acc$$26;\n }\n }, state$$13, xs$$132);\n\n if (lower$$1 > lastIndex + 1 ? true : hasUpper ? upper > lastIndex : false) {\n outOfRange();\n } else {\n void null;\n }\n\n return reverse(res$$2);\n }\n}\nexport function distinctBy(projection$$4, xs$$134, eq$$2) {\n const hashSet = createMutable([], eq$$2);\n return filter(function f$$58($arg$$1) {\n const arg00$$1 = projection$$4($arg$$1);\n return addToSet(arg00$$1, hashSet);\n }, xs$$134);\n}\nexport function distinct(xs$$136, eq$$3) {\n return distinctBy(function (x$$68) {\n return x$$68;\n }, xs$$136, eq$$3);\n}\nexport function exactlyOne(xs$$137) {\n if (xs$$137.tail != null) {\n if (xs$$137.tail.tail != null) {\n throw new Error(\"Input list too long\\\\nParameter name: list\");\n } else {\n return xs$$137.head;\n }\n } else {\n throw new Error(\"The input sequence was empty\\\\nParameter name: list\");\n }\n}\nexport function groupBy(projection$$5, xs$$139, eq$$4) {\n const dict = createMutable$$1([], eq$$4);\n let keys = new List();\n iterate(function f$$59(v$$2) {\n const key = projection$$5(v$$2);\n const matchValue$$16 = tryGetValue(dict, key, null);\n\n if (matchValue$$16[0]) {\n dict.set(key, new List(v$$2, matchValue$$16[1]));\n } else {\n addToDict(dict, key, new List(v$$2, new List()));\n keys = new List(key, keys);\n }\n }, xs$$139);\n let result$$1 = new List();\n const xs$$141 = keys;\n iterate(function f$$60(key$$1) {\n result$$1 = new List([key$$1, reverse(getItemFromDict(dict, key$$1))], result$$1);\n }, xs$$141);\n return result$$1;\n}\nexport function countBy(projection$$6, xs$$142, eq$$5) {\n const dict$$1 = createMutable$$1([], eq$$5);\n let keys$$1 = new List();\n iterate(function f$$61(v$$3) {\n const key$$2 = projection$$6(v$$3);\n const matchValue$$17 = tryGetValue(dict$$1, key$$2, 0);\n\n if (matchValue$$17[0]) {\n dict$$1.set(key$$2, matchValue$$17[1] + 1);\n } else {\n dict$$1.set(key$$2, 1);\n keys$$1 = new List(key$$2, keys$$1);\n }\n }, xs$$142);\n let result$$2 = new List();\n const xs$$144 = keys$$1;\n iterate(function f$$62(key$$3) {\n result$$2 = new List([key$$3, getItemFromDict(dict$$1, key$$3)], result$$2);\n }, xs$$144);\n return result$$2;\n}\nexport function where(predicate$$2, source) {\n return filter(predicate$$2, source);\n}\nexport function pairwise(source$$1) {\n const xs$$145 = pairwise$$1(source$$1);\n return ofSeq(xs$$145);\n}\nexport function windowed(windowSize, source$$2) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n } else {\n void null;\n }\n\n let res$$3 = new List();\n\n for (let i$$35 = length(source$$2); i$$35 >= windowSize; i$$35--) {\n res$$3 = new List(slice(i$$35 - windowSize, i$$35 - 1, source$$2), res$$3);\n }\n\n return res$$3;\n}\nexport function splitInto(chunks, source$$3) {\n let xs$$148;\n let xs$$146;\n let array$$5;\n array$$5 = ofList(source$$3, Array);\n xs$$146 = splitInto$$1(chunks, array$$5);\n xs$$148 = ofArray(xs$$146);\n return map(function f$$63(xs$$147) {\n return ofArray(xs$$147);\n }, xs$$148);\n}\nexport function transpose(lists$$1) {\n let xs$$150;\n let source$$5;\n source$$5 = transpose$$1(lists$$1);\n xs$$150 = map$$1(ofSeq, source$$5);\n return ofSeq(xs$$150);\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VegaChart',{attrs:{\"title\":_vm.$t('charts.ostanizdrav.usercount.title'),\"name\":\"usercount-chart\",\"data\":_vm.plotData,\"description\":_vm.$t('charts.ostanizdrav.usercount.description'),\"faqAnchor\":\"ostanizdrav-usercount\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function ($t) {\n return {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\",\n \"width\": \"container\",\n \"height\": 250,\n \"data\": {\n \"url\": \"https://ostanizdrav.sledilnik.org/plots/data.json\"\n },\n \"transform\": [\n {\n \"window\": [\n {\n \"op\": \"sum\",\n \"field\": \"users_published\",\n \"as\": \"sum_published\"\n }\n ]\n }\n ],\n \"layer\": [\n {\n \"encoding\": {\n \"x\": {\n \"title\": $t('charts.ostanizdrav.usercount.date'),\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\"\n },\n \"y\": {\n \"field\": \"users_published\",\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.usercount.users'),\n \"titleColor\": \"steelblue\"\n }\n },\n \"text\": {\n \"field\": \"users_published\",\n \"type\": \"quantitative\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"bar\"\n }\n },\n {\n \"mark\": {\n \"type\": \"text\",\n \"color\": \"steelblue\",\n \"align\": \"right\",\n \"baseline\": \"middle\",\n \"fontSize\": 9,\n \"angle\": 90,\n \"dx\": -3,\n \"dy\": -4\n }\n }\n ]\n },\n {\n \"encoding\": {\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0,\n \"tickCount\": \"week\",\n \"labelExpr\": \"[timeFormat(datum.value, '%d'), timeFormat(datum.value, '%d') <= '07' ? timeFormat(datum.value, '%b') : '']\",\n \"gridDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n },\n \"tickDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n }\n }\n },\n \"y\": {\n \"field\": \"sum_published\",\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.usercount.runningTotal'),\n \"titleColor\": \"#b4464b\"\n }\n },\n \"text\": {\n \"field\": \"sum_published\",\n \"type\": \"quantitative\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"line\",\n \"interpolate\": \"monotone\",\n \"point\": {\n \"color\": \"#b4464b\"\n },\n \"color\": \"#b4464b\"\n }\n }\n ]\n }\n ],\n \"resolve\": {\n \"scale\": {\n \"y\": \"independent\"\n }\n }\n }\n}","\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserCountChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserCountChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UserCountChart.vue?vue&type=template&id=4764f2e9&\"\nimport script from \"./UserCountChart.vue?vue&type=script&lang=js&\"\nexport * from \"./UserCountChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defaultArg, value as value$$15, some } from \"./Option.js\";\nimport { min as min$$1, compare, addToDict, addToSet, getItemFromDict, tryGetValue, max as max$$1, comparePrimitives } from \"./Util.js\";\nimport { createMutable } from \"./Map.js\";\nimport { createMutable as createMutable$$1 } from \"./Set.js\";\nimport { List } from \"./Types.js\";\nimport { iterate as iterate$$1 } from \"./Seq.js\";\nconst indexNotFoundMsg = \"An index satisfying the predicate was not found in the collection.\";\nexport function append(array1, array2, cons) {\n if (ArrayBuffer.isView(array1)) {\n const len1 = array1.length | 0;\n const len2 = array2.length | 0;\n const newArray = new cons(len1 + len2);\n\n for (let i = 0; i <= len1 - 1; i++) {\n newArray[i] = array1[i];\n }\n\n for (let i$$1 = 0; i$$1 <= len2 - 1; i$$1++) {\n newArray[i$$1 + len1] = array2[i$$1];\n }\n\n return newArray;\n } else {\n return array1.concat(array2);\n }\n}\nexport function filter(predicate, array) {\n return array.filter(predicate);\n}\nexport function fill(target, targetIndex, count, value) {\n target.fill(value, targetIndex, targetIndex + count);\n return target;\n}\nexport function getSubArray(array$$3, start$$1, count$$2) {\n return array$$3.slice(start$$1, start$$1 + count$$2);\n}\nexport function last(array$$5) {\n if (array$$5.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n return array$$5[array$$5.length - 1];\n}\nexport function tryLast(array$$6) {\n if (array$$6.length === 0) {\n return undefined;\n } else {\n return some(array$$6[array$$6.length - 1]);\n }\n}\nexport function mapIndexed(f, source, cons$$1) {\n if (ArrayBuffer.isView(source)) {\n const len = source.length | 0;\n const target$$1 = new cons$$1(len);\n\n for (let i$$2 = 0; i$$2 <= len - 1; i$$2++) {\n target$$1[i$$2] = f(i$$2, source[i$$2]);\n }\n\n return target$$1;\n } else {\n return source.map(function (delegateArg0, delegateArg1) {\n return f(delegateArg1, delegateArg0);\n });\n }\n}\nexport function map(f$$1, source$$1, cons$$2) {\n if (ArrayBuffer.isView(source$$1)) {\n const len$$1 = source$$1.length | 0;\n const target$$2 = new cons$$2(len$$1);\n\n for (let i$$4 = 0; i$$4 <= len$$1 - 1; i$$4++) {\n target$$2[i$$4] = f$$1(source$$1[i$$4]);\n }\n\n return target$$2;\n } else {\n return source$$1.map(function mapping$$1(x$$1) {\n return f$$1(x$$1);\n });\n }\n}\nexport function mapIndexed2(f$$2, source1, source2, cons$$3) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result = new cons$$3(source1.length);\n\n for (let i$$5 = 0; i$$5 <= source1.length - 1; i$$5++) {\n result[i$$5] = f$$2(i$$5, source1[i$$5], source2[i$$5]);\n }\n\n return result;\n}\nexport function map2(f$$3, source1$$1, source2$$1, cons$$4) {\n if (source1$$1.length !== source2$$1.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$1 = new cons$$4(source1$$1.length);\n\n for (let i$$6 = 0; i$$6 <= source1$$1.length - 1; i$$6++) {\n result$$1[i$$6] = f$$3(source1$$1[i$$6], source2$$1[i$$6]);\n }\n\n return result$$1;\n}\nexport function mapIndexed3(f$$4, source1$$2, source2$$2, source3, cons$$5) {\n if (source1$$2.length !== source2$$2.length ? true : source2$$2.length !== source3.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$2 = new cons$$5(source1$$2.length);\n\n for (let i$$7 = 0; i$$7 <= source1$$2.length - 1; i$$7++) {\n result$$2[i$$7] = f$$4(i$$7, source1$$2[i$$7], source2$$2[i$$7], source3[i$$7]);\n }\n\n return result$$2;\n}\nexport function map3(f$$5, source1$$3, source2$$3, source3$$1, cons$$6) {\n if (source1$$3.length !== source2$$3.length ? true : source2$$3.length !== source3$$1.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$3 = new cons$$6(source1$$3.length);\n\n for (let i$$8 = 0; i$$8 <= source1$$3.length - 1; i$$8++) {\n result$$3[i$$8] = f$$5(source1$$3[i$$8], source2$$3[i$$8], source3$$1[i$$8]);\n }\n\n return result$$3;\n}\nexport function mapFold(mapping$$2, state, array$$9, cons$$7) {\n const matchValue = array$$9.length | 0;\n\n if (matchValue === 0) {\n return [[], state];\n } else {\n let acc = state;\n const res = new cons$$7(matchValue);\n\n for (let i$$9 = 0; i$$9 <= array$$9.length - 1; i$$9++) {\n const patternInput = mapping$$2(acc, array$$9[i$$9]);\n res[i$$9] = patternInput[0];\n acc = patternInput[1];\n }\n\n return [res, acc];\n }\n}\nexport function mapFoldBack(mapping$$3, array$$10, state$$1, cons$$8) {\n const matchValue$$1 = array$$10.length | 0;\n\n if (matchValue$$1 === 0) {\n return [[], state$$1];\n } else {\n let acc$$1 = state$$1;\n const res$$1 = new cons$$8(matchValue$$1);\n\n for (let i$$10 = array$$10.length - 1; i$$10 >= 0; i$$10--) {\n const patternInput$$1 = mapping$$3(array$$10[i$$10], acc$$1);\n res$$1[i$$10] = patternInput$$1[0];\n acc$$1 = patternInput$$1[1];\n }\n\n return [res$$1, acc$$1];\n }\n}\nexport function indexed(source$$2) {\n const len$$4 = source$$2.length | 0;\n const target$$3 = new Array(len$$4);\n\n for (let i$$11 = 0; i$$11 <= len$$4 - 1; i$$11++) {\n target$$3[i$$11] = [i$$11, source$$2[i$$11]];\n }\n\n return target$$3;\n}\nexport function truncate(count$$4, array$$11) {\n const count$$5 = max$$1(comparePrimitives, 0, count$$4) | 0;\n return array$$11.slice(0, 0 + count$$5);\n}\nexport function concat(arrays, cons$$9) {\n var arr$$4;\n const arrays$$1 = Array.isArray(arrays) ? arrays : Array.from(arrays);\n const matchValue$$2 = arrays$$1.length | 0;\n\n switch (matchValue$$2) {\n case 0:\n {\n return new cons$$9(0);\n }\n\n case 1:\n {\n return arrays$$1[0];\n }\n\n default:\n {\n if (arr$$4 = arrays$$1[0], ArrayBuffer.isView(arr$$4)) {\n let totalIdx = 0;\n let totalLength = 0;\n\n for (let idx = 0; idx <= arrays$$1.length - 1; idx++) {\n const arr$$5 = arrays$$1[idx];\n totalLength = totalLength + arr$$5.length;\n }\n\n const result$$4 = new cons$$9(totalLength);\n\n for (let idx$$1 = 0; idx$$1 <= arrays$$1.length - 1; idx$$1++) {\n const arr$$6 = arrays$$1[idx$$1];\n\n for (let j = 0; j <= arr$$6.length - 1; j++) {\n result$$4[totalIdx] = arr$$6[j];\n totalIdx = totalIdx + 1;\n }\n }\n\n return result$$4;\n } else {\n return arrays$$1[0].concat(...arrays$$1.slice(1));\n }\n }\n }\n}\nexport function collect(mapping$$4, array$$14, cons$$10) {\n const mapped = map(mapping$$4, array$$14, Array);\n return concat(mapped, cons$$10);\n}\nexport function countBy(projection, array$$15, eq) {\n const dict = createMutable([], eq);\n const keys = [];\n\n for (let idx$$2 = 0; idx$$2 <= array$$15.length - 1; idx$$2++) {\n const value$$2 = array$$15[idx$$2];\n const key = projection(value$$2);\n const matchValue$$3 = tryGetValue(dict, key, 0);\n\n if (matchValue$$3[0]) {\n dict.set(key, matchValue$$3[1] + 1);\n } else {\n dict.set(key, 1);\n const value$$3 = keys.push(key);\n void value$$3;\n }\n }\n\n const result$$5 = map(function (key$$1) {\n return [key$$1, getItemFromDict(dict, key$$1)];\n }, keys, Array);\n return result$$5;\n}\nexport function distinctBy(projection$$1, array$$17, eq$$1) {\n const hashSet = createMutable$$1([], eq$$1);\n return filter(function predicate$$2($arg$$3) {\n const arg00 = projection$$1($arg$$3);\n return addToSet(arg00, hashSet);\n }, array$$17);\n}\nexport function distinct(array$$19, eq$$2) {\n return distinctBy(function (x$$2) {\n return x$$2;\n }, array$$19, eq$$2);\n}\nexport function where(predicate$$3, array$$20) {\n return array$$20.filter(predicate$$3);\n}\nexport function contains(value$$4, array$$22, eq$$3) {\n const loop = function loop($i$$12$$79) {\n loop: while (true) {\n const i$$12 = $i$$12$$79;\n\n if (i$$12 >= array$$22.length) {\n return false;\n } else if (eq$$3.Equals(value$$4, array$$22[i$$12])) {\n return true;\n } else {\n $i$$12$$79 = i$$12 + 1;\n continue loop;\n }\n\n break;\n }\n };\n\n return loop(0);\n}\nexport function except(itemsToExclude, array$$23, eq$$4) {\n if (array$$23.length === 0) {\n return array$$23;\n } else {\n const cached = createMutable$$1(itemsToExclude, eq$$4);\n return array$$23.filter(function predicate$$5(arg00$$1) {\n return addToSet(arg00$$1, cached);\n });\n }\n}\nexport function groupBy(projection$$2, array$$26, cons$$11, eq$$5) {\n const dict$$1 = createMutable([], eq$$5);\n const keys$$1 = [];\n\n for (let idx$$3 = 0; idx$$3 <= array$$26.length - 1; idx$$3++) {\n const v = array$$26[idx$$3];\n const key$$2 = projection$$2(v);\n const matchValue$$4 = tryGetValue(dict$$1, key$$2, null);\n\n if (matchValue$$4[0]) {\n dict$$1.set(key$$2, new List(v, matchValue$$4[1]));\n } else {\n addToDict(dict$$1, key$$2, new List(v, new List()));\n const value$$5 = keys$$1.push(key$$2);\n void value$$5;\n }\n }\n\n const result$$6 = map(function (key$$3) {\n var array$$28;\n return [key$$3, (array$$28 = cons$$11.from(getItemFromDict(dict$$1, key$$3)), (array$$28.reverse()))];\n }, keys$$1, Array);\n return result$$6;\n}\nexport function empty(cons$$12) {\n return new cons$$12(0);\n}\nexport function singleton(value$$6, cons$$14) {\n const ar = new cons$$14(1);\n ar[0] = value$$6;\n return ar;\n}\nexport function initialize(count$$8, initializer, cons$$15) {\n if (count$$8 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n const result$$7 = new cons$$15(count$$8);\n\n for (let i$$13 = 0; i$$13 <= count$$8 - 1; i$$13++) {\n result$$7[i$$13] = initializer(i$$13);\n }\n\n return result$$7;\n}\nexport function pairwise(array$$30) {\n if (array$$30.length < 2) {\n return [];\n } else {\n const count$$9 = array$$30.length - 1 | 0;\n const result$$8 = new Array(count$$9);\n\n for (let i$$14 = 0; i$$14 <= count$$9 - 1; i$$14++) {\n result$$8[i$$14] = [array$$30[i$$14], array$$30[i$$14 + 1]];\n }\n\n return result$$8;\n }\n}\nexport function replicate(count$$10, initial, cons$$16) {\n if (count$$10 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n const result$$9 = new cons$$16(count$$10);\n\n for (let i$$15 = 0; i$$15 <= result$$9.length - 1; i$$15++) {\n result$$9[i$$15] = initial;\n }\n\n return result$$9;\n}\nexport function copy(array$$31, cons$$17) {\n return array$$31.slice();\n}\nexport function reverse(array$$33, cons$$18) {\n const array$$35 = array$$33.slice();\n return array$$35.reverse();\n}\nexport function scan(folder, state$$2, array$$37, cons$$19) {\n const res$$2 = new cons$$19(array$$37.length + 1);\n res$$2[0] = state$$2;\n\n for (let i$$16 = 0; i$$16 <= array$$37.length - 1; i$$16++) {\n res$$2[i$$16 + 1] = folder(res$$2[i$$16], array$$37[i$$16]);\n }\n\n return res$$2;\n}\nexport function scanBack(folder$$1, array$$38, state$$3, cons$$20) {\n const res$$3 = new cons$$20(array$$38.length + 1);\n res$$3[array$$38.length] = state$$3;\n\n for (let i$$17 = array$$38.length - 1; i$$17 >= 0; i$$17--) {\n res$$3[i$$17] = folder$$1(array$$38[i$$17], res$$3[i$$17 + 1]);\n }\n\n return res$$3;\n}\nexport function skip(count$$11, array$$39, cons$$21) {\n if (count$$11 > array$$39.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n if (count$$11 === array$$39.length) {\n return new cons$$21(0);\n } else {\n const count$$12 = (count$$11 < 0 ? 0 : count$$11) | 0;\n return array$$39.slice(count$$12);\n }\n}\nexport function skipWhile(predicate$$7, array$$41, cons$$23) {\n let count$$14 = 0;\n\n while (count$$14 < array$$41.length ? predicate$$7(array$$41[count$$14]) : false) {\n count$$14 = count$$14 + 1;\n }\n\n if (count$$14 === array$$41.length) {\n return new cons$$23(0);\n } else {\n const count$$15 = count$$14 | 0;\n return array$$41.slice(count$$15);\n }\n}\nexport function take(count$$16, array$$43, cons$$25) {\n if (count$$16 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n if (count$$16 > array$$43.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n if (count$$16 === 0) {\n return new cons$$25(0);\n } else {\n return array$$43.slice(0, 0 + count$$16);\n }\n}\nexport function takeWhile(predicate$$8, array$$45, cons$$27) {\n let count$$18 = 0;\n\n while (count$$18 < array$$45.length ? predicate$$8(array$$45[count$$18]) : false) {\n count$$18 = count$$18 + 1;\n }\n\n if (count$$18 === 0) {\n return new cons$$27(0);\n } else {\n const count$$19 = count$$18 | 0;\n return array$$45.slice(0, 0 + count$$19);\n }\n}\nexport function addInPlace(x$$3, array$$47) {\n const value$$7 = array$$47.push(x$$3);\n void value$$7;\n}\nexport function addRangeInPlace(range, array$$49) {\n iterate$$1(function (x$$4) {\n const value$$8 = array$$49.push(x$$4);\n void value$$8;\n }, range);\n}\nexport function removeInPlace(item$$5, array$$51) {\n const i$$18 = array$$51.indexOf(item$$5);\n\n if (i$$18 > -1) {\n const value$$9 = array$$51.splice(i$$18, 1);\n void value$$9;\n return true;\n } else {\n return false;\n }\n}\nexport function removeAllInPlace(predicate$$9, array$$54) {\n const countRemoveAll = function countRemoveAll(count$$20) {\n const i$$19 = array$$54.findIndex(predicate$$9);\n\n if (i$$19 > -1) {\n const value$$10 = array$$54.splice(i$$19, 1);\n void value$$10;\n return countRemoveAll(count$$20) + 1 | 0;\n } else {\n return count$$20 | 0;\n }\n };\n\n return countRemoveAll(0) | 0;\n}\nexport function copyTo(source$$3, sourceIndex, target$$4, targetIndex$$1, count$$21) {\n const diff = targetIndex$$1 - sourceIndex | 0;\n\n for (let i$$20 = sourceIndex; i$$20 <= sourceIndex + count$$21 - 1; i$$20++) {\n target$$4[i$$20 + diff] = source$$3[i$$20];\n }\n}\nexport function partition(f$$6, source$$4, cons$$29) {\n const len$$7 = source$$4.length | 0;\n const res1 = new cons$$29(len$$7);\n const res2 = new cons$$29(len$$7);\n let iTrue = 0;\n let iFalse = 0;\n\n for (let i$$21 = 0; i$$21 <= len$$7 - 1; i$$21++) {\n if (f$$6(source$$4[i$$21])) {\n res1[iTrue] = source$$4[i$$21];\n iTrue = iTrue + 1;\n } else {\n res2[iFalse] = source$$4[i$$21];\n iFalse = iFalse + 1;\n }\n }\n\n return [(truncate(iTrue, res1)), (truncate(iFalse, res2))];\n}\nexport function find(predicate$$11, array$$59) {\n const matchValue$$5 = array$$59.find(predicate$$11);\n\n if (matchValue$$5 == null) {\n throw new Error(indexNotFoundMsg);\n } else {\n const res$$4 = value$$15(matchValue$$5);\n return res$$4;\n }\n}\nexport function tryFind(predicate$$13, array$$61) {\n return array$$61.find(predicate$$13);\n}\nexport function findIndex(predicate$$15, array$$63) {\n const matchValue$$6 = array$$63.findIndex(predicate$$15);\n\n if (matchValue$$6 > -1) {\n return matchValue$$6 | 0;\n } else {\n throw new Error(indexNotFoundMsg);\n }\n}\nexport function tryFindIndex(predicate$$17, array$$65) {\n const matchValue$$7 = array$$65.findIndex(predicate$$17);\n\n if (matchValue$$7 > -1) {\n return matchValue$$7;\n } else {\n return undefined;\n }\n}\nexport function pick(chooser, array$$67) {\n const loop$$1 = function loop$$1($i$$22$$149) {\n loop$$1: while (true) {\n const i$$22 = $i$$22$$149;\n\n if (i$$22 >= array$$67.length) {\n throw new Error(indexNotFoundMsg);\n } else {\n const matchValue$$8 = chooser(array$$67[i$$22]);\n\n if (matchValue$$8 != null) {\n const res$$5 = value$$15(matchValue$$8);\n return res$$5;\n } else {\n $i$$22$$149 = i$$22 + 1;\n continue loop$$1;\n }\n }\n\n break;\n }\n };\n\n return loop$$1(0);\n}\nexport function tryPick(chooser$$1, array$$68) {\n const loop$$2 = function loop$$2($i$$23$$152) {\n loop$$2: while (true) {\n const i$$23 = $i$$23$$152;\n\n if (i$$23 >= array$$68.length) {\n return undefined;\n } else {\n const matchValue$$9 = chooser$$1(array$$68[i$$23]);\n\n if (matchValue$$9 == null) {\n $i$$23$$152 = i$$23 + 1;\n continue loop$$2;\n } else {\n return matchValue$$9;\n }\n }\n\n break;\n }\n };\n\n return loop$$2(0);\n}\nexport function findBack(predicate$$19, array$$69) {\n const loop$$3 = function loop$$3($i$$24$$155) {\n loop$$3: while (true) {\n const i$$24 = $i$$24$$155;\n\n if (i$$24 < 0) {\n throw new Error(indexNotFoundMsg);\n } else if (predicate$$19(array$$69[i$$24])) {\n return array$$69[i$$24];\n } else {\n $i$$24$$155 = i$$24 - 1;\n continue loop$$3;\n }\n\n break;\n }\n };\n\n return loop$$3(array$$69.length - 1);\n}\nexport function tryFindBack(predicate$$20, array$$70) {\n const loop$$4 = function loop$$4($i$$25$$158) {\n loop$$4: while (true) {\n const i$$25 = $i$$25$$158;\n\n if (i$$25 < 0) {\n return undefined;\n } else if (predicate$$20(array$$70[i$$25])) {\n return some(array$$70[i$$25]);\n } else {\n $i$$25$$158 = i$$25 - 1;\n continue loop$$4;\n }\n\n break;\n }\n };\n\n return loop$$4(array$$70.length - 1);\n}\nexport function findLastIndex(predicate$$21, array$$71) {\n const loop$$5 = function loop$$5($i$$26$$161) {\n loop$$5: while (true) {\n const i$$26 = $i$$26$$161;\n\n if (i$$26 < 0) {\n return -1 | 0;\n } else if (predicate$$21(array$$71[i$$26])) {\n return i$$26 | 0;\n } else {\n $i$$26$$161 = i$$26 - 1;\n continue loop$$5;\n }\n\n break;\n }\n };\n\n return loop$$5(array$$71.length - 1) | 0;\n}\nexport function findIndexBack(predicate$$22, array$$72) {\n const loop$$6 = function loop$$6($i$$27$$164) {\n loop$$6: while (true) {\n const i$$27 = $i$$27$$164;\n\n if (i$$27 < 0) {\n throw new Error(indexNotFoundMsg);\n } else if (predicate$$22(array$$72[i$$27])) {\n return i$$27 | 0;\n } else {\n $i$$27$$164 = i$$27 - 1;\n continue loop$$6;\n }\n\n break;\n }\n };\n\n return loop$$6(array$$72.length - 1) | 0;\n}\nexport function tryFindIndexBack(predicate$$23, array$$73) {\n const loop$$7 = function loop$$7($i$$28$$167) {\n loop$$7: while (true) {\n const i$$28 = $i$$28$$167;\n\n if (i$$28 < 0) {\n return undefined;\n } else if (predicate$$23(array$$73[i$$28])) {\n return i$$28;\n } else {\n $i$$28$$167 = i$$28 - 1;\n continue loop$$7;\n }\n\n break;\n }\n };\n\n return loop$$7(array$$73.length - 1);\n}\nexport function choose(chooser$$2, array$$74, cons$$30) {\n const arr$$7 = array$$74.filter(function f$$7(x$$5) {\n const option = chooser$$2(x$$5);\n return option != null;\n });\n return map(function g(x$$6) {\n const option$$1 = chooser$$2(x$$6);\n return value$$15(option$$1);\n }, arr$$7, cons$$30);\n}\nexport function foldIndexed(folder$$2, state$$4, array$$76) {\n return array$$76.reduce(function (delegateArg0$$1, delegateArg1$$1, delegateArg2) {\n return folder$$2(delegateArg2, delegateArg0$$1, delegateArg1$$1);\n }, state$$4);\n}\nexport function fold(folder$$4, state$$6, array$$78) {\n return array$$78.reduce(function (delegateArg0$$2, delegateArg1$$2) {\n return folder$$4(delegateArg0$$2, delegateArg1$$2);\n }, state$$6);\n}\nexport function iterate(action, array$$80) {\n for (let i$$30 = 0; i$$30 <= array$$80.length - 1; i$$30++) {\n action(array$$80[i$$30]);\n }\n}\nexport function iterateIndexed(action$$1, array$$81) {\n for (let i$$31 = 0; i$$31 <= array$$81.length - 1; i$$31++) {\n action$$1(i$$31, array$$81[i$$31]);\n }\n}\nexport function iterate2(action$$2, array1$$2, array2$$2) {\n if (array1$$2.length !== array2$$2.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n for (let i$$32 = 0; i$$32 <= array1$$2.length - 1; i$$32++) {\n action$$2(array1$$2[i$$32], array2$$2[i$$32]);\n }\n}\nexport function iterateIndexed2(action$$3, array1$$3, array2$$3) {\n if (array1$$3.length !== array2$$3.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n for (let i$$33 = 0; i$$33 <= array1$$3.length - 1; i$$33++) {\n action$$3(i$$33, array1$$3[i$$33], array2$$3[i$$33]);\n }\n}\nexport function isEmpty(array$$82) {\n return array$$82.length === 0;\n}\nexport function forAll(predicate$$25, array$$83) {\n return array$$83.every(predicate$$25);\n}\nexport function permute(f$$8, array$$85) {\n const size = array$$85.length | 0;\n const res$$7 = array$$85.slice();\n const checkFlags = new Int32Array(size);\n iterateIndexed(function (i$$34, x$$9) {\n const j$$1 = f$$8(i$$34) | 0;\n\n if (j$$1 < 0 ? true : j$$1 >= size) {\n throw new Error(\"Not a valid permutation\");\n } else {\n void null;\n }\n\n res$$7[j$$1] = x$$9;\n checkFlags[j$$1] = 1;\n }, array$$85);\n let isValid;\n isValid = checkFlags.every(function predicate$$27(y) {\n return 1 === y;\n });\n\n if (!isValid) {\n throw new Error(\"Not a valid permutation\");\n } else {\n void null;\n }\n\n return res$$7;\n}\nexport function setSlice(target$$5, lower, upper, source$$5) {\n const lower$$1 = defaultArg(lower, 0) | 0;\n const upper$$1 = defaultArg(upper, 0) | 0;\n const length = (upper$$1 > 0 ? upper$$1 : target$$5.length - 1) - lower$$1 | 0;\n\n for (let i$$35 = 0; i$$35 <= length; i$$35++) {\n target$$5[i$$35 + lower$$1] = source$$5[i$$35];\n }\n}\nexport function sortInPlaceBy(projection$$3, xs, comparer) {\n xs.sort(function (x$$11, y$$1) {\n return comparer.Compare(projection$$3(x$$11), projection$$3(y$$1));\n });\n}\nexport function sortInPlace(xs$$1, comparer$$1) {\n xs$$1.sort(function (x$$12, y$$2) {\n return comparer$$1.Compare(x$$12, y$$2);\n });\n}\nexport function sort(xs$$2, comparer$$2) {\n const xs$$3 = xs$$2.slice();\n xs$$3.sort(function comparer$$3(x$$13, y$$3) {\n return comparer$$2.Compare(x$$13, y$$3);\n });\n return xs$$3;\n}\nexport function sortBy(projection$$4, xs$$4, comparer$$4) {\n const xs$$5 = xs$$4.slice();\n xs$$5.sort(function comparer$$5(x$$14, y$$4) {\n return comparer$$4.Compare(projection$$4(x$$14), projection$$4(y$$4));\n });\n return xs$$5;\n}\nexport function sortDescending(xs$$6, comparer$$6) {\n const xs$$7 = xs$$6.slice();\n xs$$7.sort(function comparer$$7(x$$15, y$$5) {\n return comparer$$6.Compare(x$$15, y$$5) * -1;\n });\n return xs$$7;\n}\nexport function sortByDescending(projection$$5, xs$$8, comparer$$8) {\n const xs$$9 = xs$$8.slice();\n xs$$9.sort(function comparer$$9(x$$16, y$$6) {\n return comparer$$8.Compare(projection$$5(x$$16), projection$$5(y$$6)) * -1;\n });\n return xs$$9;\n}\nexport function sortWith(comparer$$10, xs$$10) {\n const xs$$11 = xs$$10.slice();\n xs$$11.sort(comparer$$10);\n return xs$$11;\n}\nexport function unfold(generator, state$$8) {\n const res$$8 = [];\n\n const loop$$8 = function loop$$8($state$$9$$226) {\n loop$$8: while (true) {\n const state$$9 = $state$$9$$226;\n const matchValue$$10 = generator(state$$9);\n\n if (matchValue$$10 != null) {\n const x$$17 = matchValue$$10[0];\n const s$$2 = matchValue$$10[1];\n const value$$11 = res$$8.push(x$$17);\n void value$$11;\n $state$$9$$226 = s$$2;\n continue loop$$8;\n } else {\n void null;\n }\n\n break;\n }\n };\n\n loop$$8(state$$8);\n return res$$8;\n}\nexport function unzip(array$$95) {\n const len$$8 = array$$95.length | 0;\n const res1$$1 = new Array(len$$8);\n const res2$$1 = new Array(len$$8);\n iterateIndexed(function (i$$36, tupledArg) {\n res1$$1[i$$36] = tupledArg[0];\n res2$$1[i$$36] = tupledArg[1];\n }, array$$95);\n return [res1$$1, res2$$1];\n}\nexport function unzip3(array$$96) {\n const len$$11 = array$$96.length | 0;\n const res1$$2 = new Array(len$$11);\n const res2$$2 = new Array(len$$11);\n const res3 = new Array(len$$11);\n iterateIndexed(function (i$$37, tupledArg$$1) {\n res1$$2[i$$37] = tupledArg$$1[0];\n res2$$2[i$$37] = tupledArg$$1[1];\n res3[i$$37] = tupledArg$$1[2];\n }, array$$96);\n return [res1$$2, res2$$2, res3];\n}\nexport function zip(array1$$4, array2$$4) {\n if (array1$$4.length !== array2$$4.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n let result$$10;\n const len$$15 = array1$$4.length | 0;\n result$$10 = new Array(len$$15);\n\n for (let i$$38 = 0; i$$38 <= array1$$4.length - 1; i$$38++) {\n result$$10[i$$38] = [array1$$4[i$$38], array2$$4[i$$38]];\n }\n\n return result$$10;\n}\nexport function zip3(array1$$5, array2$$5, array3) {\n if (array1$$5.length !== array2$$5.length ? true : array2$$5.length !== array3.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n let result$$11;\n const len$$16 = array1$$5.length | 0;\n result$$11 = new Array(len$$16);\n\n for (let i$$39 = 0; i$$39 <= array1$$5.length - 1; i$$39++) {\n result$$11[i$$39] = [array1$$5[i$$39], array2$$5[i$$39], array3[i$$39]];\n }\n\n return result$$11;\n}\nexport function chunkBySize(chunkSize, array$$97) {\n if (chunkSize < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: size\");\n } else {\n void null;\n }\n\n if (array$$97.length === 0) {\n return [[]];\n } else {\n const result$$12 = [];\n\n for (let x$$18 = 0; x$$18 <= ~~Math.ceil(array$$97.length / chunkSize) - 1; x$$18++) {\n const start$$8 = x$$18 * chunkSize | 0;\n const slice = array$$97.slice(start$$8, start$$8 + chunkSize);\n const value$$12 = result$$12.push(slice);\n void value$$12;\n }\n\n return result$$12;\n }\n}\nexport function splitAt(index$$4, array$$100) {\n if (index$$4 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: index\");\n } else {\n void null;\n }\n\n if (index$$4 > array$$100.length) {\n throw new Error(\"The input sequence has an insufficient number of elements.\\\\nParameter name: index\");\n } else {\n void null;\n }\n\n return [array$$100.slice(0, 0 + index$$4), array$$100.slice(index$$4)];\n}\nexport function compareWith(comparer$$12, array1$$6, array2$$6) {\n if (array1$$6 == null) {\n if (array2$$6 == null) {\n return 0;\n } else {\n return -1 | 0;\n }\n } else if (array2$$6 == null) {\n return 1;\n } else {\n let i$$40 = 0;\n let result$$13 = 0;\n const length1 = array1$$6.length | 0;\n const length2 = array2$$6.length | 0;\n\n if (length1 > length2) {\n return 1;\n } else if (length1 < length2) {\n return -1 | 0;\n } else {\n while (i$$40 < length1 ? result$$13 === 0 : false) {\n result$$13 = comparer$$12(array1$$6[i$$40], array2$$6[i$$40]);\n i$$40 = i$$40 + 1;\n }\n\n return result$$13 | 0;\n }\n }\n}\nexport function equalsWith(comparer$$13, array1$$7, array2$$7) {\n return compareWith(compare, array1$$7, array2$$7) === 0;\n}\nexport function exactlyOne(array$$103) {\n if (array$$103.length === 1) {\n return array$$103[0];\n } else if (array$$103.length === 0) {\n throw new Error(\"The input sequence was empty\\\\nParameter name: array\");\n } else {\n throw new Error(\"Input array too long\\\\nParameter name: array\");\n }\n}\nexport function head(array$$104) {\n if (array$$104.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n return array$$104[0];\n }\n}\nexport function tryHead(array$$105) {\n if (array$$105.length === 0) {\n return undefined;\n } else {\n return some(array$$105[0]);\n }\n}\nexport function tail(array$$106) {\n if (array$$106.length === 0) {\n throw new Error(\"Not enough elements\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n return array$$106.slice(1);\n}\nexport function item(index$$5, array$$108) {\n return array$$108[index$$5];\n}\nexport function tryItem(index$$6, array$$109) {\n if (index$$6 < 0 ? true : index$$6 >= array$$109.length) {\n return undefined;\n } else {\n return some(array$$109[index$$6]);\n }\n}\nexport function foldBackIndexed(folder$$6, array$$110, state$$10) {\n return array$$110.reduceRight(function (delegateArg0$$3, delegateArg1$$3, delegateArg2$$1) {\n return folder$$6(delegateArg2$$1, delegateArg1$$3, delegateArg0$$3);\n }, state$$10);\n}\nexport function foldBack(folder$$8, array$$112, state$$12) {\n return array$$112.reduceRight(function (delegateArg0$$4, delegateArg1$$4) {\n return folder$$8(delegateArg1$$4, delegateArg0$$4);\n }, state$$12);\n}\nexport function foldIndexed2(folder$$10, state$$14, array1$$8, array2$$8) {\n let acc$$6 = state$$14;\n\n if (array1$$8.length !== array2$$8.length) {\n throw new Error(\"Arrays have different lengths\");\n } else {\n void null;\n }\n\n for (let i$$42 = 0; i$$42 <= array1$$8.length - 1; i$$42++) {\n acc$$6 = folder$$10(i$$42, acc$$6, array1$$8[i$$42], array2$$8[i$$42]);\n }\n\n return acc$$6;\n}\nexport function fold2(folder$$11, state$$15, array1$$9, array2$$9) {\n return foldIndexed2(function (_arg1, acc$$7, x$$21, y$$7) {\n return folder$$11(acc$$7, x$$21, y$$7);\n }, state$$15, array1$$9, array2$$9);\n}\nexport function foldBackIndexed2(folder$$12, array1$$10, array2$$10, state$$16) {\n let acc$$8 = state$$16;\n\n if (array1$$10.length !== array2$$10.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const size$$1 = array1$$10.length | 0;\n\n for (let i$$43 = 1; i$$43 <= size$$1; i$$43++) {\n acc$$8 = folder$$12(i$$43 - 1, array1$$10[size$$1 - i$$43], array2$$10[size$$1 - i$$43], acc$$8);\n }\n\n return acc$$8;\n}\nexport function foldBack2(f$$9, array1$$11, array2$$11, state$$17) {\n return foldBackIndexed2(function (_arg1$$1, x$$22, y$$8, acc$$9) {\n return f$$9(x$$22, y$$8, acc$$9);\n }, array1$$11, array2$$11, state$$17);\n}\nexport function reduce(reduction, array$$114) {\n if (array$$114.length === 0) {\n throw new Error(\"The input array was empty\");\n } else {\n void null;\n }\n\n return array$$114.reduce(reduction);\n}\nexport function reduceBack(reduction$$2, array$$116) {\n if (array$$116.length === 0) {\n throw new Error(\"The input array was empty\");\n } else {\n void null;\n }\n\n return array$$116.reduceRight(reduction$$2);\n}\nexport function forAll2(predicate$$29, array1$$12, array2$$12) {\n return fold2(function (acc$$10, x$$23, y$$9) {\n return acc$$10 ? predicate$$29(x$$23, y$$9) : false;\n }, true, array1$$12, array2$$12);\n}\nexport function existsOffset($predicate$$30$$281, $array$$118$$282, $index$$7$$283) {\n existsOffset: while (true) {\n const predicate$$30 = $predicate$$30$$281,\n array$$118 = $array$$118$$282,\n index$$7 = $index$$7$$283;\n\n if (index$$7 === array$$118.length) {\n return false;\n } else if (predicate$$30(array$$118[index$$7])) {\n return true;\n } else {\n $predicate$$30$$281 = predicate$$30;\n $array$$118$$282 = array$$118;\n $index$$7$$283 = index$$7 + 1;\n continue existsOffset;\n }\n\n break;\n }\n}\nexport function exists(predicate$$31, array$$119) {\n return existsOffset(predicate$$31, array$$119, 0);\n}\nexport function existsOffset2($predicate$$32$$286, $array1$$13$$287, $array2$$13$$288, $index$$8$$289) {\n existsOffset2: while (true) {\n const predicate$$32 = $predicate$$32$$286,\n array1$$13 = $array1$$13$$287,\n array2$$13 = $array2$$13$$288,\n index$$8 = $index$$8$$289;\n\n if (index$$8 === array1$$13.length) {\n return false;\n } else if (predicate$$32(array1$$13[index$$8], array2$$13[index$$8])) {\n return true;\n } else {\n $predicate$$32$$286 = predicate$$32;\n $array1$$13$$287 = array1$$13;\n $array2$$13$$288 = array2$$13;\n $index$$8$$289 = index$$8 + 1;\n continue existsOffset2;\n }\n\n break;\n }\n}\nexport function exists2(predicate$$33, array1$$14, array2$$14) {\n if (array1$$14.length !== array2$$14.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n return existsOffset2(predicate$$33, array1$$14, array2$$14, 0);\n}\nexport function sum(array$$120, adder) {\n let acc$$11 = adder.GetZero();\n\n for (let i$$44 = 0; i$$44 <= array$$120.length - 1; i$$44++) {\n acc$$11 = adder.Add(acc$$11, array$$120[i$$44]);\n }\n\n return acc$$11;\n}\nexport function sumBy(projection$$6, array$$121, adder$$1) {\n let acc$$12 = adder$$1.GetZero();\n\n for (let i$$45 = 0; i$$45 <= array$$121.length - 1; i$$45++) {\n acc$$12 = adder$$1.Add(acc$$12, projection$$6(array$$121[i$$45]));\n }\n\n return acc$$12;\n}\nexport function maxBy(projection$$7, xs$$12, comparer$$14) {\n return reduce(function (x$$24, y$$10) {\n return comparer$$14.Compare(projection$$7(y$$10), projection$$7(x$$24)) > 0 ? y$$10 : x$$24;\n }, xs$$12);\n}\nexport function max(xs$$13, comparer$$15) {\n return reduce(function (x$$25, y$$11) {\n return comparer$$15.Compare(y$$11, x$$25) > 0 ? y$$11 : x$$25;\n }, xs$$13);\n}\nexport function minBy(projection$$8, xs$$14, comparer$$16) {\n return reduce(function (x$$26, y$$12) {\n return comparer$$16.Compare(projection$$8(y$$12), projection$$8(x$$26)) > 0 ? x$$26 : y$$12;\n }, xs$$14);\n}\nexport function min(xs$$15, comparer$$17) {\n return reduce(function (x$$27, y$$13) {\n return comparer$$17.Compare(y$$13, x$$27) > 0 ? x$$27 : y$$13;\n }, xs$$15);\n}\nexport function average(array$$122, averager) {\n if (array$$122.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n let total = averager.GetZero();\n\n for (let i$$46 = 0; i$$46 <= array$$122.length - 1; i$$46++) {\n total = averager.Add(total, array$$122[i$$46]);\n }\n\n return averager.DivideByInt(total, array$$122.length);\n}\nexport function averageBy(projection$$9, array$$123, averager$$1) {\n if (array$$123.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n let total$$1 = averager$$1.GetZero();\n\n for (let i$$47 = 0; i$$47 <= array$$123.length - 1; i$$47++) {\n total$$1 = averager$$1.Add(total$$1, projection$$9(array$$123[i$$47]));\n }\n\n return averager$$1.DivideByInt(total$$1, array$$123.length);\n}\nexport function ofSeq(source$$6, cons$$31) {\n return cons$$31.from(source$$6);\n}\nexport function ofList(source$$7, cons$$32) {\n return cons$$32.from(source$$7);\n}\nexport function toList(source$$8) {\n const len$$17 = source$$8.length | 0;\n let target$$6 = new List();\n\n for (let i$$48 = len$$17 - 1; i$$48 >= 0; i$$48--) {\n target$$6 = new List(source$$8[i$$48], target$$6);\n }\n\n return target$$6;\n}\nexport function windowed(windowSize, source$$9) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n } else {\n void null;\n }\n\n let res$$9;\n const len$$18 = max$$1(comparePrimitives, 0, source$$9.length - windowSize) | 0;\n res$$9 = new Array(len$$18);\n\n for (let i$$49 = windowSize; i$$49 <= source$$9.length; i$$49++) {\n res$$9[i$$49 - windowSize] = source$$9.slice(i$$49 - windowSize, i$$49 - 1 + 1);\n }\n\n return res$$9;\n}\nexport function splitInto(chunks, array$$124) {\n if (chunks < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: chunks\");\n } else {\n void null;\n }\n\n if (array$$124.length === 0) {\n return [[]];\n } else {\n const result$$14 = [];\n const chunks$$1 = min$$1(comparePrimitives, chunks, array$$124.length) | 0;\n const minChunkSize = ~~(array$$124.length / chunks$$1) | 0;\n const chunksWithExtraItem = array$$124.length % chunks$$1 | 0;\n\n for (let i$$50 = 0; i$$50 <= chunks$$1 - 1; i$$50++) {\n const chunkSize$$1 = (i$$50 < chunksWithExtraItem ? minChunkSize + 1 : minChunkSize) | 0;\n const start$$11 = i$$50 * minChunkSize + min$$1(comparePrimitives, chunksWithExtraItem, i$$50) | 0;\n const slice$$1 = array$$124.slice(start$$11, start$$11 + chunkSize$$1);\n const value$$13 = result$$14.push(slice$$1);\n void value$$13;\n }\n\n return result$$14;\n }\n}\nexport function transpose(arrays$$2, cons$$33) {\n var value$$14;\n const arrays$$3 = Array.isArray(arrays$$2) ? arrays$$2 : Array.from(arrays$$2);\n const len$$20 = arrays$$3.length | 0;\n\n if (len$$20 === 0) {\n return new Array(0);\n } else {\n const lenInner = arrays$$3[0].length | 0;\n\n if (value$$14 = (forAll(function predicate$$34(a) {\n return a.length === lenInner;\n }, arrays$$3)), (!value$$14)) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$15 = new Array(lenInner);\n\n for (let i$$51 = 0; i$$51 <= lenInner - 1; i$$51++) {\n result$$15[i$$51] = new cons$$33(len$$20);\n\n for (let j$$2 = 0; j$$2 <= len$$20 - 1; j$$2++) {\n result$$15[i$$51][j$$2] = arrays$$3[j$$2][i$$51];\n }\n }\n\n return result$$15;\n }\n}","export function create(pattern, options = 0) {\n // Supported RegexOptions\n // * IgnoreCase: 0x0001\n // * Multiline: 0x0002\n // * Singleline: 0x0010\n // * ECMAScript: 0x0100 (ignored)\n if ((options & ~(1 ^ 2 ^ 16 ^ 256)) !== 0) {\n throw new Error(\"RegexOptions only supports: IgnoreCase, Multiline, Singleline and ECMAScript\");\n }\n let flags = \"g\";\n flags += options & 1 ? \"i\" : \"\"; // 0x0001 RegexOptions.IgnoreCase\n flags += options & 2 ? \"m\" : \"\";\n flags += options & 16 ? \"s\" : \"\";\n return new RegExp(pattern, flags);\n}\n// From http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\nexport function escape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\nexport function unescape(str) {\n return str.replace(/\\\\([\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|])/g, \"$1\");\n}\nexport function isMatch(str, pattern, options = 0) {\n let reg;\n reg = str instanceof RegExp\n ? (reg = str, str = pattern, reg.lastIndex = options, reg)\n : reg = create(pattern, options);\n return reg.test(str);\n}\nexport function match(str, pattern, options = 0) {\n let reg;\n reg = str instanceof RegExp\n ? (reg = str, str = pattern, reg.lastIndex = options, reg)\n : reg = create(pattern, options);\n return reg.exec(str);\n}\nexport function matches(str, pattern, options = 0) {\n let reg;\n reg = str instanceof RegExp\n ? (reg = str, str = pattern, reg.lastIndex = options, reg)\n : reg = create(pattern, options);\n if (!reg.global) {\n throw new Error(\"Non-global RegExp\"); // Prevent infinite loop\n }\n let m = reg.exec(str);\n const matches = [];\n while (m !== null) {\n matches.push(m);\n m = reg.exec(str);\n }\n return matches;\n}\nexport function options(reg) {\n let options = 256; // ECMAScript\n options |= reg.ignoreCase ? 1 : 0;\n options |= reg.multiline ? 2 : 0;\n return options;\n}\nexport function replace(reg, input, replacement, limit, offset = 0) {\n function replacer() {\n let res = arguments[0];\n if (limit) {\n limit--;\n const match = [];\n const len = arguments.length;\n for (let i = 0; i < len - 2; i++) {\n match.push(arguments[i]);\n }\n match.index = arguments[len - 2];\n match.input = arguments[len - 1];\n res = replacement(match);\n }\n return res;\n }\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit !== null && limit !== void 0 ? limit : 0);\n input = tmp;\n limit = undefined;\n }\n if (typeof replacement === \"function\") {\n limit = limit == null ? -1 : limit;\n return input.substring(0, offset) + input.substring(offset).replace(reg, replacer);\n }\n else {\n // $0 doesn't work with JS regex, see #1155\n replacement = replacement.replace(/\\$0/g, (_s) => \"$&\");\n if (limit != null) {\n let m;\n const sub1 = input.substring(offset);\n const _matches = matches(reg, sub1);\n const sub2 = matches.length > limit ? (m = _matches[limit - 1], sub1.substring(0, m.index + m[0].length)) : sub1;\n return input.substring(0, offset) + sub2.replace(reg, replacement)\n + input.substring(offset + sub2.length);\n }\n else {\n return input.replace(reg, replacement);\n }\n }\n}\nexport function split(reg, input, limit, offset = 0) {\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit !== null && limit !== void 0 ? limit : 0);\n input = tmp;\n limit = undefined;\n }\n input = input.substring(offset);\n return input.split(reg, limit);\n}\n//# sourceMappingURL=RegExp.js.map","import { toString as dateToString } from \"./Date\";\nimport Decimal from \"./Decimal\";\nimport Long, * as _Long from \"./Long\";\nimport { escape } from \"./RegExp\";\nconst fsFormatRegExp = /(^|[^%])%([0+\\- ]*)(\\d+)?(?:\\.(\\d+))?(\\w)/;\nconst formatRegExp = /\\{(\\d+)(,-?\\d+)?(?:\\:([a-zA-Z])(\\d{0,2})|\\:(.+?))?\\}/g;\n// These are used for formatting and only take longs and decimals into account (no bigint)\nfunction isNumeric(x) {\n return typeof x === \"number\" || x instanceof Long || x instanceof Decimal;\n}\nfunction isLessThan(x, y) {\n if (x instanceof Long) {\n return _Long.compare(x, y) < 0;\n }\n else if (x instanceof Decimal) {\n return x.cmp(y) < 0;\n }\n else {\n return x < y;\n }\n}\nfunction multiply(x, y) {\n if (x instanceof Long) {\n return _Long.op_Multiply(x, y);\n }\n else if (x instanceof Decimal) {\n return x.mul(y);\n }\n else {\n return x * y;\n }\n}\nfunction toFixed(x, dp) {\n if (x instanceof Long) {\n return String(x) + (0).toFixed(dp).substr(1);\n }\n else {\n return x.toFixed(dp);\n }\n}\nfunction toPrecision(x, sd) {\n if (x instanceof Long) {\n return String(x) + (0).toPrecision(sd).substr(1);\n }\n else {\n return x.toPrecision(sd);\n }\n}\nfunction toExponential(x, dp) {\n if (x instanceof Long) {\n return String(x) + (0).toExponential(dp).substr(1);\n }\n else {\n return x.toExponential(dp);\n }\n}\nfunction cmp(x, y, ic) {\n function isIgnoreCase(i) {\n return i === true ||\n i === 1 /* CurrentCultureIgnoreCase */ ||\n i === 3 /* InvariantCultureIgnoreCase */ ||\n i === 5 /* OrdinalIgnoreCase */;\n }\n function isOrdinal(i) {\n return i === 4 /* Ordinal */ ||\n i === 5 /* OrdinalIgnoreCase */;\n }\n if (x == null) {\n return y == null ? 0 : -1;\n }\n if (y == null) {\n return 1;\n } // everything is bigger than null\n if (isOrdinal(ic)) {\n if (isIgnoreCase(ic)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n return (x === y) ? 0 : (x < y ? -1 : 1);\n }\n else {\n if (isIgnoreCase(ic)) {\n x = x.toLocaleLowerCase();\n y = y.toLocaleLowerCase();\n }\n return x.localeCompare(y);\n }\n}\nexport function compare(...args) {\n switch (args.length) {\n case 2: return cmp(args[0], args[1], false);\n case 3: return cmp(args[0], args[1], args[2]);\n case 4: return cmp(args[0], args[1], args[2] === true);\n case 5: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), false);\n case 6: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5]);\n case 7: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5] === true);\n default: throw new Error(\"String.compare: Unsupported number of parameters\");\n }\n}\nexport function compareOrdinal(x, y) {\n return cmp(x, y, 4 /* Ordinal */);\n}\nexport function compareTo(x, y) {\n return cmp(x, y, 0 /* CurrentCulture */);\n}\nexport function startsWith(str, pattern, ic) {\n if (str.length >= pattern.length) {\n return cmp(str.substr(0, pattern.length), pattern, ic) === 0;\n }\n return false;\n}\nexport function indexOfAny(str, anyOf, ...args) {\n if (str == null || str === \"\") {\n return -1;\n }\n const startIndex = (args.length > 0) ? args[0] : 0;\n if (startIndex < 0) {\n throw new Error(\"Start index cannot be negative\");\n }\n const length = (args.length > 1) ? args[1] : str.length - startIndex;\n if (length < 0) {\n throw new Error(\"Length cannot be negative\");\n }\n if (length > str.length - startIndex) {\n throw new Error(\"Invalid startIndex and length\");\n }\n str = str.substr(startIndex, length);\n for (const c of anyOf) {\n const index = str.indexOf(c);\n if (index > -1) {\n return index + startIndex;\n }\n }\n return -1;\n}\nfunction toHex(x) {\n if (x instanceof Long) {\n return _Long.toString(x.unsigned ? x : _Long.fromBytes(_Long.toBytes(x), true), 16);\n }\n else {\n return (Number(x) >>> 0).toString(16);\n }\n}\nexport function printf(input) {\n return {\n input,\n cont: fsFormat(input),\n };\n}\nexport function toConsole(arg) {\n // Don't remove the lambda here, see #1357\n return arg.cont((x) => { console.log(x); });\n}\nexport function toConsoleError(arg) {\n return arg.cont((x) => { console.error(x); });\n}\nexport function toText(arg) {\n return arg.cont((x) => x);\n}\nexport function toFail(arg) {\n return arg.cont((x) => { throw new Error(x); });\n}\nfunction formatOnce(str2, rep) {\n return str2.replace(fsFormatRegExp, (_, prefix, flags, padLength, precision, format) => {\n let sign = \"\";\n if (isNumeric(rep)) {\n if (format.toLowerCase() !== \"x\") {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n else {\n if (flags.indexOf(\" \") >= 0) {\n sign = \" \";\n }\n else if (flags.indexOf(\"+\") >= 0) {\n sign = \"+\";\n }\n }\n }\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 6;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"x\":\n rep = toHex(rep);\n break;\n case \"X\":\n rep = toHex(rep).toUpperCase();\n break;\n default: // AOid\n rep = String(rep);\n break;\n }\n }\n padLength = parseInt(padLength, 10);\n if (!isNaN(padLength)) {\n const zeroFlag = flags.indexOf(\"0\") >= 0; // Use '0' for left padding\n const minusFlag = flags.indexOf(\"-\") >= 0; // Right padding\n const ch = minusFlag || !zeroFlag ? \" \" : \"0\";\n if (ch === \"0\") {\n rep = padLeft(rep, padLength - sign.length, ch, minusFlag);\n rep = sign + rep;\n }\n else {\n rep = padLeft(sign + rep, padLength, ch, minusFlag);\n }\n }\n else {\n rep = sign + rep;\n }\n const once = prefix + rep;\n return once.replace(/%/g, \"%%\");\n });\n}\nfunction createPrinter(str, cont) {\n return (...args) => {\n // Make a copy as the function may be used several times\n let strCopy = str;\n for (const arg of args) {\n strCopy = formatOnce(strCopy, arg);\n }\n return fsFormatRegExp.test(strCopy)\n ? createPrinter(strCopy, cont)\n : cont(strCopy.replace(/%%/g, \"%\"));\n };\n}\nexport function fsFormat(str) {\n return (cont) => {\n return fsFormatRegExp.test(str)\n ? createPrinter(str, cont)\n : cont(str);\n };\n}\nexport function format(str, ...args) {\n if (typeof str === \"object\" && args.length > 0) {\n // Called with culture info\n str = args[0];\n args.shift();\n }\n return str.replace(formatRegExp, (_, idx, padLength, format, precision, pattern) => {\n let rep = args[idx];\n if (isNumeric(rep)) {\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 2;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"p\":\n case \"P\":\n precision = precision != null ? precision : 2;\n rep = toFixed(multiply(rep, 100), precision) + \" %\";\n break;\n case \"d\":\n case \"D\":\n rep = precision != null ? padLeft(String(rep), precision, \"0\") : String(rep);\n break;\n case \"x\":\n case \"X\":\n rep = precision != null ? padLeft(toHex(rep), precision, \"0\") : toHex(rep);\n if (format === \"X\") {\n rep = rep.toUpperCase();\n }\n break;\n default:\n if (pattern) {\n let sign = \"\";\n rep = pattern.replace(/(0+)(\\.0+)?/, (_, intPart, decimalPart) => {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n rep = toFixed(rep, decimalPart != null ? decimalPart.length - 1 : 0);\n return padLeft(rep, (intPart || \"\").length - sign.length + (decimalPart != null ? decimalPart.length : 0), \"0\");\n });\n rep = sign + rep;\n }\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep, pattern || format);\n }\n padLength = parseInt((padLength || \" \").substring(1), 10);\n if (!isNaN(padLength)) {\n rep = padLeft(String(rep), Math.abs(padLength), \" \", padLength < 0);\n }\n return rep;\n });\n}\nexport function endsWith(str, search) {\n const idx = str.lastIndexOf(search);\n return idx >= 0 && idx === str.length - search.length;\n}\nexport function initialize(n, f) {\n if (n < 0) {\n throw new Error(\"String length must be non-negative\");\n }\n const xs = new Array(n);\n for (let i = 0; i < n; i++) {\n xs[i] = f(i);\n }\n return xs.join(\"\");\n}\nexport function insert(str, startIndex, value) {\n if (startIndex < 0 || startIndex > str.length) {\n throw new Error(\"startIndex is negative or greater than the length of this instance.\");\n }\n return str.substring(0, startIndex) + value + str.substring(startIndex);\n}\nexport function isNullOrEmpty(str) {\n return typeof str !== \"string\" || str.length === 0;\n}\nexport function isNullOrWhiteSpace(str) {\n return typeof str !== \"string\" || /^\\s*$/.test(str);\n}\nexport function concat(...xs) {\n return xs.map((x) => String(x)).join(\"\");\n}\nexport function join(delimiter, xs) {\n if (Array.isArray(xs)) {\n return xs.join(delimiter);\n }\n else {\n return Array.from(xs).join(delimiter);\n }\n}\nexport function joinWithIndices(delimiter, xs, startIndex, count) {\n const endIndexPlusOne = startIndex + count;\n if (endIndexPlusOne > xs.length) {\n throw new Error(\"Index and count must refer to a location within the buffer.\");\n }\n return xs.slice(startIndex, endIndexPlusOne).join(delimiter);\n}\nfunction notSupported(name) {\n throw new Error(\"The environment doesn't support '\" + name + \"', please use a polyfill.\");\n}\nexport function toBase64String(inArray) {\n let str = \"\";\n for (let i = 0; i < inArray.length; i++) {\n str += String.fromCharCode(inArray[i]);\n }\n return typeof btoa === \"function\" ? btoa(str) : notSupported(\"btoa\");\n}\nexport function fromBase64String(b64Encoded) {\n const binary = typeof atob === \"function\" ? atob(b64Encoded) : notSupported(\"atob\");\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\nexport function padLeft(str, len, ch, isRight) {\n ch = ch || \" \";\n len = len - str.length;\n for (let i = 0; i < len; i++) {\n str = isRight ? str + ch : ch + str;\n }\n return str;\n}\nexport function padRight(str, len, ch) {\n return padLeft(str, len, ch, true);\n}\nexport function remove(str, startIndex, count) {\n if (startIndex >= str.length) {\n throw new Error(\"startIndex must be less than length of string\");\n }\n if (typeof count === \"number\" && (startIndex + count) > str.length) {\n throw new Error(\"Index and count must refer to a location within the string.\");\n }\n return str.slice(0, startIndex) + (typeof count === \"number\" ? str.substr(startIndex + count) : \"\");\n}\nexport function replace(str, search, replace) {\n return str.replace(new RegExp(escape(search), \"g\"), replace);\n}\nexport function replicate(n, x) {\n return initialize(n, () => x);\n}\nexport function getCharAtIndex(input, index) {\n if (index < 0 || index >= input.length) {\n throw new Error(\"Index was outside the bounds of the array.\");\n }\n return input[index];\n}\nexport function split(str, splitters, count, removeEmpty) {\n count = typeof count === \"number\" ? count : undefined;\n removeEmpty = typeof removeEmpty === \"number\" ? removeEmpty : undefined;\n if (count && count < 0) {\n throw new Error(\"Count cannot be less than zero\");\n }\n if (count === 0) {\n return [];\n }\n if (!Array.isArray(splitters)) {\n if (removeEmpty === 0) {\n return str.split(splitters, count);\n }\n const len = arguments.length;\n splitters = Array(len - 1);\n for (let key = 1; key < len; key++) {\n splitters[key - 1] = arguments[key];\n }\n }\n splitters = splitters.map((x) => escape(x));\n splitters = splitters.length > 0 ? splitters : [\" \"];\n let i = 0;\n const splits = [];\n const reg = new RegExp(splitters.join(\"|\"), \"g\");\n while (count == null || count > 1) {\n const m = reg.exec(str);\n if (m === null) {\n break;\n }\n if (!removeEmpty || (m.index - i) > 0) {\n count = count != null ? count - 1 : count;\n splits.push(str.substring(i, m.index));\n }\n i = reg.lastIndex;\n }\n if (!removeEmpty || (str.length - i) > 0) {\n splits.push(str.substring(i));\n }\n return splits;\n}\nexport function trim(str, ...chars) {\n if (chars.length === 0) {\n return str.trim();\n }\n const pattern = \"[\" + escape(chars.join(\"\")) + \"]+\";\n return str.replace(new RegExp(\"^\" + pattern), \"\").replace(new RegExp(pattern + \"$\"), \"\");\n}\nexport function trimStart(str, ...chars) {\n return chars.length === 0\n ? str.trimStart()\n : str.replace(new RegExp(\"^[\" + escape(chars.join(\"\")) + \"]+\"), \"\");\n}\nexport function trimEnd(str, ...chars) {\n return chars.length === 0\n ? str.trimEnd()\n : str.replace(new RegExp(\"[\" + escape(chars.join(\"\")) + \"]+$\"), \"\");\n}\nexport function filter(pred, x) {\n return x.split(\"\").filter((c) => pred(c)).join(\"\");\n}\nexport function substring(str, startIndex, length) {\n if ((startIndex + (length || 0) > str.length)) {\n throw new Error(\"Invalid startIndex and/or length\");\n }\n return length != null ? str.substr(startIndex, length) : str.substr(startIndex);\n}\n//# sourceMappingURL=String.js.map","import Vue from \"vue\";\nimport marked from \"marked\"\nimport { formatNumber } from \"./i18n\";\n\nVue.filter(\"prefixDiff\", function (value) {\n if (value > 0) {\n return `+${value}`;\n } else {\n return `${value}`;\n }\n});\n\nVue.filter(\"number\", function(value, minimumFractionDigits = 0, maximumFractionDigits = 1) {\n return formatNumber(value, { minimumFractionDigits, maximumFractionDigits });\n});\n\nVue.filter(\"percent\", function(value, minimumFractionDigits = 1, maximumFractionDigits = 1) {\n return formatNumber(value / 100, {\n style: \"percent\",\n minimumFractionDigits,\n maximumFractionDigits,\n signDisplay: \"always\",\n });\n});\n\n\n/**\n * markdown filter\n * you can use it in Vue template and it will render markdown in user's browser\n *
\n * You have to use it with v-html directive, because moustache templating (stuf with `{{ ... }}`) will escape generated HTML\n * \n * @deprecated use htmlMd directive (
)\n */\nVue.filter(\"marked\", function (input) {\n return marked(input)\n})\n","import Vue from \"vue\"\nimport marked from \"marked\"\n\nVue.directive(\"htmlMd\", {\n bind(el, binding) {\n el.innerHTML = marked(binding.value)\n }\n})\n","// this is common Vue initialization for index.js and embed.js (app entrypoints)\n\nimport Vue from 'vue'\nimport { LayoutPlugin, TabsPlugin, BTable, FormTextareaPlugin, BFormSelect, TooltipPlugin } from 'bootstrap-vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSpinner, faGlobe, faCaretDown } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\n\nimport './filters'\nimport './directives'\n\n// bootstrap\nVue.use(LayoutPlugin)\nVue.use(TabsPlugin)\nVue.use(FormTextareaPlugin)\nVue.use(TooltipPlugin)\nVue.component('b-table', BTable)\nVue.component('b-form-select', BFormSelect)\n\n// fontawesome\nlibrary.add(faSpinner, faGlobe, faCaretDown)\nVue.component('font-awesome-icon', FontAwesomeIcon)\n\nVue.config.productionTip = false\n","import { declare, FSharpRef } from \"./Types.js\";\nimport { iterateIndexed, toIterator, getEnumerator, delay, collect, map, sumBy, iterate } from \"./Seq.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { getItemFromDict, tryGetValue } from \"./Util.js\";\nimport { some } from \"./Option.js\";\nexport const MutableSet$00601 = declare(function Fable_Collections_MutableSet(items, comparer) {\n const $this$$1 = this;\n const this$ = new FSharpRef(null);\n $this$$1.comparer = comparer;\n this$.contents = $this$$1;\n $this$$1.hashMap = new Map([]);\n $this$$1[\"init@21-2\"] = 1;\n iterate(function (item) {\n const value = MutableSet$00601$$Add$$2B595(this$.contents, item);\n void value;\n }, items);\n void null;\n});\nexport function MutableSet$00601$reflection($gen$$4) {\n return class_type(\"Fable.Collections.MutableSet`1\", [$gen$$4], MutableSet$00601);\n}\nexport function MutableSet$00601$$$$002Ector$$Z6150332D(items, comparer) {\n return this instanceof MutableSet$00601 ? MutableSet$00601.call(this, items, comparer) : new MutableSet$00601(items, comparer);\n}\n\nfunction MutableSet$00601$$TryFindIndex$$2B595(this$$$1, k) {\n const h = this$$$1.comparer.GetHashCode(k) | 0;\n const matchValue = tryGetValue(this$$$1.hashMap, h, null);\n\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex(function (v) {\n return this$$$1.comparer.Equals(k, v);\n })];\n } else {\n return [false, h, -1];\n }\n}\n\nfunction MutableSet$00601$$TryFind$$2B595(this$$$2, k$$1) {\n const matchValue$$1 = MutableSet$00601$$TryFindIndex$$2B595(this$$$2, k$$1);\n var $target$$9;\n\n if (matchValue$$1[0]) {\n if (matchValue$$1[2] > -1) {\n $target$$9 = 0;\n } else {\n $target$$9 = 1;\n }\n } else {\n $target$$9 = 1;\n }\n\n switch ($target$$9) {\n case 0:\n {\n return some(getItemFromDict(this$$$2.hashMap, matchValue$$1[1])[matchValue$$1[2]]);\n }\n\n case 1:\n {\n return undefined;\n }\n }\n}\n\nexport function MutableSet$00601$$get_Comparer(this$$$3) {\n return this$$$3.comparer;\n}\nexport function MutableSet$00601$$Clear(this$$$4) {\n this$$$4.hashMap.clear();\n}\nexport function MutableSet$00601$$get_Count(this$$$5) {\n const source = this$$$5.hashMap.values();\n return sumBy(function projection(pairs) {\n return pairs.length;\n }, source, {\n GetZero() {\n return 0;\n },\n\n Add($x$$2, $y$$3) {\n return $x$$2 + $y$$3;\n }\n\n }) | 0;\n}\nexport function MutableSet$00601$$Add$$2B595(this$$$6, k$$2) {\n const matchValue$$2 = MutableSet$00601$$TryFindIndex$$2B595(this$$$6, k$$2);\n var $target$$16;\n\n if (matchValue$$2[0]) {\n if (matchValue$$2[2] > -1) {\n $target$$16 = 0;\n } else {\n $target$$16 = 1;\n }\n } else {\n $target$$16 = 1;\n }\n\n switch ($target$$16) {\n case 0:\n {\n return false;\n }\n\n case 1:\n {\n if (matchValue$$2[0]) {\n const value$$1 = void getItemFromDict(this$$$6.hashMap, matchValue$$2[1]).push(k$$2);\n void null;\n return true;\n } else {\n this$$$6.hashMap.set(matchValue$$2[1], [k$$2]);\n return true;\n }\n }\n }\n}\nexport function MutableSet$00601$$Contains$$2B595(this$$$7, k$$3) {\n const matchValue$$3 = MutableSet$00601$$TryFindIndex$$2B595(this$$$7, k$$3);\n var $target$$19;\n\n if (matchValue$$3[0]) {\n if (matchValue$$3[2] > -1) {\n $target$$19 = 0;\n } else {\n $target$$19 = 1;\n }\n } else {\n $target$$19 = 1;\n }\n\n switch ($target$$19) {\n case 0:\n {\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\nexport function MutableSet$00601$$Remove$$2B595(this$$$8, k$$4) {\n const matchValue$$4 = MutableSet$00601$$TryFindIndex$$2B595(this$$$8, k$$4);\n var $target$$22;\n\n if (matchValue$$4[0]) {\n if (matchValue$$4[2] > -1) {\n $target$$22 = 0;\n } else {\n $target$$22 = 1;\n }\n } else {\n $target$$22 = 1;\n }\n\n switch ($target$$22) {\n case 0:\n {\n getItemFromDict(this$$$8.hashMap, matchValue$$4[1]).splice(matchValue$$4[2], 1);\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\n\nMutableSet$00601.prototype[Symbol.iterator] = function () {\n var elems;\n const this$$$9 = this;\n return toIterator((elems = delay(function () {\n return collect(function (values$$1) {\n return map(function (value$$2) {\n return value$$2;\n }, values$$1);\n }, this$$$9.hashMap.values());\n }), getEnumerator(elems)));\n};\n\nMutableSet$00601.prototype.Add = function (item$$1) {\n const this$$$10 = this;\n const value$$3 = MutableSet$00601$$Add$$2B595(this$$$10, item$$1);\n void value$$3;\n};\n\nMutableSet$00601.prototype.Clear = function () {\n const this$$$11 = this;\n MutableSet$00601$$Clear(this$$$11);\n};\n\nMutableSet$00601.prototype.Contains = function (item$$2) {\n const this$$$12 = this;\n return MutableSet$00601$$Contains$$2B595(this$$$12, item$$2);\n};\n\nMutableSet$00601.prototype.CopyTo = function (array, arrayIndex) {\n const this$$$13 = this;\n iterateIndexed(function action(i$$8, e) {\n array[arrayIndex + i$$8] = e;\n }, this$$$13);\n};\n\nObject.defineProperty(MutableSet$00601.prototype, \"Count\", {\n \"get\": function () {\n const this$$$14 = this;\n return MutableSet$00601$$get_Count(this$$$14) | 0;\n }\n});\nObject.defineProperty(MutableSet$00601.prototype, \"IsReadOnly\", {\n \"get\": function () {\n return false;\n }\n});\n\nMutableSet$00601.prototype.Remove = function (item$$3) {\n const this$$$16 = this;\n return MutableSet$00601$$Remove$$2B595(this$$$16, item$$3);\n};\n\nObject.defineProperty(MutableSet$00601.prototype, \"size\", {\n \"get\": function () {\n const this$$$17 = this;\n return MutableSet$00601$$get_Count(this$$$17) | 0;\n }\n});\n\nMutableSet$00601.prototype.add = function (k$$5) {\n const this$$$18 = this;\n const value$$4 = MutableSet$00601$$Add$$2B595(this$$$18, k$$5);\n void value$$4;\n return this$$$18;\n};\n\nMutableSet$00601.prototype.add_ = function (k$$6) {\n const this$$$19 = this;\n return MutableSet$00601$$Add$$2B595(this$$$19, k$$6);\n};\n\nMutableSet$00601.prototype.clear = function () {\n const this$$$20 = this;\n MutableSet$00601$$Clear(this$$$20);\n};\n\nMutableSet$00601.prototype.delete = function (k$$7) {\n const this$$$21 = this;\n return MutableSet$00601$$Remove$$2B595(this$$$21, k$$7);\n};\n\nMutableSet$00601.prototype.has = function (k$$8) {\n const this$$$22 = this;\n return MutableSet$00601$$Contains$$2B595(this$$$22, k$$8);\n};\n\nMutableSet$00601.prototype.keys = function () {\n const this$$$23 = this;\n return map(function mapping(x) {\n return x;\n }, this$$$23);\n};\n\nMutableSet$00601.prototype.values = function () {\n const this$$$24 = this;\n return map(function mapping$$1(x$$1) {\n return x$$1;\n }, this$$$24);\n};\n\nMutableSet$00601.prototype.entries = function () {\n const this$$$25 = this;\n return map(function mapping$$2(v$$1) {\n return [v$$1, v$$1];\n }, this$$$25);\n};","import { List, Record, declare, Union } from \"./Types.js\";\nimport { class_type, record_type, bool_type, list_type, union_type, int32_type } from \"./Reflection.js\";\nimport { value as value$$2, some, Choice } from \"./Option.js\";\nimport { iterate as iterate$$1, delay, collect, singleton as singleton$$1, empty as empty$$1, fold as fold$$1, toIterator, map as map$$1, reduce, getEnumerator, unfold } from \"./Seq.js\";\nimport { structuralHash, isDisposable } from \"./Util.js\";\nimport { join } from \"./String.js\";\nimport { MutableSet$00601$$Add$$2B595 as MutableSet$002400601$0024$0024Add$0024$00242B595, MutableSet$00601$$$$002Ector$$Z6150332D as MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D } from \"./MutableSet\";\nexport const SetTree$00601 = declare(function Set_SetTree(tag, name, ...fields) {\n this.tag = tag | 0;\n this.name = name;\n this.fields = fields;\n}, Union);\nexport function SetTree$00601$reflection($gen$$3) {\n return union_type(\"Set.SetTree`1\", [$gen$$3], SetTree$00601, () => [\"SetEmpty\", [\"SetNode\", [[\"Item1\", $gen$$3], [\"Item2\", SetTree$00601$reflection($gen$$3)], [\"Item3\", SetTree$00601$reflection($gen$$3)], [\"Item4\", int32_type]]], [\"SetOne\", [[\"Item\", $gen$$3]]]]);\n}\nexport function SetTreeModule$$$countAux($s$$4, $acc$$5) {\n SetTreeModule$$$countAux: while (true) {\n const s = $s$$4,\n acc = $acc$$5;\n\n switch (s.tag) {\n case 2:\n {\n return acc + 1 | 0;\n }\n\n case 0:\n {\n return acc | 0;\n }\n\n default:\n {\n $s$$4 = s.fields[1];\n $acc$$5 = SetTreeModule$$$countAux(s.fields[2], acc + 1);\n continue SetTreeModule$$$countAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$count(s$$1) {\n return SetTreeModule$$$countAux(s$$1, 0);\n}\nexport function SetTreeModule$$$SetOne(n) {\n return new SetTree$00601(2, \"SetOne\", n);\n}\nexport function SetTreeModule$$$SetNode(x, l$$1, r$$1, h) {\n return new SetTree$00601(1, \"SetNode\", x, l$$1, r$$1, h);\n}\nexport function SetTreeModule$$$height(t) {\n switch (t.tag) {\n case 2:\n {\n return 1;\n }\n\n case 1:\n {\n return t.fields[3] | 0;\n }\n\n default:\n {\n return 0;\n }\n }\n}\nexport const SetTreeModule$$$tolerance = 2;\nexport function SetTreeModule$$$mk(l$$2, k, r$$2) {\n var $target$$16;\n\n if (l$$2.tag === 0) {\n if (r$$2.tag === 0) {\n $target$$16 = 0;\n } else {\n $target$$16 = 1;\n }\n } else {\n $target$$16 = 1;\n }\n\n switch ($target$$16) {\n case 0:\n {\n return SetTreeModule$$$SetOne(k);\n }\n\n case 1:\n {\n const hl = SetTreeModule$$$height(l$$2) | 0;\n const hr = SetTreeModule$$$height(r$$2) | 0;\n const m = (hl < hr ? hr : hl) | 0;\n return SetTreeModule$$$SetNode(k, l$$2, r$$2, m + 1);\n }\n }\n}\nexport function SetTreeModule$$$rebalance(t1, k$$1, t2) {\n const t1h = SetTreeModule$$$height(t1) | 0;\n const t2h = SetTreeModule$$$height(t2) | 0;\n\n if (t2h > t1h + SetTreeModule$$$tolerance) {\n if (t2.tag === 1) {\n if (SetTreeModule$$$height(t2.fields[1]) > t1h + 1) {\n if (t2.fields[1].tag === 1) {\n return SetTreeModule$$$mk(SetTreeModule$$$mk(t1, k$$1, t2.fields[1].fields[1]), t2.fields[1].fields[0], SetTreeModule$$$mk(t2.fields[1].fields[2], t2.fields[0], t2.fields[2]));\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return SetTreeModule$$$mk(SetTreeModule$$$mk(t1, k$$1, t2.fields[1]), t2.fields[0], t2.fields[2]);\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else if (t1h > t2h + SetTreeModule$$$tolerance) {\n if (t1.tag === 1) {\n if (SetTreeModule$$$height(t1.fields[2]) > t2h + 1) {\n if (t1.fields[2].tag === 1) {\n return SetTreeModule$$$mk(SetTreeModule$$$mk(t1.fields[1], t1.fields[0], t1.fields[2].fields[1]), t1.fields[2].fields[0], SetTreeModule$$$mk(t1.fields[2].fields[2], k$$1, t2));\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return SetTreeModule$$$mk(t1.fields[1], t1.fields[0], SetTreeModule$$$mk(t1.fields[2], k$$1, t2));\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return SetTreeModule$$$mk(t1, k$$1, t2);\n }\n}\nexport function SetTreeModule$$$add(comparer, k$$2, t$$1) {\n switch (t$$1.tag) {\n case 2:\n {\n const c$$1 = comparer.Compare(k$$2, t$$1.fields[0]) | 0;\n\n if (c$$1 < 0) {\n return SetTreeModule$$$SetNode(k$$2, new SetTree$00601(0, \"SetEmpty\"), t$$1, 2);\n } else if (c$$1 === 0) {\n return t$$1;\n } else {\n return SetTreeModule$$$SetNode(k$$2, t$$1, new SetTree$00601(0, \"SetEmpty\"), 2);\n }\n }\n\n case 0:\n {\n return SetTreeModule$$$SetOne(k$$2);\n }\n\n default:\n {\n const c = comparer.Compare(k$$2, t$$1.fields[0]) | 0;\n\n if (c < 0) {\n return SetTreeModule$$$rebalance(SetTreeModule$$$add(comparer, k$$2, t$$1.fields[1]), t$$1.fields[0], t$$1.fields[2]);\n } else if (c === 0) {\n return t$$1;\n } else {\n return SetTreeModule$$$rebalance(t$$1.fields[1], t$$1.fields[0], SetTreeModule$$$add(comparer, k$$2, t$$1.fields[2]));\n }\n }\n }\n}\nexport function SetTreeModule$$$balance(comparer$$1, t1$$1, k$$3, t2$$1) {\n var $target$$27, t2$$2, t1$$2, k1, t2$$3, k2$$2, t1$$3, h1, h2, k1$$1, k2$$3, t11, t12, t21, t22;\n\n if (t1$$1.tag === 2) {\n if (t2$$1.tag === 0) {\n $target$$27 = 1;\n t1$$2 = t1$$1;\n } else if (t2$$1.tag === 2) {\n $target$$27 = 2;\n k1 = t1$$1.fields[0];\n t2$$3 = t2$$1;\n } else {\n $target$$27 = 2;\n k1 = t1$$1.fields[0];\n t2$$3 = t2$$1;\n }\n } else if (t1$$1.tag === 1) {\n if (t2$$1.tag === 2) {\n $target$$27 = 3;\n k2$$2 = t2$$1.fields[0];\n t1$$3 = t1$$1;\n } else if (t2$$1.tag === 1) {\n $target$$27 = 4;\n h1 = t1$$1.fields[3];\n h2 = t2$$1.fields[3];\n k1$$1 = t1$$1.fields[0];\n k2$$3 = t2$$1.fields[0];\n t11 = t1$$1.fields[1];\n t12 = t1$$1.fields[2];\n t21 = t2$$1.fields[1];\n t22 = t2$$1.fields[2];\n } else {\n $target$$27 = 1;\n t1$$2 = t1$$1;\n }\n } else {\n $target$$27 = 0;\n t2$$2 = t2$$1;\n }\n\n switch ($target$$27) {\n case 0:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, t2$$2);\n }\n\n case 1:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, t1$$2);\n }\n\n case 2:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, SetTreeModule$$$add(comparer$$1, k1, t2$$3));\n }\n\n case 3:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, SetTreeModule$$$add(comparer$$1, k2$$2, t1$$3));\n }\n\n case 4:\n {\n if (h1 + SetTreeModule$$$tolerance < h2) {\n return SetTreeModule$$$rebalance(SetTreeModule$$$balance(comparer$$1, t1$$1, k$$3, t21), k2$$3, t22);\n } else if (h2 + SetTreeModule$$$tolerance < h1) {\n return SetTreeModule$$$rebalance(t11, k1$$1, SetTreeModule$$$balance(comparer$$1, t12, k$$3, t2$$1));\n } else {\n return SetTreeModule$$$mk(t1$$1, k$$3, t2$$1);\n }\n }\n }\n}\nexport function SetTreeModule$$$split(comparer$$2, pivot, t$$2) {\n switch (t$$2.tag) {\n case 2:\n {\n const c$$3 = comparer$$2.Compare(t$$2.fields[0], pivot) | 0;\n\n if (c$$3 < 0) {\n return [t$$2, false, new SetTree$00601(0, \"SetEmpty\")];\n } else if (c$$3 === 0) {\n return [new SetTree$00601(0, \"SetEmpty\"), true, new SetTree$00601(0, \"SetEmpty\")];\n } else {\n return [new SetTree$00601(0, \"SetEmpty\"), false, t$$2];\n }\n }\n\n case 0:\n {\n return [new SetTree$00601(0, \"SetEmpty\"), false, new SetTree$00601(0, \"SetEmpty\")];\n }\n\n default:\n {\n const c$$2 = comparer$$2.Compare(pivot, t$$2.fields[0]) | 0;\n\n if (c$$2 < 0) {\n const patternInput = SetTreeModule$$$split(comparer$$2, pivot, t$$2.fields[1]);\n return [patternInput[0], patternInput[1], SetTreeModule$$$balance(comparer$$2, patternInput[2], t$$2.fields[0], t$$2.fields[2])];\n } else if (c$$2 === 0) {\n return [t$$2.fields[1], true, t$$2.fields[2]];\n } else {\n const patternInput$$1 = SetTreeModule$$$split(comparer$$2, pivot, t$$2.fields[2]);\n return [SetTreeModule$$$balance(comparer$$2, t$$2.fields[1], t$$2.fields[0], patternInput$$1[0]), patternInput$$1[1], patternInput$$1[2]];\n }\n }\n }\n}\nexport function SetTreeModule$$$spliceOutSuccessor(t$$3) {\n switch (t$$3.tag) {\n case 2:\n {\n return [t$$3.fields[0], new SetTree$00601(0, \"SetEmpty\")];\n }\n\n case 1:\n {\n if (t$$3.fields[1].tag === 0) {\n return [t$$3.fields[0], t$$3.fields[2]];\n } else {\n const patternInput$$2 = SetTreeModule$$$spliceOutSuccessor(t$$3.fields[1]);\n return [patternInput$$2[0], SetTreeModule$$$mk(patternInput$$2[1], t$$3.fields[0], t$$3.fields[2])];\n }\n }\n\n default:\n {\n throw new Error(\"internal error: Set.spliceOutSuccessor\");\n }\n }\n}\nexport function SetTreeModule$$$remove(comparer$$3, k$$4, t$$4) {\n switch (t$$4.tag) {\n case 2:\n {\n const c$$4 = comparer$$3.Compare(k$$4, t$$4.fields[0]) | 0;\n\n if (c$$4 === 0) {\n return new SetTree$00601(0, \"SetEmpty\");\n } else {\n return t$$4;\n }\n }\n\n case 1:\n {\n const c$$5 = comparer$$3.Compare(k$$4, t$$4.fields[0]) | 0;\n\n if (c$$5 < 0) {\n return SetTreeModule$$$rebalance(SetTreeModule$$$remove(comparer$$3, k$$4, t$$4.fields[1]), t$$4.fields[0], t$$4.fields[2]);\n } else if (c$$5 === 0) {\n if (t$$4.fields[1].tag === 0) {\n return t$$4.fields[2];\n } else if (t$$4.fields[2].tag === 0) {\n return t$$4.fields[1];\n } else {\n const patternInput$$3 = SetTreeModule$$$spliceOutSuccessor(t$$4.fields[2]);\n return SetTreeModule$$$mk(t$$4.fields[1], patternInput$$3[0], patternInput$$3[1]);\n }\n } else {\n return SetTreeModule$$$rebalance(t$$4.fields[1], t$$4.fields[0], SetTreeModule$$$remove(comparer$$3, k$$4, t$$4.fields[2]));\n }\n }\n\n default:\n {\n return t$$4;\n }\n }\n}\nexport function SetTreeModule$$$mem($comparer$$4$$35, $k$$5$$36, $t$$5$$37) {\n SetTreeModule$$$mem: while (true) {\n const comparer$$4 = $comparer$$4$$35,\n k$$5 = $k$$5$$36,\n t$$5 = $t$$5$$37;\n\n switch (t$$5.tag) {\n case 2:\n {\n return comparer$$4.Compare(k$$5, t$$5.fields[0]) === 0;\n }\n\n case 0:\n {\n return false;\n }\n\n default:\n {\n const c$$6 = comparer$$4.Compare(k$$5, t$$5.fields[0]) | 0;\n\n if (c$$6 < 0) {\n $comparer$$4$$35 = comparer$$4;\n $k$$5$$36 = k$$5;\n $t$$5$$37 = t$$5.fields[1];\n continue SetTreeModule$$$mem;\n } else if (c$$6 === 0) {\n return true;\n } else {\n $comparer$$4$$35 = comparer$$4;\n $k$$5$$36 = k$$5;\n $t$$5$$37 = t$$5.fields[2];\n continue SetTreeModule$$$mem;\n }\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$iter($f$$38, $t$$6$$39) {\n SetTreeModule$$$iter: while (true) {\n const f = $f$$38,\n t$$6 = $t$$6$$39;\n\n switch (t$$6.tag) {\n case 2:\n {\n f(t$$6.fields[0]);\n break;\n }\n\n case 0:\n {\n void null;\n break;\n }\n\n default:\n {\n SetTreeModule$$$iter(f, t$$6.fields[1]);\n f(t$$6.fields[0]);\n $f$$38 = f;\n $t$$6$$39 = t$$6.fields[2];\n continue SetTreeModule$$$iter;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$foldBack($f$$1$$40, $m$$1$$41, $x$$1$$42) {\n SetTreeModule$$$foldBack: while (true) {\n const f$$1 = $f$$1$$40,\n m$$1 = $m$$1$$41,\n x$$1 = $x$$1$$42;\n\n switch (m$$1.tag) {\n case 2:\n {\n return f$$1(m$$1.fields[0], x$$1);\n }\n\n case 0:\n {\n return x$$1;\n }\n\n default:\n {\n $f$$1$$40 = f$$1;\n $m$$1$$41 = m$$1.fields[1];\n $x$$1$$42 = f$$1(m$$1.fields[0], SetTreeModule$$$foldBack(f$$1, m$$1.fields[2], x$$1));\n continue SetTreeModule$$$foldBack;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$fold($f$$2$$43, $x$$2$$44, $m$$2$$45) {\n SetTreeModule$$$fold: while (true) {\n const f$$2 = $f$$2$$43,\n x$$2 = $x$$2$$44,\n m$$2 = $m$$2$$45;\n\n switch (m$$2.tag) {\n case 2:\n {\n return f$$2(x$$2, m$$2.fields[0]);\n }\n\n case 0:\n {\n return x$$2;\n }\n\n default:\n {\n const x$$3 = SetTreeModule$$$fold(f$$2, x$$2, m$$2.fields[1]);\n const x$$4 = f$$2(x$$3, m$$2.fields[0]);\n $f$$2$$43 = f$$2;\n $x$$2$$44 = x$$4;\n $m$$2$$45 = m$$2.fields[2];\n continue SetTreeModule$$$fold;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$forall($f$$3$$46, $m$$3$$47) {\n SetTreeModule$$$forall: while (true) {\n const f$$3 = $f$$3$$46,\n m$$3 = $m$$3$$47;\n\n switch (m$$3.tag) {\n case 2:\n {\n return f$$3(m$$3.fields[0]);\n }\n\n case 0:\n {\n return true;\n }\n\n default:\n {\n if (f$$3(m$$3.fields[0]) ? SetTreeModule$$$forall(f$$3, m$$3.fields[1]) : false) {\n $f$$3$$46 = f$$3;\n $m$$3$$47 = m$$3.fields[2];\n continue SetTreeModule$$$forall;\n } else {\n return false;\n }\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$exists($f$$4$$48, $m$$4$$49) {\n SetTreeModule$$$exists: while (true) {\n const f$$4 = $f$$4$$48,\n m$$4 = $m$$4$$49;\n\n switch (m$$4.tag) {\n case 2:\n {\n return f$$4(m$$4.fields[0]);\n }\n\n case 0:\n {\n return false;\n }\n\n default:\n {\n if (f$$4(m$$4.fields[0]) ? true : SetTreeModule$$$exists(f$$4, m$$4.fields[1])) {\n return true;\n } else {\n $f$$4$$48 = f$$4;\n $m$$4$$49 = m$$4.fields[2];\n continue SetTreeModule$$$exists;\n }\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$isEmpty(m$$5) {\n if (m$$5.tag === 0) {\n return true;\n } else {\n return false;\n }\n}\nexport function SetTreeModule$$$subset(comparer$$5, a, b) {\n return SetTreeModule$$$forall(function (x$$5) {\n return SetTreeModule$$$mem(comparer$$5, x$$5, b);\n }, a);\n}\nexport function SetTreeModule$$$psubset(comparer$$6, a$$1, b$$1) {\n if (SetTreeModule$$$forall(function (x$$6) {\n return SetTreeModule$$$mem(comparer$$6, x$$6, b$$1);\n }, a$$1)) {\n return SetTreeModule$$$exists(function (x$$7) {\n return !SetTreeModule$$$mem(comparer$$6, x$$7, a$$1);\n }, b$$1);\n } else {\n return false;\n }\n}\nexport function SetTreeModule$$$filterAux($comparer$$7$$57, $f$$5$$58, $s$$2$$59, $acc$$1$$60) {\n SetTreeModule$$$filterAux: while (true) {\n const comparer$$7 = $comparer$$7$$57,\n f$$5 = $f$$5$$58,\n s$$2 = $s$$2$$59,\n acc$$1 = $acc$$1$$60;\n\n switch (s$$2.tag) {\n case 2:\n {\n if (f$$5(s$$2.fields[0])) {\n return SetTreeModule$$$add(comparer$$7, s$$2.fields[0], acc$$1);\n } else {\n return acc$$1;\n }\n }\n\n case 0:\n {\n return acc$$1;\n }\n\n default:\n {\n const acc$$2 = f$$5(s$$2.fields[0]) ? SetTreeModule$$$add(comparer$$7, s$$2.fields[0], acc$$1) : acc$$1;\n $comparer$$7$$57 = comparer$$7;\n $f$$5$$58 = f$$5;\n $s$$2$$59 = s$$2.fields[1];\n $acc$$1$$60 = SetTreeModule$$$filterAux(comparer$$7, f$$5, s$$2.fields[2], acc$$2);\n continue SetTreeModule$$$filterAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$filter(comparer$$8, f$$6, s$$3) {\n return SetTreeModule$$$filterAux(comparer$$8, f$$6, s$$3, new SetTree$00601(0, \"SetEmpty\"));\n}\nexport function SetTreeModule$$$diffAux($comparer$$9$$64, $m$$6$$65, $acc$$3$$66) {\n SetTreeModule$$$diffAux: while (true) {\n const comparer$$9 = $comparer$$9$$64,\n m$$6 = $m$$6$$65,\n acc$$3 = $acc$$3$$66;\n\n switch (m$$6.tag) {\n case 2:\n {\n return SetTreeModule$$$remove(comparer$$9, m$$6.fields[0], acc$$3);\n }\n\n case 0:\n {\n return acc$$3;\n }\n\n default:\n {\n $comparer$$9$$64 = comparer$$9;\n $m$$6$$65 = m$$6.fields[1];\n $acc$$3$$66 = SetTreeModule$$$diffAux(comparer$$9, m$$6.fields[2], SetTreeModule$$$remove(comparer$$9, m$$6.fields[0], acc$$3));\n continue SetTreeModule$$$diffAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$diff(comparer$$10, a$$2, b$$2) {\n return SetTreeModule$$$diffAux(comparer$$10, b$$2, a$$2);\n}\nexport function SetTreeModule$$$union(comparer$$11, t1$$4, t2$$4) {\n var $target$$73, h1$$1, h2$$1, k1$$4, k2$$16, t11$$2, t12$$2, t21$$1, t22$$1, t$$7, t$$8, k1$$5, t2$$5, k2$$17, t1$$5;\n\n if (t1$$4.tag === 0) {\n $target$$73 = 1;\n t$$7 = t2$$4;\n } else if (t1$$4.tag === 2) {\n if (t2$$4.tag === 0) {\n $target$$73 = 2;\n t$$8 = t1$$4;\n } else if (t2$$4.tag === 2) {\n $target$$73 = 3;\n k1$$5 = t1$$4.fields[0];\n t2$$5 = t2$$4;\n } else {\n $target$$73 = 3;\n k1$$5 = t1$$4.fields[0];\n t2$$5 = t2$$4;\n }\n } else if (t2$$4.tag === 0) {\n $target$$73 = 2;\n t$$8 = t1$$4;\n } else if (t2$$4.tag === 2) {\n $target$$73 = 4;\n k2$$17 = t2$$4.fields[0];\n t1$$5 = t1$$4;\n } else {\n $target$$73 = 0;\n h1$$1 = t1$$4.fields[3];\n h2$$1 = t2$$4.fields[3];\n k1$$4 = t1$$4.fields[0];\n k2$$16 = t2$$4.fields[0];\n t11$$2 = t1$$4.fields[1];\n t12$$2 = t1$$4.fields[2];\n t21$$1 = t2$$4.fields[1];\n t22$$1 = t2$$4.fields[2];\n }\n\n switch ($target$$73) {\n case 0:\n {\n if (h1$$1 > h2$$1) {\n const patternInput$$4 = SetTreeModule$$$split(comparer$$11, k1$$4, t2$$4);\n return SetTreeModule$$$balance(comparer$$11, SetTreeModule$$$union(comparer$$11, t11$$2, patternInput$$4[0]), k1$$4, SetTreeModule$$$union(comparer$$11, t12$$2, patternInput$$4[2]));\n } else {\n const patternInput$$5 = SetTreeModule$$$split(comparer$$11, k2$$16, t1$$4);\n return SetTreeModule$$$balance(comparer$$11, SetTreeModule$$$union(comparer$$11, t21$$1, patternInput$$5[0]), k2$$16, SetTreeModule$$$union(comparer$$11, t22$$1, patternInput$$5[2]));\n }\n }\n\n case 1:\n {\n return t$$7;\n }\n\n case 2:\n {\n return t$$8;\n }\n\n case 3:\n {\n return SetTreeModule$$$add(comparer$$11, k1$$5, t2$$5);\n }\n\n case 4:\n {\n return SetTreeModule$$$add(comparer$$11, k2$$17, t1$$5);\n }\n }\n}\nexport function SetTreeModule$$$intersectionAux($comparer$$12$$74, $b$$3$$75, $m$$7$$76, $acc$$4$$77) {\n SetTreeModule$$$intersectionAux: while (true) {\n const comparer$$12 = $comparer$$12$$74,\n b$$3 = $b$$3$$75,\n m$$7 = $m$$7$$76,\n acc$$4 = $acc$$4$$77;\n\n switch (m$$7.tag) {\n case 2:\n {\n if (SetTreeModule$$$mem(comparer$$12, m$$7.fields[0], b$$3)) {\n return SetTreeModule$$$add(comparer$$12, m$$7.fields[0], acc$$4);\n } else {\n return acc$$4;\n }\n }\n\n case 0:\n {\n return acc$$4;\n }\n\n default:\n {\n const acc$$5 = SetTreeModule$$$intersectionAux(comparer$$12, b$$3, m$$7.fields[2], acc$$4);\n const acc$$6 = SetTreeModule$$$mem(comparer$$12, m$$7.fields[0], b$$3) ? SetTreeModule$$$add(comparer$$12, m$$7.fields[0], acc$$5) : acc$$5;\n $comparer$$12$$74 = comparer$$12;\n $b$$3$$75 = b$$3;\n $m$$7$$76 = m$$7.fields[1];\n $acc$$4$$77 = acc$$6;\n continue SetTreeModule$$$intersectionAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$intersection(comparer$$13, a$$3, b$$4) {\n return SetTreeModule$$$intersectionAux(comparer$$13, b$$4, a$$3, new SetTree$00601(0, \"SetEmpty\"));\n}\nexport function SetTreeModule$$$partition1(comparer$$14, f$$7, k$$16, acc1, acc2) {\n if (f$$7(k$$16)) {\n return [SetTreeModule$$$add(comparer$$14, k$$16, acc1), acc2];\n } else {\n return [acc1, SetTreeModule$$$add(comparer$$14, k$$16, acc2)];\n }\n}\nexport function SetTreeModule$$$partitionAux($comparer$$15$$86, $f$$8$$87, $s$$4$$88, $acc_0$$89, $acc_1$$90) {\n SetTreeModule$$$partitionAux: while (true) {\n const comparer$$15 = $comparer$$15$$86,\n f$$8 = $f$$8$$87,\n s$$4 = $s$$4$$88,\n acc_0 = $acc_0$$89,\n acc_1 = $acc_1$$90;\n\n switch (s$$4.tag) {\n case 2:\n {\n return SetTreeModule$$$partition1(comparer$$15, f$$8, s$$4.fields[0], acc_0, acc_1);\n }\n\n case 0:\n {\n return [acc_0, acc_1];\n }\n\n default:\n {\n const acc$$8 = SetTreeModule$$$partitionAux(comparer$$15, f$$8, s$$4.fields[2], acc_0, acc_1);\n const acc$$9 = SetTreeModule$$$partition1(comparer$$15, f$$8, s$$4.fields[0], acc$$8[0], acc$$8[1]);\n $comparer$$15$$86 = comparer$$15;\n $f$$8$$87 = f$$8;\n $s$$4$$88 = s$$4.fields[1];\n $acc_0$$89 = acc$$9[0];\n $acc_1$$90 = acc$$9[1];\n continue SetTreeModule$$$partitionAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$partition(comparer$$16, f$$9, s$$5) {\n const seed = [new SetTree$00601(0, \"SetEmpty\"), new SetTree$00601(0, \"SetEmpty\")];\n return SetTreeModule$$$partitionAux(comparer$$16, f$$9, s$$5, seed[0], seed[1]);\n}\nexport function SetTreeModule$$$$007CMatchSetNode$007CMatchSetEmpty$007C(s$$6) {\n switch (s$$6.tag) {\n case 2:\n {\n return new Choice(0, \"Choice1Of2\", [s$$6.fields[0], new SetTree$00601(0, \"SetEmpty\"), new SetTree$00601(0, \"SetEmpty\")]);\n }\n\n case 0:\n {\n return new Choice(1, \"Choice2Of2\", void null);\n }\n\n default:\n {\n return new Choice(0, \"Choice1Of2\", [s$$6.fields[0], s$$6.fields[1], s$$6.fields[2]]);\n }\n }\n}\nexport function SetTreeModule$$$minimumElementAux($s$$7$$95, $n$$1$$96) {\n SetTreeModule$$$minimumElementAux: while (true) {\n const s$$7 = $s$$7$$95,\n n$$1 = $n$$1$$96;\n\n switch (s$$7.tag) {\n case 2:\n {\n return s$$7.fields[0];\n }\n\n case 0:\n {\n return n$$1;\n }\n\n default:\n {\n $s$$7$$95 = s$$7.fields[1];\n $n$$1$$96 = s$$7.fields[0];\n continue SetTreeModule$$$minimumElementAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$minimumElementOpt(s$$8) {\n switch (s$$8.tag) {\n case 2:\n {\n return some(s$$8.fields[0]);\n }\n\n case 0:\n {\n return undefined;\n }\n\n default:\n {\n return some(SetTreeModule$$$minimumElementAux(s$$8.fields[1], s$$8.fields[0]));\n }\n }\n}\nexport function SetTreeModule$$$maximumElementAux($s$$9$$98, $n$$2$$99) {\n SetTreeModule$$$maximumElementAux: while (true) {\n const s$$9 = $s$$9$$98,\n n$$2 = $n$$2$$99;\n\n switch (s$$9.tag) {\n case 2:\n {\n return s$$9.fields[0];\n }\n\n case 0:\n {\n return n$$2;\n }\n\n default:\n {\n $s$$9$$98 = s$$9.fields[2];\n $n$$2$$99 = s$$9.fields[0];\n continue SetTreeModule$$$maximumElementAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$maximumElementOpt(s$$10) {\n switch (s$$10.tag) {\n case 2:\n {\n return some(s$$10.fields[0]);\n }\n\n case 0:\n {\n return undefined;\n }\n\n default:\n {\n return some(SetTreeModule$$$maximumElementAux(s$$10.fields[2], s$$10.fields[0]));\n }\n }\n}\nexport function SetTreeModule$$$minimumElement(s$$11) {\n const matchValue$$4 = SetTreeModule$$$minimumElementOpt(s$$11);\n\n if (matchValue$$4 == null) {\n throw new Error(\"Set contains no elements\");\n } else {\n const k$$27 = value$$2(matchValue$$4);\n return k$$27;\n }\n}\nexport function SetTreeModule$$$maximumElement(s$$12) {\n const matchValue$$5 = SetTreeModule$$$maximumElementOpt(s$$12);\n\n if (matchValue$$5 == null) {\n throw new Error(\"Set contains no elements\");\n } else {\n const k$$28 = value$$2(matchValue$$5);\n return k$$28;\n }\n}\nexport const SetTreeModule$002ESetIterator$00601 = declare(function Set_SetTreeModule_SetIterator(stack, started) {\n this.stack = stack;\n this.started = started;\n}, Record);\nexport function SetTreeModule$002ESetIterator$00601$reflection($gen$$103) {\n return record_type(\"Set.SetTreeModule.SetIterator`1\", [$gen$$103], SetTreeModule$002ESetIterator$00601, () => [[\"stack\", list_type(SetTree$00601$reflection($gen$$103))], [\"started\", bool_type]]);\n}\nexport function SetTreeModule$$$collapseLHS($stack$$104) {\n SetTreeModule$$$collapseLHS: while (true) {\n const stack = $stack$$104;\n\n if (stack.tail != null) {\n if (stack.head.tag === 2) {\n return stack;\n } else if (stack.head.tag === 1) {\n $stack$$104 = new List(stack.head.fields[1], new List(SetTreeModule$$$SetOne(stack.head.fields[0]), new List(stack.head.fields[2], stack.tail)));\n continue SetTreeModule$$$collapseLHS;\n } else {\n $stack$$104 = stack.tail;\n continue SetTreeModule$$$collapseLHS;\n }\n } else {\n return new List();\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$mkIterator(s$$13) {\n return new SetTreeModule$002ESetIterator$00601(SetTreeModule$$$collapseLHS(new List(s$$13, new List())), false);\n}\nexport function SetTreeModule$$$notStarted() {\n throw new Error(\"Enumeration not started\");\n}\nexport function SetTreeModule$$$alreadyFinished() {\n throw new Error(\"Enumeration already started\");\n}\nexport function SetTreeModule$$$current(i) {\n if (i.started) {\n const matchValue$$6 = i.stack;\n\n if (matchValue$$6.tail == null) {\n return SetTreeModule$$$alreadyFinished();\n } else if (matchValue$$6.head.tag === 2) {\n return matchValue$$6.head.fields[0];\n } else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for current\");\n }\n } else {\n return SetTreeModule$$$notStarted();\n }\n}\nexport function SetTreeModule$$$moveNext(i$$1) {\n if (i$$1.started) {\n const matchValue$$7 = i$$1.stack;\n\n if (matchValue$$7.tail == null) {\n return false;\n } else if (matchValue$$7.head.tag === 2) {\n i$$1.stack = SetTreeModule$$$collapseLHS(matchValue$$7.tail);\n return !(i$$1.stack.tail == null);\n } else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n } else {\n i$$1.started = true;\n return !(i$$1.stack.tail == null);\n }\n}\nexport const SetTreeModule$002EmkIEnumerator$00601 = declare(function Set_SetTreeModule_mkIEnumerator(s$$14) {\n const $this$$1 = this;\n $this$$1.s = s$$14;\n $this$$1.i = SetTreeModule$$$mkIterator($this$$1.s);\n void null;\n});\nexport function SetTreeModule$002EmkIEnumerator$00601$reflection($gen$$108) {\n return class_type(\"Set.SetTreeModule.mkIEnumerator`1\", [$gen$$108], SetTreeModule$002EmkIEnumerator$00601);\n}\nexport function SetTreeModule$002EmkIEnumerator$00601$$$$002Ector$$Z5B395D56(s$$14) {\n return this instanceof SetTreeModule$002EmkIEnumerator$00601 ? SetTreeModule$002EmkIEnumerator$00601.call(this, s$$14) : new SetTreeModule$002EmkIEnumerator$00601(s$$14);\n}\nObject.defineProperty(SetTreeModule$002EmkIEnumerator$00601.prototype, \"Current\", {\n \"get\": function () {\n const __ = this;\n return SetTreeModule$$$current(__.i);\n }\n});\n\nSetTreeModule$002EmkIEnumerator$00601.prototype.MoveNext = function () {\n const __$$1 = this;\n return SetTreeModule$$$moveNext(__$$1.i);\n};\n\nSetTreeModule$002EmkIEnumerator$00601.prototype.Reset = function () {\n const __$$2 = this;\n __$$2.i = SetTreeModule$$$mkIterator(__$$2.s);\n};\n\nSetTreeModule$002EmkIEnumerator$00601.prototype.Dispose = function () {\n void null;\n};\n\nexport function SetTreeModule$$$mkIEnumerator(s$$15) {\n return SetTreeModule$002EmkIEnumerator$00601$$$$002Ector$$Z5B395D56(s$$15);\n}\nexport function SetTreeModule$$$toSeq(s$$16) {\n const en = SetTreeModule$$$mkIEnumerator(s$$16);\n return unfold(function generator(en$$1) {\n if (en$$1.MoveNext()) {\n return [en$$1.Current, en$$1];\n } else {\n return undefined;\n }\n }, en);\n}\nexport function SetTreeModule$$$compareStacks($comparer$$17$$112, $l1$$113, $l2$$114) {\n SetTreeModule$$$compareStacks: while (true) {\n const comparer$$17 = $comparer$$17$$112,\n l1 = $l1$$113,\n l2 = $l2$$114;\n var $target$$115, t1$$6, t2$$6, n1k, n2k, t1$$7, t2$$7, n1k$$1, n2k$$1, n2r, t1$$8, t2$$8, emp, n1k$$2, n1r, n2k$$2, t1$$9, t2$$9, n1k$$3, n1r$$1, n2k$$3, n2r$$1, t1$$10, t2$$10, n1k$$4, t1$$11, n1k$$5, n1l, n1r$$2, t1$$12, n2k$$4, t2$$11, n2k$$5, n2l, n2r$$2, t2$$12;\n\n if (l1.tail != null) {\n if (l2.tail != null) {\n if (l2.head.tag === 2) {\n if (l1.head.tag === 2) {\n $target$$115 = 4;\n n1k = l1.head.fields[0];\n n2k = l2.head.fields[0];\n t1$$7 = l1.tail;\n t2$$7 = l2.tail;\n } else if (l1.head.tag === 1) {\n if (l1.head.fields[1].tag === 0) {\n $target$$115 = 6;\n emp = l1.head.fields[1];\n n1k$$2 = l1.head.fields[0];\n n1r = l1.head.fields[2];\n n2k$$2 = l2.head.fields[0];\n t1$$9 = l1.tail;\n t2$$9 = l2.tail;\n } else {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n }\n } else {\n $target$$115 = 10;\n n2k$$4 = l2.head.fields[0];\n t2$$11 = l2.tail;\n }\n } else if (l2.head.tag === 1) {\n if (l2.head.fields[1].tag === 0) {\n if (l1.head.tag === 2) {\n $target$$115 = 5;\n n1k$$1 = l1.head.fields[0];\n n2k$$1 = l2.head.fields[0];\n n2r = l2.head.fields[2];\n t1$$8 = l1.tail;\n t2$$8 = l2.tail;\n } else if (l1.head.tag === 1) {\n if (l1.head.fields[1].tag === 0) {\n $target$$115 = 7;\n n1k$$3 = l1.head.fields[0];\n n1r$$1 = l1.head.fields[2];\n n2k$$3 = l2.head.fields[0];\n n2r$$1 = l2.head.fields[2];\n t1$$10 = l1.tail;\n t2$$10 = l2.tail;\n } else {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n }\n } else {\n $target$$115 = 11;\n n2k$$5 = l2.head.fields[0];\n n2l = l2.head.fields[1];\n n2r$$2 = l2.head.fields[2];\n t2$$12 = l2.tail;\n }\n } else if (l1.head.tag === 2) {\n $target$$115 = 8;\n n1k$$4 = l1.head.fields[0];\n t1$$11 = l1.tail;\n } else if (l1.head.tag === 1) {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n } else {\n $target$$115 = 11;\n n2k$$5 = l2.head.fields[0];\n n2l = l2.head.fields[1];\n n2r$$2 = l2.head.fields[2];\n t2$$12 = l2.tail;\n }\n } else if (l1.head.tag === 2) {\n $target$$115 = 8;\n n1k$$4 = l1.head.fields[0];\n t1$$11 = l1.tail;\n } else if (l1.head.tag === 1) {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n } else {\n $target$$115 = 3;\n t1$$6 = l1.tail;\n t2$$6 = l2.tail;\n }\n } else {\n $target$$115 = 2;\n }\n } else if (l2.tail != null) {\n $target$$115 = 1;\n } else {\n $target$$115 = 0;\n }\n\n switch ($target$$115) {\n case 0:\n {\n return 0;\n }\n\n case 1:\n {\n return -1 | 0;\n }\n\n case 2:\n {\n return 1;\n }\n\n case 3:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = t1$$6;\n $l2$$114 = t2$$6;\n continue SetTreeModule$$$compareStacks;\n }\n\n case 4:\n {\n const c$$7 = comparer$$17.Compare(n1k, n2k) | 0;\n\n if (c$$7 !== 0) {\n return c$$7 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = t1$$7;\n $l2$$114 = t2$$7;\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 5:\n {\n const c$$8 = comparer$$17.Compare(n1k$$1, n2k$$1) | 0;\n\n if (c$$8 !== 0) {\n return c$$8 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(new SetTree$00601(0, \"SetEmpty\"), t1$$8);\n $l2$$114 = new List(n2r, t2$$8);\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 6:\n {\n const c$$9 = comparer$$17.Compare(n1k$$2, n2k$$2) | 0;\n\n if (c$$9 !== 0) {\n return c$$9 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(n1r, t1$$9);\n $l2$$114 = new List(emp, t2$$9);\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 7:\n {\n const c$$10 = comparer$$17.Compare(n1k$$3, n2k$$3) | 0;\n\n if (c$$10 !== 0) {\n return c$$10 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(n1r$$1, t1$$10);\n $l2$$114 = new List(n2r$$1, t2$$10);\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 8:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(new SetTree$00601(0, \"SetEmpty\"), new List(SetTreeModule$$$SetOne(n1k$$4), t1$$11));\n $l2$$114 = l2;\n continue SetTreeModule$$$compareStacks;\n }\n\n case 9:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(n1l, new List(SetTreeModule$$$SetNode(n1k$$5, new SetTree$00601(0, \"SetEmpty\"), n1r$$2, 0), t1$$12));\n $l2$$114 = l2;\n continue SetTreeModule$$$compareStacks;\n }\n\n case 10:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = l1;\n $l2$$114 = new List(new SetTree$00601(0, \"SetEmpty\"), new List(SetTreeModule$$$SetOne(n2k$$4), t2$$11));\n continue SetTreeModule$$$compareStacks;\n }\n\n case 11:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = l1;\n $l2$$114 = new List(n2l, new List(SetTreeModule$$$SetNode(n2k$$5, new SetTree$00601(0, \"SetEmpty\"), n2r$$2, 0), t2$$12));\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$compare(comparer$$18, s1, s2) {\n if (s1.tag === 0) {\n if (s2.tag === 0) {\n return 0;\n } else {\n return -1 | 0;\n }\n } else if (s2.tag === 0) {\n return 1;\n } else {\n return SetTreeModule$$$compareStacks(comparer$$18, new List(s1, new List()), new List(s2, new List())) | 0;\n }\n}\nexport function SetTreeModule$$$choose(s$$17) {\n return SetTreeModule$$$minimumElement(s$$17);\n}\nexport function SetTreeModule$$$loop($m$$8$$120, $acc$$10$$121) {\n SetTreeModule$$$loop: while (true) {\n const m$$8 = $m$$8$$120,\n acc$$10 = $acc$$10$$121;\n\n switch (m$$8.tag) {\n case 2:\n {\n return new List(m$$8.fields[0], acc$$10);\n }\n\n case 0:\n {\n return acc$$10;\n }\n\n default:\n {\n $m$$8$$120 = m$$8.fields[1];\n $acc$$10$$121 = new List(m$$8.fields[0], SetTreeModule$$$loop(m$$8.fields[2], acc$$10));\n continue SetTreeModule$$$loop;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$toList(s$$18) {\n return SetTreeModule$$$loop(s$$18, new List());\n}\nexport function SetTreeModule$$$copyToArray(s$$19, arr, i$$2) {\n let j = i$$2 | 0;\n SetTreeModule$$$iter(function (x$$8) {\n arr[j] = x$$8;\n j = j + 1;\n }, s$$19);\n}\nexport function SetTreeModule$$$mkFromEnumerator($comparer$$19$$126, $acc$$11$$127, $e$$128) {\n SetTreeModule$$$mkFromEnumerator: while (true) {\n const comparer$$19 = $comparer$$19$$126,\n acc$$11 = $acc$$11$$127,\n e = $e$$128;\n\n if (e.MoveNext()) {\n $comparer$$19$$126 = comparer$$19;\n $acc$$11$$127 = SetTreeModule$$$add(comparer$$19, e.Current, acc$$11);\n $e$$128 = e;\n continue SetTreeModule$$$mkFromEnumerator;\n } else {\n return acc$$11;\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$ofSeq(comparer$$20, c$$11) {\n const ie = getEnumerator(c$$11);\n\n try {\n return SetTreeModule$$$mkFromEnumerator(comparer$$20, new SetTree$00601(0, \"SetEmpty\"), ie);\n } finally {\n if (isDisposable(ie)) {\n ie.Dispose();\n } else {\n void null;\n }\n }\n}\nexport function SetTreeModule$$$ofArray(comparer$$21, arr$$1) {\n let acc$$12 = new SetTree$00601(0, \"SetEmpty\");\n\n for (let i$$3 = 0; i$$3 <= arr$$1.length - 1; i$$3++) {\n acc$$12 = SetTreeModule$$$add(comparer$$21, arr$$1[i$$3], acc$$12);\n }\n\n return acc$$12;\n}\nexport const FSharpSet = declare(function Set_Set(comparer$$22, tree) {\n const $this$$2 = this;\n $this$$2.comparer = comparer$$22;\n $this$$2.tree = tree;\n void null;\n});\nexport function FSharpSet$reflection($gen$$133) {\n return class_type(\"Set.FSharpSet\", [$gen$$133], FSharpSet);\n}\nexport function FSharpSet$$$$002Ector$$2528C5CB(comparer$$22, tree) {\n return this instanceof FSharpSet ? FSharpSet.call(this, comparer$$22, tree) : new FSharpSet(comparer$$22, tree);\n}\nexport function FSharpSet$$get_Comparer(__$$4) {\n return __$$4.comparer;\n}\nexport function FSharpSet$$get_Tree(__$$5) {\n return __$$5.tree;\n}\nexport function FSharpSet$$Add$$2B595(s$$20, x$$9) {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$20), SetTreeModule$$$add(FSharpSet$$get_Comparer(s$$20), x$$9, FSharpSet$$get_Tree(s$$20)));\n}\nexport function FSharpSet$$Remove$$2B595(s$$21, x$$10) {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$21), SetTreeModule$$$remove(FSharpSet$$get_Comparer(s$$21), x$$10, FSharpSet$$get_Tree(s$$21)));\n}\nexport function FSharpSet$$get_Count(s$$22) {\n return SetTreeModule$$$count(FSharpSet$$get_Tree(s$$22));\n}\nexport function FSharpSet$$Contains$$2B595(s$$23, x$$11) {\n return SetTreeModule$$$mem(FSharpSet$$get_Comparer(s$$23), x$$11, FSharpSet$$get_Tree(s$$23));\n}\nexport function FSharpSet$$Iterate$$5028453F(s$$24, x$$12) {\n SetTreeModule$$$iter(x$$12, FSharpSet$$get_Tree(s$$24));\n}\nexport function FSharpSet$$Fold(s$$25, f$$10, z) {\n return SetTreeModule$$$fold(function (x$$13, z$$1) {\n return f$$10(z$$1, x$$13);\n }, z, FSharpSet$$get_Tree(s$$25));\n}\nexport function FSharpSet$$get_IsEmpty(s$$26) {\n return SetTreeModule$$$isEmpty(FSharpSet$$get_Tree(s$$26));\n}\nexport function FSharpSet$$Partition$$Z1D55A0D7(s$$27, f$$11) {\n const matchValue$$10 = FSharpSet$$get_Tree(s$$27);\n\n if (matchValue$$10.tag === 0) {\n return [s$$27, s$$27];\n } else {\n const patternInput$$6 = SetTreeModule$$$partition(FSharpSet$$get_Comparer(s$$27), f$$11, FSharpSet$$get_Tree(s$$27));\n return [FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$27), patternInput$$6[0]), FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$27), patternInput$$6[1])];\n }\n}\nexport function FSharpSet$$Filter$$Z1D55A0D7(s$$28, f$$12) {\n const matchValue$$11 = FSharpSet$$get_Tree(s$$28);\n\n if (matchValue$$11.tag === 0) {\n return s$$28;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$28), SetTreeModule$$$filter(FSharpSet$$get_Comparer(s$$28), f$$12, FSharpSet$$get_Tree(s$$28)));\n }\n}\nexport function FSharpSet$$Map$$7597B8F7(s$$29, f$$13, comparer$$23) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$23, SetTreeModule$$$fold(function (acc$$13, k$$33) {\n return SetTreeModule$$$add(comparer$$23, f$$13(k$$33), acc$$13);\n }, new SetTree$00601(0, \"SetEmpty\"), FSharpSet$$get_Tree(s$$29)));\n}\nexport function FSharpSet$$Exists$$Z1D55A0D7(s$$30, f$$14) {\n return SetTreeModule$$$exists(f$$14, FSharpSet$$get_Tree(s$$30));\n}\nexport function FSharpSet$$ForAll$$Z1D55A0D7(s$$31, f$$15) {\n return SetTreeModule$$$forall(f$$15, FSharpSet$$get_Tree(s$$31));\n}\nexport function FSharpSet$$$op_Subtraction(a$$4, b$$5) {\n const matchValue$$12 = FSharpSet$$get_Tree(a$$4);\n\n if (matchValue$$12.tag === 0) {\n return a$$4;\n } else {\n const matchValue$$13 = FSharpSet$$get_Tree(b$$5);\n\n if (matchValue$$13.tag === 0) {\n return a$$4;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(a$$4), SetTreeModule$$$diff(FSharpSet$$get_Comparer(a$$4), FSharpSet$$get_Tree(a$$4), FSharpSet$$get_Tree(b$$5)));\n }\n }\n}\nexport function FSharpSet$$$op_Addition(a$$5, b$$6) {\n const matchValue$$14 = FSharpSet$$get_Tree(b$$6);\n\n if (matchValue$$14.tag === 0) {\n return a$$5;\n } else {\n const matchValue$$15 = FSharpSet$$get_Tree(a$$5);\n\n if (matchValue$$15.tag === 0) {\n return b$$6;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(a$$5), SetTreeModule$$$union(FSharpSet$$get_Comparer(a$$5), FSharpSet$$get_Tree(a$$5), FSharpSet$$get_Tree(b$$6)));\n }\n }\n}\nexport function FSharpSet$$$Intersection$$Z3BE9BFE0(a$$6, b$$7) {\n const matchValue$$16 = FSharpSet$$get_Tree(b$$7);\n\n if (matchValue$$16.tag === 0) {\n return b$$7;\n } else {\n const matchValue$$17 = FSharpSet$$get_Tree(a$$6);\n\n if (matchValue$$17.tag === 0) {\n return a$$6;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(a$$6), SetTreeModule$$$intersection(FSharpSet$$get_Comparer(a$$6), FSharpSet$$get_Tree(a$$6), FSharpSet$$get_Tree(b$$7)));\n }\n }\n}\nexport function FSharpSet$$$IntersectionMany$$Z15B59630(sets) {\n return reduce(FSharpSet$$$Intersection$$Z3BE9BFE0, sets);\n}\nexport function FSharpSet$$$Equality$$Z3BE9BFE0(a$$7, b$$8) {\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(a$$7), FSharpSet$$get_Tree(a$$7), FSharpSet$$get_Tree(b$$8)) === 0;\n}\nexport function FSharpSet$$$Compare$$Z3BE9BFE0(a$$8, b$$9) {\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(a$$8), FSharpSet$$get_Tree(a$$8), FSharpSet$$get_Tree(b$$9));\n}\nexport function FSharpSet$$get_Choose(x$$14) {\n return SetTreeModule$$$choose(FSharpSet$$get_Tree(x$$14));\n}\nexport function FSharpSet$$get_MinimumElement(x$$15) {\n return SetTreeModule$$$minimumElement(FSharpSet$$get_Tree(x$$15));\n}\nexport function FSharpSet$$get_MaximumElement(x$$16) {\n return SetTreeModule$$$maximumElement(FSharpSet$$get_Tree(x$$16));\n}\nexport function FSharpSet$$IsSubsetOf$$6A20B1FF(x$$17, y) {\n return SetTreeModule$$$subset(FSharpSet$$get_Comparer(x$$17), FSharpSet$$get_Tree(x$$17), FSharpSet$$get_Tree(y));\n}\nexport function FSharpSet$$IsSupersetOf$$6A20B1FF(x$$18, y$$1) {\n return SetTreeModule$$$subset(FSharpSet$$get_Comparer(x$$18), FSharpSet$$get_Tree(y$$1), FSharpSet$$get_Tree(x$$18));\n}\nexport function FSharpSet$$IsProperSubsetOf$$6A20B1FF(x$$19, y$$2) {\n return SetTreeModule$$$psubset(FSharpSet$$get_Comparer(x$$19), FSharpSet$$get_Tree(x$$19), FSharpSet$$get_Tree(y$$2));\n}\nexport function FSharpSet$$IsProperSupersetOf$$6A20B1FF(x$$20, y$$3) {\n return SetTreeModule$$$psubset(FSharpSet$$get_Comparer(x$$20), FSharpSet$$get_Tree(y$$3), FSharpSet$$get_Tree(x$$20));\n}\n\nFSharpSet.prototype.toString = function () {\n var strings;\n const this$ = this;\n return \"set [\" + (strings = map$$1(function (x$$21) {\n let copyOfStruct = x$$21;\n return String(copyOfStruct);\n }, this$), (join(\"; \", strings))) + \"]\";\n};\n\nFSharpSet.prototype.GetHashCode = function () {\n const this$$$1 = this;\n let res = 0;\n const e$$1 = SetTreeModule$$$mkIEnumerator(FSharpSet$$get_Tree(this$$$1));\n\n while (e$$1.MoveNext()) {\n const x$$22 = res | 0;\n const y$$4 = structuralHash(e$$1.Current) | 0;\n res = (x$$22 << 1) + y$$4 + 631;\n }\n\n return Math.abs(res) | 0;\n};\n\nFSharpSet.prototype.Equals = function (that) {\n const this$$$2 = this;\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(this$$$2), FSharpSet$$get_Tree(this$$$2), FSharpSet$$get_Tree(that)) === 0;\n};\n\nFSharpSet.prototype.CompareTo = function (that$$1) {\n const this$$$3 = this;\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(this$$$3), FSharpSet$$get_Tree(this$$$3), FSharpSet$$get_Tree(that$$1)) | 0;\n};\n\nFSharpSet.prototype[Symbol.iterator] = function () {\n const s$$32 = this;\n return toIterator(SetTreeModule$$$mkIEnumerator(FSharpSet$$get_Tree(s$$32)));\n};\n\nexport function isEmpty(s$$33) {\n return FSharpSet$$get_IsEmpty(s$$33);\n}\nexport function contains(x$$23, s$$34) {\n return FSharpSet$$Contains$$2B595(s$$34, x$$23);\n}\nexport function add(x$$24, s$$35) {\n return FSharpSet$$Add$$2B595(s$$35, x$$24);\n}\nexport function singleton(x$$25, comparer$$24) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$24, new SetTree$00601(2, \"SetOne\", x$$25));\n}\nexport function remove(x$$26, s$$36) {\n return FSharpSet$$Remove$$2B595(s$$36, x$$26);\n}\nexport function union(s1$$2, s2$$2) {\n return FSharpSet$$$op_Addition(s1$$2, s2$$2);\n}\nexport function unionMany(sets$$1, comparer$$25) {\n return fold$$1(FSharpSet$$$op_Addition, FSharpSet$$$$002Ector$$2528C5CB(comparer$$25, new SetTree$00601(0, \"SetEmpty\")), sets$$1);\n}\nexport function intersect(s1$$3, s2$$3) {\n return FSharpSet$$$Intersection$$Z3BE9BFE0(s1$$3, s2$$3);\n}\nexport function intersectMany(sets$$2) {\n return FSharpSet$$$IntersectionMany$$Z15B59630(sets$$2);\n}\nexport function iterate(f$$16, s$$37) {\n FSharpSet$$Iterate$$5028453F(s$$37, f$$16);\n}\nexport function empty(comparer$$26) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$26, new SetTree$00601(0, \"SetEmpty\"));\n}\nexport function forAll(f$$17, s$$38) {\n return FSharpSet$$ForAll$$Z1D55A0D7(s$$38, f$$17);\n}\nexport function exists(f$$18, s$$39) {\n return FSharpSet$$Exists$$Z1D55A0D7(s$$39, f$$18);\n}\nexport function filter(f$$19, s$$40) {\n return FSharpSet$$Filter$$Z1D55A0D7(s$$40, f$$19);\n}\nexport function partition(f$$20, s$$41) {\n return FSharpSet$$Partition$$Z1D55A0D7(s$$41, f$$20);\n}\nexport function fold(f$$21, z$$2, s$$42) {\n return SetTreeModule$$$fold(f$$21, z$$2, FSharpSet$$get_Tree(s$$42));\n}\nexport function foldBack(f$$22, s$$43, z$$3) {\n return SetTreeModule$$$foldBack(f$$22, FSharpSet$$get_Tree(s$$43), z$$3);\n}\nexport function map(f$$23, s$$44, comparer$$27) {\n return FSharpSet$$Map$$7597B8F7(s$$44, f$$23, comparer$$27);\n}\nexport function count(s$$45) {\n return FSharpSet$$get_Count(s$$45);\n}\nexport function minimumElement(s$$46) {\n return FSharpSet$$get_MinimumElement(s$$46);\n}\nexport function maximumElement(s$$47) {\n return FSharpSet$$get_MaximumElement(s$$47);\n}\nexport function ofList(li, comparer$$28) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$28, SetTreeModule$$$ofSeq(comparer$$28, li));\n}\nexport function ofArray(arr$$2, comparer$$29) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$29, SetTreeModule$$$ofArray(comparer$$29, arr$$2));\n}\nexport function toList(s$$48) {\n return SetTreeModule$$$toList(FSharpSet$$get_Tree(s$$48));\n}\nexport function toArray(s$$49, cons) {\n const n$$3 = count(s$$49) | 0;\n const res$$1 = new cons(n$$3);\n SetTreeModule$$$copyToArray(FSharpSet$$get_Tree(s$$49), res$$1, 0);\n return res$$1;\n}\nexport function toSeq(s$$50) {\n return SetTreeModule$$$toSeq(FSharpSet$$get_Tree(s$$50));\n}\nexport function ofSeq(elements, comparer$$30) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$30, SetTreeModule$$$ofSeq(comparer$$30, elements));\n}\nexport function difference(x$$28, y$$6) {\n return FSharpSet$$$op_Subtraction(x$$28, y$$6);\n}\nexport function isSubset(x$$29, y$$7) {\n return FSharpSet$$IsSubsetOf$$6A20B1FF(x$$29, y$$7);\n}\nexport function isSuperset(x$$30, y$$8) {\n return FSharpSet$$IsSupersetOf$$6A20B1FF(x$$30, y$$8);\n}\nexport function isProperSubset(x$$31, y$$9) {\n return FSharpSet$$IsProperSubsetOf$$6A20B1FF(x$$31, y$$9);\n}\nexport function isProperSuperset(x$$32, y$$10) {\n return FSharpSet$$IsProperSupersetOf$$6A20B1FF(x$$32, y$$10);\n}\nexport function minElement(s$$51) {\n return FSharpSet$$get_MinimumElement(s$$51);\n}\nexport function maxElement(s$$52) {\n return FSharpSet$$get_MaximumElement(s$$52);\n}\nexport function createMutable(source, comparer$$31) {\n const set = MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D(source, comparer$$31);\n return set;\n}\nexport function distinct(xs, comparer$$32) {\n return delay(function () {\n const set$$1 = MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D(empty$$1(), comparer$$32);\n return collect(function (x$$33) {\n return MutableSet$002400601$0024$0024Add$0024$00242B595(set$$1, x$$33) ? singleton$$1(x$$33) : empty$$1();\n }, xs);\n });\n}\nexport function distinctBy(projection, xs$$1, comparer$$33) {\n return delay(function () {\n const set$$2 = MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D(empty$$1(), comparer$$33);\n return collect(function (x$$34) {\n return MutableSet$002400601$0024$0024Add$0024$00242B595(set$$2, projection(x$$34)) ? singleton$$1(x$$34) : empty$$1();\n }, xs$$1);\n });\n}\nexport function unionWith(s1$$4, s2$$4) {\n return fold$$1(function folder(acc$$14, x$$35) {\n return acc$$14.add(x$$35);\n }, s1$$4, s2$$4);\n}\nexport function intersectWith(s1$$5, s2$$5, comparer$$34) {\n const s2$$6 = ofSeq(s2$$5, comparer$$34);\n iterate$$1(function (x$$36) {\n if (!FSharpSet$$Contains$$2B595(s2$$6, x$$36)) {\n const value = s1$$5.delete(x$$36);\n void value;\n } else {\n void null;\n }\n }, s1$$5);\n}\nexport function exceptWith(s1$$6, s2$$7) {\n iterate$$1(function (x$$37) {\n const value$$1 = s1$$6.delete(x$$37);\n void value$$1;\n }, s2$$7);\n}\nexport function isSubsetOf(s1$$7, s2$$8, comparer$$35) {\n return isSubset(ofSeq(s1$$7, comparer$$35), ofSeq(s2$$8, comparer$$35));\n}\nexport function isSupersetOf(s1$$8, s2$$9, comparer$$36) {\n return isSuperset(ofSeq(s1$$8, comparer$$36), ofSeq(s2$$9, comparer$$36));\n}\nexport function isProperSubsetOf(s1$$9, s2$$10, comparer$$37) {\n return isProperSubset(ofSeq(s1$$9, comparer$$37), ofSeq(s2$$10, comparer$$37));\n}\nexport function isProperSupersetOf(s1$$10, s2$$11, comparer$$38) {\n return isProperSuperset(ofSeq(s1$$10, comparer$$38), ofSeq(s2$$11, comparer$$38));\n}","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","// tslint:disable: space-before-function-paren\nimport { combineHashCodes, compare, compareArrays, equalArrays, equals, identityHash, numberHash, structuralHash } from \"./Util\";\nfunction sameType(x, y) {\n return y != null && Object.getPrototypeOf(x).constructor === Object.getPrototypeOf(y).constructor;\n}\n// Taken from Babel helpers\nfunction inherits(subClass, superClass) {\n // if (typeof superClass !== \"function\" && superClass !== null) {\n // throw new TypeError(\n // \"Super expression must either be null or a function, not \" +\n // typeof superClass\n // );\n // }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n // if (superClass)\n // Object.setPrototypeOf\n // ? Object.setPrototypeOf(subClass, superClass)\n // : (subClass.__proto__ = superClass);\n}\nexport function declare(cons, superClass) {\n inherits(cons, superClass || SystemObject);\n return cons;\n}\nexport class SystemObject {\n toString() {\n return \"{\" + Object.entries(this).map(([k, v]) => k + \" = \" + String(v)).join(\";\\n \") + \"}\";\n }\n GetHashCode(x) {\n return identityHash(x !== null && x !== void 0 ? x : this);\n }\n Equals(x, y) {\n return x === (y !== null && y !== void 0 ? y : this);\n }\n}\nfunction compareList(self, other) {\n if (self === other) {\n return 0;\n }\n else {\n if (other == null) {\n return -1;\n }\n while (self.tail != null) {\n if (other.tail == null) {\n return 1;\n }\n const res = compare(self.head, other.head);\n if (res !== 0) {\n return res;\n }\n self = self.tail;\n other = other.tail;\n }\n return other.tail == null ? 0 : -1;\n }\n}\nexport class List {\n constructor(head, tail) {\n this.head = head;\n this.tail = tail;\n }\n toString() {\n return \"[\" + Array.from(this).join(\"; \") + \"]\";\n }\n toJSON() {\n return Array.from(this);\n }\n [Symbol.iterator]() {\n let cur = this;\n return {\n next: () => {\n const value = cur === null || cur === void 0 ? void 0 : cur.head;\n const done = (cur === null || cur === void 0 ? void 0 : cur.tail) == null;\n cur = cur === null || cur === void 0 ? void 0 : cur.tail;\n return { done, value };\n },\n };\n }\n GetHashCode() {\n const hashes = Array.from(this).map(structuralHash);\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return compareList(this, other) === 0;\n }\n CompareTo(other) {\n return compareList(this, other);\n }\n}\nexport class Union extends SystemObject {\n constructor(tag, name, ...fields) {\n super();\n this.tag = tag | 0;\n this.name = name;\n this.fields = fields;\n }\n toString() {\n const len = this.fields.length;\n if (len === 0) {\n return this.name;\n }\n else if (len === 1) {\n return this.name + \" \" + String(this.fields[0]);\n }\n else {\n return this.name + \" (\" + this.fields.map((x) => String(x)).join(\",\") + \")\";\n }\n }\n toJSON() {\n return this.fields.length === 0\n ? this.name\n : [this.name].concat(this.fields);\n }\n GetHashCode() {\n const hashes = this.fields.map((x) => structuralHash(x));\n hashes.splice(0, 0, numberHash(this.tag));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return this === other\n || (sameType(this, other)\n && this.tag === other.tag\n && equalArrays(this.fields, other.fields));\n }\n CompareTo(other) {\n if (this === other) {\n return 0;\n }\n else if (!sameType(this, other)) {\n return -1;\n }\n else if (this.tag === other.tag) {\n return compareArrays(this.fields, other.fields);\n }\n else {\n return this.tag < other.tag ? -1 : 1;\n }\n }\n}\nfunction recordToJson(record, getFieldNames) {\n const o = {};\n const keys = getFieldNames == null ? Object.keys(record) : getFieldNames(record);\n for (let i = 0; i < keys.length; i++) {\n o[keys[i]] = record[keys[i]];\n }\n return o;\n}\nfunction recordEquals(self, other, getFieldNames) {\n if (self === other) {\n return true;\n }\n else if (!sameType(self, other)) {\n return false;\n }\n else {\n const thisNames = getFieldNames == null ? Object.keys(self) : getFieldNames(self);\n for (let i = 0; i < thisNames.length; i++) {\n if (!equals(self[thisNames[i]], other[thisNames[i]])) {\n return false;\n }\n }\n return true;\n }\n}\nfunction recordCompare(self, other, getFieldNames) {\n if (self === other) {\n return 0;\n }\n else if (!sameType(self, other)) {\n return -1;\n }\n else {\n const thisNames = getFieldNames == null ? Object.keys(self) : getFieldNames(self);\n for (let i = 0; i < thisNames.length; i++) {\n const result = compare(self[thisNames[i]], other[thisNames[i]]);\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n }\n}\nexport class Record extends SystemObject {\n toString() {\n return \"{\" + Object.entries(this).map(([k, v]) => k + \" = \" + String(v)).join(\";\\n \") + \"}\";\n }\n toJSON() {\n return recordToJson(this);\n }\n GetHashCode() {\n const hashes = Object.values(this).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return recordEquals(this, other);\n }\n CompareTo(other) {\n return recordCompare(this, other);\n }\n}\nexport function anonRecord(o) {\n return Object.assign(Object.create(Record.prototype), o);\n}\nexport class FSharpRef extends Record {\n constructor(contents) {\n super();\n this.contents = contents;\n }\n}\nexport const Exception = declare(function Exception(message) {\n this.stack = Error().stack;\n this.message = message;\n}, SystemObject);\nexport function isException(x) {\n return x instanceof Error || x instanceof Exception;\n}\nfunction getFSharpExceptionFieldNames(self) {\n return Object.keys(self).filter((k) => k !== \"message\" && k !== \"stack\");\n}\nexport class FSharpException extends Exception {\n toString() {\n var _a;\n // const fieldNames = getFSharpExceptionFieldNames(this);\n const fields = Object.entries(this).filter(([k, _]) => k !== \"message\" && k !== \"stack\");\n const len = fields.length;\n if (len === 0) {\n return (_a = this.message) !== null && _a !== void 0 ? _a : \"\";\n }\n else if (len === 1) {\n return this.message + \" \" + String(fields[1]);\n }\n else {\n return this.message + \" (\" + fields.map(([_, v]) => String(v)).join(\",\") + \")\";\n }\n }\n toJSON() {\n return recordToJson(this, getFSharpExceptionFieldNames);\n }\n GetHashCode() {\n const fields = Object.entries(this).filter(([k, _]) => k !== \"message\" && k !== \"stack\");\n const hashes = fields.map(([_, v]) => structuralHash(v));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return recordEquals(this, other, getFSharpExceptionFieldNames);\n }\n CompareTo(other) {\n return recordCompare(this, other, getFSharpExceptionFieldNames);\n }\n}\nexport class MatchFailureException extends FSharpException {\n constructor(arg1, arg2, arg3) {\n super();\n this.arg1 = arg1;\n this.arg2 = arg2 | 0;\n this.arg3 = arg3 | 0;\n this.message = \"The match cases were incomplete\";\n }\n}\nexport const Attribute = declare(function Attribute() { return; }, SystemObject);\n//# sourceMappingURL=Types.js.map","module.exports = __webpack_public_path__ + \"img/fb-icon.72ff2efc.svg\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&scopped=true&lang=sass&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&scopped=true&lang=sass&\"","namespace Fable.Parsimmon\r\n\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\n\r\ntype ParseResult<'t> =\r\n abstract status : bool\r\n abstract value : 't\r\n\r\ntype IParserOffSet =\r\n abstract offset : int\r\n abstract line : int\r\n abstract column : int\r\n\r\ntype TokenPosition =\r\n { offset: int\r\n line: int\r\n column: int }\r\n\r\ntype NodeResult<'t> =\r\n { name: string\r\n value: 't\r\n start: TokenPosition\r\n ``end``: TokenPosition }\r\n\r\ntype IParser<'t> =\r\n abstract map<'u> : ('t -> 'u) -> IParser<'u>\r\n abstract parse : string -> ParseResult<'t>\r\n abstract times : int -> IParser<'t []>\r\n abstract times : int * int -> IParser<'t []>\r\n abstract many : unit -> IParser<'t []>\r\n []\r\n abstract chain : IParser<'u> -> IParser<'u>\r\n []\r\n abstract bind : ('t -> IParser<'u>) -> IParser<'u>\r\n abstract skip : IParser<'u> -> IParser<'t>\r\n abstract sepBy : IParser<'u> -> IParser<'t []>\r\n abstract fallback : 't -> IParser<'t>\r\n abstract trim : IParser<'u> -> IParser<'t>\r\n abstract notFollowedBy : IParser<'u> -> IParser<'t>\r\n abstract atMost : int -> IParser<'t[]>\r\n abstract atLeast : int -> IParser<'t[]>\r\n []\r\n abstract orTry : IParser<'t> -> IParser<'t>\r\n abstract sepBy1 : IParser<'u> -> IParser<'t []>\r\n []\r\n abstract node : string -> IParser>\r\n\r\nmodule Parsimmon =\r\n let parseRaw (input: string) (parser: IParser<'t>) =\r\n parser.parse input\r\n\r\n let parse (input: string) (parser: IParser<'t>) =\r\n parser.parse input\r\n |> fun result ->\r\n match result.status with\r\n | true -> Some result.value\r\n | false -> None\r\n\r\n /// A parser that consumes no input and yields an object an object representing the current offset into the parse: it has a 0-based character offset property and 1-based line and column properties\r\n let index : IParser =\r\n import \"index\" \"./Parsimmon.js\"\r\n\r\n /// Returns a new parser which tries parser, and if it fails uses otherParser. Example:\r\n let orTry (otherParser: IParser<'t>) (parser: IParser<'t>) : IParser<'t> =\r\n parser.orTry(otherParser)\r\n\r\n /// Returns a new parser that tries to parse the input exactly `n` times\r\n let times<'t> (n: int) (parser : IParser<'t>) : IParser<'t[]> =\r\n parser.times n\r\n\r\n /// Expects parser at least n times. Yields an array of the results.\r\n let atLeast (n: int) (parser: IParser<'t>) : IParser<'t[]> =\r\n parser.atLeast n\r\n\r\n\r\n /// Expects parser at most n times. Yields an array of the results.\r\n let atMost (n: int) (parser: IParser<'t>) : IParser<'t[]> =\r\n parser.atMost n\r\n\r\n let skip (skipped: IParser<'u>) (keep: IParser<'t>) : IParser<'t> =\r\n keep.skip skipped\r\n\r\n let many (parser : IParser<'t>) : IParser<'t[]> =\r\n parser.many()\r\n\r\n /// Returns a parser that looks for a match to the regexp and yields the entire text matched. The regexp will always match starting at the current parse location.\r\n [] // Emit(\"$0(/$1!/)\")>]\r\n let regex (pattern: string) : IParser = jsNative\r\n\r\n let ofLazy (f: unit -> IParser<'t>) : IParser<'t> =\r\n import \"lazy\" \"./Parsimmon.js\"\r\n\r\n /// This is the same as Parsimmon.sepBy, but matches the parser at least once.\r\n let seperateByAtLeastOne (seperator : IParser<'u>) (parser: IParser<'t>) : IParser<'t[]> =\r\n parser.sepBy1(seperator)\r\n\r\n /// Expects parser \"after\" to follow parser \"before\", and yields the result of \"before\".\r\n let chain (after: IParser<'u>) (before: IParser<'t>) : IParser<'u> =\r\n before.chain after\r\n\r\n /// Returns a new parser which tries parser \"p\", and on success calls the function \"f\" with the result of the parse, which is expected to return another parser, which will be tried next. This allows you to dynamically decide how to continue the parse, which is impossible with the other combinators.\r\n let bind (f: 't -> IParser<'u>) (p: IParser<'t>) : IParser<'u> =\r\n p.bind f\r\n\r\n /// A parser that consumes one letter\r\n let letter : IParser =\r\n import \"letter\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that tries `parser` and succeeds if `parser` is able to parse between `min` and `max` times\r\n let timesBetween (min: int) (max: int) (parser: IParser<'u>) =\r\n parser.times(min, max)\r\n\r\n /// A parser that consumes one or more letters\r\n let letters : IParser =\r\n import \"letters\" \"./Parsimmon.js\"\r\n\r\n /// A parser that expects to be at the end of the input (zero characters left).\r\n let endOfFile : IParser =\r\n import \"eof\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that looks for anything but whatever \"p\" wants to parse, and does not consume it. Yields the same result as \"before\".\r\n let notFollowedBy (p: IParser<'u>) (before: IParser<'t>) : IParser<'t> =\r\n before.notFollowedBy p\r\n\r\n /// Returns a parser that doesn't consume any input, and yields the given value\r\n let succeed (value: 't) : IParser<'t> =\r\n import \"succeed\" \"./Parsimmon.js\"\r\n\r\n /// Parses using parser, but does not consume what it parses. Yields an empty string.\r\n let lookahead (parser: IParser<'t>) : IParser =\r\n import \"lookahead\" \"./Parsimmon.js\"\r\n\r\n // A parser that consumes one digit\r\n let digit : IParser =\r\n import \"digit\" \"./Parsimmon.js\"\r\n\r\n // A parser that consumes one or more digits\r\n let digits : IParser =\r\n digit\r\n |> many\r\n\r\n /// Returns a new parser which tries \"parser\" and, if it fails, yields value without consuming any input.\r\n let fallback (value: 't) (parser: IParser<'t>) : IParser<'t> =\r\n parser.fallback value\r\n\r\n let seperateBy (content: IParser<'u>) (others: IParser<'t>) : IParser<'t[]> =\r\n others.sepBy(content)\r\n\r\n let between (left: IParser<'t>) (right: IParser<'u>) (middle: IParser<'v>) =\r\n left\r\n |> chain middle\r\n |> skip right\r\n\r\n /// Transforms the parsed value of the given parser.\r\n let map (f: 't -> 'u) (parser: IParser<'t>) = parser.map f\r\n\r\n /// Alias of Parsimmon.concat\r\n let tie (parser: IParser) : IParser =\r\n map (String.concat \"\") parser\r\n\r\n /// A parser that consumes and yields the next character of the input.\r\n let any : IParser =\r\n import \"any\" \"./Parsimmon.js\"\r\n\r\n /// Accepts any number of parsers, yielding the value of the first one that succeeds, backtracking in between.\r\n let choose (ps: IParser<'t> list) : IParser<'t> =\r\n List.reduce (fun acc parser -> acc.orTry(parser)) ps\r\n\r\n /// A parser that consumes and yields the entire remainder of the input.\r\n let all : IParser =\r\n import \"all\" \"./Parsimmon.js\"\r\n\r\n /// Returns a failing parser with the given message.\r\n let fail (input: string) : IParser =\r\n import \"fail\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that yield a single character if it passes the predicate function.\r\n let satisfy (f: string -> bool) : IParser =\r\n import \"test\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser yield a string containing all the next characters that pass the predicate \"f\"\r\n let takeWhile (f: string -> bool) : IParser =\r\n import \"takeWhile\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that can only parse the exact given input string\r\n let str (input: string) : IParser =\r\n import \"string\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that parses any of the characters of the input string\r\n let oneOf (input: string) : IParser =\r\n import \"oneOf\" \"./Parsimmon.js\"\r\n\r\n let whitespace : IParser =\r\n import \"whitespace\" \"./Parsimmon.js\"\r\n\r\n let optionalWhitespace : IParser =\r\n import \"optWhitespace\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that succeeds one or more times\r\n let atLeastOneOrMany (parser: IParser<'t>) : IParser<'t[]> =\r\n atLeast 1 parser\r\n\r\n let stringReturn (input: string) (value: 't) : IParser<'t> =\r\n str input\r\n |> map (fun _ -> value)\r\n\r\n /// Returns a parser that parses comsumes any character of a string other than the characters of the input string\r\n let noneOf (input: string) : IParser =\r\n import \"noneOf\" \"./Parsimmon.js\"\r\n\r\n let seq2 (p1: IParser<'t>) (p2:IParser<'u>) : IParser<'t * 'u> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n let trim (trimmed: IParser<'a>) (p: IParser<'t>) : IParser<'t> =\r\n p.trim trimmed\r\n\r\n /// Equivalent to `parser.map (String.concat \"\")`\r\n let concat (parser: IParser) : IParser =\r\n parser.map (String.concat \"\")\r\n\r\n let seq3 (p1: IParser<'t>)\r\n (p2: IParser<'u>)\r\n (p3:IParser<'v>) : IParser<'t * 'u * 'v> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n let seq4 (p1: IParser<'t>)\r\n (p2: IParser<'u>)\r\n (p3:IParser<'v>)\r\n (p4:IParser<'w>) : IParser<'t * 'u * 'v * 'w> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n let seq5 (p1: IParser<'t>)\r\n (p2: IParser<'u>)\r\n (p3: IParser<'v>)\r\n (p4: IParser<'w>)\r\n (p5: IParser<'q>) : IParser<'t * 'u * 'v * 'w * 'q> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n /// Equivalent to `parser.node(\"description\")`\r\n let node<'t> description (p:IParser<'t>) = p.node(description)","namespace Fable.SimpleJson\r\n\r\nopen Fable.Parsimmon\r\n\r\n#nowarn \"40\"\r\n\r\nmodule Parser =\r\n\r\n let digits = \r\n Parsimmon.digit \r\n |> Parsimmon.atLeastOneOrMany\r\n |> Parsimmon.concat\r\n\r\n let jint = digits |> Parsimmon.map float\r\n\r\n let negJint = \r\n Parsimmon.seq2 (Parsimmon.str \"-\") jint \r\n |> Parsimmon.map (fun (sign, number) -> -number)\r\n\r\n let jfloat = \r\n\r\n let digits = \r\n Parsimmon.digit \r\n |> Parsimmon.many\r\n |> Parsimmon.concat\r\n\r\n let dot = Parsimmon.str \".\"\r\n\r\n let decimals = \r\n Parsimmon.digit\r\n |> Parsimmon.atLeastOneOrMany\r\n |> Parsimmon.concat\r\n\r\n Parsimmon.seq3 digits dot decimals\r\n |> Parsimmon.map (fun (digitsLeft,dot,digitsRight) -> \r\n match digitsLeft with\r\n | \"\" -> \"0\"\r\n | other -> other \r\n |> fun digitsLeft ->\r\n [digitsLeft; dot; digitsRight]\r\n |> String.concat \"\" \r\n |> float\r\n )\r\n\r\n let negativeJFloat = \r\n Parsimmon.seq2 (Parsimmon.str \"-\") jfloat \r\n |> Parsimmon.map (fun (sign, number) -> -number)\r\n\r\n let jnumber = \r\n [jfloat; negativeJFloat; jint; negJint] \r\n |> Parsimmon.choose\r\n |> Parsimmon.map JNumber\r\n\r\n let jbool = \r\n [ Parsimmon.stringReturn \"true\" (JBool true)\r\n Parsimmon.stringReturn \"false\" (JBool false)]\r\n |> Parsimmon.choose\r\n\r\n let jnull = Parsimmon.stringReturn \"null\" JNull\r\n\r\n let stringLiteral =\r\n let escape = \r\n Parsimmon.oneOf \"\\\"\\\\/bfnrt\"\r\n |> Parsimmon.map(function\r\n | \"b\" -> \"\\b\"\r\n | \"f\" -> \"\\u000C\"\r\n | \"n\" -> \"\\n\"\r\n | \"r\" -> \"\\r\"\r\n | \"t\" -> \"\\t\"\r\n | c -> c) // every other char is mapped to itself\r\n\r\n let escapedCharSnippet = \r\n Parsimmon.seq2 (Parsimmon.str \"\\\\\") escape\r\n |> Parsimmon.map snd\r\n\r\n let normalCharSnippet = Parsimmon.satisfy (fun c -> c <> \"\\\"\" && c <> \"\\\\\")\r\n\r\n let anyCharSnippet = \r\n normalCharSnippet\r\n |> Parsimmon.orTry escapedCharSnippet\r\n |> Parsimmon.many\r\n |> Parsimmon.concat\r\n\r\n anyCharSnippet\r\n |> Parsimmon.between (Parsimmon.str \"\\\"\") (Parsimmon.str \"\\\"\")\r\n \r\n let jstring = stringLiteral.map JString\r\n\r\n let withWhitespace p = \r\n Parsimmon.between (Parsimmon.optionalWhitespace) (Parsimmon.optionalWhitespace) p\r\n \r\n let jvalue = \r\n [ jnull; jbool; jnumber; jstring ]\r\n |> List.map withWhitespace\r\n |> Parsimmon.choose\r\n \r\n let comma = withWhitespace (Parsimmon.str \",\")\r\n \r\n let rec json = Parsimmon.ofLazy <| fun () ->\r\n \r\n let leftBracket = withWhitespace (Parsimmon.str \"[\")\r\n let rightBracket = withWhitespace (Parsimmon.str \"]\")\r\n \r\n let arrayValue = Parsimmon.seperateBy comma json\r\n \r\n let jarray = \r\n arrayValue\r\n |> Parsimmon.between leftBracket rightBracket\r\n |> Parsimmon.map (List.ofArray >> JArray)\r\n\r\n let leftBrace = withWhitespace (Parsimmon.str \"{\")\r\n let rightBrace = withWhitespace (Parsimmon.str \"}\")\r\n \r\n let keyValues = \r\n Parsimmon.seq3 \r\n (withWhitespace stringLiteral)\r\n (withWhitespace (Parsimmon.str \":\"))\r\n (withWhitespace json)\r\n |> Parsimmon.map (fun (key, _ , value) -> key,value)\r\n |> Parsimmon.seperateBy comma\r\n\r\n let jobject = \r\n keyValues\r\n |> Parsimmon.between leftBrace rightBrace\r\n |> Parsimmon.map (List.ofArray >> Map.ofList >> JObject)\r\n\r\n [jvalue; jarray; jobject]\r\n |> Parsimmon.choose\r\n \r\n let jsonParser = withWhitespace json\r\n","namespace Fable.SimpleJson\r\n\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\n\r\nmodule TypeCheck =\r\n\r\n []\r\n let typeofString (x: obj) : bool = jsNative\r\n\r\n []\r\n let typeofBool (x: obj) : bool = jsNative\r\n\r\n []\r\n let typeofNumber (x: obj) : bool = jsNative\r\n []\r\n let typeofObject (x: obj) : bool = jsNative\r\n\r\n let (|NativeString|_|) (x: obj) =\r\n if typeofString x\r\n then Some (unbox x)\r\n else None\r\n\r\n let (|NativeBool|_|) (x: obj) =\r\n if typeofBool x\r\n then Some (unbox x)\r\n else None\r\n\r\n let (|NativeNumber|_|) (x: obj) =\r\n if typeofNumber x\r\n then Some (unbox x)\r\n else None\r\n\r\n let (|NativeObject|_|) (x: obj) =\r\n if typeofObject x\r\n then Some x\r\n else None\r\n\r\n let (|Null|_|) (x: obj) =\r\n if isNull x\r\n then Some x\r\n else None\r\n\r\n let (|NativeArray|_|) (x: obj) =\r\n if (JS.Constructors.Array.isArray x)\r\n then Some (unbox x)\r\n else None","namespace Fable.SimpleJson\r\n\r\nopen Fable.Core\r\nopen Fable.Parsimmon\r\nopen Parser\r\nopen Fable.Import\r\nopen System\r\nopen Fable.Core.JsInterop\r\n\r\n[]\r\nmodule InteropUtil =\r\n []\r\n let arrayFrom (xs: obj) : obj = jsNative\r\n []\r\n let get<'a> (key: string) (x: obj) : 'a = jsNative\r\n []\r\n let isDate (x: obj) = jsNative\r\n []\r\n let hasKey (key: string) (x: 'a) = jsNative\r\n let isDateOffset (x: obj) = isDate x && hasKey \"offset\" x\r\n []\r\n let getTypeOf (x: obj) : string = jsNative\r\n let isObjectLiteral (x: obj) = getTypeOf x = \"object\"\r\n let isBigInt (x: obj) =\r\n not (isNull x)\r\n && isObjectLiteral x\r\n && hasKey \"signInt\" x\r\n && hasKey \"v\" x\r\n && hasKey \"digits\" (get \"v\" x)\r\n && hasKey \"bound\" (get \"v\" x)\r\n\r\n []\r\n let log (x: 'a) : unit = jsNative\r\n\r\nmodule SimpleJson =\r\n /// Tries to parse a string into a Json structured JSON data.\r\n let tryParse (input: string) : Option =\r\n Parsimmon.parse input jsonParser\r\n\r\n /// Parses the input string into a structured JSON data. Fails with an exception if parsing fails.\r\n let parse (input: string) : Json =\r\n match tryParse input with\r\n | Some result -> result\r\n | None -> failwithf \"Could not parse the JSON input: %s\" input\r\n\r\n /// Stringifies a Json object back to string representation\r\n let rec toString = function\r\n | JNull -> \"null\"\r\n | JBool true -> \"true\"\r\n | JBool false -> \"false\"\r\n | JNumber number -> string number\r\n | JString text -> sprintf \"\\\"%s\\\"\" text\r\n | JArray elements ->\r\n elements\r\n |> List.map toString\r\n |> String.concat \",\"\r\n |> sprintf \"[%s]\"\r\n | JObject map ->\r\n map\r\n |> Map.toList\r\n |> List.map (fun (key,value) -> sprintf \"\\\"%s\\\":%s\" key (toString value))\r\n |> String.concat \",\"\r\n |> sprintf \"{%s}\"\r\n\r\n let stringify (value: 'a) : string =\r\n if isNullOrUndefined value\r\n then JS.JSON.stringify(null)\r\n else JS.JSON.stringify(value, (fun key v ->\r\n if isDateOffset (get key jsThis) then\r\n let dateOffset : DateTimeOffset = get key jsThis\r\n box (dateOffset.ToString(\"O\"))\r\n elif isBigInt (get key jsThis) then\r\n let bigInt : bigint = get key jsThis\r\n box (string (decimal bigInt))\r\n else\r\n match v with\r\n | :? string -> v\r\n | :? System.Collections.IEnumerable ->\r\n if JS.Constructors.Array.isArray(v) then v\r\n else arrayFrom v\r\n | _ when isBigInt v -> box (string (decimal (unbox v)))\r\n | _ when isDateOffset v -> box ((unbox v).ToString(\"O\"))\r\n | _ -> v\r\n ), 0)\r\n\r\n let rec internal parseNative' (x: obj) =\r\n match x with\r\n | TypeCheck.NativeString str -> JString str\r\n | TypeCheck.NativeNumber number -> JNumber number\r\n | TypeCheck.NativeBool value -> JBool value\r\n | TypeCheck.Null _ -> JNull\r\n | TypeCheck.NativeArray arr -> JArray (List.ofArray (Array.map parseNative' arr))\r\n | TypeCheck.NativeObject object ->\r\n [ for key in JS.Constructors.Object.keys object -> key, parseNative' (get key object) ]\r\n |> Map.ofList\r\n |> JObject\r\n | _ -> JNull\r\n\r\n /// Parses and converts the input string to Json using Javascript's native parsing capabilities\r\n let parseNative (input: string) =\r\n let parsed = JS.JSON.parse input\r\n parseNative' parsed\r\n\r\n let tryParseNative (input: string) =\r\n try Some (parseNative input)\r\n with | ex -> None\r\n\r\n /// Tries to convert an object literal to the Json by calling JSON.stringify on the object first\r\n let fromObjectLiteral (x: 'a) =\r\n try Some (parseNative' x)\r\n with | _ -> None\r\n\r\n /// Transforms all keys of the objects within the Json structure\r\n let rec mapKeys f = function\r\n | JObject dictionary ->\r\n dictionary\r\n |> Map.toList\r\n |> List.map (fun (key, value) -> f key, mapKeys f value)\r\n |> Map.ofList\r\n |> JObject\r\n | JArray values ->\r\n values\r\n |> List.map (mapKeys f)\r\n |> JArray\r\n | otherJsonValue -> otherJsonValue\r\n\r\n /// Transforms object values recursively using function `f` that takes the key and value of the object and returns a new value\r\n let rec mapbyKey f = function\r\n | JObject dictionary ->\r\n dictionary\r\n |> Map.toList\r\n |> List.map (fun (key, value) -> key, f key value)\r\n |> Map.ofList\r\n |> JObject\r\n | JArray values ->\r\n values\r\n |> List.map (mapbyKey f)\r\n |> JArray\r\n | otherJsonValue -> otherJsonValue\r\n\r\n /// Transforms keys of object selectively by path segments\r\n let mapKeysByPath f json =\r\n let rec mapKey xs = function\r\n | JObject dictionary ->\r\n dictionary\r\n |> Map.toList\r\n |> List.map (fun (key, value) ->\r\n let keyPath = List.concat [xs; [key]]\r\n match f keyPath with\r\n | Some nextKey -> nextKey, mapKey keyPath value\r\n | None -> key, mapKey keyPath value)\r\n |> Map.ofList\r\n |> JObject\r\n | JArray values ->\r\n values\r\n |> List.map (mapKey xs)\r\n |> JArray\r\n | otherJsonValue -> otherJsonValue\r\n mapKey [] json\r\n\r\n let rec readPath (keys: string list) (input: Json) =\r\n match keys, input with\r\n | [ ], _ -> None\r\n | [ key ], JObject dict -> Map.tryFind key dict\r\n | firstKey :: rest, JObject dict ->\r\n match Map.tryFind firstKey dict with\r\n | Some (JObject nextDict) -> readPath rest (JObject nextDict)\r\n | _ -> None\r\n | _ -> None","import Vue from 'vue'\nimport i18next from 'i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport VueI18Next from '@panter/vue-i18next'\nimport getWeek from 'date-fns/getWeek'\nimport en from './locales/en.json'\nimport mk from './locales/mk.json'\nimport sq from './locales/sq.json'\nimport sl from './locales/sl.json'\nimport hr from './locales/hr.json'\nimport de from './locales/de.json'\nimport it from './locales/it.json'\n\n\nimport {Highcharts} from './visualizations/_highcharts'\n\nVue.use(VueI18Next)\n\nconst detectionOptions = {\n order: [\n 'path',\n 'cookie',\n 'navigator',\n 'localStorage',\n 'subdomain',\n 'queryString',\n 'htmlTag',\n ],\n lookupLocalStorage: 'i18nextLng',\n lookupFromPathIndex: 0,\n}\n\n// Adds %W to Highcharts date formats\n// docs: https://api.highcharts.com/class-reference/Highcharts.Time\nHighcharts.dateFormats.W = function (timestamp) {\n return getWeek(timestamp, {weekStartsOn: 1}).toString()\n};\n\n\nfunction setHighchartsOptions () {\n (window.Highcharts || Highcharts).setOptions({\n global: {\n useUTC: false\n },\n lang: {\n loading: i18next.t(\"charts.common.loading\"),\n months: i18next.t(\"month\"),\n shortMonths: i18next.t(\"shortMonth\"),\n weekdays: i18next.t(\"weekday\"),\n rangeSelectorFrom: i18next.t(\"charts.common.from\"),\n rangeSelectorTo: i18next.t(\"charts.common.to\"),\n rangeSelectorZoom: i18next.t(\"charts.common.zoom\"),\n resetZoom: i18next.t(\"charts.common.resetZoom\"),\n resetZoomTitle: i18next.t(\"charts.common.resetZoomTitle\"),\n thousandsSep: i18next.t(\"charts.common.thousandsSep\"),\n decimalPoint: i18next.t(\"charts.common.decimalPoint\"),\n }\n });\n};\n\ni18next.on('languageChanged', function(lng) {\n setHighchartsOptions(Highcharts);\n});\n\ni18next.use(LanguageDetector).init({\n lng: process.env.VUE_APP_DEFAULT_LANGUAGE,\n fallbackLng: ['mk', 'sq', 'en'],\n returnObjects: true,\n resources: {\n mk: { translation: mk },\n sq: { translation: sq },\n en: { translation: en },\n },\n detection: detectionOptions,\n interpolation: {\n format: function(value, format, lng) {\n if (value instanceof Date) {\n return (window.Highcharts || Highcharts).time.dateFormat(format, value.getTime());\n }\n return value\n },\n },\n})\ni18next.services.pluralResolver.addRule(\n // override plural rule from\n // https://github.com/i18next/i18next/blob/270904f6369ee9bbda059c3186fcea7baf9eb15d/src/PluralResolver.js#L62\n // to match the one in weblate\n 'sl',\n {\n numbers: [0, 1, 2, 3],\n plurals: function plurals(n) {\n return Number(\n n % 100 == 1 ? 0 : n % 100 == 2 ? 1 : n % 100 == 3 || n % 100 == 4 ? 2 : 3\n )\n },\n }\n)\n\ni18next.services.pluralResolver.addRule(\n// override plural rule from\n// https://github.com/i18next/i18next/blob/270904f6369ee9bbda059c3186fcea7baf9eb15d/src/PluralResolver.js#L58\n// with the one from\n// https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_plural_rules.html#mk\n// to use plural also for 11, 111, 211, 311...\n'mk',\n{\n numbers: [1,2],\n plurals: function plurals(n) {\n return Number(n==1 || n%10==1 && n%100!=11 ? 0 : 1);\n }\n});\n\nlocalStorage.setItem('contextCountry', process.env.VUE_APP_LOCALE_CONTEXT)\n\nconst i18n = new VueI18Next(i18next)\n\nexport function formatNumber(number, opts = {}){\n return Intl.NumberFormat(i18next.language || 'sl', opts).format(number)\n}\n\nexport default i18n\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSwitcher.vue?vue&type=style&index=0&id=9a1defba&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSwitcher.vue?vue&type=style&index=0&id=9a1defba&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VegaChart',{attrs:{\"title\":_vm.$t('charts.ostanizdrav.validByRisk.title'),\"name\":\"validByRisk-chart\",\"data\":_vm.plotData,\"description\":_vm.$t('charts.ostanizdrav.validByRisk.description'),\"faqAnchor\":\"ostanizdrav-validByRisk\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function ($t) {return {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\",\n \"width\": \"container\",\n \"height\": 250,\n \"data\": {\n \"url\": \"https://ostanizdrav.sledilnik.org/plots/dataByRisk.json\"\n },\n \"transform\": [\n {\n \"calculate\": $t('charts.ostanizdrav.validByRisk.tooltip'),\n \"as\": \"tt\"\n }\n ],\n \"layer\": [\n {\n \"encoding\": {\n \"x\": {\n \"title\": $t('charts.ostanizdrav.validByRisk.date'),\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0,\n \"tickCount\": \"week\",\n \"labelExpr\": \"[timeFormat(datum.value, '%d'), timeFormat(datum.value, '%d') <= '07' ? timeFormat(datum.value, '%b') : '']\",\n \"gridDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n },\n \"tickDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n }\n }\n },\n \"y\": {\n \"field\": \"valid\",\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.validByRisk.valid')\n }\n },\n \"color\": {\n \"title\": $t('charts.ostanizdrav.validByRisk.risk'),\n \"field\": \"risk\",\n \"type\": \"ordinal\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"line\",\n \"interpolate\": \"monotone\",\n \"point\": true\n }\n },\n {\n \"selection\": {\n \"label\": {\n \"type\": \"single\",\n \"nearest\": true,\n \"on\": \"mouseover\",\n \"encodings\": [\n \"x\"\n ],\n \"empty\": \"none\"\n }\n },\n \"mark\": \"point\",\n \"encoding\": {\n \"opacity\": {\n \"condition\": {\n \"selection\": \"label\",\n \"value\": 1\n },\n \"value\": 0\n }\n }\n }\n ]\n },\n {\n \"transform\": [\n {\n \"filter\": {\n \"selection\": \"label\"\n }\n }\n ],\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"rule\",\n \"color\": \"gray\"\n },\n \"encoding\": {\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0\n }\n }\n }\n },\n {\n \"encoding\": {\n \"text\": {\n \"type\": \"text\",\n \"field\": \"tt\"\n },\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0\n }\n },\n \"y\": {\n \"type\": \"quantitative\",\n \"field\": \"valid\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"text\",\n \"stroke\": \"white\",\n \"strokeWidth\": 2,\n \"align\": \"right\",\n \"dx\": -5,\n \"dy\": -5\n }\n },\n {\n \"mark\": {\n \"type\": \"text\",\n \"align\": \"right\",\n \"dx\": -5,\n \"dy\": -5\n },\n \"encoding\": {\n \"color\": {\n \"type\": \"ordinal\",\n \"field\": \"risk\"\n }\n }\n }\n ]\n }\n ]\n }\n ]\n}}","\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValidByRiskChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValidByRiskChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValidByRiskChart.vue?vue&type=template&id=18afb92f&\"\nimport script from \"./ValidByRiskChart.vue?vue&type=script&lang=js&\"\nexport * from \"./ValidByRiskChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { List, declare, Record } from \"../Types.js\";\nimport { record_type, array_type, int32_type } from \"../Reflection.js\";\nimport { op_LeftShift, op_BitwiseAnd, op_Addition, compare, op_Subtraction, op_Division, equals, toInt, op_Modulus, op_Multiply, fromInteger, fromBits } from \"../Long.js\";\nimport { ofList, copy, initialize, map, fill } from \"../Array.js\";\nimport { int32ToString } from \"../Util.js\";\nimport { isNullOrEmpty, join } from \"../String.js\";\nexport const BigNat = declare(function BigInt_BigNat(bound, digits) {\n this.bound = bound | 0;\n this.digits = digits;\n}, Record);\nexport function BigNat$reflection() {\n return record_type(\"BigInt.BigNat\", [], BigNat, () => [[\"bound\", int32_type], [\"digits\", array_type(int32_type)]]);\n}\nexport function BigNatModule$002EFFT$$$pow32($x$$1, $n$$2) {\n BigNatModule$002EFFT$$$pow32: while (true) {\n const x = $x$$1,\n n = $n$$2;\n\n if (n === 0) {\n return 1;\n } else if (n % 2 === 0) {\n $x$$1 = x * x;\n $n$$2 = ~~(n / 2);\n continue BigNatModule$002EFFT$$$pow32;\n } else {\n return x * BigNatModule$002EFFT$$$pow32(x * x, ~~(n / 2)) | 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$002EFFT$$$leastBounding2Power(b) {\n const findBounding2Power = function findBounding2Power($b$$1$$4, $tp$$5, $i$$6) {\n findBounding2Power: while (true) {\n const b$$1 = $b$$1$$4,\n tp = $tp$$5,\n i = $i$$6;\n\n if (b$$1 <= tp) {\n return [tp, i];\n } else {\n $b$$1$$4 = b$$1;\n $tp$$5 = tp * 2;\n $i$$6 = i + 1;\n continue findBounding2Power;\n }\n\n break;\n }\n };\n\n return findBounding2Power(b, 1, 0);\n}\nexport const BigNatModule$002EFFT$$$p = fromBits(2013265921, 0, false);\nconst BigNatModule$002EFFT$$$patternInput$004075 = [27, 15, 31, 440564289];\nexport const BigNatModule$002EFFT$$$w = BigNatModule$002EFFT$$$patternInput$004075[3];\nexport const BigNatModule$002EFFT$$$m = BigNatModule$002EFFT$$$patternInput$004075[1];\nexport const BigNatModule$002EFFT$$$k = BigNatModule$002EFFT$$$patternInput$004075[0];\nexport const BigNatModule$002EFFT$$$g = BigNatModule$002EFFT$$$patternInput$004075[2];\nexport const BigNatModule$002EFFT$$$primeP = BigNatModule$002EFFT$$$p;\nexport const BigNatModule$002EFFT$$$maxBitsInsideFp = 30;\nexport const BigNatModule$002EFFT$002EFp$$$p = 2013265921;\nexport const BigNatModule$002EFFT$002EFp$$$p64 = fromBits(2013265921, 0, true);\nexport function BigNatModule$002EFFT$002EFp$$$toInt(x$$1) {\n return ~~x$$1;\n}\nexport function BigNatModule$002EFFT$002EFp$$$ofInt32(x$$2) {\n return x$$2 >>> 0;\n}\nexport const BigNatModule$002EFFT$002EFp$$$mzero = 0;\nexport const BigNatModule$002EFFT$002EFp$$$mone = 1;\nexport const BigNatModule$002EFFT$002EFp$$$mtwo = 2;\nexport function BigNatModule$002EFFT$002EFp$$$mpow($x$$3$$9, $n$$1$$10) {\n BigNatModule$002EFFT$002EFp$$$mpow: while (true) {\n const x$$3 = $x$$3$$9,\n n$$1 = $n$$1$$10;\n\n if (n$$1 === 0) {\n return BigNatModule$002EFFT$002EFp$$$mone;\n } else if (n$$1 % 2 === 0) {\n $x$$3$$9 = toInt(op_Modulus(op_Multiply(fromInteger(x$$3, true, 6), fromInteger(x$$3, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n $n$$1$$10 = ~~(n$$1 / 2);\n continue BigNatModule$002EFFT$002EFp$$$mpow;\n } else {\n const y$$2 = BigNatModule$002EFFT$002EFp$$$mpow(toInt(op_Modulus(op_Multiply(fromInteger(x$$3, true, 6), fromInteger(x$$3, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0, ~~(n$$1 / 2));\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$3, true, 6), fromInteger(y$$2, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$002EFFT$002EFp$$$mpowL($x$$7$$11, $n$$2$$12) {\n BigNatModule$002EFFT$002EFp$$$mpowL: while (true) {\n const x$$7 = $x$$7$$11,\n n$$2 = $n$$2$$12;\n\n if (equals(n$$2, fromBits(0, 0, false))) {\n return BigNatModule$002EFFT$002EFp$$$mone;\n } else if (equals(op_Modulus(n$$2, fromBits(2, 0, false)), fromBits(0, 0, false))) {\n $x$$7$$11 = toInt(op_Modulus(op_Multiply(fromInteger(x$$7, true, 6), fromInteger(x$$7, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n $n$$2$$12 = op_Division(n$$2, fromBits(2, 0, false));\n continue BigNatModule$002EFFT$002EFp$$$mpowL;\n } else {\n const y$$5 = BigNatModule$002EFFT$002EFp$$$mpowL(toInt(op_Modulus(op_Multiply(fromInteger(x$$7, true, 6), fromInteger(x$$7, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0, op_Division(n$$2, fromBits(2, 0, false)));\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$7, true, 6), fromInteger(y$$5, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$002EFFT$002EFp$$$m2PowNthRoot(n$$3) {\n return BigNatModule$002EFFT$002EFp$$$mpow(BigNatModule$002EFFT$$$w >>> 0, BigNatModule$002EFFT$$$pow32(2, BigNatModule$002EFFT$$$k - n$$3));\n}\nexport function BigNatModule$002EFFT$002EFp$$$minv(x$$11) {\n return BigNatModule$002EFFT$002EFp$$$mpowL(x$$11, op_Subtraction(BigNatModule$002EFFT$$$primeP, fromBits(2, 0, false)));\n}\nexport function BigNatModule$002EFFT$$$computeFFT(lambda, mu, n$$4, w, u, res, offset) {\n if (n$$4 === 1) {\n res[offset] = u[mu];\n } else {\n const halfN = ~~(n$$4 / 2) | 0;\n const ww = toInt(op_Modulus(op_Multiply(fromInteger(w, true, 6), fromInteger(w, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n const offsetHalfN = offset + halfN | 0;\n BigNatModule$002EFFT$$$computeFFT(lambda * 2, mu, halfN, ww, u, res, offset);\n BigNatModule$002EFFT$$$computeFFT(lambda * 2, lambda + mu, halfN, ww, u, res, offsetHalfN);\n let wj = BigNatModule$002EFFT$002EFp$$$mone;\n\n for (let j = 0; j <= halfN - 1; j++) {\n const even = res[offset + j];\n const odd = res[offsetHalfN + j];\n let y$$8;\n const x$$13 = wj;\n y$$8 = toInt(op_Modulus(op_Multiply(fromInteger(x$$13, true, 6), fromInteger(odd, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n res[offset + j] = (even + y$$8) % BigNatModule$002EFFT$002EFp$$$p;\n let y$$10;\n const x$$15 = wj;\n y$$10 = toInt(op_Modulus(op_Multiply(fromInteger(x$$15, true, 6), fromInteger(odd, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n res[offsetHalfN + j] = (even + BigNatModule$002EFFT$002EFp$$$p - y$$10) % BigNatModule$002EFFT$002EFp$$$p;\n const y$$11 = wj;\n wj = toInt(op_Modulus(op_Multiply(fromInteger(w, true, 6), fromInteger(y$$11, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }\n }\n}\nexport function BigNatModule$002EFFT$$$computFftInPlace(n$$5, w$$1, u$$1) {\n const res$$1 = fill(new Uint32Array(n$$5), 0, n$$5, BigNatModule$002EFFT$002EFp$$$mzero);\n BigNatModule$002EFFT$$$computeFFT(1, 0, n$$5, w$$1, u$$1, res$$1, 0);\n return res$$1;\n}\nexport function BigNatModule$002EFFT$$$computeInverseFftInPlace(n$$6, w$$2, uT) {\n const bigKInv = BigNatModule$002EFFT$002EFp$$$minv(n$$6 >>> 0);\n return map(function (y$$12) {\n return toInt(op_Modulus(op_Multiply(fromInteger(bigKInv, true, 6), fromInteger(y$$12, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }, BigNatModule$002EFFT$$$computFftInPlace(n$$6, BigNatModule$002EFFT$002EFp$$$minv(w$$2), uT), Uint32Array);\n}\nexport const BigNatModule$002EFFT$$$maxTwoPower = 29;\nexport const BigNatModule$002EFFT$$$twoPowerTable = initialize(BigNatModule$002EFFT$$$maxTwoPower - 1, function (i$$1) {\n return BigNatModule$002EFFT$$$pow32(2, i$$1);\n}, Int32Array);\nexport function BigNatModule$002EFFT$$$computeFftPaddedPolynomialProduct(bigK, k, u$$2, v) {\n const w$$3 = BigNatModule$002EFFT$002EFp$$$m2PowNthRoot(k);\n const uT$$1 = BigNatModule$002EFFT$$$computFftInPlace(bigK, w$$3, u$$2);\n const vT = BigNatModule$002EFFT$$$computFftInPlace(bigK, w$$3, v);\n const rT = initialize(bigK, function (i$$2) {\n const x$$19 = uT$$1[i$$2];\n const y$$14 = vT[i$$2];\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$19, true, 6), fromInteger(y$$14, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }, Uint32Array);\n const r = BigNatModule$002EFFT$$$computeInverseFftInPlace(bigK, w$$3, rT);\n return r;\n}\nexport function BigNatModule$002EFFT$$$padTo(n$$8, u$$3) {\n const uBound = u$$3.length | 0;\n return initialize(n$$8, function (i$$3) {\n return i$$3 < uBound ? BigNatModule$002EFFT$002EFp$$$ofInt32(u$$3[i$$3]) : BigNatModule$002EFFT$002EFp$$$mzero;\n }, Uint32Array);\n}\nexport function BigNatModule$002EFFT$$$computeFftPolynomialProduct(degu, u$$4, degv, v$$1) {\n const deguv = degu + degv | 0;\n const bound = deguv + 1 | 0;\n const patternInput = BigNatModule$002EFFT$$$leastBounding2Power(bound);\n const w$$4 = BigNatModule$002EFFT$002EFp$$$m2PowNthRoot(patternInput[1]);\n const u$$5 = BigNatModule$002EFFT$$$padTo(patternInput[0], u$$4);\n const v$$2 = BigNatModule$002EFFT$$$padTo(patternInput[0], v$$1);\n const uT$$2 = BigNatModule$002EFFT$$$computFftInPlace(patternInput[0], w$$4, u$$5);\n const vT$$1 = BigNatModule$002EFFT$$$computFftInPlace(patternInput[0], w$$4, v$$2);\n const rT$$1 = initialize(patternInput[0], function (i$$4) {\n const x$$20 = uT$$2[i$$4];\n const y$$15 = vT$$1[i$$4];\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$20, true, 6), fromInteger(y$$15, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }, Uint32Array);\n const r$$1 = BigNatModule$002EFFT$$$computeInverseFftInPlace(patternInput[0], w$$4, rT$$1);\n return map(BigNatModule$002EFFT$002EFp$$$toInt, r$$1, Int32Array);\n}\nexport const BigNatModule$002EFFT$$$mzero = BigNatModule$002EFFT$002EFp$$$mzero;\nexport const BigNatModule$002EFFT$$$mone = BigNatModule$002EFFT$002EFp$$$mone;\nexport const BigNatModule$002EFFT$$$maxFp = (BigNatModule$002EFFT$002EFp$$$p + BigNatModule$002EFFT$002EFp$$$p - BigNatModule$002EFFT$$$mone) % BigNatModule$002EFFT$002EFp$$$p;\nexport function BigNatModule$$$bound(n$$10) {\n return n$$10.bound;\n}\nexport function BigNatModule$$$setBound(n$$11, v$$3) {\n n$$11.bound = v$$3;\n}\nexport function BigNatModule$$$coeff(n$$12, i$$5) {\n return n$$12.digits[i$$5];\n}\nexport function BigNatModule$$$coeff64(n$$13, i$$6) {\n return fromInteger(BigNatModule$$$coeff(n$$13, i$$6), false, 2);\n}\nexport function BigNatModule$$$setCoeff(n$$14, i$$7, v$$4) {\n n$$14.digits[i$$7] = v$$4;\n}\nexport function BigNatModule$$$pow64($x$$23$$48, $n$$15$$49) {\n BigNatModule$$$pow64: while (true) {\n const x$$23 = $x$$23$$48,\n n$$15 = $n$$15$$49;\n\n if (n$$15 === 0) {\n return fromBits(1, 0, false);\n } else if (n$$15 % 2 === 0) {\n $x$$23$$48 = op_Multiply(x$$23, x$$23);\n $n$$15$$49 = ~~(n$$15 / 2);\n continue BigNatModule$$$pow64;\n } else {\n return op_Multiply(x$$23, BigNatModule$$$pow64(op_Multiply(x$$23, x$$23), ~~(n$$15 / 2)));\n }\n\n break;\n }\n}\nexport function BigNatModule$$$pow32($x$$24$$50, $n$$16$$51) {\n BigNatModule$$$pow32: while (true) {\n const x$$24 = $x$$24$$50,\n n$$16 = $n$$16$$51;\n\n if (n$$16 === 0) {\n return 1;\n } else if (n$$16 % 2 === 0) {\n $x$$24$$50 = x$$24 * x$$24;\n $n$$16$$51 = ~~(n$$16 / 2);\n continue BigNatModule$$$pow32;\n } else {\n return x$$24 * BigNatModule$$$pow32(x$$24 * x$$24, ~~(n$$16 / 2)) | 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$hash(n$$17) {\n let res$$2 = 0;\n\n for (let i$$8 = 0; i$$8 <= n$$17.bound - 1; i$$8++) {\n res$$2 = n$$17.digits[i$$8] + (res$$2 << 3);\n }\n\n return res$$2 | 0;\n}\nexport function BigNatModule$$$maxInt(a, b$$2) {\n if (a < b$$2) {\n return b$$2 | 0;\n } else {\n return a | 0;\n }\n}\nexport function BigNatModule$$$minInt(a$$1, b$$3) {\n if (a$$1 < b$$3) {\n return a$$1 | 0;\n } else {\n return b$$3 | 0;\n }\n}\nexport const BigNatModule$$$baseBits = 24;\nexport const BigNatModule$$$baseN = 16777216;\nexport const BigNatModule$$$baseMask = 16777215;\nexport const BigNatModule$$$baseNi64 = fromBits(16777216, 0, false);\nexport const BigNatModule$$$baseMaski64 = fromBits(16777215, 0, false);\nexport const BigNatModule$$$baseMaskU = fromBits(16777215, 0, true);\nexport const BigNatModule$$$baseMask32A = 16777215;\nexport const BigNatModule$$$baseMask32B = 255;\nexport const BigNatModule$$$baseShift32B = 24;\nexport const BigNatModule$$$baseMask64A = 16777215;\nexport const BigNatModule$$$baseMask64B = 16777215;\nexport const BigNatModule$$$baseMask64C = 65535;\nexport const BigNatModule$$$baseShift64B = 24;\nexport const BigNatModule$$$baseShift64C = 48;\nexport function BigNatModule$$$divbase(x$$25) {\n return ~~(x$$25 >>> 0 >>> BigNatModule$$$baseBits);\n}\nexport function BigNatModule$$$modbase(x$$26) {\n return x$$26 & BigNatModule$$$baseMask;\n}\nexport function BigNatModule$$$createN(b$$4) {\n return new BigNat(b$$4, new Int32Array(b$$4));\n}\nexport function BigNatModule$$$copyN(x$$27) {\n return new BigNat(x$$27.bound, copy(x$$27.digits, Int32Array));\n}\nexport function BigNatModule$$$normN(n$$18) {\n const findLeastBound = function findLeastBound($na$$62, $i$$9$$63) {\n findLeastBound: while (true) {\n const na = $na$$62,\n i$$9 = $i$$9$$63;\n\n if (i$$9 === -1 ? true : na[i$$9] !== 0) {\n return i$$9 + 1 | 0;\n } else {\n $na$$62 = na;\n $i$$9$$63 = i$$9 - 1;\n continue findLeastBound;\n }\n\n break;\n }\n };\n\n const bound$$1 = findLeastBound(n$$18.digits, n$$18.bound - 1) | 0;\n n$$18.bound = bound$$1;\n return n$$18;\n}\nexport const BigNatModule$$$boundInt = 2;\nexport const BigNatModule$$$boundInt64 = 3;\nexport const BigNatModule$$$boundBase = 1;\nexport function BigNatModule$$$embed(x$$28) {\n const x$$29 = (x$$28 < 0 ? 0 : x$$28) | 0;\n\n if (x$$29 < BigNatModule$$$baseN) {\n const r$$2 = BigNatModule$$$createN(1);\n r$$2.digits[0] = x$$29;\n return BigNatModule$$$normN(r$$2);\n } else {\n const r$$3 = BigNatModule$$$createN(BigNatModule$$$boundInt);\n\n for (let i$$10 = 0; i$$10 <= BigNatModule$$$boundInt - 1; i$$10++) {\n r$$3.digits[i$$10] = ~~(x$$29 / BigNatModule$$$pow32(BigNatModule$$$baseN, i$$10)) % BigNatModule$$$baseN;\n }\n\n return BigNatModule$$$normN(r$$3);\n }\n}\nexport function BigNatModule$$$embed64(x$$30) {\n const x$$31 = compare(x$$30, fromBits(0, 0, false)) < 0 ? fromBits(0, 0, false) : x$$30;\n const r$$4 = BigNatModule$$$createN(BigNatModule$$$boundInt64);\n\n for (let i$$11 = 0; i$$11 <= BigNatModule$$$boundInt64 - 1; i$$11++) {\n r$$4.digits[i$$11] = ~~toInt(op_Modulus(op_Division(x$$31, BigNatModule$$$pow64(BigNatModule$$$baseNi64, i$$11)), BigNatModule$$$baseNi64));\n }\n\n return BigNatModule$$$normN(r$$4);\n}\nexport function BigNatModule$$$eval32(n$$19) {\n if (n$$19.bound === 1) {\n return n$$19.digits[0] | 0;\n } else {\n let acc = 0;\n\n for (let i$$12 = n$$19.bound - 1; i$$12 >= 0; i$$12--) {\n acc = n$$19.digits[i$$12] + BigNatModule$$$baseN * acc;\n }\n\n return acc | 0;\n }\n}\nexport function BigNatModule$$$eval64(n$$20) {\n if (n$$20.bound === 1) {\n return fromInteger(n$$20.digits[0], false, 2);\n } else {\n let acc$$1 = fromBits(0, 0, false);\n\n for (let i$$13 = n$$20.bound - 1; i$$13 >= 0; i$$13--) {\n acc$$1 = op_Addition(fromInteger(n$$20.digits[i$$13], false, 2), op_Multiply(BigNatModule$$$baseNi64, acc$$1));\n }\n\n return acc$$1;\n }\n}\nexport const BigNatModule$$$one = BigNatModule$$$embed(1);\nexport const BigNatModule$$$zero = BigNatModule$$$embed(0);\nexport function BigNatModule$$$restrictTo(d, n$$21) {\n return new BigNat(BigNatModule$$$minInt(d, n$$21.bound), n$$21.digits);\n}\nexport function BigNatModule$$$shiftUp(d$$1, n$$22) {\n const m = BigNatModule$$$createN(n$$22.bound + d$$1);\n\n for (let i$$14 = 0; i$$14 <= n$$22.bound - 1; i$$14++) {\n m.digits[i$$14 + d$$1] = n$$22.digits[i$$14];\n }\n\n return m;\n}\nexport function BigNatModule$$$shiftDown(d$$2, n$$23) {\n if (n$$23.bound - d$$2 <= 0) {\n return BigNatModule$$$zero;\n } else {\n const m$$1 = BigNatModule$$$createN(n$$23.bound - d$$2);\n\n for (let i$$15 = 0; i$$15 <= m$$1.bound - 1; i$$15++) {\n m$$1.digits[i$$15] = n$$23.digits[i$$15 + d$$2];\n }\n\n return m$$1;\n }\n}\nexport function BigNatModule$$$degree(n$$24) {\n return n$$24.bound - 1;\n}\nexport function BigNatModule$$$addP($i$$16$$75, $n$$25$$76, $c$$77, $p$$78, $q$$79, $r$$5$$80) {\n BigNatModule$$$addP: while (true) {\n const i$$16 = $i$$16$$75,\n n$$25 = $n$$25$$76,\n c = $c$$77,\n p = $p$$78,\n q = $q$$79,\n r$$5 = $r$$5$$80;\n\n if (i$$16 < n$$25) {\n const x$$32 = (i$$16 < p.bound ? p.digits[i$$16] : 0) + (i$$16 < q.bound ? q.digits[i$$16] : 0) + c | 0;\n r$$5.digits[i$$16] = BigNatModule$$$modbase(x$$32);\n const c$$1 = BigNatModule$$$divbase(x$$32) | 0;\n $i$$16$$75 = i$$16 + 1;\n $n$$25$$76 = n$$25;\n $c$$77 = c$$1;\n $p$$78 = p;\n $q$$79 = q;\n $r$$5$$80 = r$$5;\n continue BigNatModule$$$addP;\n } else {\n void null;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$add(p$$1, q$$1) {\n const rbound = 1 + BigNatModule$$$maxInt(p$$1.bound, q$$1.bound) | 0;\n const r$$6 = BigNatModule$$$createN(rbound);\n BigNatModule$$$addP(0, rbound, 0, p$$1, q$$1, r$$6);\n return BigNatModule$$$normN(r$$6);\n}\nexport function BigNatModule$$$subP($i$$19$$83, $n$$26$$84, $c$$2$$85, $p$$2$$86, $q$$2$$87, $r$$7$$88) {\n BigNatModule$$$subP: while (true) {\n const i$$19 = $i$$19$$83,\n n$$26 = $n$$26$$84,\n c$$2 = $c$$2$$85,\n p$$2 = $p$$2$$86,\n q$$2 = $q$$2$$87,\n r$$7 = $r$$7$$88;\n\n if (i$$19 < n$$26) {\n const x$$33 = (i$$19 < p$$2.bound ? p$$2.digits[i$$19] : 0) - (i$$19 < q$$2.bound ? q$$2.digits[i$$19] : 0) + c$$2 | 0;\n\n if (x$$33 > 0) {\n r$$7.digits[i$$19] = BigNatModule$$$modbase(x$$33);\n const c$$3 = BigNatModule$$$divbase(x$$33) | 0;\n $i$$19$$83 = i$$19 + 1;\n $n$$26$$84 = n$$26;\n $c$$2$$85 = c$$3;\n $p$$2$$86 = p$$2;\n $q$$2$$87 = q$$2;\n $r$$7$$88 = r$$7;\n continue BigNatModule$$$subP;\n } else {\n const x$$34 = x$$33 + BigNatModule$$$baseN | 0;\n r$$7.digits[i$$19] = BigNatModule$$$modbase(x$$34);\n const c$$4 = BigNatModule$$$divbase(x$$34) - 1 | 0;\n $i$$19$$83 = i$$19 + 1;\n $n$$26$$84 = n$$26;\n $c$$2$$85 = c$$4;\n $p$$2$$86 = p$$2;\n $q$$2$$87 = q$$2;\n $r$$7$$88 = r$$7;\n continue BigNatModule$$$subP;\n }\n } else {\n const underflow = c$$2 !== 0;\n return underflow;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$sub(p$$3, q$$3) {\n const rbound$$1 = BigNatModule$$$maxInt(p$$3.bound, q$$3.bound) | 0;\n const r$$8 = BigNatModule$$$createN(rbound$$1);\n const underflow$$1 = BigNatModule$$$subP(0, rbound$$1, 0, p$$3, q$$3, r$$8);\n\n if (underflow$$1) {\n return BigNatModule$$$embed(0);\n } else {\n return BigNatModule$$$normN(r$$8);\n }\n}\nexport function BigNatModule$$$isZero(p$$4) {\n return p$$4.bound === 0;\n}\nexport function BigNatModule$$$IsZero(p$$5) {\n return BigNatModule$$$isZero(p$$5);\n}\nexport function BigNatModule$$$isOne(p$$6) {\n if (p$$6.bound === 1) {\n return p$$6.digits[0] === 1;\n } else {\n return false;\n }\n}\nexport function BigNatModule$$$equal(p$$7, q$$4) {\n if (p$$7.bound === q$$4.bound) {\n const check = function check($pa$$96, $qa$$97, $i$$22$$98) {\n check: while (true) {\n const pa = $pa$$96,\n qa = $qa$$97,\n i$$22 = $i$$22$$98;\n\n if (i$$22 === -1) {\n return true;\n } else if (pa[i$$22] === qa[i$$22]) {\n $pa$$96 = pa;\n $qa$$97 = qa;\n $i$$22$$98 = i$$22 - 1;\n continue check;\n } else {\n return false;\n }\n\n break;\n }\n };\n\n return check(p$$7.digits, q$$4.digits, p$$7.bound - 1);\n } else {\n return false;\n }\n}\nexport function BigNatModule$$$shiftCompare(p$$8, pn, q$$5, qn) {\n if (p$$8.bound + pn < q$$5.bound + qn) {\n return -1 | 0;\n } else if (p$$8.bound + pn > q$$5.bound + pn) {\n return 1;\n } else {\n const check$$1 = function check$$1($pa$$1$$103, $qa$$1$$104, $i$$23$$105) {\n check$$1: while (true) {\n const pa$$1 = $pa$$1$$103,\n qa$$1 = $qa$$1$$104,\n i$$23 = $i$$23$$105;\n\n if (i$$23 === -1) {\n return 0;\n } else {\n const pai = (i$$23 < pn ? 0 : pa$$1[i$$23 - pn]) | 0;\n const qai = (i$$23 < qn ? 0 : qa$$1[i$$23 - qn]) | 0;\n\n if (pai === qai) {\n $pa$$1$$103 = pa$$1;\n $qa$$1$$104 = qa$$1;\n $i$$23$$105 = i$$23 - 1;\n continue check$$1;\n } else if (pai < qai) {\n return -1 | 0;\n } else {\n return 1;\n }\n }\n\n break;\n }\n };\n\n return check$$1(p$$8.digits, q$$5.digits, p$$8.bound + pn - 1) | 0;\n }\n}\nexport function BigNatModule$$$compare(p$$9, q$$6) {\n if (p$$9.bound < q$$6.bound) {\n return -1 | 0;\n } else if (p$$9.bound > q$$6.bound) {\n return 1;\n } else {\n const check$$2 = function check$$2($pa$$2$$108, $qa$$2$$109, $i$$24$$110) {\n check$$2: while (true) {\n const pa$$2 = $pa$$2$$108,\n qa$$2 = $qa$$2$$109,\n i$$24 = $i$$24$$110;\n\n if (i$$24 === -1) {\n return 0;\n } else if (pa$$2[i$$24] === qa$$2[i$$24]) {\n $pa$$2$$108 = pa$$2;\n $qa$$2$$109 = qa$$2;\n $i$$24$$110 = i$$24 - 1;\n continue check$$2;\n } else if (pa$$2[i$$24] < qa$$2[i$$24]) {\n return -1 | 0;\n } else {\n return 1;\n }\n\n break;\n }\n };\n\n return check$$2(p$$9.digits, q$$6.digits, p$$9.bound - 1) | 0;\n }\n}\nexport function BigNatModule$$$lt(p$$10, q$$7) {\n return BigNatModule$$$compare(p$$10, q$$7) === -1;\n}\nexport function BigNatModule$$$gt(p$$11, q$$8) {\n return BigNatModule$$$compare(p$$11, q$$8) === 1;\n}\nexport function BigNatModule$$$lte(p$$12, q$$9) {\n return BigNatModule$$$compare(p$$12, q$$9) !== 1;\n}\nexport function BigNatModule$$$gte(p$$13, q$$10) {\n return BigNatModule$$$compare(p$$13, q$$10) !== -1;\n}\nexport function BigNatModule$$$min(a$$2, b$$5) {\n if (BigNatModule$$$lt(a$$2, b$$5)) {\n return a$$2;\n } else {\n return b$$5;\n }\n}\nexport function BigNatModule$$$max(a$$3, b$$6) {\n if (BigNatModule$$$lt(a$$3, b$$6)) {\n return b$$6;\n } else {\n return a$$3;\n }\n}\nexport function BigNatModule$$$contributeArr($a$$4$$123, $i$$25$$124, $c$$5$$125) {\n BigNatModule$$$contributeArr: while (true) {\n const a$$4 = $a$$4$$123,\n i$$25 = $i$$25$$124,\n c$$5 = $c$$5$$125;\n const x$$35 = op_Addition(fromInteger(a$$4[i$$25], false, 2), c$$5);\n const c$$6 = op_Division(x$$35, BigNatModule$$$baseNi64);\n let x$$38;\n const value = op_BitwiseAnd(x$$35, BigNatModule$$$baseMaski64);\n x$$38 = ~~toInt(value);\n a$$4[i$$25] = x$$38;\n\n if (compare(c$$6, fromBits(0, 0, false)) > 0) {\n $a$$4$$123 = a$$4;\n $i$$25$$124 = i$$25 + 1;\n $c$$5$$125 = c$$6;\n continue BigNatModule$$$contributeArr;\n } else {\n void null;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$scale(k$$2, p$$14) {\n const rbound$$2 = p$$14.bound + BigNatModule$$$boundInt | 0;\n const r$$9 = BigNatModule$$$createN(rbound$$2);\n const k$$3 = fromInteger(k$$2, false, 2);\n\n for (let i$$26 = 0; i$$26 <= p$$14.bound - 1; i$$26++) {\n const kpi = op_Multiply(k$$3, fromInteger(p$$14.digits[i$$26], false, 2));\n BigNatModule$$$contributeArr(r$$9.digits, i$$26, kpi);\n }\n\n return BigNatModule$$$normN(r$$9);\n}\nexport function BigNatModule$$$mulSchoolBookBothSmall(p$$15, q$$11) {\n var value$$1;\n const r$$11 = BigNatModule$$$createN(2);\n const rak = op_Multiply(fromInteger(p$$15, false, 2), fromInteger(q$$11, false, 2));\n BigNatModule$$$setCoeff(r$$11, 0, (value$$1 = op_BitwiseAnd(rak, BigNatModule$$$baseMaski64), (~~toInt(value$$1))));\n BigNatModule$$$setCoeff(r$$11, 1, ~~toInt(op_Division(rak, BigNatModule$$$baseNi64)));\n return BigNatModule$$$normN(r$$11);\n}\nexport function BigNatModule$$$mulSchoolBookCarry($r$$12$$130, $c$$8$$131, $k$$4$$132) {\n var value$$2;\n\n BigNatModule$$$mulSchoolBookCarry: while (true) {\n const r$$12 = $r$$12$$130,\n c$$8 = $c$$8$$131,\n k$$4 = $k$$4$$132;\n\n if (compare(c$$8, fromBits(0, 0, false)) > 0) {\n const rak$$1 = op_Addition(BigNatModule$$$coeff64(r$$12, k$$4), c$$8);\n BigNatModule$$$setCoeff(r$$12, k$$4, (value$$2 = op_BitwiseAnd(rak$$1, BigNatModule$$$baseMaski64), (~~toInt(value$$2))));\n $r$$12$$130 = r$$12;\n $c$$8$$131 = op_Division(rak$$1, BigNatModule$$$baseNi64);\n $k$$4$$132 = k$$4 + 1;\n continue BigNatModule$$$mulSchoolBookCarry;\n } else {\n void null;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$mulSchoolBookOneSmall(p$$16, q$$12) {\n var value$$3;\n const bp = BigNatModule$$$bound(p$$16) | 0;\n const rbound$$3 = bp + 1 | 0;\n const r$$13 = BigNatModule$$$createN(rbound$$3);\n const q$$13 = fromInteger(q$$12, false, 2);\n let c$$9 = fromBits(0, 0, false);\n\n for (let i$$28 = 0; i$$28 <= bp - 1; i$$28++) {\n const rak$$2 = op_Addition(op_Addition(c$$9, BigNatModule$$$coeff64(r$$13, i$$28)), op_Multiply(BigNatModule$$$coeff64(p$$16, i$$28), q$$13));\n BigNatModule$$$setCoeff(r$$13, i$$28, (value$$3 = op_BitwiseAnd(rak$$2, BigNatModule$$$baseMaski64), (~~toInt(value$$3))));\n c$$9 = op_Division(rak$$2, BigNatModule$$$baseNi64);\n }\n\n BigNatModule$$$mulSchoolBookCarry(r$$13, c$$9, bp);\n return BigNatModule$$$normN(r$$13);\n}\nexport function BigNatModule$$$mulSchoolBookNeitherSmall(p$$17, q$$14) {\n var value$$4;\n const rbound$$4 = p$$17.bound + q$$14.bound | 0;\n const r$$14 = BigNatModule$$$createN(rbound$$4);\n\n for (let i$$29 = 0; i$$29 <= p$$17.bound - 1; i$$29++) {\n const pai$$1 = fromInteger(p$$17.digits[i$$29], false, 2);\n let c$$10 = fromBits(0, 0, false);\n let k$$5 = i$$29 | 0;\n\n for (let j$$1 = 0; j$$1 <= q$$14.bound - 1; j$$1++) {\n const qaj = fromInteger(q$$14.digits[j$$1], false, 2);\n const rak$$3 = op_Addition(op_Addition(fromInteger(r$$14.digits[k$$5], false, 2), c$$10), op_Multiply(pai$$1, qaj));\n r$$14.digits[k$$5] = (value$$4 = op_BitwiseAnd(rak$$3, BigNatModule$$$baseMaski64), (~~toInt(value$$4)));\n c$$10 = op_Division(rak$$3, BigNatModule$$$baseNi64);\n k$$5 = k$$5 + 1;\n }\n\n BigNatModule$$$mulSchoolBookCarry(r$$14, c$$10, k$$5);\n }\n\n return BigNatModule$$$normN(r$$14);\n}\nexport function BigNatModule$$$mulSchoolBook(p$$18, q$$15) {\n const pSmall = BigNatModule$$$bound(p$$18) === 1;\n const qSmall = BigNatModule$$$bound(q$$15) === 1;\n\n if (pSmall ? qSmall : false) {\n return BigNatModule$$$mulSchoolBookBothSmall(BigNatModule$$$coeff(p$$18, 0), BigNatModule$$$coeff(q$$15, 0));\n } else if (pSmall) {\n return BigNatModule$$$mulSchoolBookOneSmall(q$$15, BigNatModule$$$coeff(p$$18, 0));\n } else if (qSmall) {\n return BigNatModule$$$mulSchoolBookOneSmall(p$$18, BigNatModule$$$coeff(q$$15, 0));\n } else {\n return BigNatModule$$$mulSchoolBookNeitherSmall(p$$18, q$$15);\n }\n}\nexport const BigNatModule$002Eencoding = declare(function BigInt_BigNatModule_encoding(bigL, twoToBigL, k, bigK, bigN, split, splits) {\n this.bigL = bigL | 0;\n this.twoToBigL = twoToBigL | 0;\n this.k = k | 0;\n this.bigK = bigK | 0;\n this.bigN = bigN | 0;\n this.split = split | 0;\n this.splits = splits;\n}, Record);\nexport function BigNatModule$002Eencoding$reflection() {\n return record_type(\"BigInt.BigNatModule.encoding\", [], BigNatModule$002Eencoding, () => [[\"bigL\", int32_type], [\"twoToBigL\", int32_type], [\"k\", int32_type], [\"bigK\", int32_type], [\"bigN\", int32_type], [\"split\", int32_type], [\"splits\", array_type(int32_type)]]);\n}\nexport function BigNatModule$$$mkEncoding(bigL, k$$6, bigK$$2, bigN) {\n return new BigNatModule$002Eencoding(bigL, BigNatModule$$$pow32(2, bigL), k$$6, bigK$$2, bigN, ~~(BigNatModule$$$baseBits / bigL), initialize(~~(BigNatModule$$$baseBits / bigL), function (i$$30) {\n return BigNatModule$$$pow32(2, bigL * i$$30);\n }, Int32Array));\n}\nexport const BigNatModule$$$table = [BigNatModule$$$mkEncoding(1, 28, 268435456, 268435456), BigNatModule$$$mkEncoding(2, 26, 67108864, 134217728), BigNatModule$$$mkEncoding(3, 24, 16777216, 50331648), BigNatModule$$$mkEncoding(4, 22, 4194304, 16777216), BigNatModule$$$mkEncoding(5, 20, 1048576, 5242880), BigNatModule$$$mkEncoding(6, 18, 262144, 1572864), BigNatModule$$$mkEncoding(7, 16, 65536, 458752), BigNatModule$$$mkEncoding(8, 14, 16384, 131072), BigNatModule$$$mkEncoding(9, 12, 4096, 36864), BigNatModule$$$mkEncoding(10, 10, 1024, 10240), BigNatModule$$$mkEncoding(11, 8, 256, 2816), BigNatModule$$$mkEncoding(12, 6, 64, 768), BigNatModule$$$mkEncoding(13, 4, 16, 208)];\nexport function BigNatModule$$$calculateTableTow(bigL$$1) {\n const k$$7 = BigNatModule$002EFFT$$$maxBitsInsideFp - 2 * bigL$$1 | 0;\n const bigK$$3 = BigNatModule$$$pow64(fromBits(2, 0, false), k$$7);\n const N = op_Multiply(bigK$$3, fromInteger(bigL$$1, false, 2));\n return [bigL$$1, k$$7, bigK$$3, N];\n}\nexport function BigNatModule$$$encodingGivenResultBits(bitsRes) {\n const selectFrom = function selectFrom($i$$31$$145) {\n selectFrom: while (true) {\n const i$$31 = $i$$31$$145;\n\n if (i$$31 + 1 < BigNatModule$$$table.length ? bitsRes < BigNatModule$$$table[i$$31 + 1].bigN : false) {\n $i$$31$$145 = i$$31 + 1;\n continue selectFrom;\n } else {\n return BigNatModule$$$table[i$$31];\n }\n\n break;\n }\n };\n\n if (bitsRes >= BigNatModule$$$table[0].bigN) {\n throw new Error(\"Product is huge, around 268435456 bits, beyond quickmul\");\n } else {\n return selectFrom(0);\n }\n}\nexport const BigNatModule$$$bitmask = initialize(BigNatModule$$$baseBits, function (i$$32) {\n return BigNatModule$$$pow32(2, i$$32) - 1;\n}, Int32Array);\nexport const BigNatModule$$$twopowers = initialize(BigNatModule$$$baseBits, function (i$$33) {\n return BigNatModule$$$pow32(2, i$$33);\n}, Int32Array);\nexport const BigNatModule$$$twopowersI64 = initialize(BigNatModule$$$baseBits, function (i$$34) {\n return BigNatModule$$$pow64(fromBits(2, 0, false), i$$34);\n}, Array);\nexport function BigNatModule$$$wordBits(word) {\n const hi = function hi($k$$8$$147) {\n hi: while (true) {\n const k$$8 = $k$$8$$147;\n\n if (k$$8 === 0) {\n return 0;\n } else if ((word & BigNatModule$$$twopowers[k$$8 - 1]) !== 0) {\n return k$$8 | 0;\n } else {\n $k$$8$$147 = k$$8 - 1;\n continue hi;\n }\n\n break;\n }\n };\n\n return hi(BigNatModule$$$baseBits) | 0;\n}\nexport function BigNatModule$$$bits(u$$6) {\n if (u$$6.bound === 0) {\n return 0;\n } else {\n return BigNatModule$$$degree(u$$6) * BigNatModule$$$baseBits + BigNatModule$$$wordBits(u$$6.digits[BigNatModule$$$degree(u$$6)]) | 0;\n }\n}\nexport function BigNatModule$$$extractBits(n$$27, enc, bi) {\n const bj = bi + enc.bigL - 1 | 0;\n const biw = ~~(bi / BigNatModule$$$baseBits) | 0;\n const bjw = ~~(bj / BigNatModule$$$baseBits) | 0;\n\n if (biw !== bjw) {\n const x$$47 = (biw < n$$27.bound ? n$$27.digits[biw] : 0) | 0;\n const y$$17 = (bjw < n$$27.bound ? n$$27.digits[bjw] : 0) | 0;\n const xbit = bi % BigNatModule$$$baseBits | 0;\n const nxbits = BigNatModule$$$baseBits - xbit | 0;\n const x$$48 = x$$47 >> xbit | 0;\n const y$$18 = y$$17 << nxbits | 0;\n const x$$49 = x$$48 | y$$18 | 0;\n const x$$50 = x$$49 & BigNatModule$$$bitmask[enc.bigL] | 0;\n return x$$50 | 0;\n } else {\n const x$$51 = (biw < n$$27.bound ? n$$27.digits[biw] : 0) | 0;\n const xbit$$1 = bi % BigNatModule$$$baseBits | 0;\n const x$$52 = x$$51 >> xbit$$1 | 0;\n const x$$53 = x$$52 & BigNatModule$$$bitmask[enc.bigL] | 0;\n return x$$53 | 0;\n }\n}\nexport function BigNatModule$$$encodePoly(enc$$1, n$$28) {\n const poly = fill(new Uint32Array(enc$$1.bigK), 0, enc$$1.bigK, BigNatModule$002EFFT$002EFp$$$ofInt32(0));\n const biMax = n$$28.bound * BigNatModule$$$baseBits | 0;\n\n const encoder = function encoder($i$$38$$154, $bi$$1$$155) {\n encoder: while (true) {\n const i$$38 = $i$$38$$154,\n bi$$1 = $bi$$1$$155;\n\n if (i$$38 === enc$$1.bigK ? true : bi$$1 > biMax) {\n void null;\n } else {\n const pi = BigNatModule$$$extractBits(n$$28, enc$$1, bi$$1) | 0;\n poly[i$$38] = BigNatModule$002EFFT$002EFp$$$ofInt32(pi);\n const i$$39 = i$$38 + 1 | 0;\n const bi$$2 = bi$$1 + enc$$1.bigL | 0;\n $i$$38$$154 = i$$39;\n $bi$$1$$155 = bi$$2;\n continue encoder;\n }\n\n break;\n }\n };\n\n encoder(0, 0);\n return poly;\n}\nexport function BigNatModule$$$decodeResultBits(enc$$2, poly$$1) {\n let n$$29 = 0;\n\n for (let i$$40 = 0; i$$40 <= poly$$1.length - 1; i$$40++) {\n if (poly$$1[i$$40] !== BigNatModule$002EFFT$$$mzero) {\n n$$29 = i$$40;\n } else {\n void null;\n }\n }\n\n const rbits = BigNatModule$002EFFT$$$maxBitsInsideFp + enc$$2.bigL * n$$29 + 1 | 0;\n return rbits + 1 | 0;\n}\nexport function BigNatModule$$$decodePoly(enc$$3, poly$$2) {\n const rbound$$5 = ~~(BigNatModule$$$decodeResultBits(enc$$3, poly$$2) / BigNatModule$$$baseBits) + 1 | 0;\n const r$$15 = BigNatModule$$$createN(rbound$$5);\n\n const evaluate = function evaluate($i$$41$$160, $j$$2$$161, $d$$3$$162) {\n evaluate: while (true) {\n const i$$41 = $i$$41$$160,\n j$$2 = $j$$2$$161,\n d$$3 = $d$$3$$162;\n\n if (i$$41 === enc$$3.bigK) {\n void null;\n } else {\n if (j$$2 >= rbound$$5) {\n void null;\n } else {\n const x$$54 = op_Multiply(fromInteger(BigNatModule$002EFFT$002EFp$$$toInt(poly$$2[i$$41]), false, 2), BigNatModule$$$twopowersI64[d$$3]);\n BigNatModule$$$contributeArr(r$$15.digits, j$$2, x$$54);\n }\n\n const i$$43 = i$$41 + 1 | 0;\n const d$$4 = d$$3 + enc$$3.bigL | 0;\n const patternInput$$1 = d$$4 >= BigNatModule$$$baseBits ? [j$$2 + 1, d$$4 - BigNatModule$$$baseBits] : [j$$2, d$$4];\n $i$$41$$160 = i$$43;\n $j$$2$$161 = patternInput$$1[0];\n $d$$3$$162 = patternInput$$1[1];\n continue evaluate;\n }\n\n break;\n }\n };\n\n evaluate(0, 0, 0);\n return BigNatModule$$$normN(r$$15);\n}\nexport function BigNatModule$$$quickMulUsingFft(u$$7, v$$5) {\n const bitsRes$$1 = BigNatModule$$$bits(u$$7) + BigNatModule$$$bits(v$$5) | 0;\n const enc$$4 = BigNatModule$$$encodingGivenResultBits(bitsRes$$1);\n const upoly = BigNatModule$$$encodePoly(enc$$4, u$$7);\n const vpoly = BigNatModule$$$encodePoly(enc$$4, v$$5);\n const rpoly = BigNatModule$002EFFT$$$computeFftPaddedPolynomialProduct(enc$$4.bigK, enc$$4.k, upoly, vpoly);\n const r$$17 = BigNatModule$$$decodePoly(enc$$4, rpoly);\n return BigNatModule$$$normN(r$$17);\n}\nexport const BigNatModule$$$minDigitsKaratsuba = 16;\nexport function BigNatModule$$$recMulKaratsuba(mul, p$$19, q$$16) {\n const bp$$1 = p$$19.bound | 0;\n const bq = q$$16.bound | 0;\n const bmax = BigNatModule$$$maxInt(bp$$1, bq) | 0;\n\n if (bmax > BigNatModule$$$minDigitsKaratsuba) {\n const k$$9 = ~~(bmax / 2) | 0;\n const a0 = BigNatModule$$$restrictTo(k$$9, p$$19);\n const a1 = BigNatModule$$$shiftDown(k$$9, p$$19);\n const b0 = BigNatModule$$$restrictTo(k$$9, q$$16);\n const b1 = BigNatModule$$$shiftDown(k$$9, q$$16);\n const q0 = mul(a0, b0);\n const q1 = mul(BigNatModule$$$add(a0, a1), BigNatModule$$$add(b0, b1));\n const q2 = mul(a1, b1);\n const p1 = BigNatModule$$$sub(q1, BigNatModule$$$add(q0, q2));\n const r$$18 = BigNatModule$$$add(q0, BigNatModule$$$shiftUp(k$$9, BigNatModule$$$add(p1, BigNatModule$$$shiftUp(k$$9, q2))));\n return r$$18;\n } else {\n return BigNatModule$$$mulSchoolBook(p$$19, q$$16);\n }\n}\nexport function BigNatModule$$$mulKaratsuba(x$$55, y$$19) {\n return BigNatModule$$$recMulKaratsuba(BigNatModule$$$mulKaratsuba, x$$55, y$$19);\n}\nexport const BigNatModule$$$productDigitsUpperSchoolBook = ~~(64000 / BigNatModule$$$baseBits);\nexport const BigNatModule$$$singleDigitForceSchoolBook = ~~(32000 / BigNatModule$$$baseBits);\nexport const BigNatModule$$$productDigitsUpperFft = ~~(BigNatModule$$$table[0].bigN / BigNatModule$$$baseBits);\nexport function BigNatModule$$$mul(p$$20, q$$17) {\n return BigNatModule$$$mulSchoolBook(p$$20, q$$17);\n}\nexport function BigNatModule$$$scaleSubInPlace(x$$57, f, a$$5, n$$30) {\n const patternInput$$2 = [x$$57.digits, BigNatModule$$$degree(x$$57)];\n const patternInput$$3 = [a$$5.digits, BigNatModule$$$degree(a$$5)];\n const f$$1 = fromInteger(f, false, 2);\n let j$$4 = 0;\n let z$$7 = op_Multiply(f$$1, fromInteger(patternInput$$3[0][0], false, 2));\n\n while (compare(z$$7, fromBits(0, 0, false)) > 0 ? true : j$$4 < patternInput$$3[1]) {\n if (j$$4 > patternInput$$2[1]) {\n throw new Error(\"scaleSubInPlace: pre-condition did not apply, result would be -ve\");\n } else {\n void null;\n }\n\n let zLo;\n let value$$6;\n const x$$59 = z$$7;\n const value$$5 = op_BitwiseAnd(x$$59, BigNatModule$$$baseMaski64);\n value$$6 = ~~toInt(value$$5);\n zLo = value$$6;\n let zHi;\n const x$$60 = z$$7;\n zHi = op_Division(x$$60, BigNatModule$$$baseNi64);\n\n if (zLo <= patternInput$$2[0][j$$4 + n$$30]) {\n patternInput$$2[0][j$$4 + n$$30] = patternInput$$2[0][j$$4 + n$$30] - zLo;\n } else {\n patternInput$$2[0][j$$4 + n$$30] = patternInput$$2[0][j$$4 + n$$30] + (BigNatModule$$$baseN - zLo);\n zHi = op_Addition(zHi, fromBits(1, 0, false));\n }\n\n if (j$$4 < patternInput$$3[1]) {\n z$$7 = op_Addition(zHi, op_Multiply(f$$1, fromInteger(patternInput$$3[0][j$$4 + 1], false, 2)));\n } else {\n z$$7 = zHi;\n }\n\n j$$4 = j$$4 + 1;\n }\n\n void BigNatModule$$$normN(x$$57);\n}\nexport function BigNatModule$$$scaleSub(x$$61, f$$2, a$$7, n$$31) {\n const freshx = BigNatModule$$$add(x$$61, BigNatModule$$$zero);\n BigNatModule$$$scaleSubInPlace(freshx, f$$2, a$$7, n$$31);\n return BigNatModule$$$normN(freshx);\n}\nexport function BigNatModule$$$scaleAddInPlace(x$$62, f$$3, a$$8, n$$32) {\n const patternInput$$4 = [x$$62.digits, BigNatModule$$$degree(x$$62)];\n const patternInput$$5 = [a$$8.digits, BigNatModule$$$degree(a$$8)];\n const f$$4 = fromInteger(f$$3, false, 2);\n let j$$5 = 0;\n let z$$8 = op_Multiply(f$$4, fromInteger(patternInput$$5[0][0], false, 2));\n\n while (compare(z$$8, fromBits(0, 0, false)) > 0 ? true : j$$5 < patternInput$$5[1]) {\n if (j$$5 > patternInput$$4[1]) {\n throw new Error(\"scaleSubInPlace: pre-condition did not apply, result would be -ve\");\n } else {\n void null;\n }\n\n let zLo$$1;\n let value$$8;\n const x$$64 = z$$8;\n const value$$7 = op_BitwiseAnd(x$$64, BigNatModule$$$baseMaski64);\n value$$8 = ~~toInt(value$$7);\n zLo$$1 = value$$8;\n let zHi$$1;\n const x$$65 = z$$8;\n zHi$$1 = op_Division(x$$65, BigNatModule$$$baseNi64);\n\n if (zLo$$1 < BigNatModule$$$baseN - patternInput$$4[0][j$$5 + n$$32]) {\n patternInput$$4[0][j$$5 + n$$32] = patternInput$$4[0][j$$5 + n$$32] + zLo$$1;\n } else {\n patternInput$$4[0][j$$5 + n$$32] = zLo$$1 - (BigNatModule$$$baseN - patternInput$$4[0][j$$5 + n$$32]);\n zHi$$1 = op_Addition(zHi$$1, fromBits(1, 0, false));\n }\n\n if (j$$5 < patternInput$$5[1]) {\n z$$8 = op_Addition(zHi$$1, op_Multiply(f$$4, fromInteger(patternInput$$5[0][j$$5 + 1], false, 2)));\n } else {\n z$$8 = zHi$$1;\n }\n\n j$$5 = j$$5 + 1;\n }\n\n void BigNatModule$$$normN(x$$62);\n}\nexport function BigNatModule$$$scaleAdd(x$$66, f$$5, a$$10, n$$33) {\n const freshx$$1 = BigNatModule$$$add(x$$66, BigNatModule$$$zero);\n BigNatModule$$$scaleAddInPlace(freshx$$1, f$$5, a$$10, n$$33);\n return BigNatModule$$$normN(freshx$$1);\n}\nexport function BigNatModule$$$removeFactor(x$$67, a$$11, n$$34) {\n const patternInput$$6 = [BigNatModule$$$degree(a$$11), BigNatModule$$$degree(x$$67)];\n\n if (patternInput$$6[1] < patternInput$$6[0] + n$$34) {\n return 0;\n } else {\n let f$$6;\n\n if (patternInput$$6[0] === 0) {\n if (patternInput$$6[1] === n$$34) {\n f$$6 = ~~(x$$67.digits[n$$34] / a$$11.digits[0]);\n } else {\n const f64 = op_Division(op_Addition(op_Multiply(fromInteger(x$$67.digits[patternInput$$6[1]], false, 2), BigNatModule$$$baseNi64), fromInteger(x$$67.digits[patternInput$$6[1] - 1], false, 2)), fromInteger(a$$11.digits[0], false, 2));\n f$$6 = ~~toInt(f64);\n }\n } else if (patternInput$$6[1] === patternInput$$6[0] + n$$34) {\n f$$6 = ~~(x$$67.digits[patternInput$$6[1]] / (a$$11.digits[patternInput$$6[0]] + 1));\n } else {\n const f64$$1 = op_Division(op_Addition(op_Multiply(fromInteger(x$$67.digits[patternInput$$6[1]], false, 2), BigNatModule$$$baseNi64), fromInteger(x$$67.digits[patternInput$$6[1] - 1], false, 2)), op_Addition(fromInteger(a$$11.digits[patternInput$$6[0]], false, 2), fromBits(1, 0, false)));\n f$$6 = ~~toInt(f64$$1);\n }\n\n if (f$$6 === 0) {\n const lte = BigNatModule$$$shiftCompare(a$$11, n$$34, x$$67, 0) !== 1;\n\n if (lte) {\n return 1;\n } else {\n return 0;\n }\n } else {\n return f$$6 | 0;\n }\n }\n}\nexport function BigNatModule$$$divmod(b$$7, a$$12) {\n if (BigNatModule$$$isZero(a$$12)) {\n throw new Error();\n } else if (BigNatModule$$$degree(b$$7) < BigNatModule$$$degree(a$$12)) {\n return [BigNatModule$$$zero, b$$7];\n } else {\n const x$$68 = BigNatModule$$$copyN(b$$7);\n const d$$6 = BigNatModule$$$createN(BigNatModule$$$degree(b$$7) - BigNatModule$$$degree(a$$12) + 1 + 1);\n let p$$21 = BigNatModule$$$degree(b$$7) | 0;\n const m$$2 = BigNatModule$$$degree(a$$12) | 0;\n let n$$35 = p$$21 - m$$2 | 0;\n\n const Invariant = function Invariant(tupledArg) {\n void null;\n };\n\n let finished = false;\n\n while (!finished) {\n Invariant([d$$6, x$$68, n$$35, p$$21]);\n const f$$7 = BigNatModule$$$removeFactor(x$$68, a$$12, n$$35) | 0;\n\n if (f$$7 > 0) {\n BigNatModule$$$scaleSubInPlace(x$$68, f$$7, a$$12, n$$35);\n BigNatModule$$$scaleAddInPlace(d$$6, f$$7, BigNatModule$$$one, n$$35);\n Invariant([d$$6, x$$68, n$$35, p$$21]);\n } else {\n finished = f$$7 === 0 ? n$$35 === 0 : false;\n\n if (!finished) {\n if (p$$21 === m$$2 + n$$35) {\n Invariant([d$$6, x$$68, n$$35 - 1, p$$21]);\n n$$35 = n$$35 - 1;\n } else {\n Invariant([d$$6, x$$68, n$$35 - 1, p$$21 - 1]);\n n$$35 = n$$35 - 1;\n p$$21 = p$$21 - 1;\n }\n } else {\n void null;\n }\n }\n }\n\n return [BigNatModule$$$normN(d$$6), BigNatModule$$$normN(x$$68)];\n }\n}\nexport function BigNatModule$$$div(b$$8, a$$13) {\n return BigNatModule$$$divmod(b$$8, a$$13)[0];\n}\nexport function BigNatModule$$$rem(b$$9, a$$14) {\n return BigNatModule$$$divmod(b$$9, a$$14)[1];\n}\nexport function BigNatModule$$$bitAnd(a$$15, b$$10) {\n const rbound$$6 = BigNatModule$$$minInt(a$$15.bound, b$$10.bound) | 0;\n const r$$19 = BigNatModule$$$createN(rbound$$6);\n\n for (let i$$44 = 0; i$$44 <= r$$19.bound - 1; i$$44++) {\n r$$19.digits[i$$44] = a$$15.digits[i$$44] & b$$10.digits[i$$44];\n }\n\n return BigNatModule$$$normN(r$$19);\n}\nexport function BigNatModule$$$bitOr(a$$16, b$$11) {\n const rbound$$7 = BigNatModule$$$maxInt(a$$16.bound, b$$11.bound) | 0;\n const r$$20 = BigNatModule$$$createN(rbound$$7);\n\n for (let i$$45 = 0; i$$45 <= a$$16.bound - 1; i$$45++) {\n r$$20.digits[i$$45] = r$$20.digits[i$$45] | a$$16.digits[i$$45];\n }\n\n for (let i$$46 = 0; i$$46 <= b$$11.bound - 1; i$$46++) {\n r$$20.digits[i$$46] = r$$20.digits[i$$46] | b$$11.digits[i$$46];\n }\n\n return BigNatModule$$$normN(r$$20);\n}\nexport function BigNatModule$$$bitXor(a$$17, b$$12) {\n const rbound$$8 = BigNatModule$$$maxInt(a$$17.bound, b$$12.bound) | 0;\n const r$$21 = BigNatModule$$$createN(rbound$$8);\n\n for (let i$$47 = 0; i$$47 <= a$$17.bound - 1; i$$47++) {\n r$$21.digits[i$$47] = r$$21.digits[i$$47] ^ a$$17.digits[i$$47];\n }\n\n for (let i$$48 = 0; i$$48 <= b$$12.bound - 1; i$$48++) {\n r$$21.digits[i$$48] = r$$21.digits[i$$48] ^ b$$12.digits[i$$48];\n }\n\n return BigNatModule$$$normN(r$$21);\n}\nexport function BigNatModule$$$hcf(a$$18, b$$13) {\n const hcfloop = function hcfloop($a$$19$$206, $b$$14$$207) {\n hcfloop: while (true) {\n const a$$19 = $a$$19$$206,\n b$$14 = $b$$14$$207;\n\n if (BigNatModule$$$equal(BigNatModule$$$zero, a$$19)) {\n return b$$14;\n } else {\n const patternInput$$8 = BigNatModule$$$divmod(b$$14, a$$19);\n $a$$19$$206 = patternInput$$8[1];\n $b$$14$$207 = a$$19;\n continue hcfloop;\n }\n\n break;\n }\n };\n\n if (BigNatModule$$$lt(a$$18, b$$13)) {\n return hcfloop(a$$18, b$$13);\n } else {\n return hcfloop(b$$13, a$$18);\n }\n}\nexport const BigNatModule$$$two = BigNatModule$$$embed(2);\nexport function BigNatModule$$$powi(x$$69, n$$36) {\n const power = function power($acc$$2$$210, $x$$70$$211, $n$$37$$212) {\n power: while (true) {\n const acc$$2 = $acc$$2$$210,\n x$$70 = $x$$70$$211,\n n$$37 = $n$$37$$212;\n\n if (n$$37 === 0) {\n return acc$$2;\n } else if (n$$37 % 2 === 0) {\n $acc$$2$$210 = acc$$2;\n $x$$70$$211 = BigNatModule$$$mul(x$$70, x$$70);\n $n$$37$$212 = ~~(n$$37 / 2);\n continue power;\n } else {\n $acc$$2$$210 = BigNatModule$$$mul(x$$70, acc$$2);\n $x$$70$$211 = BigNatModule$$$mul(x$$70, x$$70);\n $n$$37$$212 = ~~(n$$37 / 2);\n continue power;\n }\n\n break;\n }\n };\n\n return power(BigNatModule$$$one, x$$69, n$$36);\n}\nexport function BigNatModule$$$pow(x$$71, n$$38) {\n const power$$1 = function power$$1($acc$$3$$215, $x$$72$$216, $n$$39$$217) {\n power$$1: while (true) {\n const acc$$3 = $acc$$3$$215,\n x$$72 = $x$$72$$216,\n n$$39 = $n$$39$$217;\n\n if (BigNatModule$$$isZero(n$$39)) {\n return acc$$3;\n } else {\n const patternInput$$9 = BigNatModule$$$divmod(n$$39, BigNatModule$$$two);\n\n if (BigNatModule$$$isZero(patternInput$$9[1])) {\n $acc$$3$$215 = acc$$3;\n $x$$72$$216 = BigNatModule$$$mul(x$$72, x$$72);\n $n$$39$$217 = patternInput$$9[0];\n continue power$$1;\n } else {\n $acc$$3$$215 = BigNatModule$$$mul(x$$72, acc$$3);\n $x$$72$$216 = BigNatModule$$$mul(x$$72, x$$72);\n $n$$39$$217 = patternInput$$9[0];\n continue power$$1;\n }\n }\n\n break;\n }\n };\n\n return power$$1(BigNatModule$$$one, x$$71, n$$38);\n}\nexport function BigNatModule$$$toFloat(n$$40) {\n const basef = BigNatModule$$$baseN;\n\n const evalFloat = function evalFloat($acc$$4$$219, $k$$10$$220, $i$$49$$221) {\n evalFloat: while (true) {\n const acc$$4 = $acc$$4$$219,\n k$$10 = $k$$10$$220,\n i$$49 = $i$$49$$221;\n\n if (i$$49 === n$$40.bound) {\n return acc$$4;\n } else {\n $acc$$4$$219 = acc$$4 + k$$10 * n$$40.digits[i$$49];\n $k$$10$$220 = k$$10 * basef;\n $i$$49$$221 = i$$49 + 1;\n continue evalFloat;\n }\n\n break;\n }\n };\n\n return evalFloat(0, 1, 0);\n}\nexport function BigNatModule$$$ofInt32(n$$41) {\n return BigNatModule$$$embed(n$$41);\n}\nexport function BigNatModule$$$ofInt64(n$$42) {\n return BigNatModule$$$embed64(n$$42);\n}\nexport function BigNatModule$$$toUInt32(n$$43) {\n const matchValue = n$$43.bound | 0;\n\n switch (matchValue) {\n case 0:\n {\n return 0;\n }\n\n case 1:\n {\n const value$$9 = n$$43.digits[0] | 0;\n return value$$9 >>> 0;\n }\n\n case 2:\n {\n const patternInput$$10 = [n$$43.digits[0], n$$43.digits[1]];\n\n if (patternInput$$10[1] > BigNatModule$$$baseMask32B) {\n throw new Error();\n } else {\n void null;\n }\n\n return ((patternInput$$10[0] & BigNatModule$$$baseMask32A) >>> 0) + ((patternInput$$10[1] & BigNatModule$$$baseMask32B) >>> 0 << BigNatModule$$$baseShift32B >>> 0);\n }\n\n default:\n {\n throw new Error();\n }\n }\n}\nexport function BigNatModule$$$toUInt64(n$$44) {\n const matchValue$$1 = n$$44.bound | 0;\n\n switch (matchValue$$1) {\n case 0:\n {\n return fromBits(0, 0, true);\n }\n\n case 1:\n {\n const value$$10 = n$$44.digits[0] | 0;\n return fromInteger(value$$10, true, 2);\n }\n\n case 2:\n {\n const patternInput$$11 = [n$$44.digits[0], n$$44.digits[1]];\n return op_Addition(fromInteger(patternInput$$11[0] & BigNatModule$$$baseMask64A, true, 2), op_LeftShift(fromInteger(patternInput$$11[1] & BigNatModule$$$baseMask64B, true, 2), BigNatModule$$$baseShift64B));\n }\n\n case 3:\n {\n const patternInput$$12 = [n$$44.digits[0], n$$44.digits[1], n$$44.digits[2]];\n\n if (patternInput$$12[2] > BigNatModule$$$baseMask64C) {\n throw new Error();\n } else {\n void null;\n }\n\n return op_Addition(op_Addition(fromInteger(patternInput$$12[0] & BigNatModule$$$baseMask64A, true, 2), op_LeftShift(fromInteger(patternInput$$12[1] & BigNatModule$$$baseMask64B, true, 2), BigNatModule$$$baseShift64B)), op_LeftShift(fromInteger(patternInput$$12[2] & BigNatModule$$$baseMask64C, true, 2), BigNatModule$$$baseShift64C));\n }\n\n default:\n {\n throw new Error();\n }\n }\n}\nexport function BigNatModule$$$toString(n$$45) {\n const degn = BigNatModule$$$degree(n$$45) | 0;\n\n const route = function route($prior$$227, $k$$11$$228, $ten2k$$229) {\n route: while (true) {\n const prior = $prior$$227,\n k$$11 = $k$$11$$228,\n ten2k = $ten2k$$229;\n\n if (BigNatModule$$$degree(ten2k) > degn) {\n return new List([k$$11, ten2k], prior);\n } else {\n $prior$$227 = new List([k$$11, ten2k], prior);\n $k$$11$$228 = k$$11 + 1;\n $ten2k$$229 = BigNatModule$$$mul(ten2k, ten2k);\n continue route;\n }\n\n break;\n }\n };\n\n const kten2ks = route(new List(), 0, BigNatModule$$$embed(10));\n\n const collect = function collect(isLeading, digits, n$$46, _arg1$$1) {\n if (_arg1$$1.tail != null) {\n const patternInput$$13 = BigNatModule$$$divmod(n$$46, _arg1$$1.head[1]);\n\n if (isLeading ? BigNatModule$$$isZero(patternInput$$13[0]) : false) {\n const digits$$1 = collect(isLeading, digits, patternInput$$13[1], _arg1$$1.tail);\n return digits$$1;\n } else {\n const digits$$2 = collect(false, digits, patternInput$$13[1], _arg1$$1.tail);\n const digits$$3 = collect(isLeading, digits$$2, patternInput$$13[0], _arg1$$1.tail);\n return digits$$3;\n }\n } else {\n const n$$47 = BigNatModule$$$eval32(n$$46) | 0;\n\n if (isLeading ? n$$47 === 0 : false) {\n return digits;\n } else {\n return new List(int32ToString(n$$47), digits);\n }\n }\n };\n\n const digits$$4 = collect(true, new List(), n$$45, kten2ks);\n\n if (digits$$4.tail == null) {\n return \"0\";\n } else {\n let arg00;\n arg00 = ofList(digits$$4, Array);\n return join(\"\", arg00);\n }\n}\nexport function BigNatModule$$$ofString(str) {\n const len = str.length | 0;\n\n if (isNullOrEmpty(str)) {\n throw new Error(\"empty string\\\\nParameter name: str\");\n } else {\n void null;\n }\n\n const ten = BigNatModule$$$embed(10);\n\n const build = function build($acc$$5$$235, $i$$50$$236) {\n build: while (true) {\n const acc$$5 = $acc$$5$$235,\n i$$50 = $i$$50$$236;\n\n if (i$$50 === len) {\n return acc$$5;\n } else {\n const c$$12 = str[i$$50];\n const d$$7 = c$$12.charCodeAt(0) - \"0\".charCodeAt(0) | 0;\n\n if (0 <= d$$7 ? d$$7 <= 9 : false) {\n $acc$$5$$235 = BigNatModule$$$add(BigNatModule$$$mul(ten, acc$$5), BigNatModule$$$embed(d$$7));\n $i$$50$$236 = i$$50 + 1;\n continue build;\n } else {\n throw new Error();\n }\n }\n\n break;\n }\n };\n\n return build(BigNatModule$$$embed(0), 0);\n}\nexport function BigNatModule$$$isSmall(n$$48) {\n return n$$48.bound <= 1;\n}\nexport function BigNatModule$$$getSmall(n$$49) {\n if (0 < n$$49.bound) {\n return n$$49.digits[0] | 0;\n } else {\n return 0;\n }\n}\nexport function BigNatModule$$$factorial(n$$50) {\n const productR = function productR(a$$20, b$$15) {\n if (BigNatModule$$$equal(a$$20, b$$15)) {\n return a$$20;\n } else {\n const m$$3 = BigNatModule$$$div(BigNatModule$$$add(a$$20, b$$15), BigNatModule$$$ofInt32(2));\n return BigNatModule$$$mul(productR(a$$20, m$$3), productR(BigNatModule$$$add(m$$3, BigNatModule$$$one), b$$15));\n }\n };\n\n return productR(BigNatModule$$$one, n$$50);\n}","import { declare, Record } from \"../Types.js\";\nimport { class_type } from \"../Reflection.js\";\nimport { BigNatModule$$$factorial as BigNatModule$0024$0024$0024factorial, BigNatModule$$$ofString as BigNatModule$0024$0024$0024ofString, BigNatModule$$$toFloat as BigNatModule$0024$0024$0024toFloat, BigNatModule$$$toUInt64 as BigNatModule$0024$0024$0024toUInt64, BigNatModule$$$toUInt32 as BigNatModule$0024$0024$0024toUInt32, BigNatModule$$$pow as BigNatModule$0024$0024$0024pow, BigNatModule$$$rem as BigNatModule$0024$0024$0024rem, BigNatModule$$$two as BigNatModule$0024$0024$0024two, BigNatModule$$$lte as BigNatModule$0024$0024$0024lte, BigNatModule$$$hcf as BigNatModule$0024$0024$0024hcf, BigNatModule$$$bitXor as BigNatModule$0024$0024$0024bitXor, BigNatModule$$$bitOr as BigNatModule$0024$0024$0024bitOr, BigNatModule$$$bitAnd as BigNatModule$0024$0024$0024bitAnd, BigNatModule$$$divmod as BigNatModule$0024$0024$0024divmod, BigNatModule$$$mul as BigNatModule$0024$0024$0024mul, BigNatModule$$$isOne as BigNatModule$0024$0024$0024isOne, BigNatModule$$$sub as BigNatModule$0024$0024$0024sub, BigNatModule$$$gte as BigNatModule$0024$0024$0024gte, BigNatModule$$$scale as BigNatModule$0024$0024$0024scale, BigNatModule$$$add as BigNatModule$0024$0024$0024add, BigNatModule$$$one as BigNatModule$0024$0024$0024one, BigNatModule$$$ofInt64 as BigNatModule$0024$0024$0024ofInt64, BigNatModule$$$toString as BigNatModule$0024$0024$0024toString, BigNatModule$$$hash as BigNatModule$0024$0024$0024hash, BigNatModule$$$gt as BigNatModule$0024$0024$0024gt, BigNatModule$$$lt as BigNatModule$0024$0024$0024lt, BigNatModule$$$isZero as BigNatModule$0024$0024$0024isZero, BigNatModule$$$equal as BigNatModule$0024$0024$0024equal, BigNatModule$$$getSmall as BigNatModule$0024$0024$0024getSmall, BigNatModule$$$isSmall as BigNatModule$0024$0024$0024isSmall, BigNatModule$$$ofInt32 as BigNatModule$0024$0024$0024ofInt32 } from \"./n\";\nimport { initialize } from \"../Array.js\";\nimport { op_Addition, op_Multiply, fromValue, equals, compare, fromBits, op_UnaryNegation, fromInteger } from \"../Long.js\";\nimport { op_UnaryNegation_Int32 } from \"../Int32.js\";\nimport Decimal from \"../Decimal.js\";\nexport const BigInteger = declare(function BigInt_BigInteger(signInt, v) {\n const $this$$1 = this;\n void null;\n $this$$1.signInt = signInt;\n $this$$1.v = v;\n void null;\n}, Record);\nexport function BigInteger$reflection() {\n return class_type(\"BigInt.BigInteger\", undefined, BigInteger);\n}\nexport function BigInteger$$$$002Ector$$Z2BE94A1(signInt, v) {\n return this instanceof BigInteger ? BigInteger.call(this, signInt, v) : new BigInteger(signInt, v);\n}\n\n(function BigInteger$$$$002Ecctor() {\n BigInteger.smallLim = 4096;\n BigInteger.smallPosTab = initialize(BigInteger.smallLim, BigNatModule$0024$0024$0024ofInt32, Array);\n BigInteger.one = BigInteger$$$$002Ector$$Z524259A4(1);\n BigInteger.two = BigInteger$$$$002Ector$$Z524259A4(2);\n BigInteger.zero = BigInteger$$$$002Ector$$Z524259A4(0);\n void null;\n})();\n\nexport function BigInteger$$$nat$$Z67CCE57D(n$$1) {\n if (BigNatModule$0024$0024$0024isSmall(n$$1) ? BigNatModule$0024$0024$0024getSmall(n$$1) < BigInteger.smallLim : false) {\n return BigInteger.smallPosTab[BigNatModule$0024$0024$0024getSmall(n$$1)];\n } else {\n return n$$1;\n }\n}\nexport function BigInteger$$$create$$Z2BE94A1(s, n$$2) {\n return BigInteger$$$$002Ector$$Z2BE94A1(s, BigInteger$$$nat$$Z67CCE57D(n$$2));\n}\nexport function BigInteger$$$posn$$Z67CCE57D(n$$3) {\n return BigInteger$$$$002Ector$$Z2BE94A1(1, BigInteger$$$nat$$Z67CCE57D(n$$3));\n}\nexport function BigInteger$$$negn$$Z67CCE57D(n$$4) {\n return BigInteger$$$$002Ector$$Z2BE94A1(-1, BigInteger$$$nat$$Z67CCE57D(n$$4));\n}\nexport function BigInteger$$get_Sign(x) {\n if (BigInteger$$get_IsZero(x)) {\n return 0;\n } else {\n return x.signInt | 0;\n }\n}\nexport function BigInteger$$get_SignInt(x$$1) {\n return x$$1.signInt;\n}\nexport function BigInteger$$get_V(x$$2) {\n return x$$2.v;\n}\nexport function BigInteger$$$op_Equality$$56F059C0(x$$3, y) {\n const matchValue = [BigInteger$$get_SignInt(x$$3), BigInteger$$get_SignInt(y)];\n var $target$$12;\n\n if (matchValue[0] === -1) {\n if (matchValue[1] === -1) {\n $target$$12 = 1;\n } else if (matchValue[1] === 0) {\n $target$$12 = 8;\n } else if (matchValue[1] === 1) {\n $target$$12 = 3;\n } else {\n $target$$12 = 9;\n }\n } else if (matchValue[0] === 0) {\n if (matchValue[1] === -1) {\n $target$$12 = 6;\n } else if (matchValue[1] === 0) {\n $target$$12 = 4;\n } else if (matchValue[1] === 1) {\n $target$$12 = 5;\n } else {\n $target$$12 = 9;\n }\n } else if (matchValue[0] === 1) {\n if (matchValue[1] === -1) {\n $target$$12 = 2;\n } else if (matchValue[1] === 0) {\n $target$$12 = 7;\n } else if (matchValue[1] === 1) {\n $target$$12 = 0;\n } else {\n $target$$12 = 9;\n }\n } else {\n $target$$12 = 9;\n }\n\n switch ($target$$12) {\n case 0:\n {\n return BigNatModule$0024$0024$0024equal(BigInteger$$get_V(x$$3), BigInteger$$get_V(y));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024equal(BigInteger$$get_V(x$$3), BigInteger$$get_V(y));\n }\n\n case 2:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n } else {\n return false;\n }\n }\n\n case 3:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n } else {\n return false;\n }\n }\n\n case 4:\n {\n return true;\n }\n\n case 5:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n }\n\n case 6:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n }\n\n case 7:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3));\n }\n\n case 8:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3));\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$op_Inequality$$56F059C0(x$$4, y$$1) {\n return !BigInteger$$$op_Equality$$56F059C0(x$$4, y$$1);\n}\nexport function BigInteger$$$op_LessThan$$56F059C0(x$$5, y$$2) {\n const matchValue$$1 = [BigInteger$$get_SignInt(x$$5), BigInteger$$get_SignInt(y$$2)];\n var $target$$17;\n\n if (matchValue$$1[0] === -1) {\n if (matchValue$$1[1] === -1) {\n $target$$17 = 1;\n } else if (matchValue$$1[1] === 0) {\n $target$$17 = 8;\n } else if (matchValue$$1[1] === 1) {\n $target$$17 = 3;\n } else {\n $target$$17 = 9;\n }\n } else if (matchValue$$1[0] === 0) {\n if (matchValue$$1[1] === -1) {\n $target$$17 = 6;\n } else if (matchValue$$1[1] === 0) {\n $target$$17 = 4;\n } else if (matchValue$$1[1] === 1) {\n $target$$17 = 5;\n } else {\n $target$$17 = 9;\n }\n } else if (matchValue$$1[0] === 1) {\n if (matchValue$$1[1] === -1) {\n $target$$17 = 2;\n } else if (matchValue$$1[1] === 0) {\n $target$$17 = 7;\n } else if (matchValue$$1[1] === 1) {\n $target$$17 = 0;\n } else {\n $target$$17 = 9;\n }\n } else {\n $target$$17 = 9;\n }\n\n switch ($target$$17) {\n case 0:\n {\n return BigNatModule$0024$0024$0024lt(BigInteger$$get_V(x$$5), BigInteger$$get_V(y$$2));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024lt(BigInteger$$get_V(y$$2), BigInteger$$get_V(x$$5));\n }\n\n case 2:\n {\n return false;\n }\n\n case 3:\n {\n if (!BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$5))) {\n return true;\n } else {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$2));\n }\n }\n\n case 4:\n {\n return false;\n }\n\n case 5:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$2));\n }\n\n case 6:\n {\n return false;\n }\n\n case 7:\n {\n return false;\n }\n\n case 8:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$5));\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$op_GreaterThan$$56F059C0(x$$6, y$$3) {\n const matchValue$$2 = [BigInteger$$get_SignInt(x$$6), BigInteger$$get_SignInt(y$$3)];\n var $target$$20;\n\n if (matchValue$$2[0] === -1) {\n if (matchValue$$2[1] === -1) {\n $target$$20 = 1;\n } else if (matchValue$$2[1] === 0) {\n $target$$20 = 8;\n } else if (matchValue$$2[1] === 1) {\n $target$$20 = 3;\n } else {\n $target$$20 = 9;\n }\n } else if (matchValue$$2[0] === 0) {\n if (matchValue$$2[1] === -1) {\n $target$$20 = 6;\n } else if (matchValue$$2[1] === 0) {\n $target$$20 = 4;\n } else if (matchValue$$2[1] === 1) {\n $target$$20 = 5;\n } else {\n $target$$20 = 9;\n }\n } else if (matchValue$$2[0] === 1) {\n if (matchValue$$2[1] === -1) {\n $target$$20 = 2;\n } else if (matchValue$$2[1] === 0) {\n $target$$20 = 7;\n } else if (matchValue$$2[1] === 1) {\n $target$$20 = 0;\n } else {\n $target$$20 = 9;\n }\n } else {\n $target$$20 = 9;\n }\n\n switch ($target$$20) {\n case 0:\n {\n return BigNatModule$0024$0024$0024gt(BigInteger$$get_V(x$$6), BigInteger$$get_V(y$$3));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024gt(BigInteger$$get_V(y$$3), BigInteger$$get_V(x$$6));\n }\n\n case 2:\n {\n if (!BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$6))) {\n return true;\n } else {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$3));\n }\n }\n\n case 3:\n {\n return false;\n }\n\n case 4:\n {\n return false;\n }\n\n case 5:\n {\n return false;\n }\n\n case 6:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$3));\n }\n\n case 7:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$6));\n }\n\n case 8:\n {\n return false;\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$compare$$56F059C0(n$$5, nn) {\n if (BigInteger$$$op_LessThan$$56F059C0(n$$5, nn)) {\n return -1 | 0;\n } else if (BigInteger$$$op_Equality$$56F059C0(n$$5, nn)) {\n return 0;\n } else {\n return 1;\n }\n}\nexport function BigInteger$$$hash$$Z665282C2(z) {\n if (BigInteger$$get_SignInt(z) === 0) {\n return 1;\n } else {\n return BigInteger$$get_SignInt(z) + BigNatModule$0024$0024$0024hash(BigInteger$$get_V(z)) | 0;\n }\n}\n\nBigInteger.prototype.toString = function () {\n const x$$7 = this;\n const matchValue$$3 = BigInteger$$get_SignInt(x$$7) | 0;\n\n switch (matchValue$$3) {\n case -1:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$7)) ? \"0\" : \"-\" + BigNatModule$0024$0024$0024toString(BigInteger$$get_V(x$$7));\n }\n\n case 0:\n {\n return \"0\";\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024toString(BigInteger$$get_V(x$$7));\n }\n\n default:\n {\n throw new Error(\"signs should be +/- 1 or 0\");\n }\n }\n};\n\nexport function BigInteger$$get_StructuredDisplayString(x$$8) {\n return String(x$$8);\n}\n\nBigInteger.prototype.Equals = function (obj) {\n const this$ = this;\n return obj instanceof BigInteger ? BigInteger$$$op_Equality$$56F059C0(this$, obj) : false;\n};\n\nBigInteger.prototype.GetHashCode = function () {\n const x$$9 = this;\n return BigInteger$$$hash$$Z665282C2(x$$9) | 0;\n};\n\nexport function BigInteger$$$$002Ector$$Z524259A4(n$$6) {\n if (n$$6 >= 0) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, 1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt32(n$$6)));\n } else if (n$$6 === -2147483648) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt64(op_UnaryNegation(fromInteger(n$$6, false, 2)))));\n } else {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt32(op_UnaryNegation_Int32(n$$6))));\n }\n}\nexport function BigInteger$$$$002Ector$$Z524259C1(n$$7) {\n if (compare(n$$7, fromBits(0, 0, false)) >= 0) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, 1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt64(n$$7)));\n } else if (equals(n$$7, fromBits(0, 2147483648, false))) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024add(BigNatModule$0024$0024$0024ofInt64(fromBits(4294967295, 2147483647, false)), BigNatModule$0024$0024$0024one)));\n } else {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt64(op_UnaryNegation(n$$7))));\n }\n}\nexport function BigInteger$$$get_One() {\n return BigInteger.one;\n}\nexport function BigInteger$$$get_Two() {\n return BigInteger.two;\n}\nexport function BigInteger$$$get_Zero() {\n return BigInteger.zero;\n}\nexport function BigInteger$$$op_UnaryNegation$$Z665282C2(z$$1) {\n const matchValue$$4 = BigInteger$$get_SignInt(z$$1) | 0;\n\n if (matchValue$$4 === 0) {\n return BigInteger$$$get_Zero();\n } else {\n return BigInteger$$$create$$Z2BE94A1(op_UnaryNegation_Int32(matchValue$$4), BigInteger$$get_V(z$$1));\n }\n}\nexport function BigInteger$$$Scale$$Z320F31E(k, z$$2) {\n if (BigInteger$$get_SignInt(z$$2) === 0) {\n return BigInteger$$$get_Zero();\n } else if (k < 0) {\n return BigInteger$$$create$$Z2BE94A1(op_UnaryNegation_Int32(BigInteger$$get_SignInt(z$$2)), BigNatModule$0024$0024$0024scale(op_UnaryNegation_Int32(k), BigInteger$$get_V(z$$2)));\n } else {\n return BigInteger$$$create$$Z2BE94A1(BigInteger$$get_SignInt(z$$2), BigNatModule$0024$0024$0024scale(k, BigInteger$$get_V(z$$2)));\n }\n}\nexport function BigInteger$$$subnn$$6A57060(nx, ny) {\n if (BigNatModule$0024$0024$0024gte(nx, ny)) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024sub(nx, ny));\n } else {\n return BigInteger$$$negn$$Z67CCE57D(BigNatModule$0024$0024$0024sub(ny, nx));\n }\n}\nexport function BigInteger$$$addnn$$6A57060(nx$$1, ny$$1) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024add(nx$$1, ny$$1));\n}\nexport function BigInteger$$get_IsZero(x$$10) {\n if (BigInteger$$get_SignInt(x$$10) === 0) {\n return true;\n } else {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$10));\n }\n}\nexport function BigInteger$$get_IsOne(x$$11) {\n if (BigInteger$$get_SignInt(x$$11) === 1) {\n return BigNatModule$0024$0024$0024isOne(BigInteger$$get_V(x$$11));\n } else {\n return false;\n }\n}\nexport function BigInteger$$$op_Addition$$56F059C0(x$$12, y$$4) {\n if (BigInteger$$get_IsZero(y$$4)) {\n return x$$12;\n } else if (BigInteger$$get_IsZero(x$$12)) {\n return y$$4;\n } else {\n const matchValue$$5 = [BigInteger$$get_SignInt(x$$12), BigInteger$$get_SignInt(y$$4)];\n var $target$$38;\n\n if (matchValue$$5[0] === -1) {\n if (matchValue$$5[1] === -1) {\n $target$$38 = 1;\n } else if (matchValue$$5[1] === 1) {\n $target$$38 = 3;\n } else {\n $target$$38 = 4;\n }\n } else if (matchValue$$5[0] === 1) {\n if (matchValue$$5[1] === -1) {\n $target$$38 = 2;\n } else if (matchValue$$5[1] === 1) {\n $target$$38 = 0;\n } else {\n $target$$38 = 4;\n }\n } else {\n $target$$38 = 4;\n }\n\n switch ($target$$38) {\n case 0:\n {\n return BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$12), BigInteger$$get_V(y$$4));\n }\n\n case 1:\n {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$12), BigInteger$$get_V(y$$4)));\n }\n\n case 2:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(x$$12), BigInteger$$get_V(y$$4));\n }\n\n case 3:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(y$$4), BigInteger$$get_V(x$$12));\n }\n\n case 4:\n {\n throw new Error(\"signs should be +/- 1\\\\nParameter name: x\");\n }\n }\n }\n}\nexport function BigInteger$$$op_Subtraction$$56F059C0(x$$13, y$$5) {\n if (BigInteger$$get_IsZero(y$$5)) {\n return x$$13;\n } else if (BigInteger$$get_IsZero(x$$13)) {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(y$$5);\n } else {\n const matchValue$$6 = [BigInteger$$get_SignInt(x$$13), BigInteger$$get_SignInt(y$$5)];\n var $target$$41;\n\n if (matchValue$$6[0] === -1) {\n if (matchValue$$6[1] === -1) {\n $target$$41 = 1;\n } else if (matchValue$$6[1] === 1) {\n $target$$41 = 3;\n } else {\n $target$$41 = 4;\n }\n } else if (matchValue$$6[0] === 1) {\n if (matchValue$$6[1] === -1) {\n $target$$41 = 2;\n } else if (matchValue$$6[1] === 1) {\n $target$$41 = 0;\n } else {\n $target$$41 = 4;\n }\n } else {\n $target$$41 = 4;\n }\n\n switch ($target$$41) {\n case 0:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(x$$13), BigInteger$$get_V(y$$5));\n }\n\n case 1:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(y$$5), BigInteger$$get_V(x$$13));\n }\n\n case 2:\n {\n return BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$13), BigInteger$$get_V(y$$5));\n }\n\n case 3:\n {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$13), BigInteger$$get_V(y$$5)));\n }\n\n case 4:\n {\n throw new Error(\"signs should be +/- 1\\\\nParameter name: x\");\n }\n }\n }\n}\nexport function BigInteger$$$op_Multiply$$56F059C0(x$$14, y$$6) {\n if (BigInteger$$get_IsZero(x$$14)) {\n return x$$14;\n } else if (BigInteger$$get_IsZero(y$$6)) {\n return y$$6;\n } else if (BigInteger$$get_IsOne(x$$14)) {\n return y$$6;\n } else if (BigInteger$$get_IsOne(y$$6)) {\n return x$$14;\n } else {\n const m = BigNatModule$0024$0024$0024mul(BigInteger$$get_V(x$$14), BigInteger$$get_V(y$$6));\n return BigInteger$$$create$$Z2BE94A1(BigInteger$$get_SignInt(x$$14) * BigInteger$$get_SignInt(y$$6), m);\n }\n}\nexport function BigInteger$$$DivRem$$56F059C0(x$$15, y$$7) {\n if (BigInteger$$get_IsZero(y$$7)) {\n throw new Error();\n } else {\n void null;\n }\n\n if (BigInteger$$get_IsZero(x$$15)) {\n return [BigInteger$$$get_Zero(), BigInteger$$$get_Zero()];\n } else {\n const patternInput = BigNatModule$0024$0024$0024divmod(BigInteger$$get_V(x$$15), BigInteger$$get_V(y$$7));\n const matchValue$$7 = [BigInteger$$get_SignInt(x$$15), BigInteger$$get_SignInt(y$$7)];\n var $target$$46;\n\n if (matchValue$$7[0] === -1) {\n if (matchValue$$7[1] === -1) {\n $target$$46 = 1;\n } else if (matchValue$$7[1] === 1) {\n $target$$46 = 3;\n } else {\n $target$$46 = 4;\n }\n } else if (matchValue$$7[0] === 1) {\n if (matchValue$$7[1] === -1) {\n $target$$46 = 2;\n } else if (matchValue$$7[1] === 1) {\n $target$$46 = 0;\n } else {\n $target$$46 = 4;\n }\n } else {\n $target$$46 = 4;\n }\n\n switch ($target$$46) {\n case 0:\n {\n return [BigInteger$$$posn$$Z67CCE57D(patternInput[0]), BigInteger$$$posn$$Z67CCE57D(patternInput[1])];\n }\n\n case 1:\n {\n return [BigInteger$$$posn$$Z67CCE57D(patternInput[0]), BigInteger$$$negn$$Z67CCE57D(patternInput[1])];\n }\n\n case 2:\n {\n return [BigInteger$$$negn$$Z67CCE57D(patternInput[0]), BigInteger$$$posn$$Z67CCE57D(patternInput[1])];\n }\n\n case 3:\n {\n return [BigInteger$$$negn$$Z67CCE57D(patternInput[0]), BigInteger$$$negn$$Z67CCE57D(patternInput[1])];\n }\n\n case 4:\n {\n throw new Error(\"signs should be +/- 1\\\\nParameter name: x\");\n }\n }\n }\n}\nexport function BigInteger$$$op_Division$$56F059C0(x$$16, y$$8) {\n const tuple = BigInteger$$$DivRem$$56F059C0(x$$16, y$$8);\n return tuple[0];\n}\nexport function BigInteger$$$op_Modulus$$56F059C0(x$$17, y$$9) {\n const tuple$$1 = BigInteger$$$DivRem$$56F059C0(x$$17, y$$9);\n return tuple$$1[1];\n}\nexport function BigInteger$$$op_RightShift$$62E082A2(x$$18, y$$10) {\n return BigInteger$$$op_Division$$56F059C0(x$$18, BigInteger$$$Pow$$62E082A2(BigInteger$$$get_Two(), y$$10));\n}\nexport function BigInteger$$$op_LeftShift$$62E082A2(x$$19, y$$11) {\n return BigInteger$$$op_Multiply$$56F059C0(x$$19, BigInteger$$$Pow$$62E082A2(BigInteger$$$get_Two(), y$$11));\n}\nexport function BigInteger$$$op_BitwiseAnd$$56F059C0(x$$20, y$$12) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024bitAnd(BigInteger$$get_V(x$$20), BigInteger$$get_V(y$$12)));\n}\nexport function BigInteger$$$op_BitwiseOr$$56F059C0(x$$21, y$$13) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024bitOr(BigInteger$$get_V(x$$21), BigInteger$$get_V(y$$13)));\n}\nexport function BigInteger$$$op_ExclusiveOr$$56F059C0(x$$22, y$$14) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024bitXor(BigInteger$$get_V(x$$22), BigInteger$$get_V(y$$14)));\n}\nexport function BigInteger$$$GreatestCommonDivisor$$56F059C0(x$$23, y$$15) {\n const matchValue$$8 = [BigInteger$$get_SignInt(x$$23), BigInteger$$get_SignInt(y$$15)];\n\n if (matchValue$$8[0] === 0) {\n if (matchValue$$8[1] === 0) {\n return BigInteger$$$get_Zero();\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigInteger$$get_V(y$$15));\n }\n } else if (matchValue$$8[1] === 0) {\n return BigInteger$$$posn$$Z67CCE57D(BigInteger$$get_V(x$$23));\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024hcf(BigInteger$$get_V(x$$23), BigInteger$$get_V(y$$15)));\n }\n}\nexport function BigInteger$$get_IsNegative(x$$24) {\n if (BigInteger$$get_SignInt(x$$24) === -1) {\n return !BigInteger$$get_IsZero(x$$24);\n } else {\n return false;\n }\n}\nexport function BigInteger$$get_IsPositive(x$$25) {\n if (BigInteger$$get_SignInt(x$$25) === 1) {\n return !BigInteger$$get_IsZero(x$$25);\n } else {\n return false;\n }\n}\nexport function BigInteger$$$Abs$$Z665282C2(x$$26) {\n if (BigInteger$$get_SignInt(x$$26) === -1) {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(x$$26);\n } else {\n return x$$26;\n }\n}\nexport function BigInteger$$$op_LessThanOrEqual$$56F059C0(x$$27, y$$16) {\n const matchValue$$9 = [BigInteger$$get_SignInt(x$$27), BigInteger$$get_SignInt(y$$16)];\n var $target$$68;\n\n if (matchValue$$9[0] === -1) {\n if (matchValue$$9[1] === -1) {\n $target$$68 = 1;\n } else if (matchValue$$9[1] === 0) {\n $target$$68 = 6;\n } else if (matchValue$$9[1] === 1) {\n $target$$68 = 3;\n } else {\n $target$$68 = 9;\n }\n } else if (matchValue$$9[0] === 0) {\n if (matchValue$$9[1] === -1) {\n $target$$68 = 8;\n } else if (matchValue$$9[1] === 0) {\n $target$$68 = 4;\n } else if (matchValue$$9[1] === 1) {\n $target$$68 = 7;\n } else {\n $target$$68 = 9;\n }\n } else if (matchValue$$9[0] === 1) {\n if (matchValue$$9[1] === -1) {\n $target$$68 = 2;\n } else if (matchValue$$9[1] === 0) {\n $target$$68 = 5;\n } else if (matchValue$$9[1] === 1) {\n $target$$68 = 0;\n } else {\n $target$$68 = 9;\n }\n } else {\n $target$$68 = 9;\n }\n\n switch ($target$$68) {\n case 0:\n {\n return BigNatModule$0024$0024$0024lte(BigInteger$$get_V(x$$27), BigInteger$$get_V(y$$16));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024lte(BigInteger$$get_V(y$$16), BigInteger$$get_V(x$$27));\n }\n\n case 2:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$27))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$16));\n } else {\n return false;\n }\n }\n\n case 3:\n {\n return true;\n }\n\n case 4:\n {\n return true;\n }\n\n case 5:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$27));\n }\n\n case 6:\n {\n return true;\n }\n\n case 7:\n {\n return true;\n }\n\n case 8:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$16));\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$op_GreaterThanOrEqual$$56F059C0(x$$28, y$$17) {\n const matchValue$$10 = [BigInteger$$get_SignInt(x$$28), BigInteger$$get_SignInt(y$$17)];\n var $target$$71;\n\n if (matchValue$$10[0] === -1) {\n if (matchValue$$10[1] === -1) {\n $target$$71 = 1;\n } else if (matchValue$$10[1] === 0) {\n $target$$71 = 6;\n } else if (matchValue$$10[1] === 1) {\n $target$$71 = 3;\n } else {\n $target$$71 = 9;\n }\n } else if (matchValue$$10[0] === 0) {\n if (matchValue$$10[1] === -1) {\n $target$$71 = 8;\n } else if (matchValue$$10[1] === 0) {\n $target$$71 = 4;\n } else if (matchValue$$10[1] === 1) {\n $target$$71 = 7;\n } else {\n $target$$71 = 9;\n }\n } else if (matchValue$$10[0] === 1) {\n if (matchValue$$10[1] === -1) {\n $target$$71 = 2;\n } else if (matchValue$$10[1] === 0) {\n $target$$71 = 5;\n } else if (matchValue$$10[1] === 1) {\n $target$$71 = 0;\n } else {\n $target$$71 = 9;\n }\n } else {\n $target$$71 = 9;\n }\n\n switch ($target$$71) {\n case 0:\n {\n return BigNatModule$0024$0024$0024gte(BigInteger$$get_V(x$$28), BigInteger$$get_V(y$$17));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024gte(BigInteger$$get_V(y$$17), BigInteger$$get_V(x$$28));\n }\n\n case 2:\n {\n return true;\n }\n\n case 3:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$28))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$17));\n } else {\n return false;\n }\n }\n\n case 4:\n {\n return true;\n }\n\n case 5:\n {\n return true;\n }\n\n case 6:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$28));\n }\n\n case 7:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$17));\n }\n\n case 8:\n {\n return true;\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$Pow$$62E082A2(x$$29, y$$18) {\n if (y$$18 < 0) {\n throw new Error(\"y\");\n } else {\n void null;\n }\n\n const matchValue$$11 = [BigInteger$$get_IsZero(x$$29), y$$18];\n\n if (matchValue$$11[0]) {\n if (matchValue$$11[1] === 0) {\n return BigInteger$$$get_One();\n } else {\n return BigInteger$$$get_Zero();\n }\n } else {\n const yval = BigInteger$$$$002Ector$$Z524259A4(y$$18);\n return BigInteger$$$create$$Z2BE94A1(BigNatModule$0024$0024$0024isZero(BigNatModule$0024$0024$0024rem(BigInteger$$get_V(yval), BigNatModule$0024$0024$0024two)) ? 1 : BigInteger$$get_SignInt(x$$29), BigNatModule$0024$0024$0024pow(BigInteger$$get_V(x$$29), BigInteger$$get_V(yval)));\n }\n}\nexport function BigInteger$$get_ToInt32(x$$30) {\n if (BigInteger$$get_IsZero(x$$30)) {\n return 0;\n } else {\n const u = BigNatModule$0024$0024$0024toUInt32(BigInteger$$get_V(x$$30));\n\n if (u <= 2147483647 >>> 0) {\n return BigInteger$$get_SignInt(x$$30) * ~~u | 0;\n } else if (BigInteger$$get_SignInt(x$$30) === -1 ? u === 2147483647 + 1 >>> 0 : false) {\n return -2147483648 | 0;\n } else {\n throw new Error();\n }\n }\n}\nexport function BigInteger$$get_ToUInt32(x$$31) {\n if (BigInteger$$get_IsZero(x$$31)) {\n return 0;\n } else {\n return BigNatModule$0024$0024$0024toUInt32(BigInteger$$get_V(x$$31));\n }\n}\nexport function BigInteger$$get_ToInt64(x$$32) {\n if (BigInteger$$get_IsZero(x$$32)) {\n return fromBits(0, 0, false);\n } else {\n const u$$1 = BigNatModule$0024$0024$0024toUInt64(BigInteger$$get_V(x$$32));\n\n if (compare(u$$1, fromValue(fromBits(4294967295, 2147483647, false), true)) <= 0) {\n return op_Multiply(fromInteger(BigInteger$$get_SignInt(x$$32), false, 2), fromValue(u$$1, false));\n } else if (BigInteger$$get_SignInt(x$$32) === -1 ? equals(u$$1, fromValue(op_Addition(fromBits(4294967295, 2147483647, false), fromBits(1, 0, false)), true)) : false) {\n return fromBits(0, 2147483648, false);\n } else {\n throw new Error();\n }\n }\n}\nexport function BigInteger$$get_ToUInt64(x$$33) {\n if (BigInteger$$get_IsZero(x$$33)) {\n return fromBits(0, 0, true);\n } else {\n return BigNatModule$0024$0024$0024toUInt64(BigInteger$$get_V(x$$33));\n }\n}\nexport function BigInteger$$get_ToDouble(x$$34) {\n const matchValue$$12 = BigInteger$$get_SignInt(x$$34) | 0;\n\n switch (matchValue$$12) {\n case -1:\n {\n return -BigNatModule$0024$0024$0024toFloat(BigInteger$$get_V(x$$34));\n }\n\n case 0:\n {\n return 0;\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024toFloat(BigInteger$$get_V(x$$34));\n }\n\n default:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$get_ToSByte(x$$35) {\n return (BigInteger$$get_ToInt32(x$$35) + 0x80 & 0xFF) - 0x80;\n}\nexport function BigInteger$$get_ToByte(x$$36) {\n return BigInteger$$get_ToUInt32(x$$36) & 0xFF;\n}\nexport function BigInteger$$get_ToInt16(x$$37) {\n return (BigInteger$$get_ToInt32(x$$37) + 0x8000 & 0xFFFF) - 0x8000;\n}\nexport function BigInteger$$get_ToUInt16(x$$38) {\n return BigInteger$$get_ToUInt32(x$$38) & 0xFFFF;\n}\nexport function BigInteger$$get_ToSingle(x$$39) {\n return BigInteger$$get_ToDouble(x$$39);\n}\nexport function BigInteger$$get_ToDecimal(x$$40) {\n return new Decimal(BigInteger$$get_ToDouble(x$$40));\n}\nexport function BigInteger$$$Parse$$Z721C83C5(text) {\n if (text == null) {\n throw new Error(\"text\");\n } else {\n void null;\n }\n\n const text$$1 = text.trim();\n const len = text$$1.length | 0;\n\n if (len === 0) {\n throw new Error();\n } else {\n void null;\n }\n\n const matchValue$$13 = [text$$1[0], len];\n\n if (matchValue$$13[0] === \"+\") {\n if (matchValue$$13[1] === 1) {\n throw new Error();\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024ofString(text$$1.slice(1, len - 1 + 1)));\n }\n } else if (matchValue$$13[0] === \"-\") {\n if (matchValue$$13[1] === 1) {\n throw new Error();\n } else {\n return BigInteger$$$negn$$Z67CCE57D(BigNatModule$0024$0024$0024ofString(text$$1.slice(1, len - 1 + 1)));\n }\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024ofString(text$$1));\n }\n}\nexport function BigInteger$$get_IsSmall(x$$41) {\n if (BigInteger$$get_IsZero(x$$41)) {\n return true;\n } else {\n return BigNatModule$0024$0024$0024isSmall(BigInteger$$get_V(x$$41));\n }\n}\nexport function BigInteger$$$Factorial$$Z665282C2(x$$42) {\n if (BigInteger$$get_IsNegative(x$$42)) {\n throw new Error(\"mustBeNonNegative\\\\nParameter name: x\");\n } else {\n void null;\n }\n\n if (BigInteger$$get_IsPositive(x$$42)) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024factorial(BigInteger$$get_V(x$$42)));\n } else {\n return BigInteger$$$get_One();\n }\n}\nexport function BigInteger$$$op_UnaryPlus$$Z665282C2(n1) {\n return n1;\n}\nexport function BigInteger$$$FromInt64$$Z524259C1(x$$43) {\n return BigInteger$$$$002Ector$$Z524259C1(x$$43);\n}\nexport function BigInteger$$$FromInt32$$Z524259A4(x$$44) {\n return BigInteger$$$$002Ector$$Z524259A4(x$$44);\n}\n\nBigInteger.prototype.CompareTo = function (obj$$1) {\n const this$$$1 = this;\n\n if (obj$$1 instanceof BigInteger) {\n return BigInteger$$$compare$$56F059C0(this$$$1, obj$$1) | 0;\n } else {\n throw new Error(\"the objects are not comparable\\\\nParameter name: obj\");\n }\n};","import { BigInteger$$$op_Inequality$$56F059C0 as BigInteger$0024$0024$0024op_Inequality$0024$002456F059C0, BigInteger$$$op_Equality$$56F059C0 as BigInteger$0024$0024$0024op_Equality$0024$002456F059C0, BigInteger$$$op_GreaterThanOrEqual$$56F059C0 as BigInteger$0024$0024$0024op_GreaterThanOrEqual$0024$002456F059C0, BigInteger$$$op_GreaterThan$$56F059C0 as BigInteger$0024$0024$0024op_GreaterThan$0024$002456F059C0, BigInteger$$$op_LessThanOrEqual$$56F059C0 as BigInteger$0024$0024$0024op_LessThanOrEqual$0024$002456F059C0, BigInteger$$$op_LessThan$$56F059C0 as BigInteger$0024$0024$0024op_LessThan$0024$002456F059C0, BigInteger$$$op_ExclusiveOr$$56F059C0 as BigInteger$0024$0024$0024op_ExclusiveOr$0024$002456F059C0, BigInteger$$$op_BitwiseOr$$56F059C0 as BigInteger$0024$0024$0024op_BitwiseOr$0024$002456F059C0, BigInteger$$$op_BitwiseAnd$$56F059C0 as BigInteger$0024$0024$0024op_BitwiseAnd$0024$002456F059C0, BigInteger$$$op_LeftShift$$62E082A2 as BigInteger$0024$0024$0024op_LeftShift$0024$002462E082A2, BigInteger$$$op_RightShift$$62E082A2 as BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2, BigInteger$$$op_UnaryPlus$$Z665282C2 as BigInteger$0024$0024$0024op_UnaryPlus$0024$0024Z665282C2, BigInteger$$$op_UnaryNegation$$Z665282C2 as BigInteger$0024$0024$0024op_UnaryNegation$0024$0024Z665282C2, BigInteger$$$op_Modulus$$56F059C0 as BigInteger$0024$0024$0024op_Modulus$0024$002456F059C0, BigInteger$$$op_Division$$56F059C0 as BigInteger$0024$0024$0024op_Division$0024$002456F059C0, BigInteger$$$op_Multiply$$56F059C0 as BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0, BigInteger$$$op_Subtraction$$56F059C0 as BigInteger$0024$0024$0024op_Subtraction$0024$002456F059C0, BigInteger$$$op_Addition$$56F059C0 as BigInteger$0024$0024$0024op_Addition$0024$002456F059C0, BigInteger$$get_IsOne as BigInteger$0024$0024get_IsOne, BigInteger$$get_IsZero as BigInteger$0024$0024get_IsZero, BigInteger$$get_Sign as BigInteger$0024$0024get_Sign, BigInteger$$get_ToDecimal as BigInteger$0024$0024get_ToDecimal, BigInteger$$get_ToDouble as BigInteger$0024$0024get_ToDouble, BigInteger$$get_ToSingle as BigInteger$0024$0024get_ToSingle, BigInteger$$get_ToUInt64 as BigInteger$0024$0024get_ToUInt64, BigInteger$$get_ToInt64 as BigInteger$0024$0024get_ToInt64, BigInteger$$get_ToUInt32 as BigInteger$0024$0024get_ToUInt32, BigInteger$$get_ToInt32 as BigInteger$0024$0024get_ToInt32, BigInteger$$get_ToUInt16 as BigInteger$0024$0024get_ToUInt16, BigInteger$$get_ToInt16 as BigInteger$0024$0024get_ToInt16, BigInteger$$get_ToByte as BigInteger$0024$0024get_ToByte, BigInteger$$get_ToSByte as BigInteger$0024$0024get_ToSByte, BigInteger$$$$002Ector$$Z524259A4 as BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4, BigInteger$$$$002Ector$$Z524259C1 as BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1, BigInteger$$$get_Two as BigInteger$0024$0024$0024get_Two, BigInteger$$$get_One as BigInteger$0024$0024$0024get_One, BigInteger$$$Abs$$Z665282C2 as BigInteger$0024$0024$0024Abs$0024$0024Z665282C2, BigInteger$$$Pow$$62E082A2 as BigInteger$0024$0024$0024Pow$0024$002462E082A2, BigInteger$$$GreatestCommonDivisor$$56F059C0 as BigInteger$0024$0024$0024GreatestCommonDivisor$0024$002456F059C0, BigInteger$$$DivRem$$56F059C0 as BigInteger$0024$0024$0024DivRem$0024$002456F059C0, BigInteger$$$Parse$$Z721C83C5 as BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5, BigInteger$$$get_Zero as BigInteger$0024$0024$0024get_Zero, BigInteger } from \"./BigInt/z\";\nimport { fromInteger } from \"./Long.js\";\nimport { min, comparePrimitives, equals as equals$$1, structuralHash } from \"./Util.js\";\nimport { delay, unfold, rangeNumber } from \"./Seq.js\";\nimport { fold, head, skipWhile, find, ofSeq } from \"./List.js\";\nimport { List } from \"./Types.js\";\nimport { fill, reverse, ofList } from \"./Array.js\";\nexport function isBigInt(x) {\n return x instanceof BigInteger;\n}\nexport function tryParse(str) {\n try {\n const res = BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5(str);\n return [true, res];\n } catch (matchValue) {\n return [false, BigInteger$0024$0024$0024get_Zero()];\n }\n}\nexport function parse(arg00) {\n return BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5(arg00);\n}\nexport function divRem(arg00$$1, arg01) {\n return BigInteger$0024$0024$0024DivRem$0024$002456F059C0(arg00$$1, arg01);\n}\nexport function greatestCommonDivisor(arg00$$2, arg01$$1) {\n return BigInteger$0024$0024$0024GreatestCommonDivisor$0024$002456F059C0(arg00$$2, arg01$$1);\n}\nexport function pow(arg00$$3, arg01$$2) {\n return BigInteger$0024$0024$0024Pow$0024$002462E082A2(arg00$$3, arg01$$2);\n}\nexport function abs(arg00$$4) {\n return BigInteger$0024$0024$0024Abs$0024$0024Z665282C2(arg00$$4);\n}\nexport const zero = BigInteger$0024$0024$0024get_Zero();\nexport const one = BigInteger$0024$0024$0024get_One();\nexport const two = BigInteger$0024$0024$0024get_Two();\nexport function fromString(s) {\n return BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5(s);\n}\nexport function fromZero() {\n return BigInteger$0024$0024$0024get_Zero();\n}\nexport function fromOne() {\n return BigInteger$0024$0024$0024get_One();\n}\nexport function fromInt64(i) {\n return BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1(i);\n}\nexport function fromInt32(i$$1) {\n var value;\n\n if (i$$1 > 2147483647) {\n return BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1((value = i$$1, (fromInteger(value, false, 6))));\n } else {\n return BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4(i$$1);\n }\n}\nexport function toSByte(x$$1) {\n return BigInteger$0024$0024get_ToSByte(x$$1);\n}\nexport function toByte(x$$2) {\n return BigInteger$0024$0024get_ToByte(x$$2);\n}\nexport function toInt16(x$$3) {\n return BigInteger$0024$0024get_ToInt16(x$$3);\n}\nexport function toUInt16(x$$4) {\n return BigInteger$0024$0024get_ToUInt16(x$$4);\n}\nexport function toInt32(x$$5) {\n return BigInteger$0024$0024get_ToInt32(x$$5);\n}\nexport function toUInt32(x$$6) {\n return BigInteger$0024$0024get_ToUInt32(x$$6);\n}\nexport function toInt64(x$$7) {\n return BigInteger$0024$0024get_ToInt64(x$$7);\n}\nexport function toUInt64(x$$8) {\n return BigInteger$0024$0024get_ToUInt64(x$$8);\n}\nexport function toSingle(x$$9) {\n return BigInteger$0024$0024get_ToSingle(x$$9);\n}\nexport function toDouble(x$$10) {\n return BigInteger$0024$0024get_ToDouble(x$$10);\n}\nexport function toDecimal(x$$11) {\n return BigInteger$0024$0024get_ToDecimal(x$$11);\n}\nexport function sign(x$$12) {\n return BigInteger$0024$0024get_Sign(x$$12);\n}\nexport function isZero(x$$13) {\n return BigInteger$0024$0024get_IsZero(x$$13);\n}\nexport function isOne(x$$14) {\n return BigInteger$0024$0024get_IsOne(x$$14);\n}\nexport function hash(x$$15) {\n return structuralHash(x$$15);\n}\nexport function compare(x$$16, y) {\n return x$$16.CompareTo(y);\n}\nexport function equals(x$$17, y$$1) {\n return equals$$1(x$$17, y$$1);\n}\nexport function toString(x$$18) {\n return String(x$$18);\n}\nexport const get_Zero = BigInteger$0024$0024$0024get_Zero();\nexport const get_One = BigInteger$0024$0024$0024get_One();\nexport function op_Addition(arg00$$5, arg01$$3) {\n return BigInteger$0024$0024$0024op_Addition$0024$002456F059C0(arg00$$5, arg01$$3);\n}\nexport function op_Subtraction(arg00$$6, arg01$$4) {\n return BigInteger$0024$0024$0024op_Subtraction$0024$002456F059C0(arg00$$6, arg01$$4);\n}\nexport function op_Multiply(arg00$$7, arg01$$5) {\n return BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0(arg00$$7, arg01$$5);\n}\nexport function op_Division(arg00$$8, arg01$$6) {\n return BigInteger$0024$0024$0024op_Division$0024$002456F059C0(arg00$$8, arg01$$6);\n}\nexport function op_Modulus(arg00$$9, arg01$$7) {\n return BigInteger$0024$0024$0024op_Modulus$0024$002456F059C0(arg00$$9, arg01$$7);\n}\nexport function op_UnaryNegation(arg00$$10) {\n return BigInteger$0024$0024$0024op_UnaryNegation$0024$0024Z665282C2(arg00$$10);\n}\nexport function op_UnaryPlus(arg00$$11) {\n return BigInteger$0024$0024$0024op_UnaryPlus$0024$0024Z665282C2(arg00$$11);\n}\nexport function op_RightShift(arg00$$12, arg01$$8) {\n return BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2(arg00$$12, arg01$$8);\n}\nexport function op_LeftShift(arg00$$13, arg01$$9) {\n return BigInteger$0024$0024$0024op_LeftShift$0024$002462E082A2(arg00$$13, arg01$$9);\n}\nexport function op_BitwiseAnd(arg00$$14, arg01$$10) {\n return BigInteger$0024$0024$0024op_BitwiseAnd$0024$002456F059C0(arg00$$14, arg01$$10);\n}\nexport function op_BitwiseOr(arg00$$15, arg01$$11) {\n return BigInteger$0024$0024$0024op_BitwiseOr$0024$002456F059C0(arg00$$15, arg01$$11);\n}\nexport function op_ExclusiveOr(arg00$$16, arg01$$12) {\n return BigInteger$0024$0024$0024op_ExclusiveOr$0024$002456F059C0(arg00$$16, arg01$$12);\n}\nexport function op_LessThan(arg00$$17, arg01$$13) {\n return BigInteger$0024$0024$0024op_LessThan$0024$002456F059C0(arg00$$17, arg01$$13);\n}\nexport function op_LessThanOrEqual(arg00$$18, arg01$$14) {\n return BigInteger$0024$0024$0024op_LessThanOrEqual$0024$002456F059C0(arg00$$18, arg01$$14);\n}\nexport function op_GreaterThan(arg00$$19, arg01$$15) {\n return BigInteger$0024$0024$0024op_GreaterThan$0024$002456F059C0(arg00$$19, arg01$$15);\n}\nexport function op_GreaterThanOrEqual(arg00$$20, arg01$$16) {\n return BigInteger$0024$0024$0024op_GreaterThanOrEqual$0024$002456F059C0(arg00$$20, arg01$$16);\n}\nexport function op_Equality(arg00$$21, arg01$$17) {\n return BigInteger$0024$0024$0024op_Equality$0024$002456F059C0(arg00$$21, arg01$$17);\n}\nexport function op_Inequality(arg00$$22, arg01$$18) {\n return BigInteger$0024$0024$0024op_Inequality$0024$002456F059C0(arg00$$22, arg01$$18);\n}\n\nfunction flipTwosComplement(currByte, lowBitFound) {\n if (lowBitFound) {\n return [(currByte ^ 255) & 255, true];\n } else if (currByte === 0) {\n return [0, false];\n } else {\n let firstBitIndex;\n const list = ofSeq(rangeNumber(0, 1, 7));\n firstBitIndex = find(function predicate(i$$2) {\n return (currByte & 1 << i$$2) > 0;\n }, list);\n return [(currByte ^ 254 << firstBitIndex) & 255, true];\n }\n}\n\nexport function toByteArray(value$$1) {\n if (equals$$1(value$$1, zero)) {\n return new Uint8Array([0]);\n } else {\n const isPositive = value$$1.CompareTo(zero) > 0;\n const value$$2 = isPositive ? value$$1 : BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0(BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4(-1), value$$1);\n let mask32;\n let i$$3;\n i$$3 = fromInteger(4294967295, false, 6);\n mask32 = fromInt64(i$$3);\n\n const loop = function loop($accumBytes$$74, $consumeValue$$75, $lowBitFound$$1$$76) {\n var value$$9, value$$10, value$$11;\n\n loop: while (true) {\n const accumBytes = $accumBytes$$74,\n consumeValue = $consumeValue$$75,\n lowBitFound$$1 = $lowBitFound$$1$$76;\n\n if (consumeValue.CompareTo(zero) <= 0) {\n let accumBytes$$1;\n\n if (isPositive) {\n accumBytes$$1 = skipWhile(function predicate$$1(b) {\n return b === 0;\n }, accumBytes);\n } else {\n accumBytes$$1 = skipWhile(function predicate$$2(b$$1) {\n return b$$1 === 255;\n }, accumBytes);\n }\n\n const isHighBitOne = (head(accumBytes$$1) & 128) !== 0;\n const accumBytes$$2 = (isPositive ? isHighBitOne : false) ? new List(0, accumBytes$$1) : (!isPositive ? !isHighBitOne : false) ? new List(255, accumBytes$$1) : accumBytes$$1;\n let array;\n array = ofList(accumBytes$$2, Uint8Array);\n return reverse(array, Uint8Array);\n } else {\n let currValue;\n const x$$19 = BigInteger$0024$0024$0024op_BitwiseAnd$0024$002456F059C0(consumeValue, mask32);\n currValue = toUInt32(x$$19);\n\n if (isPositive) {\n let b0;\n b0 = currValue & 0xFF;\n let b1;\n const value$$5 = currValue >>> 8;\n b1 = value$$5 & 0xFF;\n let b2;\n const value$$6 = currValue >>> 16;\n b2 = value$$6 & 0xFF;\n let b3;\n const value$$7 = currValue >>> 24;\n b3 = value$$7 & 0xFF;\n $accumBytes$$74 = new List(b3, new List(b2, new List(b1, new List(b0, accumBytes))));\n $consumeValue$$75 = BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2(consumeValue, 32);\n $lowBitFound$$1$$76 = false;\n continue loop;\n } else {\n const patternInput = flipTwosComplement((currValue & 0xFF), lowBitFound$$1);\n const patternInput$$1 = flipTwosComplement((value$$9 = currValue >>> 8, (value$$9 & 0xFF)), patternInput[1]);\n const patternInput$$2 = flipTwosComplement((value$$10 = currValue >>> 16, (value$$10 & 0xFF)), patternInput$$1[1]);\n const patternInput$$3 = flipTwosComplement((value$$11 = currValue >>> 24, (value$$11 & 0xFF)), patternInput$$2[1]);\n $accumBytes$$74 = new List(patternInput$$3[0], new List(patternInput$$2[0], new List(patternInput$$1[0], new List(patternInput[0], accumBytes))));\n $consumeValue$$75 = BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2(consumeValue, 32);\n $lowBitFound$$1$$76 = patternInput$$3[1];\n continue loop;\n }\n }\n\n break;\n }\n };\n\n return loop(new List(), value$$2, false);\n }\n}\nexport function fromByteArray(bytes) {\n if (bytes == null) {\n throw new Error(\"bytes\");\n } else {\n void null;\n }\n\n if (bytes.length === 0) {\n return zero;\n } else {\n const isPositive$$1 = (bytes[bytes.length - 1] & 128) === 0;\n const buffer = fill(new Uint8Array(4), 0, 4, 0);\n\n const loop$$1 = function loop$$1($accumUInt32$$80, $currIndex$$81, $bytesRemaining$$82, $lowBitFound$$6$$83) {\n loop$$1: while (true) {\n const accumUInt32 = $accumUInt32$$80,\n currIndex = $currIndex$$81,\n bytesRemaining = $bytesRemaining$$82,\n lowBitFound$$6 = $lowBitFound$$6$$83;\n\n if (bytesRemaining === 0) {\n let value$$14;\n value$$14 = fold(function folder(acc, value$$12) {\n var i$$4;\n return BigInteger$0024$0024$0024op_Addition$0024$002456F059C0(BigInteger$0024$0024$0024op_LeftShift$0024$002462E082A2(acc, 32), (i$$4 = (fromInteger(value$$12, false, 6)), (fromInt64(i$$4))));\n }, zero, accumUInt32);\n\n if (isPositive$$1) {\n return value$$14;\n } else {\n return BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0(BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4(-1), value$$14);\n }\n } else {\n const bytesToProcess = min(comparePrimitives, bytesRemaining, 4) | 0;\n\n for (let i$$5 = 0; i$$5 <= bytesToProcess - 1; i$$5++) {\n buffer[i$$5] = bytes[currIndex + i$$5];\n }\n\n if (isPositive$$1) {\n fill(buffer, bytesToProcess, 4 - bytesToProcess, 0);\n const value$$15 = (((buffer[0] | buffer[1] << 8 >>> 0) >>> 0 | buffer[2] << 16 >>> 0) >>> 0 | buffer[3] << 24 >>> 0) >>> 0;\n $accumUInt32$$80 = new List(value$$15, accumUInt32);\n $currIndex$$81 = currIndex + bytesToProcess;\n $bytesRemaining$$82 = bytesRemaining - bytesToProcess;\n $lowBitFound$$6$$83 = false;\n continue loop$$1;\n } else {\n fill(buffer, bytesToProcess, 4 - bytesToProcess, 255);\n const patternInput$$4 = flipTwosComplement(buffer[0], lowBitFound$$6);\n const patternInput$$5 = flipTwosComplement(buffer[1], patternInput$$4[1]);\n const patternInput$$6 = flipTwosComplement(buffer[2], patternInput$$5[1]);\n const patternInput$$7 = flipTwosComplement(buffer[3], patternInput$$6[1]);\n const value$$16 = (((patternInput$$4[0] | patternInput$$5[0] << 8 >>> 0) >>> 0 | patternInput$$6[0] << 16 >>> 0) >>> 0 | patternInput$$7[0] << 24 >>> 0) >>> 0;\n $accumUInt32$$80 = new List(value$$16, accumUInt32);\n $currIndex$$81 = currIndex + bytesToProcess;\n $bytesRemaining$$82 = bytesRemaining - bytesToProcess;\n $lowBitFound$$6$$83 = patternInput$$7[1];\n continue loop$$1;\n }\n }\n\n break;\n }\n };\n\n return loop$$1(new List(), 0, bytes.length, false);\n }\n}\nexport function makeRangeStepFunction(step, last) {\n const stepComparedWithZero = step.CompareTo(zero) | 0;\n\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n } else {\n void null;\n }\n\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return function (x$$20) {\n const comparedWithLast = x$$20.CompareTo(last) | 0;\n return ((stepGreaterThanZero ? comparedWithLast <= 0 : false) ? true : !stepGreaterThanZero ? comparedWithLast >= 0 : false) ? [x$$20, BigInteger$0024$0024$0024op_Addition$0024$002456F059C0(x$$20, step)] : undefined;\n };\n}\nexport function range(first, step$$1, last$$1) {\n const stepFn = makeRangeStepFunction(step$$1, last$$1);\n return delay(function () {\n return unfold(stepFn, first);\n });\n}","export function tryParse(str) {\n // TODO: test if value is valid and in range\n if (str != null && /\\S/.test(str)) {\n const v = +str.replace(\"_\", \"\");\n if (!Number.isNaN(v)) {\n return [true, v];\n }\n }\n return [false, 0];\n}\nexport function parse(str) {\n const [ok, value] = tryParse(str);\n if (ok) {\n return value;\n }\n else {\n throw new Error(\"Input string was not in a correct format.\");\n }\n}\n// JS Number.isFinite function evals false for NaN\nexport function isInfinity(x) {\n return x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY;\n}\n//# sourceMappingURL=Double.js.map","import { trim } from \"./String\";\n// RFC 4122 compliant. From https://stackoverflow.com/a/13653180/3922220\n// const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n// Relax GUID parsing, see #1637\nconst guidRegex = /^[\\(\\{]{0,2}[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[\\)\\}]{0,2}$/;\nconst guidRegexNoHyphen = /^([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})$/;\nconst guidRegexHex = /^\\{0x[0-9a-f]{8},(0x[0-9a-f]{4},){2}\\{(0x[0-9a-f]{2},){7}0x[0-9a-f]{2}\\}\\}$/;\nconst guidHexCaptures = /^([0-9a-f]{8})-(([0-9a-f]{4})-)(([0-9a-f]{4})-)([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/;\nexport function toString(str, format, _provider) {\n if (format && (format === null || format === void 0 ? void 0 : format.length) > 0) {\n switch (format) {\n case \"N\":\n return str.replace(/-/g, '');\n case \"D\":\n return str;\n case \"B\":\n return \"{\" + str + \"}\";\n case \"P\":\n return \"(\" + str + \")\";\n case \"X\":\n return str.replace(guidHexCaptures, \"{0x$1,0x$3,0x$5,{0x$6,0x$7,0x$8,0x$9,0x$10,0x$11,0x$12,0x$13}}\");\n default:\n throw new Error(\"Unrecognized Guid print format\");\n }\n }\n else {\n return str;\n }\n}\n/** Validates UUID as specified in RFC4122 (versions 1-5). */\nexport function validateGuid(str, doNotThrow) {\n function hyphenateGuid(str) {\n return str.replace(guidRegexNoHyphen, \"$1-$2-$3-$4-$5\");\n }\n const wsTrimAndLowered = str.trim().toLowerCase();\n if (guidRegex.test(wsTrimAndLowered)) {\n const containersTrimmed = trim(wsTrimAndLowered, \"{\", \"}\", \"(\", \")\");\n return doNotThrow ? [true, containersTrimmed] : containersTrimmed;\n }\n else if (guidRegexNoHyphen.test(wsTrimAndLowered)) {\n const hyphenatedGuid = hyphenateGuid(wsTrimAndLowered);\n return doNotThrow ? [true, hyphenatedGuid] : hyphenatedGuid;\n }\n else if (guidRegexHex.test(wsTrimAndLowered)) {\n const hyphenatedGuid = hyphenateGuid(wsTrimAndLowered.replace(/[\\{\\},]|0x/g, ''));\n return doNotThrow ? [true, hyphenatedGuid] : hyphenatedGuid;\n }\n else if (doNotThrow) {\n return [false, \"00000000-0000-0000-0000-000000000000\"];\n }\n else {\n throw new Error(\"Guid should contain 32 digits with 4 dashes: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n }\n}\n// From https://gist.github.com/LeverOne/1308368\nexport function newGuid() {\n let b = \"\";\n for (let a = 0; a++ < 36;) {\n b += a * 51 & 52\n ? (a ^ 15 ? 8 ^ Math.random() * (a ^ 20 ? 16 : 4) : 4).toString(16)\n : \"-\";\n }\n return b;\n}\n// Maps for number <-> hex string conversion\nlet _convertMapsInitialized = false;\nlet _byteToHex;\nlet _hexToByte;\nfunction initConvertMaps() {\n _byteToHex = new Array(256);\n _hexToByte = {};\n for (let i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n }\n _convertMapsInitialized = true;\n}\n/** Parse a UUID into it's component bytes */\n// Adapted from https://github.com/zefferus/uuid-parse\nexport function guidToArray(s) {\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n let i = 0;\n const buf = new Uint8Array(16);\n s.toLowerCase().replace(/[0-9a-f]{2}/g, ((oct) => {\n switch (i) {\n // .NET saves first three byte groups with different endianness\n // See https://stackoverflow.com/a/16722909/3922220\n case 0:\n case 1:\n case 2:\n case 3:\n buf[3 - i++] = _hexToByte[oct];\n break;\n case 4:\n case 5:\n buf[9 - i++] = _hexToByte[oct];\n break;\n case 6:\n case 7:\n buf[13 - i++] = _hexToByte[oct];\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n buf[i++] = _hexToByte[oct];\n break;\n }\n }));\n // Zero out remaining bytes if string was short\n while (i < 16) {\n buf[i++] = 0;\n }\n return buf;\n}\n/** Convert UUID byte array into a string */\nexport function arrayToGuid(buf) {\n if (buf.length !== 16) {\n throw new Error(\"Byte array for GUID must be exactly 16 bytes long\");\n }\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n const guid = _byteToHex[buf[3]] + _byteToHex[buf[2]] +\n _byteToHex[buf[1]] + _byteToHex[buf[0]] + \"-\" +\n _byteToHex[buf[5]] + _byteToHex[buf[4]] + \"-\" +\n _byteToHex[buf[7]] + _byteToHex[buf[6]] + \"-\" +\n _byteToHex[buf[8]] + _byteToHex[buf[9]] + \"-\" +\n _byteToHex[buf[10]] + _byteToHex[buf[11]] +\n _byteToHex[buf[12]] + _byteToHex[buf[13]] +\n _byteToHex[buf[14]] + _byteToHex[buf[15]];\n return guid;\n}\n//# sourceMappingURL=Guid.js.map","import { fromBits, getHighBits, getHighBitsUnsigned, getLowBits, getLowBitsUnsigned } from \"./Long\";\nconst littleEndian = true;\nexport function isLittleEndian() {\n return littleEndian;\n}\nexport function getBytesBoolean(value) {\n const bytes = new Uint8Array(1);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint8(0, value ? 1 : 0);\n return bytes;\n}\nexport function getBytesChar(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value.charCodeAt(0), littleEndian);\n return bytes;\n}\nexport function getBytesInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt32(littleEndian ? 0 : 4, getLowBits(value), littleEndian);\n view.setInt32(littleEndian ? 4 : 0, getHighBits(value), littleEndian);\n return bytes;\n}\nexport function getBytesUInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint32(littleEndian ? 0 : 4, getLowBitsUnsigned(value), littleEndian);\n view.setUint32(littleEndian ? 4 : 0, getHighBitsUnsigned(value), littleEndian);\n return bytes;\n}\nexport function getBytesSingle(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesDouble(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat64(0, value, littleEndian);\n return bytes;\n}\nexport function int64BitsToDouble(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setInt32(littleEndian ? 0 : 4, getLowBits(value), littleEndian);\n view.setInt32(littleEndian ? 4 : 0, getHighBits(value), littleEndian);\n return view.getFloat64(0, littleEndian);\n}\nexport function doubleToInt64Bits(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setFloat64(0, value, littleEndian);\n const lowBits = view.getInt32(littleEndian ? 0 : 4, littleEndian);\n const highBits = view.getInt32(littleEndian ? 4 : 0, littleEndian);\n return fromBits(lowBits, highBits, false);\n}\nexport function toBoolean(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint8(offset) === 1 ? true : false;\n}\nexport function toChar(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const code = view.getUint16(offset, littleEndian);\n return String.fromCharCode(code);\n}\nexport function toInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt16(offset, littleEndian);\n}\nexport function toInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt32(offset, littleEndian);\n}\nexport function toInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const lowBits = view.getInt32(offset + (littleEndian ? 0 : 4), littleEndian);\n const highBits = view.getInt32(offset + (littleEndian ? 4 : 0), littleEndian);\n return fromBits(lowBits, highBits, false);\n}\nexport function toUInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint16(offset, littleEndian);\n}\nexport function toUInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint32(offset, littleEndian);\n}\nexport function toUInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const lowBits = view.getUint32(offset + (littleEndian ? 0 : 4), littleEndian);\n const highBits = view.getUint32(offset + (littleEndian ? 4 : 0), littleEndian);\n return fromBits(lowBits, highBits, true);\n}\nexport function toSingle(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, littleEndian);\n}\nexport function toDouble(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, littleEndian);\n}\nexport function toString(bytes, offset, count) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n let buffer = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n if (offset != null && count != null) {\n buffer = buffer.subarray(offset, offset + count);\n }\n else if (offset != null) {\n buffer = buffer.subarray(offset);\n }\n return Array.from(buffer).map((b) => (\"0\" + b.toString(16)).slice(-2)).join(\"-\");\n}\n//# sourceMappingURL=BitConverter.js.map","import { anonRecord as makeAnonRecord, Record, Union } from \"./Types\";\nimport { compareArraysWith, equalArraysWith } from \"./Util\";\nexport class CaseInfo {\n constructor(declaringType, tag, name, fields) {\n this.declaringType = declaringType;\n this.tag = tag;\n this.name = name;\n this.fields = fields;\n }\n}\nexport class TypeInfo {\n constructor(fullname, generics, construct, fields, cases, enumCases) {\n this.fullname = fullname;\n this.generics = generics;\n this.construct = construct;\n this.fields = fields;\n this.cases = cases;\n this.enumCases = enumCases;\n }\n toString() {\n return fullName(this);\n }\n Equals(other) {\n return equals(this, other);\n }\n CompareTo(other) {\n return compare(this, other);\n }\n}\nexport function getGenerics(t) {\n return t.generics != null ? t.generics : [];\n}\nexport function equals(t1, t2) {\n if (t1.fullname === \"\") { // Anonymous records\n return t2.fullname === \"\"\n && equalArraysWith(getRecordElements(t1), getRecordElements(t2), ([k1, v1], [k2, v2]) => k1 === k2 && equals(v1, v2));\n }\n else {\n return t1.fullname === t2.fullname\n && equalArraysWith(getGenerics(t1), getGenerics(t2), equals);\n }\n}\n// System.Type is not comparable in .NET, but let's implement this\n// in case users want to create a dictionary with types as keys\nexport function compare(t1, t2) {\n if (t1.fullname !== t2.fullname) {\n return t1.fullname < t2.fullname ? -1 : 1;\n }\n else {\n return compareArraysWith(getGenerics(t1), getGenerics(t2), compare);\n }\n}\nexport function class_type(fullname, generics, construct) {\n return new TypeInfo(fullname, generics, construct);\n}\nexport function record_type(fullname, generics, construct, fields) {\n return new TypeInfo(fullname, generics, construct, fields);\n}\nexport function anonRecord_type(...fields) {\n return new TypeInfo(\"\", undefined, undefined, () => fields);\n}\nexport function union_type(fullname, generics, construct, cases) {\n const t = new TypeInfo(fullname, generics, construct, undefined, () => cases().map((x, i) => typeof x === \"string\"\n ? new CaseInfo(t, i, x)\n : new CaseInfo(t, i, x[0], x[1])));\n return t;\n}\nexport function tuple_type(...generics) {\n return new TypeInfo(\"System.Tuple`\" + generics.length, generics);\n}\nexport function delegate_type(...generics) {\n return new TypeInfo(\"System.Func`\" + generics.length, generics);\n}\nexport function lambda_type(argType, returnType) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpFunc`2\", [argType, returnType]);\n}\nexport function option_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpOption`1\", [generic]);\n}\nexport function list_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Collections.FSharpList`1\", [generic]);\n}\nexport function array_type(generic) {\n return new TypeInfo(generic.fullname + \"[]\", [generic]);\n}\nexport function enum_type(fullname, underlyingType, enumCases) {\n return new TypeInfo(fullname, [underlyingType], undefined, undefined, undefined, enumCases);\n}\nexport const obj_type = new TypeInfo(\"System.Object\");\nexport const unit_type = new TypeInfo(\"Microsoft.FSharp.Core.Unit\");\nexport const char_type = new TypeInfo(\"System.Char\");\nexport const string_type = new TypeInfo(\"System.String\");\nexport const bool_type = new TypeInfo(\"System.Boolean\");\nexport const int8_type = new TypeInfo(\"System.SByte\");\nexport const uint8_type = new TypeInfo(\"System.Byte\");\nexport const int16_type = new TypeInfo(\"System.Int16\");\nexport const uint16_type = new TypeInfo(\"System.UInt16\");\nexport const int32_type = new TypeInfo(\"System.Int32\");\nexport const uint32_type = new TypeInfo(\"System.UInt32\");\nexport const float32_type = new TypeInfo(\"System.Single\");\nexport const float64_type = new TypeInfo(\"System.Double\");\nexport const decimal_type = new TypeInfo(\"System.Decimal\");\nexport function name(info) {\n if (Array.isArray(info)) {\n return info[0];\n }\n else if (info instanceof CaseInfo) {\n return info.name;\n }\n else {\n const i = info.fullname.lastIndexOf(\".\");\n return i === -1 ? info.fullname : info.fullname.substr(i + 1);\n }\n}\nexport function fullName(t) {\n const gen = t.generics != null && !isArray(t) ? t.generics : [];\n if (gen.length > 0) {\n return t.fullname + \"[\" + gen.map((x) => fullName(x)).join(\",\") + \"]\";\n }\n else {\n return t.fullname;\n }\n}\nexport function namespace(t) {\n const i = t.fullname.lastIndexOf(\".\");\n return i === -1 ? \"\" : t.fullname.substr(0, i);\n}\nexport function isArray(t) {\n return t.fullname.endsWith(\"[]\");\n}\nexport function getElementType(t) {\n var _a;\n return isArray(t) ? (_a = t.generics) === null || _a === void 0 ? void 0 : _a[0] : undefined;\n}\nexport function isGenericType(t) {\n return t.generics != null && t.generics.length > 0;\n}\nexport function isEnum(t) {\n return t.enumCases != null && t.enumCases.length > 0;\n}\n/**\n * This doesn't replace types for fields (records) or cases (unions)\n * but it should be enough for type comparison purposes\n */\nexport function getGenericTypeDefinition(t) {\n return t.generics == null ? t : new TypeInfo(t.fullname, t.generics.map(() => obj_type));\n}\nexport function getEnumUnderlyingType(t) {\n var _a;\n return (_a = t.generics) === null || _a === void 0 ? void 0 : _a[0];\n}\nexport function getEnumValues(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[1]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function getEnumNames(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[0]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nfunction getEnumCase(t, v) {\n if (t.enumCases != null) {\n if (typeof v === \"string\") {\n for (const kv of t.enumCases) {\n if (kv[0] === v) {\n return kv;\n }\n }\n throw new Error(`'${v}' was not found in ${t.fullname}`);\n }\n else {\n for (const kv of t.enumCases) {\n if (kv[1] === v) {\n return kv;\n }\n }\n // .NET returns the number even if it doesn't match any of the cases\n return [\"\", v];\n }\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function parseEnum(t, str) {\n // TODO: better int parsing here, parseInt ceils floats: \"4.8\" -> 4\n const value = parseInt(str, 10);\n return getEnumCase(t, isNaN(value) ? str : value)[1];\n}\nexport function tryParseEnum(t, str) {\n try {\n const v = parseEnum(t, str);\n return [true, v];\n }\n catch (_a) {\n // supress error\n }\n return [false, NaN];\n}\nexport function getEnumName(t, v) {\n return getEnumCase(t, v)[0];\n}\nexport function isEnumDefined(t, v) {\n try {\n const kv = getEnumCase(t, v);\n return kv[0] != null && kv[0] !== \"\";\n }\n catch (_a) {\n // supress error\n }\n return false;\n}\n// FSharpType\nexport function getUnionCases(t) {\n if (t.cases != null) {\n return t.cases();\n }\n else {\n throw new Error(`${t.fullname} is not an F# union type`);\n }\n}\nexport function getRecordElements(t) {\n if (t.fields != null) {\n return t.fields();\n }\n else {\n throw new Error(`${t.fullname} is not an F# record type`);\n }\n}\nexport function getTupleElements(t) {\n if (isTuple(t) && t.generics != null) {\n return t.generics;\n }\n else {\n throw new Error(`${t.fullname} is not a tuple type`);\n }\n}\nexport function getFunctionElements(t) {\n if (isFunction(t) && t.generics != null) {\n const gen = t.generics;\n return [gen[0], gen[1]];\n }\n else {\n throw new Error(`${t.fullname} is not an F# function type`);\n }\n}\nexport function isUnion(t) {\n return t instanceof TypeInfo ? t.cases != null : t instanceof Union;\n}\nexport function isRecord(t) {\n return t instanceof TypeInfo ? t.fields != null : t instanceof Record;\n}\nexport function isTuple(t) {\n return t.fullname.startsWith(\"System.Tuple\");\n}\n// In .NET this is false for delegates\nexport function isFunction(t) {\n return t.fullname === \"Microsoft.FSharp.Core.FSharpFunc`2\";\n}\n// FSharpValue\nexport function getUnionFields(v, t) {\n const cases = getUnionCases(t);\n const case_ = cases[v.tag];\n if (case_ == null) {\n throw new Error(`Cannot find case ${v.name} in union type`);\n }\n return [case_, v.fields];\n}\nexport function getUnionCaseFields(uci) {\n return uci.fields == null ? [] : uci.fields;\n}\nexport function getRecordFields(v) {\n return Object.keys(v).map((k) => v[k]);\n}\nexport function getRecordField(v, field) {\n return v[field[0]];\n}\nexport function getTupleFields(v) {\n return v;\n}\nexport function getTupleField(v, i) {\n return v[i];\n}\nexport function makeUnion(uci, values) {\n const expectedLength = (uci.fields || []).length;\n if (values.length !== expectedLength) {\n throw new Error(`Expected an array of length ${expectedLength} but got ${values.length}`);\n }\n return uci.declaringType.construct != null\n ? new uci.declaringType.construct(uci.tag, uci.name, ...values)\n : {};\n}\nexport function makeRecord(t, values) {\n const fields = getRecordElements(t);\n if (fields.length !== values.length) {\n throw new Error(`Expected an array of length ${fields.length} but got ${values.length}`);\n }\n return t.construct != null\n ? new t.construct(...values)\n : makeAnonRecord(fields.reduce((obj, [key, _t], i) => {\n obj[key] = values[i];\n return obj;\n }, {}));\n}\nexport function makeTuple(values, _t) {\n return values;\n}\nexport function makeGenericType(t, generics) {\n return new TypeInfo(t.fullname, generics, t.construct, t.fields, t.cases);\n}\nexport function createInstance(t, consArgs) {\n // TODO: Check if consArgs length is same as t.construct?\n // (Arg types can still be different)\n if (typeof t.construct === \"function\") {\n return new t.construct(...(consArgs !== null && consArgs !== void 0 ? consArgs : []));\n }\n else {\n throw new Error(`Cannot access constructor of ${t.fullname}`);\n }\n}\nexport function getValue(propertyInfo, v) {\n return v[propertyInfo[0]];\n}\n// Fable.Core.Reflection\nfunction assertUnion(x) {\n if (!(x instanceof Union)) {\n throw new Error(`Value is not an F# union type`);\n }\n}\nexport function getCaseTag(x) {\n assertUnion(x);\n return x.tag;\n}\nexport function getCaseName(x) {\n assertUnion(x);\n return x.name;\n}\nexport function getCaseFields(x) {\n assertUnion(x);\n return x.fields;\n}\n//# sourceMappingURL=Reflection.js.map","// export type decimal = Decimal;\nexport var NumberStyles;\n(function (NumberStyles) {\n // None = 0x00000000,\n // AllowLeadingWhite = 0x00000001,\n // AllowTrailingWhite = 0x00000002,\n // AllowLeadingSign = 0x00000004,\n // AllowTrailingSign = 0x00000008,\n // AllowParentheses = 0x00000010,\n // AllowDecimalPoint = 0x00000020,\n // AllowThousands = 0x00000040,\n // AllowExponent = 0x00000080,\n // AllowCurrencySymbol = 0x00000100,\n NumberStyles[NumberStyles[\"AllowHexSpecifier\"] = 512] = \"AllowHexSpecifier\";\n // Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign,\n // HexNumber = AllowLeadingWhite | AllowTrailingWhite | AllowHexSpecifier,\n // Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowTrailingSign | AllowDecimalPoint | AllowThousands,\n // Float = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowDecimalPoint | AllowExponent,\n // Currency = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol,\n // Any = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol | AllowExponent,\n})(NumberStyles || (NumberStyles = {}));\nfunction validResponse(regexMatch, radix) {\n const [/*all*/ , sign, prefix, digits] = regexMatch;\n return {\n sign: sign || \"\",\n prefix: prefix || \"\",\n digits,\n radix,\n };\n}\nfunction getRange(unsigned, bitsize) {\n switch (bitsize) {\n case 8: return unsigned ? [0, 255] : [-128, 127];\n case 16: return unsigned ? [0, 65535] : [-32768, 32767];\n case 32: return unsigned ? [0, 4294967295] : [-2147483648, 2147483647];\n default: throw new Error(\"Invalid bit size.\");\n }\n}\nfunction getInvalidDigits(radix) {\n switch (radix) {\n case 2: return /[^0-1]/;\n case 8: return /[^0-7]/;\n case 10: return /[^0-9]/;\n case 16: return /[^0-9a-fA-F]/;\n default:\n throw new Error(\"Invalid Base.\");\n }\n}\nfunction getRadix(prefix, style) {\n if (style & NumberStyles.AllowHexSpecifier) {\n return 16;\n }\n else {\n switch (prefix) {\n case \"0b\":\n case \"0B\": return 2;\n case \"0o\":\n case \"0O\": return 8;\n case \"0x\":\n case \"0X\": return 16;\n default: return 10;\n }\n }\n}\nexport function isValid(str, style, radix) {\n const integerRegex = /^\\s*([\\+\\-])?(0[xXoObB])?([0-9a-fA-F]+)\\s*$/;\n const res = integerRegex.exec(str.replace(/_/g, \"\"));\n if (res != null) {\n const [/*all*/ , /*sign*/ , prefix, digits] = res;\n radix = radix || getRadix(prefix, style);\n const invalidDigits = getInvalidDigits(radix);\n if (!invalidDigits.test(digits)) {\n return validResponse(res, radix);\n }\n }\n return null;\n}\nexport function parse(str, style, unsigned, bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n let v = Number.parseInt(res.sign + res.digits, res.radix);\n if (!Number.isNaN(v)) {\n const [umin, umax] = getRange(true, bitsize);\n if (!unsigned && res.radix !== 10 && v >= umin && v <= umax) {\n v = v << (32 - bitsize) >> (32 - bitsize);\n }\n const [min, max] = getRange(unsigned, bitsize);\n if (v >= min && v <= max) {\n return v;\n }\n }\n }\n throw new Error(\"Input string was not in a correct format.\");\n}\nexport function tryParse(str, style, unsigned, bitsize) {\n try {\n const v = parse(str, style, unsigned, bitsize);\n return [true, v];\n }\n catch (_a) {\n // supress error\n }\n return [false, 0];\n}\nexport function op_UnaryNegation_Int8(x) {\n return x === -128 ? x : -x;\n}\nexport function op_UnaryNegation_Int16(x) {\n return x === -32768 ? x : -x;\n}\nexport function op_UnaryNegation_Int32(x) {\n return x === -2147483648 ? x : -x;\n}\n//# sourceMappingURL=Int32.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{attrs:{\"id\":_vm.name}},[_c('div',{staticClass:\"title-chart-wrapper\"},[_c('div',{staticClass:\"title-brand-wrapper\"},[_c('h2',[_c('a',{attrs:{\"href\":(\"#\" + _vm.name)},on:{\"click\":_vm.smoothScroll}},[_vm._v(_vm._s(_vm.title))])])]),_c('div',{staticClass:\"faq-and-share-wrapper\"},[_c('div',{staticClass:\"faq-link-wrapper\"},[_c('div',[_c('a',{staticClass:\"faq-link\",attrs:{\"target\":\"_blank\",\"href\":(\"/\" + (_vm.$i18n.i18next.language) + \"/faq#\" + _vm.faqAnchor)}},[_vm._v(\"?\")])])])])]),_c('div',{attrs:{\"id\":_vm.visualizationId}}),_c('div',{directives:[{name:\"html-md\",rawName:\"v-html-md\",value:(_vm.description),expression:\"description\"}],staticClass:\"disclaimer\"})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import i18n from '@/i18n'\n\nlet $t = (id) => i18n.i18next.t(id)\n\n// https://github.com/vega/vega-embed#options\nexport default {\n actions: false,\n timeFormatLocale: {\n // https://github.com/d3/d3-time-format/blob/master/locale/de-DE.json\n // dateTime: \"%A, der %e. %B %Y, %X\",\n // date: \"%d.%m.%Y\",\n // time: \"%H:%M:%S\",\n periods: ['AM', 'PM'], //not used, but required\n days: [\n $t('weekday.0'), //\"So\",\n $t('weekday.1'), //\"Mo\",\n $t('weekday.2'), //\"Di\",\n $t('weekday.3'), //\"Mi\",\n $t('weekday.4'), //\"Do\",\n $t('weekday.5'), //\"Fr\",\n $t('weekday.6'), //\"Sa\"\n ],\n shortDays: [\n $t('weekdayShort.0'), //\"So\",\n $t('weekdayShort.1'), //\"Mo\",\n $t('weekdayShort.2'), //\"Di\",\n $t('weekdayShort.3'), //\"Mi\",\n $t('weekdayShort.4'), //\"Do\",\n $t('weekdayShort.5'), //\"Fr\",\n $t('weekdayShort.6'), //\"Sa\"\n ],\n months: [\n $t('month.0'), //\"Jan\",\n $t('month.1'), //\"Feb\",\n $t('month.2'), //\"Mrz\",\n $t('month.3'), //\"Apr\",\n $t('month.4'), //\"Mai\",\n $t('month.5'), //\"Jun\",\n $t('month.6'), //\"Jul\",\n $t('month.7'), //\"Aug\",\n $t('month.8'), //\"Sep\",\n $t('month.9'), //\"Okt\",\n $t('month.10'), //\"Nov\",\n $t('month.11'), //\"Dez\",\n ],\n shortMonths: [\n $t('shortMonth.0'), //\"Jan\",\n $t('shortMonth.1'), //\"Feb\",\n $t('shortMonth.2'), //\"Mrz\",\n $t('shortMonth.3'), //\"Apr\",\n $t('shortMonth.4'), //\"Mai\",\n $t('shortMonth.5'), //\"Jun\",\n $t('shortMonth.6'), //\"Jul\",\n $t('shortMonth.7'), //\"Aug\",\n $t('shortMonth.8'), //\"Sep\",\n $t('shortMonth.9'), //\"Okt\",\n $t('shortMonth.10'), //\"Nov\",\n $t('shortMonth.11'), //\"Dez\",\n ],\n },\n formatLocale: {\n decimal: $t('charts.common.decimalPoint'),\n thousands: $t('charts.common.thousandsSep'),\n grouping: [3],\n }, // https://github.com/d3/d3-format/blob/master/locale/en-US.json\n}","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VegaChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VegaChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VegaChart.vue?vue&type=template&id=e724d7dc&scoped=true&\"\nimport script from \"./VegaChart.vue?vue&type=script&lang=js&\"\nexport * from \"./VegaChart.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VegaChart.vue?vue&type=style&index=0&id=e724d7dc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e724d7dc\",\n null\n \n)\n\nexport default component.exports","namespace Fable.SimpleJson\r\n\r\nopen System\r\nopen FSharp.Reflection\r\nopen Fable.Core\r\nopen System.Reflection\r\nopen System.Collections.Generic\r\n\r\n[]\r\nmodule Converter =\r\n let (|PrimitiveType|_|) (primType: Type) =\r\n match primType.FullName with\r\n | \"System.String\" -> Some TypeInfo.String\r\n | \"System.Int16\" -> Some TypeInfo.Short\r\n | \"System.Int32\" -> Some TypeInfo.Int32\r\n | \"Microsoft.FSharp.Core.int64`1\"\r\n | \"System.Int64\" -> Some TypeInfo.Long\r\n | \"System.UInt16\" -> Some TypeInfo.UInt16\r\n | \"System.UInt32\" -> Some TypeInfo.UInt32\r\n | \"System.UInt64\" -> Some TypeInfo.UInt64\r\n | \"System.DateTime\" -> Some TypeInfo.DateTime\r\n | \"System.TimeSpan\" -> Some TypeInfo.TimeSpan\r\n | \"System.DateTimeOffset\" -> Some TypeInfo.DateTimeOffset\r\n | \"System.Boolean\" -> Some TypeInfo.Bool\r\n | \"System.Single\" -> Some TypeInfo.Float32\r\n | \"System.Double\" -> Some TypeInfo.Float\r\n | \"Microsoft.FSharp.Core.decimal`1\"\r\n | \"System.Decimal\" -> Some TypeInfo.Decimal\r\n | \"System.Numerics.BigInteger\" -> Some TypeInfo.BigInt\r\n | \"Microsoft.FSharp.Core.Unit\" -> Some TypeInfo.Unit\r\n | \"System.Guid\" -> Some TypeInfo.Guid\r\n | \"System.Byte\" -> Some TypeInfo.Byte\r\n | _ -> None\r\n\r\n let (|RecordType|_|) (t: Type) =\r\n if FSharpType.IsRecord t\r\n then\r\n FSharpType.GetRecordFields t\r\n |> Array.map (fun prop -> prop.Name, prop.PropertyType)\r\n |> Some\r\n else None\r\n\r\n let (|SetType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"Microsoft.FSharp.Collections.FSharpSet`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|Nullable|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Nullable`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|UnionType|_|) (t: Type) =\r\n if FSharpType.IsUnion t\r\n then\r\n FSharpType.GetUnionCases t\r\n |> Array.map (fun info ->\r\n let caseName = info.Name\r\n let caseTypes = info.GetFields() |> Array.map (fun prop -> prop.PropertyType)\r\n caseName, info, caseTypes)\r\n |> Some\r\n else None\r\n\r\n let (|MapType|_|) (t: Type) =\r\n if (t.FullName.StartsWith \"Microsoft.FSharp.Collections.FSharpMap`2\")\r\n then\r\n let genArgs = t.GetGenericArguments()\r\n Some (genArgs.[0], genArgs.[1])\r\n else None\r\n\r\n let (|ListType|_|) (t: Type) =\r\n if (t.FullName.StartsWith \"Microsoft.FSharp.Collections.FSharpList`1\")\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let rec flattenFuncTypes (typeDef: Type) =\r\n [| if FSharpType.IsFunction typeDef\r\n then let (domain, range) = FSharpType.GetFunctionElements typeDef\r\n yield! flattenFuncTypes domain\r\n yield! flattenFuncTypes range\r\n else yield typeDef |]\r\n\r\n let (|FuncType|_|) (t: Type) =\r\n if FSharpType.IsFunction t\r\n then flattenFuncTypes t |> Some\r\n else None\r\n\r\n let (|ArrayType|_|) (t:Type) =\r\n if t.IsArray\r\n then t.GetElementType() |> Some\r\n else None\r\n\r\n let (|OptionType|_|) (t:Type) =\r\n if (t.FullName.StartsWith \"Microsoft.FSharp.Core.FSharpOption`1\")\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|TupleType|_|) (t: Type) =\r\n if FSharpType.IsTuple t\r\n then FSharpType.GetTupleElements(t) |> Some\r\n else None\r\n\r\n let (|SeqType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.IEnumerable`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|DictionaryType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.Dictionary\"\r\n then\r\n let genArgs = t.GetGenericArguments()\r\n Some (genArgs.[0], genArgs.[1])\r\n else\r\n None\r\n\r\n let (|ResizeArrayType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.List\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|HashSetType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.HashSet\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|AsyncType|_|) (t:Type) =\r\n if t.FullName.StartsWith \"Microsoft.FSharp.Control.FSharpAsync`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|PromiseType|_|) (t:Type) =\r\n if t.FullName.StartsWith \"Fable.Core.JS.Promise`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let private lazyToDelayed (l:Lazy<_>) = fun () -> l.Value\r\n\r\n let (|EnumType|_|) (t: Type) =\r\n if t.IsEnum\r\n then Enum.GetUnderlyingType(t) |> Some\r\n else None\r\n\r\n let rec private _createTypeInfo (resolvedType: Type) : Fable.SimpleJson.TypeInfo =\r\n match resolvedType with\r\n | PrimitiveType typeInfo -> typeInfo\r\n | FuncType (types) -> TypeInfo.Func <| lazyToDelayed (lazy (Array.map createTypeInfo types))\r\n | RecordType fields ->\r\n let l = lazy (\r\n let fields =\r\n [| for (fieldName, fieldType) in fields ->\r\n { FieldName = fieldName;\r\n FieldType = createTypeInfo fieldType } |]\r\n fields, resolvedType)\r\n TypeInfo.Record (lazyToDelayed l)\r\n\r\n | UnionType cases ->\r\n let l = lazy (\r\n [| for (caseName, caseInfo, caseTypes) in cases ->\r\n { CaseName = caseName;\r\n Info = caseInfo;\r\n CaseTypes = Array.map createTypeInfo caseTypes } |], resolvedType)\r\n TypeInfo.Union (lazyToDelayed l)\r\n\r\n | EnumType elemType -> TypeInfo.Enum (lazyToDelayed <| lazy (createTypeInfo elemType, resolvedType))\r\n | ListType elemType -> TypeInfo.List (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | ResizeArrayType elemType -> TypeInfo.ResizeArray (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | HashSetType elemType -> TypeInfo.HashSet (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | ArrayType elemType -> TypeInfo.Array (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n // Checking for tuples has to happen after checking for arrays\r\n | TupleType types -> TypeInfo.Tuple (lazyToDelayed <| lazy (Array.map createTypeInfo types))\r\n | OptionType elemType -> TypeInfo.Option (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | Nullable elemType -> TypeInfo.Option (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | SetType elemType -> TypeInfo.Set (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | MapType (keyType, valueType) -> TypeInfo.Map (lazyToDelayed <| lazy (createTypeInfo keyType, createTypeInfo valueType))\r\n | DictionaryType (keyType, valueType) -> TypeInfo.Dictionary (lazyToDelayed <| lazy (createTypeInfo keyType, createTypeInfo valueType))\r\n | SeqType elemType -> TypeInfo.Seq (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | AsyncType elemType -> TypeInfo.Async (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | PromiseType elemType -> TypeInfo.Promise (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | _ -> TypeInfo.Any (lazyToDelayed <| lazy (resolvedType))\r\n\r\n and private typeInfoCache = Dictionary()\r\n\r\n and createTypeInfo (resolvedType: Type) : Fable.SimpleJson.TypeInfo =\r\n match typeInfoCache.TryGetValue resolvedType with\r\n | true, ti -> ti\r\n | false, _ ->\r\n let ti = _createTypeInfo resolvedType\r\n // see https://github.com/fable-compiler/Fable/issues/1871\r\n // Type equality doesn't work for anonymous records - all anon records are considered equal.\r\n // For anonymous records, the name is the empty string.\r\n let notAnonymousRecord =\r\n not (String.IsNullOrEmpty resolvedType.FullName)\r\n && not (resolvedType.FullName.EndsWith(\"`1[]\"))\r\n && not (resolvedType.FullName.EndsWith(\"`2[]\"))\r\n\r\n if notAnonymousRecord then\r\n typeInfoCache.[resolvedType] <- ti\r\n ti\r\n else\r\n ti\r\n\r\n type Fable.SimpleJson.TypeInfo with\r\n static member inline createFrom<'t> () : Fable.SimpleJson.TypeInfo =\r\n createTypeInfo typeof<'t>\r\n\r\n /// returns whether a type is primitive\r\n let isPrimitive = function\r\n | Unit\r\n | String\r\n | UInt16\r\n | UInt32\r\n | UInt64\r\n | Int32\r\n | Bool\r\n | Float32\r\n | Float\r\n | Decimal\r\n | Short\r\n | Long\r\n | Byte\r\n | DateTime\r\n | DateTimeOffset\r\n | BigInt\r\n | Guid\r\n | Option _ -> true\r\n | otherwise -> false\r\n\r\n /// returns whether the discrimiated union type is like a enum\r\n let enumUnion = function\r\n | TypeInfo.Union getCases ->\r\n getCases()\r\n |> fst\r\n |> Array.forall (fun case -> Array.isEmpty case.CaseTypes)\r\n | otherwise -> false\r\n","import { Union } from \"./Types\";\nimport { compare, equals, structuralHash } from \"./Util\";\n// Using a class here for better compatibility with TS files importing Some\nexport class Some {\n constructor(value) {\n this.value = value;\n }\n // Don't add \"Some\" for consistency with erased options\n toString() {\n return String(this.value);\n }\n toJSON() {\n return this.value;\n }\n GetHashCode() {\n return structuralHash(this.value);\n }\n Equals(other) {\n if (other == null) {\n return false;\n }\n else {\n return equals(this.value, other instanceof Some ? other.value : other);\n }\n }\n CompareTo(other) {\n if (other == null) {\n return 1;\n }\n else {\n return compare(this.value, other instanceof Some ? other.value : other);\n }\n }\n}\nexport function some(x) {\n return x == null || x instanceof Some ? new Some(x) : x;\n}\nexport function value(x) {\n if (x == null) {\n throw new Error(\"Option has no value\");\n }\n else {\n return x instanceof Some ? x.value : x;\n }\n}\nexport function tryValue(x) {\n return x instanceof Some ? x.value : x;\n}\nexport function toArray(opt) {\n return (opt == null) ? [] : [value(opt)];\n}\nexport function defaultArg(opt, defaultValue) {\n return (opt != null) ? value(opt) : defaultValue;\n}\nexport function defaultArgWith(opt, defThunk) {\n return (opt != null) ? value(opt) : defThunk();\n}\nexport function filter(predicate, opt) {\n return (opt != null) ? (predicate(value(opt)) ? opt : undefined) : opt;\n}\nexport function map(mapping, opt) {\n return (opt != null) ? some(mapping(value(opt))) : undefined;\n}\nexport function map2(mapping, opt1, opt2) {\n return (opt1 != null && opt2 != null) ? mapping(value(opt1), value(opt2)) : undefined;\n}\nexport function map3(mapping, opt1, opt2, opt3) {\n return (opt1 != null && opt2 != null && opt3 != null) ? mapping(value(opt1), value(opt2), value(opt3)) : undefined;\n}\nexport function bind(binder, opt) {\n return opt != null ? binder(value(opt)) : undefined;\n}\nexport function tryOp(op, arg) {\n try {\n return some(op(arg));\n }\n catch (_a) {\n return undefined;\n }\n}\n// CHOICE\nexport class Choice extends Union {\n}\nexport class Choice3 extends Union {\n}\nexport class Choice4 extends Union {\n}\nexport class Choice5 extends Union {\n}\nexport class Choice6 extends Union {\n}\nexport class Choice7 extends Union {\n}\nexport function choice1Of2(x) {\n return new Choice(0, \"Choice1Of2\", x);\n}\nexport function choice2Of2(x) {\n return new Choice(1, \"Choice2Of2\", x);\n}\nexport function tryValueIfChoice1Of2(x) {\n return x.tag === 0 ? some(x.fields[0]) : undefined;\n}\nexport function tryValueIfChoice2Of2(x) {\n return x.tag === 1 ? some(x.fields[0]) : undefined;\n}\n// RESULT\nexport class Result extends Union {\n}\nexport function ok(x) {\n return new Result(0, \"Ok\", x);\n}\nexport function error(x) {\n return new Result(1, \"Error\", x);\n}\nexport function mapOk(f, result) {\n return result.tag === 0 ? ok(f(result.fields[0])) : result;\n}\nexport function mapError(f, result) {\n return result.tag === 1 ? error(f(result.fields[0])) : result;\n}\nexport function bindOk(f, result) {\n return result.tag === 0 ? f(result.fields[0]) : result;\n}\n//# sourceMappingURL=Option.js.map","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VegaChart.vue?vue&type=style&index=0&id=e724d7dc&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VegaChart.vue?vue&type=style&index=0&id=e724d7dc&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VegaChart',{attrs:{\"title\":_vm.$t('charts.ostanizdrav.publishedByRisk.title'),\"name\":\"publishedByRisk-chart\",\"data\":_vm.plotData,\"description\":_vm.$t('charts.ostanizdrav.publishedByRisk.description'),\"faqAnchor\":\"ostanizdrav-publishedByRisk\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function ($t) {\n return {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\",\n \"width\": \"container\",\n \"height\": 250,\n \"data\": {\n \"url\": \"https://ostanizdrav.sledilnik.org/plots/dataByRisk.json\"\n },\n \"transform\": [\n {\n \"calculate\": $t('charts.ostanizdrav.publishedByRisk.tooltip'),\n \"as\": \"tt\"\n }\n ],\n \"layer\": [\n {\n \"encoding\": {\n \"x\": {\n \"title\": $t('charts.ostanizdrav.publishedByRisk.date'),\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0,\n \"tickCount\": \"week\",\n \"labelExpr\": \"[timeFormat(datum.value, '%d'), timeFormat(datum.value, '%d') <= '07' ? timeFormat(datum.value, '%b') : '']\",\n \"gridDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n },\n \"tickDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n }\n }\n },\n \"y\": {\n \"field\": \"published\",\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.publishedByRisk.published')\n }\n },\n \"color\": {\n \"title\": $t('charts.ostanizdrav.publishedByRisk.risk'),\n \"field\": \"risk\",\n \"type\": \"ordinal\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"line\",\n \"interpolate\": \"monotone\",\n \"point\": true\n }\n },\n {\n \"selection\": {\n \"label\": {\n \"type\": \"single\",\n \"nearest\": true,\n \"on\": \"mouseover\",\n \"encodings\": [\n \"x\"\n ],\n \"empty\": \"none\"\n }\n },\n \"mark\": \"point\",\n \"encoding\": {\n \"opacity\": {\n \"condition\": {\n \"selection\": \"label\",\n \"value\": 1\n },\n \"value\": 0\n }\n }\n }\n ]\n },\n {\n \"transform\": [\n {\n \"filter\": {\n \"selection\": \"label\"\n }\n }\n ],\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"rule\",\n \"color\": \"gray\"\n },\n \"encoding\": {\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0\n }\n }\n }\n },\n {\n \"encoding\": {\n \"text\": {\n \"type\": \"text\",\n \"field\": \"tt\"\n },\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labelAngle\": 0\n }\n },\n \"y\": {\n \"type\": \"quantitative\",\n \"field\": \"published\"\n }\n },\n \"layer\": [\n {\n \"mark\": {\n \"type\": \"text\",\n \"stroke\": \"white\",\n \"strokeWidth\": 2,\n \"align\": \"right\",\n \"dx\": -5,\n \"dy\": -5\n }\n },\n {\n \"mark\": {\n \"type\": \"text\",\n \"align\": \"right\",\n \"dx\": -5,\n \"dy\": -5\n },\n \"encoding\": {\n \"color\": {\n \"type\": \"ordinal\",\n \"field\": \"risk\"\n }\n }\n }\n ]\n }\n ]\n }\n ]\n }\n}","\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublishedByRiskChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublishedByRiskChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PublishedByRiskChart.vue?vue&type=template&id=69d6d4d9&\"\nimport script from \"./PublishedByRiskChart.vue?vue&type=script&lang=js&\"\nexport * from \"./PublishedByRiskChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { makeRangeStepFunction as makeDecimalRangeStepFunction } from \"./Decimal\";\nimport { makeRangeStepFunction as makeLongRangeStepFunction } from \"./Long\";\nimport { some, value } from \"./Option\";\nimport { compare, equals } from \"./Util\";\nexport class Enumerator {\n constructor(iter) {\n this.iter = iter;\n }\n MoveNext() {\n const cur = this.iter.next();\n this.current = cur.value;\n return !cur.done;\n }\n get Current() {\n return this.current;\n }\n Reset() {\n throw new Error(\"JS iterators cannot be reset\");\n }\n Dispose() {\n return;\n }\n}\nexport function getEnumerator(o) {\n return new Enumerator(o[Symbol.iterator]());\n}\nexport function toIterator(en) {\n return {\n next() {\n return en.MoveNext()\n ? { done: false, value: en.Current }\n : { done: true, value: undefined };\n },\n };\n}\n// export function toIterable(en: IEnumerable): Iterable {\n// return {\n// [Symbol.iterator]() {\n// return toIterator(en.GetEnumerator());\n// },\n// };\n// }\nfunction __failIfNone(res) {\n if (res == null) {\n throw new Error(\"Seq did not contain any matching element\");\n }\n return value(res);\n}\nfunction makeSeq(f) {\n const seq = {\n [Symbol.iterator]: f,\n toString: () => \"seq [\" + Array.from(seq).join(\"; \") + \"]\",\n };\n return seq;\n}\nexport function ofArray(xs) {\n return delay(() => unfold((i) => i != null && i < xs.length ? [xs[i], i + 1] : undefined, 0));\n}\nexport function allPairs(xs, ys) {\n let firstEl = true;\n const ysCache = [];\n return collect((x) => {\n if (firstEl) {\n firstEl = false;\n return map((y) => {\n ysCache.push(y);\n return [x, y];\n }, ys);\n }\n else {\n return ysCache.map((y) => [x, y]);\n // return map(function (i) {\n // return [x, ysCache[i]];\n // }, rangeNumber(0, 1, ysCache.length - 1));\n }\n }, xs);\n}\nexport function append(xs, ys) {\n return delay(() => {\n let firstDone = false;\n const i = xs[Symbol.iterator]();\n let iters = [i, undefined];\n return unfold(() => {\n var _a, _b;\n let cur;\n if (!firstDone) {\n cur = (_a = iters[0]) === null || _a === void 0 ? void 0 : _a.next();\n if (cur != null && !cur.done) {\n return [cur.value, iters];\n }\n else {\n firstDone = true;\n iters = [undefined, ys[Symbol.iterator]()];\n }\n }\n cur = (_b = iters[1]) === null || _b === void 0 ? void 0 : _b.next();\n return cur != null && !cur.done ? [cur.value, iters] : undefined;\n }, iters);\n });\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count++;\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count++;\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function concat(xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n let output;\n return unfold((innerIter) => {\n let hasFinished = false;\n while (!hasFinished) {\n if (innerIter == null) {\n const cur = iter.next();\n if (!cur.done) {\n innerIter = cur.value[Symbol.iterator]();\n }\n else {\n hasFinished = true;\n }\n }\n else {\n const cur = innerIter.next();\n if (!cur.done) {\n output = cur.value;\n hasFinished = true;\n }\n else {\n innerIter = undefined;\n }\n }\n }\n return innerIter != null ? [output, innerIter] : undefined;\n }, undefined);\n });\n}\nexport function collect(f, xs) {\n return concat(map(f, xs));\n}\nexport function choose(f, xs) {\n return delay(() => unfold((iter) => {\n let cur = iter.next();\n while (!cur.done) {\n const y = f(cur.value);\n if (y != null) {\n return [value(y), iter];\n }\n cur = iter.next();\n }\n return undefined;\n }, xs[Symbol.iterator]()));\n}\nexport function compareWith(f, xs, ys) {\n const nonZero = tryFind((i) => i !== 0, map2(f, xs, ys));\n return nonZero != null ? value(nonZero) : length(xs) - length(ys);\n}\nexport function delay(f) {\n return makeSeq(() => f()[Symbol.iterator]());\n}\nexport function empty() {\n return [];\n}\nexport function singleton(y) {\n return [y];\n}\nexport function enumerateFromFunctions(factory, moveNext, current) {\n return delay(() => unfold((e) => moveNext(e) ? [current(e), e] : undefined, factory()));\n}\nexport function enumerateWhile(cond, xs) {\n return concat(unfold(() => cond() ? [xs, true] : undefined, undefined));\n}\nexport function enumerateThenFinally(xs, finalFn) {\n return delay(() => {\n let iter;\n try {\n iter = xs[Symbol.iterator]();\n }\n catch (err) {\n try {\n return empty();\n }\n finally {\n finalFn();\n }\n }\n return unfold((it) => {\n try {\n const cur = it.next();\n return !cur.done ? [cur.value, it] : undefined;\n }\n catch (err) {\n return undefined;\n }\n finally {\n finalFn();\n }\n }, iter);\n });\n}\nexport function enumerateUsing(disp, work) {\n let isDisposed = false;\n const disposeOnce = () => {\n if (!isDisposed) {\n isDisposed = true;\n disp.Dispose();\n }\n };\n try {\n return enumerateThenFinally(work(disp), disposeOnce);\n }\n catch (err) {\n return void 0;\n }\n finally {\n disposeOnce();\n }\n}\nexport function exactlyOne(xs) {\n const iter = xs[Symbol.iterator]();\n const fst = iter.next();\n if (fst.done) {\n throw new Error(\"Seq was empty\");\n }\n const snd = iter.next();\n if (!snd.done) {\n throw new Error(\"Seq had multiple items\");\n }\n return fst.value;\n}\nexport function except(itemsToExclude, source) {\n const exclusionItems = Array.from(itemsToExclude);\n const testIsNotInExclusionItems = (element) => !exclusionItems.some((excludedItem) => equals(excludedItem, element));\n return filter(testIsNotInExclusionItems, source);\n}\nexport function exists(f, xs) {\n let cur;\n for (const iter = xs[Symbol.iterator]();;) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n if (f(cur.value)) {\n return true;\n }\n }\n return false;\n}\nexport function exists2(f, xs, ys) {\n let cur1;\n let cur2;\n for (const iter1 = xs[Symbol.iterator](), iter2 = ys[Symbol.iterator]();;) {\n cur1 = iter1.next();\n cur2 = iter2.next();\n if (cur1.done || cur2.done) {\n break;\n }\n if (f(cur1.value, cur2.value)) {\n return true;\n }\n }\n return false;\n}\nexport function forAll(f, xs) {\n return !exists((x) => !f(x), xs);\n}\nexport function forAll2(f, xs, ys) {\n return !exists2((x, y) => !f(x, y), xs, ys);\n}\nexport function contains(i, xs) {\n return exists((x) => equals(x, i), xs);\n}\nexport function filter(f, xs) {\n return delay(() => unfold((iter) => {\n let cur = iter.next();\n while (!cur.done) {\n if (f(cur.value)) {\n return [cur.value, iter];\n }\n cur = iter.next();\n }\n return undefined;\n }, xs[Symbol.iterator]()));\n}\nexport function where(f, xs) {\n return filter(f, xs);\n}\nexport function fold(f, acc, xs) {\n if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {\n return xs.reduce(f, acc);\n }\n else {\n let cur;\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n acc = f(acc, cur.value, i);\n }\n return acc;\n }\n}\nexport function foldBack(f, xs, acc) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n for (let i = arr.length - 1; i >= 0; i--) {\n acc = f(arr[i], acc, i);\n }\n return acc;\n}\nexport function fold2(f, acc, xs, ys) {\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n let cur1;\n let cur2;\n for (let i = 0;; i++) {\n cur1 = iter1.next();\n cur2 = iter2.next();\n if (cur1.done || cur2.done) {\n break;\n }\n acc = f(acc, cur1.value, cur2.value, i);\n }\n return acc;\n}\nexport function foldBack2(f, xs, ys, acc) {\n const ar1 = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n const ar2 = Array.isArray(ys) || ArrayBuffer.isView(ys) ? ys : Array.from(ys);\n for (let i = ar1.length - 1; i >= 0; i--) {\n acc = f(ar1[i], ar2[i], acc, i);\n }\n return acc;\n}\nexport function tryHead(xs) {\n const iter = xs[Symbol.iterator]();\n const cur = iter.next();\n return cur.done ? undefined : some(cur.value);\n}\nexport function head(xs) {\n return __failIfNone(tryHead(xs));\n}\nexport function initialize(n, f) {\n return delay(() => unfold((i) => i < n ? [f(i), i + 1] : undefined, 0));\n}\nexport function initializeInfinite(f) {\n return delay(() => unfold((i) => [f(i), i + 1], 0));\n}\nexport function tryItem(i, xs) {\n if (i < 0) {\n return undefined;\n }\n if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {\n return i < xs.length ? some(xs[i]) : undefined;\n }\n for (let j = 0, iter = xs[Symbol.iterator]();; j++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n if (j === i) {\n return some(cur.value);\n }\n }\n return undefined;\n}\nexport function item(i, xs) {\n return __failIfNone(tryItem(i, xs));\n}\nexport function iterate(f, xs) {\n fold((_, x) => (f(x), undefined), undefined, xs);\n}\nexport function iterate2(f, xs, ys) {\n fold2((_, x, y) => (f(x, y), undefined), undefined, xs, ys);\n}\nexport function iterateIndexed(f, xs) {\n fold((_, x, i) => (f(i !== null && i !== void 0 ? i : 0, x), undefined), undefined, xs);\n}\nexport function iterateIndexed2(f, xs, ys) {\n fold2((_, x, y, i) => (f(i !== null && i !== void 0 ? i : 0, x, y), undefined), undefined, xs, ys);\n}\nexport function isEmpty(xs) {\n const i = xs[Symbol.iterator]();\n return i.next().done;\n}\nexport function tryLast(xs) {\n return isEmpty(xs) ? undefined : some(reduce((_, x) => x, xs));\n}\nexport function last(xs) {\n return __failIfNone(tryLast(xs));\n}\nexport function length(xs) {\n return Array.isArray(xs) || ArrayBuffer.isView(xs)\n ? xs.length\n : fold((acc, _x) => acc + 1, 0, xs);\n}\nexport function map(f, xs) {\n return delay(() => unfold((iter) => {\n const cur = iter.next();\n return !cur.done ? [f(cur.value), iter] : undefined;\n }, xs[Symbol.iterator]()));\n}\nexport function mapIndexed(f, xs) {\n return delay(() => {\n let i = 0;\n return unfold((iter) => {\n const cur = iter.next();\n return !cur.done ? [f(i++, cur.value), iter] : undefined;\n }, xs[Symbol.iterator]());\n });\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(f, xs, ys) {\n return delay(() => {\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n return unfold(() => {\n const cur1 = iter1.next();\n const cur2 = iter2.next();\n return !cur1.done && !cur2.done ? [f(cur1.value, cur2.value), undefined] : undefined;\n }, undefined);\n });\n}\nexport function mapIndexed2(f, xs, ys) {\n return delay(() => {\n let i = 0;\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n return unfold(() => {\n const cur1 = iter1.next();\n const cur2 = iter2.next();\n return !cur1.done && !cur2.done ? [f(i++, cur1.value, cur2.value), undefined] : undefined;\n }, undefined);\n });\n}\nexport function map3(f, xs, ys, zs) {\n return delay(() => {\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n const iter3 = zs[Symbol.iterator]();\n return unfold(() => {\n const cur1 = iter1.next();\n const cur2 = iter2.next();\n const cur3 = iter3.next();\n return !cur1.done && !cur2.done && !cur3.done ? [f(cur1.value, cur2.value, cur3.value), undefined] : undefined;\n }, undefined);\n });\n}\nexport function mapFold(f, acc, xs, transform) {\n const result = [];\n let r;\n let cur;\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n [r, acc] = f(acc, cur.value);\n result.push(r);\n }\n return transform !== void 0 ? [transform(result), acc] : [result, acc];\n}\nexport function mapFoldBack(f, xs, acc, transform) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n const result = [];\n let r;\n for (let i = arr.length - 1; i >= 0; i--) {\n [r, acc] = f(arr[i], acc);\n result.push(r);\n }\n return transform !== void 0 ? [transform(result), acc] : [result, acc];\n}\nexport function max(xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(acc, x) === 1 ? acc : x, xs);\n}\nexport function maxBy(f, xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(f(acc), f(x)) === 1 ? acc : x, xs);\n}\nexport function min(xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(acc, x) === -1 ? acc : x, xs);\n}\nexport function minBy(f, xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(f(acc), f(x)) === -1 ? acc : x, xs);\n}\nexport function pairwise(xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n const cur = iter.next();\n if (cur.done) {\n return empty();\n }\n const hd = cur.value;\n const tl = tail(xs);\n const ys = scan(([_, last], next) => [last, next], [hd, hd], tl);\n return skip(1, ys);\n });\n}\nexport function rangeChar(first, last) {\n return delay(() => unfold((x) => x <= last ? [x, String.fromCharCode(x.charCodeAt(0) + 1)] : undefined, first));\n}\nexport function rangeLong(first, step, last, unsigned) {\n const stepFn = makeLongRangeStepFunction(step, last, unsigned);\n return delay(() => unfold(stepFn, first));\n}\nexport function rangeDecimal(first, step, last) {\n const stepFn = makeDecimalRangeStepFunction(step, last);\n return delay(() => unfold(stepFn, first));\n}\nexport function rangeNumber(first, step, last) {\n if (step === 0) {\n throw new Error(\"Step cannot be 0\");\n }\n return delay(() => unfold((x) => step > 0 && x <= last || step < 0 && x >= last ? [x, x + step] : undefined, first));\n}\nexport function readOnly(xs) {\n return map((x) => x, xs);\n}\nexport function reduce(f, xs) {\n if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {\n return xs.reduce(f);\n }\n const iter = xs[Symbol.iterator]();\n let cur = iter.next();\n if (cur.done) {\n throw new Error(\"Seq was empty\");\n }\n let acc = cur.value;\n while (true) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n acc = f(acc, cur.value);\n }\n return acc;\n}\nexport function reduceBack(f, xs) {\n const ar = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n if (ar.length === 0) {\n throw new Error(\"Seq was empty\");\n }\n let acc = ar[ar.length - 1];\n for (let i = ar.length - 2; i >= 0; i--) {\n acc = f(ar[i], acc, i);\n }\n return acc;\n}\nexport function replicate(n, x) {\n return initialize(n, () => x);\n}\nexport function reverse(xs) {\n const ar = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);\n return ofArray(ar.reverse());\n}\nexport function scan(f, seed, xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n return unfold((acc) => {\n if (acc == null) {\n return [seed, seed];\n }\n const cur = iter.next();\n if (!cur.done) {\n acc = f(acc, cur.value);\n return [acc, acc];\n }\n return undefined;\n }, undefined);\n });\n}\nexport function scanBack(f, xs, seed) {\n return reverse(scan((acc, x) => f(x, acc), seed, reverse(xs)));\n}\nexport function skip(n, xs) {\n return makeSeq(() => {\n const iter = xs[Symbol.iterator]();\n for (let i = 1; i <= n; i++) {\n if (iter.next().done) {\n throw new Error(\"Seq has not enough elements\");\n }\n }\n return iter;\n });\n}\nexport function skipWhile(f, xs) {\n return delay(() => {\n let hasPassed = false;\n return filter((x) => hasPassed || (hasPassed = !f(x)), xs);\n });\n}\nexport function sortWith(f, xs) {\n const ys = Array.from(xs);\n return ofArray(ys.sort(f));\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function tail(xs) {\n return skip(1, xs);\n}\nexport function take(n, xs, truncate = false) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n return unfold((i) => {\n if (i < n) {\n const cur = iter.next();\n if (!cur.done) {\n return [cur.value, i + 1];\n }\n if (!truncate) {\n throw new Error(\"Seq has not enough elements\");\n }\n }\n return undefined;\n }, 0);\n });\n}\nexport function truncate(n, xs) {\n return take(n, xs, true);\n}\nexport function takeWhile(f, xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n return unfold(() => {\n const cur = iter.next();\n if (!cur.done && f(cur.value)) {\n return [cur.value, undefined];\n }\n return undefined;\n }, 0);\n });\n}\nexport function tryFind(f, xs, defaultValue) {\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n if (f(cur.value, i)) {\n return some(cur.value);\n }\n }\n return defaultValue === void 0 ? undefined : some(defaultValue);\n}\nexport function find(f, xs) {\n return __failIfNone(tryFind(f, xs));\n}\nexport function tryFindBack(f, xs, defaultValue) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);\n return tryFind(f, arr.reverse(), defaultValue);\n}\nexport function findBack(f, xs) {\n return __failIfNone(tryFindBack(f, xs));\n}\nexport function tryFindIndex(f, xs) {\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n if (f(cur.value, i)) {\n return i;\n }\n }\n return undefined;\n}\nexport function findIndex(f, xs) {\n return __failIfNone(tryFindIndex(f, xs));\n}\nexport function tryFindIndexBack(f, xs) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);\n for (let i = arr.length - 1; i >= 0; i--) {\n if (f(arr[i], i)) {\n return i;\n }\n }\n return undefined;\n}\nexport function findIndexBack(f, xs) {\n return __failIfNone(tryFindIndexBack(f, xs));\n}\nexport function tryPick(f, xs) {\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n const y = f(cur.value, i);\n if (y != null) {\n return y;\n }\n }\n return undefined;\n}\nexport function pick(f, xs) {\n return __failIfNone(tryPick(f, xs));\n}\nexport function unfold(f, fst) {\n return makeSeq(() => {\n // Capture a copy of the first value in the closure\n // so the sequence is restarted every time, see #1230\n let acc = fst;\n const iter = {\n next() {\n const res = f(acc);\n if (res != null) {\n const v = value(res);\n if (v != null) {\n acc = v[1];\n return { done: false, value: v[0] };\n }\n }\n return { done: true, value: undefined };\n },\n };\n return iter;\n });\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function windowed(windowSize, source) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n }\n return makeSeq(() => {\n let window = [];\n const iter = source[Symbol.iterator]();\n const iter2 = {\n next() {\n let cur;\n while (window.length < windowSize) {\n if ((cur = iter.next()).done) {\n return { done: true, value: undefined };\n }\n window.push(cur.value);\n }\n const value = window;\n window = window.slice(1);\n return { done: false, value };\n },\n };\n return iter2;\n });\n}\nexport function transpose(source) {\n return makeSeq(() => {\n const iters = Array.from(source, (x) => x[Symbol.iterator]());\n const iter = {\n next() {\n if (iters.length === 0) {\n return { done: true, value: undefined }; // empty sequence\n }\n const results = Array.from(iters, (iter) => iter.next());\n if (results[0].done) {\n if (!results.every((x) => x.done)) {\n throw new Error(\"Sequences have different lengths\");\n }\n return { done: true, value: undefined };\n }\n else {\n if (!results.every((x) => !x.done)) {\n throw new Error(\"Sequences have different lengths\");\n }\n const values = results.map((x) => x.value);\n return { done: false, value: values };\n }\n },\n };\n return iter;\n });\n}\n//# sourceMappingURL=Seq.js.map","// tslint:disable:ban-types\nexport function bindThis(this$, source) {\n for (const key of Object.keys(source)) {\n if (typeof source[key] === \"function\") {\n source[key] = source[key].bind(this$);\n }\n }\n return source;\n}\n// Object.assign flattens getters and setters\n// See https://stackoverflow.com/questions/37054596/js-es5-how-to-assign-objects-with-setters-and-getters\nexport function extend(target, ...sources) {\n for (const source of sources) {\n for (const key of Object.keys(source)) {\n const descr = Object.getOwnPropertyDescriptor(source, key);\n if (descr) {\n Object.defineProperty(target, key, descr);\n }\n }\n }\n return target;\n}\nexport function isIterable(x) {\n return x != null && typeof x === \"object\" && Symbol.iterator in x;\n}\nexport function isArrayLike(x) {\n return x != null && (Array.isArray(x) || ArrayBuffer.isView(x));\n}\nexport function isComparer(x) {\n return x != null && typeof x.Compare === \"function\";\n}\nexport function isComparable(x) {\n return x != null && typeof x.CompareTo === \"function\";\n}\nexport function isEquatable(x) {\n return x != null && typeof x.Equals === \"function\";\n}\nexport function isHashable(x) {\n return x != null && typeof x.GetHashCode === \"function\";\n}\nexport function isDisposable(x) {\n return x != null && typeof x.Dispose === \"function\";\n}\nexport class Comparer {\n constructor(f) {\n this.Compare = f || compare;\n }\n}\nexport function comparerFromEqualityComparer(comparer) {\n // Sometimes IEqualityComparer also implements IComparer\n if (isComparer(comparer)) {\n return new Comparer(comparer.Compare);\n }\n else {\n return new Comparer((x, y) => {\n const xhash = comparer.GetHashCode(x);\n const yhash = comparer.GetHashCode(y);\n if (xhash === yhash) {\n return comparer.Equals(x, y) ? 0 : -1;\n }\n else {\n return xhash < yhash ? -1 : 1;\n }\n });\n }\n}\n// TODO: Move these three methods to Map and Set modules\nexport function containsValue(v, map) {\n for (const kv of map) {\n if (equals(v, kv[1])) {\n return true;\n }\n }\n return false;\n}\nexport function tryGetValue(map, key, defaultValue) {\n return map.has(key) ? [true, map.get(key)] : [false, defaultValue];\n}\nexport function addToSet(v, set) {\n if (set.has(v)) {\n return false;\n }\n set.add(v);\n return true;\n}\nexport function assertEqual(actual, expected, msg) {\n if (!equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport function assertNotEqual(actual, expected, msg) {\n if (equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport class Lazy {\n constructor(factory) {\n this.factory = factory;\n this.isValueCreated = false;\n }\n get Value() {\n if (!this.isValueCreated) {\n this.createdValue = this.factory();\n this.isValueCreated = true;\n }\n return this.createdValue;\n }\n get IsValueCreated() {\n return this.isValueCreated;\n }\n}\nexport function lazyFromValue(v) {\n return new Lazy(() => v);\n}\nexport function padWithZeros(i, length) {\n let str = i.toString(10);\n while (str.length < length) {\n str = \"0\" + str;\n }\n return str;\n}\nexport function padLeftAndRightWithZeros(i, lengthLeft, lengthRight) {\n let str = i.toString(10);\n while (str.length < lengthLeft) {\n str = \"0\" + str;\n }\n while (str.length < lengthRight) {\n str = str + \"0\";\n }\n return str;\n}\nexport function dateOffset(date) {\n const date1 = date;\n return typeof date1.offset === \"number\"\n ? date1.offset\n : (date.kind === 1 /* UTC */\n ? 0 : date.getTimezoneOffset() * -60000);\n}\nexport function int16ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int32ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFFFFFF + i + 1 : i;\n return i.toString(radix);\n}\nlet ObjectRef = /** @class */ (() => {\n class ObjectRef {\n static id(o) {\n if (!ObjectRef.idMap.has(o)) {\n ObjectRef.idMap.set(o, ++ObjectRef.count);\n }\n return ObjectRef.idMap.get(o);\n }\n }\n ObjectRef.idMap = new WeakMap();\n ObjectRef.count = 0;\n return ObjectRef;\n})();\nexport { ObjectRef };\nexport function stringHash(s) {\n let i = 0;\n let h = 5381;\n const len = s.length;\n while (i < len) {\n h = (h * 33) ^ s.charCodeAt(i++);\n }\n return h;\n}\nexport function numberHash(x) {\n return x * 2654435761 | 0;\n}\n// From https://stackoverflow.com/a/37449594\nexport function combineHashCodes(hashes) {\n if (hashes.length === 0) {\n return 0;\n }\n return hashes.reduce((h1, h2) => {\n return ((h1 << 5) + h1) ^ h2;\n });\n}\nexport function identityHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"string\":\n return stringHash(x);\n default:\n return numberHash(ObjectRef.id(x));\n }\n}\nexport function structuralHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"string\":\n return stringHash(x);\n default: {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else if (isArrayLike(x)) {\n const len = x.length;\n const hashes = new Array(len);\n for (let i = 0; i < len; i++) {\n hashes[i] = structuralHash(x[i]);\n }\n return combineHashCodes(hashes);\n }\n else {\n return stringHash(String(x));\n }\n }\n }\n}\nexport function equalArraysWith(x, y, eq) {\n if (x == null) {\n return y == null;\n }\n if (y == null) {\n return false;\n }\n if (x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; i++) {\n if (!eq(x[i], y[i])) {\n return false;\n }\n }\n return true;\n}\nexport function equalArrays(x, y) {\n return equalArraysWith(x, y, equals);\n}\n// export function equalObjects(x: { [k: string]: any }, y: { [k: string]: any }): boolean {\n// if (x == null) { return y == null; }\n// if (y == null) { return false; }\n// const xKeys = Object.keys(x);\n// const yKeys = Object.keys(y);\n// if (xKeys.length !== yKeys.length) {\n// return false;\n// }\n// xKeys.sort();\n// yKeys.sort();\n// for (let i = 0; i < xKeys.length; i++) {\n// if (xKeys[i] !== yKeys[i] || !equals(x[xKeys[i]], y[yKeys[i]])) {\n// return false;\n// }\n// }\n// return true;\n// }\nexport function equals(x, y) {\n if (x === y) {\n return true;\n }\n else if (x == null) {\n return y == null;\n }\n else if (y == null) {\n return false;\n }\n else if (typeof x !== \"object\") {\n return false;\n }\n else if (isEquatable(x)) {\n return x.Equals(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) && equalArrays(x, y);\n }\n else if (x instanceof Date) {\n return (y instanceof Date) && compareDates(x, y) === 0;\n }\n else {\n return false;\n }\n}\nexport function compareDates(x, y) {\n let xtime;\n let ytime;\n // DateTimeOffset and DateTime deals with equality differently.\n if (\"offset\" in x && \"offset\" in y) {\n xtime = x.getTime();\n ytime = y.getTime();\n }\n else {\n xtime = x.getTime() + dateOffset(x);\n ytime = y.getTime() + dateOffset(y);\n }\n return xtime === ytime ? 0 : (xtime < ytime ? -1 : 1);\n}\nexport function comparePrimitives(x, y) {\n return x === y ? 0 : (x < y ? -1 : 1);\n}\nexport function compareArraysWith(x, y, comp) {\n if (x == null) {\n return y == null ? 0 : 1;\n }\n if (y == null) {\n return -1;\n }\n if (x.length !== y.length) {\n return x.length < y.length ? -1 : 1;\n }\n for (let i = 0, j = 0; i < x.length; i++) {\n j = comp(x[i], y[i]);\n if (j !== 0) {\n return j;\n }\n }\n return 0;\n}\nexport function compareArrays(x, y) {\n return compareArraysWith(x, y, compare);\n}\nexport function compareObjects(x, y) {\n if (x == null) {\n return y == null ? 0 : 1;\n }\n if (y == null) {\n return -1;\n }\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return xKeys.length < yKeys.length ? -1 : 1;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0, j = 0; i < xKeys.length; i++) {\n const key = xKeys[i];\n if (key !== yKeys[i]) {\n return key < yKeys[i] ? -1 : 1;\n }\n else {\n j = compare(x[key], y[key]);\n if (j !== 0) {\n return j;\n }\n }\n }\n return 0;\n}\nexport function compare(x, y) {\n if (x === y) {\n return 0;\n }\n else if (x == null) {\n return y == null ? 0 : -1;\n }\n else if (y == null) {\n return 1;\n }\n else if (typeof x !== \"object\") {\n return x < y ? -1 : 1;\n }\n else if (isComparable(x)) {\n return x.CompareTo(y);\n }\n else if (isArrayLike(x) && isArrayLike(y)) {\n return compareArrays(x, y);\n }\n else if (x instanceof Date && y instanceof Date) {\n return compareDates(x, y);\n }\n else {\n return 1;\n }\n}\nexport function min(comparer, x, y) {\n return comparer(x, y) < 0 ? x : y;\n}\nexport function max(comparer, x, y) {\n return comparer(x, y) > 0 ? x : y;\n}\nexport function createAtom(value) {\n let atom = value;\n return (value, isSetter) => {\n if (!isSetter) {\n return atom;\n }\n else {\n atom = value;\n return void 0;\n }\n };\n}\nconst CaseRules = {\n None: 0,\n LowerFirst: 1,\n SnakeCase: 2,\n SnakeCaseAllCaps: 3,\n KebabCase: 4,\n};\nfunction dashify(str, separator) {\n return str.replace(/[a-z]?[A-Z]/g, (m) => m.length === 1\n ? m.toLowerCase()\n : m.charAt(0) + separator + m.charAt(1).toLowerCase());\n}\nfunction changeCase(str, caseRule) {\n switch (caseRule) {\n case CaseRules.LowerFirst:\n return str.charAt(0).toLowerCase() + str.slice(1);\n case CaseRules.SnakeCase:\n return dashify(str, \"_\");\n case CaseRules.SnakeCaseAllCaps:\n return dashify(str, \"_\").toUpperCase();\n case CaseRules.KebabCase:\n return dashify(str, \"-\");\n case CaseRules.None:\n default:\n return str;\n }\n}\nexport function createObj(fields, caseRule = CaseRules.None) {\n function fail(kvPair) {\n throw new Error(\"Cannot infer key and value of \" + String(kvPair));\n }\n const o = {};\n const definedCaseRule = caseRule;\n for (let kvPair of fields) {\n let caseRule = CaseRules.None;\n if (kvPair == null) {\n fail(kvPair);\n }\n // Deflate unions and use the defined case rule\n if (typeof kvPair.toJSON === \"function\") {\n kvPair = kvPair.toJSON();\n caseRule = definedCaseRule;\n }\n if (Array.isArray(kvPair)) {\n switch (kvPair.length) {\n case 0:\n fail(kvPair);\n break;\n case 1:\n o[changeCase(kvPair[0], caseRule)] = true;\n break;\n case 2:\n const value = kvPair[1];\n o[changeCase(kvPair[0], caseRule)] = value;\n break;\n default:\n o[changeCase(kvPair[0], caseRule)] = kvPair.slice(1);\n }\n }\n else if (typeof kvPair === \"string\") {\n o[changeCase(kvPair, caseRule)] = true;\n }\n else {\n fail(kvPair);\n }\n }\n return o;\n}\nexport function jsOptions(mutator) {\n const opts = {};\n mutator(opts);\n return opts;\n}\nexport function round(value, digits = 0) {\n const m = Math.pow(10, digits);\n const n = +(digits ? value * m : value).toFixed(8);\n const i = Math.floor(n);\n const f = n - i;\n const e = 1e-8;\n const r = (f > 0.5 - e && f < 0.5 + e) ? ((i % 2 === 0) ? i : i + 1) : Math.round(n);\n return digits ? r / m : r;\n}\nexport function sign(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n}\nexport function randomNext(min, max) {\n return Math.floor(Math.random() * (max - min)) + min;\n}\nexport function randomBytes(buffer) {\n if (buffer == null) {\n throw new Error(\"Buffer cannot be null\");\n }\n for (let i = 0; i < buffer.length; i += 6) {\n // Pick random 48-bit number. Fill buffer in 2 24-bit chunks to avoid bitwise truncation.\n let r = Math.floor(Math.random() * 281474976710656); // Low 24 bits = chunk 1.\n const rhi = Math.floor(r / 16777216); // High 24 bits shifted via division = chunk 2.\n for (let j = 0; j < 6 && i + j < buffer.length; j++) {\n if (j === 3) {\n r = rhi;\n }\n buffer[i + j] = r & 255;\n r >>>= 8;\n }\n }\n}\nexport function unescapeDataString(s) {\n // https://stackoverflow.com/a/4458580/524236\n return decodeURIComponent((s).replace(/\\+/g, \"%20\"));\n}\nexport function escapeDataString(s) {\n return encodeURIComponent(s).replace(/!/g, \"%21\")\n .replace(/'/g, \"%27\")\n .replace(/\\(/g, \"%28\")\n .replace(/\\)/g, \"%29\")\n .replace(/\\*/g, \"%2A\");\n}\nexport function escapeUriString(s) {\n return encodeURI(s);\n}\n// ICollection.Clear and Count members can be called on Arrays\n// or Dictionaries so we need a runtime check (see #1120)\nexport function count(col) {\n if (isArrayLike(col)) {\n return col.length;\n }\n else {\n let count = 0;\n for (const _ of col) {\n count++;\n }\n return count;\n }\n}\nexport function clear(col) {\n if (isArrayLike(col)) {\n col.splice(0);\n }\n else {\n col.clear();\n }\n}\nconst CURRIED_KEY = \"__CURRIED__\";\nexport function uncurry(arity, f) {\n // f may be a function option with None value\n if (f == null) {\n return undefined;\n }\n // The function is already uncurried\n if (f.length > 1) {\n // if (CURRIED_KEY in f) { // This doesn't always work\n return f;\n }\n let uncurriedFn;\n switch (arity) {\n case 2:\n uncurriedFn = (a1, a2) => f(a1)(a2);\n break;\n case 3:\n uncurriedFn = (a1, a2, a3) => f(a1)(a2)(a3);\n break;\n case 4:\n uncurriedFn = (a1, a2, a3, a4) => f(a1)(a2)(a3)(a4);\n break;\n case 5:\n uncurriedFn = (a1, a2, a3, a4, a5) => f(a1)(a2)(a3)(a4)(a5);\n break;\n case 6:\n uncurriedFn = (a1, a2, a3, a4, a5, a6) => f(a1)(a2)(a3)(a4)(a5)(a6);\n break;\n case 7:\n uncurriedFn = (a1, a2, a3, a4, a5, a6, a7) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7);\n break;\n case 8:\n uncurriedFn = (a1, a2, a3, a4, a5, a6, a7, a8) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8);\n break;\n default:\n throw new Error(\"Uncurrying to more than 8-arity is not supported: \" + arity);\n }\n uncurriedFn[CURRIED_KEY] = f;\n return uncurriedFn;\n}\nexport function curry(arity, f) {\n if (f == null) {\n return undefined;\n }\n if (CURRIED_KEY in f) {\n return f[CURRIED_KEY];\n }\n switch (arity) {\n case 2:\n return (a1) => (a2) => f(a1, a2);\n case 3:\n return (a1) => (a2) => (a3) => f(a1, a2, a3);\n case 4:\n return (a1) => (a2) => (a3) => (a4) => f(a1, a2, a3, a4);\n case 5:\n return (a1) => (a2) => (a3) => (a4) => (a5) => f(a1, a2, a3, a4, a5);\n case 6:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => f(a1, a2, a3, a4, a5, a6);\n case 7:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => f(a1, a2, a3, a4, a5, a6, a7);\n case 8:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => f(a1, a2, a3, a4, a5, a6, a7, a8);\n default:\n throw new Error(\"Currying to more than 8-arity is not supported: \" + arity);\n }\n}\nexport function partialApply(arity, f, args) {\n if (f == null) {\n return undefined;\n }\n else if (CURRIED_KEY in f) {\n f = f[CURRIED_KEY];\n for (let i = 0; i < args.length; i++) {\n f = f(args[i]);\n }\n return f;\n }\n else {\n switch (arity) {\n case 1:\n // Wrap arguments to make sure .concat doesn't destruct arrays. Example\n // [1,2].concat([3,4],5) --> [1,2,3,4,5] // fails\n // [1,2].concat([[3,4],5]) --> [1,2,[3,4],5] // ok\n return (a1) => f.apply(undefined, args.concat([a1]));\n case 2:\n return (a1) => (a2) => f.apply(undefined, args.concat([a1, a2]));\n case 3:\n return (a1) => (a2) => (a3) => f.apply(undefined, args.concat([a1, a2, a3]));\n case 4:\n return (a1) => (a2) => (a3) => (a4) => f.apply(undefined, args.concat([a1, a2, a3, a4]));\n case 5:\n return (a1) => (a2) => (a3) => (a4) => (a5) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5]));\n case 6:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5, a6]));\n case 7:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5, a6, a7]));\n case 8:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5, a6, a7, a8]));\n default:\n throw new Error(\"Partially applying to more than 8-arity is not supported: \" + arity);\n }\n }\n}\nexport function mapCurriedArgs(fn, mappings) {\n function mapArg(fn, arg, mappings, idx) {\n const mapping = mappings[idx];\n if (mapping !== 0) {\n const expectedArity = mapping[0];\n const actualArity = mapping[1];\n if (expectedArity > 1) {\n arg = curry(expectedArity, arg);\n }\n if (actualArity > 1) {\n arg = uncurry(actualArity, arg);\n }\n }\n const res = fn(arg);\n if (idx + 1 === mappings.length) {\n return res;\n }\n else {\n return (arg) => mapArg(res, arg, mappings, idx + 1);\n }\n }\n return (arg) => mapArg(fn, arg, mappings, 0);\n}\nexport function addToDict(dict, k, v) {\n if (dict.has(k)) {\n throw new Error(\"An item with the same key has already been added. Key: \" + k);\n }\n dict.set(k, v);\n}\nexport function getItemFromDict(map, key) {\n if (map.has(key)) {\n return map.get(key);\n }\n else {\n throw new Error(`The given key '${key}' was not present in the dictionary.`);\n }\n}\n//# sourceMappingURL=Util.js.map","/* eslint-disable */\n\nimport React from 'react'\nimport Highcharts from 'highcharts'\nimport StockModule from 'highcharts/modules/stock'\nimport MapModule from 'highcharts/modules/map'\nStockModule(Highcharts)\nMapModule(Highcharts)\n\nimport HighchartsReact from 'highcharts-react-official';\nrequire(\"./_highcharts.scss\");\n\nwindow.Highcharts = window.Highcharts || Highcharts;\n\nlet bpOptions = {\n\n chart: {\n type: 'boxplot'\n },\n\n title: {\n text: 'Highcharts Box Plot Example'\n },\n\n xAxis: {\n categories: ['1', '2', '3', '4', '5'],\n title: {\n text: 'Experiment No.'\n }\n },\n\n yAxis: {\n title: {\n text: 'Observations'\n },\n },\n\n series: [{\n name: 'Observations',\n data: [\n [760, 801, 848, 895, 965],\n [733, 853, 939, 980, 1080],\n [714, 762, 817, 870, 918],\n [724, 802, 806, 871, 950],\n [834, 836, 864, 882, 910]\n ],\n //tooltip: {\n // headerFormat: 'Experiment No {point.key}
'\n //}\n }]\n\n}\n\nfunction objectWithFields(o, fieldNames) {\n let res = {}\n for (let k in o) {\n //console.log(\"k=\",k, fieldNames.includes(k), fieldNames);\n if (!o.hasOwnProperty(k))\n continue;\n if (fieldNames.includes(k)) {\n res[k] = o[k];\n }\n }\n return res;\n}\n\nfunction genericArray(array, keepFields) {\n let result = [];\n for (let x of array) {\n result.push(objectWithFields(x, keepFields));\n }\n //console.log(\"mapped as:\", result)\n return result;\n}\n\nfunction loadScript(src, onLoad) {\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n script.type = 'text/javascript';\n script.onload = onLoad;\n script.src = src;\n head.appendChild(script);\n}\n\n/// workaround to replace labelFormatter with labelFormatter(this)\nfunction wrapLabelFormatterWithThis({legend, ...options}) {\n if (!!legend) {\n let labelFormatter = legend.labelFormatter;\n if (!!labelFormatter) {\n function lfmt() {return labelFormatter(this);}\n legend.labelFormatter = lfmt;\n }\n return {legend, ...options}\n } else {\n return options;\n }\n\n}\n\nfunction renderChart(options) {\n options = wrapLabelFormatterWithThis(options);\n return React.createElement(HighchartsReact, {\n highcharts: Highcharts,\n containerProps: {style: {height:\"100%\"}},\n options: {...options},\n }, null);\n}\n\nfunction renderChartFromWindow(options) {\n options = wrapLabelFormatterWithThis(options);\n return React.createElement(\n HighchartsReact,\n {\n highcharts: Highcharts,\n constructorType: 'stockChart',\n containerProps: { style: { height: '100%' }},\n options: { ...options },\n },\n null\n )\n}\n\nfunction renderMap(options) {\n options = wrapLabelFormatterWithThis(options);\n return React.createElement(HighchartsReact, {\n highcharts: Highcharts,\n constructorType: \"mapChart\",\n containerProps: {style: {height:\"100%\"}},\n options: {...options }\n }, null);\n}\n\nfunction sparklineChart (documentElementId, options) {\n Highcharts.chart(documentElementId, options)\n}\n\nexport {\n genericArray,\n loadScript,\n renderChart,\n renderChartFromWindow,\n renderMap,\n sparklineChart,\n Highcharts\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VegaChart',{attrs:{\"title\":_vm.$t('charts.ostanizdrav.valid.title'),\"name\":\"valid-chart\",\"data\":_vm.plotData,\"description\":_vm.$t('charts.ostanizdrav.valid.description'),\"faqAnchor\":\"ostanizdrav-valid\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function ($t) {\n return {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\",\n \"width\": \"container\",\n \"height\": 250,\n \"data\": {\n \"url\": \"https://ostanizdrav.sledilnik.org/plots/data.json\"\n },\n \"mark\": {\n \"type\": \"line\",\n \"interpolate\": \"monotone\",\n \"point\": true\n },\n \"encoding\": {\n \"x\": {\n \"timeUnit\": \"utcmonthdate\",\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.valid.date'),\n \"labelAngle\": 0,\n \"tickCount\": \"week\",\n \"labelExpr\": \"[timeFormat(datum.value, '%d'), timeFormat(datum.value, '%d') <= '07' ? timeFormat(datum.value, '%b') : '']\",\n \"gridDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n },\n \"tickDash\": {\n \"condition\": {\n \"test\": {\n \"field\": \"value\",\n \"timeUnit\": \"day\",\n \"equal\": 1\n },\n \"value\": []\n },\n \"value\": [\n 2,\n 2\n ]\n }\n }\n },\n \"y\": {\n \"field\": \"valid\",\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": $t('charts.ostanizdrav.valid.perDay')\n }\n }\n }\n }\n}","\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValidChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValidChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ValidChart.vue?vue&type=template&id=4b026ea1&\"\nimport script from \"./ValidChart.vue?vue&type=script&lang=js&\"\nexport * from \"./ValidChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * DateTimeOffset functions.\n *\n * Note: DateOffset instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoc when `.getTime()` is called.\n *\n * However, this means that in order to construct an UTC date\n * from a DateOffset with offset of +5 hours, you first need\n * to subtract those 5 hours, than add the \"local\" offset.\n * As said, all kinds of messed up.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { create as createDate, dateOffsetToString, daysInMonth, offsetRegex, parseRaw } from \"./Date\";\nimport { fromValue, ticksToUnixEpochMilliseconds, unixEpochMillisecondsToTicks } from \"./Long\";\nimport { compareDates, padWithZeros } from \"./Util\";\nexport default function DateTimeOffset(value, offset) {\n const d = new Date(value);\n d.offset = offset != null ? offset : new Date().getTimezoneOffset() * -60000;\n return d;\n}\nexport function fromDate(date, offset) {\n const isUtc = date.kind === 1 /* UTC */;\n const offset2 = isUtc ? 0 : date.getTimezoneOffset() * -60000;\n if (offset != null && offset !== offset2) {\n throw new Error(isUtc\n ? \"The UTC Offset for Utc DateTime instances must be 0.\"\n : \"The UTC Offset of the local dateTime parameter does not match the offset argument.\");\n }\n return DateTimeOffset(date.getTime(), offset2);\n}\nexport function fromTicks(ticks, offset) {\n ticks = fromValue(ticks);\n const epoc = ticksToUnixEpochMilliseconds(ticks) - offset;\n return DateTimeOffset(epoc, offset);\n}\nexport function getUtcTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), 0);\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTimeOffset(-62135596800000, 0);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTimeOffset(253402300799999, 0);\n}\nexport function parse(str) {\n const date = parseRaw(str);\n const offsetMatch = offsetRegex.exec(str);\n const offset = offsetMatch == null\n ? date.getTimezoneOffset() * -60000\n : (offsetMatch[0] === \"Z\"\n ? 0\n : parseInt(offsetMatch[1], 10) * 3600000\n + parseInt(offsetMatch[2], 10) * 60000);\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function tryParse(v, _refValue) {\n try {\n return [true, parse(v)];\n }\n catch (_err) {\n return [false, minValue()];\n }\n}\nexport function create(year, month, day, h, m, s, ms, offset) {\n if (offset == null) {\n offset = ms;\n ms = 0;\n }\n if (offset !== 0) {\n if (offset % 60000 !== 0) {\n throw new Error(\"Offset must be specified in whole minutes\");\n }\n if (~~(offset / 3600000) > 14) {\n throw new Error(\"Offset must be within plus or minus 14 hour\");\n }\n }\n let date;\n if (offset === 0) {\n date = new Date(Date.UTC(year, month - 1, day, h, m, s, ms));\n if (year <= 99) {\n date.setFullYear(year, month - 1, day);\n }\n }\n else {\n const str = padWithZeros(year, 4) + \"-\" +\n padWithZeros(month, 2) + \"-\" +\n padWithZeros(day, 2) + \"T\" +\n padWithZeros(h, 2) + \":\" +\n padWithZeros(m, 2) + \":\" +\n padWithZeros(s, 2) + \".\" +\n padWithZeros(ms, 3) +\n dateOffsetToString(offset);\n date = new Date(str);\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date\");\n }\n return DateTimeOffset(dateValue, offset);\n}\nexport function now() {\n const date = new Date();\n const offset = date.getTimezoneOffset() * -60000;\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function utcNow() {\n const date = now();\n return DateTimeOffset(date.getTime(), 0);\n}\nexport function toUniversalTime(date) {\n return DateTimeOffset(date.getTime(), 0);\n}\nexport function toLocalTime(date) {\n return DateTimeOffset(date.getTime(), date.getTimezoneOffset() * -60000);\n}\nexport function timeOfDay(d) {\n var _a;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n return d2.getUTCHours() * 3600000\n + d2.getUTCMinutes() * 60000\n + d2.getUTCSeconds() * 1000\n + d2.getUTCMilliseconds();\n}\nexport function date(d) {\n var _a;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n return createDate(d2.getUTCFullYear(), d2.getUTCMonth() + 1, d2.getUTCDate(), 0, 0, 0, 0);\n}\nexport function day(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCDate();\n}\nexport function hour(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCHours();\n}\nexport function millisecond(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCMilliseconds();\n}\nexport function minute(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCMinutes();\n}\nexport function month(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCMonth() + 1;\n}\nexport function second(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCSeconds();\n}\nexport function year(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCFullYear();\n}\nexport function dayOfWeek(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCDay();\n}\nexport function dayOfYear(d) {\n var _a;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n const _year = d2.getUTCFullYear();\n const _month = d2.getUTCMonth() + 1;\n let _day = d2.getUTCDate();\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n var _a;\n return DateTimeOffset(d.getTime() + ts, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addDays(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 86400000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addHours(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 3600000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addMinutes(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 60000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addSeconds(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 1000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addMilliseconds(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addYears(d, v) {\n var _a;\n const newMonth = d.getUTCMonth() + 1;\n const newYear = d.getUTCFullYear() + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d.getUTCDate());\n return create(newYear, newMonth, newDay, d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds(), ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addMonths(d, v) {\n var _a, _b;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n let newMonth = d2.getUTCMonth() + 1 + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = d2.getUTCFullYear() + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d2.getUTCDate());\n return create(newYear, newMonth, newDay, d2.getUTCHours(), d2.getUTCMinutes(), d2.getUTCSeconds(), d2.getUTCMilliseconds(), ((_b = d.offset) !== null && _b !== void 0 ? _b : 0));\n}\nexport function subtract(d, that) {\n var _a;\n return typeof that === \"number\"\n ? DateTimeOffset(d.getTime() - that, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0))\n : d.getTime() - that.getTime();\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport function equalsExact(d1, d2) {\n return d1.getTime() === d2.getTime() && d1.offset === d2.offset;\n}\nexport function compare(d1, d2) {\n return compareDates(d1, d2);\n}\nexport const compareTo = compare;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\n//# sourceMappingURL=DateOffset.js.map"],"sourceRoot":""}