From 59f9cee486aee21df8e57e5442704a63d4f8fb73 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Thu, 13 Apr 2023 19:27:57 +0200 Subject: [PATCH 01/26] wip use static test charts for subsequent tests --- .../HtmlCodegen/SimpleCharts.fs | 45 ++--------- .../HtmlCodegen/SimpleTests.fs | 57 +++---------- .../Plotly.NET.Tests/Plotly.NET.Tests.fsproj | 81 +++++++++++++++++++ tests/Plotly.NET.Tests/TestCharts.fs | 47 +++++++++++ .../TestCharts/Chart2D/AnnotatedHeatmap.fs | 10 +++ .../TestCharts/Chart2D/Area.fs | 10 +++ .../TestCharts/Chart2D/Bar.fs | 10 +++ .../TestCharts/Chart2D/BoxPlot.fs | 10 +++ .../TestCharts/Chart2D/Bubble.fs | 10 +++ .../TestCharts/Chart2D/Candlestick.fs | 10 +++ .../TestCharts/Chart2D/Column.fs | 10 +++ .../TestCharts/Chart2D/Contour.fs | 10 +++ .../TestCharts/Chart2D/Funnel.fs | 10 +++ .../TestCharts/Chart2D/Heatmap.fs | 10 +++ .../TestCharts/Chart2D/Histogram.fs | 10 +++ .../TestCharts/Chart2D/Histogram2D.fs | 10 +++ .../TestCharts/Chart2D/Histogram2DContour.fs | 10 +++ .../TestCharts/Chart2D/Image.fs | 10 +++ .../TestCharts/Chart2D/Line.fs | 10 +++ .../TestCharts/Chart2D/OHLC.fs | 10 +++ .../TestCharts/Chart2D/Point.fs | 10 +++ .../TestCharts/Chart2D/PointDensity.fs | 10 +++ .../TestCharts/Chart2D/Range.fs | 10 +++ .../TestCharts/Chart2D/Scatter.fs | 10 +++ .../TestCharts/Chart2D/Spline.fs | 10 +++ .../TestCharts/Chart2D/SplineArea.fs | 10 +++ .../TestCharts/Chart2D/Splom.fs | 10 +++ .../TestCharts/Chart2D/StackedArea.fs | 10 +++ .../TestCharts/Chart2D/StackedBar.fs | 10 +++ .../TestCharts/Chart2D/StackedColumn.fs | 10 +++ .../TestCharts/Chart2D/StackedFunnel.fs | 10 +++ .../TestCharts/Chart2D/Violin.fs | 10 +++ .../TestCharts/Chart2D/Waterfall.fs | 10 +++ .../TestCharts/Chart3D/Bubble3D.fs | 10 +++ .../TestCharts/Chart3D/Cone.fs | 10 +++ .../TestCharts/Chart3D/IsoSurface.fs | 10 +++ .../TestCharts/Chart3D/Line3D.fs | 10 +++ .../TestCharts/Chart3D/Mesh3D.fs | 10 +++ .../TestCharts/Chart3D/Point3D.fs | 10 +++ .../TestCharts/Chart3D/Scatter3D.fs | 10 +++ .../TestCharts/Chart3D/StreamTube.fs | 10 +++ .../TestCharts/Chart3D/Surface.fs | 10 +++ .../TestCharts/Chart3D/Volume.fs | 10 +++ .../TestCharts/ChartCarpet/BubbleCarpet.fs | 10 +++ .../TestCharts/ChartCarpet/Carpet.fs | 10 +++ .../TestCharts/ChartCarpet/ContourCarpet.fs | 10 +++ .../TestCharts/ChartCarpet/LineCarpet.fs | 10 +++ .../TestCharts/ChartCarpet/PointCarpet.fs | 10 +++ .../TestCharts/ChartCarpet/ScatterCarpet.fs | 10 +++ .../TestCharts/ChartCarpet/SplineCarpet.fs | 10 +++ .../TestCharts/ChartDomain/Doughnut.fs | 10 +++ .../TestCharts/ChartDomain/FunnelArea.fs | 10 +++ .../TestCharts/ChartDomain/Icicle.fs | 10 +++ .../TestCharts/ChartDomain/Indicator.fs | 10 +++ .../ChartDomain/ParralelCategories.fs | 10 +++ .../TestCharts/ChartDomain/ParralelCoord.fs | 10 +++ .../TestCharts/ChartDomain/Pie.fs | 10 +++ .../TestCharts/ChartDomain/Sankey.fs | 10 +++ .../TestCharts/ChartDomain/Sunburst.fs | 10 +++ .../TestCharts/ChartDomain/Table.fs | 10 +++ .../TestCharts/ChartDomain/Treemap.fs | 10 +++ .../TestCharts/ChartMap/BubbleGeo.fs | 10 +++ .../TestCharts/ChartMap/BubbleMapbox.fs | 10 +++ .../TestCharts/ChartMap/ChoroplethMap.fs | 10 +++ .../TestCharts/ChartMap/ChoroplethMapbox.fs | 10 +++ .../TestCharts/ChartMap/DensityMapbox.fs | 10 +++ .../TestCharts/ChartMap/LineGeo.fs | 10 +++ .../TestCharts/ChartMap/LineMapbox.fs | 10 +++ .../TestCharts/ChartMap/PointGeo.fs | 10 +++ .../TestCharts/ChartMap/ScatterGeo.fs | 10 +++ .../TestCharts/ChartMap/ScatterMapbox.fs | 10 +++ .../TestCharts/ChartPolar/BarPolar.fs | 10 +++ .../TestCharts/ChartPolar/BubblePolar.fs | 10 +++ .../TestCharts/ChartPolar/LinePolar.fs | 10 +++ .../TestCharts/ChartPolar/PointPolar.fs | 10 +++ .../TestCharts/ChartPolar/ScatterPolar.fs | 10 +++ .../TestCharts/ChartPolar/SplinePolar.fs | 10 +++ .../TestCharts/ChartSmith/BubbleSmith.fs | 10 +++ .../TestCharts/ChartSmith/LineSmith.fs | 10 +++ .../TestCharts/ChartSmith/PointSmith.fs | 10 +++ .../TestCharts/ChartSmith/ScatterSmith.fs | 10 +++ .../TestCharts/ChartTernary/BubbleTernary.fs | 10 +++ .../TestCharts/ChartTernary/LineTernary.fs | 10 +++ .../TestCharts/ChartTernary/PointTernary.fs | 10 +++ .../TestCharts/ChartTernary/ScatterTernary.fs | 10 +++ 85 files changed, 954 insertions(+), 86 deletions(-) create mode 100644 tests/Plotly.NET.Tests/TestCharts.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/AnnotatedHeatmap.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Area.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Bar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/BoxPlot.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Bubble.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Candlestick.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Column.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Contour.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Funnel.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Heatmap.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2D.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2DContour.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Image.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/OHLC.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/PointDensity.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Range.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Scatter.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/SplineArea.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Splom.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedArea.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedBar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedColumn.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedFunnel.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Violin.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart2D/Waterfall.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Bubble3D.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Cone.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/IsoSurface.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Line3D.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Mesh3D.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Point3D.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Scatter3D.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/StreamTube.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Surface.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/Chart3D/Volume.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartCarpet/BubbleCarpet.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartCarpet/Carpet.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ContourCarpet.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartCarpet/LineCarpet.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartCarpet/PointCarpet.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ScatterCarpet.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartCarpet/SplineCarpet.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Doughnut.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/FunnelArea.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Icicle.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Indicator.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCategories.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCoord.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Pie.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sankey.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sunburst.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Table.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartDomain/Treemap.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleGeo.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleMapbox.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMap.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMapbox.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/DensityMapbox.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/LineGeo.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/LineMapbox.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/PointGeo.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterGeo.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterMapbox.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartPolar/BarPolar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartPolar/BubblePolar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartPolar/LinePolar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartPolar/PointPolar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartPolar/ScatterPolar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartPolar/SplinePolar.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartSmith/BubbleSmith.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartSmith/LineSmith.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartSmith/PointSmith.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartSmith/ScatterSmith.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartTernary/BubbleTernary.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartTernary/LineTernary.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartTernary/PointTernary.fs create mode 100644 tests/Plotly.NET.Tests/TestCharts/ChartTernary/ScatterTernary.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/SimpleCharts.fs b/tests/Plotly.NET.Tests/HtmlCodegen/SimpleCharts.fs index 29a89654e..adc16ae90 100644 --- a/tests/Plotly.NET.Tests/HtmlCodegen/SimpleCharts.fs +++ b/tests/Plotly.NET.Tests/HtmlCodegen/SimpleCharts.fs @@ -9,63 +9,30 @@ open Plotly.NET.StyleParam open TestUtils.HtmlCodegen -let withLineStyleChart = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - Chart.Line( - x = x, - y = y, - Name="line", - ShowMarkers=true, - MarkerSymbol=StyleParam.MarkerSymbol.Square, - UseDefaults = false - ) - |> Chart.withLineStyle(Width=2.,Dash=StyleParam.DrawingStyle.Dot) - - -let chartLineChart = Chart.Line([ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ], UseDefaults = false) - -let splineChart = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) - -let textLabelChart = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let labels = ["a";"b";"c";"d";"e";"f";"g";"h";"i";"j";] - Chart.Point( - x = x,y = y, - Name="points", - MultiText=labels, - TextPosition=StyleParam.TextPosition.TopRight, - UseDefaults = false - ) - [] let ``Line and scatter plots`` = testList "SimpleCharts.Line and scatter plots" [ testCase "With LineStyle data" ( fun () -> """var data = [{"type":"scatter","name":"line","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"symbol":"1"},"line":{"width":2.0,"dash":"dot"}}];""" - |> chartGeneratedContains withLineStyleChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Line chart with line styling`` ); testCase "With LineStyle layout" ( fun () -> - emptyLayout withLineStyleChart + emptyLayout TestCharts.SimpleCharts.``Line chart with line styling`` ); testCase "Chart line data" ( fun () -> """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0],"y":[1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0,100.0,121.0,144.0,169.0,196.0,225.0,256.0,289.0,324.0,361.0,400.0,441.0,484.0,529.0,576.0,625.0,676.0,729.0,784.0,841.0,900.0,961.0,1024.0,1089.0,1156.0,1225.0,1296.0,1369.0,1444.0,1521.0,1600.0,1681.0,1764.0,1849.0,1936.0,2025.0,2116.0,2209.0,2304.0,2401.0,2500.0,2601.0,2704.0,2809.0,2916.0,3025.0,3136.0,3249.0,3364.0,3481.0,3600.0,3721.0,3844.0,3969.0,4096.0,4225.0,4356.0,4489.0,4624.0,4761.0,4900.0,5041.0,5184.0,5329.0,5476.0,5625.0,5776.0,5929.0,6084.0,6241.0,6400.0,6561.0,6724.0,6889.0,7056.0,7225.0,7396.0,7569.0,7744.0,7921.0,8100.0,8281.0,8464.0,8649.0,8836.0,9025.0,9216.0,9409.0,9604.0,9801.0,10000.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains chartLineChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Simple line chart`` ); testCase "Chart line layout" ( fun () -> - emptyLayout chartLineChart + emptyLayout TestCharts.SimpleCharts.``Simple line chart`` ); testCase "Spline chart data" ( fun () -> """var data = [{"type":"scatter","name":"spline","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{"shape":"spline"}}];""" - |> chartGeneratedContains splineChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Simple spline chart`` ); testCase "Spline chart layout" ( fun () -> - emptyLayout splineChart + emptyLayout TestCharts.SimpleCharts.``Simple spline chart`` ); testCase "Text label data" ( fun () -> """var data = [{"type":"scatter","name":"points","mode":"markers+text","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"text":["a","b","c","d","e","f","g","h","i","j"],"textposition":"top right","marker":{},"line":{}}];""" diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/SimpleTests.fs b/tests/Plotly.NET.Tests/HtmlCodegen/SimpleTests.fs index 7c932c92c..d38492f9c 100644 --- a/tests/Plotly.NET.Tests/HtmlCodegen/SimpleTests.fs +++ b/tests/Plotly.NET.Tests/HtmlCodegen/SimpleTests.fs @@ -8,90 +8,53 @@ open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -let simpleChart = - let xData = [0. .. 10.] - let yData = [0. .. 10.] - Chart.Point(x = xData, y = yData, UseDefaults = false) - |> Chart.withTitle "Hello world!" - |> Chart.withXAxisStyle (TitleText = "xAxis", ShowGrid=false) - |> Chart.withYAxisStyle (TitleText = "yAxis", ShowGrid=false) - [] let ``Html layout tests`` = testList "SimpleTests.Simple tests" [ testCase "Expecting plotly js script reference in generated html document" ( fun () -> $"""https://cdn.plot.ly/plotly-{Globals.PLOTLYJS_VERSION}.min""" - |> substringIsInChart simpleChart toEmbeddedHTML + |> substringIsInChart TestCharts.SimpleCharts.``Point chart with axis labels and title`` toEmbeddedHTML ); testCase "Expecting data" ( fun () -> """var data = [{"type":"scatter","mode":"markers","x":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains simpleChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart with axis labels and title`` ); testCase "Expecting layout info" (fun () -> """var layout = {"title":{"text":"Hello world!"},"xaxis":{"title":{"text":"xAxis"},"showgrid":false},"yaxis":{"title":{"text":"yAxis"},"showgrid":false}};""" - |> chartGeneratedContains simpleChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart with axis labels and title`` ); testCase "Expecting html tags in embedded page only" (fun () -> [""; ""; ""; ""; ""; ""; ""] - |> substringListIsInChart simpleChart toEmbeddedHTML + |> substringListIsInChart TestCharts.SimpleCharts.``Point chart with axis labels and title`` toEmbeddedHTML ); testCase "Expecting some html tags in both embedded and not embedded" (fun () -> [""] - |> chartGeneratedContainsList simpleChart + |> chartGeneratedContainsList TestCharts.SimpleCharts.``Point chart with axis labels and title`` ); testCase "Passing args to the function" ( fun () -> "data, layout, config);" - |> chartGeneratedContains simpleChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart with axis labels and title`` ) ] -let fullPlotlyJSChart = - let xData = [0. .. 10.] - let yData = [0. .. 10.] - Chart.Point(xData, yData, UseDefaults = false) - |> Chart.withDisplayOptions( - DisplayOptions.init( - PlotlyJSReference = Full - ) - ) - -let cdnPlotlyJSChart = - let xData = [0. .. 10.] - let yData = [0. .. 10.] - Chart.Point(xData, yData, UseDefaults = false) - |> Chart.withDisplayOptions( - DisplayOptions.init( - PlotlyJSReference = CDN $"https://cdn.plot.ly/plotly-2.0.0.min" - ) - ) - -let requirePlotlyJSChart = - let xData = [0. .. 10.] - let yData = [0. .. 10.] - Chart.Point(xData, yData, UseDefaults = false) - |> Chart.withDisplayOptions( - DisplayOptions.init( - PlotlyJSReference = Require $"https://cdn.plot.ly/plotly-{Globals.PLOTLYJS_VERSION}.min" - ) - ) [] let ``plotlyjs reference tests`` = testList "SimpleTests.plotlyjs reference" [ testCase "full reference" (fun _ -> getFullPlotlyJS() - |> substringIsInChart fullPlotlyJSChart toEmbeddedHTML + |> substringIsInChart TestCharts.SimpleCharts.``Point chart with full plotly.js reference`` toEmbeddedHTML ) testCase "cdn reference" (fun _ -> $"""https://cdn.plot.ly/plotly-2.0.0.min""" - |> substringIsInChart cdnPlotlyJSChart toEmbeddedHTML + |> substringIsInChart TestCharts.SimpleCharts.``Point chart with plotly.js cdn reference`` toEmbeddedHTML ) testCase "require: Expecting cloudflare link" (fun () -> """https://cdnjs.cloudflare.com/ajax/libs/require.js""" - |> chartGeneratedContains requirePlotlyJSChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart referencing plotly.js using require.js`` ); testCase "require: Expecting require config" (fun () -> (sprintf """var fsharpPlotlyRequire = requirejs.config({context:'fsharp-plotly',paths:{plotly:'https://cdn.plot.ly/plotly-%s.min'}}) || require;""" Globals.PLOTLYJS_VERSION) - |> chartGeneratedContains requirePlotlyJSChart + |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart referencing plotly.js using require.js`` ); ] \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj b/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj index d31d76d92..b50a81fbf 100644 --- a/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj +++ b/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj @@ -11,6 +11,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/Plotly.NET.Tests/TestCharts.fs b/tests/Plotly.NET.Tests/TestCharts.fs new file mode 100644 index 000000000..356e01eb2 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts.fs @@ -0,0 +1,47 @@ +module TestCharts + +// this module holds all test charts. +// we use them in this project for various tests, but also to write them in plotly json schema for mocha testing in js with `Plotly.validate`. + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.ConfigObjects + +module SimpleCharts = + + + + let ``Simple line chart`` = Chart.Line([ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ], UseDefaults = false) + + + let ``Line chart with line styling`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + Chart.Line( + x = x, + y = y, + Name="line", + ShowMarkers=true, + MarkerSymbol=StyleParam.MarkerSymbol.Square, + UseDefaults = false + ) + |> Chart.withLineStyle(Width=2.,Dash=StyleParam.DrawingStyle.Dot) + + let ``Simple spline chart`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) + + + let ``Point chart with text labels`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let labels = ["a";"b";"c";"d";"e";"f";"g";"h";"i";"j";] + Chart.Point( + x = x,y = y, + Name="points", + MultiText=labels, + TextPosition=StyleParam.TextPosition.TopRight, + UseDefaults = false + ) \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/AnnotatedHeatmap.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/AnnotatedHeatmap.fs new file mode 100644 index 000000000..81be32383 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/AnnotatedHeatmap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.AnnotatedHeatmap +module AnnotatedHeatmap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Area.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Area.fs new file mode 100644 index 000000000..a746047e7 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Area.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Area +module Area = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bar.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bar.fs new file mode 100644 index 000000000..960a8a4e8 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Bar +module Bar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/BoxPlot.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/BoxPlot.fs new file mode 100644 index 000000000..cbe11c5d9 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/BoxPlot.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.BoxPlot +module BoxPlot = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bubble.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bubble.fs new file mode 100644 index 000000000..7acf04ab8 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bubble.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Bubble +module Bubble = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Candlestick.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Candlestick.fs new file mode 100644 index 000000000..2681fb891 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Candlestick.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Candlestick +module Candlestick = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Column.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Column.fs new file mode 100644 index 000000000..6b47e30b6 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Column.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Column +module Column = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Contour.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Contour.fs new file mode 100644 index 000000000..96effd68a --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Contour.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Contour +module Contour = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Funnel.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Funnel.fs new file mode 100644 index 000000000..33965820b --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Funnel.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Funnel +module Funnel = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Heatmap.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Heatmap.fs new file mode 100644 index 000000000..0b55b21a6 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Heatmap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Heatmap +module Heatmap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram.fs new file mode 100644 index 000000000..502e475a9 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Histogram +module Histogram = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2D.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2D.fs new file mode 100644 index 000000000..f9c7b62bc --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Histogram2D +module Histogram2D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2DContour.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2DContour.fs new file mode 100644 index 000000000..59e0fa878 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2DContour.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Histogram2DContour +module Histogram2DContour = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Image.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Image.fs new file mode 100644 index 000000000..71a419eab --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Image.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Image +module Image = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs new file mode 100644 index 000000000..7f5e1d03f --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Line +module Line = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/OHLC.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/OHLC.fs new file mode 100644 index 000000000..1dcb4d0b8 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/OHLC.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.OHLC +module OHLC = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs new file mode 100644 index 000000000..5ac738346 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Point +module Point = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/PointDensity.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/PointDensity.fs new file mode 100644 index 000000000..34d3b5f11 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/PointDensity.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.PointDensity +module PointDensity = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Range.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Range.fs new file mode 100644 index 000000000..d659e6167 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Range.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Range +module Range = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Scatter.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Scatter.fs new file mode 100644 index 000000000..111417661 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Scatter.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Scatter +module Scatter = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs new file mode 100644 index 000000000..cc25b926f --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Spline +module Spline = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/SplineArea.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/SplineArea.fs new file mode 100644 index 000000000..1ca667073 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/SplineArea.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.SplineArea +module SplineArea = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Splom.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Splom.fs new file mode 100644 index 000000000..175fb21ed --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Splom.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Splom +module Splom = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedArea.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedArea.fs new file mode 100644 index 000000000..59d68ab75 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedArea.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.StackedArea +module StackedArea = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedBar.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedBar.fs new file mode 100644 index 000000000..37295d087 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedBar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.StackedBar +module StackedBar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedColumn.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedColumn.fs new file mode 100644 index 000000000..eae2daece --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedColumn.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.StackedColumn +module StackedColumn = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedFunnel.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedFunnel.fs new file mode 100644 index 000000000..a1ea22d44 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedFunnel.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.StackedFunnel +module StackedFunnel = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Violin.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Violin.fs new file mode 100644 index 000000000..1b9771821 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Violin.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Violin +module Violin = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Waterfall.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Waterfall.fs new file mode 100644 index 000000000..7dbba0cf2 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Waterfall.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart2D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart2D.Chart.Waterfall +module Waterfall = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Bubble3D.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Bubble3D.fs new file mode 100644 index 000000000..9035895f0 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Bubble3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Bubble3D +module Bubble3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Cone.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Cone.fs new file mode 100644 index 000000000..51716c274 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Cone.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Cone +module Cone = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/IsoSurface.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/IsoSurface.fs new file mode 100644 index 000000000..2c2c14ae4 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/IsoSurface.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.IsoSurface +module IsoSurface = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Line3D.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Line3D.fs new file mode 100644 index 000000000..28b1a7cda --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Line3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Line3D +module Line3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Mesh3D.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Mesh3D.fs new file mode 100644 index 000000000..9f1d80073 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Mesh3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Mesh3D +module Mesh3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Point3D.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Point3D.fs new file mode 100644 index 000000000..aca38c07f --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Point3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Point3D +module Point3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Scatter3D.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Scatter3D.fs new file mode 100644 index 000000000..e331cff6e --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Scatter3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Scatter3D +module Scatter3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/StreamTube.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/StreamTube.fs new file mode 100644 index 000000000..cc4ab0fd0 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/StreamTube.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.StreamTube +module StreamTube = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Surface.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Surface.fs new file mode 100644 index 000000000..7a01e2e2a --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Surface.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Surface +module Surface = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Volume.fs b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Volume.fs new file mode 100644 index 000000000..97c1c7c47 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/Chart3D/Volume.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.Chart3D + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with Chart3D.Chart.Volume +module Volume = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/BubbleCarpet.fs b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/BubbleCarpet.fs new file mode 100644 index 000000000..fa2ea51f5 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/BubbleCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartCarpet + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartCarpet.Chart.BubbleCarpet +module BubbleCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/Carpet.fs b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/Carpet.fs new file mode 100644 index 000000000..4384ef8b7 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/Carpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartCarpet + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartCarpet.Chart.Carpet +module Carpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ContourCarpet.fs b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ContourCarpet.fs new file mode 100644 index 000000000..24a93124f --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ContourCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartCarpet + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartCarpet.Chart.ContourCarpet +module ContourCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/LineCarpet.fs b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/LineCarpet.fs new file mode 100644 index 000000000..51e4487be --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/LineCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartCarpet + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartCarpet.Chart.LineCarpet +module LineCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/PointCarpet.fs b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/PointCarpet.fs new file mode 100644 index 000000000..56e1fdbae --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/PointCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartCarpet + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartCarpet.Chart.PointCarpet +module PointCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ScatterCarpet.fs b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ScatterCarpet.fs new file mode 100644 index 000000000..b912dbbcb --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ScatterCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartCarpet + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartCarpet.Chart.ScatterCarpet +module ScatterCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/SplineCarpet.fs b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/SplineCarpet.fs new file mode 100644 index 000000000..d25830ff9 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/SplineCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartCarpet + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartCarpet.Chart.SplineCarpet +module SplineCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Doughnut.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Doughnut.fs new file mode 100644 index 000000000..ba8ca86c3 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Doughnut.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Doughnut +module Doughnut = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/FunnelArea.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/FunnelArea.fs new file mode 100644 index 000000000..da58d92a2 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/FunnelArea.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.FunnelArea +module FunnelArea = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Icicle.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Icicle.fs new file mode 100644 index 000000000..82c77f968 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Icicle.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Icicle +module Icicle = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Indicator.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Indicator.fs new file mode 100644 index 000000000..829fb8026 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Indicator.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Indicator +module Indicator = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCategories.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCategories.fs new file mode 100644 index 000000000..dfd9a3a27 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCategories.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.ParralelCategories +module ParralelCategories = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCoord.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCoord.fs new file mode 100644 index 000000000..827e20b23 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCoord.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.ParralelCoord +module ParralelCoord = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Pie.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Pie.fs new file mode 100644 index 000000000..4ab71cd93 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Pie.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Pie +module Pie = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sankey.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sankey.fs new file mode 100644 index 000000000..85edeb04e --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sankey.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Sankey +module Sankey = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sunburst.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sunburst.fs new file mode 100644 index 000000000..c0da092f9 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sunburst.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Sunburst +module Sunburst = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Table.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Table.fs new file mode 100644 index 000000000..d3d5a261e --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Table.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Table +module Table = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Treemap.fs b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Treemap.fs new file mode 100644 index 000000000..d7ee944cd --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Treemap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartDomain + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartDomain.Chart.Treemap +module Treemap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleGeo.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleGeo.fs new file mode 100644 index 000000000..02cbfe9f9 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.BubbleGeo +module BubbleGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleMapbox.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleMapbox.fs new file mode 100644 index 000000000..22b0176e2 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.BubbleMapbox +module BubbleMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMap.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMap.fs new file mode 100644 index 000000000..01cc903bf --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.ChoroplethMap +module ChoroplethMap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMapbox.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMapbox.fs new file mode 100644 index 000000000..ab71bc0b7 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.ChoroplethMapbox +module ChoroplethMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/DensityMapbox.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/DensityMapbox.fs new file mode 100644 index 000000000..9af44cbf1 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/DensityMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.DensityMapbox +module DensityMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineGeo.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineGeo.fs new file mode 100644 index 000000000..5feba76e8 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.LineGeo +module LineGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineMapbox.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineMapbox.fs new file mode 100644 index 000000000..b0cca7e81 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.LineMapbox +module LineMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/PointGeo.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/PointGeo.fs new file mode 100644 index 000000000..549d6e272 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/PointGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.PointGeo +module PointGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterGeo.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterGeo.fs new file mode 100644 index 000000000..6d74d4443 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.ScatterGeo +module ScatterGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterMapbox.fs b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterMapbox.fs new file mode 100644 index 000000000..3c683f312 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartMap + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartMap.Chart.ScatterMapbox +module ScatterMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BarPolar.fs b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BarPolar.fs new file mode 100644 index 000000000..d845ba004 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BarPolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartPolar + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartPolar.Chart.BarPolar +module BarPolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BubblePolar.fs b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BubblePolar.fs new file mode 100644 index 000000000..49d562e20 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BubblePolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartPolar + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartPolar.Chart.BubblePolar +module BubblePolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/LinePolar.fs b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/LinePolar.fs new file mode 100644 index 000000000..25a93e8e9 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/LinePolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartPolar + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartPolar.Chart.LinePolar +module LinePolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/PointPolar.fs b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/PointPolar.fs new file mode 100644 index 000000000..5af367155 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/PointPolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartPolar + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartPolar.Chart.PointPolar +module PointPolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/ScatterPolar.fs b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/ScatterPolar.fs new file mode 100644 index 000000000..34e8092be --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/ScatterPolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartPolar + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartPolar.Chart.ScatterPolar +module ScatterPolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/SplinePolar.fs b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/SplinePolar.fs new file mode 100644 index 000000000..4e3c662a6 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartPolar/SplinePolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartPolar + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartPolar.Chart.SplinePolar +module SplinePolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/BubbleSmith.fs b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/BubbleSmith.fs new file mode 100644 index 000000000..63c0585a4 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/BubbleSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartSmith + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartSmith.Chart.BubbleSmith +module BubbleSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/LineSmith.fs b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/LineSmith.fs new file mode 100644 index 000000000..c8329e6f4 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/LineSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartSmith + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartSmith.Chart.LineSmith +module LineSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/PointSmith.fs b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/PointSmith.fs new file mode 100644 index 000000000..3fc364e57 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/PointSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartSmith + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartSmith.Chart.PointSmith +module PointSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/ScatterSmith.fs b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/ScatterSmith.fs new file mode 100644 index 000000000..ee1adb371 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartSmith/ScatterSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartSmith + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartSmith.Chart.ScatterSmith +module ScatterSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/BubbleTernary.fs b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/BubbleTernary.fs new file mode 100644 index 000000000..97defa3d5 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/BubbleTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartTernary + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartTernary.Chart.BubbleTernary +module BubbleTernary = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/LineTernary.fs b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/LineTernary.fs new file mode 100644 index 000000000..fac67965e --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/LineTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartTernary + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartTernary.Chart.LineTernary +module LineTernary = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/PointTernary.fs b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/PointTernary.fs new file mode 100644 index 000000000..9eb330c8e --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/PointTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartTernary + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartTernary.Chart.PointTernary +module PointTernary = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/ScatterTernary.fs b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/ScatterTernary.fs new file mode 100644 index 000000000..59e0edf14 --- /dev/null +++ b/tests/Plotly.NET.Tests/TestCharts/ChartTernary/ScatterTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.TestCharts.ChartTernary + +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.StyleParam + +/// Test charts created with ChartTernary.Chart.ScatterTernary +module ScatterTernary = () \ No newline at end of file From 8fede70d556df6c81cd7def33f7023f176cbf992 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Thu, 13 Apr 2023 20:04:56 +0200 Subject: [PATCH 02/26] Add test files for each chart type in codegen, rename folder, --- .../CarpetCharts.fs | 0 .../CategoricalCharts.fs | 0 .../HTMLCodegen/Chart2D/AnnotatedHeatmap.fs | 10 +++ .../HTMLCodegen/Chart2D/Area.fs | 10 +++ .../HTMLCodegen/Chart2D/Bar.fs | 10 +++ .../HTMLCodegen/Chart2D/BoxPlot.fs | 10 +++ .../HTMLCodegen/Chart2D/Bubble.fs | 10 +++ .../HTMLCodegen/Chart2D/Candlestick.fs | 10 +++ .../HTMLCodegen/Chart2D/Column.fs | 10 +++ .../HTMLCodegen/Chart2D/Contour.fs | 10 +++ .../HTMLCodegen/Chart2D/Funnel.fs | 10 +++ .../HTMLCodegen/Chart2D/Heatmap.fs | 10 +++ .../HTMLCodegen/Chart2D/Histogram.fs | 10 +++ .../HTMLCodegen/Chart2D/Histogram2D.fs | 10 +++ .../HTMLCodegen/Chart2D/Histogram2DContour.fs | 10 +++ .../HTMLCodegen/Chart2D/Image.fs | 10 +++ .../HTMLCodegen/Chart2D/Line.fs | 10 +++ .../HTMLCodegen/Chart2D/OHLC.fs | 10 +++ .../HTMLCodegen/Chart2D/Point.fs | 10 +++ .../HTMLCodegen/Chart2D/PointDensity.fs | 10 +++ .../HTMLCodegen/Chart2D/Range.fs | 10 +++ .../HTMLCodegen/Chart2D/Scatter.fs | 10 +++ .../HTMLCodegen/Chart2D/Spline.fs | 10 +++ .../HTMLCodegen/Chart2D/SplineArea.fs | 10 +++ .../HTMLCodegen/Chart2D/Splom.fs | 10 +++ .../HTMLCodegen/Chart2D/StackedArea.fs | 10 +++ .../HTMLCodegen/Chart2D/StackedBar.fs | 10 +++ .../HTMLCodegen/Chart2D/StackedColumn.fs | 10 +++ .../HTMLCodegen/Chart2D/StackedFunnel.fs | 10 +++ .../HTMLCodegen/Chart2D/Violin.fs | 10 +++ .../HTMLCodegen/Chart2D/Waterfall.fs | 10 +++ .../HTMLCodegen/Chart3D/Bubble3D.fs | 10 +++ .../HTMLCodegen/Chart3D/Cone.fs | 10 +++ .../HTMLCodegen/Chart3D/IsoSurface.fs | 10 +++ .../HTMLCodegen/Chart3D/Line3D.fs | 10 +++ .../HTMLCodegen/Chart3D/Mesh3D.fs | 10 +++ .../HTMLCodegen/Chart3D/Point3D.fs | 10 +++ .../HTMLCodegen/Chart3D/Scatter3D.fs | 10 +++ .../HTMLCodegen/Chart3D/StreamTube.fs | 10 +++ .../HTMLCodegen/Chart3D/Surface.fs | 10 +++ .../HTMLCodegen/Chart3D/Volume.fs | 10 +++ .../HTMLCodegen/ChartCarpet/BubbleCarpet.fs | 10 +++ .../HTMLCodegen/ChartCarpet/Carpet.fs | 10 +++ .../HTMLCodegen/ChartCarpet/ContourCarpet.fs | 10 +++ .../HTMLCodegen/ChartCarpet/LineCarpet.fs | 10 +++ .../HTMLCodegen/ChartCarpet/PointCarpet.fs | 10 +++ .../HTMLCodegen/ChartCarpet/ScatterCarpet.fs | 10 +++ .../HTMLCodegen/ChartCarpet/SplineCarpet.fs | 10 +++ .../HTMLCodegen/ChartDomain/Doughnut.fs | 10 +++ .../HTMLCodegen/ChartDomain/FunnelArea.fs | 10 +++ .../HTMLCodegen/ChartDomain/Icicle.fs | 10 +++ .../HTMLCodegen/ChartDomain/Indicator.fs | 10 +++ .../ChartDomain/ParralelCategories.fs | 10 +++ .../HTMLCodegen/ChartDomain/ParralelCoord.fs | 10 +++ .../HTMLCodegen/ChartDomain/Pie.fs | 10 +++ .../HTMLCodegen/ChartDomain/Sankey.fs | 10 +++ .../HTMLCodegen/ChartDomain/Sunburst.fs | 10 +++ .../HTMLCodegen/ChartDomain/Table.fs | 10 +++ .../HTMLCodegen/ChartDomain/Treemap.fs | 10 +++ .../ChartLayout.fs | 0 .../HTMLCodegen/ChartMap/BubbleGeo.fs | 10 +++ .../HTMLCodegen/ChartMap/BubbleMapbox.fs | 10 +++ .../HTMLCodegen/ChartMap/ChoroplethMap.fs | 10 +++ .../HTMLCodegen/ChartMap/ChoroplethMapbox.fs | 10 +++ .../HTMLCodegen/ChartMap/DensityMapbox.fs | 10 +++ .../HTMLCodegen/ChartMap/LineGeo.fs | 10 +++ .../HTMLCodegen/ChartMap/LineMapbox.fs | 10 +++ .../HTMLCodegen/ChartMap/PointGeo.fs | 10 +++ .../HTMLCodegen/ChartMap/ScatterGeo.fs | 10 +++ .../HTMLCodegen/ChartMap/ScatterMapbox.fs | 10 +++ .../HTMLCodegen/ChartPolar/BarPolar.fs | 10 +++ .../HTMLCodegen/ChartPolar/BubblePolar.fs | 10 +++ .../HTMLCodegen/ChartPolar/LinePolar.fs | 10 +++ .../HTMLCodegen/ChartPolar/PointPolar.fs | 10 +++ .../HTMLCodegen/ChartPolar/ScatterPolar.fs | 10 +++ .../HTMLCodegen/ChartPolar/SplinePolar.fs | 10 +++ .../HTMLCodegen/ChartSmith/BubbleSmith.fs | 10 +++ .../HTMLCodegen/ChartSmith/LineSmith.fs | 10 +++ .../HTMLCodegen/ChartSmith/PointSmith.fs | 10 +++ .../HTMLCodegen/ChartSmith/ScatterSmith.fs | 10 +++ .../HTMLCodegen/ChartTernary/BubbleTernary.fs | 10 +++ .../HTMLCodegen/ChartTernary/LineTernary.fs | 10 +++ .../HTMLCodegen/ChartTernary/PointTernary.fs | 10 +++ .../ChartTernary/ScatterTernary.fs | 10 +++ .../{HtmlCodegen => HTMLCodegen}/Charts3D.fs | 0 .../DistributionCharts.fs | 0 .../FinanceCharts.fs | 0 .../GeoMapCharts.fs | 0 .../MapboxMapCharts.fs | 0 .../MulticategoryData.fs | 0 .../PolarCharts.fs | 0 .../SimpleCharts.fs | 0 .../SimpleTests.fs | 0 .../SmithCharts.fs | 0 .../TernaryCharts.fs | 0 .../Plotly.NET.Tests/Plotly.NET.Tests.fsproj | 84 +++++++++++++++++++ 96 files changed, 894 insertions(+) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/CarpetCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/CategoricalCharts.fs (100%) create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/ChartLayout.fs (100%) create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs create mode 100644 tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/Charts3D.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/DistributionCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/FinanceCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/GeoMapCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/MapboxMapCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/MulticategoryData.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/PolarCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/SimpleCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/SimpleTests.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/SmithCharts.fs (100%) rename tests/Plotly.NET.Tests/{HtmlCodegen => HTMLCodegen}/TernaryCharts.fs (100%) diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/CarpetCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/CarpetCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/CarpetCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/CarpetCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/CategoricalCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/CategoricalCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/CategoricalCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/CategoricalCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs new file mode 100644 index 000000000..9ce91aeeb --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module AnnotatedHeatmap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs new file mode 100644 index 000000000..d99d7908e --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Area = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs new file mode 100644 index 000000000..fe548aa3c --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Bar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs new file mode 100644 index 000000000..8e92822f4 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BoxPlot = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs new file mode 100644 index 000000000..a337fb0e4 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Bubble = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs new file mode 100644 index 000000000..f3d2360a4 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Candlestick = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs new file mode 100644 index 000000000..0bdb27ec6 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Column = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs new file mode 100644 index 000000000..f7f49f497 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Contour = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs new file mode 100644 index 000000000..e9c09e660 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Funnel = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs new file mode 100644 index 000000000..82dc6f948 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Heatmap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs new file mode 100644 index 000000000..f92315314 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Histogram = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs new file mode 100644 index 000000000..c5fc39e56 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Histogram2D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs new file mode 100644 index 000000000..ad0f49670 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Histogram2DContour = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs new file mode 100644 index 000000000..b1e8dc1c8 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Image = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs new file mode 100644 index 000000000..5900dc766 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Line = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs new file mode 100644 index 000000000..d7f06fe3b --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module OHLC = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs new file mode 100644 index 000000000..0c11b3148 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Point = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs new file mode 100644 index 000000000..55bf133a4 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module PointDensity = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs new file mode 100644 index 000000000..17a78140c --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Range = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs new file mode 100644 index 000000000..860952f66 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Scatter = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs new file mode 100644 index 000000000..b174fc7e5 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Spline = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs new file mode 100644 index 000000000..aab195d9c --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module SplineArea = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs new file mode 100644 index 000000000..3952fa797 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Splom = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs new file mode 100644 index 000000000..ea750e9eb --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module StackedArea = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs new file mode 100644 index 000000000..a36dcd79f --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module StackedBar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs new file mode 100644 index 000000000..a2faa619e --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module StackedColumn = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs new file mode 100644 index 000000000..2f8508d83 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module StackedFunnel = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs new file mode 100644 index 000000000..1ddec96e3 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Violin = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs new file mode 100644 index 000000000..ac24d34b1 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Waterfall = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs new file mode 100644 index 000000000..1efa0c374 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Bubble3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs new file mode 100644 index 000000000..3187626cb --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Cone = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs new file mode 100644 index 000000000..a29bddec9 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module IsoSurface = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs new file mode 100644 index 000000000..e626b9082 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Line3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs new file mode 100644 index 000000000..5679146f5 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Mesh3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs new file mode 100644 index 000000000..3a30f915e --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Point3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs new file mode 100644 index 000000000..2ca4df2ff --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Scatter3D = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs new file mode 100644 index 000000000..c2aef0413 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module StreamTube = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs new file mode 100644 index 000000000..a71e0457c --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Surface = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs new file mode 100644 index 000000000..66a843f9c --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Volume = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs new file mode 100644 index 000000000..3d4f694b5 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BubbleCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs new file mode 100644 index 000000000..1f2e5e252 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Carpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs new file mode 100644 index 000000000..fa4af7bd5 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ContourCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs new file mode 100644 index 000000000..265882d75 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module LineCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs new file mode 100644 index 000000000..01080592a --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module PointCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs new file mode 100644 index 000000000..4e7bf65eb --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ScatterCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs new file mode 100644 index 000000000..b236d0a4e --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module SplineCarpet = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs new file mode 100644 index 000000000..a1a472c7d --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Doughnut = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs new file mode 100644 index 000000000..c48a7f654 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module FunnelArea = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs new file mode 100644 index 000000000..c12f983f7 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Icicle = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs new file mode 100644 index 000000000..cb3b616f9 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Indicator = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs new file mode 100644 index 000000000..7dfc16ea0 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ParralelCategories = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs new file mode 100644 index 000000000..eb36e08da --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ParralelCoord = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs new file mode 100644 index 000000000..91c818b19 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Pie = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs new file mode 100644 index 000000000..abcc734d7 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Sankey = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs new file mode 100644 index 000000000..a1ab56938 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Sunburst = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs new file mode 100644 index 000000000..165d9dc7b --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Table = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs new file mode 100644 index 000000000..9bb90d9c8 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module Treemap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/ChartLayout.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartLayout.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/ChartLayout.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/ChartLayout.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs new file mode 100644 index 000000000..5a67c5103 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BubbleGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs new file mode 100644 index 000000000..cca24e62d --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BubbleMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs new file mode 100644 index 000000000..c919f279f --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ChoroplethMap = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs new file mode 100644 index 000000000..c68ff4ec6 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ChoroplethMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs new file mode 100644 index 000000000..f90f7cf86 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module DensityMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs new file mode 100644 index 000000000..b30aae541 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module LineGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs new file mode 100644 index 000000000..783a0be91 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module LineMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs new file mode 100644 index 000000000..2cdaca214 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module PointGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs new file mode 100644 index 000000000..45d49d32f --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ScatterGeo = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs new file mode 100644 index 000000000..d41f66858 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ScatterMapbox = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs new file mode 100644 index 000000000..5300358c2 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BarPolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs new file mode 100644 index 000000000..1f0b7c413 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BubblePolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs new file mode 100644 index 000000000..b3f747758 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module LinePolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs new file mode 100644 index 000000000..f15d89f05 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module PointPolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs new file mode 100644 index 000000000..9198fea27 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ScatterPolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs new file mode 100644 index 000000000..7dcbd5879 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module SplinePolar = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs new file mode 100644 index 000000000..b0d6290a3 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BubbleSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs new file mode 100644 index 000000000..44ac6e73a --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module LineSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs new file mode 100644 index 000000000..834368ca6 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module PointSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs new file mode 100644 index 000000000..411071261 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ScatterSmith = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs new file mode 100644 index 000000000..e1d7a556e --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module BubbleTernary = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs new file mode 100644 index 000000000..91704dbe4 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module LineTernary = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs new file mode 100644 index 000000000..cc171def7 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module PointTernary = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs new file mode 100644 index 000000000..c672b25a2 --- /dev/null +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs @@ -0,0 +1,10 @@ +namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +module ScatterTernary = () \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/Charts3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Charts3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/Charts3D.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/Charts3D.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/DistributionCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/DistributionCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/DistributionCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/DistributionCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/FinanceCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/FinanceCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/FinanceCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/FinanceCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/GeoMapCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/GeoMapCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/GeoMapCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/GeoMapCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/MapboxMapCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/MapboxMapCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/MapboxMapCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/MapboxMapCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/MulticategoryData.fs b/tests/Plotly.NET.Tests/HTMLCodegen/MulticategoryData.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/MulticategoryData.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/MulticategoryData.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/PolarCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/PolarCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/PolarCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/PolarCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/SimpleCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/SimpleCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/SimpleTests.fs b/tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/SimpleTests.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/SmithCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/SmithCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/SmithCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/SmithCharts.fs diff --git a/tests/Plotly.NET.Tests/HtmlCodegen/TernaryCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/TernaryCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HtmlCodegen/TernaryCharts.fs rename to tests/Plotly.NET.Tests/HTMLCodegen/TernaryCharts.fs diff --git a/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj b/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj index b50a81fbf..17b19b70c 100644 --- a/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj +++ b/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj @@ -11,6 +11,7 @@ + @@ -92,6 +93,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 0f975f73ca47e8a61d81c84340ce89b6f991096a Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Thu, 13 Apr 2023 21:19:56 +0200 Subject: [PATCH 03/26] wip sorting html codegen test --- .../HTMLCodegen/Chart2D/AnnotatedHeatmap.fs | 5 +- .../HTMLCodegen/Chart2D/Area.fs | 5 +- .../HTMLCodegen/Chart2D/Bar.fs | 5 +- .../HTMLCodegen/Chart2D/BoxPlot.fs | 5 +- .../HTMLCodegen/Chart2D/Bubble.fs | 5 +- .../HTMLCodegen/Chart2D/Candlestick.fs | 5 +- .../HTMLCodegen/Chart2D/Column.fs | 5 +- .../HTMLCodegen/Chart2D/Contour.fs | 5 +- .../HTMLCodegen/Chart2D/Funnel.fs | 5 +- .../HTMLCodegen/Chart2D/Heatmap.fs | 5 +- .../HTMLCodegen/Chart2D/Histogram.fs | 5 +- .../HTMLCodegen/Chart2D/Histogram2D.fs | 5 +- .../HTMLCodegen/Chart2D/Histogram2DContour.fs | 5 +- .../HTMLCodegen/Chart2D/Image.fs | 5 +- .../HTMLCodegen/Chart2D/Line.fs | 21 +++++++- .../HTMLCodegen/Chart2D/OHLC.fs | 5 +- .../HTMLCodegen/Chart2D/Point.fs | 17 +++++- .../HTMLCodegen/Chart2D/PointDensity.fs | 5 +- .../HTMLCodegen/Chart2D/Range.fs | 5 +- .../HTMLCodegen/Chart2D/Scatter.fs | 5 +- .../HTMLCodegen/Chart2D/Spline.fs | 14 ++++- .../HTMLCodegen/Chart2D/SplineArea.fs | 5 +- .../HTMLCodegen/Chart2D/Splom.fs | 5 +- .../HTMLCodegen/Chart2D/StackedArea.fs | 5 +- .../HTMLCodegen/Chart2D/StackedBar.fs | 5 +- .../HTMLCodegen/Chart2D/StackedColumn.fs | 5 +- .../HTMLCodegen/Chart2D/StackedFunnel.fs | 5 +- .../HTMLCodegen/Chart2D/Violin.fs | 5 +- .../HTMLCodegen/Chart2D/Waterfall.fs | 5 +- .../HTMLCodegen/Chart3D/Bubble3D.fs | 5 +- .../HTMLCodegen/Chart3D/Cone.fs | 5 +- .../HTMLCodegen/Chart3D/IsoSurface.fs | 5 +- .../HTMLCodegen/Chart3D/Line3D.fs | 5 +- .../HTMLCodegen/Chart3D/Mesh3D.fs | 5 +- .../HTMLCodegen/Chart3D/Point3D.fs | 5 +- .../HTMLCodegen/Chart3D/Scatter3D.fs | 5 +- .../HTMLCodegen/Chart3D/StreamTube.fs | 5 +- .../HTMLCodegen/Chart3D/Surface.fs | 5 +- .../HTMLCodegen/Chart3D/Volume.fs | 5 +- .../HTMLCodegen/ChartCarpet/BubbleCarpet.fs | 5 +- .../HTMLCodegen/ChartCarpet/Carpet.fs | 5 +- .../HTMLCodegen/ChartCarpet/ContourCarpet.fs | 5 +- .../HTMLCodegen/ChartCarpet/LineCarpet.fs | 5 +- .../HTMLCodegen/ChartCarpet/PointCarpet.fs | 5 +- .../HTMLCodegen/ChartCarpet/ScatterCarpet.fs | 5 +- .../HTMLCodegen/ChartCarpet/SplineCarpet.fs | 5 +- .../HTMLCodegen/ChartDomain/Doughnut.fs | 5 +- .../HTMLCodegen/ChartDomain/FunnelArea.fs | 5 +- .../HTMLCodegen/ChartDomain/Icicle.fs | 5 +- .../HTMLCodegen/ChartDomain/Indicator.fs | 5 +- .../ChartDomain/ParralelCategories.fs | 5 +- .../HTMLCodegen/ChartDomain/ParralelCoord.fs | 5 +- .../HTMLCodegen/ChartDomain/Pie.fs | 5 +- .../HTMLCodegen/ChartDomain/Sankey.fs | 5 +- .../HTMLCodegen/ChartDomain/Sunburst.fs | 5 +- .../HTMLCodegen/ChartDomain/Table.fs | 5 +- .../HTMLCodegen/ChartDomain/Treemap.fs | 5 +- .../HTMLCodegen/ChartMap/BubbleGeo.fs | 5 +- .../HTMLCodegen/ChartMap/BubbleMapbox.fs | 5 +- .../HTMLCodegen/ChartMap/ChoroplethMap.fs | 5 +- .../HTMLCodegen/ChartMap/ChoroplethMapbox.fs | 5 +- .../HTMLCodegen/ChartMap/DensityMapbox.fs | 5 +- .../HTMLCodegen/ChartMap/LineGeo.fs | 5 +- .../HTMLCodegen/ChartMap/LineMapbox.fs | 5 +- .../HTMLCodegen/ChartMap/PointGeo.fs | 5 +- .../HTMLCodegen/ChartMap/ScatterGeo.fs | 5 +- .../HTMLCodegen/ChartMap/ScatterMapbox.fs | 5 +- .../HTMLCodegen/ChartPolar/BarPolar.fs | 5 +- .../HTMLCodegen/ChartPolar/BubblePolar.fs | 5 +- .../HTMLCodegen/ChartPolar/LinePolar.fs | 5 +- .../HTMLCodegen/ChartPolar/PointPolar.fs | 5 +- .../HTMLCodegen/ChartPolar/ScatterPolar.fs | 5 +- .../HTMLCodegen/ChartPolar/SplinePolar.fs | 5 +- .../HTMLCodegen/ChartSmith/BubbleSmith.fs | 5 +- .../HTMLCodegen/ChartSmith/LineSmith.fs | 5 +- .../HTMLCodegen/ChartSmith/PointSmith.fs | 5 +- .../HTMLCodegen/ChartSmith/ScatterSmith.fs | 5 +- .../HTMLCodegen/ChartTernary/BubbleTernary.fs | 5 +- .../HTMLCodegen/ChartTernary/LineTernary.fs | 5 +- .../HTMLCodegen/ChartTernary/PointTernary.fs | 5 +- .../ChartTernary/ScatterTernary.fs | 5 +- .../HTMLCodegen/SimpleCharts.fs | 35 ------------ .../HTMLCodegen/SimpleTests.fs | 21 ++++---- tests/Plotly.NET.Tests/Main.fs | 3 +- tests/Plotly.NET.Tests/TestCharts.fs | 47 ---------------- .../TestCharts/Chart2D/Line.fs | 16 +++++- .../TestCharts/Chart2D/Point.fs | 54 ++++++++++++++++++- .../TestCharts/Chart2D/Spline.fs | 7 ++- 88 files changed, 447 insertions(+), 178 deletions(-) delete mode 100644 tests/Plotly.NET.Tests/TestCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs index 9ce91aeeb..a0a28288e 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module AnnotatedHeatmap = () \ No newline at end of file +module AnnotatedHeatmap = + [] + let ``AnnotatedHeatmap tests`` = + testList "AnnotatedHeatmap" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs index d99d7908e..e1908e431 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Area = () \ No newline at end of file +module Area = + [] + let ``Area tests`` = + testList "Area" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs index fe548aa3c..f9173f529 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Bar = () \ No newline at end of file +module Bar = + [] + let ``Bar tests`` = + testList "Bar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs index 8e92822f4..4462cdcbe 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BoxPlot = () \ No newline at end of file +module BoxPlot = + [] + let ``BoxPlot tests`` = + testList "BoxPlot" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs index a337fb0e4..a37be4055 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Bubble = () \ No newline at end of file +module Bubble = + [] + let ``Bubble tests`` = + testList "Bubble" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs index f3d2360a4..cb0ac284c 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Candlestick = () \ No newline at end of file +module Candlestick = + [] + let ``Candlestick tests`` = + testList "Candlestick" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs index 0bdb27ec6..366cd6626 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Column = () \ No newline at end of file +module Column = + [] + let ``Column tests`` = + testList "Column" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs index f7f49f497..9dab31351 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Contour = () \ No newline at end of file +module Contour = + [] + let ``Contour tests`` = + testList "Contour" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs index e9c09e660..e7957611f 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Funnel = () \ No newline at end of file +module Funnel = + [] + let ``Funnel tests`` = + testList "Funnel" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs index 82dc6f948..1bb67f9c7 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Heatmap = () \ No newline at end of file +module Heatmap = + [] + let ``Heatmap tests`` = + testList "Heatmap" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs index f92315314..85c0de26a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Histogram = () \ No newline at end of file +module Histogram = + [] + let ``Histogram tests`` = + testList "Histogram" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs index c5fc39e56..7821b59b5 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Histogram2D = () \ No newline at end of file +module Histogram2D = + [] + let ``Histogram2D tests`` = + testList "Histogram2D" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs index ad0f49670..cdcb3f030 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Histogram2DContour = () \ No newline at end of file +module Histogram2DContour = + [] + let ``Histogram2DContour tests`` = + testList "Histogram2DContour" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs index b1e8dc1c8..294687b1a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Image = () \ No newline at end of file +module Image = + [] + let ``Image tests`` = + testList "Image" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs index 5900dc766..579325477 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs @@ -5,6 +5,25 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen -module Line = () \ No newline at end of file +module Line = + [] + let ``Line tests`` = + testList "Line" [ + testCase "With LineStyle data" ( fun () -> + """var data = [{"type":"scatter","name":"line","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"symbol":"1"},"line":{"width":2.0,"dash":"dot"}}];""" + |> chartGeneratedContains TestCharts.Chart2D.Line.``Line chart with line styling`` + ) + testCase "With LineStyle layout" ( fun () -> + emptyLayout TestCharts.Chart2D.Line.``Line chart with line styling`` + ) + testCase "Chart line data" ( fun () -> + """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0],"y":[1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0,100.0,121.0,144.0,169.0,196.0,225.0,256.0,289.0,324.0,361.0,400.0,441.0,484.0,529.0,576.0,625.0,676.0,729.0,784.0,841.0,900.0,961.0,1024.0,1089.0,1156.0,1225.0,1296.0,1369.0,1444.0,1521.0,1600.0,1681.0,1764.0,1849.0,1936.0,2025.0,2116.0,2209.0,2304.0,2401.0,2500.0,2601.0,2704.0,2809.0,2916.0,3025.0,3136.0,3249.0,3364.0,3481.0,3600.0,3721.0,3844.0,3969.0,4096.0,4225.0,4356.0,4489.0,4624.0,4761.0,4900.0,5041.0,5184.0,5329.0,5476.0,5625.0,5776.0,5929.0,6084.0,6241.0,6400.0,6561.0,6724.0,6889.0,7056.0,7225.0,7396.0,7569.0,7744.0,7921.0,8100.0,8281.0,8464.0,8649.0,8836.0,9025.0,9216.0,9409.0,9604.0,9801.0,10000.0],"marker":{},"line":{}}];""" + |> chartGeneratedContains TestCharts.Chart2D.Line.``Simple line chart`` + ) + testCase "Chart line layout" ( fun () -> + emptyLayout TestCharts.Chart2D.Line.``Simple line chart`` + ) + ] \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs index d7f06fe3b..4387a6c3e 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module OHLC = () \ No newline at end of file +module OHLC = + [] + let ``OHLC tests`` = + testList "OHLC" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs index 0c11b3148..937cc6420 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs @@ -5,6 +5,21 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen -module Point = () \ No newline at end of file + +module Point = + [] + let ``Point tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Point" [ + testCase "Text label data" ( fun () -> + """var data = [{"type":"scatter","name":"points","mode":"markers+text","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"text":["a","b","c","d","e","f","g","h","i","j"],"textposition":"top right","marker":{},"line":{}}];""" + |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with text labels`` + ) + testCase "Text label layout" ( fun () -> + emptyLayout TestCharts.Chart2D.Point.``Point chart with text labels`` + ) + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs index 55bf133a4..2dc59d3dc 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module PointDensity = () \ No newline at end of file +module PointDensity = + [] + let ``PointDensity tests`` = + testList "PointDensity" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs index 17a78140c..80d7a9e8a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Range = () \ No newline at end of file +module Range = + [] + let ``Range tests`` = + testList "Range" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs index 860952f66..41356da2f 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Scatter = () \ No newline at end of file +module Scatter = + [] + let ``Scatter tests`` = + testList "Scatter" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs index b174fc7e5..c91f38ec5 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs @@ -5,6 +5,18 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen -module Spline = () \ No newline at end of file +module Spline = + [] + let ``Spline tests`` = + testList "Spline" [ + testCase "Spline chart data" ( fun () -> + """var data = [{"type":"scatter","name":"spline","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{"shape":"spline"}}];""" + |> chartGeneratedContains TestCharts.Chart2D.Spline.``Simple spline chart`` + ) + testCase "Spline chart layout" ( fun () -> + emptyLayout TestCharts.Chart2D.Spline.``Simple spline chart`` + ) + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs index aab195d9c..167268c74 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module SplineArea = () \ No newline at end of file +module SplineArea = + [] + let ``SplineArea tests`` = + testList "SplineArea" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs index 3952fa797..a516ec5c2 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Splom = () \ No newline at end of file +module Splom = + [] + let ``Splom tests`` = + testList "Splom" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs index ea750e9eb..b1e5df701 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module StackedArea = () \ No newline at end of file +module StackedArea = + [] + let ``StackedArea tests`` = + testList "StackedArea" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs index a36dcd79f..d90fa40a6 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module StackedBar = () \ No newline at end of file +module StackedBar = + [] + let ``StackedBar tests`` = + testList "StackedBar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs index a2faa619e..fa6590004 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module StackedColumn = () \ No newline at end of file +module StackedColumn = + [] + let ``StackedColumn tests`` = + testList "StackedColumn" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs index 2f8508d83..efa2a84fc 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module StackedFunnel = () \ No newline at end of file +module StackedFunnel = + [] + let ``StackedFunnel tests`` = + testList "StackedFunnel" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs index 1ddec96e3..7609ec079 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Violin = () \ No newline at end of file +module Violin = + [] + let ``Violin tests`` = + testList "Violin" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs index ac24d34b1..1779685e4 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Waterfall = () \ No newline at end of file +module Waterfall = + [] + let ``Waterfall tests`` = + testList "Waterfall" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs index 1efa0c374..aa5a7583e 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Bubble3D = () \ No newline at end of file +module Bubble3D = + [] + let ``Bubble3D tests`` = + testList "Bubble3D" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs index 3187626cb..5590bda46 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Cone = () \ No newline at end of file +module Cone = + [] + let ``Cone tests`` = + testList "Cone" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs index a29bddec9..00ecb3cf3 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module IsoSurface = () \ No newline at end of file +module IsoSurface = + [] + let ``IsoSurface tests`` = + testList "IsoSurface" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs index e626b9082..a197de4be 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Line3D = () \ No newline at end of file +module Line3D = + [] + let ``Line3D tests`` = + testList "Line3D" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs index 5679146f5..296ddf6df 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Mesh3D = () \ No newline at end of file +module Mesh3D = + [] + let ``Mesh3D tests`` = + testList "Mesh3D" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs index 3a30f915e..fa94e7cf5 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Point3D = () \ No newline at end of file +module Point3D = + [] + let ``Point3D tests`` = + testList "Point3D" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs index 2ca4df2ff..3b5a07623 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Scatter3D = () \ No newline at end of file +module Scatter3D = + [] + let ``Scatter3D tests`` = + testList "Scatter3D" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs index c2aef0413..dac13a44c 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module StreamTube = () \ No newline at end of file +module StreamTube = + [] + let ``StreamTube tests`` = + testList "StreamTube" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs index a71e0457c..91298c388 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Surface = () \ No newline at end of file +module Surface = + [] + let ``Surface tests`` = + testList "Surface" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs index 66a843f9c..72229a351 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Volume = () \ No newline at end of file +module Volume = + [] + let ``Volume tests`` = + testList "Volume" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs index 3d4f694b5..47451deb6 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BubbleCarpet = () \ No newline at end of file +module BubbleCarpet = + [] + let ``BubbleCarpet tests`` = + testList "BubbleCarpet" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs index 1f2e5e252..b1dd3474b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Carpet = () \ No newline at end of file +module Carpet = + [] + let ``Carpet tests`` = + testList "Carpet" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs index fa4af7bd5..9e79d6038 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ContourCarpet = () \ No newline at end of file +module ContourCarpet = + [] + let ``ContourCarpet tests`` = + testList "ContourCarpet" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs index 265882d75..9b0298660 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module LineCarpet = () \ No newline at end of file +module LineCarpet = + [] + let ``LineCarpet tests`` = + testList "LineCarpet" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs index 01080592a..5bdfb16f8 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module PointCarpet = () \ No newline at end of file +module PointCarpet = + [] + let ``PointCarpet tests`` = + testList "PointCarpet" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs index 4e7bf65eb..a31db06ed 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ScatterCarpet = () \ No newline at end of file +module ScatterCarpet = + [] + let ``ScatterCarpet tests`` = + testList "ScatterCarpet" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs index b236d0a4e..4935c44f2 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module SplineCarpet = () \ No newline at end of file +module SplineCarpet = + [] + let ``SplineCarpet tests`` = + testList "SplineCarpet" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs index a1a472c7d..36e4c0d6b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Doughnut = () \ No newline at end of file +module Doughnut = + [] + let ``Doughnut tests`` = + testList "Doughnut" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs index c48a7f654..2150b47d9 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module FunnelArea = () \ No newline at end of file +module FunnelArea = + [] + let ``FunnelArea tests`` = + testList "FunnelArea" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs index c12f983f7..5ec2ab4ee 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Icicle = () \ No newline at end of file +module Icicle = + [] + let ``Icicle tests`` = + testList "Icicle" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs index cb3b616f9..de8efef75 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Indicator = () \ No newline at end of file +module Indicator = + [] + let ``Indicator tests`` = + testList "Indicator" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs index 7dfc16ea0..ed019be4e 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ParralelCategories = () \ No newline at end of file +module ParralelCategories = + [] + let ``ParralelCategories tests`` = + testList "ParralelCategories" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs index eb36e08da..4a7171d26 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ParralelCoord = () \ No newline at end of file +module ParralelCoord = + [] + let ``ParralelCoord tests`` = + testList "ParralelCoord" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs index 91c818b19..b22755a81 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Pie = () \ No newline at end of file +module Pie = + [] + let ``Pie tests`` = + testList "Pie" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs index abcc734d7..211babf3c 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Sankey = () \ No newline at end of file +module Sankey = + [] + let ``Sankey tests`` = + testList "Sankey" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs index a1ab56938..14ce5bf17 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Sunburst = () \ No newline at end of file +module Sunburst = + [] + let ``Sunburst tests`` = + testList "Sunburst" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs index 165d9dc7b..daa211e60 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Table = () \ No newline at end of file +module Table = + [] + let ``Table tests`` = + testList "Table" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs index 9bb90d9c8..fd3d827bf 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module Treemap = () \ No newline at end of file +module Treemap = + [] + let ``Treemap tests`` = + testList "Treemap" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs index 5a67c5103..d12df46d6 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BubbleGeo = () \ No newline at end of file +module BubbleGeo = + [] + let ``BubbleGeo tests`` = + testList "BubbleGeo" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs index cca24e62d..c3d63dc89 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BubbleMapbox = () \ No newline at end of file +module BubbleMapbox = + [] + let ``BubbleMapbox tests`` = + testList "BubbleMapbox" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs index c919f279f..a64d9e3a3 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ChoroplethMap = () \ No newline at end of file +module ChoroplethMap = + [] + let ``ChoroplethMap tests`` = + testList "ChoroplethMap" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs index c68ff4ec6..3b9ad9fb6 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ChoroplethMapbox = () \ No newline at end of file +module ChoroplethMapbox = + [] + let ``ChoroplethMapbox tests`` = + testList "ChoroplethMapbox" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs index f90f7cf86..60b55ecb4 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module DensityMapbox = () \ No newline at end of file +module DensityMapbox = + [] + let ``DensityMapbox tests`` = + testList "DensityMapbox" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs index b30aae541..a775791e0 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module LineGeo = () \ No newline at end of file +module LineGeo = + [] + let ``LineGeo tests`` = + testList "LineGeo" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs index 783a0be91..b71b0e0d4 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module LineMapbox = () \ No newline at end of file +module LineMapbox = + [] + let ``LineMapbox tests`` = + testList "LineMapbox" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs index 2cdaca214..a0941888d 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module PointGeo = () \ No newline at end of file +module PointGeo = + [] + let ``PointGeo tests`` = + testList "PointGeo" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs index 45d49d32f..1cad0d70f 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ScatterGeo = () \ No newline at end of file +module ScatterGeo = + [] + let ``ScatterGeo tests`` = + testList "ScatterGeo" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs index d41f66858..9432fe1ba 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ScatterMapbox = () \ No newline at end of file +module ScatterMapbox = + [] + let ``ScatterMapbox tests`` = + testList "ScatterMapbox" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs index 5300358c2..deaa49d59 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BarPolar = () \ No newline at end of file +module BarPolar = + [] + let ``BarPolar tests`` = + testList "BarPolar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs index 1f0b7c413..6b25a3ae5 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BubblePolar = () \ No newline at end of file +module BubblePolar = + [] + let ``BubblePolar tests`` = + testList "BubblePolar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs index b3f747758..29d42d558 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module LinePolar = () \ No newline at end of file +module LinePolar = + [] + let ``LinePolar tests`` = + testList "LinePolar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs index f15d89f05..23693120a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module PointPolar = () \ No newline at end of file +module PointPolar = + [] + let ``PointPolar tests`` = + testList "PointPolar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs index 9198fea27..1c0f3aa6a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ScatterPolar = () \ No newline at end of file +module ScatterPolar = + [] + let ``ScatterPolar tests`` = + testList "ScatterPolar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs index 7dcbd5879..d3cd59de7 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module SplinePolar = () \ No newline at end of file +module SplinePolar = + [] + let ``SplinePolar tests`` = + testList "SplinePolar" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs index b0d6290a3..85bcada08 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BubbleSmith = () \ No newline at end of file +module BubbleSmith = + [] + let ``BubbleSmith tests`` = + testList "BubbleSmith" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs index 44ac6e73a..3f3c6f989 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module LineSmith = () \ No newline at end of file +module LineSmith = + [] + let ``LineSmith tests`` = + testList "LineSmith" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs index 834368ca6..12f96272c 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module PointSmith = () \ No newline at end of file +module PointSmith = + [] + let ``PointSmith tests`` = + testList "PointSmith" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs index 411071261..16d2749f8 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ScatterSmith = () \ No newline at end of file +module ScatterSmith = + [] + let ``ScatterSmith tests`` = + testList "ScatterSmith" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs index e1d7a556e..0e81730ba 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module BubbleTernary = () \ No newline at end of file +module BubbleTernary = + [] + let ``BubbleTernary tests`` = + testList "BubbleTernary" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs index 91704dbe4..e6b0aea72 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module LineTernary = () \ No newline at end of file +module LineTernary = + [] + let ``LineTernary tests`` = + testList "LineTernary" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs index cc171def7..60c7fb932 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module PointTernary = () \ No newline at end of file +module PointTernary = + [] + let ``PointTernary tests`` = + testList "PointTernary" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs index c672b25a2..8f6a4017c 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs @@ -7,4 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -module ScatterTernary = () \ No newline at end of file +module ScatterTernary = + [] + let ``ScatterTernary tests`` = + testList "ScatterTernary" [] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs b/tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs index adc16ae90..5aee6b20e 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs @@ -9,41 +9,6 @@ open Plotly.NET.StyleParam open TestUtils.HtmlCodegen - -[] -let ``Line and scatter plots`` = - testList "SimpleCharts.Line and scatter plots" [ - testCase "With LineStyle data" ( fun () -> - """var data = [{"type":"scatter","name":"line","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"symbol":"1"},"line":{"width":2.0,"dash":"dot"}}];""" - |> chartGeneratedContains TestCharts.SimpleCharts.``Line chart with line styling`` - ); - testCase "With LineStyle layout" ( fun () -> - emptyLayout TestCharts.SimpleCharts.``Line chart with line styling`` - ); - testCase "Chart line data" ( fun () -> - """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0],"y":[1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0,100.0,121.0,144.0,169.0,196.0,225.0,256.0,289.0,324.0,361.0,400.0,441.0,484.0,529.0,576.0,625.0,676.0,729.0,784.0,841.0,900.0,961.0,1024.0,1089.0,1156.0,1225.0,1296.0,1369.0,1444.0,1521.0,1600.0,1681.0,1764.0,1849.0,1936.0,2025.0,2116.0,2209.0,2304.0,2401.0,2500.0,2601.0,2704.0,2809.0,2916.0,3025.0,3136.0,3249.0,3364.0,3481.0,3600.0,3721.0,3844.0,3969.0,4096.0,4225.0,4356.0,4489.0,4624.0,4761.0,4900.0,5041.0,5184.0,5329.0,5476.0,5625.0,5776.0,5929.0,6084.0,6241.0,6400.0,6561.0,6724.0,6889.0,7056.0,7225.0,7396.0,7569.0,7744.0,7921.0,8100.0,8281.0,8464.0,8649.0,8836.0,9025.0,9216.0,9409.0,9604.0,9801.0,10000.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains TestCharts.SimpleCharts.``Simple line chart`` - ); - testCase "Chart line layout" ( fun () -> - emptyLayout TestCharts.SimpleCharts.``Simple line chart`` - ); - testCase "Spline chart data" ( fun () -> - """var data = [{"type":"scatter","name":"spline","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{"shape":"spline"}}];""" - |> chartGeneratedContains TestCharts.SimpleCharts.``Simple spline chart`` - ); - testCase "Spline chart layout" ( fun () -> - emptyLayout TestCharts.SimpleCharts.``Simple spline chart`` - ); - testCase "Text label data" ( fun () -> - """var data = [{"type":"scatter","name":"points","mode":"markers+text","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"text":["a","b","c","d","e","f","g","h","i","j"],"textposition":"top right","marker":{},"line":{}}];""" - |> chartGeneratedContains textLabelChart - ); - testCase "Text label layout" ( fun () -> - emptyLayout textLabelChart - ); - ] - - let columnChart = let values = [20; 14; 23;] let keys = ["Product A"; "Product B"; "Product C";] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs b/tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs index d38492f9c..89f61e163 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs @@ -7,33 +7,34 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen +open Plotly.NET.Tests [] let ``Html layout tests`` = testList "SimpleTests.Simple tests" [ testCase "Expecting plotly js script reference in generated html document" ( fun () -> $"""https://cdn.plot.ly/plotly-{Globals.PLOTLYJS_VERSION}.min""" - |> substringIsInChart TestCharts.SimpleCharts.``Point chart with axis labels and title`` toEmbeddedHTML + |> substringIsInChart TestCharts.Chart2D.Point.``Point chart with axis labels and title`` toEmbeddedHTML ); testCase "Expecting data" ( fun () -> """var data = [{"type":"scatter","mode":"markers","x":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart with axis labels and title`` + |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with axis labels and title`` ); testCase "Expecting layout info" (fun () -> """var layout = {"title":{"text":"Hello world!"},"xaxis":{"title":{"text":"xAxis"},"showgrid":false},"yaxis":{"title":{"text":"yAxis"},"showgrid":false}};""" - |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart with axis labels and title`` + |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with axis labels and title`` ); testCase "Expecting html tags in embedded page only" (fun () -> [""; ""; ""; ""; ""; ""; ""] - |> substringListIsInChart TestCharts.SimpleCharts.``Point chart with axis labels and title`` toEmbeddedHTML + |> substringListIsInChart TestCharts.Chart2D.Point.``Point chart with axis labels and title`` toEmbeddedHTML ); testCase "Expecting some html tags in both embedded and not embedded" (fun () -> [""] - |> chartGeneratedContainsList TestCharts.SimpleCharts.``Point chart with axis labels and title`` + |> chartGeneratedContainsList TestCharts.Chart2D.Point.``Point chart with axis labels and title`` ); testCase "Passing args to the function" ( fun () -> "data, layout, config);" - |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart with axis labels and title`` + |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with axis labels and title`` ) ] @@ -43,18 +44,18 @@ let ``plotlyjs reference tests`` = testList "SimpleTests.plotlyjs reference" [ testCase "full reference" (fun _ -> getFullPlotlyJS() - |> substringIsInChart TestCharts.SimpleCharts.``Point chart with full plotly.js reference`` toEmbeddedHTML + |> substringIsInChart TestCharts.Chart2D.Point.``Point chart with full plotly.js reference`` toEmbeddedHTML ) testCase "cdn reference" (fun _ -> $"""https://cdn.plot.ly/plotly-2.0.0.min""" - |> substringIsInChart TestCharts.SimpleCharts.``Point chart with plotly.js cdn reference`` toEmbeddedHTML + |> substringIsInChart TestCharts.Chart2D.Point.``Point chart with plotly.js cdn reference`` toEmbeddedHTML ) testCase "require: Expecting cloudflare link" (fun () -> """https://cdnjs.cloudflare.com/ajax/libs/require.js""" - |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart referencing plotly.js using require.js`` + |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart referencing plotly.js using require.js`` ); testCase "require: Expecting require config" (fun () -> (sprintf """var fsharpPlotlyRequire = requirejs.config({context:'fsharp-plotly',paths:{plotly:'https://cdn.plot.ly/plotly-%s.min'}}) || require;""" Globals.PLOTLYJS_VERSION) - |> chartGeneratedContains TestCharts.SimpleCharts.``Point chart referencing plotly.js using require.js`` + |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart referencing plotly.js using require.js`` ); ] \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/Main.fs b/tests/Plotly.NET.Tests/Main.fs index 1f34e91d4..19b2b37ba 100644 --- a/tests/Plotly.NET.Tests/Main.fs +++ b/tests/Plotly.NET.Tests/Main.fs @@ -1,6 +1,7 @@ -module Plotly.NET.Tests +module CoreTests open Expecto [] let main argv = Tests.runTestsInAssemblyWithCLIArgs [] argv + \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts.fs b/tests/Plotly.NET.Tests/TestCharts.fs deleted file mode 100644 index 356e01eb2..000000000 --- a/tests/Plotly.NET.Tests/TestCharts.fs +++ /dev/null @@ -1,47 +0,0 @@ -module TestCharts - -// this module holds all test charts. -// we use them in this project for various tests, but also to write them in plotly json schema for mocha testing in js with `Plotly.validate`. - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.ConfigObjects - -module SimpleCharts = - - - - let ``Simple line chart`` = Chart.Line([ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ], UseDefaults = false) - - - let ``Line chart with line styling`` = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - Chart.Line( - x = x, - y = y, - Name="line", - ShowMarkers=true, - MarkerSymbol=StyleParam.MarkerSymbol.Square, - UseDefaults = false - ) - |> Chart.withLineStyle(Width=2.,Dash=StyleParam.DrawingStyle.Dot) - - let ``Simple spline chart`` = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) - - - let ``Point chart with text labels`` = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let labels = ["a";"b";"c";"d";"e";"f";"g";"h";"i";"j";] - Chart.Point( - x = x,y = y, - Name="points", - MultiText=labels, - TextPosition=StyleParam.TextPosition.TopRight, - UseDefaults = false - ) \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs index 7f5e1d03f..259d24d2e 100644 --- a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs @@ -7,4 +7,18 @@ open Plotly.NET.GenericChart open Plotly.NET.StyleParam /// Test charts created with Chart2D.Chart.Line -module Line = () \ No newline at end of file +module Line = + let ``Simple line chart`` = Chart.Line([ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ], UseDefaults = false) + + let ``Line chart with line styling`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + Chart.Line( + x = x, + y = y, + Name="line", + ShowMarkers=true, + MarkerSymbol=StyleParam.MarkerSymbol.Square, + UseDefaults = false + ) + |> Chart.withLineStyle(Width=2.,Dash=StyleParam.DrawingStyle.Dot) \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs index 5ac738346..742b8b620 100644 --- a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs @@ -1,4 +1,4 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D +namespace Plotly.NET.Tests.TestCharts.Chart2D open Plotly.NET open Plotly.NET.LayoutObjects @@ -7,4 +7,54 @@ open Plotly.NET.GenericChart open Plotly.NET.StyleParam /// Test charts created with Chart2D.Chart.Point -module Point = () \ No newline at end of file +module Point = + + let ``Point chart with full plotly.js reference`` = + let xData = [0. .. 10.] + let yData = [0. .. 10.] + Chart.Point(xData, yData, UseDefaults = false) + |> Chart.withDisplayOptions( + DisplayOptions.init( + PlotlyJSReference = Full + ) + ) + + let ``Point chart with plotly.js cdn reference`` = + let xData = [0. .. 10.] + let yData = [0. .. 10.] + Chart.Point(xData, yData, UseDefaults = false) + |> Chart.withDisplayOptions( + DisplayOptions.init( + PlotlyJSReference = CDN $"https://cdn.plot.ly/plotly-2.0.0.min" + ) + ) + + let ``Point chart referencing plotly.js using require.js`` = + let xData = [0. .. 10.] + let yData = [0. .. 10.] + Chart.Point(xData, yData, UseDefaults = false) + |> Chart.withDisplayOptions( + DisplayOptions.init( + PlotlyJSReference = Require $"https://cdn.plot.ly/plotly-{Globals.PLOTLYJS_VERSION}.min" + ) + ) + + let ``Point chart with axis labels and title`` = + let xData = [0. .. 10.] + let yData = [0. .. 10.] + Chart.Point(x = xData, y = yData, UseDefaults = false) + |> Chart.withTitle "Hello world!" + |> Chart.withXAxisStyle (TitleText = "xAxis", ShowGrid=false) + |> Chart.withYAxisStyle (TitleText = "yAxis", ShowGrid=false) + + let ``Point chart with text labels`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let labels = ["a";"b";"c";"d";"e";"f";"g";"h";"i";"j";] + Chart.Point( + x = x,y = y, + Name="points", + MultiText=labels, + TextPosition=StyleParam.TextPosition.TopRight, + UseDefaults = false + ) \ No newline at end of file diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs index cc25b926f..2cc40feee 100644 --- a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs +++ b/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs @@ -7,4 +7,9 @@ open Plotly.NET.GenericChart open Plotly.NET.StyleParam /// Test charts created with Chart2D.Chart.Spline -module Spline = () \ No newline at end of file +module Spline = + + let ``Simple spline chart`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) From 697f886317e30877df40393c163fed1277f4707a Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Thu, 13 Apr 2023 21:25:51 +0200 Subject: [PATCH 04/26] wip test execution files --- .../HTMLCodegen/Chart2D/AnnotatedHeatmap.fs | 7 +++- .../HTMLCodegen/Chart2D/Area.fs | 7 +++- .../HTMLCodegen/Chart2D/Bar.fs | 7 +++- .../HTMLCodegen/Chart2D/BoxPlot.fs | 7 +++- .../HTMLCodegen/Chart2D/Bubble.fs | 7 +++- .../HTMLCodegen/Chart2D/Candlestick.fs | 7 +++- .../HTMLCodegen/Chart2D/Column.fs | 7 +++- .../HTMLCodegen/Chart2D/Contour.fs | 7 +++- .../HTMLCodegen/Chart2D/Funnel.fs | 7 +++- .../HTMLCodegen/Chart2D/Heatmap.fs | 7 +++- .../HTMLCodegen/Chart2D/Histogram.fs | 7 +++- .../HTMLCodegen/Chart2D/Histogram2D.fs | 7 +++- .../HTMLCodegen/Chart2D/Histogram2DContour.fs | 7 +++- .../HTMLCodegen/Chart2D/Image.fs | 7 +++- .../HTMLCodegen/Chart2D/Line.fs | 34 ++++++++++--------- .../HTMLCodegen/Chart2D/OHLC.fs | 7 +++- .../HTMLCodegen/Chart2D/Point.fs | 1 - .../HTMLCodegen/Chart2D/PointDensity.fs | 7 +++- .../HTMLCodegen/Chart2D/Range.fs | 7 +++- .../HTMLCodegen/Chart2D/Scatter.fs | 7 +++- .../HTMLCodegen/Chart2D/Spline.fs | 18 +++++----- .../HTMLCodegen/Chart2D/SplineArea.fs | 7 +++- .../HTMLCodegen/Chart2D/Splom.fs | 7 +++- .../HTMLCodegen/Chart2D/StackedArea.fs | 7 +++- .../HTMLCodegen/Chart2D/StackedBar.fs | 7 +++- .../HTMLCodegen/Chart2D/StackedColumn.fs | 7 +++- .../HTMLCodegen/Chart2D/StackedFunnel.fs | 7 +++- .../HTMLCodegen/Chart2D/Violin.fs | 7 +++- .../HTMLCodegen/Chart2D/Waterfall.fs | 7 +++- .../HTMLCodegen/Chart3D/Bubble3D.fs | 7 +++- .../HTMLCodegen/Chart3D/Cone.fs | 7 +++- .../HTMLCodegen/Chart3D/IsoSurface.fs | 7 +++- .../HTMLCodegen/Chart3D/Line3D.fs | 7 +++- .../HTMLCodegen/Chart3D/Mesh3D.fs | 7 +++- .../HTMLCodegen/Chart3D/Point3D.fs | 7 +++- .../HTMLCodegen/Chart3D/Scatter3D.fs | 7 +++- .../HTMLCodegen/Chart3D/StreamTube.fs | 7 +++- .../HTMLCodegen/Chart3D/Surface.fs | 7 +++- .../HTMLCodegen/Chart3D/Volume.fs | 7 +++- .../HTMLCodegen/ChartCarpet/BubbleCarpet.fs | 7 +++- .../HTMLCodegen/ChartCarpet/Carpet.fs | 7 +++- .../HTMLCodegen/ChartCarpet/ContourCarpet.fs | 7 +++- .../HTMLCodegen/ChartCarpet/LineCarpet.fs | 7 +++- .../HTMLCodegen/ChartCarpet/PointCarpet.fs | 7 +++- .../HTMLCodegen/ChartCarpet/ScatterCarpet.fs | 7 +++- .../HTMLCodegen/ChartCarpet/SplineCarpet.fs | 7 +++- .../HTMLCodegen/ChartDomain/Doughnut.fs | 7 +++- .../HTMLCodegen/ChartDomain/FunnelArea.fs | 7 +++- .../HTMLCodegen/ChartDomain/Icicle.fs | 7 +++- .../HTMLCodegen/ChartDomain/Indicator.fs | 7 +++- .../ChartDomain/ParralelCategories.fs | 7 +++- .../HTMLCodegen/ChartDomain/ParralelCoord.fs | 7 +++- .../HTMLCodegen/ChartDomain/Pie.fs | 7 +++- .../HTMLCodegen/ChartDomain/Sankey.fs | 7 +++- .../HTMLCodegen/ChartDomain/Sunburst.fs | 7 +++- .../HTMLCodegen/ChartDomain/Table.fs | 7 +++- .../HTMLCodegen/ChartDomain/Treemap.fs | 7 +++- .../HTMLCodegen/ChartMap/BubbleGeo.fs | 7 +++- .../HTMLCodegen/ChartMap/BubbleMapbox.fs | 7 +++- .../HTMLCodegen/ChartMap/ChoroplethMap.fs | 7 +++- .../HTMLCodegen/ChartMap/ChoroplethMapbox.fs | 7 +++- .../HTMLCodegen/ChartMap/DensityMapbox.fs | 7 +++- .../HTMLCodegen/ChartMap/LineGeo.fs | 7 +++- .../HTMLCodegen/ChartMap/LineMapbox.fs | 7 +++- .../HTMLCodegen/ChartMap/PointGeo.fs | 7 +++- .../HTMLCodegen/ChartMap/ScatterGeo.fs | 7 +++- .../HTMLCodegen/ChartMap/ScatterMapbox.fs | 7 +++- .../HTMLCodegen/ChartPolar/BarPolar.fs | 7 +++- .../HTMLCodegen/ChartPolar/BubblePolar.fs | 7 +++- .../HTMLCodegen/ChartPolar/LinePolar.fs | 7 +++- .../HTMLCodegen/ChartPolar/PointPolar.fs | 7 +++- .../HTMLCodegen/ChartPolar/ScatterPolar.fs | 7 +++- .../HTMLCodegen/ChartPolar/SplinePolar.fs | 7 +++- .../HTMLCodegen/ChartSmith/BubbleSmith.fs | 7 +++- .../HTMLCodegen/ChartSmith/LineSmith.fs | 7 +++- .../HTMLCodegen/ChartSmith/PointSmith.fs | 7 +++- .../HTMLCodegen/ChartSmith/ScatterSmith.fs | 7 +++- .../HTMLCodegen/ChartTernary/BubbleTernary.fs | 7 +++- .../HTMLCodegen/ChartTernary/LineTernary.fs | 7 +++- .../HTMLCodegen/ChartTernary/PointTernary.fs | 7 +++- .../ChartTernary/ScatterTernary.fs | 7 +++- 81 files changed, 496 insertions(+), 103 deletions(-) diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs index a0a28288e..39ae55e76 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module AnnotatedHeatmap = [] let ``AnnotatedHeatmap tests`` = - testList "AnnotatedHeatmap" [] + testList "HTMLCodegen.Chart2D" [ + testList "AnnotatedHeatmap" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs index e1908e431..4d96e71db 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Area = [] let ``Area tests`` = - testList "Area" [] + testList "HTMLCodegen.Chart2D" [ + testList "Area" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs index f9173f529..234ed34c9 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Bar = [] let ``Bar tests`` = - testList "Bar" [] + testList "HTMLCodegen.Chart2D" [ + testList "Bar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs index 4462cdcbe..f5881b16a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BoxPlot = [] let ``BoxPlot tests`` = - testList "BoxPlot" [] + testList "HTMLCodegen.Chart2D" [ + testList "BoxPlot" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs index a37be4055..9f0f3708b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Bubble = [] let ``Bubble tests`` = - testList "Bubble" [] + testList "HTMLCodegen.Chart2D" [ + testList "Bubble" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs index cb0ac284c..3264a5596 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Candlestick = [] let ``Candlestick tests`` = - testList "Candlestick" [] + testList "HTMLCodegen.Chart2D" [ + testList "Candlestick" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs index 366cd6626..3a4efa245 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Column = [] let ``Column tests`` = - testList "Column" [] + testList "HTMLCodegen.Chart2D" [ + testList "Column" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs index 9dab31351..495b39f33 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Contour = [] let ``Contour tests`` = - testList "Contour" [] + testList "HTMLCodegen.Chart2D" [ + testList "Contour" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs index e7957611f..f13725b69 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Funnel = [] let ``Funnel tests`` = - testList "Funnel" [] + testList "HTMLCodegen.Chart2D" [ + testList "Funnel" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs index 1bb67f9c7..937e62afb 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Heatmap = [] let ``Heatmap tests`` = - testList "Heatmap" [] + testList "HTMLCodegen.Chart2D" [ + testList "Heatmap" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs index 85c0de26a..4813bf935 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Histogram = [] let ``Histogram tests`` = - testList "Histogram" [] + testList "HTMLCodegen.Chart2D" [ + testList "Histogram" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs index 7821b59b5..54aa2893f 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Histogram2D = [] let ``Histogram2D tests`` = - testList "Histogram2D" [] + testList "HTMLCodegen.Chart2D" [ + testList "Histogram2D" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs index cdcb3f030..6a29e52af 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Histogram2DContour = [] let ``Histogram2DContour tests`` = - testList "Histogram2DContour" [] + testList "HTMLCodegen.Chart2D" [ + testList "Histogram2DContour" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs index 294687b1a..63d4b25ee 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Image = [] let ``Image tests`` = - testList "Image" [] + testList "HTMLCodegen.Chart2D" [ + testList "Image" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs index 579325477..ceb877864 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs @@ -11,19 +11,21 @@ open TestUtils.HtmlCodegen module Line = [] let ``Line tests`` = - testList "Line" [ - testCase "With LineStyle data" ( fun () -> - """var data = [{"type":"scatter","name":"line","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"symbol":"1"},"line":{"width":2.0,"dash":"dot"}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Line.``Line chart with line styling`` - ) - testCase "With LineStyle layout" ( fun () -> - emptyLayout TestCharts.Chart2D.Line.``Line chart with line styling`` - ) - testCase "Chart line data" ( fun () -> - """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0],"y":[1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0,100.0,121.0,144.0,169.0,196.0,225.0,256.0,289.0,324.0,361.0,400.0,441.0,484.0,529.0,576.0,625.0,676.0,729.0,784.0,841.0,900.0,961.0,1024.0,1089.0,1156.0,1225.0,1296.0,1369.0,1444.0,1521.0,1600.0,1681.0,1764.0,1849.0,1936.0,2025.0,2116.0,2209.0,2304.0,2401.0,2500.0,2601.0,2704.0,2809.0,2916.0,3025.0,3136.0,3249.0,3364.0,3481.0,3600.0,3721.0,3844.0,3969.0,4096.0,4225.0,4356.0,4489.0,4624.0,4761.0,4900.0,5041.0,5184.0,5329.0,5476.0,5625.0,5776.0,5929.0,6084.0,6241.0,6400.0,6561.0,6724.0,6889.0,7056.0,7225.0,7396.0,7569.0,7744.0,7921.0,8100.0,8281.0,8464.0,8649.0,8836.0,9025.0,9216.0,9409.0,9604.0,9801.0,10000.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Line.``Simple line chart`` - ) - testCase "Chart line layout" ( fun () -> - emptyLayout TestCharts.Chart2D.Line.``Simple line chart`` - ) - ] \ No newline at end of file + testList "HTMLCodegen.Chart2D" [ + testList "Line" [ + testCase "With LineStyle data" ( fun () -> + """var data = [{"type":"scatter","name":"line","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"symbol":"1"},"line":{"width":2.0,"dash":"dot"}}];""" + |> chartGeneratedContains TestCharts.Chart2D.Line.``Line chart with line styling`` + ) + testCase "With LineStyle layout" ( fun () -> + emptyLayout TestCharts.Chart2D.Line.``Line chart with line styling`` + ) + testCase "Chart line data" ( fun () -> + """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0],"y":[1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0,100.0,121.0,144.0,169.0,196.0,225.0,256.0,289.0,324.0,361.0,400.0,441.0,484.0,529.0,576.0,625.0,676.0,729.0,784.0,841.0,900.0,961.0,1024.0,1089.0,1156.0,1225.0,1296.0,1369.0,1444.0,1521.0,1600.0,1681.0,1764.0,1849.0,1936.0,2025.0,2116.0,2209.0,2304.0,2401.0,2500.0,2601.0,2704.0,2809.0,2916.0,3025.0,3136.0,3249.0,3364.0,3481.0,3600.0,3721.0,3844.0,3969.0,4096.0,4225.0,4356.0,4489.0,4624.0,4761.0,4900.0,5041.0,5184.0,5329.0,5476.0,5625.0,5776.0,5929.0,6084.0,6241.0,6400.0,6561.0,6724.0,6889.0,7056.0,7225.0,7396.0,7569.0,7744.0,7921.0,8100.0,8281.0,8464.0,8649.0,8836.0,9025.0,9216.0,9409.0,9604.0,9801.0,10000.0],"marker":{},"line":{}}];""" + |> chartGeneratedContains TestCharts.Chart2D.Line.``Simple line chart`` + ) + testCase "Chart line layout" ( fun () -> + emptyLayout TestCharts.Chart2D.Line.``Simple line chart`` + ) + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs index 4387a6c3e..700806323 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module OHLC = [] let ``OHLC tests`` = - testList "OHLC" [] + testList "HTMLCodegen.Chart2D" [ + testList "OHLC" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs index 937cc6420..98ed06a99 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs @@ -8,7 +8,6 @@ open Plotly.NET.GenericChart open Plotly.NET.Tests open TestUtils.HtmlCodegen - module Point = [] let ``Point tests`` = diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs index 2dc59d3dc..134803cde 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module PointDensity = [] let ``PointDensity tests`` = - testList "PointDensity" [] + testList "HTMLCodegen.Chart2D" [ + testList "PointDensity" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs index 80d7a9e8a..10be6ccf5 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Range = [] let ``Range tests`` = - testList "Range" [] + testList "HTMLCodegen.Chart2D" [ + testList "Range" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs index 41356da2f..82dcdbf99 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Scatter = [] let ``Scatter tests`` = - testList "Scatter" [] + testList "HTMLCodegen.Chart2D" [ + testList "Scatter" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs index c91f38ec5..d4cdd24b5 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs @@ -11,12 +11,14 @@ open TestUtils.HtmlCodegen module Spline = [] let ``Spline tests`` = - testList "Spline" [ - testCase "Spline chart data" ( fun () -> - """var data = [{"type":"scatter","name":"spline","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{"shape":"spline"}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Spline.``Simple spline chart`` - ) - testCase "Spline chart layout" ( fun () -> - emptyLayout TestCharts.Chart2D.Spline.``Simple spline chart`` - ) + testList "HTMLCodegen.Chart2D" [ + testList "Spline" [ + testCase "Spline chart data" ( fun () -> + """var data = [{"type":"scatter","name":"spline","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{"shape":"spline"}}];""" + |> chartGeneratedContains TestCharts.Chart2D.Spline.``Simple spline chart`` + ) + testCase "Spline chart layout" ( fun () -> + emptyLayout TestCharts.Chart2D.Spline.``Simple spline chart`` + ) + ] ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs index 167268c74..a7360b7f8 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module SplineArea = [] let ``SplineArea tests`` = - testList "SplineArea" [] + testList "HTMLCodegen.Chart2D" [ + testList "SplineArea" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs index a516ec5c2..c0b93f46d 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Splom = [] let ``Splom tests`` = - testList "Splom" [] + testList "HTMLCodegen.Chart2D" [ + testList "Splom" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs index b1e5df701..aaf78a3bc 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module StackedArea = [] let ``StackedArea tests`` = - testList "StackedArea" [] + testList "HTMLCodegen.Chart2D" [ + testList "StackedArea" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs index d90fa40a6..99185c2c9 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module StackedBar = [] let ``StackedBar tests`` = - testList "StackedBar" [] + testList "HTMLCodegen.Chart2D" [ + testList "StackedBar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs index fa6590004..1558e178f 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module StackedColumn = [] let ``StackedColumn tests`` = - testList "StackedColumn" [] + testList "HTMLCodegen.Chart2D" [ + testList "StackedColumn" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs index efa2a84fc..6174238a6 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module StackedFunnel = [] let ``StackedFunnel tests`` = - testList "StackedFunnel" [] + testList "HTMLCodegen.Chart2D" [ + testList "StackedFunnel" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs index 7609ec079..47c447e6b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Violin = [] let ``Violin tests`` = - testList "Violin" [] + testList "HTMLCodegen.Chart2D" [ + testList "Violin" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs index 1779685e4..b75b1ce11 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Waterfall = [] let ``Waterfall tests`` = - testList "Waterfall" [] + testList "HTMLCodegen.Chart2D" [ + testList "Waterfall" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs index aa5a7583e..267a4fe46 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Bubble3D = [] let ``Bubble3D tests`` = - testList "Bubble3D" [] + testList "HTMLCodegen.Chart3D" [ + testList "Bubble3D" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs index 5590bda46..26954252b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Cone = [] let ``Cone tests`` = - testList "Cone" [] + testList "HTMLCodegen.Chart3D" [ + testList "Cone" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs index 00ecb3cf3..bc13ae5c7 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module IsoSurface = [] let ``IsoSurface tests`` = - testList "IsoSurface" [] + testList "HTMLCodegen.Chart3D" [ + testList "IsoSurface" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs index a197de4be..8c969cc7e 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Line3D = [] let ``Line3D tests`` = - testList "Line3D" [] + testList "HTMLCodegen.Chart3D" [ + testList "Line3D" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs index 296ddf6df..15ac9f4fa 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Mesh3D = [] let ``Mesh3D tests`` = - testList "Mesh3D" [] + testList "HTMLCodegen.Chart3D" [ + testList "Mesh3D" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs index fa94e7cf5..c9e7ebeaa 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Point3D = [] let ``Point3D tests`` = - testList "Point3D" [] + testList "HTMLCodegen.Chart3D" [ + testList "Point3D" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs index 3b5a07623..f4de8a434 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Scatter3D = [] let ``Scatter3D tests`` = - testList "Scatter3D" [] + testList "HTMLCodegen.Chart3D" [ + testList "Scatter3D" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs index dac13a44c..ef64d5004 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module StreamTube = [] let ``StreamTube tests`` = - testList "StreamTube" [] + testList "HTMLCodegen.Chart3D" [ + testList "StreamTube" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs index 91298c388..15105b832 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Surface = [] let ``Surface tests`` = - testList "Surface" [] + testList "HTMLCodegen.Chart3D" [ + testList "Surface" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs index 72229a351..b8402096b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Volume = [] let ``Volume tests`` = - testList "Volume" [] + testList "HTMLCodegen.Chart3D" [ + testList "Volume" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs index 47451deb6..fa03adfd6 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BubbleCarpet = [] let ``BubbleCarpet tests`` = - testList "BubbleCarpet" [] + testList "HTMLCodegen.ChartCarpet" [ + testList "BubbleCarpet" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs index b1dd3474b..a1659aa66 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Carpet = [] let ``Carpet tests`` = - testList "Carpet" [] + testList "HTMLCodegen.ChartCarpet" [ + testList "Carpet" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs index 9e79d6038..be7fbfd90 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ContourCarpet = [] let ``ContourCarpet tests`` = - testList "ContourCarpet" [] + testList "HTMLCodegen.ChartCarpet" [ + testList "ContourCarpet" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs index 9b0298660..a0b0e7842 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module LineCarpet = [] let ``LineCarpet tests`` = - testList "LineCarpet" [] + testList "HTMLCodegen.ChartCarpet" [ + testList "LineCarpet" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs index 5bdfb16f8..1d07106e7 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module PointCarpet = [] let ``PointCarpet tests`` = - testList "PointCarpet" [] + testList "HTMLCodegen.ChartCarpet" [ + testList "PointCarpet" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs index a31db06ed..af4da16a5 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ScatterCarpet = [] let ``ScatterCarpet tests`` = - testList "ScatterCarpet" [] + testList "HTMLCodegen.ChartCarpet" [ + testList "ScatterCarpet" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs index 4935c44f2..3dd15ba7b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module SplineCarpet = [] let ``SplineCarpet tests`` = - testList "SplineCarpet" [] + testList "HTMLCodegen.ChartCarpet" [ + testList "SplineCarpet" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs index 36e4c0d6b..ea84bdb67 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Doughnut = [] let ``Doughnut tests`` = - testList "Doughnut" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Doughnut" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs index 2150b47d9..db42dc3de 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module FunnelArea = [] let ``FunnelArea tests`` = - testList "FunnelArea" [] + testList "HTMLCodegen.ChartDomain" [ + testList "FunnelArea" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs index 5ec2ab4ee..d8d54d6af 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Icicle = [] let ``Icicle tests`` = - testList "Icicle" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Icicle" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs index de8efef75..edbfbfc08 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Indicator = [] let ``Indicator tests`` = - testList "Indicator" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Indicator" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs index ed019be4e..c9ff5fc77 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ParralelCategories = [] let ``ParralelCategories tests`` = - testList "ParralelCategories" [] + testList "HTMLCodegen.ChartDomain" [ + testList "ParralelCategories" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs index 4a7171d26..ae09834e8 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ParralelCoord = [] let ``ParralelCoord tests`` = - testList "ParralelCoord" [] + testList "HTMLCodegen.ChartDomain" [ + testList "ParralelCoord" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs index b22755a81..087214bb9 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Pie = [] let ``Pie tests`` = - testList "Pie" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Pie" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs index 211babf3c..9f6a884e1 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Sankey = [] let ``Sankey tests`` = - testList "Sankey" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Sankey" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs index 14ce5bf17..16f8c6828 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Sunburst = [] let ``Sunburst tests`` = - testList "Sunburst" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Sunburst" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs index daa211e60..1934995c4 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Table = [] let ``Table tests`` = - testList "Table" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Table" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs index fd3d827bf..27d06dc2c 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module Treemap = [] let ``Treemap tests`` = - testList "Treemap" [] + testList "HTMLCodegen.ChartDomain" [ + testList "Treemap" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs index d12df46d6..e24bd70b3 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BubbleGeo = [] let ``BubbleGeo tests`` = - testList "BubbleGeo" [] + testList "HTMLCodegen.ChartMap" [ + testList "BubbleGeo" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs index c3d63dc89..4fc8838dd 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BubbleMapbox = [] let ``BubbleMapbox tests`` = - testList "BubbleMapbox" [] + testList "HTMLCodegen.ChartMap" [ + testList "BubbleMapbox" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs index a64d9e3a3..7298d2120 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ChoroplethMap = [] let ``ChoroplethMap tests`` = - testList "ChoroplethMap" [] + testList "HTMLCodegen.ChartMap" [ + testList "ChoroplethMap" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs index 3b9ad9fb6..52b77e472 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ChoroplethMapbox = [] let ``ChoroplethMapbox tests`` = - testList "ChoroplethMapbox" [] + testList "HTMLCodegen.ChartMap" [ + testList "ChoroplethMapbox" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs index 60b55ecb4..614c2195b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module DensityMapbox = [] let ``DensityMapbox tests`` = - testList "DensityMapbox" [] + testList "HTMLCodegen.ChartMap" [ + testList "DensityMapbox" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs index a775791e0..5c16c32f0 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module LineGeo = [] let ``LineGeo tests`` = - testList "LineGeo" [] + testList "HTMLCodegen.ChartMap" [ + testList "LineGeo" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs index b71b0e0d4..101784d1a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module LineMapbox = [] let ``LineMapbox tests`` = - testList "LineMapbox" [] + testList "HTMLCodegen.ChartMap" [ + testList "LineMapbox" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs index a0941888d..f9c4d39bf 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module PointGeo = [] let ``PointGeo tests`` = - testList "PointGeo" [] + testList "HTMLCodegen.ChartMap" [ + testList "PointGeo" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs index 1cad0d70f..188c35ccd 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ScatterGeo = [] let ``ScatterGeo tests`` = - testList "ScatterGeo" [] + testList "HTMLCodegen.ChartMap" [ + testList "ScatterGeo" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs index 9432fe1ba..863433795 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ScatterMapbox = [] let ``ScatterMapbox tests`` = - testList "ScatterMapbox" [] + testList "HTMLCodegen.ChartMap" [ + testList "ScatterMapbox" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs index deaa49d59..959616b1a 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BarPolar = [] let ``BarPolar tests`` = - testList "BarPolar" [] + testList "HTMLCodegen.ChartPolar" [ + testList "BarPolar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs index 6b25a3ae5..9a37cbe87 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BubblePolar = [] let ``BubblePolar tests`` = - testList "BubblePolar" [] + testList "HTMLCodegen.ChartPolar" [ + testList "BubblePolar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs index 29d42d558..a3275ad82 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module LinePolar = [] let ``LinePolar tests`` = - testList "LinePolar" [] + testList "HTMLCodegen.ChartPolar" [ + testList "LinePolar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs index 23693120a..e02821234 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module PointPolar = [] let ``PointPolar tests`` = - testList "PointPolar" [] + testList "HTMLCodegen.ChartPolar" [ + testList "PointPolar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs index 1c0f3aa6a..ac2336cd7 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ScatterPolar = [] let ``ScatterPolar tests`` = - testList "ScatterPolar" [] + testList "HTMLCodegen.ChartPolar" [ + testList "ScatterPolar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs index d3cd59de7..fc4b1b48f 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module SplinePolar = [] let ``SplinePolar tests`` = - testList "SplinePolar" [] + testList "HTMLCodegen.ChartPolar" [ + testList "SplinePolar" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs index 85bcada08..102a47365 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BubbleSmith = [] let ``BubbleSmith tests`` = - testList "BubbleSmith" [] + testList "HTMLCodegen.ChartSmith" [ + testList "BubbleSmith" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs index 3f3c6f989..b6e5236fe 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module LineSmith = [] let ``LineSmith tests`` = - testList "LineSmith" [] + testList "HTMLCodegen.ChartSmith" [ + testList "LineSmith" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs index 12f96272c..01c36969b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module PointSmith = [] let ``PointSmith tests`` = - testList "PointSmith" [] + testList "HTMLCodegen.ChartSmith" [ + testList "PointSmith" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs index 16d2749f8..e7b5bba07 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ScatterSmith = [] let ``ScatterSmith tests`` = - testList "ScatterSmith" [] + testList "HTMLCodegen.ChartSmith" [ + testList "ScatterSmith" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs index 0e81730ba..3abfbd76b 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module BubbleTernary = [] let ``BubbleTernary tests`` = - testList "BubbleTernary" [] + testList "HTMLCodegen.ChartTernary" [ + testList "BubbleTernary" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs index e6b0aea72..78633f653 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module LineTernary = [] let ``LineTernary tests`` = - testList "LineTernary" [] + testList "HTMLCodegen.ChartTernary" [ + testList "LineTernary" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs index 60c7fb932..2fc5715f2 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module PointTernary = [] let ``PointTernary tests`` = - testList "PointTernary" [] + testList "HTMLCodegen.ChartTernary" [ + testList "PointTernary" [ + + ] + ] diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs index 8f6a4017c..5c15286b1 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs +++ b/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs @@ -5,9 +5,14 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart +open Plotly.NET.Tests open TestUtils.HtmlCodegen module ScatterTernary = [] let ``ScatterTernary tests`` = - testList "ScatterTernary" [] + testList "HTMLCodegen.ChartTernary" [ + testList "ScatterTernary" [ + + ] + ] From a7fa141173dd09ae7bb5a16315da3e05a0472497 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 14 Apr 2023 14:15:37 +0200 Subject: [PATCH 05/26] Greatly improve test pipeline and structure --- Plotly.NET.sln | 132 ++++++++++-------- build/Build.fs | 22 ++- build/PackageTasks.fs | 4 +- build/ProjectInfo.fs | 44 +++--- build/ReleaseTasks.fs | 8 +- build/TestTasks.fs | 97 +++++-------- .../CSharpTestBase/CSharpTestBase.csproj | 9 ++ tests/Common/CSharpTestBase/Class1.cs | 5 + .../FSharpTestBase/FSharpTestBase.fsproj | 12 ++ tests/Common/FSharpTestBase/Library.fs | 5 + .../CSharpConsole/CSharpConsole.csproj} | 9 +- .../CSharpConsole}/Program.cs | 0 .../FSharpConsole/FSharpConsole.fsproj} | 2 +- .../FSharpConsole}/Program.fs | 0 .../APITest/Chart2DAPITest.cs | 0 .../APITest/Chart3DAPITest.cs | 0 .../APITest/ChartDomainAPITest.cs | 0 .../APITest/ChartMapAPITest.cs | 0 .../APITest/ChartPolarAPITest.cs | 0 .../CSharpInteroperabilityTests.csproj} | 2 +- .../LayoutObjectTests.cs | 0 .../StyleParamTests.cs | 0 .../TraceObjectTests.cs | 0 .../CoreTests}/ChartAPIs/Combine.fs | 0 .../CoreTests}/ChartAPIs/WithAxis.fs | 0 .../CoreTests}/CommonAbstractions/Colors.fs | 0 .../CommonAbstractions/StyleParams.fs | 0 .../CoreTests}/ConfigObjects/Config.fs | 0 .../CoreTests/CoreTests.fsproj} | 6 +- .../DisplayOptions/DisplayOptions.fs | 0 .../CoreTests}/HTMLCodegen/CarpetCharts.fs | 0 .../HTMLCodegen/CategoricalCharts.fs | 0 .../HTMLCodegen/Chart2D/AnnotatedHeatmap.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Area.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Bar.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/BoxPlot.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Bubble.fs | 0 .../HTMLCodegen/Chart2D/Candlestick.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Column.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Contour.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Funnel.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Heatmap.fs | 0 .../HTMLCodegen/Chart2D/Histogram.fs | 0 .../HTMLCodegen/Chart2D/Histogram2D.fs | 0 .../HTMLCodegen/Chart2D/Histogram2DContour.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Image.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Line.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/OHLC.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Point.fs | 0 .../HTMLCodegen/Chart2D/PointDensity.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Range.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Scatter.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Spline.fs | 0 .../HTMLCodegen/Chart2D/SplineArea.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Splom.fs | 0 .../HTMLCodegen/Chart2D/StackedArea.fs | 0 .../HTMLCodegen/Chart2D/StackedBar.fs | 0 .../HTMLCodegen/Chart2D/StackedColumn.fs | 0 .../HTMLCodegen/Chart2D/StackedFunnel.fs | 0 .../CoreTests}/HTMLCodegen/Chart2D/Violin.fs | 0 .../HTMLCodegen/Chart2D/Waterfall.fs | 0 .../HTMLCodegen/Chart3D/Bubble3D.fs | 0 .../CoreTests}/HTMLCodegen/Chart3D/Cone.fs | 0 .../HTMLCodegen/Chart3D/IsoSurface.fs | 0 .../CoreTests}/HTMLCodegen/Chart3D/Line3D.fs | 0 .../CoreTests}/HTMLCodegen/Chart3D/Mesh3D.fs | 0 .../CoreTests}/HTMLCodegen/Chart3D/Point3D.fs | 0 .../HTMLCodegen/Chart3D/Scatter3D.fs | 0 .../HTMLCodegen/Chart3D/StreamTube.fs | 0 .../CoreTests}/HTMLCodegen/Chart3D/Surface.fs | 0 .../CoreTests}/HTMLCodegen/Chart3D/Volume.fs | 0 .../HTMLCodegen/ChartCarpet/BubbleCarpet.fs | 0 .../HTMLCodegen/ChartCarpet/Carpet.fs | 0 .../HTMLCodegen/ChartCarpet/ContourCarpet.fs | 0 .../HTMLCodegen/ChartCarpet/LineCarpet.fs | 0 .../HTMLCodegen/ChartCarpet/PointCarpet.fs | 0 .../HTMLCodegen/ChartCarpet/ScatterCarpet.fs | 0 .../HTMLCodegen/ChartCarpet/SplineCarpet.fs | 0 .../HTMLCodegen/ChartDomain/Doughnut.fs | 0 .../HTMLCodegen/ChartDomain/FunnelArea.fs | 0 .../HTMLCodegen/ChartDomain/Icicle.fs | 0 .../HTMLCodegen/ChartDomain/Indicator.fs | 0 .../ChartDomain/ParralelCategories.fs | 0 .../HTMLCodegen/ChartDomain/ParralelCoord.fs | 0 .../CoreTests}/HTMLCodegen/ChartDomain/Pie.fs | 0 .../HTMLCodegen/ChartDomain/Sankey.fs | 0 .../HTMLCodegen/ChartDomain/Sunburst.fs | 0 .../HTMLCodegen/ChartDomain/Table.fs | 0 .../HTMLCodegen/ChartDomain/Treemap.fs | 0 .../CoreTests}/HTMLCodegen/ChartLayout.fs | 0 .../HTMLCodegen/ChartMap/BubbleGeo.fs | 0 .../HTMLCodegen/ChartMap/BubbleMapbox.fs | 0 .../HTMLCodegen/ChartMap/ChoroplethMap.fs | 0 .../HTMLCodegen/ChartMap/ChoroplethMapbox.fs | 0 .../HTMLCodegen/ChartMap/DensityMapbox.fs | 0 .../HTMLCodegen/ChartMap/LineGeo.fs | 0 .../HTMLCodegen/ChartMap/LineMapbox.fs | 0 .../HTMLCodegen/ChartMap/PointGeo.fs | 0 .../HTMLCodegen/ChartMap/ScatterGeo.fs | 0 .../HTMLCodegen/ChartMap/ScatterMapbox.fs | 0 .../HTMLCodegen/ChartPolar/BarPolar.fs | 0 .../HTMLCodegen/ChartPolar/BubblePolar.fs | 0 .../HTMLCodegen/ChartPolar/LinePolar.fs | 0 .../HTMLCodegen/ChartPolar/PointPolar.fs | 0 .../HTMLCodegen/ChartPolar/ScatterPolar.fs | 0 .../HTMLCodegen/ChartPolar/SplinePolar.fs | 0 .../HTMLCodegen/ChartSmith/BubbleSmith.fs | 0 .../HTMLCodegen/ChartSmith/LineSmith.fs | 0 .../HTMLCodegen/ChartSmith/PointSmith.fs | 0 .../HTMLCodegen/ChartSmith/ScatterSmith.fs | 0 .../HTMLCodegen/ChartTernary/BubbleTernary.fs | 0 .../HTMLCodegen/ChartTernary/LineTernary.fs | 0 .../HTMLCodegen/ChartTernary/PointTernary.fs | 0 .../ChartTernary/ScatterTernary.fs | 0 .../CoreTests}/HTMLCodegen/Charts3D.fs | 0 .../HTMLCodegen/DistributionCharts.fs | 0 .../CoreTests}/HTMLCodegen/FinanceCharts.fs | 0 .../CoreTests}/HTMLCodegen/GeoMapCharts.fs | 0 .../CoreTests}/HTMLCodegen/MapboxMapCharts.fs | 0 .../HTMLCodegen/MulticategoryData.fs | 0 .../CoreTests}/HTMLCodegen/PolarCharts.fs | 0 .../CoreTests}/HTMLCodegen/SimpleCharts.fs | 2 +- .../CoreTests}/HTMLCodegen/SimpleTests.fs | 0 .../CoreTests}/HTMLCodegen/SmithCharts.fs | 0 .../CoreTests}/HTMLCodegen/TernaryCharts.fs | 0 .../CoreTests}/LayoutObjects/LinearAxis.fs | 0 .../CoreTests}/LayoutObjects/Slider.fs | 0 .../CoreTests}/Main.fs | 0 .../TestCharts/Chart2D/AnnotatedHeatmap.fs | 0 .../CoreTests}/TestCharts/Chart2D/Area.fs | 0 .../CoreTests}/TestCharts/Chart2D/Bar.fs | 0 .../CoreTests}/TestCharts/Chart2D/BoxPlot.fs | 0 .../CoreTests}/TestCharts/Chart2D/Bubble.fs | 0 .../TestCharts/Chart2D/Candlestick.fs | 0 .../CoreTests}/TestCharts/Chart2D/Column.fs | 0 .../CoreTests}/TestCharts/Chart2D/Contour.fs | 0 .../CoreTests}/TestCharts/Chart2D/Funnel.fs | 0 .../CoreTests}/TestCharts/Chart2D/Heatmap.fs | 0 .../TestCharts/Chart2D/Histogram.fs | 0 .../TestCharts/Chart2D/Histogram2D.fs | 0 .../TestCharts/Chart2D/Histogram2DContour.fs | 0 .../CoreTests}/TestCharts/Chart2D/Image.fs | 0 .../CoreTests}/TestCharts/Chart2D/Line.fs | 0 .../CoreTests}/TestCharts/Chart2D/OHLC.fs | 0 .../CoreTests}/TestCharts/Chart2D/Point.fs | 0 .../TestCharts/Chart2D/PointDensity.fs | 0 .../CoreTests}/TestCharts/Chart2D/Range.fs | 0 .../CoreTests}/TestCharts/Chart2D/Scatter.fs | 0 .../CoreTests}/TestCharts/Chart2D/Spline.fs | 0 .../TestCharts/Chart2D/SplineArea.fs | 0 .../CoreTests}/TestCharts/Chart2D/Splom.fs | 0 .../TestCharts/Chart2D/StackedArea.fs | 0 .../TestCharts/Chart2D/StackedBar.fs | 0 .../TestCharts/Chart2D/StackedColumn.fs | 0 .../TestCharts/Chart2D/StackedFunnel.fs | 0 .../CoreTests}/TestCharts/Chart2D/Violin.fs | 0 .../TestCharts/Chart2D/Waterfall.fs | 0 .../CoreTests}/TestCharts/Chart3D/Bubble3D.fs | 0 .../CoreTests}/TestCharts/Chart3D/Cone.fs | 0 .../TestCharts/Chart3D/IsoSurface.fs | 0 .../CoreTests}/TestCharts/Chart3D/Line3D.fs | 0 .../CoreTests}/TestCharts/Chart3D/Mesh3D.fs | 0 .../CoreTests}/TestCharts/Chart3D/Point3D.fs | 0 .../TestCharts/Chart3D/Scatter3D.fs | 0 .../TestCharts/Chart3D/StreamTube.fs | 0 .../CoreTests}/TestCharts/Chart3D/Surface.fs | 0 .../CoreTests}/TestCharts/Chart3D/Volume.fs | 0 .../TestCharts/ChartCarpet/BubbleCarpet.fs | 0 .../TestCharts/ChartCarpet/Carpet.fs | 0 .../TestCharts/ChartCarpet/ContourCarpet.fs | 0 .../TestCharts/ChartCarpet/LineCarpet.fs | 0 .../TestCharts/ChartCarpet/PointCarpet.fs | 0 .../TestCharts/ChartCarpet/ScatterCarpet.fs | 0 .../TestCharts/ChartCarpet/SplineCarpet.fs | 0 .../TestCharts/ChartDomain/Doughnut.fs | 0 .../TestCharts/ChartDomain/FunnelArea.fs | 0 .../TestCharts/ChartDomain/Icicle.fs | 0 .../TestCharts/ChartDomain/Indicator.fs | 0 .../ChartDomain/ParralelCategories.fs | 0 .../TestCharts/ChartDomain/ParralelCoord.fs | 0 .../CoreTests}/TestCharts/ChartDomain/Pie.fs | 0 .../TestCharts/ChartDomain/Sankey.fs | 0 .../TestCharts/ChartDomain/Sunburst.fs | 0 .../TestCharts/ChartDomain/Table.fs | 0 .../TestCharts/ChartDomain/Treemap.fs | 0 .../TestCharts/ChartMap/BubbleGeo.fs | 0 .../TestCharts/ChartMap/BubbleMapbox.fs | 0 .../TestCharts/ChartMap/ChoroplethMap.fs | 0 .../TestCharts/ChartMap/ChoroplethMapbox.fs | 0 .../TestCharts/ChartMap/DensityMapbox.fs | 0 .../CoreTests}/TestCharts/ChartMap/LineGeo.fs | 0 .../TestCharts/ChartMap/LineMapbox.fs | 0 .../TestCharts/ChartMap/PointGeo.fs | 0 .../TestCharts/ChartMap/ScatterGeo.fs | 0 .../TestCharts/ChartMap/ScatterMapbox.fs | 0 .../TestCharts/ChartPolar/BarPolar.fs | 0 .../TestCharts/ChartPolar/BubblePolar.fs | 0 .../TestCharts/ChartPolar/LinePolar.fs | 0 .../TestCharts/ChartPolar/PointPolar.fs | 0 .../TestCharts/ChartPolar/ScatterPolar.fs | 0 .../TestCharts/ChartPolar/SplinePolar.fs | 0 .../TestCharts/ChartSmith/BubbleSmith.fs | 0 .../TestCharts/ChartSmith/LineSmith.fs | 0 .../TestCharts/ChartSmith/PointSmith.fs | 0 .../TestCharts/ChartSmith/ScatterSmith.fs | 0 .../TestCharts/ChartTernary/BubbleTernary.fs | 0 .../TestCharts/ChartTernary/LineTernary.fs | 0 .../TestCharts/ChartTernary/PointTernary.fs | 0 .../TestCharts/ChartTernary/ScatterTernary.fs | 0 .../CoreTests}/TestUtils.fs | 2 +- .../CoreTests}/Traces/TraceID.fs | 0 .../CoreTests}/Traces/TraceStaticMembers.fs | 0 .../CoreTests}/Traces/TraceStyle.fs | 0 .../StrongNameTests}/Program.fs | 0 .../StrongNameTests/StrongNameTests.fsproj} | 6 +- .../StrongNameTests}/Tests.fs | 0 .../CSharpTests/CSharpTests.csproj} | 2 +- .../CSharpTests}/ExtensionMethodsTests.cs | 0 .../CSharpTests}/TestUtils.cs | 0 .../CSharpTests}/htmlcodegen/SimpleTests.cs | 0 .../ImageExportTests}/ImageExport.fs | 0 .../ImageExportTests/ImageExportTests.fsproj} | 2 +- .../ImageExportTests}/Main.fs | 0 .../data/linuxTestBase64JPG.txt | 0 .../data/linuxTestBase64PNG.txt | 0 .../ImageExportTests}/data/testPNG.png | Bin .../ImageExportTests}/data/testSVGURI.txt | 0 .../data/winTestBase64JPG.txt | 0 .../data/winTestBase64PNG.txt | 0 tests/JSTests/.gitkeep | 0 tests/README.md | 76 ++++++++++ 231 files changed, 278 insertions(+), 169 deletions(-) create mode 100644 tests/Common/CSharpTestBase/CSharpTestBase.csproj create mode 100644 tests/Common/CSharpTestBase/Class1.cs create mode 100644 tests/Common/FSharpTestBase/FSharpTestBase.fsproj create mode 100644 tests/Common/FSharpTestBase/Library.fs rename tests/{Plotly.NET.Tests.CSharpConsole/Plotly.NET.Tests.CSharpConsole.csproj => ConsoleApps/CSharpConsole/CSharpConsole.csproj} (57%) rename tests/{Plotly.NET.Tests.CSharpConsole => ConsoleApps/CSharpConsole}/Program.cs (100%) rename tests/{Plotly.NET.Tests.FSharpConsole/Plotly.NET.Tests.FSharpConsole.fsproj => ConsoleApps/FSharpConsole/FSharpConsole.fsproj} (83%) rename tests/{Plotly.NET.Tests.FSharpConsole => ConsoleApps/FSharpConsole}/Program.fs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/APITest/Chart2DAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/APITest/Chart3DAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/APITest/ChartDomainAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/APITest/ChartMapAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/APITest/ChartPolarAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj => CoreTests/CSharpInteroperabilityTests/CSharpInteroperabilityTests.csproj} (91%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/LayoutObjectTests.cs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/StyleParamTests.cs (100%) rename tests/{Plotly.NET.Tests.CSharpInteroperability => CoreTests/CSharpInteroperabilityTests}/TraceObjectTests.cs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/ChartAPIs/Combine.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/ChartAPIs/WithAxis.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/CommonAbstractions/Colors.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/CommonAbstractions/StyleParams.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/ConfigObjects/Config.fs (100%) rename tests/{Plotly.NET.Tests/Plotly.NET.Tests.fsproj => CoreTests/CoreTests/CoreTests.fsproj} (97%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/DisplayOptions/DisplayOptions.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/CarpetCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/CategoricalCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Area.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Bar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/BoxPlot.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Bubble.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Candlestick.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Column.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Contour.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Funnel.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Heatmap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Histogram.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Histogram2D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Histogram2DContour.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Image.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Line.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/OHLC.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Point.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/PointDensity.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Range.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Scatter.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Spline.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/SplineArea.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Splom.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/StackedArea.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/StackedBar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/StackedColumn.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/StackedFunnel.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Violin.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart2D/Waterfall.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Bubble3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Cone.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/IsoSurface.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Line3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Mesh3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Point3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Scatter3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/StreamTube.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Surface.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Chart3D/Volume.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartCarpet/BubbleCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartCarpet/Carpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartCarpet/ContourCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartCarpet/LineCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartCarpet/PointCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartCarpet/ScatterCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartCarpet/SplineCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Doughnut.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/FunnelArea.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Icicle.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Indicator.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/ParralelCategories.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/ParralelCoord.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Pie.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Sankey.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Sunburst.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Table.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartDomain/Treemap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartLayout.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/BubbleGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/BubbleMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/ChoroplethMap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/ChoroplethMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/DensityMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/LineGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/LineMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/PointGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/ScatterGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartMap/ScatterMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartPolar/BarPolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartPolar/BubblePolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartPolar/LinePolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartPolar/PointPolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartPolar/ScatterPolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartPolar/SplinePolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartSmith/BubbleSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartSmith/LineSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartSmith/PointSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartSmith/ScatterSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartTernary/BubbleTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartTernary/LineTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartTernary/PointTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/ChartTernary/ScatterTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/Charts3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/DistributionCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/FinanceCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/GeoMapCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/MapboxMapCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/MulticategoryData.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/PolarCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/SimpleCharts.fs (99%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/SimpleTests.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/SmithCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/HTMLCodegen/TernaryCharts.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/LayoutObjects/LinearAxis.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/LayoutObjects/Slider.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/Main.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/AnnotatedHeatmap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Area.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Bar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/BoxPlot.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Bubble.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Candlestick.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Column.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Contour.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Funnel.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Heatmap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Histogram.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Histogram2D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Histogram2DContour.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Image.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Line.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/OHLC.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Point.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/PointDensity.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Range.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Scatter.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Spline.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/SplineArea.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Splom.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/StackedArea.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/StackedBar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/StackedColumn.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/StackedFunnel.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Violin.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart2D/Waterfall.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Bubble3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Cone.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/IsoSurface.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Line3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Mesh3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Point3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Scatter3D.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/StreamTube.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Surface.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/Chart3D/Volume.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartCarpet/BubbleCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartCarpet/Carpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartCarpet/ContourCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartCarpet/LineCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartCarpet/PointCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartCarpet/ScatterCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartCarpet/SplineCarpet.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Doughnut.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/FunnelArea.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Icicle.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Indicator.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/ParralelCategories.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/ParralelCoord.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Pie.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Sankey.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Sunburst.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Table.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartDomain/Treemap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/BubbleGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/BubbleMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/ChoroplethMap.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/ChoroplethMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/DensityMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/LineGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/LineMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/PointGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/ScatterGeo.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartMap/ScatterMapbox.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartPolar/BarPolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartPolar/BubblePolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartPolar/LinePolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartPolar/PointPolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartPolar/ScatterPolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartPolar/SplinePolar.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartSmith/BubbleSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartSmith/LineSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartSmith/PointSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartSmith/ScatterSmith.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartTernary/BubbleTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartTernary/LineTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartTernary/PointTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestCharts/ChartTernary/ScatterTernary.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/TestUtils.fs (92%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/Traces/TraceID.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/Traces/TraceStaticMembers.fs (100%) rename tests/{Plotly.NET.Tests => CoreTests/CoreTests}/Traces/TraceStyle.fs (100%) rename tests/{Plotly.NET.Tests.StrongName => CoreTests/StrongNameTests}/Program.fs (100%) rename tests/{Plotly.NET.Tests.StrongName/Plotly.NET.Tests.StrongName.fsproj => CoreTests/StrongNameTests/StrongNameTests.fsproj} (84%) rename tests/{Plotly.NET.Tests.StrongName => CoreTests/StrongNameTests}/Tests.fs (100%) rename tests/{Plotly.NET.CSharp.Tests/Plotly.NET.CSharp.Tests.csproj => ExtensionLibsTests/CSharpTests/CSharpTests.csproj} (91%) rename tests/{Plotly.NET.CSharp.Tests => ExtensionLibsTests/CSharpTests}/ExtensionMethodsTests.cs (100%) rename tests/{Plotly.NET.CSharp.Tests => ExtensionLibsTests/CSharpTests}/TestUtils.cs (100%) rename tests/{Plotly.NET.CSharp.Tests => ExtensionLibsTests/CSharpTests}/htmlcodegen/SimpleTests.cs (100%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/ImageExport.fs (100%) rename tests/{Plotly.NET.ImageExport.Tests/Plotly.NET.ImageExport.Tests.fsproj => ExtensionLibsTests/ImageExportTests/ImageExportTests.fsproj} (88%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/Main.fs (100%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/data/linuxTestBase64JPG.txt (100%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/data/linuxTestBase64PNG.txt (100%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/data/testPNG.png (100%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/data/testSVGURI.txt (100%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/data/winTestBase64JPG.txt (100%) rename tests/{Plotly.NET.ImageExport.Tests => ExtensionLibsTests/ImageExportTests}/data/winTestBase64PNG.txt (100%) create mode 100644 tests/JSTests/.gitkeep create mode 100644 tests/README.md diff --git a/Plotly.NET.sln b/Plotly.NET.sln index 4537c0c2b..afe1476aa 100644 --- a/Plotly.NET.sln +++ b/Plotly.NET.sln @@ -28,8 +28,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7C6D08E7 EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET", "src\Plotly.NET\Plotly.NET.fsproj", "{DFAC135B-36B8-4347-B1DD-B5E0144610C2}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET.Tests", "tests\Plotly.NET.Tests\Plotly.NET.Tests.fsproj", "{2C9916F4-817A-4B70-8D83-F48E9A30544F}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".ci", ".ci", "{2461AFBF-6E10-4F7B-A0EA-3D62541C2EB1}" ProjectSection(SolutionItems) = preProject .github\workflows\build-and-deploy-docs.yml = .github\workflows\build-and-deploy-docs.yml @@ -139,24 +137,34 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0E87E47E-9ED EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{EAE25A1F-86FC-426B-803F-1006D1AD06A8}" ProjectSection(SolutionItems) = preProject - src\Plotly.NET\Playground.fsx = src\Plotly.NET\Playground.fsx + tests\README.md = tests\README.md EndProjectSection EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET.Tests.FSharpConsole", "tests\Plotly.NET.Tests.FSharpConsole\Plotly.NET.Tests.FSharpConsole.fsproj", "{60114ACE-77E6-4A19-9A2F-CB64084174AF}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "build", "build\build.fsproj", "{403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.Tests.CSharpConsole", "tests\Plotly.NET.Tests.CSharpConsole\Plotly.NET.Tests.CSharpConsole.csproj", "{1BC73DA0-586F-45C2-BC5B-A70C452A00F0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.CSharp", "src\Plotly.NET.CSharp\Plotly.NET.CSharp.csproj", "{F944FE69-F4A5-4B48-8E4D-BE4B61E92B26}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET.ImageExport.Tests", "tests\Plotly.NET.ImageExport.Tests\Plotly.NET.ImageExport.Tests.fsproj", "{55A461C3-8018-4020-B16E-D6005BDFCAED}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CoreTests", "CoreTests", "{023425D8-B375-45ED-A29A-A3ED00C0E2BC}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "build", "build\build.fsproj", "{403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JSTests", "JSTests", "{94E71E92-C244-4AF1-903A-DAC5448DADA5}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.CSharp", "src\Plotly.NET.CSharp\Plotly.NET.CSharp.csproj", "{F944FE69-F4A5-4B48-8E4D-BE4B61E92B26}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ExtensionLibTests", "ExtensionLibTests", "{02886FBB-DB32-4BBB-A93C-E13EBF453ACC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ConsoleApps", "ConsoleApps", "{E8897848-2EF4-4126-9315-ADE0BA92D951}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpConsole", "tests\ConsoleApps\CSharpConsole\CSharpConsole.csproj", "{029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharpConsole", "tests\ConsoleApps\FSharpConsole\FSharpConsole.fsproj", "{598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "CoreTests", "tests\CoreTests\CoreTests\CoreTests.fsproj", "{DA7BC908-7DC9-4BA7-8100-17D3FD2901EA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpInteroperabilityTests", "tests\CoreTests\CSharpInteroperabilityTests\CSharpInteroperabilityTests.csproj", "{C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.CSharp.Tests", "tests\Plotly.NET.CSharp.Tests\Plotly.NET.CSharp.Tests.csproj", "{4C24BA53-F41C-4110-AD7A-28143DCF671E}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "StrongNameTests", "tests\CoreTests\StrongNameTests\StrongNameTests.fsproj", "{32E187BB-D1D4-4864-A021-55A7A08E17EC}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.Tests.CSharpInteroperability", "tests\Plotly.NET.Tests.CSharpInteroperability\Plotly.NET.Tests.CSharpInteroperability.csproj", "{64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ImageExportTests", "tests\ExtensionLibsTests\ImageExportTests\ImageExportTests.fsproj", "{A3693DD1-4D34-4B10-B310-07A4C7433F7D}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET.Tests.StrongName", "tests\Plotly.NET.Tests.StrongName\Plotly.NET.Tests.StrongName.fsproj", "{E923A457-A6D3-4614-A8A9-287E4A4797EF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpTests", "tests\ExtensionLibsTests\CSharpTests\CSharpTests.csproj", "{1170E3A9-D83E-40B0-8D51-20485C76BE88}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -171,12 +179,6 @@ Global {DFAC135B-36B8-4347-B1DD-B5E0144610C2}.Dotnet|Any CPU.Build.0 = Dotnet|Any CPU {DFAC135B-36B8-4347-B1DD-B5E0144610C2}.Release|Any CPU.ActiveCfg = Release|Any CPU {DFAC135B-36B8-4347-B1DD-B5E0144610C2}.Release|Any CPU.Build.0 = Release|Any CPU - {2C9916F4-817A-4B70-8D83-F48E9A30544F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C9916F4-817A-4B70-8D83-F48E9A30544F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C9916F4-817A-4B70-8D83-F48E9A30544F}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {2C9916F4-817A-4B70-8D83-F48E9A30544F}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {2C9916F4-817A-4B70-8D83-F48E9A30544F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C9916F4-817A-4B70-8D83-F48E9A30544F}.Release|Any CPU.Build.0 = Release|Any CPU {0F135E3B-B0E1-42A9-B180-18C0221DC7B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0F135E3B-B0E1-42A9-B180-18C0221DC7B8}.Debug|Any CPU.Build.0 = Debug|Any CPU {0F135E3B-B0E1-42A9-B180-18C0221DC7B8}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU @@ -189,24 +191,6 @@ Global {6CFC629E-1A0C-4EF3-8495-BA00A356A381}.Dotnet|Any CPU.Build.0 = Debug|Any CPU {6CFC629E-1A0C-4EF3-8495-BA00A356A381}.Release|Any CPU.ActiveCfg = Release|Any CPU {6CFC629E-1A0C-4EF3-8495-BA00A356A381}.Release|Any CPU.Build.0 = Release|Any CPU - {60114ACE-77E6-4A19-9A2F-CB64084174AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {60114ACE-77E6-4A19-9A2F-CB64084174AF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {60114ACE-77E6-4A19-9A2F-CB64084174AF}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {60114ACE-77E6-4A19-9A2F-CB64084174AF}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {60114ACE-77E6-4A19-9A2F-CB64084174AF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {60114ACE-77E6-4A19-9A2F-CB64084174AF}.Release|Any CPU.Build.0 = Release|Any CPU - {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Release|Any CPU.Build.0 = Release|Any CPU - {55A461C3-8018-4020-B16E-D6005BDFCAED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {55A461C3-8018-4020-B16E-D6005BDFCAED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {55A461C3-8018-4020-B16E-D6005BDFCAED}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {55A461C3-8018-4020-B16E-D6005BDFCAED}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {55A461C3-8018-4020-B16E-D6005BDFCAED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {55A461C3-8018-4020-B16E-D6005BDFCAED}.Release|Any CPU.Build.0 = Release|Any CPU {403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD}.Debug|Any CPU.Build.0 = Debug|Any CPU {403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU @@ -219,44 +203,72 @@ Global {F944FE69-F4A5-4B48-8E4D-BE4B61E92B26}.Dotnet|Any CPU.Build.0 = Debug|Any CPU {F944FE69-F4A5-4B48-8E4D-BE4B61E92B26}.Release|Any CPU.ActiveCfg = Release|Any CPU {F944FE69-F4A5-4B48-8E4D-BE4B61E92B26}.Release|Any CPU.Build.0 = Release|Any CPU - {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Release|Any CPU.Build.0 = Release|Any CPU - {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Release|Any CPU.Build.0 = Release|Any CPU - {E923A457-A6D3-4614-A8A9-287E4A4797EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E923A457-A6D3-4614-A8A9-287E4A4797EF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E923A457-A6D3-4614-A8A9-287E4A4797EF}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {E923A457-A6D3-4614-A8A9-287E4A4797EF}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {E923A457-A6D3-4614-A8A9-287E4A4797EF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E923A457-A6D3-4614-A8A9-287E4A4797EF}.Release|Any CPU.Build.0 = Release|Any CPU + {029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6}.Release|Any CPU.Build.0 = Release|Any CPU + {598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C}.Release|Any CPU.Build.0 = Release|Any CPU + {DA7BC908-7DC9-4BA7-8100-17D3FD2901EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA7BC908-7DC9-4BA7-8100-17D3FD2901EA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA7BC908-7DC9-4BA7-8100-17D3FD2901EA}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {DA7BC908-7DC9-4BA7-8100-17D3FD2901EA}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {DA7BC908-7DC9-4BA7-8100-17D3FD2901EA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA7BC908-7DC9-4BA7-8100-17D3FD2901EA}.Release|Any CPU.Build.0 = Release|Any CPU + {C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1}.Release|Any CPU.Build.0 = Release|Any CPU + {32E187BB-D1D4-4864-A021-55A7A08E17EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32E187BB-D1D4-4864-A021-55A7A08E17EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32E187BB-D1D4-4864-A021-55A7A08E17EC}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {32E187BB-D1D4-4864-A021-55A7A08E17EC}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {32E187BB-D1D4-4864-A021-55A7A08E17EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32E187BB-D1D4-4864-A021-55A7A08E17EC}.Release|Any CPU.Build.0 = Release|Any CPU + {A3693DD1-4D34-4B10-B310-07A4C7433F7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A3693DD1-4D34-4B10-B310-07A4C7433F7D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A3693DD1-4D34-4B10-B310-07A4C7433F7D}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {A3693DD1-4D34-4B10-B310-07A4C7433F7D}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {A3693DD1-4D34-4B10-B310-07A4C7433F7D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A3693DD1-4D34-4B10-B310-07A4C7433F7D}.Release|Any CPU.Build.0 = Release|Any CPU + {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {DFAC135B-36B8-4347-B1DD-B5E0144610C2} = {0E87E47E-9EDC-4525-AF72-F0E139D54236} - {2C9916F4-817A-4B70-8D83-F48E9A30544F} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} {0F135E3B-B0E1-42A9-B180-18C0221DC7B8} = {0E87E47E-9EDC-4525-AF72-F0E139D54236} {5219BAC7-ACE6-435F-A983-BC63DD7B745E} = {7B09CC0A-F1E1-4094-9DE4-B047581E01F0} {60FB82C0-F472-494E-BCF7-7B3C54212406} = {7B09CC0A-F1E1-4094-9DE4-B047581E01F0} {CDB973F2-0F60-4ADB-84A8-924AFA8B6D49} = {7B09CC0A-F1E1-4094-9DE4-B047581E01F0} {6CFC629E-1A0C-4EF3-8495-BA00A356A381} = {0E87E47E-9EDC-4525-AF72-F0E139D54236} - {60114ACE-77E6-4A19-9A2F-CB64084174AF} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} - {1BC73DA0-586F-45C2-BC5B-A70C452A00F0} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} - {55A461C3-8018-4020-B16E-D6005BDFCAED} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} {403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD} = {7C6D08E7-3EAC-4335-8F4B-252C193C27C9} {F944FE69-F4A5-4B48-8E4D-BE4B61E92B26} = {0E87E47E-9EDC-4525-AF72-F0E139D54236} - {4C24BA53-F41C-4110-AD7A-28143DCF671E} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} - {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} - {E923A457-A6D3-4614-A8A9-287E4A4797EF} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} + {023425D8-B375-45ED-A29A-A3ED00C0E2BC} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} + {94E71E92-C244-4AF1-903A-DAC5448DADA5} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} + {02886FBB-DB32-4BBB-A93C-E13EBF453ACC} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} + {E8897848-2EF4-4126-9315-ADE0BA92D951} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} + {029EBCB4-0E8B-40F8-B7AA-61B814FAE5A6} = {E8897848-2EF4-4126-9315-ADE0BA92D951} + {598AB47B-EFE7-414A-B6EA-8C96B4AA7A4C} = {E8897848-2EF4-4126-9315-ADE0BA92D951} + {DA7BC908-7DC9-4BA7-8100-17D3FD2901EA} = {023425D8-B375-45ED-A29A-A3ED00C0E2BC} + {C10C0225-FBBA-4E3C-99FD-FA4A2BCBB3B1} = {023425D8-B375-45ED-A29A-A3ED00C0E2BC} + {32E187BB-D1D4-4864-A021-55A7A08E17EC} = {023425D8-B375-45ED-A29A-A3ED00C0E2BC} + {A3693DD1-4D34-4B10-B310-07A4C7433F7D} = {02886FBB-DB32-4BBB-A93C-E13EBF453ACC} + {1170E3A9-D83E-40B0-8D51-20485C76BE88} = {02886FBB-DB32-4BBB-A93C-E13EBF453ACC} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {7177F1E1-341C-48AB-9864-6B525FFF7633} diff --git a/build/Build.fs b/build/Build.fs index 33ac5c75d..80ad04426 100644 --- a/build/Build.fs +++ b/build/Build.fs @@ -18,6 +18,20 @@ initializeContext () open BasicTasks +//workaround for tasks created with functions not being runnable. + +//let _ = TestTasks.buildTestsAll |> ignore +//let _ = TestTasks.buildTestsCore |> ignore +//let _ = TestTasks.buildTestsNetFX |> ignore +//let _ = TestTasks.buildTestsExtensionsLibs |> ignore + +//let _ = TestTasks.runTestsAll |> ignore +//let _ = TestTasks.runTestsCore |> ignore +//let _ = TestTasks.runTestsNetFX |> ignore +//let _ = TestTasks.runTestsCoreWithNetFX |> ignore +//let _ = TestTasks.runTestsExtensionLibs |> ignore + + let sourceFiles = !! "src/Plotly.NET/**/*.fs" ++ "src/Plotly.NET.ImageExport/**/*.fs" @@ -33,7 +47,7 @@ let _release = [ clean build - runTests + runTestsAll pack buildDocs createTag @@ -49,7 +63,7 @@ let _preRelease = setPrereleaseTag clean build - runTests + runTestsAll packPrerelease buildDocsPrerelease createPrereleaseTag @@ -64,7 +78,7 @@ let _releaseNoDocs = [ clean build - runTests + runTestsAll pack createTag publishNuget @@ -78,7 +92,7 @@ let _preReleaseNoDocs = setPrereleaseTag clean build - runTests + runTestsAll packPrerelease createPrereleaseTag publishNugetPrerelease diff --git a/build/PackageTasks.fs b/build/PackageTasks.fs index f5c35e4ec..ebb9fbae7 100644 --- a/build/PackageTasks.fs +++ b/build/PackageTasks.fs @@ -11,7 +11,7 @@ open Fake.Core open Fake.DotNet open Fake.IO.Globbing.Operators -let pack = BuildTask.create "Pack" [ clean; build; runTests ] { +let pack = BuildTask.create "Pack" [ clean; build; runTestsAll ] { projects |> List.iter (fun pInfo -> if promptYesNo $"creating stable package for {pInfo.Name}{System.Environment.NewLine}\tpackage version: {pInfo.PackageVersionTag}{System.Environment.NewLine}\tassembly version: {pInfo.AssemblyVersion}{System.Environment.NewLine}\tassembly informational version: {pInfo.AssemblyInformationalVersion}{System.Environment.NewLine} OK?" then @@ -62,7 +62,7 @@ let packPrerelease = [ clean build - runTests + runTestsAll ] { projects |> List.iter (fun pInfo -> diff --git a/build/ProjectInfo.fs b/build/ProjectInfo.fs index b43010046..e3222bc78 100644 --- a/build/ProjectInfo.fs +++ b/build/ProjectInfo.fs @@ -63,26 +63,30 @@ let pkgDir = "pkg" let configuration = "Release" // test projects (.NET) -let CoreTestProject = ProjectInfo.create("Plotly.NET.Tests", "tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj") -let ImageExportTestProject = ProjectInfo.create("Plotly.NET.ImageExport.Tests", "tests/Plotly.NET.ImageExport.Tests/Plotly.NET.ImageExport.Tests.fsproj") -let CSharpInteroperabilityTestProject = ProjectInfo.create("Plotly.NET.Tests.CSharpInteroperability", "tests/Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj") -let CSharpTestProject = ProjectInfo.create("Plotly.NET.CSharp.Tests", "tests/Plotly.NET.CSharp.Tests/Plotly.NET.CSharp.Tests.csproj") - -/// contains project info about all test projects -let testProjects = - [ - CoreTestProject - ImageExportTestProject - CSharpTestProject - ] - - // test projects (.NET framework) -let StrongNameTestProject = ProjectInfo.create("Plotly.NET.Tests.StrongName", "tests/Plotly.NET.Tests.StrongName/Plotly.NET.Tests.StrongName.fsproj") - -let testProjectsNetFX = - [ - StrongNameTestProject - ] +let CoreTestProject = ProjectInfo.create("CoreTests", "tests/CoreTests/CoreTests/CoreTests.fsproj") +let CSharpInteroperabilityTestProject = ProjectInfo.create("CSharpInteroperabilityTests", "tests/CoreTests/CSharpInteroperabilityTests/CSharpInteroperabilityTests.csproj") + +/// contains project info about the core test projects +let testProjectsCore = [ + CoreTestProject + CSharpInteroperabilityTestProject +] + +let ImageExportTestProject = ProjectInfo.create("ImageExportTests", "tests/ExtensionLibsTests/ImageExportTests/ImageExportTests.fsproj") +let CSharpTestProject = ProjectInfo.create("CSharpTests", "tests/ExtensionLibsTests/CSharpTests/CSharpTests.csproj") + +/// +let testProjectsExtensionsLibs = [ + ImageExportTestProject + CSharpTestProject +] + +// test projects (.NET framework) +let StrongNameTestProject = ProjectInfo.create("StrongNameTests", "tests/CoreTests/StrongNameTests/StrongNameTests.fsproj") + +let testProjectsNetFX = [ + StrongNameTestProject +] let CoreProject = ProjectInfo.create("Plotly.NET", "src/Plotly.NET/Plotly.NET.fsproj", "src/Plotly.NET/RELEASE_NOTES.md") let InteractiveProject = ProjectInfo.create("Plotly.NET.Interactive", "src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj", "src/Plotly.NET.Interactive/RELEASE_NOTES.md") diff --git a/build/ReleaseTasks.fs b/build/ReleaseTasks.fs index e7a9c5712..752274e2b 100644 --- a/build/ReleaseTasks.fs +++ b/build/ReleaseTasks.fs @@ -16,7 +16,7 @@ open Fake.IO open Fake.IO.Globbing.Operators let createTag = - BuildTask.create "CreateTag" [ clean; build; runTests; pack ] { + BuildTask.create "CreateTag" [ clean; build; runTestsAll; pack ] { if promptYesNo (sprintf "tagging branch with %s OK?" branchTag) then Git.Branches.tag "" branchTag Git.Branches.pushTag "" projectRepo branchTag @@ -31,7 +31,7 @@ let createPrereleaseTag = setPrereleaseTag clean build - runTests + runTestsAll packPrerelease ] { if promptYesNo (sprintf "tagging branch with %s OK?" prereleaseTag) then @@ -43,7 +43,7 @@ let createPrereleaseTag = let publishNuget = - BuildTask.create "PublishNuget" [ clean; build; runTests; pack ] { + BuildTask.create "PublishNuget" [ clean; build; runTestsAll; pack ] { let targets = (!!(sprintf "%s/*.*pkg" pkgDir)) @@ -82,7 +82,7 @@ let publishNugetPrerelease = [ clean build - runTests + runTestsAll packPrerelease ] { let targets = diff --git a/build/TestTasks.fs b/build/TestTasks.fs index e6bff428d..825daae97 100644 --- a/build/TestTasks.fs +++ b/build/TestTasks.fs @@ -6,50 +6,31 @@ open Fake.DotNet open ProjectInfo open BasicTasks -let buildTests = BuildTask.create "BuildTests" [clean; build] { - testProjects - |> List.iter (fun pInfo -> - let proj = pInfo.ProjFile - proj - |> DotNet.build (fun p -> - p - |> DotNet.Options.withCustomParams (Some "--no-dependencies") +let createTestBuildTask (name: string) (deps: BuildTask.TaskInfo list) (projects: ProjectInfo list) = + BuildTask.create name deps { + projects + |> List.iter (fun pInfo -> + let proj = pInfo.ProjFile + proj + |> DotNet.build (fun p -> + p + |> DotNet.Options.withCustomParams (Some "--no-dependencies") + ) ) - ) -} + } -let buildTestsNetFX = BuildTask.create "BuildTestsNetFX" [clean; build] { - testProjectsNetFX - |> List.iter (fun pInfo -> - let proj = pInfo.ProjFile - proj - |> DotNet.build (fun p -> - p - |> DotNet.Options.withCustomParams (Some "--no-dependencies") - ) - ) -} +let buildTestsAll = createTestBuildTask "BuildTestsAll" [clean; build] (testProjectsCore @ testProjectsExtensionsLibs @ testProjectsNetFX) + +let buildTestsCore = createTestBuildTask "BuildTestsCore" [clean; build] testProjectsCore -/// runs the individual test projects via `dotnet test` -let runTests = - BuildTask.create "RunTests" [ clean; build; buildTests ] { - testProjects - |> Seq.iter (fun testProjectInfo -> - Fake.DotNet.DotNet.test - (fun testParams -> - { testParams with - Logger = Some "console;verbosity=detailed" - Configuration = DotNet.BuildConfiguration.fromString configuration - NoBuild = true - }) - testProjectInfo.ProjFile) - } +let buildTestsNetFX = createTestBuildTask "BuildTestsNetFX" [clean; build] testProjectsNetFX + +let buildTestsExtensionsLibs = createTestBuildTask "BuildTestsExtensionsLibs" [clean; build] testProjectsExtensionsLibs -/// runs the individual test projects via `dotnet test` -let runTestsWithNetFX = - BuildTask.create "RunTestsNetFX" [ clean; build; buildTests; buildTestsNetFX] { - testProjects - @ testProjectsNetFX + +let createRunTestTask (name: string) (deps: BuildTask.TaskInfo list) (projects: ProjectInfo list) = + BuildTask.create name deps { + projects |> Seq.iter (fun testProjectInfo -> Fake.DotNet.DotNet.test (fun testParams -> @@ -61,27 +42,17 @@ let runTestsWithNetFX = testProjectInfo.ProjFile) } -// to do: use this once we have actual tests -let runTestsWithCodeCov = - BuildTask.create "RunTestsWithCodeCov" [ clean; build ] { - let standardParams = - Fake.DotNet.MSBuild.CliArguments.Create() +/// runs the all test projects via `dotnet test` +let runTestsAll = createRunTestTask "RunTestsAll" [ clean; build; buildTestsAll ] (testProjectsCore @ testProjectsExtensionsLibs @ testProjectsNetFX) - testProjects - |> Seq.iter (fun testProjectInfo -> - Fake.DotNet.DotNet.test - (fun testParams -> - { testParams with - MSBuildParams = - { standardParams with - Properties = - [ - "AltCover", "true" - "AltCoverCobertura", "../../codeCov.xml" - "AltCoverForce", "true" - ] - } - Logger = Some "console;verbosity=detailed" - }) - testProjectInfo.ProjFile) - } +/// runs the core test projects via `dotnet test` +let runTestsCore = createRunTestTask "RunTestsCore" [ clean; build; buildTestsCore; buildTestsCore] testProjectsCore + +/// runs the core netfx test projects via `dotnet test` +let runTestsNetFX = createRunTestTask "RunTestsNetFX" [ clean; build; buildTestsNetFX;] testProjectsNetFX + +/// runs the core and core netfx test projects via `dotnet test` +let runTestsCoreWithNetFX = createRunTestTask "RunTestsCoreWithNetFX" [ clean; build; buildTestsCore; buildTestsNetFX;] (testProjectsCore @ testProjectsNetFX) + +/// runs the extension lib test projects via `dotnet test` +let runTestsExtensionLibs = createRunTestTask "RunTestsExtensionLibs" [ clean; build; buildTestsExtensionsLibs] testProjectsExtensionsLibs \ No newline at end of file diff --git a/tests/Common/CSharpTestBase/CSharpTestBase.csproj b/tests/Common/CSharpTestBase/CSharpTestBase.csproj new file mode 100644 index 000000000..132c02c59 --- /dev/null +++ b/tests/Common/CSharpTestBase/CSharpTestBase.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/tests/Common/CSharpTestBase/Class1.cs b/tests/Common/CSharpTestBase/Class1.cs new file mode 100644 index 000000000..96d64f58e --- /dev/null +++ b/tests/Common/CSharpTestBase/Class1.cs @@ -0,0 +1,5 @@ +namespace CSharpTestBase; +public class Class1 +{ + +} diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj new file mode 100644 index 000000000..20a5bdd3e --- /dev/null +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -0,0 +1,12 @@ + + + + net6.0 + true + + + + + + + diff --git a/tests/Common/FSharpTestBase/Library.fs b/tests/Common/FSharpTestBase/Library.fs new file mode 100644 index 000000000..e17dbbabc --- /dev/null +++ b/tests/Common/FSharpTestBase/Library.fs @@ -0,0 +1,5 @@ +namespace FSharpTestBase + +module Say = + let hello name = + printfn "Hello %s" name diff --git a/tests/Plotly.NET.Tests.CSharpConsole/Plotly.NET.Tests.CSharpConsole.csproj b/tests/ConsoleApps/CSharpConsole/CSharpConsole.csproj similarity index 57% rename from tests/Plotly.NET.Tests.CSharpConsole/Plotly.NET.Tests.CSharpConsole.csproj rename to tests/ConsoleApps/CSharpConsole/CSharpConsole.csproj index 25b6015ec..9e3def058 100644 --- a/tests/Plotly.NET.Tests.CSharpConsole/Plotly.NET.Tests.CSharpConsole.csproj +++ b/tests/ConsoleApps/CSharpConsole/CSharpConsole.csproj @@ -1,13 +1,14 @@ - - - - Exe net6.0 false + + + + + diff --git a/tests/Plotly.NET.Tests.CSharpConsole/Program.cs b/tests/ConsoleApps/CSharpConsole/Program.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpConsole/Program.cs rename to tests/ConsoleApps/CSharpConsole/Program.cs diff --git a/tests/Plotly.NET.Tests.FSharpConsole/Plotly.NET.Tests.FSharpConsole.fsproj b/tests/ConsoleApps/FSharpConsole/FSharpConsole.fsproj similarity index 83% rename from tests/Plotly.NET.Tests.FSharpConsole/Plotly.NET.Tests.FSharpConsole.fsproj rename to tests/ConsoleApps/FSharpConsole/FSharpConsole.fsproj index e4960d3f4..274427e7c 100644 --- a/tests/Plotly.NET.Tests.FSharpConsole/Plotly.NET.Tests.FSharpConsole.fsproj +++ b/tests/ConsoleApps/FSharpConsole/FSharpConsole.fsproj @@ -13,7 +13,7 @@ - + diff --git a/tests/Plotly.NET.Tests.FSharpConsole/Program.fs b/tests/ConsoleApps/FSharpConsole/Program.fs similarity index 100% rename from tests/Plotly.NET.Tests.FSharpConsole/Program.fs rename to tests/ConsoleApps/FSharpConsole/Program.fs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart2DAPITest.cs b/tests/CoreTests/CSharpInteroperabilityTests/APITest/Chart2DAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart2DAPITest.cs rename to tests/CoreTests/CSharpInteroperabilityTests/APITest/Chart2DAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart3DAPITest.cs b/tests/CoreTests/CSharpInteroperabilityTests/APITest/Chart3DAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart3DAPITest.cs rename to tests/CoreTests/CSharpInteroperabilityTests/APITest/Chart3DAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartDomainAPITest.cs b/tests/CoreTests/CSharpInteroperabilityTests/APITest/ChartDomainAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartDomainAPITest.cs rename to tests/CoreTests/CSharpInteroperabilityTests/APITest/ChartDomainAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartMapAPITest.cs b/tests/CoreTests/CSharpInteroperabilityTests/APITest/ChartMapAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartMapAPITest.cs rename to tests/CoreTests/CSharpInteroperabilityTests/APITest/ChartMapAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartPolarAPITest.cs b/tests/CoreTests/CSharpInteroperabilityTests/APITest/ChartPolarAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartPolarAPITest.cs rename to tests/CoreTests/CSharpInteroperabilityTests/APITest/ChartPolarAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj b/tests/CoreTests/CSharpInteroperabilityTests/CSharpInteroperabilityTests.csproj similarity index 91% rename from tests/Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj rename to tests/CoreTests/CSharpInteroperabilityTests/CSharpInteroperabilityTests.csproj index 464f00cc3..04387c08b 100644 --- a/tests/Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj +++ b/tests/CoreTests/CSharpInteroperabilityTests/CSharpInteroperabilityTests.csproj @@ -19,7 +19,7 @@ - + diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/LayoutObjectTests.cs b/tests/CoreTests/CSharpInteroperabilityTests/LayoutObjectTests.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/LayoutObjectTests.cs rename to tests/CoreTests/CSharpInteroperabilityTests/LayoutObjectTests.cs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/StyleParamTests.cs b/tests/CoreTests/CSharpInteroperabilityTests/StyleParamTests.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/StyleParamTests.cs rename to tests/CoreTests/CSharpInteroperabilityTests/StyleParamTests.cs diff --git a/tests/Plotly.NET.Tests.CSharpInteroperability/TraceObjectTests.cs b/tests/CoreTests/CSharpInteroperabilityTests/TraceObjectTests.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharpInteroperability/TraceObjectTests.cs rename to tests/CoreTests/CSharpInteroperabilityTests/TraceObjectTests.cs diff --git a/tests/Plotly.NET.Tests/ChartAPIs/Combine.fs b/tests/CoreTests/CoreTests/ChartAPIs/Combine.fs similarity index 100% rename from tests/Plotly.NET.Tests/ChartAPIs/Combine.fs rename to tests/CoreTests/CoreTests/ChartAPIs/Combine.fs diff --git a/tests/Plotly.NET.Tests/ChartAPIs/WithAxis.fs b/tests/CoreTests/CoreTests/ChartAPIs/WithAxis.fs similarity index 100% rename from tests/Plotly.NET.Tests/ChartAPIs/WithAxis.fs rename to tests/CoreTests/CoreTests/ChartAPIs/WithAxis.fs diff --git a/tests/Plotly.NET.Tests/CommonAbstractions/Colors.fs b/tests/CoreTests/CoreTests/CommonAbstractions/Colors.fs similarity index 100% rename from tests/Plotly.NET.Tests/CommonAbstractions/Colors.fs rename to tests/CoreTests/CoreTests/CommonAbstractions/Colors.fs diff --git a/tests/Plotly.NET.Tests/CommonAbstractions/StyleParams.fs b/tests/CoreTests/CoreTests/CommonAbstractions/StyleParams.fs similarity index 100% rename from tests/Plotly.NET.Tests/CommonAbstractions/StyleParams.fs rename to tests/CoreTests/CoreTests/CommonAbstractions/StyleParams.fs diff --git a/tests/Plotly.NET.Tests/ConfigObjects/Config.fs b/tests/CoreTests/CoreTests/ConfigObjects/Config.fs similarity index 100% rename from tests/Plotly.NET.Tests/ConfigObjects/Config.fs rename to tests/CoreTests/CoreTests/ConfigObjects/Config.fs diff --git a/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj similarity index 97% rename from tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj rename to tests/CoreTests/CoreTests/CoreTests.fsproj index 17b19b70c..19356108b 100644 --- a/tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -8,8 +8,8 @@ - - + + @@ -213,6 +213,6 @@ - + diff --git a/tests/Plotly.NET.Tests/DisplayOptions/DisplayOptions.fs b/tests/CoreTests/CoreTests/DisplayOptions/DisplayOptions.fs similarity index 100% rename from tests/Plotly.NET.Tests/DisplayOptions/DisplayOptions.fs rename to tests/CoreTests/CoreTests/DisplayOptions/DisplayOptions.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/CarpetCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/CarpetCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/CarpetCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/CarpetCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/CategoricalCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/CategoricalCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/CategoricalCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/CategoricalCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Area.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Area.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Area.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/BoxPlot.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/BoxPlot.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/BoxPlot.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bubble.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Bubble.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bubble.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Candlestick.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Candlestick.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Candlestick.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Column.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Column.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Column.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Contour.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Contour.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Contour.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Funnel.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Funnel.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Funnel.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Heatmap.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Heatmap.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Heatmap.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2D.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2D.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2DContour.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Histogram2DContour.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2DContour.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Image.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Image.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Image.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Line.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Line.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Line.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/OHLC.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/OHLC.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/OHLC.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Point.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Point.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Point.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/PointDensity.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/PointDensity.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/PointDensity.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Range.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Range.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Range.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Scatter.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Scatter.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Scatter.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Spline.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Spline.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Spline.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/SplineArea.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/SplineArea.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/SplineArea.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Splom.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Splom.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Splom.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedArea.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedArea.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedArea.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedBar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedBar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedBar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedColumn.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedColumn.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedColumn.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedFunnel.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/StackedFunnel.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedFunnel.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Violin.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Violin.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Violin.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Waterfall.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart2D/Waterfall.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Waterfall.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Bubble3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Bubble3D.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Bubble3D.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Cone.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Cone.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Cone.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/IsoSurface.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/IsoSurface.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/IsoSurface.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Line3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Line3D.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Line3D.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Mesh3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Mesh3D.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Mesh3D.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Point3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Point3D.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Point3D.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Scatter3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Scatter3D.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Scatter3D.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/StreamTube.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/StreamTube.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/StreamTube.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Surface.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Surface.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Surface.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Volume.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Chart3D/Volume.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Volume.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/Carpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/Carpet.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/Carpet.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ContourCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ContourCarpet.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ContourCarpet.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/LineCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/LineCarpet.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/LineCarpet.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/PointCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/PointCarpet.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/PointCarpet.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/SplineCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartCarpet/SplineCarpet.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/SplineCarpet.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Doughnut.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Doughnut.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Doughnut.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/FunnelArea.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/FunnelArea.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/FunnelArea.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Icicle.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Icicle.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Icicle.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Indicator.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Indicator.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Indicator.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCategories.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCategories.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCategories.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCoord.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/ParralelCoord.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCoord.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Pie.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Pie.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Pie.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sankey.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sankey.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sankey.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sunburst.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Sunburst.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sunburst.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Table.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Table.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Table.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Treemap.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartDomain/Treemap.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Treemap.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartLayout.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartLayout.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartLayout.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartLayout.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleGeo.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleGeo.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/BubbleMapbox.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleMapbox.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMap.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMap.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMap.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/DensityMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/DensityMapbox.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/DensityMapbox.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineGeo.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineGeo.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/LineMapbox.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineMapbox.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/PointGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/PointGeo.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/PointGeo.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterGeo.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterGeo.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartMap/ScatterMapbox.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterMapbox.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BarPolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BarPolar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BarPolar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BubblePolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/BubblePolar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BubblePolar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/LinePolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/LinePolar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/LinePolar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/PointPolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/PointPolar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/PointPolar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/ScatterPolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/ScatterPolar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/ScatterPolar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/SplinePolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartPolar/SplinePolar.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/SplinePolar.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/BubbleSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/BubbleSmith.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/BubbleSmith.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/LineSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/LineSmith.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/LineSmith.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/PointSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/PointSmith.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/PointSmith.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/ScatterSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartSmith/ScatterSmith.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/ScatterSmith.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/BubbleTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/BubbleTernary.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/BubbleTernary.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/LineTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/LineTernary.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/LineTernary.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/PointTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/PointTernary.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/PointTernary.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/ScatterTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/ChartTernary/ScatterTernary.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/ScatterTernary.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/Charts3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Charts3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/Charts3D.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/Charts3D.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/DistributionCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/DistributionCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/DistributionCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/DistributionCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/FinanceCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/FinanceCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/FinanceCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/FinanceCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/GeoMapCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/GeoMapCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/GeoMapCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/GeoMapCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/MapboxMapCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/MapboxMapCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/MapboxMapCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/MapboxMapCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/MulticategoryData.fs b/tests/CoreTests/CoreTests/HTMLCodegen/MulticategoryData.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/MulticategoryData.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/MulticategoryData.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/PolarCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/PolarCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/PolarCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/PolarCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs similarity index 99% rename from tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs index 5aee6b20e..3126a1383 100644 --- a/tests/Plotly.NET.Tests/HTMLCodegen/SimpleCharts.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs @@ -533,7 +533,7 @@ let imageARGBChart = open System.IO -let imageSource = $@"{__SOURCE_DIRECTORY__}../../../../docs/img/logo.png" +let imageSource = $@"{__SOURCE_DIRECTORY__}../../../../../docs/img/logo.png" let base64String = imageSource diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/SimpleTests.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/SmithCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SmithCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/SmithCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/SmithCharts.fs diff --git a/tests/Plotly.NET.Tests/HTMLCodegen/TernaryCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/TernaryCharts.fs similarity index 100% rename from tests/Plotly.NET.Tests/HTMLCodegen/TernaryCharts.fs rename to tests/CoreTests/CoreTests/HTMLCodegen/TernaryCharts.fs diff --git a/tests/Plotly.NET.Tests/LayoutObjects/LinearAxis.fs b/tests/CoreTests/CoreTests/LayoutObjects/LinearAxis.fs similarity index 100% rename from tests/Plotly.NET.Tests/LayoutObjects/LinearAxis.fs rename to tests/CoreTests/CoreTests/LayoutObjects/LinearAxis.fs diff --git a/tests/Plotly.NET.Tests/LayoutObjects/Slider.fs b/tests/CoreTests/CoreTests/LayoutObjects/Slider.fs similarity index 100% rename from tests/Plotly.NET.Tests/LayoutObjects/Slider.fs rename to tests/CoreTests/CoreTests/LayoutObjects/Slider.fs diff --git a/tests/Plotly.NET.Tests/Main.fs b/tests/CoreTests/CoreTests/Main.fs similarity index 100% rename from tests/Plotly.NET.Tests/Main.fs rename to tests/CoreTests/CoreTests/Main.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/AnnotatedHeatmap.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/AnnotatedHeatmap.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/AnnotatedHeatmap.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/AnnotatedHeatmap.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Area.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Area.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Area.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Area.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bar.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Bar.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Bar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/BoxPlot.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/BoxPlot.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/BoxPlot.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/BoxPlot.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Bubble.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bubble.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Bubble.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Bubble.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Candlestick.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Candlestick.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Candlestick.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Candlestick.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Column.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Column.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Column.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Column.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Contour.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Contour.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Contour.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Contour.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Funnel.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Funnel.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Funnel.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Funnel.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Heatmap.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Heatmap.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Heatmap.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Heatmap.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2D.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2D.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2D.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2DContour.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2DContour.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Histogram2DContour.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2DContour.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Image.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Image.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Image.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Image.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Line.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Line.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Line.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/OHLC.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/OHLC.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/OHLC.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/OHLC.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Point.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Point.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Point.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/PointDensity.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/PointDensity.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/PointDensity.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/PointDensity.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Range.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Range.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Range.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Range.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Scatter.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Scatter.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Scatter.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Scatter.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Spline.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Spline.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Spline.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/SplineArea.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/SplineArea.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/SplineArea.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/SplineArea.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Splom.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Splom.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Splom.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Splom.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedArea.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedArea.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedArea.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedArea.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedBar.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedBar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedBar.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedBar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedColumn.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedColumn.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedColumn.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedColumn.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedFunnel.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedFunnel.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/StackedFunnel.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedFunnel.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Violin.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Violin.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Violin.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Violin.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart2D/Waterfall.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Waterfall.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart2D/Waterfall.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart2D/Waterfall.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Bubble3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Bubble3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Bubble3D.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Bubble3D.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Cone.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Cone.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Cone.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Cone.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/IsoSurface.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/IsoSurface.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/IsoSurface.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/IsoSurface.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Line3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Line3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Line3D.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Line3D.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Mesh3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Mesh3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Mesh3D.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Mesh3D.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Point3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Point3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Point3D.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Point3D.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Scatter3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Scatter3D.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Scatter3D.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Scatter3D.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/StreamTube.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/StreamTube.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/StreamTube.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/StreamTube.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Surface.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Surface.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Surface.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Surface.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/Chart3D/Volume.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Volume.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/Chart3D/Volume.fs rename to tests/CoreTests/CoreTests/TestCharts/Chart3D/Volume.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/BubbleCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/BubbleCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartCarpet/BubbleCarpet.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartCarpet/BubbleCarpet.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/Carpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/Carpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartCarpet/Carpet.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartCarpet/Carpet.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ContourCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ContourCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ContourCarpet.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ContourCarpet.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/LineCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/LineCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartCarpet/LineCarpet.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartCarpet/LineCarpet.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/PointCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/PointCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartCarpet/PointCarpet.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartCarpet/PointCarpet.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ScatterCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ScatterCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartCarpet/ScatterCarpet.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ScatterCarpet.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartCarpet/SplineCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/SplineCarpet.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartCarpet/SplineCarpet.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartCarpet/SplineCarpet.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Doughnut.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Doughnut.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Doughnut.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Doughnut.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/FunnelArea.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/FunnelArea.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/FunnelArea.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/FunnelArea.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Icicle.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Icicle.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Icicle.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Icicle.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Indicator.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Indicator.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Indicator.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Indicator.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCategories.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCategories.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCategories.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCategories.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCoord.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCoord.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/ParralelCoord.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCoord.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Pie.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Pie.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Pie.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Pie.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sankey.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sankey.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sankey.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sankey.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sunburst.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sunburst.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Sunburst.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sunburst.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Table.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Table.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Table.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Table.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartDomain/Treemap.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Treemap.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartDomain/Treemap.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartDomain/Treemap.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleGeo.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleGeo.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/BubbleMapbox.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleMapbox.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMap.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMap.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMap.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMap.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/ChoroplethMapbox.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMapbox.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/DensityMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/DensityMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/DensityMapbox.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/DensityMapbox.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/LineGeo.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/LineGeo.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/LineMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/LineMapbox.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/LineMapbox.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/PointGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/PointGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/PointGeo.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/PointGeo.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterGeo.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterGeo.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterGeo.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterMapbox.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartMap/ScatterMapbox.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterMapbox.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BarPolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BarPolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartPolar/BarPolar.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartPolar/BarPolar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/BubblePolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BubblePolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartPolar/BubblePolar.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartPolar/BubblePolar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/LinePolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/LinePolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartPolar/LinePolar.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartPolar/LinePolar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/PointPolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/PointPolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartPolar/PointPolar.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartPolar/PointPolar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/ScatterPolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/ScatterPolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartPolar/ScatterPolar.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartPolar/ScatterPolar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartPolar/SplinePolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/SplinePolar.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartPolar/SplinePolar.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartPolar/SplinePolar.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/BubbleSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/BubbleSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartSmith/BubbleSmith.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartSmith/BubbleSmith.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/LineSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/LineSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartSmith/LineSmith.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartSmith/LineSmith.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/PointSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/PointSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartSmith/PointSmith.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartSmith/PointSmith.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartSmith/ScatterSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/ScatterSmith.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartSmith/ScatterSmith.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartSmith/ScatterSmith.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/BubbleTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/BubbleTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartTernary/BubbleTernary.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartTernary/BubbleTernary.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/LineTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/LineTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartTernary/LineTernary.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartTernary/LineTernary.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/PointTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/PointTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartTernary/PointTernary.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartTernary/PointTernary.fs diff --git a/tests/Plotly.NET.Tests/TestCharts/ChartTernary/ScatterTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/ScatterTernary.fs similarity index 100% rename from tests/Plotly.NET.Tests/TestCharts/ChartTernary/ScatterTernary.fs rename to tests/CoreTests/CoreTests/TestCharts/ChartTernary/ScatterTernary.fs diff --git a/tests/Plotly.NET.Tests/TestUtils.fs b/tests/CoreTests/CoreTests/TestUtils.fs similarity index 92% rename from tests/Plotly.NET.Tests/TestUtils.fs rename to tests/CoreTests/CoreTests/TestUtils.fs index f24e7f1af..5354c37af 100644 --- a/tests/Plotly.NET.Tests/TestUtils.fs +++ b/tests/CoreTests/CoreTests/TestUtils.fs @@ -11,7 +11,7 @@ module HtmlCodegen = let getFullPlotlyJS() = let assembly = Assembly.GetExecutingAssembly() - use str = assembly.GetManifestResourceStream($"Plotly.NET.Tests.plotly-{Globals.PLOTLYJS_VERSION}.min.js") + use str = assembly.GetManifestResourceStream($"CoreTests.plotly-{Globals.PLOTLYJS_VERSION}.min.js") use r = new StreamReader(str) r.ReadToEnd() diff --git a/tests/Plotly.NET.Tests/Traces/TraceID.fs b/tests/CoreTests/CoreTests/Traces/TraceID.fs similarity index 100% rename from tests/Plotly.NET.Tests/Traces/TraceID.fs rename to tests/CoreTests/CoreTests/Traces/TraceID.fs diff --git a/tests/Plotly.NET.Tests/Traces/TraceStaticMembers.fs b/tests/CoreTests/CoreTests/Traces/TraceStaticMembers.fs similarity index 100% rename from tests/Plotly.NET.Tests/Traces/TraceStaticMembers.fs rename to tests/CoreTests/CoreTests/Traces/TraceStaticMembers.fs diff --git a/tests/Plotly.NET.Tests/Traces/TraceStyle.fs b/tests/CoreTests/CoreTests/Traces/TraceStyle.fs similarity index 100% rename from tests/Plotly.NET.Tests/Traces/TraceStyle.fs rename to tests/CoreTests/CoreTests/Traces/TraceStyle.fs diff --git a/tests/Plotly.NET.Tests.StrongName/Program.fs b/tests/CoreTests/StrongNameTests/Program.fs similarity index 100% rename from tests/Plotly.NET.Tests.StrongName/Program.fs rename to tests/CoreTests/StrongNameTests/Program.fs diff --git a/tests/Plotly.NET.Tests.StrongName/Plotly.NET.Tests.StrongName.fsproj b/tests/CoreTests/StrongNameTests/StrongNameTests.fsproj similarity index 84% rename from tests/Plotly.NET.Tests.StrongName/Plotly.NET.Tests.StrongName.fsproj rename to tests/CoreTests/StrongNameTests/StrongNameTests.fsproj index 494cfc88d..4d25be81d 100644 --- a/tests/Plotly.NET.Tests.StrongName/Plotly.NET.Tests.StrongName.fsproj +++ b/tests/CoreTests/StrongNameTests/StrongNameTests.fsproj @@ -1,4 +1,4 @@ - + net48 @@ -7,7 +7,7 @@ false true true - ../../key.snk + ../../../key.snk @@ -29,7 +29,7 @@ - + diff --git a/tests/Plotly.NET.Tests.StrongName/Tests.fs b/tests/CoreTests/StrongNameTests/Tests.fs similarity index 100% rename from tests/Plotly.NET.Tests.StrongName/Tests.fs rename to tests/CoreTests/StrongNameTests/Tests.fs diff --git a/tests/Plotly.NET.CSharp.Tests/Plotly.NET.CSharp.Tests.csproj b/tests/ExtensionLibsTests/CSharpTests/CSharpTests.csproj similarity index 91% rename from tests/Plotly.NET.CSharp.Tests/Plotly.NET.CSharp.Tests.csproj rename to tests/ExtensionLibsTests/CSharpTests/CSharpTests.csproj index bfe679ebe..74d9efef1 100644 --- a/tests/Plotly.NET.CSharp.Tests/Plotly.NET.CSharp.Tests.csproj +++ b/tests/ExtensionLibsTests/CSharpTests/CSharpTests.csproj @@ -25,7 +25,7 @@ - + diff --git a/tests/Plotly.NET.CSharp.Tests/ExtensionMethodsTests.cs b/tests/ExtensionLibsTests/CSharpTests/ExtensionMethodsTests.cs similarity index 100% rename from tests/Plotly.NET.CSharp.Tests/ExtensionMethodsTests.cs rename to tests/ExtensionLibsTests/CSharpTests/ExtensionMethodsTests.cs diff --git a/tests/Plotly.NET.CSharp.Tests/TestUtils.cs b/tests/ExtensionLibsTests/CSharpTests/TestUtils.cs similarity index 100% rename from tests/Plotly.NET.CSharp.Tests/TestUtils.cs rename to tests/ExtensionLibsTests/CSharpTests/TestUtils.cs diff --git a/tests/Plotly.NET.CSharp.Tests/htmlcodegen/SimpleTests.cs b/tests/ExtensionLibsTests/CSharpTests/htmlcodegen/SimpleTests.cs similarity index 100% rename from tests/Plotly.NET.CSharp.Tests/htmlcodegen/SimpleTests.cs rename to tests/ExtensionLibsTests/CSharpTests/htmlcodegen/SimpleTests.cs diff --git a/tests/Plotly.NET.ImageExport.Tests/ImageExport.fs b/tests/ExtensionLibsTests/ImageExportTests/ImageExport.fs similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/ImageExport.fs rename to tests/ExtensionLibsTests/ImageExportTests/ImageExport.fs diff --git a/tests/Plotly.NET.ImageExport.Tests/Plotly.NET.ImageExport.Tests.fsproj b/tests/ExtensionLibsTests/ImageExportTests/ImageExportTests.fsproj similarity index 88% rename from tests/Plotly.NET.ImageExport.Tests/Plotly.NET.ImageExport.Tests.fsproj rename to tests/ExtensionLibsTests/ImageExportTests/ImageExportTests.fsproj index aaa994765..0c8df24aa 100644 --- a/tests/Plotly.NET.ImageExport.Tests/Plotly.NET.ImageExport.Tests.fsproj +++ b/tests/ExtensionLibsTests/ImageExportTests/ImageExportTests.fsproj @@ -21,6 +21,6 @@ - + diff --git a/tests/Plotly.NET.ImageExport.Tests/Main.fs b/tests/ExtensionLibsTests/ImageExportTests/Main.fs similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/Main.fs rename to tests/ExtensionLibsTests/ImageExportTests/Main.fs diff --git a/tests/Plotly.NET.ImageExport.Tests/data/linuxTestBase64JPG.txt b/tests/ExtensionLibsTests/ImageExportTests/data/linuxTestBase64JPG.txt similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/data/linuxTestBase64JPG.txt rename to tests/ExtensionLibsTests/ImageExportTests/data/linuxTestBase64JPG.txt diff --git a/tests/Plotly.NET.ImageExport.Tests/data/linuxTestBase64PNG.txt b/tests/ExtensionLibsTests/ImageExportTests/data/linuxTestBase64PNG.txt similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/data/linuxTestBase64PNG.txt rename to tests/ExtensionLibsTests/ImageExportTests/data/linuxTestBase64PNG.txt diff --git a/tests/Plotly.NET.ImageExport.Tests/data/testPNG.png b/tests/ExtensionLibsTests/ImageExportTests/data/testPNG.png similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/data/testPNG.png rename to tests/ExtensionLibsTests/ImageExportTests/data/testPNG.png diff --git a/tests/Plotly.NET.ImageExport.Tests/data/testSVGURI.txt b/tests/ExtensionLibsTests/ImageExportTests/data/testSVGURI.txt similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/data/testSVGURI.txt rename to tests/ExtensionLibsTests/ImageExportTests/data/testSVGURI.txt diff --git a/tests/Plotly.NET.ImageExport.Tests/data/winTestBase64JPG.txt b/tests/ExtensionLibsTests/ImageExportTests/data/winTestBase64JPG.txt similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/data/winTestBase64JPG.txt rename to tests/ExtensionLibsTests/ImageExportTests/data/winTestBase64JPG.txt diff --git a/tests/Plotly.NET.ImageExport.Tests/data/winTestBase64PNG.txt b/tests/ExtensionLibsTests/ImageExportTests/data/winTestBase64PNG.txt similarity index 100% rename from tests/Plotly.NET.ImageExport.Tests/data/winTestBase64PNG.txt rename to tests/ExtensionLibsTests/ImageExportTests/data/winTestBase64PNG.txt diff --git a/tests/JSTests/.gitkeep b/tests/JSTests/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 000000000..5cfded22c --- /dev/null +++ b/tests/README.md @@ -0,0 +1,76 @@ +# The Plotly.NET Test Suite + +This folder contains all tests performed in this monorepo. + +As It got quite large and complex, this reamde is a try to make things less opaque for contributors. + +## Testing frameworks used + +- Most of the F# test projects use [Expecto](https://github.com/haf/expecto), some use [xUnit](https://xunit.net/) + +- The C# test projects use [xUnit](https://xunit.net/) + +- The JS test projects use [Mocha](https://mochajs.org/) + +## Running tests + +### Using the `build` project + +This is the main way of running tests from the command line. + +Either use `build.cmd` or `build.sh` depending on your OS to run test targets, e.g. : + +``` +build.cmd runTestsAll +build.sh runTestsCore +``` + +Available test targets are (WIP): + +- `runTestsAll` - runs all tests +- `runTestsCore` - runs all tests in the `CoreTests` folder +- `runTestsExtensionLibs` - runs all tests in the `ExtensionLibTests` folder +- `runTestsJSTests` - runs all tests in the `JSTests` folder +- `runTestsCSharp` - runs all tests in the `CSharpTests` folder + + +## Folder structure + +### Common + +`Common` contains all common code used in the test suite. +This includes the `TestUtils` and `TestCharts` modules, which contain utility functions for testing and the actual chart objets to use in tests. + +The projects contained here are `FSharpTestBase.fsproj` and `CSharptestBase.csproj` - classlibs that contain the above for each language respectively. + +### ConsoleApps + +`ConsoleApps` is a folder containing projects that use any amount of the other projects in this repo. +They are not TestProjects as in that they contain UnitTests, but are more thought of as playgrounds +to manually test functionality of the projects in a console application. + +### CoreTests + +`CoreTests` contains all UnitTests for the core `Plotly.NET` F# project. This is by far the largest test suite. + +Currently, the following test projects are contained: + +#### CoreTests.fsproj + +The largets test suirte by far that tests all things Plotly.NET, such as HTML code generation, JSON serialization, Object validity, etc. + +#### CSharpInteroperabilityTests.csproj + +Testing usage of the core F# API from C# + +#### StrongNameTests.fsproj + +Testing usage of the core F# in an environment that requires strong named libraries. This catches for example the addition of new dependencies that are not signed, and therefore cause errors in such an environment, but not in newer .NET environments. + +### ExtensionLibTests + +`ExtensionLibTests` contains all UnitTests for extension libraries, such as `Plotly.NET.CSharp` or `Plotly.NET.ImageExport`. + +### JSTests + +`JSTests` contains all UnitTests that run on node.js. The main application here is the validation of generated JSON via the `Plotly.validate` function in the `plotly.js` library. \ No newline at end of file From 2454c653d7a875815e25487b795a83cf6e9980bd Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 14 Apr 2023 14:18:16 +0200 Subject: [PATCH 06/26] adapt new test running pipeline for ci --- .github/workflows/build-and-test.yml | 4 ++-- build/TestTasks.fs | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 255dcbb8d..d9dca4e59 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -22,7 +22,7 @@ jobs: run: chmod u+x build.sh - name: Build and test working-directory: ./ - run: ./build.sh runtests + run: ./build.sh runtestsallnonetfx build-and-test-windows: @@ -36,4 +36,4 @@ jobs: dotnet-version: 6.x.x - name: Build and test (includes netfx) working-directory: ./ - run: ./build.cmd runtestsnetfx + run: ./build.cmd runtestsall diff --git a/build/TestTasks.fs b/build/TestTasks.fs index 825daae97..fdce19418 100644 --- a/build/TestTasks.fs +++ b/build/TestTasks.fs @@ -20,6 +20,8 @@ let createTestBuildTask (name: string) (deps: BuildTask.TaskInfo list) (projects } let buildTestsAll = createTestBuildTask "BuildTestsAll" [clean; build] (testProjectsCore @ testProjectsExtensionsLibs @ testProjectsNetFX) + +let buildTestsAllNoNetFX = createTestBuildTask "BuildTestsAllNoNetFX" [clean; build] (testProjectsCore @ testProjectsExtensionsLibs) let buildTestsCore = createTestBuildTask "BuildTestsCore" [clean; build] testProjectsCore @@ -45,6 +47,9 @@ let createRunTestTask (name: string) (deps: BuildTask.TaskInfo list) (projects: /// runs the all test projects via `dotnet test` let runTestsAll = createRunTestTask "RunTestsAll" [ clean; build; buildTestsAll ] (testProjectsCore @ testProjectsExtensionsLibs @ testProjectsNetFX) +/// runs the all test projects except those targeting netfx via `dotnet test` +let runTestsAllNoNetFX = createRunTestTask "RunTestsAllNoNetFX" [ clean; build; buildTestsAllNoNetFX ] (testProjectsCore @ testProjectsExtensionsLibs) + /// runs the core test projects via `dotnet test` let runTestsCore = createRunTestTask "RunTestsCore" [ clean; build; buildTestsCore; buildTestsCore] testProjectsCore From c1b5f95e2eb0b2563472ba00b227792f3a81b540 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 14 Apr 2023 18:04:58 +0200 Subject: [PATCH 07/26] improve readme --- README.md | 188 +++++++++++++++++------- docs/img/notebook_quickstart_csharp.png | Bin 0 -> 42055 bytes docs/img/notebook_quickstart_fsharp.png | Bin 0 -> 45005 bytes docs/img/showcase.gif | Bin 0 -> 634612 bytes docs/img/showcase.png | Bin 0 -> 847983 bytes 5 files changed, 138 insertions(+), 50 deletions(-) create mode 100644 docs/img/notebook_quickstart_csharp.png create mode 100644 docs/img/notebook_quickstart_fsharp.png create mode 100644 docs/img/showcase.gif create mode 100644 docs/img/showcase.png diff --git a/README.md b/README.md index 894efe7ea..dd2866425 100644 --- a/README.md +++ b/README.md @@ -5,96 +5,150 @@ [![](https://img.shields.io/nuget/vpre/Plotly.NET)](https://www.nuget.org/packages/Plotly.NET/) [![Discord](https://img.shields.io/discord/836161044501889064?color=purple&label=Join%20our%20Discord%21&logo=discord&logoColor=white)](https://discord.gg/k3kUtFY8DB) ![](https://img.shields.io/badge/supported%20plotly.js%20version-2.18.1-blue) - -We have published a software paper on Plotly.NET. If you are using Plotly.NET for your research please cite or look at : - [![DOI](https://img.shields.io/badge/DOI-10.12688%2Ff1000research.123971.1-brightgreen)](https://doi.org/10.12688/f1000research.123971.1) -Plotly.NET provides functions for generating and rendering plotly.js charts in **.NET** programming languages 📈🚀. - ### Table of contents +- [What is Plotly.NET?](#what-is-plotlynet) - [Installation](#installation) - - [For applications and libraries](#for-applications-and-libraries) - - [For scripting](#for-scripting) - - [For dotnet interactive notebooks](#for-dotnet-interactive-notebooks) - - [Nightly builds](#getting-nightly-builds) - [Documentation](#documentation) - - [Getting started](#getting-started) - - [Full library reference](#full-library-reference) -- [Develop](#develop) + - [Quick starts](#quick-starts) + - [F#](#f) + - [C#](#c) + - [Samples and tutorials](#samples-and-tutorials) + - [Full library reference](#full-library-reference) +- [Development](#development) - [build](#build) + - [running and writing tests](#running-and-writing-tests) - [docs](#docs) -- [Contributors](#contributors) -- [Library license](#library-license) + - [Contributors](#contributors) + - [Library license](#library-license) +- [FAQ](#faq) + +# What is Plotly.NET? + +Plotly.NET is an Interactive charting library for **.NET** programming languages 📈🚀. + +It is built on top of plotly.js and provides several API layers for creating, styling and rendering ✨**beatiful data visualizations**✨. + +To get a deep-dive into the rationale behind the design choices of Plotly.NET, check out our [F1000Research paper](https://doi.org/10.12688/f1000research.123971.1)! +![](docs/img/showcase.gif) + +In short, Plotly.NET consists of multiple API layers and packages: + +- `Plotly.NET` - The core API is written in F# and provides multiple API layers to create and style charts - from the high-level, type-safe `Chart` API to low-level direct chart object manipulation. It is the foundation for all other packages. + +- `Plotly.NET.Interactive` - This package provides interactive formatting extensions for .NET interactive notebooks. + +- `Plotly.NET.ImageExport` - This package provides extensions for Plotly.NET to render charts as static images programmatically. + +- `Plotly.NET.CSharp` - This package provides an idiomatic C# API. Note that you can use the core API in C#, this package just removes some friction at some places. # Installation -The most recent Plotly.NET package is [![](https://img.shields.io/nuget/vpre/Plotly.NET)](https://www.nuget.org/packages/Plotly.NET/). +You can get all Plotly.NET packages via nuget: -Plotly.NET also provides several extension packages: +| Package Name| Nuget | +|---|---| +| Plotly.NET | [![](https://img.shields.io/nuget/vpre/Plotly.NET)](https://www.nuget.org/packages/Plotly.NET/) | +| Plotly.NET.Interactive | [![](https://img.shields.io/nuget/vpre/Plotly.NET.Interactive)](https://www.nuget.org/packages/Plotly.NET.Interactive/) | +| Plotly.NET.ImageExport | [![](https://img.shields.io/nuget/vpre/Plotly.NET.ImageExport)](https://www.nuget.org/packages/Plotly.NET.ImageExport/) | +| Plotly.NET.CSharp | [![](https://img.shields.io/nuget/vpre/Plotly.NET.CSharp)](https://www.nuget.org/packages/Plotly.NET.CSharp/) | -| Package Name| Plotly.NET.Interactive | Plotly.NET.ImageExport | Plotly.NET.CSharp | -|---|---|---|---| -| Description | Interactive formatting extension for .NET interactive notebooks| programmatic static image export | idiomatic C# API. Note that you can use the core API in C#, this package just removes some friction at some places. [See bindings progress](https://github.com/plotly/Plotly.NET/issues/296)| -| Nuget | [![](https://img.shields.io/nuget/vpre/Plotly.NET.Interactive)](https://www.nuget.org/packages/Plotly.NET.Interactive/) | [![](https://img.shields.io/nuget/vpre/Plotly.NET.ImageExport)](https://www.nuget.org/packages/Plotly.NET.ImageExport/) | [![](https://img.shields.io/nuget/vpre/Plotly.NET.CSharp)](https://www.nuget.org/packages/Plotly.NET.CSharp/) | +# Documentation -### For applications and libraries +## Quick starts - - dotnet CLI +### F# -```shell -dotnet add package Plotly.NET -``` +In F# projects, just add the `Plotly.NET` package to your project and you are ready to go! - - paket CLI +
+ 📖 Polyglot Notebook 📖 Quick start -```shell -paket add Plotly.NET --version -``` +
- - package manager +To enable Plotly.NET in a polyglot notebook, reference the `Plotly.NET.Interactive` package: -```shell -Install-Package Plotly.NET -Version +```fsharp +#r "nuget: Plotly.NET.Interactive" ``` -Or add the package reference directly to your `.*proj` file: +To display a chart, just end a F# cell with it: +```fsharp +open Plotly.NET + +Chart.Point( + x = [0 .. 10], + y = [0 .. 10] +) +|> Chart.withTitle "Hello World!" ``` - -``` +![notebook quichstart in F#](docs/img/notebook_quickstart_fsharp.png) -### For scripting +
-You can include the package via an inline package reference: +
+ .fsx Scripting quickstart -``` -#r "nuget: Plotly.NET, " +To enable Plotly.NET in a .fsx script, reference the `Plotly.NET` package: + +```fsharp +#r "nuget: Plotly.NET" ``` -### For dotnet interactive notebooks +To display a chart in your browser, use the `Chart.show` function: -You can use the same inline package reference as in script, but as an additional goodie, -the interactive extensions for dotnet interactive have you covered for seamless chart rendering: +```fsharp +open Plotly.NET -``` -#r "nuget: Plotly.NET, " -#r "nuget: Plotly.NET.Interactive, " +Chart.Point( + x = [0 .. 10], + y = [0 .. 10] +) +|> Chart.withTitle "Hello World!" +|> Chart.show ```
-# Documentation +### C# + +In C# projects, just add the `Plotly.NET.CSharp` package to your project and you are ready to go! -## Getting started +
+ 📖 Polyglot Notebook 📖 Quick start -The landing page of our docs contains everything to get you started fast, check it out [📖 here](http://plotly.github.io/Plotly.NET/) +
+ +To enable Plotly.NET in a polyglot notebook for C#, reference the `Plotly.NET.Interactive` and `Plotly.NET.CSharp` packages: + +```csharp +#r "nuget: Plotly.NET.Interactive" +#r "nuget: Plotly.NET.CSharp" +``` + +To display a chart, just end a C# cell with it: + +```csharp +using Plotly.NET.CSharp; + +Chart.Point( + x: Enumerable.Range(0,11), + y: Enumerable.Range(0,11) +) +``` +![notebook quichstart in C#](docs/img/notebook_quickstart_csharp.png) + +## Samples and tutorials + +You can find extensive documentation with samples and tutorials of the core `Plotly.NET` library [📖 here](http://plotly.github.io/Plotly.NET/). ## Full library reference -The API reference is available [📚 here](http://plotly.github.io/Plotly.NET/reference/index.html) +The API reference for all packages is available [📚 here](http://plotly.github.io/Plotly.NET/reference/index.html) The documentation for this library is automatically generated (using FSharp.Formatting) from *.fsx and *.md files in the docs folder. If you find a typo, please submit a pull request! @@ -112,7 +166,7 @@ Check the [build project](https://github.com/plotly/Plotly.NET/blob/dev/build) t # Build only ./build.cmd -# Full release buildchain: build, test, pack, build the docs, push a git tag, publish thze nuget package, release the docs +# Full release buildchain: build, test, pack, build the docs, push a git tag, publish the nuget package, release the docs ./build.cmd release # The same for prerelease versions: @@ -132,6 +186,10 @@ build.sh prerelease ``` +### running and writing tests + +please refer to the detailed readme in the [tests folder](./tests/README.md) + ### docs The docs are contained in `.fsx` and `.md` files in the `docs` folder. To develop docs on a local server with hot reload, run the following in the root of the project: @@ -155,3 +213,33 @@ Plotly.NET is a community maintained open source projects. Big thanks to all con ## Library license The library is available under the [MIT license](https://github.com/plotly/Plotly.NET/blob/dev/LICENSE). + +# FAQ + +
+Why are there two separate packages for C# and F#? + +
+ +These packages are not separate, Plotly.NET.CSharp is built **on top** of Plotly.NET. + +`Plotly.NET` (written in F#) is the main project. It is designed with interoperability in mind, and it is possible to use it from C#. + +Over the years, some friction between F# and C# have surfaced that cannot be overcome in the F# codebase. For more info, take a look at this issue where we discuss the topic: https://github.com/plotly/Plotly.NET/issues/285 + +The `Plotly.NET.CSharp` package (written in C#, using the F# API internally) is a thin wrapper around the core API. It is not necessary to use it, but it can make the API more idiomatic and ergonomic for C# users. +
+ +
+Can i use Plotly.NET in [insert your UI library here]? + +
+ +It depends. Plotly.NET creates JSON for consumption by the plotly.js library. The actual rendering is done by plotly.js, in an environment where javascript can be run. + +This means that your UI libs needs some way of displaying html and executing javascript to be compatible with Plotly.NET. That is true for most UI libs though, [here for example is a POC for Blazor](). + +For Windows Forms and WPF you could use a WebView control to display the charts. + +You could also use Plotly.NET.ImageExport in your backend to create static images of your charts and serve those in your UI. +
\ No newline at end of file diff --git a/docs/img/notebook_quickstart_csharp.png b/docs/img/notebook_quickstart_csharp.png new file mode 100644 index 0000000000000000000000000000000000000000..9b293f8c25dc2f1a22aa0f8747149caecd8cb1dd GIT binary patch literal 42055 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 literal 0 HcmV?d00001 diff --git a/docs/img/notebook_quickstart_fsharp.png b/docs/img/notebook_quickstart_fsharp.png new file mode 100644 index 0000000000000000000000000000000000000000..4387db8acd861457d63febe61ad8e6695444540f GIT binary patch literal 45005 zcmd42c|26_|3B>gmQ<2@D@vAj*(-)3CQ6blSq3wfB-@N3`!bkPsDyXfLP&OF>@$qD z2t{@?!wfSa>ll-524lF7&*%4jJnnz)$K$^5$M28dU*{aIbIx^L=el06=kl7@W+n#0 zha?X1@$m^8-n(PY$H(8s$G1=5z<%H_$<7kTfWu#Y<_3CvWxbN~z{Nf{U1ME7zRCol zZ6^WX`ry-hwtjqkM}WJIwEflTUG#*Hul%v$9bL;{hsANhu;VT}oy*?OUfw!zA*rAL zr7OR{or;{urkn$A;&+A{TBbcaUx$XW9Zc4aE69r}o?$!mTPS{t6tGN>R=#lb@3Y4? z`dFiB6$j-q{=M}`$J!Oxw-_NDqpe(nnI3rV2`emRKe0+N6&Y!=H+n)W;#moIp zC-+W{YQA*ZJKmZ*8vWPaNzUz)d*kAJdF20dgKznTh2Cq~-l9q{{A%`po@N#xrj*VC zE6ATepX>T^;)FuV#_heQ^LY|F;xbZCMSENl-n%>?)p}*`c*g$#FiU)V&-%|E=HENf zi@9=m@A!XKgUP|6A&srR+Se&cRFC#I7kA7)Twtu^#1t8@#Wm+s)kDi#)_Qr4a|6hF z4LE*C@W|i*lK1?h3~1|h+Sag4spd|EAzKi=t0!v${UvfHEPZaPTEr}dAj7EPq;RK7 zMwG+Vn$fqzSGSMPzq&o_LTixN@reiTt+ZrfosXXqRE;hp4@~NdD|Vm%vWAbH8XU>d zSZE5I_4uhRwYIsO>QM?Nlza>rJ0n%^V{tNq*{rgb1jcrFyw4eUVZJuqHdKO?;xK|< zDbGpgnf29sDsAj&X>V-$@)i?(6>qLN5L}$(ZC4+0=LZwFih0{V>VK`m4;3i|4miJnF=o#k z?u(=B0wXS}S!un}lV|ikt0ZqaEwnF-MSCD;YXllHE`n~JZn8iLs9ni zM)v4CZ{f0+i@h4bW^szo#x=g89t=)hZ_))`@JCgGqxbBAd#kr zi6G0M2Pcc-eF*7W*{9Vw{b=}~UOC!fBhV%tO&q7|yC&$H2?djWl0w(MLnSoW2I0R< zV~0t&0hK;w%h~g&lH2E5dD=nGX=#6=r0q|oIj^Q0aWm|bc-sy27q3^Ez;iGO^ZE7} zTh9?wp(jeY7Mm@`#G)Xv?)y4&geYZjplN`i@t=b7p~zDfYrlSfQpej=Pkb5c^Pgm- zeE*ymK>BcYJgI6CHomeg89tQ|Z)FIoG!VIdzpyqPtCgKztitngAs;4_a!{NB!-iTj zb1CmDL6yy69HH?vg3dKU610EO!<#YI=gZ4^WsZopXky;PHO<^jt#&lQ7MczU(D!xA z8$H=cy0|)A;PN~xEG(L~+>v6VDrun_JD&@sSc{CYSwrt*L%B6g%@=Ke`JFvB)t2% ztPK1)0|xn8o;_Dnn?eX-FVJ9a%<=nj%QVg4PQRteQxY0Z@j9;@Ch9I^20W3G8rIQY z_Mue-NrtTsSl7FFJ=Zu&txp+M1eZmXf!$2!+sJF>MXo|@jTkJ?1|9B3fHYifkMB%g zUF$tfQ#YusV|TGDThs<)IN@hQ&~)eCefHPdvVmy&?0&9mU1W#DwR?%Kr~&r4P{8)` z3xAF^CYejr)}#qIt-e$~?VnIkcHf+us6sl1(;*3;zvR)|LF_8IbyVHdIQ^Gi-(Adv z!apzhd;I%zde+($%ICjv>7>+6Y(PJ)XWOH)2xF8$HDFqYO!)uYmwA0AAiUy>kO
)$O(qwDPE`r>YtZ{p%J1e_9+ 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 UwL8e>ds4ztE4xF*2feQT7u#F6M*si- literal 0 HcmV?d00001 diff --git a/docs/img/showcase.gif b/docs/img/showcase.gif new file mode 100644 index 0000000000000000000000000000000000000000..e51eaa7bef8a854edaf3988657e9d177682a92a2 GIT binary patch literal 634612 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%0ARP7&<7$<7Z^j=}yT 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

    9KBo;%=uGS$FJ`bY0N~aIlx)kW) zbQA{wm|WV6bv}zD;@{Dx{mhS?-Cy2>CVQbIC}dC(ewqffNH*zy zsyD-~XUQkRA}C_DLXfTn%hK?(^t-Y;+q1-NBF`5axvKk9Zt$gbU>;N6-Z& z!)KMq6|t75Rh#VM6^^NFKb4}Z#hc9sW z{*K=T$#Ez)gu%vk8W~$Gj?cty{1?^HKHg0!c=g|?l0%4+<42a|mb`z5W`am^rqzod z%rA<2WSE0kLtBzIw9rltNlthu?{3x^mn=chhs+coB)%2m;=7X`xbx?;a(YYEpV03e zjclp4VyU$|DfB15`d<8k6{HXVe|F-NCU;zm+mpUNaQSBYH!GG)gBIT{zJ6Qg-;yW- zgFP7VK6h+PqHMeq~E9Pmea}b4`a3%d!yg4X31)M-8&PtK>PC!tI*)g=uqHL?(f@Lx` z@dN9`LHW2`OLC(7r3YU$RL+_sSVQ-O?w)*NRuZ#`l(`Q3nBkZma%5B2FUoP>An@0h z=0m@01(|GcOXfw_oAQ2qg4sOv1Lq%{7!*I>hLBO}huF+}QEjoHIZmw*UJMR2jN(rg z;zttr3h;a}y)4pmwHxL)jyv23{H_I50RaG>Eb4_Y1P^84!a9w6Z{VAoZHqlO^W({i z)30}p7I{bDUm}{>w0n#9@H~5!e6uvR=8)DUKbGcjOZkSdq>!r5S^idT0YXcZt^!0% zEYnKo)JBLnr?Gg}zk{wGg3_Relr!}b;{N!D4Qb~hD@?0uB?M_jl{KN0 z(|7F=11=D*$s^s*E?$n;GpSQ#-RfP4gQiN}SCN94)e@~XXJMPl_4gh%#@b{-G`mMs z>4Bq(Lzgn$2i|OI@l-O=@K5Fs#Vs?q$?JHpYdE=dv4)&Ap-ur{ z=|s9q|8x!1gk^3pE1RT~Xv4gdgSoE=7H>vav!pKaDA43Yc;)0KPv?~a4kv@z`MTrO z$0<+=@XJbn?YnM2$CJfS{^q|hnvPW{t_6$qHMLz6%k(uqSesJ4;_lj?dCslp zY73`ol_CQ+)6eqQ)#*7kS>MRS>l#XNBDlkxr?z<}6JB#~v%k^f&%?PX9YN?4J(%?k zN~!R17G^QS)k!kIo(w>*zoo~ydcEPdf8#zm0JBF02&=K5yBeapU9IkA)f%GwbgRT)6|TIM|d zxA90g0wv1W&ifQ+7|zh}VRr9u9I_=8+3jmTmUM7<;a`2;Hz@|B!Es3882514yM6e2 zRmEm)(5B>L8jYoCSkJ!dJ zrc@fy0~ll_pj6)~BmBqbJlMc*PZo*)E=)KJv+gYTMuR@>8AWgP3!RQq1V7peB8-!; zDu1V5q=$)ti-2UH77c==6_RL7F*HOBE!$`6^zlG(kemOw+jb}0D1}R9Kv2v(Op{PN z6v07E!C}D*NtuvqK zvN388+=DXqGuAhwhc3G;|7KRe6$(Fj4SHUyygdNxTcm5DxQ$i`YODp8QrXn<80z?o zljY*}$IWfA2njsm$PST%LM*s)S5$)SDtRS<0)Q&;svY98Z*Ec=5UhRVVH(}{U)$yKyy#wUmMeu}ORvv10?+!S2L*8h ztciG@E&%1V5&N6Z9B(Ke!am1g-8@|H9G<`zu8bjrwAMU9?x0;!%9_duR6H+M(051t z5Yy!smnXwm_&2+E{^9+bHPc|)c;?@Pghq5bGepDr5gQ+HDi)S)Sx_k>;+caSiVDLCty7KCV7xc zXwLG7n*c}DJKdLB8t(()KyVbiUo`yd|%>&4UWlD(&@HvVT$p~JjdH3lb@L%$AX ze`Ch8YEc|Vh9oA$hicZ&v>Mo*{{d+`ku3O;LB!D|4FAi&s-7h`MW2r zD@0TuY*q8&H>WP28<>sHDu`Dv3N+mGca@@AI>2foqOpCWiR}(EXTfB6JW?9^YN76cEEtDUH)3k zXlJ&1nff2jmG|maU%+ zKzsIr8Za}xC;eq`1*Ye3qw?j;-gq3Y>)&&n?iYd4d#Kj2wXfFDvCyjlnqbOe1 z@k9AfRdV;iT)Gl_%Y9b)01iddx7VJ1=~0?r8XU8mI^GMOuzWgVAX`pCovy_*J)MHQ z>C}5qwz;Enb;*OE#;yHB3C;%YUpTMyj01*@>3&$??B_j;hHv5adz#6H+Sg02af6IYoCH6XE|09A}NYVktN z7Lb5C6p$}~sPHE#h3`#AB5${=u-y73-otOV#YuP}m?cDpXE4r`#}&MAfr@SW7M~RH z{?8u+kRwhP*-C*xAUKLl&j!#Eo+Rmm*SBp1A$`CMbc;|{?;-?pqY*9bmPO~d6PwUB*AXBI-2bMx`nx9Yp=3n(^@8dHa z>^#?%7{G-VXHOqKmUPsNERDa2sNP| zK0F8%n@a`pLW#^diK?|itni14P@>!nV~<-p&pwb{(30qAMg~3e&=)#fhN5ZN+#T>S z)KV48&9en+!!9R|vk1o&JbXVHas@3iGiFmC^$n(Izro?^XLQK`aKChbwie}_j6tQ0!^8n{0yK&ap{>dybne? zzL}M|*U_WxJ7AWKvO%`}sp6f^%3zwotu6z?A0En0M+R?KaOj!(bH-*S8!hy8vW%VG z7zbw9F8qE_A)kytUcaPuSwJkwM^cmbbM>%5M|bj-8tJUt zO!{&cxzxu=W}z94?8U=sG!dooFF~a*`(e|49($H1u}|b{Pq2ePR4@+Bxuy2nZ#=RM z_A<&`ugJ-wl0Psuw@ibpLG@LWS-~&syJ(Td>&&UVlz-pv{x#VlvNT&Jt1MJ8{PiY% zX|l?VIx1IJ_V#BUu&y*3jxoC7$}Jlx$6}NzIxKZZL3tFCJ$tmLf8^HJ*E}Y5=HeI^ zKT9XT$p~&{P16d#bu|d-FrlHbbld-6F!0**rB$Pwy)y{`*In;9b#;uTuP9%u5-Skd z4xX@TnPtwz0qHGHZ=z6=0bW4fCA){L$^5-nSUW`#2IE9VP9a#7588u|Ll3dj3eA`+ z6(qVJY+5Z|MLZsZ7yyWfl1~2RoKO9|Ip5+^)A*HtO9d%EKMj2t%{Ovwh4cSF2Qcu^ zt|2{AUpHfK5aenxHl`ix;6gK9!F&WH53B8FiJ!vz%!qV>0lECM4MHsPN;NDIFH3Vb zs#Tp2s_5LZXbR`Z?SYhmKw+8AxGpUDclA^V4S-|W05U@t)&%_kiDw^YScAW>89i!k zyOU&6e)t>tVkG20_ExtU9>r&@>q5P8>=9#+17biCL;j=hrzFdizN-v|2bl-WRm+4q z{X3MI)H~?|fa7KI%?ku$cYep~99s?*NQSw>bE(gMEz9yMYBA84;q|3h-5P$v8wAWO zXF}fqsoJ+{CI1w`eEG5qF||Y{BF~_u(!ed-@}|GPRCW2-*At5xajf$Ac)@zm$seYT z2aUeTE)tz7CNXH(Lkq~yFMy28VGs-xiSqWpm)VwZ|1Y-d%s4yTZ{H)shIoTV7L=hv zgJci=%3A%Z1xn(AemznDQ3t7Q*390+&}G2{JZqM&M2!s7|9h6Cuac+lF>BCVX%HE2 z5OSnnh0(=zGuQ^3cY7F{TEvNk5o-4FFTBm0E?oNl^3pk^>#q&9WI?aD!NjH3P@M*D zrs=j60;0*Lvty8GIg<=r^kIV;LoLg*Ufi=E(KqCv1q+7z9x?hJP@f$gX{AfQz^vjv z2IXP;#L7!_w#L$xHt%0rFyGL@SH>*B^?usu1?A(CgJHrqSVHzKefKQ|^Xc`28PUNo z`~B$882xSvkPl`4Vht~M9Fw?4P>N@?JtFlsBxu!{6)EZS=7FNgP!1f6(F2>c8jEfc zGup_`Oen{3}>#nt{!=Pm4=j12(UCP4Do|skT(mBL7*#q6M)Bu(vX0VqS+GJ21-L&-tfC|! zqrS%pykBkx_jUwg2X82)aBIW0r$bScGrT~Fey~>V#TakpLizBF2F!S!^E55r zHYfYFB9+QhQbmp~EWCBWPZyh&=TKY_S!_Vfr#nQnyt*QT)l`jhRG=oW`)aHwdxf^X4bX#uJf)1H z51lqFo8k4DZYrA>FQ1Dnr|OqaI+Vq+gYFb~=XZ&hZj|0sp)W>zZ@dInh4Q~YK)HTW z&Yz>}4=wrefU9Spr2-|vcatm{sdaczKt}Uu&(hyxm(=;d7z0qOhZk0F=h3@IvPwA4 zvR`^18^HA@;MHNkh17tlEE$=zjht)%C-4Mpbhoxz==7Cp+s{I!$YAwc&))AKBQjn8CIbw`nA}VM zWR_WJQ^K%BOTD)+=j>zP?g0V;tC>mVT868R{MPB<6O`bia3R$BW2mnp!78!Bsh=bp7bW%*tgEeGbo}($(`@Di3Gzu!Yhom z!dlz;{Q3i5s&Bk*eEcotZe8syU0iJ&asfXhO4t##-PL6QYs#GIGF`Pz-K#Wt6CCZ} zk#cV#_TT3J>$go5-N5)*XJrHTFoOzkx-XcO%R=|HXs2+pzNnZ%`WETVg5DJjpo3yq zis`zWr~j@H*0cuB$bxBlkUYpnp-1T(sIHLiu6GTWIxxmZd4!8cR0?di~m3XeK$SOUp|?x;S|yHO%uwxHaOv`9zg4c*_&Wkj!#Cze)Jn0 z{_7UA1Xsczi?{~wxUcuyNWrXuMFy9*NE>pGHfI0h%LCa4L(%aTJNGSagLHN{z}B-M z(P4-ZgwB2g>&}*%#*eW2#;%-78*+QWm|1D7Qk|q%rxlPBK-5NcrJfhQtsYjp@o&wb5HIk zvlX`3kb-rI_i*7!J!PYfklaT?Zrlxi1>9Qal;{p9qkc{6vEZiAn9(DR+aHy`%}LZU z`dz>Zxl-@4zH#MLK<%D{Dvdga^0_tZX1lm@Q-CAk0c^a3%AO}T6M5^d8*r;|4A?1M(Y_pH5o3%7mRy5GA9YWJAGsA~|CtcSjy*<);QiK1;Sl)}Njww5XYc zYYq+Hr4NGcV;`yO>^O+t92MU*6s5YcP!r4N9LmQGed0#T;zwE5w0yRveAcvP;z!F~ zM6zBdh`%-weZ=eSZs8r8Sb8)Cqr*XX7c27j0&nR`zO=-6hiLdRgZ`}qwkw9Sj@30Q zqA}}|_s~}ep~FgplSPc62Q=ob`2fKuRe}QZbJ#*YElyb@PK@>aO@9 z84{h{y=uUAjCB@_(>Nd{3s_BI?jbYD1oOC}OPd|}CFT`mb+HmH3RlLIY!hoQ&oA&l zbY^x}l<9F-6v%UTZ({If622T78jINZwX&NUt(gSXg(D^G4IKVN z6{`8w>|H4{BMs8tc>X(hRABaWR}mH>6A!_xXWp|Ef*|gwS>;Bof`YB|AfIf5ABIO* zFuWqF+e3aX{EwmgerNk@z&M^nMC`;KK}77mT52?66MN6btW}$$+9!!1_Ex)gt*TvB zZDSTi?V_q?i)z2Ls7{Z6AU~e#%K6;q^}dcqW;m^%w^wz6ek3>P^hq@X^#Yp_iI=#s4s0ekxQ%8UZ-cI6obP=GB4)hGroQLt zXLf}{@?@@{f)*g&)__5wra4fff)$(rKf@#g7-(K}3&CCaP#N%#Dc89NdBf81lACY5 zTa;felya04`$^fE-X-TayidlXha{Ad!e@{^iJ&R6bR}HEEO>NOnZ@#nijIjPLSPOh`ZuL!lWAG}{Ra>|5 zv#@X0liRZcQKZRXH~1?NM6S24i>D$o4R^oI4uZTQoRcsT@(OLE9$HsJBX$w5W%`&= zb7uVEyk@{J&W3~Ng!V!KYy^wFufpxouvye}>a4owxhdrJ@Rt@yYAAX@VW=SQckz#o z%QwY^s1I#YIg2zsFcs?VV%U$U?rx;bjRlt~(e@d-6{)GMgg2*}Q#0`uQPriPrN|Hc`8;eI=cGB8$UCr}9-xpBgQ6I-#^vT$fj|RpLVTubBy?sLzX;7Rc8Pl2^Y$ zD^XK%3;BGV4(2wp50lCn?CMtTyWa1k7~6bt>@^;GQT}={_;u0Em1|#`mfW9SB}K0y z-sOLs>W^C)eEzdg&gpr?L$N}ppQ1N<6;$Q*4<99f{fG6kxb7x9iq9n#>VH35%+H=Q zE@dek?+$Zo4Enj&H}dL9e$Zpw_>i%BfOAJyjZ$4&uhdiwAmE5ZHDv~H~c(pggXM`*!=0Y13Yhh?U zARU6uZ#D<4q~MP(=CGEiW$LDY(2{@h%g4> zZ0kRq0X~cQcsT;KiZBZx0IE~0ST;$FWHt;aMSyRXy^JCFEzr;@l;c+I?1e2~O5v>Aokc5z!*B`-5IhoF zSwJ`ZvxC#Gx{`K<%acFqyeWw0_Re}4Psp)_$E~t%X^jN?Q1Q^)OfO? z%cAIQE=Q5s*~F3&5@Q@kxY1FBhd-?=(AKQrwGJ3bwR5H(3nzkmHy+Zfx>$an(rq%r z)8U4Ri2$2!^$`}CxKYnfGTmqZmzWgBleK{8Ck(3hs`Vu$NkeV|{f7N%xpHV@Fa-N* zz*4bLj(G%wi9s20m}_3Hl-Xh;wM;;U%$ zyxAH^LUqOUWSja@HF9yPycm$rzN&0);zF_;y~fE#F{(<{RdD+qwD9(xra=+E0d&_O zU}4_!x-sD9jWy=mq7VoC@h|s{#0=rddvDDka{|#vL};jXsA#HAuU_p}wK<9i)8Qwo zcKX3%bz1nX7e`4|xe_gu!Cce<^zMmjEUDLy16gwHJaq!Z_-q`7LLhE@D3K*wvSi?Vs+P znGLn*vJmlEzG1=!PthaS$tKbxZO^xcYu9My_*C@OVMR1??ZGNO792iA71LIt)oux9TK!McjgLQD4a#Q28PMkJ?U z3L@aouHsk4UNO@v=vEx(Kh&I8e-js813T>(zj`pv6!*`j^0ch%S~1Y#9_pm*qs*sN zJ}L7c1KU!TFSYif5~$k2}|si9g!m%$v6p;L4Hy)@uTnTH$O&@1926y9 zm7&A6Y<`;ZfxTF}+D>xuiYWg1`RffaZ94hjAim82ev#1`(KiF*vO&T`pX?-_+m3Vr zdZtW@MwK*>aQYxm_GMtxE3NdL3E7fk2A7k1-gv(u!*_dyKe9#hz8!xNRbORt$KPb6 z0t}ejhFslME;a>`psUmYX2jir7G?0`$%#b(EwBBT-fE13f?tHc<@gIsHO(u}(cA1MM#!rD;4P(f|0y*OL?_C#d?_P~pvm zomAXuf9mJod?7JIXJymR11W&`Es+m;m@RD%XY$?0Orb_4aHuqu%HSb>!|r~@`#W06(q<&nuP?)&vdVCc!}^0wn@jIz3V)4dCYPeqM+ z17er9RV1{Jh^eqM2c!O(e7fkD14 zL9cxTj^hDx9@mHcs!x`Bn5>k;$@?(80}|ad08=1GDK$i)$b1U}kywe?Yvjm2@i-H4 z?2Hb2asbgnm%xUNG7%Tv(FtdJ$V1i%Z;}X|6AR%Z$;v#0$I!ludvQ>MTybG_pVMl` z(|agMjxxUJKaegskeb&`Q;!s01rS}vFtAWU(;XoiFec}S?ChwTZzZLxsYi-Q)NX-3 z01Y>X>t(9Z?vH>#_5E^yZ!e?pc ze5SXhvL;*wVZs@ z-lb?1j%5Xmfv#f`f&egDe1hsZ*>^9|A2c$-R-ID&XxWR>oS;{X6Q!sj{m!#tyg6K( zgB+V!x&%0{Vw1z~9)l&esTy^F4TvE(Ab5wuASh&_ zQgORVdxxq=F}Di3f7&#ulbk6$oT=Sn9Gz&F8<` z=Li^6_R8K_qukTT7P_MZrh$~10&W2_IZs7h7w# zBb1hlhj4WYrfr>Ng-8>eA#OxeJqeIBW=In}N>cWN2%b}K{6TXa0Kfdw@a#vKfq>BV z%7tcmoM*~NTGo}A{!GiN$s*11+~*h2{ZwCySl73H`BZHhNm~>02((?~WwoviUc)L} zY_08O{tQv_7pi2iwW)HXa1Xf4uS>l~(lfKu*wN5QMNV}N_myNos;^rG(bM7k?~|Te zf^{0GHHXb9*GaZ?hy7d5Rm0LO-4Vd=?_>mdn6d(lItLd_@1~o5qsHzwU6VptZ}kf~*db06t-?Ke*in*KMrx5neFn4K z=b=|e80~&PgZ3loqoZ2iY&vZo0Jyh4cy%zi$%(UNh5hM@44E8NJrL*kFiwqJ**y@Q z`mmDOIR-`6-O!09U7mzV7Y`ok#7M2e2oD?G#D%*CYB*P05(h%A<)lmu%Ipl5%8JKl zlh!+4-9YG2Nm?Hj40`blA(g<8&=r>>a2aXA@x4Zh!05;~2?p0{M-%$&?!JH0%Z!bQ z0_>D)POf@5%1D$esUh)Sz;HUn*hq8jLMf#Ml|B|X`UEezg+(!p5yUOYY?gFV-_RRP z@-u&3vQzst0;IVsAHxx~{c5cfj_KZ8?_QYEzYTxcht2$KlC{}qf0jo-tkmK=qj{If z6&5+-xgh;}ul9Sdeq8Oc&aPCjDlOk0+2`C~b`KoFk>Rg)V>TP&-$qLVbboH0C9R~D zgk#h;lD*AABe@5>Saw{Yis+`+4f}?_8=%NA^d>_H0C2RNDxo!DfjnJ4LTw(4e{O5s zUA>#V{%)!+FKS^eLYG@D;m=WmOamnQ4;k>2oT~y0k9v-eLTztsjD@CYVqN*Bg#;bJ z4iat9nQ^dg4y`nt8#tj$DRM|C5ZLE-&f#Fy$ekdnIslaSfhAMzY;SnMw-lc!N?roT zkoHTEF8st&1X-=aEaY`2!6BSJ|4)9Z{!X`DqUmA)e4>F3E9oD)MfZwO{cEdhkznmK8I^6l4xu_2ut< zInc{1Ku&1xxrwwe`#B3uD+%W3T-qsII^@F(Cm6&e=UY92MCEj~LujLB9#$bl)$gZn z7u#%Hz4zMkIeoAE-7C6shs@i-bzfgteJRgffTJIwks*p|YOFQrDGzZ#T!C8}iDH^|?3#Pig(O5M9k~R^( zDdwE2w^uX4;3nY72>;f~2C~Zp*t)1Bjz`#!WiOlWG*1#5J;R^-sZ<9fO7=6@iX@-_!dNJ3v_ta;am*RHmY$by|>n$CVU$~`ci zdhcp64*QRr&CrT^d6 zpp=b7{Kg`E?qZ;R$k?;|ZQ?RtAgOJ<2j=sB2WC5#@oXjDh&aNI$Fr9EISH@C=`8>r3@# zKkb-UoR>e}`=OOe)~`(TmLQkuwb7d9aQ+;JQWUDdbT`khcuNW*jeYC9w>bPvLcJ`e zp0eqwwR?Xqs?y;?A=y7^f)SmHe-{#v`mZ&r_E*AQ(>elTsDvv$ujTOhSMP26StV_! zfrPj9jeD(jj^0( zYlsK_J=2W|@>R4o$K9}jjviqz$`H6!+~*OzScd|N2ul=H=c9S9lw(@@ARaCZ;p8Vm z9E@-h<4^j4^USIwH3bl*@Qv-P>YE=#GUMH(gtC~V-ZZO3uH9T84aFl~L==kv8V|X5 zv?Z`)wLni=+`nCrmsgjL+ok_m=fG9!V*P=sVk2j++BLuG_1s1Ei|ISx|6aB!9}3PZ z(o)pIT2nB!U(zni@mvN{oiiTA6ee-&7Qf@_p=9o>;fH?h=}%Y`@G(bzb3{g)`pjC} zmC1ZYZW*sDfi*PsCN}ae9}nr3eL9QfO2&10m3=KLnL_FS9eo`DcMO* zQ_b$W-#Yvz|N0@pPOPuE>r>ACOotw@v`zAO(mK;sJBBNtmZvoCsAVS?w9fTWc$M!u zao1<+Mf^9YtrhcaVd#sWZq;6U-Cr-w^@#1aIR@IYdFGlZhG~N=J zd6?_K`}0=l=1y@_S5%tC(T?}*+{?e50pDkS{qWimDtYujP9P7GNXzG#bG3@>IUp~( zf1A-+P7kz+j}U$(cynFys%?;h;-?grvwVncXy`tGQO_@_ zM_tnl(ycvn6F52spwYp->XN1pgdsMg_g;Db@;QTcnSD&*7MfK?qJ2K6<@gV7w=051 z>924JJqK8Wt#qq=1!z zRqXlQ-)KAf$H=>u5CwOr`xEt8_9>D0<{r1I$gn!QzXQ0e_EdS>zR5Q9WS3)9Plq$u!0oynyI1yo94bEV5m_SVsD3d@fGOsMZpyY)5g|7nan^Oi}C7)1e|) zFV$02`>S9&R99e)nLq+G^r^BQG6%!yickWoj_`;40kb0pX}R0Q2w*l16{WvBc@BW- z%it=&oYoEhO-rnieDVBz`yqDtWc+YLy(I~ulnP$J!3X|)H=K!KuL-q+vSkoxGNgwG zGU?XL0gt_s0gzb+ha?RVibU|` z1r$6!JDmfKXRTHy|7MvbZwgeWO>UF+Tz93M6o(?~)7I7hBccsk*_Un!j`F@mw)c&I*>*mAh*%4?U zIP{sp#B@;>LXX3UaPdkCLE@9G1Z&fClijR6A8hXIa53xj&FQzn*=;?b#uySKDu+w4 zx9mVgf(2r}zzJw6ldAB;PJh9W<|7Ptovm>C*ze3?P#Tj2qIG`#0CZs?iH!pbx287@ z;RP11W4D1=MFB6-_$Ev%^*Y?_|b`}n85RnF` z#KVCONf%bK%_r+8wlocNJeo(0JPo_SP^DWLnwy2Uzo0F{wu4-oe+fT5BFjtBf9|Gi z(Oc{#_3$_4Jo84oGI>ljb>2#aMTVxyrsJV``1zc;{90kC|A4Neb>7^9sAQw0>C%QZ zdE9nW#!eE)^)WQ@iLDr`1-)s2^L!~qCF!aYjS<#!Bzu&~5Fej;8UD(x zT-#w7{l2u{cCo+cg+3h`nG{7x=MnhaEnKL>q|Gzhl)RrdCCAJgbUeT{zkCYlU|2(# zGIvIDF4S9m?5sTY^b1wsn>%W56%;>{j(C=NBfU>}QcZv2G_@nI{R{gY+aVUu*CY_y z<4RX!P21Pq*WF4P`wn+T`PVa)2iqsFI@>CRCV0(lqF#8qT6;2NN_#2kIjK+PAjyym z)$(SN;k9(}gzy>1@@pPfHOv<>bDlIOTnQe-*wtc76JhS(G7U4_Kgw7BzQcLKC#*$o zg&~dzbTqwJu}6yK`&-h&pDKSm#o7+sHCy&#d~umc`Ux-kJA`L?-@vRsYE^LmPPLBE z@>Aq5Rs?r#qFiK^Uh-f$*OsH-D_!V|hox=*>Hl%(9y^MD`V7UOj=o%@wxF>YJ3XjuV5F=dAmo*hKH76g`pd@}94ov9O zWIST0@(VR)=&UJ3-Nq3`e*(!{r*rpr@_}qPb3in;tek?Y75TtR>rB|b?Yi;mLIRZ? z^(ErleLJWxt%1|IJ#+)OD_^JPiTP{LFLDVN-INU}HXYpT+*&yI*`empmM+g0$z5}FLf_I7+D8-8K%%5%-F;k0~sT!@yq~5 zm7xYb5)A_ARmK$*pU{1NzjlGkdR#wNrND0A)b`M!dY{LcGEyaR!P(EmU3Ihsw_RF5 z00SQ_4rJUP8q*K&rr>kv9=&^7}nmYjN-wJD${hRLx)wV?7{F=3U|5eYoA&@R+U#Zk$es9$v2Ja7QqO+ zJ%Y6WZNwUfw6;T3!7esturLMgl4^Coeb?oMk4vAZD=AZhVB&IW=+aK>oN02yvsibs z*kWz;Ib}<&X~|0^A$K-GR)O!CWsRzPb&%~8etEDrbWGIOq_3+qRTJ`Pwonda-(5WE z`iDNH&2Yh%$?f=(0t7aijb>R*<{fjXu=&>eQ{;o41J)pGM(N{a$&za%StEih$oiQ1AJBmlwP5_-dJ%Pe65lJa5#MqMTnn zi!`{_Cqgb^_%I9*Lj#UA%Qp2~b7hQ2Zc&9f2EmEh0Lsu;%Fuh_&?_fv?x-B$LyOA? zjic~+{(&;c#I$5f9soT9QiuNrW-aa`RMQ6~&=zU;cqQoHpSWg0WjEP8sUYv<3ww7rOL?dA0Brf`bYoY7 z1J0NK$FTP^ePM1=$CXRUj8KPsMFeR5MS-xJn=t#L>hqFbm>cmeTSO z`kUUoan$q}QZ7XWebw27RFIyp0w-lFHAm(IGXh~u=6|OEs(2X~U_b(I^&JiPrend! zY{eW6taP7wzgwxMKulq|U@NyiV7%qd9_3ov2Rwu?fE5YK=xhjzox9bR$8VF%eMq&R z13PBh;O(Tx@%qL`Gj%Zbaf~jIO3>n>prf7fwP2w=z%9AA(=B?aeqk{Kla51Qlb9i) zTEp5kT!Rj6VncGB6aPFciK3>@->^LpCfl=L)e%$Q`_s-(%OKe2wI8zX$;qZKaLd&S z^0tqFU0vyL+J?su-Qe5u6WoqBO41|{0x>0FrynJyOmLHAO-r31)w+;)vG6i3{kSow zMwi%)725_{WrJ6d1VexPySn(ov}JK;+}9Y_(i>(aYxpfkgibJ_CV!>4D&Njhe@{#tqvTct}2&dRJQW(`t z?mCH7Z+@a2-n=S^tL-OWQlR2%SY;?te1^cWF$5)3VKG1p7J3VVH8f`Mvh|t2FqCL@ zl$T$Nvo6A6$BplW(uIUVo}u$?Lkk^4a~Ejx+EP>%+Gu`^8J=B6bqQi>1eR=wnltnd zOMN@7C!+PS3$?2LE~71YrN-4TNbl1v->(h?%=Qw626O-PV?NCSiRX)s%fznhw2!N= zqKog4uEMR-+58AI#mMqtsX^2K{oArYgS0q^C<;i+k;}G#Te#Y8YU6R{ctUSBBj1B} zeaH(DNl@Z+nL#*na42xi%WlF-;QlcR^77o&9kKYlSNtMLuD)#5eyOC&hrd6{3vou) zL<}ey>8c>b!&3*8BB{#0t3Bs!u8B*RCkl^If{Hf{^8(HjFDvFN=3AdE{69nGbKL9^ zmKn*cfFbZzK4grPb5ms2^}QARG59(|@V#5r&r%XS`0iiHqJ6#s#Z zxHy*Vr#|ToLd?pXH`q8EijGgQkFWLvWU>KlJcC-YR_1c&i)Tq{{r*OA8WI4kQK~qT4Dg^`XKk` zh$ZU*=%Xh5mtOh8NQJs+!nt0+0c`!_Ba$?Dv+kGWr!JF4e=9Blk}&09ru*bXkCl_i zvR4~G$tB3OumE=}J`XnmW^y!DrH^MU{wCV=WlBo!x_^<#g(7pID!D@pgl$z&ZydX} zos9P8n;$>39BwvaU(O;Yr39Xm1k7enH>0(61~-nZVWA(sDI_rEBW$i;Y<{_Xyz%D& z$HX*bD|4uRAM_N&8{f?Jv~oml`Y#T{+3z>5qx<<>NXg7bb+$+9kC|3RptkHZ(^{5% z_g-_6xuI~Qcj>9=P~?Q1El$~X*HMZkQT4wr$)kb_uZV%PD}xd_4;0O+0HZ`>0h;8O zI^2A+{7IYlA~EXy#s9-O48|sKl0iIBjrFd z&4>cYna#JOuh+IlQq(>jk+^&um+VdmrSxNqb9ACCIF!=2o6(;Hzr`ru8B*?0RzQhu zWNyo9$Kn78;XA%~pYJBF#fJI7>tY5Z>rM^ES{M)Qe|$CnmSQD_F39`Ud^xNrr-o8D z;!k-)?;SCwiw-VlY_iC@oFGH8r)_l*wzfWgNS3Mf-io@)RV8slF5EJS{dM7Ah7dnl z5hsI&)KZgXy0PZBoe>4PT8=u(mq_!%kbD~zFviR0;1hH!sXOHt_FJ0?niD!h@WJy{ z|NX*BlgOfG!de@waYsMoZ(<7^w}dQUnIUvMA;V^>2&Y)O4H|7E29$--iqX-+k)CA{ zpIKnFD%%+DqZuBCG8m52rtv&~a0Im}f;b!%?r2cAf75<=X1w(~b&;n3>Sei^$lXR# zPrv-k398tm?q}Ac7(JU~zXS~q+mHyGxt?ySoivq3sFMpoL%DkF^H1gSQ-78`aL8LH z6TgU+CVL#DCciMZV8u5fVMXI0_X;20`H1yNCpPvwLjS~S^wT6Xb>Pd`(FmW2;N$>4 zC0oRR&y{bYhR%n+-(BDHhIqba%c|CA@CtFNUeXJ1{IWF_1YLQ4niCXbysuZ&;d+$~%BLu8DeM-1L zcBnra8OeXAc`W|uYCI7wJfOVBzIigR2{=hmd@{m&fd#36Anlny;n_^IFtJ0x5$@6v z&k{0za#6HLgPft`Bfs__7CW>5$NS?W^z`U(_IT$FxJzQc%!=^D4eKU|qXDbk+~6S$ zktI3n4Kg^`)MH=>H70MWl}dvGFB_V^C`?hMioP2PzvM|(a#yRQl=z4V1_ZYk@vDbr zbM}V(8lag-VqjOh$&8e15vNJcq@g}rpQ~!3C`(B*qRS||ts&b3OX23dVp14n=vbRU zA=v0Q`%8nskd(l846VKOUBgzxMR4QP{@9mt>3iw+8xrQbeI(VlQllA@N#W`XJ2PH# zu1&Q@1n*baDG!@Sxs#`sB(S7Xf(wJ`1r-^+>eta~WBAEKDZ|>&xCPRs9GJ^bs+jr; zC(5N7T_)#k^bu^s{z}H8BlInjgBvBUc^|6;P1Z=A#XQUrr|%tS;d-31opCjj-fK#& z^(iEcyWr>}Czm5YBv0V0Tsfo1In|kNz6414)#&E>>M1}bvRe>{-WJWZVvBN;jm1JGbb4c$L35C4cL zHMr$>@3-rCySqJ(39o4F1!0GF1sf?h&FsBAqx6eYeOTR9SMI!*RsU#Z8ijWvnO5+w z61Ly>Y#B}J-(F6=LvYxYp2+I|FuLkv zMSCIVVr6nq(U+e0_xQi|?pBlrTe3GUC&bARh%hc_<12IpRBL8n&5wTk)MyPs{bJV-3*aI3Q<{o z9|$=DJiwgs3g^T6@gpU1=|V&2JD(-*#RjI{esK<~NUn%GD1Gqn*TLtU^`E;>F5K_z z<{92&+fKX?C0iOm!4J%`+jsdbG@t5Ml&2*M;Illw_Bj3JmtW9B_ARM$aq#Wd?&puJgj!0g_0A;}IDA;|0L+9_JFqid zZHaP!a7+$ki7eo@1a!PDz2Wi|!&A%P2NRY1P@|R>tw&xh;W{V@WGa&cil(|U`E_nX ztM8Y||E*yQrb>Vml!{1LyG`+8*OHuj`Ly>lCAUTQC4;E)Y08Ck@iZc-D-hVs8v@f) z{->Z!@%bDOyyHk~7X64JdNKfA%C)$*cs-=5)%#6&$<<+GhJQ-}PceE_MWu1viZZ}O z-@NvcC28d9l4;n~9vSQ?36wk{h6na9(u`le*!N)c+3wJ%0l-+HN7WF3C5=){6~tp} zmXb=|=?Sk=6uJc?^Js5EVk)zbyNb3i@vi5W`l(` z3Y2cCD+PYZtyO0K2(mbWQGPDmWQ{!{T~2Q3ll*j|kRBPv>6?{aJRtN}-IV+oL(Vp& zW$bcJi9IF(Ty%Mli(qF9u%v-zH{uA@a}3eLWU=U((KJ62`$@w?;qWjDknTd;;rM>e&15)(Q!QLRF$NNS(N)zro)hM3E} zNQeYB(HZNDYbVPnhU><9!{c#9)CW{NC@=2oi3 z>L&Ay7#&0i99nwm9o?l5HBT5~p;k3J zXf_E+lPybYJ3n}Wls*xVuqjR7k)JNhI|zG&obc)Tocael)qN|-D-e{QOpE?>X*PLb2F|6k0{%%moeoHa_Yn~*tPI^Tdku}5ue@3uuW+f7T80Uh7c3O{+`7s7?0?^fMJBvQzYN1+F5jbhUX?wUVk(g)XJ@{v`D73- zl#195{tn^610W$x8{Bt46BymCSh44KtXUd9v})!AUR~`=^>jfpV`dV{-=-0MCU6Tk zCk<3bD3j=9mOnE6n@)L(CnAl=n(NRhJ9-^KEx#e57st$ZcviXYw(6_2P-!JJMZhoH zAU}r1wZCb-xwG!&{-fmK?Uz3U{u|MCfB#uAMLT^UR(RPRS^=by)1zS$+@k`%#w3Mo z;OJP6z|8p5?eSkp-M<> z@VET?@z%%&S}z8xw|%X!B&A3XE6=fbu6rMoKA9{$jK2smx;XlAF^%k*?P>RyzT^EL zmX6~AfyD)lA{xfqEARdt!!*Gi4Ue{Zyv}5sZV03qhxBqj;f;J#V*&-i)|e>!$l$e- zaobBbbPk_&xaq@V=)vT_#3Akl75kC>F|~erb1-DJjq<;skGB0De1%o)3dVU1Re4Ir zd>DVn++fF}hXG$L{w95KVe{Z~HfAcRV#X_^orn`B{nD4Rmeg*hL^lEnKwg4y(Ipg0 z0J415VV=%PFUwdonOZUVWzKxkZ|!h*H3#Hh_XCQd>V(WMima`=B|z=D9VA*AavWr`9?q zh?!gQ?|sHn2j~f&N+fJzD&ylKf(g^mV?P~kZNfypqBO~><0HITuvwmGP-ezc>q?sD z5(&^ctk3}JdVv*D!OCY=%SVSv&QzOR@Xc{*6Xn*ts7FH|^BED3 z7p9`*tqHv3G+vo)31?3eS0bjb{b?{s6^vJ~C0;4=0PR%LHh5iiM%JcdpFwJ$;o1i? zX*i#?cUEr08i?9WL&K|qAd_%9s)va}APh`kqul^PhyWH{&NW?jjUC+bRkj!51c3GMh$GrOm?Yq;!|6K= z%MX{=L2Fogfv;dVIP`_-ZpJ%l2iYV&aU@qv@&Ci+hYG zi8-QK#wI71&}M733KuUcx$#t*Gj9MmnH551_&Uj7OQpej%%O;^ARwfL0CV>Mugtu*3Z^J39#;w2D>b^r;{XO;RM!%Pw(fL=W%(KX8J+WM46Mp;c zjelqgJ`w;vvj}T#^ADwc+fh#^LF*>wx2@+J0ZoaJG7p5xeHa~!@T4#CepHHRd|ykS zwQRIvUbmVm@d0`g89BlgNw~FKSCZT4qV(zPTjEOB7@ZZp)0J2LMh1)C<6h?v>7HdR zz3?%3%6d?3RuZ{U@sD}Fq{_2_;;wXJ;KZB_Z45LY1@g$PZjHRJeMDPq&J^Vnfc~Uq z_R+16g(*YS@8VDPt%i^XV_m_Mwz!{dGnZ28Js`xrYR-L=Q$d2Q-ve>4iZ?!sfn1rX zSruB{YHau);HK>7p06t=w$3{+-8_SgOR!gS)8QKPrBa@w7m_hH<%_@*T}R#dT0OL* zTy_Rd<2Hg1iMC#E1cP+!ZdB0(2=fOF7@h%Hu>^a6)&Gi;k04p`2d(i?`Pd?Huw&IF zQpIsp$YpLXdP`MzLh@b%uJz4l+)gfCIT^#0&FNswp3u6D};+iUHgL1lHqbvQz z?u?l_@Cw^RZde)UE53|E~M`;R7dr zGMp)2{L}SFspk5XedCpir;S{CT(-eu71qTuu9+(6Hw^pwDKxHbTTk3@vj8HRa-)Cj zv%=X%y`;bWsQm;akOBj}w95WqjR7vHC0kH7-RGm|ZwpkpLcoanS|;Jm)#0-i`9R1Gu!2l@NyOEQ(dX@bC-% zV_3h}vzBkQ)(L=mF#Gz@70rVhJ*j7|ScL0$jO~H`sOeCbu$D7XO2MN(;6MaBSc7E{ zk=%ZmYRWA_;=*k=^eHuR1oCtaBB$T-a#c1d;2ZgbIXk3)XH*d}jJAR2RfDZ7y#!IJ z$V=;hST7}mNFq}_Uc@p_sUOU(2vl$#7%V?LkaVEjHh|qvk6_+8v?k%hN2cCbB%(%HBxa<>EnbVibmva?JF|b=mi!ntJ@pb zqHIE=S&5U~w5|(9sV*mo1tti6vlh2Nfe3(SU5tFgL=HIGoNGr-2{&}%oeM5Q0*~f& zF~fa4GS8$oQa_o>+Iii6hn=|hw8-Yrz}0|oUy%5m z$b{?W(7N!oYu=K_jvCfMbU5^2QL~PFP(K*JWjjFU=iPVq?OJ3lJcQ;+u%eMt%@Y+7 zWz{_6l3JPiK_0bZ2}rE8$q5|_Z!Ygx(=&U=1xa?)&LSnLIU7c0zB ziJzOGvY+i(YU(glA~`^tYFd~#>ytEWIt(pH4iwM^0$@n(q?sVH_A5udPtq{7ouAor zbd~?Z*2<`1xiB4N+RhAmE*#YH(Q#rgSard9kCRpRs@<9$=psU2PbV1DoT+y!{zb=G*g?H9KG>l8OVdYa#Fe2RU& zOp+N8uu`Vgzu}FB?|0WK3NfMvxol!MQQ8eppC7IZ*c(Y}>mljU_4d`HXGw9z;U~Zw z2HKr|{;zr%w)Jn-hm;RFx4eq8f&d`*sstVJfOG1Horjj^7>3Z`PzB~J%mx?0cS&p& zL}T=sym8}7<^soJR<04mbpN!swed*`zJ7mYoz_TagP$@M4mt7y9nIsCZ4Z)dr>6zk zJZ3e4V7xp_ES1YK3UF=1E+NlmbQ6HDWH|F+tt2pBP@+K4O&HH(`U)b9sfqyxVC@A! zKtQHe8>btp{Epo;LBy_4W7$^Esh|3oBGv#6Xs z^_Utw@7YflSC1Q;#X^tBgLyCMZVrAQXSd91)Z!~hiuMiCVUHuSs(8@O00krnHnfuZ z4`;kC)#HzEXs*|@G>-);W!E{KTm(g@TmSd`9n^7x2z-+NFwt^EV|pE_5VkE5Akx-c ze71mVvR7zVDp@^+E6p3k$o0pmNZlF5p0erxS^!`<+#A;*OE~vovt>d=6oOk?;GJ=9=(a$n0H6596g*-f@cTo_q zQV(E+ z1Xu1m!D~m?$lOtSHr*s@mNS@5qcirJvj`x0{igv;W?)85Dy>MiMM=EOL0smwdOsVr zA%XgTj?TlMs{irhcX6+M?ak%d^V(bYa&e7ouZ*(0M6RN&>MmUS+FSN0l|muawYTih zLKLM!OY7t3`}-Hp`|&vM^LU-t>-qc!9&HC-7u}P4N|o=rHV~AR={01?*TCQ^xYA7H zq$7rmhpZ*sOv=|EyQ`tXW&5yzKJN_4Iuax-gkM^8^bXa)*&*$^9dckm6}5n4VC@`2 z#`7DV`jyH2yjgtym-3UJSHmN;-8+?5^rJ`bG`)SXTH+l(4T_xA9ZJ5~LOZMWV8m1ghS$@@N$ ziM`)Sno;nSht9`R*EW+1-`)uPEm*m?4Pt-B^rcJ;m zokO^ZT})SLzs7^82SX@k?_R8+}N`cpSI!h##eQA%U>sc)83i( zwYsfpqYxSP%vTO>rJ6dG_~*yWpgNE7;}#-ejf}f%?qwtr)1RkhwmZ908amz^1Wk1c zf8B>m$}^R}7^s>$ZIeg#S<`Q%wkDZ8mpx%bNz*n9S~6iyM3wd938g)W8`d;5%A$+%q@&oZf=vOawp zm!F_ejw=o;Ry>S+?^Y>#S?;}+G+9yF%odPOmUW^BWd?42XYo%DbRn=KtY%vzJuZIO zS+vQxx>M@sWMntrh@iw*2b;}*=kxr5%S%NtVulu?Iq@O>DH8Vx&s{Fge|Nid>NHNu z#wPH$o4BwVa>V!}+;Xpdi0}NE_S`1wC$pZrop;xam2Yilw0y}iyQbuI>jx}2 zjZZ%$F9np3n;H?z-=DMBG>UqzVlOvv+~e_BP9JO$dA>U9;>3-FjtQ_F;=qBU5Dgj^ z(RT{!IH~1o4+<=b+_yo>p)HvRQ2StxJ_Nqbu3oyw012n*V(?3gSr>7F%DNzK-OWx) zr+yH!E?Y9R#6L|R$1|UyDi<)1V^47p#PQeb%8(`SJ7)cmROiz;kTT+)rFM3JE6^~b z0Kok=i(1ca$mve9RUt~}7%7yia?gN745>iyy8COK_ILw>Ddi_JZ=lDEMOp3Lb<+U~ zE6dfh>jq>-L03c0Bbf+1bpgi5rYpKFmGrWjb4zY^Gefl-Cd1df9{|53T=KaiM!S4*^}Qs8+25 zaKz|xC56nMJudC+wZyfvrFFZmUnX+P72Zj1wv^Oi2U_%V<(!|bu@cBA){WYF8yO)^ z19|X1RN1d*yIYUlQ#vqa7YaJx1NNOi;i9U+V(8u|UrCx`&PnnGUn~X5D``|NvS%DcYv?2be6;Ombia1@L@|k%e;jWaW zV+De~kO)IU53+@32ty`60_ZM_jBK~IAVEl)Rb4h7(hMidJGo%j`z-{`aez}N1A3*K zylL*8zAVS5lnnpV3xbNvNxytDYUDAN57~51F~kK-j*K4`&mw~b>h|@#=wKn5+`#S+ zK;zTX%D^x1a#bnRxV;~eD?ENsJcl<8)vzJw>}rew z)rNJTMWLmF6yd$94{`=glQnQgV4>w3K=XD0d;56S>BR=^$&)`lq3HA&R9th$7}Q!* z_GIO}0m$8z^OM$Lx9&SoV5AEeU;Kr4i)GARHA^+k%V2+4Sr4uVP-wgvrK3C$ceE%T(|e+RaxxcbZzhVzA5`- zAAVQXSjpQ%5g8LsZ-5__3nN4jY8WF8U5^WYtGF+ z>(cwGkFgOd1@ifhJ>8>?MAOEj#>(e%6Lm>(h+sdQ7+P4wdJ{QHF;_Pn~!k~PM5 zT$flgn>Bh>l*#9Z1(FKia#0Z4e*QsW>G2{xb9(pfcrFFjp6PNiI{d&$3g8IG1$z&c zv)+@yXAxq9L|6CklqY4D68b%SSaF2Bvd*CN~o3Xr+(iCO|bK{qo z{>&CVKtw=hvC?H_yMNw3ytn3dvd+&saZTOy{O(azJ|I=&Oc}h%doNvi{rJTB1sOq& z+;jZ&A;2X6e4coLEFv@MW!+T_cPR;CITp#vXt$P*WQ{Ig-9N{MO9c&U(V>eQ1Q0>| zZI)LGn==<|5n#d3S*s@M9vh`6`$;wQ3b zYH1Bb71j;eLsP|dU%hh!B*Iy_zlq3ERk&C7+sn8<2rHshYk-3Ss9?|{p`R<*X1Fo> zQ^IW#$QQ#6JTK?HD?!0&DDeY&Z~y0X*DQa*sONpPU9$0k4r_B+%Na_9msxDEwSMY0()Qn&K3X#+hB?q;BOz?(LoBy#OcV_g|6VemAjX$<7%_D0+ppL^#DcQGNu4B$ z0}(yHz&^OBn-c3V9t$AVV>+<_+hAyM> zLjnFr`g8_>)z*PJ8(f|MuqS{83}AI6u;c~M-Z^t8uhUQ{Km|Ek9NxmkrR=R;S>k5?p-2NFizwoGp+;OJ3ZtUrQx4;F>qw z0__?0AmH=?zqgBKjvm~2oz8*Lc>GRW>jx1@emx-dPaXLSOTBMg|k`; zwugp^Y_sVWDOa@!3J>t5?ns{YJi9?wty@tSj*%!S(&V*bJY=d>YHR$q2z$^d?O*Jk z-sL88faLY$D``pl=^`Q!C~KdW-7X8)+7KGiQmDrSwcK<5ro>P^`*Y`yp;Ucwn zy;4TbaT+P{{L*r4EqhL2e}G_}Unh)QR2!XVo8M=rTohEv3oEG$zqMP|#DuQGBkDZE zbH|aF13gJU#Qzncc*1!e%mM)I8e_z&2sjV3hLx*^^+5omBq*a}DKEJ=hk{YIjZ<77 z;NuQgdY%IR;S9J8h~g>Wn)lRdM1)RkXchjdyt(U^p~ZXDQUon`e!b7agXY*((9s1) z8|tuGw(Gdc*|5#R%nB0&w-WJ#S3OXAo?wW=Xso~GDM-9N+#u!_)O2q)dX{MzLzOQ& zXW+?y@hUX|flX{{Fwb5%HVj!eWYimO7F^bSczL7VaAw_Tp9HM8G=EnBDuCAU*WlWz zNkXN1rdZu4Ui$EJ*Fj9(6K3UbfwAwX9N8^84cyQP2hZu4El?@B?>PxxM&*UXs0I@2P)-EjR$W+>$i}!QDF>KW}L^YsnFI&bs-M zsi$j#8xrGwh%2`-+;%hmM>S@HTgYO~KfGtR3XXBP64U?HLQ5BTF(B5!{o3UYOHp<% zmvv&OPK>1-$cO;#VCRq{CBsGRqC0Q-=W_~@D377HK>GmOL2d|u<97Si@!6}L!gia_ zt)pXOJ1ymvNyk>RI#-n;SUTW3_QW-B5EI@JEoq0-iiM%uac_ko+rp%sH9ZhRe<;yb z&ZRK*>fUE~$HQCFs#2TSE;L@GqS z;FajNc2A2@Ot}Y-%*!S4rlrNWU4JKWF-|f;|LmDKMO{Y02g90U3qts#GSr51=sUO1 zw#ORA@Stjdpv*wQgb<;J?q_3F7+`Yx<7p(i)w3@pkbX~v(Ze5=lAhwKm=x&iCZDZz z==%6x#G|16$4e@oSAAQQ3fC~{)Qh3b%f1hp53X~lhv^HS{E74m?~2~-Qv{c&xRpFp z75`!=dQwipu*6%WGK|N2DLi zoBfqH>l-w>EGOgnxbz?xwx-}_6sk8a5-naf&4BqbL-5Or833ixNw46^tZcrb2Q^9% zp~8r+bLI0Al`SQeKeT@HRlW~LZP5E2Yia($vBcw7>?rBcb!Qn&v@iF^diGF zQ1uN#$y_TS9TmQSP#Ypbdu-J*in&~y9x+q;OD4T0-hoDyxyF@&RnFW|H4^cwNKS|G z(~a3p#Huj>=K<<`1b}mIQ-i$e^)D_AQRkOx>aDyN5I7n-h!vzg@9bvrZT=8$#Hb5L{g^HVo7tliyWd2Yo*yF~YKF$w(`SL^d)fJX6y}tJ6pZ6 zCoEt8x8~OT`sdwrIg}iN%RvY`OGjNW25uGo4eLSG^S@|v_PyTo2@_2`7A_p~i^&%L zmT12~8P8xF8Dw$iKRFxnyJU?2;Cv|mb!fK@!{2_q9r_o&a%@BP;J@cDYp9Jf6n;T| zTQGNT(Xh{*0++Nm`NZz9Z||~hzGw+D7w+H-xp;cb^b@k3HJ;5HjW<1FH5GwcqiA;M zt~_t&243-^4K|#ilbrRsXZmz`Kh0Z-CFzzsW)5s|s1`lxG9r^Lm|l__#EuA^d}%!) zPjOY=Q!Y~y0ak`j12QkPKHQpn7^v!6+H*D`GLxstU%c*EJix{6%PkqvGr}8V?jtU5 z(?ZJyFC#l!Gk_uZjWI}?1~!GS1%q2T{acF z!ZMs7m@$`}4!NYZ*KUUpLEop!nQ_(i3v(oSUNahg7Bc5Tex4yfE)sme3GT+F22~DGUeLsN{6X7?aD$d6-EPLH+nK5ydND^1tW{AtOb1rf|ce9@eaZ^OzF{$fe`J-=j(QU#|zcR9S@#OHyr~HMf41wvz0%WE}vKV zFs9WRQ+%3wt>(7i2WW@jenNRO>u}j@i2Gl~2h7SKhmZ@mTwJP^teBz2eSI8%ds8LU z2Ti7*W5!EZQ7vbB7yP6yg{d@*3kNR0f8710WSPG>rN;@wtIDG?Vx3;~%Wa{ZvkJ}G zy*tK~Wx24V#?%||keX8Mhi)Ujj<2#k-Y<3b7)wZTw^Vrrj8N4$M@z|V3sz~N%>f|LRKl?4Nx3i5l#y>&c@4-e83HX=N~B=Y!=&4f{& zSgWM^C8xDhXEv|auN&Kx#GWcxS!aN6?-M`S>Ho9l5L~|<+p+A|4mEmZxL5!B!}RN4 z{8z3<7-e3vpFuT;eM=CWOn7x2O;)jXxs5(5_>-s-AB%s!`*!J>CAu`D6|j*}tV-z| z$^$-EI-Oyb)J+V(sI)1gF%_~$h~<{(J_!&a-AiRLwJP$r1nd~Hr;*xngnn5R?uA2C zTtoyvYD|#LLHVXbjZol(fSo1M`Fv0dJpY*eW{s5$Ge;7Sz1-&6rQ?QH^)LOge;yNV z%@AcM2{w+%TOo5c>tOLH0{ms=C24FpOQw)Iah#7>HY+=DdVrRjQ#aOTH&L`6+Y_N@ zaCX|w^Aqv@B|G%Au`5eE5{*8Q4csYZ5NIK}*xI1cYBL`#D|X^6j9^LIDTKZ5yTkzp zWODM+d0C&8#$2|e2`zHFV2#9Wksp@C17$BhHg0kk?@xI7(WO$wLtLwB6p}NA_G%wW zky^BqP(PQQe0UyoLQPdsM&*$rR7~I-pYqS&u|?(>aQAHqU^{;eRNxdE+6UMt>5xHA z^_RrKu%i|Dptf#!L`3{b0f18Fm&9oNBZJs7C zP2!@4w0INxerZoR26x5ToGX!h;AY&o7&wLdLW^Bh@9=lGlUE*|1G-$7n78qr)LnS# z(eJ=ND>PX%KZZ4}J$QNSm@V&SC$%klY0~CEu4vAuzjIsM&_1Pe%q=bZvWsbzL&u`q zr^V+Z(TQUvb5Ym*i*3VYB(?LMO{Z&E z+~4POebwJoRws$0`iN>}eQgh?K3i<~&0p`zKRhYx@(HSI{w(f*O6uOeBy+CoMYyo} zb)U4-v)3M4zIJ2nXFm?>Mzv;SIEX!AyzOy*9lu?0y#+p8dACLO3VNq1EWhjc>d!Y% zpNofg^n5Fh)64$xGbZtYvyFh207fD2-lS($oO0utBnNZ`U3|IaQyAY|@37(V#@)-` zD_-sh9GyzTOcG0dd^h%7atvSt(QNMi%>RVD#H^-IKQH&&HK(8YYNSRf_Ho}`QBZwu z)G9jUZLL^$k2}bLDl*hP$dxWbcF}!nS8q|V`uc%k3vX0%y;}jt5s?-dYXRb8i~x@I z4ImnKE^ifh{;O{6?&={41Dq{Q<6Xcg5K>C78)~+hsylzXJv-O;6-bl?13%2V22$ng z><)P-1mcY|`jB$WcgC4Z{76RphBHZS`Q+W{FlTEQ?EC4^Q1x5cr}G!u@)VPQnmJyc zFHkxhQCX?Y3?Y)mg2+Sgk=Zn@tbVa&6854Gk!~S3sC=Wx);y9=!iOOvnuLPDX+ecT z4oo;30m2rkLvNiLQizLxhu7B;rtA-CPUs9l6lQ4(S#@muCju-1H`s0)&G`KRx1qTO zg@v(>+?4|P=%T|q`-Z(x~ zqJir&u~E}}W8f0^0q3Sxs=9`9w&50k3T3v=^rfw}omW2lN&OHqbEFt2q+KC^kZIhN z0b;g}bzq=Q3v&pfRW&w7OdCNnF~_m;F;EqSxHRK+=M;O01*5qSE5VXZwi!b_Yg7n` z7hO`aa?A&0B{%D@2VgCPwDVQuaw}B=Idt!c6-=+lsT#-tbe*X*m3^uhR>sbyX%;l3 z7K(HVeCKeeg?JSJ;kk0>01S^otR@yIMZL~u!jU;{gfQh;vq%XQb}nL};hn*VB`UXS#00nG&2iUQ9Gxj%&rd-$7D;kLg}Mtl^3Zb}KL%$qhRw z9nJc9`nu?7(zULM*paumsZyTP|BduDxu5e>1VOlo=-eWQ9aYUg^Vc8zyf@evW!YRh ziPzBSc;vUEA?-W*Ou_J>zk0A+ZrQ4%zILYi`hW ze$2DC67yy7M3;u(bdETijx<_l6Pjycj`&?w{Nb7iQ@!c4Z64ZP@X=*R&D><1%}*q3 zSI9cUkfyveW+jW>2Cicm3+4AJ=~*Z%d%CEt*jm zG~n8>tvMSW<46x8hn~}`R6b8$=84DZw)gnTR?K_Fi^YdD-lMy2yLDTc#5h%x1L7a zq?iS8RtDuNtq<4m(F^K+hS0L;Xn^ z&q_HfW?4;+IDso{vH^4jSjLhH`#XY06EXc^%OI(ZQ>}$vZJh>PW%t=Le}752dr#t0&@kToRjc8)t)lUfMa5cGlPN?>2mpV-}{gD{5O4+<@936 z^l~4Im>~!vLh+_UMEUO{QE4*Fw3--vw9fR>H@xV_>5XsGi?Mo6JNR{p8Sy{&qtP?V z4den<@Rr}Schby4W%A`8P+fy5n-+v#0eymGx);{%XI&Ixj+I z#4V>qbf!0wo&OvsjE+Q}jmUPI8oZ#3=zmPh|y zR(TV!vRme9j_qS1F=H*g+B-lonFE9`!Wcgflyaze?`HnrU=0{lGk;LOoWQ3)jD-As z~mjJ$vq^sekD>0%d>~4m1ypRwS=6M2#yNC zgl9vGXSZ+Gyi$&=eT9#8jIMgjm`Z>HYlBaEd@uI!2v*A8(x}oLGHcZbPlN8X{yefK z@54L{Uj;a*G)3Gj49aY&OOXhmw2HwVi_pJaRZg%Ng($I|;=HwD(Uf~p@s}M}9wI#- zF}aGHTstYH8&18r*i^ZaUVW5KQ_DzcvyB;mg=Ti+c*lddl85P%}=CUn(qBAA=2!AK5}NwB#CJ;7(R0 z&Q|aaPpTorXh-8YDf^vW`Wk^{$f5mpX-lse?1|lAvjE2m*WG*^N!^;#L9?0lw|{7Q zH=BO<7fCZXs}<|c@?*bs{Qn`;YCOnRm0DYh+Xi8a%wHmJO%5d3Re)xE7JFI;_O zjL-8T$Xy|0TKUoYsferw*QQYEo|I_Vz$u`SK)P^GjN};^er9Wk_VK@`o)2U_Kbs^F z0jkFCU%s*?x1>2+lcWgqV@ACvbVg6uw(Sn7V%NmWs4Cd}ZD)7;_5DeO4vRZ__O*GD`(uhj%Sk$bSqB1v%1xwG9~5&9gMkN5F7 zVWQ`Wdver=2mMzarKS980CLP3Lbo+ zti4rb3l-qHuVAlDlZxg`6>x{eM7{EMQE>!Bynl|I)$e|I3|wn|{C;kHeokh!e$_bo zhcu-uA4fDwesJSr(T9xenrly%W#pbdx#Zbz`;f!uF;KlF3H+^ks=85SUNznlH5YNZqJcEpTF>8=Tgj)HNKemuW9L2SU^js&@MD`%eE)GpyRm4R?66>&`uwYpLG(k-z&S&Ts`^Zvg>U)6Zo*uav#Bssl&Abv<%pynaZxZ#G(cC2_b*hq1l%4Fz8cj%6Oe&O0uFNiS zPWcr-(%YMElx)R^8Z$%VXnbw;gt2V+ILglodJmk@mNhm(c0bC!(t8kC-kr5JtS)sYy_LjsPEI)&m%Rj_EK%&H^TF=| zS>0)ONK>3`ZCSV7Q|_2B(oqmB>B3(}_3eTS z?^i{`R(TfWv{~{Fx>G)j<&`bp?f)AUmcmo}E*kdFSqiM&EwZI~ZPez5_b=_o=REOo z3;IFldvlU~pXBqm^(H*1A9+ruJ^6hmC8l!b`roI=bC1GF`-NjE9BwT51K@@_FU;v7 ztUO~yZ4;Bhj||d{Ygorpj)jv#b(OS2hO$K~Japq+kT&TG$^*Lc&nhga#-`->mP2{l zEE^4}t+B82PWdb;A(6I+iX&mBUiV|y(?`(MX_3TvnV}TMZ4rOJmvrq0w_MpPLJk}* zq0b8O_&d5U7TkHFUlVrL`RA=<%hR!xIN!td$u9ou8TiPf+w1)&L>`CTpe6&SH>^^A z2@Ut1pX8ZSxw(2d!{?fu>T}!`^gb@vd8Pdb8HSgvJ&1lgb35tEC+=!L@D(l-!-M&u zTx9N+?U~_0$kP3|M=_sbGg$cNlIr{gSdyNN7XO>*jy#${u9n*^o|IL?%-VXnPF+k4 z%U06yIyI@SyjpkZ_~EgK%e5@LfhW$i$9YDaqWd+?KD=M<4T*Z%YJ*(vvFLYgMo)f~ znpdWbvt4a&k2x zSZ)M@Mn=!t2p^Wp_@)nmNn(Av0imXPFD-$W%x=f#C0kF+FH^J36t}N!c6}EtP}3{P zr+r^77)CAqe^pbdeMC{Xlb08Vw_W6Oc~*rjt&7aJp+<~j#9A8)s^5(RP@Hf!4$t^Q zJA`ZBK1suzh~bjQptV!=ma}Sa>M^EJRvc-2b1=3|PFaA-+Tz@;J1$HMYwaYFc`St2 zS=$P-sC(RR#hy*Kv{&8RxrsOLix@m_{%H9CU_#~GWY?8DVSTbEEnXgj@axK8`1vJV z#dT8T7y}*SC&G7y(pVt3p&ZF_@@W=;6J=Nm$IzZk=x)*m{se(?boiCPTD0oRoG`7b_NZYK{~kN~S^&f7>nXNPOBVG%CFCwG_$i~P70$FK2H2K*a>r|rzB zvQ{t|H?`Kj@V^plzZ1v9XK*ul9kq{<+9hdKw|;<35u{y6VNPsM3NbJe^58~d(tUN5 z$%M?*x5|NMMt>jQdO#P+9ougXd2vg>mvSp|-A&w3Ear|S0C;*K^EIcE%VP_IdT7(a zh;loE!jZ8q@O!~})tyYsP3KHpsGzj9XaOymn!qVEh$D}oc~vGWTsx9BBHP4%Q$8wc z6SdM``tI)QtG8nzgki+Y2!v=T!{QNd&EGO-Zs{(=QhHKTWerrvdhhc+M;#A{&offb zC(pr#7e<8p4$5)2Q*{T~a$+0`tnK=F4PVDwK~2}mVeyvg^!qu1YtBW|S7GX`8-ogc zC^pSl5<6@Tqc%bu1MV|?S1TuVp*Ru4!^r1Vn$V5Af z`}L)K{p7IhW@Rc^J73xf-C`3SF_kcjoM2XBwL&-Kt}!)lSiC5aE$<8bCh})3OrZiu@pcH} zYdZ;szI{b_fZR*1(lZSb+iem)Uo3nh8mhUyN$KlWMloO3+Z`)?D3tnZZOFZjla<}D z%X&#E%Neo}Uqj_Ze;X(-*kP6a9nK+%dT;)7ckWD9S#=uVKHgS~2lbv$IK6I5==$kU zw3n!8>LIVJr2qT+&7H+&3%#4JRUbrUii*x2)@o1uYRbnA$aKawAl_$jSBwSCL~Gov z3*ur=x66lB9hH$1Ti7=vl^n`3p>A|RgBjs@qB^E%=>~W==<_?fE>=^ zU{o>Vy9&2Sv*lX;wNg`)|L<#XFdyJ2+PZiV0F`_Zq?N0FPIL5IEniQgZ4HEx z$J=1T7o{}*xgA{nt%2lp)GB<~{>4w=<&CNJr7@N~8|#YmVXfQ%b`;41(dWXd%v=`? z4Io2L#`z*R3|o7E1(GxHrYJfHcH7lM8Ua+bJDySjjyqfJcE{b0yoY4(gnNQG^O#>H zZ?T*Zc0pnXdZ54D^J>91k}Lf=Ha9N7Ln~r?gwDY(XH!mpyeRQ(r?E>CtseB>eF-*L zm{IF@lpy}R_Y=Mm&FekWL8jk?6$&?~J)dgXKU|b;DiQ=D9M(hl_5}ZH4@leicUQ2N zpf^LPviP-%B3?hAvg+4QYf!%(KF;(-(reCVrh|jA#Pa366iBm24&)9oWhFp{G~X3O z-*m3nVD@bfzt$U>BErh|%b#t^4VpkqBDtl~AYV5h;SlJ`E$%zp|8L3urQDpFgBL;J#T6rx>+`dZ0$f5T9?X z&k!vIvx?MqqRn*^=vH3sB};P&IgLbWUu2O zBSWwY8`rx@;AC68@}iXdVs@6WV#MT@LgIG$e^M4+8!MyeRwdlP%YM(W3mh(J8Za|&sfo&5yqgJDR^^LM|k%2d+ zZ;LgW>v@#Y)&&uY%#pPk5PG4t&OKcgbCWf;sEBZ|*wjbfp`rTd|3$vMK_BtqLFRQs^0|DptK^vMCNdL zCCjmST}bkGn8xqTt1FbO_OXme@5~d5pC8G9G!%kiafStZD6D(4kuz?uXzydhnIZx1 zB^sjiB$-gR|3dm(8_16{6Aoen*3d;eV7MyBK?wZVBD>L^aeVSWAx}6qXN4dva zmge6k?l{|bcZ1k!Krd@2$NSeFNr2e9&VbtCgR^Iz?v*nIvbMXq29z9B;N)ZeS@^X> zDN#e}{eNN$dlgfSfWOHO{OMWul{g-RS4`~N{m0~Nu)=VXs6924Z)aI|wz%FjWUn-E zsR=mtZE!I4KnwWn&+7P|Dg0B+^iv4;BVKeCw~H!grRokyold>(30OFhUE}?RAA=`7 zxVc;L*+Q*r2(Fwb)9>Org-y9{-#+*JZ|3J;_6yE0rI=11F^s=iIjUG7uvF}>gw$Qq zvyV!1dy6^Gt+o{#xh)&XZO3@fSVmwAYKCIf#3vUU2d zSXs3qki8Z_5jQqd3FzXF7>cV1u`AC#`E6FzxjjmWbFHgu-W4}$8!F@L8+tg zIW1@Sx}@+_<_dZDYl0N(My@`m#gpL~NM-KtmsPPNlYK|xd~FijW3M^q;G28pud$i0 zos~O2*?$T5Tj?ACGqNAanRaG(_+jOH`h4+?-yi>W|fwnA$n)JfPn;1b&Fp%!A%xN9&n@> zB`*sn=4%{4UGK4-C84#fybWj4z{!hN`@onGM9!9rhKxX+cd%pP9`ebO$L(V9qU%`_ z)35aX!HYa3_V+b&JHTMtP;n#p%$ z7Td5*u>J@%mjP(UW2ATZrHN5PQvDmUd@$4Zg3#RxDzj26>u~Tbm9#?Z4}8%^in2RXwThBNYK#r z+zxMrCK_#0=7OJOXgW=7IsSIX%Go+n-udN0N2O?Hg_dG4%BfdH@AYdxt!eD@#T-(W zH7E8Hh<6tU#xE_(dWLO#@=+nULBQDUYo_;n%y5Nrjf@^!UEJUaa8#cbr5T^%nk+~n zjs1Dz>8AkF_D&b`W;;7VO-vrsv5+mF^475nq8$~)q7ic1!$-!!eiCP5NT(sdXoj^1~{<&P&w*_x(q!|;H~zI zTKP#<5sT(m6Oiw@v|do7;N(397e%I>=qr>D^9{@ZZe)c}&p$?2}pN!3N5;4;;LEYeNB?%2eB2b<5O$uJbXj`Z)eMIUBnNqOSMaIJ>v4??w)>Pmc6j@;zV)z8s(eoSot(c zsb5)TzYFw2KKpae^dMWsLL~l`9Mi;fl92({9b%58TROZYY(z@%duJ8hbnZ3Gd0WHa zY^%JDx@Cy60BW_qPtJK9i~mxJKfV)Ue|$87zyfc-&*&Q8Few#+_K z4hN8nx7Km8)1hiU{Fsn?(+u!vju0P2L0=+EDZy*#VzNtw6}I`-b||BAW|TtG^AE3!*5o;_)Ci6_W?g29N|GsNl&e~Kk=tk@0F8sm_siC zJD(_18(CKTOHBS)#wjQjp0I748f#b|Kw7{fzIgR{NTtL)t`7B&J6KJu7v?q&G+&JV z1~{XFRSz4g*%{TDh;Bctv12VzP%39y2EqYMtg|AEp58fcw9!OHO zNQ$O|b&uN$RUI)XBtgc=AQDFRr3&iZy5&kgU68$Yvbq0K68N`_vCZ`{q|~`_-!Tb$ zgo1R0%E{?<7S zv0w*T8V-(WmO;FSd_PqJ&Xsz}Is*W@=-gLe0FHbG8)Iqfsq)>>itUg5e>Q}xo+TW~ z0#{fUkT@eH4Dt^~A2%S@PFBeJ}XL7~~tr*x1 zYW-VQYh+Fw$!PMxyxU-ZXnJ->t3$QL0_iR`SDSmkJ8of>rwi4Qrtq@%bH>enkh)q<^aqFT1dtlU})Ki2ES<+ zJ2n+2yh3zka^tfcRaa`R=L|@oN#Id5;)G?I--zpPgX^T2h_zCzCyP`w9B?i3xXd7{ z|KsRP9GU(fKfcY(4#zh4z0G~!H#PTMxsP1A@0;YRwwW`>+(*($@|H%z&(32|e z<|CMf^X|^tFr^?xdAFGjU8m<{ogMNPeM#C3^g!QbnFKOtad!-v&Z@>*r4)CrG;$!ZB zL1V`;l+|3_vMa`}AK!?ofdV><^vltl2t_mGS}DXF`2`VMEBAp{4wu(lKp0BBQN#W~ zkS4;Rp{Q2MsVX@)#(Q>#Ucm2F;5Z=|-Z3}9C#pMAE}FX1Ehu(^oR&)@5zGkK%O~8a zRO$%{YOj6Ma#}8MAChfF7h$o19tvGYd2b(!apHf}&~FcWSf=D{&TVAl?OG-S?WTPbEr*xSxjnb3sqp95*LT zn#l^7S|2BFtA&=PWz$(nY4qJ2JaRIrtk*Rr@c==UW)V`pn7rK>w@R^}xs8f`?&gAr zDAFXyEBR0wjfAr%J(bA#J~kz(=HtX>92$-Ih|VG{_&2T0IN+7K<&)omY0@)!O1=E9Qolj#0A@%;zxzEKwsb)2MP zt<2`HVP_BDUK4(*{a(1C$aBZ6wR7J*=2i^qQ^&v;{fXPI9YPbzv8eTTIu|Qy{BzcJ zT~>~p5ZUEcXR2JBtyR|=?v{qvwSC{R=%|w9 z6>rYXKXXgTIockfsr%Qw4|5ZJ(^n>J_J))6JrPKFH1L%)_+&A04ajwKGz=ZG^sa)%~Mg7cW{4u?v|L9@H z=Vv-*fA?HH&yhLniqlMYn!4Vm{r-F}-qe1hCNX)f=A;tQ9c^{6ZOpads1q(2;|IM} z$G~lpB>;`k*_8T^LX`$%pJ$VX1JQRmTXn^1I5LqdejiM9H2%MK95x~TvQiQ_Z8kX>Uvi#OFi)tzl`TSAFMh(3Tyk6`tXIcKKd$ry*9hU;B1Wm&D( z@x=ptBr_3zOAwMLZc&e?Qu<1(lVT~R2#7kilyC0M9jeylxXJhQK(}JBhA$*}{I%g-SEeBEMEo8t!6&$1pI66DMLO zcnUwIr-pj=m6*x5TOgy)rH+=Aq#@;M09u|76;Lw(G)LAG?uJE*n#_WOkyOlVOaI&ytaf5mGmWq-`Jdx zI@KRzejA``R!Zer(bQneE4K73Llx!*w%l)q63obDMyjS6TY*zH(g#)fj6}8cHu9Oc z<+3ltKQStKnnsuFM;s1e+Pgtp-ntNugJ4kEmxp7OZ-lW zjn4_0+erlo-6l$FH{}VOjB-?;c`Qxf3xs~K1**?COjs%%-&p|bn%(}BWUkO5C)A9& zaVj%x+|N*bwjr10w08Wc*tNClC9_cYbdW^|1C_d6j+iGK`~l|wq3Yf`s`a0MPjeKReh?=7rpmVV>yKg@bfRb5VuA{RLsb> z6T!AnX~np{Q4&hc5n{Z}GgU+7^<#h(%G(4TpkQ`=COdSL!QvN4Vlz4W2$@;xC?(>l zf%aEhP&=_zzXpRWvZVy?fPga3=LLE-$*3qCACykvA0ifOE6xaC1thQ~#p%fGTa&Kh z-n^O0Qj6v3@I`1YFhuqWWxfF~OUtWC57)^YYn5_Z#j<)QzigpHSBH@)1_V3{U!m#T5Kv>uzQL}snr91 zMRKjHIV;n&o{}Y}!XMA_WY881rWqaf;kIJ4j2ykac#6jY%VdY_WXBNmiiB($x`PS6 zj#4H1j-{ZXam4~!3fmtc&^~zo%PA_?Z~=)dT61SQ=f~s&PCBRDCgc-w?;~E z!W(9Enf3XVGyEo+TeF+Ro?gO3LEWlk>EKn3a-M`;n!jZ*rU%a6zoC-x zE)YUom}G~kW@hX-=dHrTkB0wygA}E|%^j@kqr5jt8~VL6f2!KD_^Zw1+ zb>o-_-&Ysv1e=$s9Fp?!LdUj}+1v)GabGGuWw6p4^E_hEHi3wUZ4B#+|t)#mopCeImE-Z@t5F~3`h>THKyE8pa+9c z#+06DL`T|6r|kd6*f|`8{Zh_3z^j&{i@Y4dk#09D)&n3xR+WBv%FXX96Y^>=!8*4_ zc?mQWnpV*Ps)-4#!A;`}0+5h36_6>k&_sAQ5UEJM3YqR;SW1oLsHcEn$*VGZa@W@% z3(f=r-{v8P{ejeJjMFgNC7hsB1Bxkkz1M+v_3?vg#7!qG@2Ub8I-PC-g!1jk_pUeK zBIJ<%#?m`@@G+5Z%8xC9iInyOd64VoZFt9wt9-9OQGqQ~`5{81%!I`CMFj{{?N((3 z*IhXGtm#SON9P>n^&{~Sh;1jH(tP+$kTo_*;&w9TIt|#aNFG|;YnM0Sb&im%Y==K> z&lr;fGOYO_61+Zvr?X20r>yX1aG_JHeNX_5gB=!)kf#y_r2)_=34Qt}ZFVeUXuZ$x zi3V|0v4{mlZPN53b+3|@w{TEdfBpOGsD_&=?CaaLC5s3ru9n?|Lcx0h4JshK2YU^GC(;s`+0Vi8Lga;!c{; z1-M%8OvE9kfe#LqCMu|s_$4(@DqenCr-(le)py~99>zLq>kOxizc|8>iYA1on$NtHJ+~7SjW&+PWUt=uN7S|97(!y=0 z=xpOb;%XzR7iRN%WFgHge6&fBm^D7hLc65Z`65=JH$&|gUPo$Nm_gB(V}$KeJaH6@6fg* z>3ra{q)G;6YzETD;CD5GOxA2I@Z1|S2w9B5YvTOxDE1*gZbge(yyj9&3os8#{S$`Y zSNirxYAJs!Oj|XV${BmD#SC?4&1Cm<>!G#y8Am+BjvADI4gBKZwl05M+1QlUFWGY| zkVWZW?FZP$*&2si&p&4rg%=cm)Q+*wE%sKWhq!!*o}SsnALH4~a_xVudjHD~O_+^O zZrj?({$9s*Xt*5>&b4yf?7M3ti_8iXG8thKPSe0 zwKe71Dd0NH&Q5Xp>TKI3*n8%MttAi^LQ+5Tg7$(E68lRiX?H`~%B?NSx6RSF>#u{% z_a9+Pe)bopIb#dTqZfKV3CQ~X!U&%X2sRG?uAIti83xTxMB$%VWp%|zK&Jx|kJqE^ zBqz^dT+dCa#3nzDuU1BFcR_Z!07PSBjk|tFT1g;_V(VkxlBqDe0u^705PzVhZ(?o< z6NBjS=XmLdFf8|{;QjyW{gpC#l-+fP0COwhTW;G*C4ei$R>3~7lhcd!qoaP0dR6jc z{J}8i4n}_5zuF1kdo571LXMRH;LBZymhFkh-cp%vlm+`CA(`y=KVE$rad9R`y&ZFV zYOgLAbNxP^qmK$6qI0~@gXUs*$C}uk*J20#>ZhMP$ZZD!;Mkr_no}dJjU*pss?LrD zLd-D4Ia_0x=v^88c#zybAT(8BgUdi`O9f5t;I1TW|&5_2)P#e+I@KZ4g zSLMl2mQje&L1$2@Ha(Ijfn^{8aJRIv(M^507c1`FbH9#7J|^wJ9P z>=t~EDfo00cZzIOTFQQlj!L9y>`25^j7sNQas3W#ICDiX$WOt4?Kb{BgEMMaU}pFT z!{f(*Pa8WzR!2`f#wUK`W(FK|Je*n!gn(<1kX2q9k(I^}_Q1o3u*ePoyo1Q$XzgLU;ugV}wS|Dnh21tmZS3j9Caq6kQ?7}BER;?7k6j6zonCLF2^m>B-xAUHjm;+kuX*e&rpAIy~ zPLaGZ1lQt?DCnO{*|v!mIkjuTjpmtcwvJji6CGx3=vxtrOCBY>5x#wqy=k{TKRszz ziWp)>+e0tw53GmWX=?2Yjm!Byf5yb%!$)gnlN;>dp$3PH$;(??PH&$Jr@5K&djdX; zlX8il;gloY$jn_bCeGN{r$JEQGhP^_Hx@ELE&$w#GDNx0eA zFR$VE7n+|GMrbIvR55w$lz#TY;iz8ml1TEm37(^tRNeF0o~x^c+fYEtTF3U&uy==wqp@I_)rx zkJ%ik%5JKaWDGO}ug?jrI+BCugF0u(qEHN5cAi=rP{cBUCnIj4NL3Lusya0yOKgG| zH^$sMj!0j&bmtfrj78&^s`YfF$VxcEiilc4(58`CAsvok|G1^5>&ORfstxf?7ie|y zAPbUwI}R%fZ){f+r_+*9B<{rqUd{X_9+ZwO%Y`}BQ()7ph6uH&SLn0y52lFVBx4~T z63k^7!xNB}b>XEPNcC{8N6|#YEj|@C!dupJl?TN0la}_(|A8L~R=q0w_!H`8|B|zH zM%A?703*G3eZ^-)K^COuvM>E3^Hy`*;7d4Ne-vLDAje!;`UICWH4=$6b!VlV{CyF# zm_jf1c@B)a8}YnOtDWls%9u5^Gl-mBoq)6Ety_l<0 z`VpBKst)S4!3r50(BB&&eI%Twje2xtU59Z_-CE0ma>6AFYzp0b3a8&Tz{eIJ{cD0h ztyZ`~7R`{8b9yr{rEYS@-^6#V1ZE7^95P;k8u%S?CA%7h%mg-4W+8{L`Y1q%}7m< z!^x$7Sol6LSQdcUtq}^F&bnzRw zEjvxDK*Cg^?#tZwMTQ4$fyFx7`_p-H51|tImg+9qC03PN$cryvg00l$HPqaQ7wa>D#IP{qx@So zW_Iy;sITGYkN&}qKPGvqH&R=rQu1%Yc&a=`DDJ@-1Z=kE7)4%Qt%*P_)Om1-Gb5i( zNDWCB>{)2=j|=E8OHKQAv&y#8y4}U@2R_c8WfX+B_rt{8-0k|aq!UR={pcbXAU?6A zP^I_z=c~(?9$AR))rh%BEh7CWXf#eFrE?fNqoVdcyNM1DPH1! zuTzd_t{)b}m+W9mR9M}mGTzwP`bqH5@Q}?G9iBH1C^#m)9nihcG=WGz#*`$%t7I}^ zg0;`rt+(5$r!IghWT;8%Zl)4NGq-b10g52TI$TMT&cVszLv$uB^!(@jQ|zvcDfm;T z3zyBdq;6Bb{5rEVQ(>LaIH1uySi%s)C&uR%X2%ViV{J0aSd;|Z?Li;U4?Z*J&B7Fd zpF4i?odE;Xq6O%jyb^exY9dT>w*hv%aJ0xHEkJ@6tRr2I#C5%O@F1jLFi60Ad^awC z?1eEv4Py#FLIJI3R?n$4n}MaNWQ*-iUU5m{*JS>z9nx3e&?l@?T}c60Ab>?2Q8R@D zP)fh603Dir<||v^p1Vavo+kn0$gpl>BtB$>|1YxS3NiEsE2=nmZ zJXOtQhFOop;lVIeziu3cglO_;LM!N!em2Cg*_ggrspaeIH7|q)*i3M$hW5?Qned;L z5J#1-u?+a1;pI5dze0wK*w{@()){8-ep(LHjVi=FMdR>M%dH5{j7#oqS~FwVpz1)V zegCa4Z#`&eLLA4DmNycF8PLPx9wu#_+O5oWuHBfPV zBGIGVlcUNT-xBX(7($)S}epx07RsEi~*5iqV>}o~VYSYa?0U+q)mi;0YG>yA9|)MtC0K^-3i?6!U}dLBDLnUEusHtJfT{q1yWhfg}v_(VhvLOSxq1UPCwc z04p@6`?-1eW1pgShi1u5Y2R)c)X)HHpxhPNzd~$`w}i2aprAUffe1scBHrurNtB{A z6NX&FnV{JXvKSM8>Lu>>j00+J>I9Gf(N+VNIx1O=HipFivLY#UV`ToBDf|SCMtTQpHnx5AxTYHjC3Y_15T;+|md8V5!N4a`c z&?_UtrSXIa@jY2sJ|sK++LZH4)<3IY7w#q9iEJVm31s@g7qFMCa6}+6UH7#I{F)}^ zc*yY-*F7mL@Ao8(y2u*f!-AZ0A0;;+Gj56K9ZAnhralp8cz79>>g`+l5SMk1U;p>^ zN7^vvaGW)wKh6)tvWVc)20n>q`a_1KK%W>zZVZz^k#7Q1l?0A5QV*|oU=9FG8&v^y zRce1*-%AO3Xte#zVn%l9pL|vC6RpqD)db&#DcXb2;YyK?>0T0bjK^mxKS!(Ezn*Ps z>8mq!iZP&hVabqTJ_jZ_N0!3j<PK0nTlVavxO{%fpnJ7iBx67Tu*{~+g0!B zkq_|w!ZW2U&Ku7e*rJ_r48#;{`LWy=`uf3pk!lR-lb@P~=#Q9`r9fep@~Xs^0c?1B z?$GB-=@idH<|WBRv7g%RMz*D~Ur*mMsg!YNmDMKucPdEi3sr*-Zx0 zc%XB#h^gM>r+N2|@!`oi6{?#y76)2|2klvkjatM|R8JI1IlU|d28qBV`I~Ch@N3;% z1(#}CCCa3XCK~Cw11)n1cFyLV80$=?xntbvuMF$I2iBuGFgG*n?^QM)MAlZOP1T-F z>mF-{Dxhl*uE+#B?ZKZ*vWfv%Y;^&mNVpRfDaHWV5unFzadspm`~b*GVFL5^;7$yX zDkJ3Ru21lu)5v#ONC|Yg1p5~00vWfbpSQo{;UK)0;|pMWyXX0b$Dx+S()SXg%m=#w zR8h_5PnuUYnRCpM7F@l1&e#|oiR0S+9;8?i)`H2IED;b`WBpF_IKX&52}Y47lw0;V z1l3^QiGV`~hb=spW*j1#331x<1ik>qe&@Zq=UhevT#e%kq+aQA<=SE*?!_T8n2?)J zk@Jf#WlSI|8YULZ(`Uibg?D|H;;1S|$_wvy6!?E5uw;R*k5CD>zw?7XHv&rd15=z9eD#{M5|>39Li#u_&!3^ktcn32&od@SvRUHKg~?teT&FRWk`r4+73L z9!WdO)mf=Yi)aU>_K2rvDYB^ zjH$w{qb^kjI{0R+9jJD!YMLTqY0bJ}PG^9d-fPTY(hP8#<)f#ad9+nzv>e~FyJ{qv z{v-qik_%T^f=$7pW!ffeoCpAClru1vTSuH=u%iL*Y}Vne0-W+lr)W^zL-AnzrQ$#+ zH$FHAlia3pp^pEQfQH5Bx8#%2tb{u!i1X=Qq=8XW60=OxeiW+HtbPt`k=qJ)W#O7+ z;bI5qJl;!jkW7_hw6?h$b($KUWwEY2)E|GZc`Eai?>&ifmeZ{|r%!V`O{h{Hl``Mrcm2uRcPZk%ZO&P7&G;3qGtXf zDYu;cgX)E_Q7zl|RvGv8)wkhlM5Cvx=na?(M<6JusYCvyXdgHeyk)Uw9A3>B7#-SPelv~UD5N*4>5f?EIzN(;ZD%%@BFGnp95Q&f=vSU;M z$FwJ?D_7<3VOYC~TxT7TMRWD|_`2-@wCFfh|3&p+rHH1ZlW8~q_3aQB|I%^koCP)H zTMXa1HC88#=d^J+F&wE+WZyy}9{3e3dZ8aMS)AzhBHgeID%%zvHkZY;Iju4i&uP|kb{=2Yi6WT8MsiDPKA@W-W{J=DEq@4SG3su0_^ zdxIx`byT2JTm#EBX5odi3ghXaDRo$U$aw#*vJ5&;t3>$jQjpD$vbqwes2}U6tO?p0 z?78aI9KT?7wkqxWS7)8VQ}Y7F8vX84c?UuQ zUM)>^%|AuQgR>x2@SaB5_UKkf_~(|mrM`}aTvz^w`jrRUJu`U6uBtGZ+s;+AXSx0)^7 zr_H>H;C9u^N7ncU5}Y7Bh(9w!sVTmljk9o%^SnfwznkWl(bNCR*fY}7R427unv8TV zwCeL~CyXZAf75o!)GjhZXoM!kYv{<)lWLd2N)E;XgD;N@@d&Oao2)Y3Wv0QU-lWLs z1cG0OaIfBVXN#%d$?>le?48a1$H2BogLIixk^fHf(#UH+>5hKp?S6(&Sh$v>+X4dh zOD12FKIlhT8Wsg<(cYWt?RDH>F~>`!T^Mb-$p5;RshV@|cK+|hi)@$I>TU! zY~5n+7lN43VhOhG3#$7O2I|c289xKWsm#6wb+2-B?9W$!l-4;v#Emswuy8qfpoJ+p zsB1-Lpd={n_biv`x{r$c2r}1o(YQgeZs*y2WVy-OdSf|9qN8N#y|*4YhM z&Z%w08b|RH;i9K(GESVT4z~G4+ZC?``(ZET)&WlIXSW=S8>G4PkuDi21=rH;Q}_G_ z7dhxzT&yEI@8Tdk>Gq~^;G{Vg76$yg1D8Y`PZPB2Uxh4WIq=rFlbE%qVDzYzqkyG@ z-PM0XqpSjAyxa!K`R7o>7jp9wDkIU3L7GU|A;5i$27{6x3hTiXFygH9h)`tVT=m%B zBt(e==Eo75rBVKFcA+Q}Na}}S`~*zmaL3pDns!H~17|{P4v>PI9-@0W5{z73A+&^X zsMO0a_tIVEZsCzj^+zjJ^)HnyC(bF|e__=i_|c4?yMdQ52YDNZSmSiqhO6WAOJ_y*8;Uuk^B-H}nLjAL zhZf)*c`DiEU2#{m^xt$rUsH3PqT%UXTdp}GR=fi`M9z}IItGI68)t5e(_YG^ek>j$ zBNG)-Ml==-@yr|E&sU84OzzxM-A=v|I+CY-WJqkNs<<-?37$)P(ExR}&T#^swH424&z#quTSOs?nlq zl;^ot)R!HFa=9(F=1JHR+?WKfREXvcwSdWDq)a|#YO+!w{CU&>bIR%cR0+~&ENY^= zWujo#&~xKRZOgJUZ*?US&jT>3S5E)YE3n@>nXhyD2c_mtt4*n}LJ#}n-uGuZ&t42! zsc~(;a+=jwc0bX7RwylR#)1cpJ`Q?O6P%iMXg%jF$sn)={40h?vgUrmEW;BskM(*1Z7UXR{6 z2uhJoH#G%%V@GpNj>ZkDDf=4viV2_D-sv9%S{9#&clVry=gHbr4G)^yIT-Y>X?#L9 zj^|7LHvKs#Y&|52mG3y-lZ3YRAz)bQemPlXLF1-!OA17r-kXf`sR$jj5xUy5PvSt_*NfZTbjY+be;!pz*@+9ki7~G#pjJ42Yd(py~ zydyBi8?R~{z@?074snSfhOJYdB?BfO%X&6wz-4{3?6ltXcAEk~Cqj@b(;<83A=WKn zja0ZrI-a<>kdy^RFLGO22z!M~&Fa;^4%D8-?adf`7dlHf{+ye+)jtnGt*#_42?qIq zyl3Nwte(~VSh6@(Kieax{iy@~h1?vh!*ROf{iv7w>vBp^do>31guFRJH6ioZ4XruR zI~{*oWJ<%2MZc~nXX!kq&1rcC&^E1Yvu#4yBt4}$&v<}eI6Rk~ipzA*))C%BG8vCa zz316Bqa9voE^P6bndxrwNDYN6ma4-QBzD>)_96NB+MB<_I|qOKj${iNX}i&;zAjs0 z))-)Q4Y;=i7FW5SH!cF!+|SM)7%U+d`=+gp)>%zdgT;mZd|_?$Y8LRPc<_BCLUNNB zt=FuiKbpctZR2Td#Yw*-cCX07Z`H)&sq&H!q~Qoz=cH|8>8dnZ+RklQB3^oMh&0_= zw9Lq#O}OiJw+j=gXQ2~ zZxkLs{Cse&7R3{VcsgFqhG%TUz>!@OR{zOS%B_oD~Iz*-OnY;xx0C(EI%3<=7~+ zm6>E(97Q_`ATHW(j*-`aBpwEEZ>dfKmH}+I2`OBTL7jPW0^dT(7d{;DirYf#{qByK zEb!PADyBs5SvRMG|I9QhX1?_5!d_%#kc5BRON*Pv97PG>Rguq&TJ{W@m?)ARF|74baYZ;;aT$SxZ`u2^5{7 zlDjtfN>>Co>ID?Mo*giKUEkV^o{>lLn?;59Y~1E5T=_4@@i~=2*|%k`TVyU@1E^ z!a~7Nl$IY?_Loqmg+l<8K*n)_WmbEnF{?=M6v!wchwG(?R4f)?@ z>=mK!>fduG4Yxj$Q#!}QeoCeoj_wb0mXgH(Cap1!VRX`q)wNVPP}U-_PcPUpYYNf4jVNKSSKVR^un&_A{_F3?nIiH5cM~TF z(;W-x(Na{G>G%Ep#u+pexE0O;AAF+CKNxYSeEjW%F8&Patr;d!hI6-njOhm0&v}|4tTd-)J~Hs5}{&wFDz$vzgCoxUTm{)8=222 zol~deKpuh}s*?TJ*d;0Qq0Rs@_D9`&H_<1WEmpJPI}SM<{%btAW03j&*|{S0M7fY% zD!ct9Z{4(}4(eZPfpot|U6Lm7Edf*UfMGUTNgR*kJx#Ct%!AKS* zc2i^AXW#-N%{vw?!5q`k)EOG9U1;rm6O6+HtU9E*`yA(hA+B-;6Du*4y6@odV3Vwe z9QNI`H#n>Q`Rw{)e|D(u$S3`I#4pz47{u$>xBsE@9%`?wXWR=LH7$3qV)l_@OC~4( z?3L&h#}%g+U7p_7Z_G^RY+=9VvF?5ZAls!F$5q_A3UHr%kUM31A^qKxl}v*RZ>NJ2 zdA;TL)JC3Y*ET&vmmRTjNv z$~h<{f4$9oU8F-7^v2*u9$k9SK=cTKWiI79HA>CgZ{%9I(uKRio^jjDLz0U};o&#M z?f3Aj)y-Xt?IA>Io}PBAc{~kpe2Z-veu^nwXIf8BY`KP3Zb?z(S2c)Tt&3D|4?IwG zO~AQMLq+!>NWW8kLI%Bww->M@&jbiq>OFHQ&tW=O=k?5Cyl`{znd>fv)dvx=H(ebDrD*x0bR7!N&9zJK+j1 z^{?gAb3zE2H+ym(PMNz$7^?&|li*JxV*$`%h%C005C_=8@N)kf+hp zEU`PtKhx+kZ9eHVIG)f_9WfDJnwQ`JlA0nT+LT!LvZZTB-mELl>)(Fcbef-tC5Tvo zY&%6Tz(88T2T@ z`^$|VSNvGNcd4o9-*Q)RDxIBMHEtX9m%wUumiUjM_R|miUA5mLP8FubW3!-Aix){ahKfL_(9g4d0WcBWu1AxPJO^y;|kb zYv2w89CNn@K`^8qVkWOAGUsdK6QeNo%QjqLexPtt#TPW&S#B<+U!2M)oZXFYG zcThgmng4dG)&=-QO0>#Lo(zCXbsV{~HENBKY@v%4(^FMB1O0`@Ma?s3;+uGRd4Y;} zN{jJ8m;ac>kgT3{K_Sj+G`IGLspyzB#S3%IY>_g3lTC$5(#?9#nai3%pv(>%I{$|;=BJg^Iq zC)8LEC^sOqL*F#yHCnq^hwQb<$U(y zItw3$0)(>5VZeNT_$saE3}*9az+cMPISyXy@v^V#Wl< ztS|6w;DZ(#lNa(vMn|CfBk%r`Pu*k?MifNjh|Xx?K>6DVV40R`OXMMhjR{QM9(gz@ z-uLDfat9~^9`D92tJE3Hf#i9A!;)~L3BOMl%V&nrT5F|_n}J8H3P>yM<)zmB>~JW_ zKy!=;ACtz|o*o-D5y>*)F`L&iGcRE1A5h$hAXxxQs;=`=Uo9t{oZvV1zQ_B$r_tyW zxbK0%aD@q77nHO;CL;^-VkmA8zAU_WD)ol(Z91D5emrC~Q;27Yf8%ESM&mBWq|%>B zZ^KuAo0_e0SjQeVIcoc-?+?z8-`G^Td42j;kt@MHL$U3KBnMh*A|HBcD*JwZHl|7c_&3*GCKi&b4~TREq{&RJVHU z@OTEmmk|y`-|qa>{&)dNWW(R7D=&ol-#ZZEXd2+rOH?_E$ZDJ`S9WvwbAS?;1Mm2i zf6>)U$>Z7C1+nX@hFGZ*G<0>aMJ^7-|7fbcL!}DC0FYksFNf@tbr!yKDxY69w2jI$ z)lD1*q3A3L!W3CQHGWf+U?l2m7?KOC}K= zjxD@u)>AfIs`wfm7Y7OX)r0Xu2})=LmGQk|P_zO|oxj-m^Oaa&SPjo2?{9GP40E2k zGkaQt$1D|cI=naJ~l4)>H|eBpb;2bmb?x#QZA)KaYCS zx~oOA_+G_9?DL8)>4o6pIpXnx75;)%j=J-!g(v!yoGZF|)%_%EVj_OiO|B}$h9lbJ zqdp$Yi5hU09e`4VT*hTP!)4w`1<(cCl_Ijmwxyk?8a~}*bIYZST2VOr#Z(w;umcZ-)Ke zqn4j0O#O0Itc(MsRf{K1xe_-rL-vFp{>uFmPb&^%@q)fe!xQB^-NsrFp>Kvp^YS8m zS{&|Qm%tklgN;IJpMR<`0yBq3*NoWEJKO+NbbuA%B8elhY%UY1w&=j$g4es@&E0o3rk1^G~kH>Cc{!$;pMMmRN< zIA`*nUh`24j?_HAr)TZl)er~$AY>27JckEp$>*G#T6$9`WGB@A6hac7e%An>j1y{b zT5frDc058}B3{Uw`(H~A_&A^6`gLUC__N>sk&UMmZ7CL|QY$x2gzL=b_?i&YEzv!0 zZ`E!Io>K%of+=e5C-#oRY9IalY;bLd#QVqd@8CX~a&TRD*=N2*EUdAX02jp%-0_WM z05a2vpmh+tLK~YZQWEw^VupjnG@`&31r3Kr4SG%Srz>*wE1sJteHD4*n43MGVroJp zog)HoH%JWkFQuihf-=kq&EBJ4d-K;8!=fN*0I;JhxgUB3ZYKY=VljbT{$a!0w;Z?o zzQGgWYry+vK(-rV+N+5-JiKE)AKuAn6S7!+@?}!qJ0MoxD@lICig0EY_xRe6xA66c zpU#DEg8>$~VVK-7#_`lhCsZa!Zp`z?U8TGzJWNdh0B?@p<{(714j(p|dpye%nzEb* z0fPGFCJ*Fz#{48L*Y0tMx>t?ZUo`i9c2L7&m7hE1kI#&v6CP*Qix#~S(o`txJHPf9 zq5EhLs~sSSVSXSh%SW#>b9obMx;jHR>i%@@HF6yEAT7^0Dkrmkz!a&3^q!8)5`X>i z6GKIcWPQB6)lT7OnVUBIWc`y^j0jZyPoT(bu=Iz+lhYP9kdr61|2Y5ipc-w{9ZQh# zhF@%SUiuFt(qCm*v*cvtyiD5WdswBQAX*<=D*gr)NG+0rmExMpUQW$O_#>t7a0X^q z>Xz}z&&|LI$99Cd%}~MMEBl-Bcya)i!+pQATk+4^f|~1)v@hG7SLDFvkMHbLAVGRM zp1M4DPoFXU6kKzu_aC_yGM!;T0 zMhiu{jr@C8Gsr3=WLWL_%*^}TV7a+I;G4Ty*Zu&6?;0(2MHi{V&-cMNK4`{s9Iv8X z9$xb2`xrT}9(`5W;@91`ww&ZS$Qi&u>#1rAFc*fxIW%ep!?l!Qr6d-%LiTtR(nmIO{a6|sZ7L{Ysin$YiX z)g;{Scm!N1V0>jh9{>b$UFu24;JxavB_pvT3D$Y{2mulmSc4ym%e@h^jY@-VQ8oRs zFYebz{#5qudt216x_K{F;}OYj|NB*fgE&lDnujz@IfLa_V!mj5H^Jlv^%|37}VgM%~d)j6kQW|OUs zag_KyBi_r zxF6s$&I-F5aa1#G^&sfXd8n~Y={-$L9KijkJ=>)#Akobfv zq8W!1E8aOhTvt{CFS6))UZrP?)w=7wzbAI<+V5XtH3=;0;x*pIa|qV&)Xi)$yT2aL z+K7>DW)B9}heY;j0{%lT9(LI$hx8AaD5f!AUgnn~;nR}dJ;#0K^cBgso;6a^K(1qr}^;k}gfVPf;6JP1-C|FZK;9=e>xRtPqv1N1rSwX|fS#Z4%H^FE_?m#9b~ zNwmSx^HtnK8al@;ymsPy6LDSs$BoH>t1+Fd_h&t)nwCZ8pD%{n-3fB{>S&d0OaEU> z_eE>@>qMiOj}i~;&fE-6pJcuq^=P`arMJ|va+jp$2S03``=+3AGsNyT-`P!8r>UmK zuR*`=Y`v2(J}z%Mm`hOdAnPFB4@cs)mEyCaJ5x)AUj#n7Q2puLTKq~laIx$(89(z+ z`+dB!qhMCIviZY1m;a~I2}1+mPu_3IO8Z%SuPT0KKW5D-#2_Gk?e{g+wsg#eN0l$c zzmm9LwRNY09w;ra_U1fJ-`}TxYI0Y^c5N&E{mS~WMCDE!iNun|>Ai@6@=5R&^ z5ZhSj HX-dm%Yebtypb6{&||nB!N$44yRfL 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�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

    $rF@owkE2*B82=ts`e-&5%x*B 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

    *I26b3I7l;bMN#N@N znEdrDVo^TGb%_p3;IV8ma3?1VwStr(CnLcF%`G~+H~Ns zAlAEMA3%k`TuD4#G>AU1Ph-3&Y`Fm$KF>C?;bk9-W{Hj<7<)IdPlWMxa2{k3hXROF zsW`!wz_8_LXr}E*wdSvqOsM-f%-K>+%dNywa4o{t6YCX*N4xBBm|0r&Alc1m!EqOk zuC=*{$q#>`239~)u{A{tG$D0jd^Uto$d26q1*bk1cZg=$Dr z(*x8KQa%kT>c?j!@c4Jw@_=UwQrQvjoX^}|1BiO`fec8Z zp*33o9B)(p00bnYEV!7YLRxNaG`cle1lHoiF9r;;oUM)Q&1uvO_e#fo=QSLSX?%&p zf`QVjJcML(59^2Xs^!@Qa?+Z3?F=rgi8l!4PjF}UjHAQNsR&PXIQjf`09FVCz>G#yPeF4p_ ztqYZ#20c&Xf-+|k>(pp<;?@a@lWAi5C$fZk?=P6NFT2jBGw%6|86Rx2wF(@0#e#m= z6cX)fhaXM$4}q4OHrp58{7ADAhRwN2M)Tp|(MyI{zvz3#p;S}nK)vK!FqQ|sLkDp zh>ntgHx{rXaWUrxjT+gDIy1M&E-g9UGFN=m@%ZS8{8RU5^QxO7!r54${_>!k=t}i+;b%>ar@x6u#A^#$n|ojAevYv8 z5}o^y$c-`kg^Zlcwy6;R)9($cA4<8H)|&+ccg%aO>?LkZg*cMpzQmVa!-RXdv_t3ECk-H6xGAL}+tt18EwnZFgeU&n1`8^7Aijs4Kq)B<^T0(}IeI~;%)u`# z!{qH;F%x&X&L)MQBRVAfpg!}%5aYF-|A2i$JxG!~a%95PmfB6f9wChV{WVD@1_#h; zhXbVo(79gTMiRB$Q4MOn=m2q6FRS&8mKsNN1tS7u9*f&WZ!kf+EKx4i1x*tCha=j8 z0l4yoDtJDA6kseBkVW!@prHWono~L# z?!yr~FiNu*pk#MwX}7I#H#mbR(am+%1zO%Ff)M=lQCq}2s-Pww>e{&vF6G-za3NT( z&k2Ty57TuV544un!B?#u6sG!$n7+NVte58&*pM1yMa#_;4x~FiwG6rXj?MZWH*dT8=1; zC5&UkhK=AUD9Agi@B|TIVkc;pfv!hEHmQQo@S>Xs+ykO;3PAXFl6OBrl;RB!Vxkg# zT&%btpBq98T$DIa5xI)u-0D~)ZcUI_*yGZXFVK86t zprzzV1Q$_@AMpjj#N(;&gzx+>U6X%uL0eq~>P~_FTOOn;i^$>1S1BuyGDGh1g>$Hy z&(H*qpQUvhM*iEN``og}u@J2;cpf`k4}abP9R!fV&^aU;0ibND+?Zs7N(e z7J?La&>~P)WT2yF7k?j`b=v5OzS1YvYELFS;w$t&)f$E)cHQITNg~ped15z1aXW+B zCSFy38oAVIdVERVLds~b)6~PPwgp^$?5A*TIqr?B!qBC%{Sc#@<6+Hxl@{t)kwJOP zyIR}3m9;PA%_$XaW;NTYHCMJPj{BCc^92sTs&oocJt7hLwN#G?J=vhQrWsFqtA1Td zR|FHr+dw3qsxz9y-Mf&&VqML@xS>))Tci$_=b1E+XYF+!aHtalxca zg%CrQ(yxe5#rx(ZLx!${Ca52J8YG^*y3zEh??lebVREak=cl9%Co;RzpzL;MeuUc_~J%1zV zt4iIkwnzt){h|cxjSJE(?JmV}?p>OTY4O!`Bj>O2mqL-L{NTtEJ#yx0v#%xzjZ~k& zBiHZB`&nP$o-sdW81H9DK=>M)SclX!BmxDauB*fceQggdX+NrVV>Vf@;vcOxdfQvg z8=G9%I=tHmPM)RwDa$s-~qSvD{3TH1HRHdv@%Djo%#OZmH( zKF42a^gBA^4jtzTK1)Yv-+*NTkkwCZotjA25|&6tioHZCpK1MAI`t@nG_qtZosinb zOhs^sc|THTD@a2QsbOqzj0e!s8HprbI>P821KWR~ea zKzb?Kj|z(A3we<}2gThGd~%VIQgb|)VgQSs1<9zWz5Ef$qxzfl1O|x}~R>qAg{Cw(DSpN~F>OUzvx%V}gA7MHCG5YFa6V-FQG*uE7_3 zQlN1k5r@WMz7#0=H1uLn)762}=oPs-9QjvpYHYincf;AuW|Oi1{r4|Z${9PVCr z6Ls85R5;Fx`!sHX|Yjys=9}uH+|pUH?Qy z$AYJB6eUJM?eCc&%Z1wL8K3Qm>fiH!MrAPkMGOzIKfZ+i`;b<_kuW}(^7A1Ag` zU)xr z)9SC}Oums+ibMZiH;Y-O6SxDgU&6IhZQR7a zWq!m4oVs<@>#%WL;&i#5@0loyEMC>tEQzcK>KRmy3Iv zn2-Rz`0;(a-{WH8_up*^ z;B1VKcXQNj@J8Jhd8w)i)*YX%JC(NNyRC|0BJJ;z%u5Ajv~B2mwkzsBS6Mx8BYn@& z$ey@@Pp}M?{ClC~zfNQzJ-net9#^wy_61xB(BFfKbI8H~61yG9M1<;U{$ECE&oH2z znl$-Ja$b`af(>Ru_8*ku9Ie(NUs#TlEqgk5?t%hiW3Qnc3qP+cZHR8sau4yPoErf(OPP9J5r=hbV|6c%c3QNM8`lz`!OrBGr{3 z%!ugqD9Et>*@TIrWrGQCDpG_8XiP=!J=+JwevpD60|_fxZ1Ktmk9(u! za9g+PZPGB+Z^nSSSvmn`QE#{-Lp5Mj7i-qsIMVF_HPyvBuf*+*eAELg>wgDB(c~!8 z{_P1FgEq>LTJEUFg>KXhJ+RXo_OuJYYsLNbfvZ zY<9=BTfVwU?)n?U9`atLA2=n$lLf~QM@I$lqQ)^qq0#M6nGV6XStAEi_2!8(x_z;g z;^NJZ&x;Npsde&s5ZPY$7_lp%d7Cs6e62Bj`SQ-t7XiylVn=H_)5q4fI$VB?o(Q@z zZK(2XICbYw)|o%?(^K{A_Q7@`aGMQ&;AXqB`v9~h9&e3Mw`Gz9RlE7t&kPpWHiEFd zjGAQY9kwl0-bmk0_;l1LRQjZms{Q$nBg*#jHD-e&GQsRw3B{EB&Z>Qxcq6ETQksO= zm`X~}9Qjbl$4)!73(-3c*qrVWC|#_rQyLpA;aRuk{*gHa(=;-4mGn_y)twZ`w#`M| z@W1PJL}gb^iX1`1!O7o$mmIUg)^8qj>Ns#dTHo^Mp0$kR#g}|+dd+upK5F>S9O5V7 z>$q}!Lh+bV%J!~HpORl|k5e7w&8*&S2Kcj;PEJHJ}A ze5%06ctRm|Wbx^#;5S8!l=C<-e-FDJlNSN;;Rb&GmwXJ!(Z_Y~`5uoM`L?7{R(c`u zeD?n^r^(CrynHimEjd!+jh9|1{bhXNgg7b!(PJOXWbzR?$f`1B$}k{ah8el-kE zR)Zem09(+?WQ}S#uDCuUDp-r!h;F(@wpWOibEGjeQi;~JdY(~?s1C1KXl>Xk;9Z*c zgG>R$mDMCbttB&wg~mNd;#8^iChV9%?R_} zsYgc!p58^tKXr=6~Sq1}DX=YcuFAE?4uPV}(7gnmhJDXYc?hdIT z=b{p)32~(x{f?>j0EJ1j8NP%89u$u$FsHTIQM22utdGW62=DB{*d3K+^Z%24Tgih- zJ{3oSv8e)Lo(I(Y8=Nx*WZ)+}NjPHHRe+ogLaY^mB5i?)6adU<)g9WenvNvXpoD7o zjNV88Gb+KB$oJDNjX-iZcpZVvHj2Vyfk6P6&YC{-{SBI!I@jJn0}XQ1Xhd}MW}4KI z;BK`Ig1x+x27C2a6_f^LVhwFUN*I9N)N6%A!tm~GQm(8&PoiLXL-PR_;*?F4Pk{sf z9N<)!U)(~oDMU$6ATr5?C%eCr1d!gV7XsoM1rvsBC3k_s)c+v@P%y)0yig2|g?P8M ziDd!`y!keT|4Sz~xETlqqC8InBF(>-g{gflHo>yh*dXR=Gk6lUa3Ic&nq$KTq-`hPi$X`1Fzf_PSox{mA*n5x5sOxsh?7x> zOfb_1u0$2on>w8AMFp#qu~{dZNV4+1VbcG-fConHD*Q}xKv`qytU#VzB@6OhU|i5P zs!=d2X+KQm`wvcG09Pu|4phO3+ zAT9~hVG_^P-g7VXOW@q0(z%TO&YW9UE*P&dK|&ThM7%1}{?Qgm`Gi1Y#P*gCbaGZV z_YDZ!JErt-d_X#Ip`81EOQ?A{2e8H}zOrni{s2Xkd5aQ?Nu{6#^{*TtFhd)F>gs2O1e*vKm4>XOw@hML`IDeP*fcYF8D3g zckM!&1*3C?vWG?gHJhOm#1;=;Wyzl8e?p(*y^N?$4EHtHD-}#^S5iHg_shwa?myn_ zl2!yhNV`#JDv?P!7CRMycMd2}pmar9Iy(Jb?Rhs)0H^pHc(|`@ME3JdbTH?Kz$4f3 z=*SPS6eE-1=3eL{!BO^y6H5}78Yspc&tRn;te7Q{%1##As37TZ9{!RlOs3|A3(EwS zUoNr~M2S3KQ3=O>?kp^1fvvnRg-*X&u1Ni@rGk{bb3QY^_Kig(^pXndNo$s*mfbtd zKYcE9x?p%RD%=kpHiQiIXE*zF`XD}@F!5ZP(8|<5qaRIfHz>EPv%aJKFIlP5V75-v z80&F7Ss5S1pbi68e%Kh?t$oPSof$N2$12j+Av>$t{=Y8j=#D28ZcD4JE zfCR2yUS3BX{ut&sD0Qd- zo93pF=Jnk=Veq*sJMy&O@JI7Gdd|0-XDkoKiyxxz*}RR4zkXzMCD^q0+@en5(#^M5 z?aLdSZ{wAFK6v{Cn%+-o`br%a^j($HZ|*U^b*;jp|Gzl&-FnM!Vm@}Thct*l98c&v zP&hgakR_hYflv?dRO3WBLQon4*K|PQVE+yK!4o+6vW%|RvI4dru! zY51>o1{?I9OSG^`fGOriBpD!-oM~ODqQ?a5Y-DYlK`*l)N6lepc*<^-G})wPOSU?Y zBRALiP)g{ABRxxv0*s+$T5`eO$ykN=AU*%%YXf;#4O=Xn^oBu{^r)7X52|Ln^fBH8Bu|P)6JqKnkF9GimJc zSNh%L3?dwQo_+UZQbxow#47uyV`oqGj({j2-A@M4rY-LCvOS_#tE3yG!34=ISC%@Cag-OuW%x)qRniEsQql?=t?gQ2Gz`ZeSi{ z*MHjgwA*=}*!O5trGfJ54}`x$i~z6u4ud-#ZyJRm%r3?Q6=eiL+GVoq$Aqz5=hLY3 z6rk_FP?`OxNwBVQWQ_;p8zTr@D$5rq?TDXBk+A;hK|y+wIt3gNT(G4FuFR0j?8vv7 z%!@@g3{9O4F)iOV%U8Kid(Ez#?1I3B6@_nU!#fGl; z(_|}(fL^H~2GED>T87NkPPXAlU!*MF_#2_xa9*Z9Et*Bp2a3<%Cc$0e=TE4y3)adUIY5 zwXa-#QAX}j4dyP1o|O!H8!PXL?{Dvv|7$^BFR5Q5+ro#O=}oQWcr*+j=po4hF0BCS zp2hrW$hfBEB0_%I`H^=vNSO?X#H2m*y0#GOf5o+Kb#kdWM{d)LWp_(F}RIz=@4|&tKT9;Y2Zv@?#ri^;W;;pEUK{2KnK~68r9~qk=%+ zEoJZlL77LdFji5Qt%Zb~1lwhw&T zQ-bry1Fle;T|f?Qd>oFU;mN~zwGTvcZDKSa)G6fvx_}G&#shs@{yOZt3eesH2EwSl zH_Os(7>-D8c4s|3O8~eHt3@oUnc=lAlUcD^EsHO~E}SLpq(<+`_Ok?NB+Gig(JnPv zzzr3sAsFx`Hsj43JD*li`e4hu5REI@$}XJrfH(m$F`Ql!&Yw&Z-qXBlaI{D{IK{dR z#mzjwsS%nDz;OjU2|+at0v3BWt|_M_dS|*Z7^q&x#jVD(`+x)LHP(#_KAg}VncXf$ z7KqscJ)j@dRWry*P&|PwMFDDRfElIcpi5&!HXX#Lxzj*+CRu9h;KB>h;Alnu!^jhY z$hdc?T$m)Yq2`*7R`64z8d>)(o`L4m@;#1;$m^@rPy3(@5z;L(jl_J4`@LOA za2Sa=rQqoDC?U;IBkS-UJ*XFGKLb5tA{*cy77(?N@d4fQQNpTH)*zNvRy2vy4zm#v zOFTlK{{{Xmm_^;nisPj@JWh*~Ic)#k$#Dj%L;wdQg$3X{9j)lTpOIdB;4ebuIXiRb z4WT{#I$FRo1=+>yfQXWxE~*6(#0T!>6j|2(ypMDdtdGGpzdSdY06cl`PEUW4ynop3 zgmAkV=tYgq{)9-sPS{a$cz?g-d7hDK3i?yiy|=bKo_RC2gs$m{a%7Cz3E8d4=Zi9q zkm*5!)3>5Hz$TUGA{`a!d_wj(6`*(=Uvzh_!bX;Md-e!odq!sar0!{nvbTR+Jb>5U z`lNeUmGqR|7Ps1>5y|9}1t@_Rg7r<3E4z#y1*xn5+;^Uz+cz-v1xj9b_6hun_WD+2 zTUn$QQ`PExy7cxj&%E0m&E~xunZ6$kDLtj_oF3wfSp~^b1>;g8u$1C#a_?Y_2uTCK!?in+eo=Xm~_D?hCKx|)_J5ED;L;GyVvNe&Ik52 z9(fq@{03S+ly~Ir&m%puFYcK^JfonuJhIk+bGUdDLfspjO8$1v|W2Sz&Mwo z@T!wY;}pT8|LI?k@68Njs(z2X{yjxC zmJB$!x?(DyeA~JH%|pN}3iRjoQMV|%Hk<=YczJKS9zwK^^sg64<=jMIqlg)T2e3G? ztcy%wBnoCqtG8{bhfzW13Tp^F1BM^)8uY_qz)62URB>uhbrN{R8YsTepnzNPB4=uD z4GamZSnwKPG@h~rBMfr`%v7OfH=4E6qc_4+5!s& zhNI4J0c4V9-JO{xR_`xQy2L#$GRo*XSJgFRo_;SWPp;3?KSSy~KRtnoAdQKM951(s zNXg&JW>F`C_NjTyy-$MTrtX$+&-+VbR8GS`gq{5_EKBc=ia$5`^qG{_yo9Jbe{-|t zsW8?SLW!EEkQ83PL0qHeiE6;U4#Ed<6}-&*%hAzJmc_Pv0!lCM&7FH6*O$Q*am{<7 z^IanPS{Q*}_xtk0d)MT{!%q|k@ly`ROFhxJa}6UD2*_37rG>YdcyYTZtbeH*G~Ekn z$9Z6-dUo(Y^whl~lRRV7Bi#{zEu|!H;&gOlruo}KbV@ID_s87f&a5jmQ5q^?c&$i9 zFR0Qfs=bPosi$Baoy~u4>IIVw^j>yRv1c?3of4|j@RThsax2%o6sI~_u6J@UUo&29 zy4vLY#{N`Wy!x{`ok^p+{10U<*RA5)qpNl`X5#R0bi2dY&`fC&5$Ci;4H>kpQy4>5 zd3;=EDw)QO^!n64O+VKo*WZiYd|serrWXA{5)zP=Lu46^8?h&gog?M!EtXp*fDE-i zU)?3%t&g~9&+kehJyGP^NMbcmE&(;m)JSViNbWhk*cyP*1kR9CM*U-BNw8*pD-+n&Niq=*7(i;2VMFwX4o$F21 zBO3;1^04V&9v=g`0tb#C%lm%u_`fgzlw{NG|&hyI--AhVo|BOdo zPZ^%xHw}*a+IP`6?dKb4LlSo68zym}taptR)%Gqp8*qZGkoPmzH2AXYh^bP>?+hH{ zFNycre%8Vp_YVb+_FY^%F454!v?y7Zx>4$)+T|?HBih)5#^G$RSOE>}re({e=Twd3 zywnIT-aG*`jxt9!XwRM}gK)ibaLtW`o$$(nCK^JQH--?=X~Vr1(y^iz3F+`~G}~+A zC}4qMkT;ent%*|+sc)mb7HVi`GN(k^X`vC7lC6Rw=t|nq8E9~2fc7nR@ocvEhBp%= z8^*2{?C23o(N+s)IB6mdwC>|wRz@2xwKq>~jMk3R0$TLLIMxEy?Zgrx;|Ys>%9O<~ z3yd3lD_7;|;TFQ(r-rp~Hca&$)srl)Zow3i{$fEJH%#UnhaL@vGl|U`O7>97)0^lJvD>X1 z0%9}SHU{MdAJg#TN79F&hN84|TTol+12CZ-utFB;Q?s#dJ8h6=E19Wgm|>-28Zw|+ zz#kG+58gr#8n1Zk-!VC0lHGpN1P9D0Avo67k_e)T8z?US8bI||t!u%H0!sgPNNG0y zN58g8+IUle(64R+pQ?YDph>NF;TBmvczUF+cnV<@555pPeby~yJg8@k#IjxCRMDwTxOQl2&EcZuf zC?ABSY4c#i?xNg-)Kh9>8F+Lo1LCCPD$8(Qf>g8bMY`LBA_y`^5;0j9smiiM%7}4k zh@or!c)&QGVc=Gup>1&(>gBJ1s!Yq)(^ z>PC($8z88ZWM@V`Wv3;jrYb`8h+Ww$vR&QSx7yB`VI(%;V7nOXNt(R~3!5kWB2rgi zCsSokKP!RJsPLUl&YfX9L~)g2MNJvnaTui1mUS_gH$cVgDhO*jz$6F8(DtXqVc8=k zbtopaFup=YlYu!;hUxy>`PAylx_}u+Rg|?pd3d+@Y94O@mf+#2v>I3P9eY(C=;-tT zXAO(163MGTDErL@}=8&b$qFlC3l>4=D(q6=t?OJ~i8bT5pwx z#uu{E3D#M<=MvH^1uui*t>#-9sLs*VtBKZkzOpV;PHmg80v zSTbt$U8@E$9c673Fq72WRo3${!u0HmXqTck``Bn7vUUl(J-ks{ayD-+PAa}UDG?Vd+k$q|>D zYK{W}BnUm9^b~^^>i$XWd4w)PULHL)>t{lE)bDZ29uT^MJUl9&s^R3ghaZXfs0_)c zWojueszw*3x!Y1eYK$_WLmY%ccPro?52t?Xg`*^!8BqD#wsj&$#cdq#t+h&|YZx^M zHqq>IR8?Eni)hFc6wQEO-0Dqpbg^>J&?+W9^hN^}gea0~JP%;Vh?CE7yHDk{*=!+S zo?;kg;Ff3jO({|5=^0k3A!i*N`SV3s0ZkGdmBBb0j&#pdP8VHePxF`_TZ68?JyY4LTZf;b?gw~5|p`8wjqMJNm!>-h(hj^*Ig6wv-1|FrsiLB8P zgJ$990T_`C8SJ?EqLG9C*@$r|hieh{I>7jJfSo<4B*5OVei4!WXC+;}i_r$#)dZH? z%rCUtp9aVyrOYAHv?>8qcB4rQ1YA=H1&RfbcGLy$*uSA z|Bl7NH^;KRxp5Gt3a3QfKCY=I60V9zw})}@ef4;3*7uMGL~qFDp(k}R01IeVCY4KiY^cw6g~MpnDgVF;;k$Ly#FT~<_7S{0a5R3kx+78BV+H1 zz|D8h2d>0mpdgIh%MJFBR`-f`h(dK$7YMjEgFB@Ia%rRz;o z4EGLQ@D|_eSxBAEO0}C$l~^+9gC}o#pODNn-6Nm>DUcE75E#I)NJ_VuBA;w6kH`62 zjDrqu)AoO!G+Qm!>A!wty_gXzp0=Eh;T97Q_P@q3odW35dLP4GnyYQ8Lq5d%v@~PY z?~E?b^qT-R)kfhDD{WaSa}W664V$B=;s0i(euY;cw`fWNGAB~6UjnZGqw7N{lTx>q z%KRoFCNir26{1ORFeQ>Kqd{4*r=)w74~Y8&E)kbB=#fE}P_Wx~fszHz`TQs-BLztt z{_S_=w*c)0IT5lXpG*%5XIzYCSkfdzFc}gI5SByKNT5-ou6treq8wE;>L5Z?8;lWH zXaOuiL=aBNz+HSJOYI|*1R_To!^3?oR~jQO3CMW!w2PmcoT@xG_WS~8EJm{;F@{1s z;cXLsFiQ5JvF#*hic%FTb1g7ZPJT%Q8RIgtO<^`|SKL8hF7YxvTHk?OmQf7P0w>~} zp^i5Hg(P_R8@Q2Aa)~Ay*}D9+^pWQ@bfx)XM#7)x@d;(tUzbSL^s6lC6AR_o&sl*Q zSr>l$*#t_*OgANcKh7su#Ebm*s9Q7hZ6>u8}_JFH%o-m5``v zKq+YYJ2frj$om%(G=#5Hb6bq8Yi}2F;dbJF>@b@8%lr zR#o*zL^lgohtTi$Bkls^?qxewzIbuJUzX4fnxrBH_Bd@s8!d8mYv-gP3rV2LDbv7) z7DHm$Ln`ic1Dw($RU65sYK~DF08Sf77-;6y0Wb%Qp(znS+OWnDgkKGyl16urKc#{U z0cm6G{Bf30SEtKblI-1W1WVRh(t@}@<9__v)YKNu=AP{IM~%Pl8@qyP!HZ&8)<2}Ak)FGj*Ahd74+GVPHA|dCzX^$a>jfT_u;xsq zLrWE(3JsYNrupn^JDsBQw)rNtAY}sB7(b-yAGwwTHdGj_X(obbHWD9YKk0ygIbdCh z!S&NNSiHL;1}Kesv9ELhuOonu^3qJaPly+BL=->|Fu-?j(%}Wu&BnmeIFg_x5nEd) zAI&+kwYqR4&43~&;^WrFcem;VettBBy5=hGoz|iV(xx2;;lXHy2?)_cFKqr))oggw zh8n%ml&gxRkvuzY7&SvAh3XyWpbB>W?k803af8r<$?_OohsXMT;fBJcAyWw&f@ZCv z#6WGbj`KNI7orV~q7AoR9ZHB6-FuZ`g61y1VjasP?xxJ9Y(K!{x z%b4rZH;e2ObVQ9lsT%9dC*MFW(-C{XOU8}Cw{9gT_~}28 zQreJoSq<^C9b79P@tts>&PpYxhWpbY3YWz_M(1WuL?6ASgVC)#K`s01;D?|qEV`;# zqwCF9@wx5d^5Y`JsMt_1ANwcCMgKekVf_cfl0Y(4un^%@V8e5N^k<*PFjQi#|LbU89S8HH2SH5?}a* z&Ej?Jdlkn7oCq0KlVHTEg0sBefgDL#d`cPam6SBuwS(n4RJ>#tVs8_ZGzT79dy4HkHOVRytI) zDx5|#ic~ z#@i8Yv2r3Vr_IPZS6HsLKewmVk=aM;hF1}WT@K0tb>s=Nj~wQoO4e|W{DJzUk1o!b z8MmFl7}0CC+Dj2cEvg_QDX%JfqWr>(Hd;XCLT+W}+bZF_&W{nT{jxeNdhLzn{pxi! zwf@{ruHao1u-$0#t`P{4pHo@1%6t?cy*Yj_!8xAp+*IT&`0>O8zD;wFa|`tE61Az; zPiaF`Yn9*5YaP`lcmq!M#1Wj$ zC;yjS#x?o+fNlgp4MPGH(d3(GhNZb}*6HF#f8YBSKSu@56Q)1@Su506_4Qa;(`P?mc`KJE#wC1bRJ#Ia@Gy6%PYg|j3*0APd zMUc{h$hKl(R$N36ELakEr-q&fJlnwl8{$M8>BpYp@>g87wECGhW)yp4wVo7! zT73twyUR+yueHJ51$#+1y`B&?5~4}2HwuEkt-N? zgD+GkyrjpaJ6l%{pEgdHNCF69%GAA0<@$!94ND*`TluYxE9|0+a20!Uh*`j}?C*g? zj4Ykh0p(TV6H)nFTb0U zj{14!$H|Ge1nXs+N@t#n8BM7$99!pCqI1$+_;aw-IlE*tbA5fs|Hyu;bjTC9%zJA+ zJfjk<5(vEHaEhV3I{5ZG^it#}m`caR_}TBzN3}tC4f_W?k+NTU8I975O_K~$Apnvw z=tvMi?$Se+>1MwN0si-0X&h4u-hP+1TV5jb@7{jxKY0ExEWGiO*pCXFo=S=(!!k8J zBP2P34KV%qLG4U(SX-mS@4>b^4A^fF)@W$=*TTin%AWfSbqp;s!9H@tK6>l0<=Z>G zOQF$W;GX?q_RYoz(vo(IeG_k=ika*@e8u*x4vU|zk7eqf&)z(Xy%Vq6wDjP)fI9oU zD*uJ~5{7Xh>|?woRLq~WnEIRxEBTGfjRVmpWc7=H_KyLF!RmNtWaa9_ead9%IcJf*7q!H6Q5_|qyW9qG=s{E7 z!|v+-gjE$8Q4V_Mh4;XeEC|(IoosFs(WoxAu=4)SKg0R-5hn5V$Cf1@l6ZFhHJO+7 zmV%SZZ_`YULl<1SB?GP|Pg*-`WE8q!Q>*4^HS-Cih0>Q<#g(GWt>+!`ViJSBBQH;1 zr;Bp7@J)jY!C+!Sn^FC8589+6RxTF@BTKDG5?=3+|efVIJp3IT)NK-Eial$u!hxz(S>G)H zr`J6VZ2oaeaNKDvdfvj`R2yCxuDs{1WKw~!0y14uOr1B|94(6W#})5*eFr!~kV9{_=GEMeiB|-*O6oM#n)O@+ zkz+6k1>VPi!Ns3AO%v>WgBZEn+{>nRVU21*ZaFo0o8uLb6wfqO$t!D@Fcr4Sj_w2G z3IBrzJ2nhIh|uid4nijn+$`=afQ{fWTt9PAKrw++D(>O3lO0h=9mo(DcO1?*;Znad zBJCQxGc0w%wo~@dn^+c1!E0(ZBTi}@3yWfT#EpwqhoGO@hK0;IMkU0?jmro14mbtm z+UlcGK{(G5`QW`BTTR!~Z$~2%wg#Sxzl6^Y81TKhwi4635C>DQ-#gh_RY4H0c+AfR z$KVOG(5FZH!@de!EN8qGQ0n*%@=|-Ep+2IN7bgBxYH4%lnUte&kGJ$GBQGb9%Pu`* z(ltNr2Lv1$+?sv-C1X_|#YLko7g%zbp}S|g>$gRfnW(qvs?zJgr{o^*;_nShtkJ3bfEjepFWT!tnD1iJowD|O+g zt7(N=eD69uWlzG-HPla)@bvhE@b{2_C6|kf1tSoT;j4DTl3_(8y%(EEN2^PNr9N)V zH{~IP{J$$h>#8DPHNe*u?k61aXpJj7oY!QFJ*a?O;HaUEmdx8l=y{7B0f!4^-@bXf z>ozaFY!m(4@8nIh!~x*31XRUI>0|(KxWe^0TS;cc$2~XhV`<-J(9UDC(^dkkl!1s7 z+jd_D5Ls-}KI$`Dpco@{K2?B>X~D&fVT%-spQ=Bpjhj4tKcb`uDH(3WUQ3HR+tIkK;c}BH;pdm`mb`lW-Q&(V z!(SgRefe`X>seysa>n`4S9dG;yVC9NLyo!1XrK5lutk3fJ(K)retC(!sPgTblfSUD zU)6&j<}Gc7>D`0Nz&za5`m(|d-TYwy3jo%D49X)wV2SDhQ2is2py#rkI0uL{z;T4P z+7JXzQLZ<4A0%$eu{9{hin!3ybIwIU5O|Wf!4wYIPP0>4r45Je0dj1KAhn<(I~>7= zIL>bnZ^ujc-~b3iM*%bhU!+y54jsn;33BVUkxhdIA4woDIsFkmN<+>JSy@epCg|c# zE8V9c}| z_IO$~%#h;YA%+m9AP%!mIJc$hQD;zMX=IJfAmC($JfK+^EbyH>)Ri-!M0-n=w4#C# zsA{1=?uMez7Rac0w&qTu4d_HTBRc2ki>5a_|TTa)9QmYOj$6k(hH}K z4`wmQ#j)_911**Tpfywm1$A*(0g9Zq2D!!N_IWn8)XMCSK$;DGam7a2w=KfXz9;7` z*S-e!m}Qy7feU?iM-SF@0!QogYwsz&J1l(KE&KpE%AkNMp2Gpqs$>Qmt_3j&&J zVz6*V_tEVE2qKY^9nXspOdwe!zn(gDJ>RbN)Gce8T8U81=Af@k`^)T7sSxSWj`PL| ze$xsGdCvpx_&bnoUl^6Ei6@@@tLrPi(|!x2gwu3>z{==JsMo!$I_O+BXIFCK_bF%N z*A!RJvy!V<@hF=qEVi9N1rDMU4_Y zH^`*dNMAL>=G&`pMCZQHpQp3hzGo?WUG8-d-&MN5@4HArhDW8xf5m){dIvISLj(^S zmOR?}(Gcga9eCoLePwWM`T=`m#JK@l&e{RW+Hfxr-71(vXREDfvACFf>D;q#d3%MBx&O?BY8bqzR5}!Q3G3pg# zP9LjTL7j`+j!yhkc_|d2gMmo=mO>npC_s5q+-2kT@**tu&J_U$`ZFsU^&N$iGnG1r zBc>mwdQcZS9tImG^AHAoTEUi7&aHFbb5Ej90TRy$U=KtANcqCQwQu&`YkXu4#eO2m z+)3&=qNj{XNRLx(QF!Zi?(5Tfg}BP&W^cOI_X{qD%WqKzkNHfvpnO;cOZueQ0( z{hCzN+$EKegle0)Uz%%fY3`S9C~~Xj8bU5zRMOm{J1Xh&&2PVdVvl{!d7tMi>aSa| zRaO8^feNF{|IG7N?bRufd+dcFWT=K&%RZE|VX1=^gTf#bKj3f>mw=K~V`(Syz0!9k za{&xhkkP;y=3WE^cLAIFGumv}wgF^DcS}|aP0w=}N$0cj=N~SCO{( z0(-8m*Sn&F4WGPQ%sIQ?t(2UEs7;92k z`H15zrB4WTVS`!`% zZQ`nNAY_~+krwy?%n>fy-{MwNi%82q4Z}KfF<;K}zNbG|YIMzn?6yJFsq7yC9nUb^# zS{Rg}3KxBYrqMbo-}F_a^!9|UHy8xAZa(p;jR*_A=yjSMw~Y8c)~j5jtHstQ17FfHXs6fx?<2j(oNvsNBQbdWorn|9KfQ2Jv&e5vF0c(Q zh$30J#Qc*A2Hd5D-ik42VlD#F>blfz0ICBB4AQj%RVt5Vlc-E`v{1JMLbTq!oy*bx zF&_6oEh&C*;Nr4>U7c0>N}NZKlaW}+C{x^rr))= zCqtgl2@nW|w=9=>#_h|B(W?CsmuMH4Gs=&mzo@Y0HVk4rf#k~C3;yW7PxHC z(a-+{vlyYD06&g>sdsVSd5YZ@e3=j3nD_K+sB@PNOZ60c z3$3ZaEYr4m=IY+5g0=ZuacnVGp6(Z4#&`LlW5yBRF5dKbQ{V%ZzT`wrM#UVm8jx~% z1ZD`NM|%}+FrlMB^bNkuMLPaH9T3ZaN0HKtG&9M)qCw#qHN(F^BwRTw(~AWOtP5q`m(x=gRQ_+UdY@ zgt8W1n#=;yN%`{a60jB!#alu}6{&3d?C{^UQsT=gby>-kZQ!26$~sw45ZG$b3+-mczAr zi1CNV7(f9L^&GIGm_Mwq2@|0&t%=3V(nPS6d9JsEU(~ngJ3ey%}H#7N^USka( zwV80LgjaY3RXBN747p$CW9NKiN?CiC>N8I+*eI@`r#-S=cb2&&D_n(NS>2DY913DK zXI4<`@gF>gdi&)m|F=Uf=lFL|EW)0Jz+5f;pPHAf{~hyXbNp|?4kka#FRaac475|U zkyO!}3X-sv8@x*3+u9!y*p^!Yf2q7``FvTS0n+P5{{qffE7oS(i^ zpbY8NF+50kGxw``ss^)*URT)Xj6>bmQ|msc8|=_fCS95QJ9 z|C5lHs3&fOvvChxELXZdPdsu{JK|-BWsIJB-;not)6R>wW^H9g9@l6#>!v539oJQ` zZp%x0-gScZJ^%Exx=Zm}+W;7ifMM|G;uK&oyhJPkGK`0(gu#2x9#tZ74@|l$q$!H z5sF&PAl-J5o6zrVFEC2?ZzDpL-2jI65Km*^L3{AAk-|hKy0rlyi-cTmkiK=hLza)6 z!$b2~P$_^uBeLW!Rhq`cxcCz*{DqALp!qrReOE*-PF7l4;lB$MC*A|68CP?MI0V3=q*B_nj%N%W9|_!RI*;I`BANZzHh}S6qn+ zkS#$kVyzajX%uO{0FWkC&4XgpMcFgAlOfZ8`(}noH=hdoFnXS(MS9R*nBuOOk!uFa zENcQFqZqhuw#+-BT*?wbe89|rkTEDlV?4G9pxTp*Tc_y_>*Lh%WHLb&wFJ1ukei^w zzPwN(B*|wjTp;xuD1vtVa2NkBFr-)E1wpA;4|2 zOy#W<|FPBT@v?;k^9aXt)l&_U3{V#X6D!2wv>R^uKft5*22`oMu>yxs_N^_cFnRTH zaWG}36w{Q_u~8;wU3%JL>B;VcDOuNVOW6i3*F3v>%;BpmhvRJjM1N1MO%Or$fdD2$ z^_(75{zR2|K=H)Cd>pn@b9RDvuo``lK3;`QF z2ewo7-mlvI-KHGrEcLtjwpr3e_+bdW9VbaB57qc6yI`g_bN$6XqizisIaeQ7@q(63 z_6IY{FVCe5J3m>MtbORA45qjx6Z3(kaIq3hq%M4@OufMm3wTnW8>hd5cJmd;SoTUa zm^CFNP3nr!IJKRjL;)qfQT49X=7`m+XL<8cu%A?EpP`B^1EmdvK6{85RUz3%O zuaHG)S@u$O6j$Ax4)RJ>N#iw2+53ogsRmM|P4?#Z#-{}n6%;?!XTJ=OdsG}O`Bx)v z6z+D_x9n(J_}$Q{dXIYIeJz==*;_7mhLW|OX-;>$UOx54Ui!W3!+ni1!6#mj-238p zqJD^6iDWc5yzo95F8g_^`LMJK?9=Wtj?2m`C*$~_&n`m@i7O{Z&qluLI$OAvsL-hy z*njj&j%ewY!Lgn8Fl1_5hI#wfzS5DQo0i=_=kK4rpnhMW#CYY!ftJhj4h8Q6-}U6a zecn9_O)FiSxqfVCI=|qc($T`q0{Vk`a%$Rpsz(0bY}5 zSZtJ+Ww>Y*kY)J)`nstfULS92jb|a**`ENy!ROyA{?av+nYR|w>iMJK39pt^z^IV4 z+zmDMU>Pgl~(Ogl_=)-1JtEsav5xIbEJz(cA6&@Wko!{Qb?~O zhNu){5IpYx2cNn7jA$t=h*oiymT#;OcO;qiUlSkU=31#dEw`eezO8*@nm!>%qmWUU zohoP91fyPi*|ds&dyw;5zrD%<{02bX*GT_3AvK2Jf;xb}10>_uz>me^d#bYy{u*si zWXJx$`aIx!2BdKyrfFP^^a+uZGs#TSVcBGORw}5l0}+Oxnlz5Ks_IPWJ(AJvu(EJF z>I9;vS;1t-vNEheqcLS@Q|mekWOtmpiWt*knr$r|-z5Pwd}TCE(r{5EKB}c~A{}H8 zSoR||46J#VO-GtF0j9_r3MCs!xf714sH3Fst5;P?70M`4bi`^*?-R><1eb5<7c-TX z2JIq=J!&+1JZAW+JRc-G$|wg(-i&k_eX`ngco5qkmSiopD!^$O6?^UYkAa(v+%+{) z1TAM!31b~#wbi?G)`&BV%`Nb&NC}A9FJY>_u12vHZsg|{*sC@Yss997tUig*DOTkJ zbgU!RC%^(D;T-nLr!Jr&arj26@glGEEDBkU5QxnYS&-eTs${C{E38MD(heK!tc6qs zXB(zs%12d-nODaMqly-h`$pxoU2f?s1iS|$*8{^0D83iZYM#L!O*W=_yuL{o{2FP4 zNW<$7BI}K+;L7!B(FoPgvaN9StZypex^JzkrvDkXJ(}Oq&!uT1sA+C;Tnw3u1R!b2 zNB<7$x9dZ9^#Bzr?$+uj+jGE0Ns7ukMEE4r)-ZyaiP@onIb9S7Vvv8IUPFk{t6m4< zsWW9Wazo~i4rPcv$h}&ze4C(?J^<^rqK=T&4SiY|e*YL5hB}KJGp>y;1(B`L(a$j% zp1{T7b1=GWcqn}_d|+F;5kF^Ygo)1ZzaEE zq$Xi}hJW1cC3sjT#khUMkwmJ#GE26F-!m0GAa|U0s2rGDdOnNvBTlhbxGc5s&m^VZ zQ97*NC-wVCnv$#!w{SA(($lebd)f|-N4VtglnKzGM&fzSVL5kjTAWPs3sIzE|*eOC*OPAh1%y? z&;hB_y=jk0Lgg!CW_H(g=7>6aQs4R38l5Kuht&KozaOKq=aRjcJA0&;3HqiPwXjM6 ztKgcaTT8-l;xUZbBC{$9v!-7Yns-X&nueo{qSUVYrIrle`CWJ8Xzs@&KQ-leG4Bk= z1xesXi{*30!R99-GL8e1N`}*ddEA{h***uCMz3obreC-lOtL>uT`G{i6J0sx{l$xqD`?k=4-M8(V3ok4Jx}krqVW2^u9(PM`6t3R?QFLvRg?4 z*~A5eF4K>lbdXAeS=XFTZv-hiVA!6y>d?z0_Qhn+%e-EIswtRuXjD?&NT*J;KHaft zR#Kwtu^QsSu#2@kS6hBV%wT}wcnX7+SmtJUcTmNC1C(T=&^cE0rZZ3EY-RJNI8q1- z%o#r`HfhtT6~UC6paXVfCkV`Qs*HpEGmkPvD;sPJ!aWAf?UbC1Z$JPGO63%9l^kn7 zA7(#XX5J${kdux%xFE4ew=swXh!PLY;<6D}Ow)L#(Y1Wh?$=fXWqc(hG45y_t&cT~ zCrI9~SA6pdYzh%1$t-tBJZT0HJ$j+u+f^bdh+Z{KwHDo;{+R?VYXbxz2U`P>nV9WY z4!aA!abIiX6}Jp(3KY}j;6tBqt;RhjKM>QkaqvECRMUa9P;xvxfqpoLD+md^+u&R) z^+>snpAJX6;>x$gjkLG`qw6&PtJguY7gHdCj4J7DJg)lKP&!JE9k$3wX;x-(FzCl{ zU&JBV(j9(l&?l;ok^@z%io!X^@0TtvX6`EuMg)c}VHsrrW!=GKE1huhZ>Kyve1U<_ z->1neQu-hhz-%m_GLAm^{c|2v#J~u3KIcp4mFV&;(YQHA#)s0{s5g+=5x{ZxFvxyM zX7d%lKwp#TlCpNMQ?qto;fe3?m7%sUIxfC zn-YvXhV!lG@Oj7R%g6J6mG(BfbGw2fyggrL?zDGMT6(z}qSm&qkq%O=HY+LaxS z_ezpRPp@bcpifWdZRT4ILz(EZD_jPB#Xv; zm2fAk=w<;c+(0S(<#?;{b-raEoaaLe;}hX``H5pcfx3L~pDV)cgYCAgUD6p_U4f{r zw9k#oBg?r`PX^9u+hCf$OWm+eJn=*6f||m<1*NN4D(@^remQ>shBaPQC^t1BUrcmP}@+dOty{U zfgeW}emdkx$n?6i@}4D``M4dD_RdMo8uvP|YM0At z9$7rr3_J@E9|Djk)^!)xwS3zHe3>CN0a^mGk^VQar*0w66cnf#Y+iMAL=ZCJeMOZ5 zlJ^J=;vWOy39kdn=#%&fZvv8wN=XR|YKHF|AZyJ}Lj^oE-4FQi7>t{lq^2EDKPVUbKedUG?HCtGxRL~<0-rq4uJs#1|Lmv=m zgSenZgP?C9!l@|LnJvR)KKfcK_yE_)rtf6imeG-_f<-Psf{adT22WQT3IR4VCNg1N z3`7Avp@?4bfX*)JtmhF36qGm*trv|fUPlww0p&t2k|G8PjeL|BnbjXj1ZeG!1igNa zxJ7}GCZYOnz`yHaS>Mpe^)rN@=#5xJIl0mouzO|CRSUkkMYD=36Vf<+&6yd!kb?Zm zMbGs?<9MPjjMMJ?vo$=?ox>E-moG`x9wfJR_@g1@P8HhykvNH=t0x8bk&OU)g#HM& z3|NJsuk1^4gQ{u8DjJ@Ydj$Pm1+5Uc=m21_UU((H@iqWVWp&q6dG#mN z9cvqJef!vY3bw(i&L}sa^3Y;xf_VDj7pzqCTtv@7*gW^b?Uk(Mb8<-wfcu9JMoq~_ z1+ghDw+3I`*vX6p@A?ijS%;3D1Bb3(ANvX2`5?dXLP<9=;r6VeJD!%`gsGNJri$6~x>&*yT1nYui1mALF?2W4R%ET=VX#R?_ss z#S#5m&-@kPA6+|4d_3GUd@a)N|3v9f5ORgSxdP-o06Z7j1a=o=VNhim=hDmC4!_Qw z39>^fv}-^?2%hKFv@Tvpm&uCfl4@7WXl~01j!7@PBv{Fo)BWR~;)@J=NvOj8hU-l~ zXu<%=&I_Q`eba>eb8ca(xo=Z5!`tMf=*@;lE{U%wUVJUfZ*y~SXQyw_*uXnkxi>G` zILX%N*-CJnOD_(eX&%K-O?>mLRU@HLLsllwGW2 z3&80}xRI0Wkt{uhth{?Uj~$cVYO;Qu%eu63nDr-NKf%{YuD#Jzc*&6WSAgygM31a% zJ+pyK4KY9gWnRBRvKayIp@fy-e8i^ME*j)18^10MCM}|qswz|&Ct^~LCos^Co#1_# zfKi?*-JlR^s~0q_Dhg8@D^a(mTu~lk?0T+N%!Cl0`^(oE9y+e>M}b(=AQSiiH^crN ziM+v=XEn~Z20VNpB2UyTZU#02gfdrPX6seKI(mN*AeD?>M?}8-3o`0gM5n!m1bH)vBibcX19k7LQ+DS?t};?L#(#S1OmwWfU;9nsLu4=JtO85 zDH>nNMB64bM6mmPRC#xiUygdH*GND%MTA+Wcf#XpX^MV@Oho0-ULk)y$_y9ttfsyT zZ!SW&+MZ~Chw79uSe!f|8@=Z`j&V zDRnU30k#icnLG(vu?<=)LSN=t6t5%NJt7L+sz|AjnG|B|hbl?W2tzHvj<`uNw4Q{D z4=(IC80DD=n+OJOfzog>C39eY5;A4Irk*d>LQKyV_@ z9*rhRvKtaGhVq!$Kn-}#Vld(rbSRcoW3^xRq_zp3vLX@IwJ`8~}|t;R2dM zd%KB|DYKka(Rp%muAA7oP$+}zT0h)Ts(`9#qKFt>KirnW{dp+ZoqPS6?CwACb8tsp zH?dZ{h-KutTcWR9*KeGivbBr^>kc=+%uTv+<$`M=0{i{Y&e9R?9f(6=OM>1)LidW4 zP0*nOM-pg}=Q@4F&ThQ2WQf$QziOS7`trfiA2J6`dlNbtzjg4zeeFxIPYUUiH$go) zQyo%>#~jQ8(ji6>(mfAACYXo4(Zka0}Z$7;o&AJ?L_qK5X_AS@(lDnAGQ*_%n7^`_`Zq;Gr;}O@_spQN{B53c# z16b*b^uX7WR}(U>DY#fvc;JPh#vEnvx=YfVHg5#<*Y_p0+WmOJd_4s8vn5N;?BJW% zw<9IkZCLm44kcZTyY&h(JI@ZpKr`9NUS%%QtC|pZ zi{63n?9k-{O+dw9>4)dm_@%YpUK49Wf)k= ze@w~=Y~)=GVeg3PHye>ge8Jv(Mi-GM-Fc`4H}joU0l{t>;igmgT@o*XS9c5;3@uT2 z4j2q1Zi2V!9=;q3FWC&rQ=gOxh(KNm;;MS%@J9^rNkvx@aDhogI1_g*GoW~aFP=OX zo^gX@&Kqyys}e6$cF~s5`x4PVa(rZws6HC@_@$u$5SF)P`0|HvX9-@Us3rr-!Tn(tv8Y#_ zB94r4aTW8#SD-P$mCk76Ia^TI7C;DVKj8*`OE<`FHmJw{cm&gbP$f!YAk3D)>NHUN zmU`RJ4E#4qtX|I|U)TEA$=LnGgh|j&|2jY}UW~bgQ0$t-k6MU;^~cr?9bv_dywe_V z6Eq`291l1US^dc^vcC$5gqvoU>QkH0!!(Gytgb#2={UN_1y$QbMyc4n5MtcM(Y22y zb;m(}Zdm#0!ZCllEa|}Ia^|_q{Ph0sx+U6@Pu9aci2S&_0<8M)k?))dzz-B>^PXTyb-g?o4J)*{ax77 z%JGsGY_YHZBAerRON?A(KGp zy3+K2S>`cBCCdkioz(8TB5yi_RwOT`Y~eg>oXE>(7B_ z$RB8yi^j^+8G}&(HT9!z&x$wl-nVRbd@WXD)|hHh1&5E#ZPHF#=01Bmu)GO_Y4?;| zN1vtoA?A+UUlUxzQ zLwk=8$(*n{a05pwZ9&fu&INb)yDkH#UDtnGe@EEfKVi6UclBd~z7H2`vz@bD`!PP& z_NUHtX+l@NIR{1ui%#uaxu6}pQut82-N!b$7UxrV=$o@unY+l;_~)mpUCTKaCNS;B zeo~@7+spmUdtdjA*s@(p7pku;*I2(i&U-!PZl0z6Z+vaXwCMLqeB1Z4<7GAlWs99B z?#%AlKB{a?t1S7q{^fef9QRXhNzY*yneKdCr2mC4XJ4){3SKWRQ`W!xPguYU^*v+H zr=SlG3n@FGhg+RQB%i=WNL~bKl-PRpLh@(x34JBk^3J3{i1TNL3T^ZJhee~ClE@4WB{wNPW(ne zY-AU{>L1GOeZa+?-)9$MM^tDk#Q-tYhN`o`zau;3T-0xyN!+}Om2KpeTrX18&jccun03)=1DwtgXwVj1@N>ak*`9@Z=0Hyhh4<2uCc{wJaJ(i9r1f| zNK6>#JHxC-Q6^J>LHuOh$N+dUh6&&@5Eq06cEcEyY$;DPk{p<-M+d68@Y5ki1gM8K zO@$7~+4NV%(Tk6%%uzs+v+kOLS+F6(%~Ex8@j{H^sD;dQ8n%W8NJ9s0qc)gcsw%)n z4E(Ry%OOS6YKiQ~6!kYgBYPF2P`?>)i3;j~Z6pEG@0LQKMP@`}7Xcnr(4OzW%pl(# zy>vRAiY@O&7G6tfbuoaUvjU-*Fjxv`?(|njSVUG zl0?$^!|(Ifk{~fu#pE!c#%xQHm1e&>au#Sr<}%MA__!2qKiSkBs{6@6`)1gHI4LR( zlg8A3GMNI{icFTWkQzsgZqLgVMD{{4pFjS>u zGy)9{vl3At+tO_%^YSCvmxbegZ~v(@E4ga1Qax0EkfdH>2&0wT{;4#$eNyb(3z5h&3H-g=00tjKUDnhqI4SwjNV?C6<@DZ zEJHvK@zyhDTKV9W=AwS(ccRbY0qFVogI!`jN^7UGt;UgF^YJ2;Z!Qwxle}b|kdTb1 zM4)`vFiV@)lJ=Ynv-OV3eG>$($ao2cm{cE*OYtt<#9oINO;4QJf2ZmL&DqS-XCSh& zOeBo51YX&;VnrqUtz@Oxs&^k=zz6N=7#uqt=jcN0naaE;p>4i9;Z;OTbEnIBu>HBR zLvM8kl+H8p2Q@8R4No=CDXs&;aVJtDk5`HuOk~0nHFq$1TuwRqm#q80vxlRKJ^gn3 ze~QpocP>%RFEPj(!3KAEBu6SJ^OH}8OKZ#XAmwT1?=|3NlhAWt+5<~3AZRifE#Wy? zhNu(o!>s=0t!k~jBA0ZwhlfO$z3I6XRnRZRYItOdf|W#Z21VS~CA&tm-Z}dXN#VKh zxuY|gcIT}ElEPmX<)+l_TX`{A*PN<>-Fri_ZR^Q8NGjr3vYfcE`!pVw0{tM77E)M= zd&r>PB!7E10es0gK9A;Sqb;i8bEtm$@p~2&f-k7ZtT8D z6$zp}=m5sQKJ+@+4&3@@7I#4px4ss^VD$&mkCYeZK>l(3> zZY`n?LF@=_20r2C`q_%O`d@-#w2v1b9#gI)`E6}4)Z1S?)5&&kDx33me1n^R z*B&(oc(8XiDUY6VgWeMafIHJb4#XteNYI5%;1aMB;*-`*Qzr`8!46Q}Vt8nLtuFpS zw19JXI<@&VcnO$_r2~E3l4*2+e>fX+qxOCu#LP!Ma-FEWNpzuK1+TFOUIQcLG9qZy zcMB>HwJIV@RibFUpGVSS4%d_9c2eN8tWdXdJH{fz6k z4Uk1^?7e{gr@|ZJ#ng&oByAG8QK^n7zh1>9_Pk=rTPD{xfOPl}zNAjyG|DLsrpiq5 zodva|LBd;%y4Qp>A5fghib{jXG=n-dvqD%vvX6+S5F*ut%OD_Rd>h5>W?hnuD*!Cs ztV3h6F4^zMdisk4zhUm_Co7v`-vhb|8p{wHu$3xkSO-gW3Fzmedw7^7wFI>H6g#bH zkk#LkSzcxh0A}LuWPR&=x}CDVuJ5p6*MBG{52>i>E_NtP?;xUOtJL6c80I&bd*wRj zJP(*I0pi7Q^TEv@B*k-t9G89`+q&ZsK~XlYIka15jN4p*RIGNCl65!A+%SIIoV*o4 z-?h;4RlpJt(|tDzJj5@YqDVeEMCMqV7j`ETmpbm9X>B3p8vM~Gs2G%KmngoM>u*uK zw$%BAmyb`UzguM8GwLkGb=gH{9|=pk?$lL~Uvl(Uj$OJ#qn9C~x?m#F-0_!_$AVp0 z$&THm<@l~L5mK>nw0+jWb>voue_h>jNdjIGowYe^aQ65SPEO<0fNv zuW(7>zJ2RblRm0aelEb^b%$H(3DHZLW~$m;*k~aB}dKl5>sS3)nHQ+vkyTL#~SLt1|;NDy4EANF7yk zCsv6(g$E9R%_dWIBWpdmgU97luwg*Sx%41Sq> zm7G|iJoOWO>a)F^lZz^+OZWN_E7dHOfOv3>hem8vy%Mw6CY}@D$DuVK8%k3j2EbUT zMlS@=BNBBH0S!NF1!SZk(lpI#G<74Xk;9t1W|L&rt#AmEWK}mc5#Ar40%0^(TxHsn zH@dtYDe0IK6Z)z4tQB3quC5_6yfxclM{L}dlJpX<=V~ySx>Z*PV+id`g8NA zSesQjIwBJCYWda}-7tjy6;jK#yl&Vw`#wmXG7rAW>YVhw4p_|EkzTutHYZ zUD3VS%BSQaL=0XC9$$LxaSbW2tTNre64lHXU5US?ybV@hbre_1zn%@emN5FvEngzZ zpKhq|RBp+1Z;q1YEvxJ;nLu$ML7Mae8DsBg^W6hHaZ5|YSiwHU+*WK^fS6HT2~bcNTqT(&wiW>%VMTGhLLcm+&yIa?+4wg z%uw!x94rKzt3Q1H9r@4M>FCTdjbA04OdMQU9H4NI8DiFSe&(3V@?$bo=wlw>K@X5& zstxL`ugwqrFt<5dO&Nr=o~RH^gRVhgxI*>D=|#>{I_1@L&TIa+rts@a)lptJ5=AQBmv@ zefZG0tA87JZEvW)v|?jHJ8%t3r6M09!-jb@*UFhg8lzGaUOiv@$W|gZU?bm?pAf6UYFeEWTdVvPYu)=QsDHKl)@zmQDi?1{cf4$$&6uv4U(u@1*X6(P3_F=^K9 z*BUba)Ziu9QJYX`%$rW4ecBj2Njgx>42^qf>#LzVybGk7+~jwz;De9$y2$|v*Sw(RM+WXdc=oXZxAd?dCGaa|ia z8U`a5XZ<%9JkeVu#=S!iOL=Z2H{%46i9F^j(fn|L(WVoo`;FnzUo71so~bBvhznKj zU?~V#K^l9Q%e&(oyBfCAO*ji{R>SV0I`Qm3M{qIb7=K2&NxS0PQ; z3Wu8Yn2m>5@d7WtYSnPfG5pD>8KJVX`J1cK+2WSm4f zx-j|pj&yvgjm3zR2c)&Y8qQpHc7D!!k^Q3eEQw|S`5 z3bIoqbN92AsEn0{#cLzEyLX$>zui>nfEKNqa?hKwb8^P8uHHjIO|BnO^j)t%`JI|> z94T?0)M2>cwLE97cj__(PH9fvxxMCaZ&cAxR?aBYXa6f5pq~WZp01Yv-4u=L7L(=CJ3XysgKE2i7cx{yVQQ zb@5(+$VoS3^0wW#)$(^G`RN#)wrMUlyQ@=#GaiT6oI!tRlN zFTPzJ`E=}pSV=`}zIAWm} zpoR(23HsCmH`3pzc4ZfkzfrWD2M}Vi1a!WGbW}N!f_iW^cT7z2UuaFb;8QPJ11@&x zRn$ZcCBw9QuLsNY@?AdCV#Kl<&3U}Bl>-QpGZ5D(_hQ-Q(rW~VRS4WorU9J8M;1K^ zQvn!Cl&=FM2@UmBX{03}r;xba{770OW+6=LSS=r`CDj8KRfo$}i^?Q5^oc7!JkxvG zcv00Y`4}p10TpU7NuwpIPO=9Gqm+CQW>mQ51Wi!#M=eG=s!+0VVbxjs#doLurQN6(u!Zcu?{1vFJh_ERSKdRPmwSqN z_rkTNeZBA_ci8&Lxn29L>*lzRMJ;D1`rmS{x%?EI;@`j9<{H7c^ZI+uJ>z#u1Hip& zuYM|OP!YNVgmj)f-6hJh&951L@`&I?X=?lL;E8xNa2JU5$ar9ceKvF(yeV^q^6tKK z@(E8o`12N5rAM4-^1b54yGIXDs41*$xxAz!ZC{>_e!5FcfYh~yTut>Bw08kf=1zmn zZrhvabcD^`8+?%5IxxvwRUUS4O+qVtGU<&WUHnv0>uCBqe)5R#ri)K+{`n+vK_Fwp z7uGf<>~LxvDtX!iOg=_ug(otpa>plaXgl&A;h{RJ>M!UcId1y-HYXMdf&QW=gh#G5 zM!_W4^ihvnn+3Nb)U@qOM6Xny$*5rV>S1u{Hb)`ZtZk@VjQ~g!A_Hv$%hG!rt&2K0 zPVV}CbV=19H_Ti&`eS~`e@}n5ce~#q{zw>JOdH+@6Vpq1>7}?a*~o3dsg`0#e3f4# z_r{jqBEF7LwwZj<9^t@^ll~M!i|Ocj2Yi}iq?$(gNVi-4?;G>UUzPp$ep&tAvn=zH zOVNm!f+dY&%0=4(|8Ae(clyCNbD?IJMJ;mQ=@hRTg#BAk=Q(HC;>lX8f(9#<-_B(& zp4U)6LXCggn?>iXN9(SII9rUGMoqi#)Ce(Jw-*}Xep+{$yx$D#*T!W2YOVXr$|$Y znls6rTea3a5;_R%3GDJ#C+9cjdzo4t;{CPJxath`ALh#aN3S)^-*|j9o_%GYTn*QR zr$Rk|`EqG!sZcXc#6Sz&BZlfsh+}$gMG8-)m^dm8w7*xxvs5_JW9 z(?oBR;E0Mm%Nx>4vWnUn9|*aS#{6KY6@V ze?G&liITxpW72y@BZpCCsF@eSE;3I+f zO4N=A#`HnqQAvn75ETtpFSg-8)@A(N`XGj5iv-7fUbmr(i&i^vO_#SQVcG|fM694Y zBwaWCl>g zl1wK}qhTJJV8rqiI6;-B{OQ!Wm&?MtwC}u#dEPnkSCp@<&l2W0>V9@Vjs=Hd$_011 z$$S3+){{*FB_PMF4dpA66tRCrbOpfOh=0k_SsUj2}_&j_LIQ=C}W1rZ1$TE9zk`mYb*)zhdsi^vT#pQHF9RJNN@agY7_}7m= zM;`AK{fvL;`*ll@G&=tLv9r2onC8cO6Dtd+9@Ni4BT|2k*nRnNe)Ymfm18CXoL;Q* zwx#SY-Zt^U`g({e=)=A%gC;{qf1bZQxAFNw;^Vgy@fRO;!wsG!5&>VM9)kZZe?0Zy z!qtK(ZYQx(4wLN9#!R#>8ecsF1--X)gJXY!CrDRQ16zn7q*lT)d8hNP3f#v?Pp#|Wn7!UX@ zyhw;d*Us5~xf)5WMoCiVw05tD&Iq3L11N`=+!eu=X0oIq3)7|)O-$b!gtk{M-_}yn zgwv;ooxuisEZk%Owg5j(XDI0fdv1EZ!nk=}otaG}?7xcrV>GcZJs+VaJSvjdci-Km zt-z`AiD$4tQFukGU+8dQ#^c9~IKg$_f~OJH^(VQ&bI)Z0k%-^)cd+NV_=*3IqPu=; z>h0qIz63VL7|kf@n1FPHqsB-_hk$g0qf^~RBPiV>EnpDRqK-=!;``qXKdA;8bEuc9ey0cWM8~cS53aXfblDw;Rw7{K_r>SgfBDMK_%9_uK zCM0WnQn~qiuS)dCqEXKVEZ7}2H>;LhB|Wgg=Y+KCSv2~brz|G??c{vdJtKK+!;oHO zzL5`q87;OHbj{Hx13G6~DfVK6#oQ_03{b+Dp?PM3KYub=8+vt|UR-j}Ih1bj zZ<2)#)s}`9_bXD&Ci6xlTdZ)N7nvzYCdMs6JU=J1DHYn_>8|}X#GFFU1FnQ}up2j> z%;8W%M4^kVot_Fsv8BdA-T@=M?fc2l#;-6~eK_!qft?(Xg%99QOx2-M%CkWdHh_2s zyhz{RWe-3`y1oM6fM%xgmBn#QJ_-PlEFVF}5bP6=IK}()!$XsW61Xn^6%iMG4gQ4X z`0I6L7IFmzl$N8$0}U0D#&q-y6Nn|4GzN6qvh`nx^Py;Xowxg&T3*t&MFhj3K?+U- z?Dx)7M0(6IbL!fe*G>qxKAR*s6vcQ&lqx3)j-DMSQ->^PDW-o{T#35bN+6UdHJYfK z1T7U1^a(x3hflFx(wrJRbmFxl{?g*v{`P^7UlZKyuL%NKu#-X&x))Kp8N`%exS=ci z4$`eeQLtackHM+kfKA#+Aqg!Zrw2bAY!oH&Md-4lfIe^%Gat+>PF%tbs{kPD#5ml0 z!=;8DId?g``XHL@rVpPFs*8fVGLtF90n6?J_e?P-U7lzy2D>P7%JyiN8ktS4v`WgX zNa)Sw<9c~^@8~|9frKq(l;6Ad!mV_H$?6tx5S8n>4CQ`xh5FPiF7m$29&{KB%;kstRjF zlCYBmV3|du66^jH{y+x6RBpA#-k-N5 z=czPSt`Dpkp5KyGUW!yR&OhJcp!g=HSqD>W*My9aYF23iH(Y3TYC_IZo6n8|D)j=Y z{$Z+c5A#C~rl&L8JNKW00^8vqdno=@PMAvM!P<>PRqDeB9++0#M{18Aa!>D`#ae|0 zA9GCN-ae>Q_FXCb;>v%GZ5dK!H>C=Y7wcIu94Astw5AS^k56_FT1_72dj#AsOq$AS zRQfGdZE|oPn19y!u|wlwP3faram-lL!Ha(n^LG#K-`t;y+V596$ct(O(=bm|0xMMl zg(1O{?NWpPq}qf(jR`;gE&r*=q~=bi;DZ2GWeZ-8khw*>$IBTI7%NDK1iU~LT(WUr zZerodxhtUtm@?01DZy}R6liGMe$O_)e@vD-(NnD86E1iRYBPh~8Js@Lr(Nm;bt9*< z>^!?eWR`XtHkWfHA_gVL-7wEtnM`DNOhTlCLBh&|UF5P4PGnWSD%t;7FJxbtM}gQ; zdgmar?9t;nz9(nUO05-lgHR@dErIvA%Gwe6pPY!W_+9;OHsuZ>LzY*j#+#e$>~BwG zZN9U?SZpm>vMuEy-(>Gz*C8ruobK1_mzo zyKqs^s#+vW$aGo=`XyUu$ND(edQD@IOYiaKox^P0fStd{6)ouC8G(+_!r>A*;#gkb zxj&@WR^VU!zz2o%Xc%zj;C2-QqqmbT&!k>^Q{U6qp?_E9j@AzePzhn zP0#h{gCBZ4EPpJ`Y}mSGCpIiu;dB&vN~#enwK(N*3dOrV-t~B7>-c$C(*PId558Ve zis19%`rD>bJ}S~ZY@(N*s^#s9b%H~uq~}pY4BV_8cI5_p)DH+?VJu!d;8U!E+~7;W zen_7aNQv@@U+j7ksD8*OCruF(PKkw;(Zz@pcS;MScng%@3an*t66et_xwFnzTvgv! zdPDvlNirfxGJOM^JWL;am^fDEJ_!u5P}e@4abCH0L05RHTdS>gswc0DqT4m(_A4%jC`j8KZ34eidsCC13L-1Y zup7(F@Z)GP%Kc&mquWpS#Lg(ip_RTL$A3Gt@;m8UE&N}7al055__WjSp~|=IIaLQ% zyQSP;L=ShPq`+_A|Ba~X^^m}oT`|1*H%(OoqoWq*vPQnI&6i|JLw;5qpU3LD{hq1D zGcUR~tLQ>v1jh9xFs}Yw%n6DH%u`Q-i!8g(#21eEmY}hB(r=wwKJV-uKJ|EJdF<8g z{xB+@YbfwpK)7n6J6lY`ebu<4^YNB0exaT_gQ{Y2_XK`*q`Xv#(T@%6>eA!OY487H z+gK^y^Ia)Son7opd#pOl{xOF#m{Aa$U9Y?q5?jcYl?Tq>jsbB7eAS-zI1UnY-;&i| zNu18CkLHW>SAM2sA-`|@ z<+g=dH`C>PeJr7Qg1f#JVvVu0rc<@~dA9q7=cWgEovq~~TiYK(>sML9jw*x;(c1RP zg%n|9?@EXW?|=UbGsocms7uLlk1V$R zWbb7205WPafH|ID+WMx_oSip&M9CYD&q5kzw@u3EI$tfh6>Il>K(>;o(5-7j67|~| zau!;4c~XP(7+d;k?#Dgnn|uEW*spLKlogef?{hB}dE`lhkgGTr)6Ct!>3sw=2>Lgochxms`yg zurKyPK|>!vr>$2&MhXtM%g-H`Gr*{&cwK^|LStl_^-cN?tu}?eR;U&!HqIav4?@BTtqHx@3QIddHiNLv{=ZBTQ7#5&l zX0By;Pq6=P0p20$MbPFqwHNvX!JWS(AMWA zsQvmovjP`fPD9rPquz#G&*=X0zGwRV?_GiJJ7W*|8MtP)=(eh#JysXU1iz~I9CJ9+ zr`Y5VLQ6U-j+J*EDN$LE7bVuI}X_FQYy@{5-T5QEb+(kf3O& zb+#55N_{&4p5u*G)4J4q?2MnuzYN&!=LGb`6R0AE3$i*wLr)J4IKv;!YrX3;uASJT zl_9m|*!*R1^hDmL^z09K;NMm5 z*@=zC%x~RrGA|o$S@d51yotvG`Xc+B=tq>b6SJ;%yQOh(w)V03G98a3y<&@fK_f22Y~PvG zFImcc197C~Ue(#$q@bsdrumI4)Ozp9{A(FJr3er=?y0{xQsHUKaVzyf)^T^2ihT*k zR_*YqxpO)E%k9ftxczjQg=~;-cwqKLBcQ;)Lv81s$`7{PU!{)%JYkl z@19(`YxJwCv%h>FADorPe|dITo(89KNyPbT`7*MdwBE0fd3RZ2Fx^JuN;1PYWBT{M zC!?#iIc|Fi1Nl^d^fGdxqy{C*#TJ4g=+OX4FNp>;@G}6VR3Q`)5FWhRka1LYCN6Cd zEkzsnIW+*YRjQ7u@vHiy7xSfMyXwG!DL?v4MHBPTI0E1=68 zyssU1r>2-e*q#7J6|D{dPibVfOnkp$XHa%Tia06%qt5tE*rLc2*a*q=S1q3QH_-g^tQ;KlZ_ye{=!4}5zY}S?YNo#h= z;V5GkdTU5!CchhqGt!u>gX1!KOx)maA?guaQ@Og@=&2ZhT9&)MC_tBYJYEv;3dSTu=x1x>$@2N(jjqByQCwHcIuCccVbp0B1)P~r#HZBJyo}#2s%lEcoZP3-b z*!zm2Q6}WgH!k#@y!^!UpxBR&cj8F0v-wq*dvq59$|jxH2V{)SeE!feNNYN-$Bmmz z+>?z9$ze$U_1$Ma%Ubb8j;s&IkI>WqGH>Q+EcqV2e)%6q3yG0Y1dte@0JA7c-#%aV zT7BKM-&)26ZBXzrdM)5@93@CC+N7GS6Wx!)dcfMom^mHf9rs{2b!jv3`MJaG(c0b8 zk-kh!X~BmaR9KHd!Ltg#OQ_D3D4ow)~ ziN$!eCMVl@vMx9*do8y*`K$YEXkVu-f0V=4Ew$bTuUy+G_x|<;KjHds^$jasSFfS; zWGd7msaZ=R4J~W5?%=d=+G1a#-D_+=Qe6K1Q_E(8UkJ0}*_ApNzc1`Uu&-dv!pOX{ z&)cBsMfN`tw*!1Sko(dDyo@rz{8s~127h(>ek^^oa8-F@Xf@Dp={V(M0 zmHF`Enq*Ao+^~>G3k$Db23wnP5yY&GQOXY_F+@I|^G1GZRO9F9@=gqMT^*x0HVeCB^2C6{IVr_L!H8N+t7U0y z7XH8Tz;C1b7qJ=bAuOdQc`-=1cyTNx*ZquneWUtB2rf4&;dDouBn-q*YRxe0YC!pH z65!li=$7G#OS^>g6%we-T_>|y_1Elq&_@M`{B7XGPW2LoUu4TDopX-o?`SF&?odgm zUWbSvb(mb#j-YWq64mMZ*g~v%7$!P!Dn3&?t77r69l|t&dSI|T^*Usvy#isst*dA- zXtrpA)glMlTvSb}eYzR=I!M$qEfGEsLH68s@5X7g)tk>`s<7(P6NZ?MvVDU#I73j1 zBySum)S#Ggg<%AkP#bWF=>_<{%1DCG!j15zC_}ow-vOreK}(?efTl?lGt0A#LHo+U zo^GNC$vh}T29Rg|q_rwiEV=XKt+PX4 zT0G(+Lm@VE3u)7AYacx@N#0JwKrJ9sPQ4G0uVSVp+I+4-+OU5pbf`GTu_BZ@GRuYn zjQE(1^d%1ucni2s@jP;8E6g1HQG?I|(jD}}sWgX)D#R(xL4yjsGYoeHB5smVtA^K- z=Gfu{1D0?5tPp(kWEPuz23{D59L-+$NtuZYw$QnFJ;EnwWY>JnV8WSYxo?*z*=yMu zy7X`NbyyBt^z;HYaABFwBS9f_b|jEa26dJ(6TvjqmrV>ANG@Z9i|5h*c=L_?T ze!lU3qY)9QoN>P54b}T=l`(`=26lXGv4qs&=kQO$@5f+#4I%NY7V(Rz2Y<5=Di7|D zQNtfSxY7RMOMtLi0XZC$#xUj<(PX%YeEJ?P^+K_3YIbER zeiV(N!tBD&(iBn;a@~&(KgVZN5BHc!d?4_cAV*YX`T9m8PgUZW(LX{eyByoQIO{c6 z<~8b<#DkDeDrtYD;cRBZc-<1 zP~~Q1iZD=3E~?iJ!&7w=gN-)W=NG8VXN47z9wfF?Fj%8Rk8}niGaDW#Q!x-JoBAWE zSx9T~RJNfwSC_7v#OCK-5+Mt%G%jsuWbp!=W4-7D62rL?EbJkyp%gyx_3xsw=&BTS zy^4}eV>uWXlh(WMC(Lnv_A>N2E!RB>5&&`m@y!dP6G)=0*m^!VTcuD0Hy&+O1?-@l zp{?9d9u#yhR$83I)=R6P;AK{y%B+LH*|c<=(Meddbj1c51eSx;Fgg%HNU*Xz`N5(E z0QT8cVRj<9Sp4`9a=2Ib?x?;d!w^ zU)9C8W~?GPS~{WFRV@Fd8pP*$cAq4SH_r7^n4B`p3rdZVU2fM9!hiXb#*Ypz(UB{t z2QwjCye86}wO%j&e!Rk2N)Bbo38HRD|Q{C5GYhpw+P>TEE{qzPpm zG+G!mX?Ja4x#36hRpU?GB0@a=ViNAj43Q#Ifw&NQ3AG3+Fe!?!EZOjTYspPH{vk~#Q;>19OND82O-+f=Zg&tNGGZ=v|JecFvssi?!}n2 zbj|YoVy29L4wL-nzU)F-O__l3TxrK(>0i=QH(A|YA1_$^Fil{M;z(w7EaWUR4RxjS z>1|`Ev(qTdod^i_I6Lp6TKk$$NdVWa>9okp+#Af}NgBX%?H9u+6$)5%%yb19R|=F1BsPFh+Agabm=@SS;Hu^90(k)0x7NJ z_J27t^Lyq_DK^E1l1p5?>oI__f${h>+~%x2`)wD?t^y+$lM`66%t4aS zm?h(TRg8QfzBucX0hxT0>;DMN8SCGYWLCmGns@vz!6#1mkarpU1{~fDFu9GR*U9MG zeJR#M^x~Id*9S%3dnNVFzZnJuQFPxvBfZ~2B(Zv+_mR#nNlWKKL*aiYoJS13ycCBhGoU$qX#C1lT zZ2zS4cQyzG4fJ@74*Pgb%ZjPF)-{^Z{kn{sz|NT)WA;vndPG>4G=Eu#s`T(@pvgBJ~)wzqUEzF6B+#FG6wU(Fe$K4!G(a_j!cHH$3 zeeCC|D)DW;(K2ebBCs<&3f{kZvnG*?@$@AI+I>&nffV0;!-@Ou+n4Yuw#Dx}w+8Lw z3}SwAK(c$?Z*Fm(vh=)e4Q5oc%I6I;F$ttL!& ziO7${$iHp&oo9M!7FhR4Mxs3KuB!O{lqXZ4%=KYUStd82xOQAWr>q+wMO1%AI+X8k zaE2B2*?erX-2f94b?M+$?Zbep^^$)$LW`ri-Vr-lrl;F9V!P%g-q1}uUEx%BQtV0K2}h&ZhlEx zqw3mj7+FeuT>+i&Ro~Pag#j9hm(p^7>0V&4&F9@b4%$1ms47~!#DSy&qZcc=zTOK1 ze3FwyZ)5APtLMsom9V1aI#p{Ys?Q!VQyiE3wj0rxfvHGP~L`&GvQ=E zo(gSV*pQ^YI;Cz9vW#u>q<|g`jI1P{M=_-iGnJ_G!Y~MJ4`RiLehplL&rGsqeTIvoLn`a{wJ+6=@}K~6M6B3 z45*->XULF{CTS;F3@g^bn&hxUk)6q^o7hBE^ygfeh2i|~IuU`})#cp!j0b<7jg~9- zRe?eMa4ixYvzmg>Afl>QtJn#asvlfY9(c#?nh?ueU-@X32n)ef=bu-6bG=_9NzbX) z9DCe+a~eos6y^FuO-P)$H}5g$**Oz<^Rg*S>TS#Z@40~#U+fxlsDbDXBIa!3oG-QDYf-6pn@2k%Uvj?2r07e~fl||Aqs>F{ zVRgj@+XsXjae2{gZo>lWSkda0IYG1QEQ)qYVpmchJaXzH4=@erq(3-@dccKZI6_4Gp+y^7IQ~zyW6Z9TMecn#O0EapT_X z_rM~gdHs?fZ?$PV&%3s$mCj1)dvLUA1ir63Z}p`8LpuXM@@faL z7cU2g7fjj54+;D@^E5uXa7E{31D{yT8`%wOGvxEw_&2|FJ41z%q=41=R|98kqc4!V z`^DE1WDmLS8}B!EzQz4{^Pn{1w@^bx0)NF~&Q$@NWR($Ts}C=3ud0qWiElaOorx&g zt2~Bk_;W24;mUpgYWvREs&74$ajot1Pg`_qCgSH<>bM&Prbh7CoXT&k)dR6uQWo$S ztNQsgMJsXe9Za#39!UI(#jo02UrL_0h*vfl#%iNsEM8=g4M4JLMpT)J_(jc)<@>6@ z>dOcwZw<RRa8Kt#6iyi+kav_SNt5V8qnyF|hjL`xJeMnu|2ryQnx@umMw~vI!|S z_|)3O43j+j20-I$=b>OJntWPi2yqjFPTkw`;`kcTFUqoc(vw;|E*KghGOkqyXPqGa z5|s$B69R~9+EisK6cek?SyFbr`bu}ZY`FLnIcyR$&4!fD)`WMI6raL~SX7OFy4qak zH9s!;(Ckaul;$jIb+_#Adir>$RpG>rCJpi^s3yLTO_ueQ!i zB{hnd2IQjacrC@P4Y{76aR6dcHu z)0)4?>V$vO{85C|@iqGqlxsuW^J^W0f$K9=5h$a*jdJ+!&L1ru`|HP zYzCyb@J+2yYLb%&yffdAw7$V~J4{p*# z$qKsDGBACTL5y$9rQ4Dkzr|+TMU=QaMznI~sA!$h!}#V^M#jYpMHUUWl<| zC`&&9W+kYWZD1hGg7#03-b)h_2^&@O%%6?(V2I7P{e0U+gE3f*@>a|OV|XH17%6~)x<`|4 zF|aAO3Oe~b%S`z!7#c75t#~}iOp*6#y30YG(#vf#3{;=TwlKFqOes5YV(^}tO3Ph1 z&xe>rwf+N!qnz{9Ch#?wR}8n8L5~)Jecv)y|Ir{!7Ojoq_ItH|R*BaU$t5Iri{ONH zMh%%FwkQpGxLB20^-opi4xmK?h~?=0bgxa5;=CE~{I{C#mTo-es}}szxJtJ19GGrE z4KlgGa9w&fRD)sc`)qrS)b|GlAJcG2tL&+05R&)3ab>ZJe(69^fK@q0tR+zq>^>5M9IAgs0;&8--Tb z3Q_~Z^^jB{@TM}wnLObXrP-l8lOqLZ9^=0O7F+(T^V-s_mt8z9`tn}eCnXOr| zrLyybD{zr9oaS&}tsR?qwQrL{wlZCn?l1#rFu=A`d;&1of?f1;Dzo@b$M|R#aXmti z{f3aTii=t<(rTOXdu>iTSmbVsfmNR3^PQ9k6xD&ZHSxVo8WJl<5SC@h6Vr9q`b9Jn zOj}s z0+I^~rDs%Cf``dtB83Urp4vho-|m0i5r1)V+b{0lw^C33{0c1AqfiPxnRMgRj8~?@ z;FDr`gQpVre(fxOwkmb2_IdMcSv6>HoTtt;ml7}0Wuki!ow$ClW}4gpxGs52{pO;F zjI4d}aUmwC=44f8bszshQn)C$<+WH}mD=do?7M7&intyF?uJ8U(L}^f+j0)~%Tpo2 z|5`VmG|m~sek;o}!k?hSn34c+Ld5Zn91o!voLnXrKjr3resyeI7;UK9KAUS8u$VPW z68-+^&m~r)6)N(_u#ALDq}6TAlWWh;PU=1)Gq1Hl!+%UTohP-0%%c=Irq(lH3*N;9 zhh0`zUZ8UP&ZYC#)^j>7WnS_x)TcpT%(~4XVOXlMS`?BZZyoNO<$)Qtl`IsIoM{16 z%!_I(YPaX9JjT*#(k{IK$z~lYMC>5;6r7Vu5bGsqLiJUtL>bFnx3|^e#Y7$3N~TNt zvUL=-Ha11K`CCVu@UF;9w8~3eTQ@DRkPWb%b1s|%>w0~GL7PqTeCm2*^peAv#~qME zEvr~kuBdj6Q&ujh76pCZCW9wHnW@qt07(ww#f%YA2%TMTn;Kw5akvJt;fbJ20pbCg z79Ki}&Pif@$grM-bt2s1Ox(Wc>BYdOn1Eck?L1Txui2u{C{(YqG>mDaT|E~Yqen1z z86;?jiksQ+kV9m7C0vu}DVFECF@UI*6CXeHgaLG%DfBy5mzY*;J9facB>0tMbzc2z zlrR|@4Xl$bF1_cJWeB>#q0zhmZC~*I8LbJf(R?i|IU_6l7`;2A!yv)PDhyyoPf zbY#7c6cK|b(XSH4bp(;N#}1$C9BwAMo*RD&Tj1L4JG6P_C*FwHn@DW{og4s4#$L`5 zgc97Ka(|3P9Gl#3Pj3f0&F9nTsXrp9xF^s&O0;5jf-keQkj`}9G) ze8C0IMU$U4fsSTOHY{6 zXRR)`V+HhLq6`AA8}X#4n>US{>e_QZ@i%WX&RsQPZ#U*>F=i8NDbiFxRZz|241$da zcobLkBgZncP?Iaex!wLIhxKJO+e~R2-0AXB!x8rifv_9IsGJS%KvnYumQd+hcAKtp z;#q3AcD_L0Xbcm5$VMw6Un+J%2wPrc@t7-QzKXZMD?!XYLyDyIu5&C%%%AlVxB*euc8%juh1E{ts+Hy|F_~M{h@(yC zEnhn)F%n8rD%!-`WB%4wk;CDrB*6+}4W?AGij5{qZ5nA>FE}UU!hcl5{j8O<&fE|a z0LJ?T@Qq_6O~DcSG=0y?Gnsmu+=ltD0DvwQt!DE!Al<28y%g6?`RF10l0)v3f~~KE zajg<^K+Q_;*}0QE<)576m>{xuFkl z0i?Rn=)%(^NEBFC+tqCc`J!sIIcu$LyljMRnt`HhD_9o(P1>MECgS+6tFSmHr(8h& zwJXOe4y)H}2C^DF@A_;u|B+NyTux8fUbFa0>Wjt({wJ2gK6R3 z&O~H{p%ZYy*6^vi_6j_a=JkO?a?VdCq1x7JOZm1QXd+u{-0d#>n>Xc5;T9h2Q?J&v z$*SdPCw2kMc*Uy4D^UrF%lh6RDqO>4y>vHd)fF$I)l%b4^Hfc%&weZ>ey5O;oeJU| z2Z_8vfM*eQRM5G;%=-rMRS{rE1A1OXx{(4ZXuuOifEB8%K|JCdK236ik~KTs2*?)^ z?_=Q%{S>@?ASt=Do2Txger56-IhJL)k z(<_e*cj+pc28(VJ19U~Q9zjk|c4ZgA+z23@ zZcb9f>aw61huxdEj~_-xsy8h(9N9Ou=Yh&wl5WjQj>suV?}6)+ojwlSri4kf=_{=) zXkKCS_*wAqGPjP`xB4fN>irywWJ;Y=E?9j*RDDq6l`ZCaXEXn@*i^wK+e8=6W%uzG z@Z}#04wCYbh7LcW%v(#EGb>m3mQp?yAT$>w)(^np9G9BDtNe!A&CsruC&He4i(l4H zOF4ZqKJS)=SI*%U%j4Gg94TYANoVKnQyPN_IBS#WJ71HZN^4t7)-jNr2N3u~h!oY` zdou&|5z@vz)8(h|jsa;4aK_Ivm=*)*#4~fZAR@PKS{)Bazbl>|h8_O(|b zy)lynmB7y#?V_jB^q!g1B@=FU$?y!>$&0SG>*-9|Slb79!3UWhrHw!|WQ4Df4 zSXE07HyVD<2wSz()+BXF1Hdo&-^x|`C%Kyr)`xzp=NxvqawuPT3KUrXfv2MwlDC^r+b`BS*%m{o~dLGw>_-p zfdqZ1s*Ya68rg@3#ty?vW9hz|#KT^A_XQ<)J)eCR^PDsP;A#jL`MOl~d$%EC{Ve$H zYqp>&&Kz3t5KxG-Bi3pPZ?pqSO``p{djAi5pG`UHy&!8pSAxug^M6FtD=gzzTO-wP zQZ;-da}nFzW)Yxhh$)w;^a1JzAt$zftAU+;ZamylV%+INxQp+-b;l@u6#9a6l(#RF zXEsx|8Q1hUdRu*+Cxj#Yt!bG`amo0|2;i>aGd->LXk~;%pD8w zeZkx9!UO~_O5vRnCNSmE=ASd0J^hZgq)e7t^*lZJg=5V;)R)m@gE$a{7gr(}(9U-Z z8{(a3nf}Oc#6j2%eJQ9%I5XyVXdiCr5}_L1`06N}SAx<$uyQ}L?y}J38@^DvK74Iz z1hc~@&$8X@&sN{U_))daj6w>j&bkQ|?@D;}v5WNY1IhWDxX&hJh9LGfQ6lvF<19mn z*Q`CV7-RSSL0V)AL$_4%Q+L9#ZKw3tyKN2+^rn1bE_uaa{$V5?JYmu6duSZ^# zcWcDwfl5~?W!&o3;HD`M=~b@VFO5V_44LoEaMzh z#aZE2Q?)~xgDSjOV(1J$%eW=$I_A>zTg*}+r8pPvH9LE?y6Nbr{6-#VAC$_)-!V>Y z6M5IX=pb2KqlUoC0-w@j*_@rSAcpVKZK<&KSq4qPtHYajALv2qa?d63tp8R?U&l!Q zFq(p$(s1xBMHrA(kY+JWnV@+*iII7pr=lF?nbCmwjb94PL$r{9R7n6g4Pvm|5H;*k ze5|Ej*~Ebbm~+b2V*UJNvS#x%6ym?WEj|RvX#}#}>d*(_vG5jd$xW<;pGtiQ>d(y^ z?L?fX4jB1iR`sky^U5UXx7tXAXVIi69xIi4(cTj&HuBQjc z86z`t)tmMB`5acB4+Jp@2yxHZD5fFf)Vvyq)dNWkLOuzS*_FB(0_KH7V=NxJ{O^@4 zKCv`rPT`e<*E6?2@8GQ0t)j|LLu&^punWBo#t{-@i6Sn0ko|~8t6audI`jS6JtOP% z2&JH=+{(EuXH(4I6zk9CD96?p+nAGs9E10)^5)|?Uh_|<`2v|7ob+oNbSA6h4}^n3X0ZUZJ(P$TAQ0wqNp# z_BeBG^E&&N;5e_~vpJk~;j&J+_;Kk($>mgmclF`>BaQa263~C5zPx*Wi~hokn35fJ zZAGp5rMHg_l(bkn4}^0hN_Rq6x$fWZ3IF@EYU`!NW#EGaeyNf^g%451Ev+ ztm0WzyGfb{GOf;e)0alXHLYqy3l>d=i{jW>h0wlh!BRuT$E_o$PPc=F=I=ZTe!vCX zf+>jIU4?hQUSoYab^pnt>65BEW}(v6)YY7hw?FhS)vd1KxysVIf!4;@pX`fD0?`_` zP0oZKvrbOoIPy*iCbylXa1X`n5OPoXzFW;dFca;t*)>Cpp%vtS4{~r+V>&iF?_mQD zCtl;>5;zt3fMVl146%2WH>TtBrHEBgaB@P`x7~c1Izhf^enV(hIbDja!wrW52D2fd zD0=T+za)lGr-CI%`~F`Xd}if!wsz4wbsXz4{*kH$w({yf*4;iVabB}4f~IELlzuN* zf|nM&hMD0B=b!BlZIj=57~_YzJ$a3*Zrf4cY`74u8uUosdHZ^3+wR%aOfR@l-IBL4 zNtrC`W{v|W@K~lme62#aY=z7B^Z*{FA)+N1;gMSSjUj(gvRAofy|eGi@KC{7`iIDY zlAH3zP`=c=9Lp}=QT(e89=t;ROZK+LKJ;n+zwFm!SN|@zI5~tUBzuWpYMjY z9A3nW4FnPs4uJSGE@`419O3u7t6t z;LQfVg~f+WXVGr85387r;ZBxwCzZwzbQ;#bFFSSEzZUu4yo$w-(E5xcs@JcKw>KLu zA-d%}KKAZuCKP$yCF}aKg6mu^IY~BcE6j@kWog(!gc2?IUMdtl8#*(5;>Cbsix*6W z^0sO@gaY|Mhd|Z@;$tsSlKmF1K}%SXme1pf5U^Rl$XG|JwieZvUDSR&tqu|6Y)(fP zVMOmnOu|#oz01QS2^AK&&SH{Ig`ffbo+p%BsV2jX!GOn+2GgMe;BK@;RV@@;?qt+v zODgBqr!+qP@`Ysr;gSwv$RUj%Xl>YF_$JM2aQdkD?3E)P4^LaC;33mOy<7&MxqD9rM!xA~x zbSUDs>J<&28arWTQ%t?-xoG46!kyWUCr>%`yx8%06Lf|trI)0LR?DHry7Y%FV zoUg_Xj3Dq-WIpkx(F5l1Nm>Ty4_qFOztCT=EaYfDp0I%Xh(Kxz>GP)e9awzM%#wZ( z!Q+LiEtS@=cHYgG!5A zYk7Kv%}OKXpEmB=Ze)nzWR5ZYt&5)WXxr7rGpP!RUp4M-gGG1!;3k44fp=0MPC5l6 z?Ws$?0SoQZmj8|f1y2bk-VZsCV+Pp&tN@#Z=^whi33PDyXy3dF?XcNYJ0E(!7`h{@1Nt+EYJEbN7 z05ST${+dB__LIGmb%g>T6ILU(6=Qr65?)q+*Us47=P&5$^7;A*CzFmP+39%MCFs@hg*j!*E%p1`9ShGeywetWzS*m@I_x_ zO8Uj_fijjrJ1vp2lDr&Hp5;T(oA_{r%nd|$ax>#NP4B$!D8SVP$wQM%(aEIq{iR%e z^FMyOe|>xxL0Y85EJ4GGT-@!qk+Kdzx~n2X>Wm=L`h&1cfi70E zy&Ms5&ex+h$g7FU2#cVC1sKk1*j?uk%zYq4Qi~bdwVz@iLE~~Gk?AW@@GCJQsF&P; z!AT&P`*6`l{A|YFEZ4UFQ(NH;riZ~X+aMpz67Di<1Fo;1{@O&JiOs>Z5i5}5Dz|JD z>+t}|@U*zSm|db;ixF2^vN}4ZWpuMO@9M|J{Dydud#tU~YKof^JXM^Q-xix{PvRuV zH^DpV=?9XY1`;*hl`<8S>5EYB6=#K^k7}ys9_2ju`}F6(93FXQ7l$?Y42gCI%)xY} zJuM#z-)PUS&DE57nR9)1;StIEV&+uRuSeZjdadhozPKLtN6g+j!jZjtx*7MnUUmMM z>-jIu=UM#vC3Z-9HZ#K+_K>ONC-wX&so^NNw0!-##E+S4reC~ohwY1`=_>FKn037T zk0DElmp|+Cx9H#2tGNxoL2-Aly;V1-OeTYNXAKLI#E+k5oE+%L={g9JUgMCElXXLPt-?52KHmEsMiF-^ z`)Bo3^eH#p3QundzvDPZOm?xIE@;=7$yZjrmH*>I8-kRXICyH(;=-d{IFC;5J3-0?*As2e%LIC zCW8DL%HW6hul^5PK%~E;psLB8UON~1av-+RGJYW(PDr$GyBxLQ88UFT6lw&Aah(y` z9n3)?Xh?=sSRMl7g6UZy|H1?}IJS3q26n&zA4mphkR64IHz!B|n@NQ|m@{wFHGK;( zcrb<((gF}T0x*Dr4v2(TIJiIn11sizIy-I!y_u`(q8IQwq8O zB?HL`0_=(Z5j?uVtE$m^!3V^^gRqE$n7hO1D$=tOBoPzZthXV%q4k;w5$BRPoqdgDBJrU*55;f7} zm8>gVtyw(Fk zMQPLjoHJ9clB_dbJlXh^2wb_^=na7y&>GaH=Hx)C;;hMvL096t+o%!R2&~NOkt z^;4_Mt2!h}!Xm+?ZF0b>OS{4ojUv&jq8O~O%DeQO)Toc^T#c2d6Qa1Q48G$rW1RwRI`RF$9}dNd=P$7BXNLC)gEKPzDU}p&4=;Bx_3s z!q|yH8@}0>uwkHdDa(sAo^jbSeSn5)!vhfuv+QCnGb0usNV6MC23Po;Kx3RnFox10 z12>Q!SScB(X&naAm$y8Y=Ssyu+nsjwow_O6#wi|~X-O7h$Yqor>FI(UFox^7NO0hS zWFUZ~=@^&sv>gabqhW@aA(mu-g?@9NV2LwVqr)&v0UyW#V)03BU>?cYwc7ziU^|#= zX`mu|1Xlbu>jK7Vakkc38`G(_apAC-`B+jQ0N}~8RtYz9d53Z%mX66VJkSRJb~B)~ zg-cX8oQ))cM=%B>!Z#n#w_Oz=y!PvMNrh*oqk0&PSQ2XOcnxJ?>p=&Atf{QX&=74Y801Y0{Ef;}GE~ zE6of`jwo;X5jdGsvQktz?Kw@l;+JdC3NE{V0^%Dc&XXX|fHFD)E)EQzQ2 zd(bE0!BZ8%9aPS|3SiJ`W%pavtO`A&2*D}wjl7f1q7uALF=iKRr9bN8zBob};Xu@) z46BO40*qBh!Ql*y(3tDNxVt51nmTJ%brGu~lXlA9KwhXssDfjCmRO+` zoGdS1VMF_p6`b6fd8rt_@fHP2Xny$>2ePtYa~Fx}*6ERzW`$P&nYpfV9Mo5NO-*(xg;=-p%u!BoLAwSg_IR)>q0GKSAq$fX<6BPNojb{8y^4`f@zf<5JsV; zmA@I5cB!#`E*4u!0htyyRN$D@Ndd@l6?j3SVVs&}5nA8@7fiUsifL!Er-nuSegfUpzn0N3RX00xx{S~88o{JS6W+~}M5H@O=nieZcigcI! zX~~(%u*9hVR2VdJ85>$jg*J2on!dqD|SK@B#I*#@J#?dF-?^Jd77(+K+hN#Ks06Wpy(&}geui? z5$VJVO7imPJEEY(gneWuP*LNR|OL^+fa zb_xmqviRp$~u zEDHr;L;>O{(ce`9m8M$FHu>)@dFAx%PPb^Kb5<01H{m=-LT5%QT-D#T1H$#px)B_~ zK%qYziS{r(<9m1IN0B-3lk|jg02y!s43L-qgXu1Jl@&Epn1hM21?n?a8SY0bFM?#n zZ=9D!lo)Dp$clcijMr-K%0pn$XpC2E-SX&`7n$=~S&{LTMz|YofgX5CM0UNJ5nD0< z%Neq{v8nwaZ!wyWEtaIwd8ib&mv-!CEtaGl9I$bNq$VD5LmV=w8}K6Qn|b*f>yG9fwPooS!6BPQ*cW+O7IE;F zug|c~m3u3zSl_Oen^YTUWqJA9G2~WT-WIppfid3|>VgKF$}QT+X&ZbQnMQyG`|{R` zJ=vJKnr{Rb=CT#O1{;(~??8N(R#aF2XMmide8+wbp05cTt*=+;TA`v$9F}EQhmo1S zu9||rw^?}y{c)Jm<`}i{$c)#o%SnB6K`wRaf@x6(0dmPGa21s4o#bgma9{w1goa#5 z3y+%g8byv~sAv2ibQ(1|fG87bAi;tLBk3@u@Q4eA%@`_-XzIu}9Su!gjMxmL#Ecs! zx=0jj(j+e(zFo}7(bPkgASHV1@ll~mi40q|bVw0IFNq*$w#- z4m!egu@R}yk3wl4Wm(gvRE8P7#zZ<3t52bcI(Vr!X#@zD8zDABx;2qStt=x#)Cd}dXd%|mzwcKd^3c7&0q#r0Zj zlOj6lbkd<&S({|ds$`c(vL=x{1M1kTuT42%MI+!;01hUNV3G_b%VLsB7nm4(EGAtL z`)squrUH(($3_c|GvFYbZL`cW>&&s=CX>vz*N*#aBdIv^ED`IbGA**r-fOMB&@!tp zxy(9iED?>wyREW>K?AH(2W3&Nza%dfl0|ofYZgy$>99AGpV@Ib0Y*_?QOKo zita24%3$JzwgZFXxy{fb3pNrY9KLQBgqw`48^)$fLb%$3V+;|knEh=dDTqV(-`Y0q zI>$RG(=!pI82-8B^|EYv+Zx|Ih%=sB+q$$h6EUyGb3?mr3aZGQi~z=}ZY~k^g2T7x z$cDZ){+PV~(+DhPV8RF5I$rB$M!5j)09xs~8#Kr;wE=o7S&BnKBcL(AksS*OPg|I_ z`X`QD*uz2%5+Q^76Qf_zh=dTDQ3-EE1&7GVP!K5!nxwQSQYFG1!-+*CLe-Ek-6U7C z`37v#1VdVNL0J^s5GTY2Sl_EA5=J)C2GbSK8%eGnFytLhduByoFViAB}eJYZwN&fvYh6JPArp{6fzt742A}ZnhBp~;sAOKXA%SW!w+51 zmXzqx1z0)^k~VWIj5I?YR3Kuh6jK$;_{k%Daez@gS*9Rui8Zsa;z6)Dn;to;QJ%_4 zB96fSis2yO7D6x-5;3xzK>egq9_f>#wiuG^;4w6$LKILgvq~0L2!-Q;W^Je`&1+&a zo7&taH`^l+Qo2AM-ryA=SD3UJd0!UT9iIfm|!>Cn7Cz3hg&J%5DDp^%Zn5lwO4Mp>um-s28MNFnp zp2$(ZFzGXSu@av$gB(b1W=`J;N|ahU(@TBvC6nq-5yR*fh2m)?FO_L^wx}jb(Me01 zYLik$>6~SDM^r+Dig%oZs#C7is!)U!po)q_rDA4Om&~J(P`M|uaAc!+R4ZAlR7r^c znyEJ%X@)ll+RnR1A`vnWUWiT;qPJIn%TC> zw>8ExE@D3m-{-D&Forc2Vdv-<=~6K);F0SbqqA4#j5S(*RiFzDFm2_QHL+AsOk3HK z8MGp%tqPd73-A~izAz^ambon%PT1hh$zgDV3tb(EjC9v<~h!1 z^^0Bwh>&A^*=%a{N|*F*_5f#aj9~Xd+q<3yE^!G>$JDymJJ>ffz{Wn}SevGltZ??#q1Cm?xd?&_ShfJea(hOnTlJf}hI z>MI$cM+Y5{!hi&l2oHE*03fJ~GL5tm8anlc$&^hX#!!+Dcmh19oHciJfJ`y1R7-D_ z&16V=oJ74O5h(GZ1ezq>FkO6d!TuAcJ^GG zo*2Ox`asVWeH}y~TG0^7ULvrIo$O=S1g{RnX@MH_?e>ZLHg%JjPHr?)qUs`^et7LX z5z~^EG17M?>D5Nryj79>DJIVZOd#PDsZCTXPI#Hdtu`@JecB5Dp!!H1ktXw^VoemT zJgUZ*SKCdgSA3gBj}^clil%Hz$-2inYt(xiq+eN*o`gMXM`4Lek#|z+_gL|sKIz`N zCOwoYGtoF5zTj!3De6y2d9FqhBD<10_X`4oM>GNh{K6RO{)ix;=%D_`^N z56@(i+3wCOu<>WhT|ZM;`xlKceML+7kj?;}7I&E+!jQ{q375kR%Wz4|b;XV4=oZ8v z3&&i|$ApYBFiy!hP0ysv%G8U?fI}5vj)QGZZ;6b~e9rx77mL|U&lJt(B#p5!4S6Mt zbg@hNYz@_500Tgl`K(S3#$T}7i7Usoq-I$_yDz>7{8=ID!9U)`M`)7Lj)y5 z3S5oeB!e3Wz`ck=BytV7Yzv4LjT1n_=OhCIRG9`@&$n~|1wlhDd;{IVhdKcU(KW@@ zDTsqulVHF=I(C4KSOFnG0T_6LHxN=(p-CbzN8kor=x5Mk0(;XYeBo zAVV|!!Mib(B^^N`6r1f8B&kpbK0Xv{G=vW5z!|00Xn5pG)KGY|UH2*GVs@I(rN>1w zW@Jhx(hWpniX*2%=44hK)TIzPZc}DvW`r>Rg@%xbJ#C1Id`Q`yrrC`_J(UP+j>s6S z9SD#R(fynx zRx;j86%tU5MM*8*PT~c1SczN_<`EqVmMq-j$pz|t$*vuoCEW=frRP%x6<%b-YEYHr z5ej9AJqU@wP1@WiVnuq7C4j){}oOcz7F0%&AL2R znjxCu#FqlzDF2PtYAp-`{$GHt%fHnBS7;?5CTI;j&{nj-0|OAjvvf<%fWtA`jBcS9 z$WV+A)S~AkmlK@Mv4~(5Okpx)OJ*4l&s>*xowk!~07q@m-KPvq2(;D7@FSqtKb z4B8ago;}VxP|G83>E+-|c*)E=c+PU=PZLIqi#f~6q|O&w775JHs`?D%{0tOc&9}@C z8DhfjXb+L0R~MuJ5qJ)~fD4m>%kqE&hdEEOM32T?ne`|m%hXRJlnlf?0F64#=EPYA zYT5m*3yd9)n_xCh7!j-@zeWxMDG(`K46-C6yD;P7 z3(S%YoNL%=baKgzS z+yXrq}zaPEg?WRbbvkd03VG1ZF+XZOL4?EFo(KL64J`rluX4fAd}xwC(U{uL#)&@J!U%< z9dBln?v7~h`tEx0+}w5SH0kE=-bgeVZ}MUY*OguKq8)3F9c=0oYCf-tYyt@AZjGEH zj_@victUo3My?p1R>Uq!4U*wWl~{b}?;WT@VTw%Aqv%rYn^=W>ww!?)-xw{Q(H4wB5cS6RvXu>e-cP`kpg>;Ug~nON6z1|CLOLJ&a!J%; zu(j!@+zzPFjuky}N0yw)EX7*OW*e|A?#k&}ABit|qMTc~6yr(gX?TP3ZW9OyOT#!8 z>cF4v+zSoL8R_i*-{{CsW34E(JdE+w-=#9zz;I!ZCd|%+4vR92YAx!)_)D#t>Y}<9 zrt*uSGT^#Q%$`!s+yq#VGGJ^GmuV49$tVK}hy%#icOb}OVEIW5B^U2Y+~FD;V@!L1!xW1xQ!B$%PVq=zE}>yL}G%0 z49^G+DcFnP5DpQr-xQyi%q(n%`6}de*kplN294P4fD4L+&i-{xZ#fKiDMJPP>y<`g z?9^+P$yloufd3@fh%wp9co;aOK$HcT6iN^ESWdlw4So$G41Ud* zfzQI!D3D42%d^lAmbxo2Hv*5z>v`FX5A@9}!cV+7!M^g3|Cj+PsEor1WBU*qF}4k& zK?59e3;d|dGg?r7*<$Bhqmf}+Zq|s=J)Q4D0SrXK0KmX2oNOqtz$*k~^)=sLvKoDU z~8;l+hF$b-?sr{1{~NQ49k1mDz}9%x7rCe6@DH-+S85#L!Z zr3jws;fjFoB5)YtqdkwX$H{7un8lzZ-k{aJyL@<(_P4eEttbj zkAW@R!nQpUL&0=W$<*$3#4YfFccRLxe1-Dm(cXreP?g3*PH;0cTZ7z&R8Vf&j_}Wd z04wbOv=)YrK@S5rUI8~XMfcB*P&UO=9}IzZH?L}Tw~2sv z^R}jUr>1zTCffyfd+hdfS9jHYuSY3WktiqI4kS}wk_A)kNSP-X{by}oUQan>D&?e5 z5~N2NbqZf~S+PkS(PP!(io7u%NV=4jF!q~NFiUypej1$4@r6!?@JKDL>j_f@@7_i& zXHESG;r@vvnbd~@#qg~sfWLTKTS_Q>3ZxJ=&6b`?f|B5&UgUjn!Kszix@U(2X!Sk+ zC?!GeaO;Sv$-uDeslyOgXq}(IG~w9jmYl+v{naxpn#*p17?%%N`8W&CkUC6taVk7K8^`I(ljmx2Pk24TJC=$#j)~JqA@x!2^yP{$H3^ICsI{uv44vADt*+afT=4Cf>REJ&lfjC+7(V+C=eb>Gzql}AaJ zffPW&0KiBy3;-Cgz&e6}19$@nc!ElTfYKvGKAAQ|NLex{eh<;-v zs3g{p)6<)M;M2X~8~)qlJ=2T5)tkNAdjj4Qe%+Tr*G~ch+Be%Y@**?WQ%lp9HOKqP>@*5?M+yFKXh{_dat)yE^!vwqbJ zzUQNT@N>TIAO6wr{nL8_4Y)q>uYKerf7YW%Jhgaftr&KmXz*f8C>g z?-PIelfU*8f73(#=4U?SL%!f^KkzHR`8U4bGx`26rf>5ckz`4eCpT*3h%wSilrLenl&LVI%a|oSjp#Fk z=a4ZxfA;igO(;;JV~F|$Ds;@4O(102q?xiz)rC@DTD`f|Qx6yarofu|DmE-w7tM~0 zElW0R+OcR|sAXFguH3b7!!|Q@q^@4Raqoh4OBXC&vvv!o#cSAbS+|YTt~KRX?_I@i z9u?Zqoy1gwA!;_)xN>wKHf}jXV&1|Zx8(# zIPS^i+4C;{-Mn`G?a>P`H5W$O%D@8=OeiBA3ef_b3K#&V5loW7#6kQ)vVqcr1jc0wNfwKuB;@fsup>NdPg+3>%q{LLa&i zheL6kp)eU$QW;U4F2LbJ83~gi0-O<@sgp)=z#*a$LqV*w!Y+VxX3s{D0B6TaK}C^1@_R zq|iqi8<7)}clb<(6j;b`;?)l;b#&1VQ}qE8ae!nt!%9DN)|o6TmGGTi4@L1r7K6-i z&@RfPFhe2)C4q=k__2US6S$^5(o zG?Uqs!+trOP!%F(l{T4VL46Iz_9U_=f7)No{2k!S>#Hk0WQ ziIQmsr)+U@IYTR~60AF>m1>$Q5-VWv=MC{??t`^MVCOh!#L#81cDwUl50of` zUI;-fu&W{h)#p7^=s+NJBZxOLXbJ~J0)s3(p8~%pI(g`TjvyF809o;hHo#AXw1Zp` zY1gzR z2r1<#Z*s~|qLP)Zbmc4URt6~$A{5Q=#w$Kjk(t1RBXo0#H~27siCCdPur%f_38Knl zE|ZxsLBJSxvJ-0{r6)nDrcsJwO{N^>DauSqRFJ8l18Jq1wtxZ)22h6Z&E+`yVP|A^ zqnEd6hA_&p4}LULm-F0{Kg!9^bn@Aq)Ud@iyg|%A*@+m;WG6tqk>`FmlO4ODMnH=Z z=w_Ic(fbq!qY~X`M-Ouwj=o1ZhzX5gWV4*%khDA#rDr?!^OllMbT~Dgr%d5Fo!JCu zp>$a&X}I$h*0=_t{Ui%avxA-g*Yu`4EUgY+=s6d_-~}*KRcUfyQyrJeN25sH%W-6S zAKv6g9-i=KGto*CPiO&5G*gs|MD?m5aR@}S!qJA@l_h5=!)9cdm54%=BEXIb93!(4 z%Qi$WAN8nLZVDEMswCGX%@s+4y-ggo*Fv-|B2(g;N) zYXp$wiUdrgDN+)0gKyKeq8g#gT|-k=+C)2IpaHg1#mZ1C$h2Ne2&!PZ?bV-lyeKhc zs7~dgP@(QMuj;xCQL80FbD1llSdoGVw2+p2D|M!1yd%iTb#ctZk*0PD%27vKZ6g%c z2>Qxv!WnXLF1}I5aHf^cS1E%nSl|IGSfLq#XvQl#00t-wz#BvTjY%me7qCVYtg%ak z6c8|iO`L&?V9^2SzM(*|=ztGB_}yj*&IN&FJTPmDmXHIh4Z?!%MA#>u9d&^Yq}_&ZNTC}D znDiDU^U%PYS_ik_=UOBV(TIX{KS!A4ze}T<%9MKNUqQFU#aZWpXzwCK7kbfw&da2e zq$+1U`qQD_5QuodBAyt41%4qCrjrw#s_bPiCNhAfN1f^8yb9UNUh8G%#G2IH2{o5e z6s2fWDMP9M<|fSA5~t^_CR}HUf&6aFX0QMTR``V!cnEQO8Z_JkUA&?NgK(7_m8!TN z4?`z|aLkj2qJh~=JfjL1mP#h8MJ;LN^>b0(T;?qAi7Mmk>2Y_OXRNH}&+3a4pY+IF zKRc(3N~crmq_RFYB+Y%~qjS@#zUQE>uMd0-+Irys=Hc1N=U1(B7yPFmBK#>p~L^x1NaKr%N!2zjcvTlUE zBt%gENGn2Q#w!eknls|O1gkWP^RQh48<7& z1`~>9Q91@^)1_(3JN49Xs zk_$wXfdIfEXGq{{dJMo)Py!!B5tFM;RK~JEOcHm+$#4WwoIqMMM8wWyP(tJ#04y2* zL=3!si?|TQNTd-(lwn*dgcdmDXlNx-$V@}rAQe<07wjPtyulkhp&;N`auepQIcCi&N(lr!FE4Co6PB$RI$#7!E*2tf035(8H-QTO`YkAL zgFO_|Av2HP3KKtkgD@LXs$78KkSFJ;FX2c7d@kY^^um_9VmMR^d+t&z>4*<{p$$+D zqJlCJB1rvIGxmTjG4tXUbb!@B?a)jw;C_P-_;DX~b2oXjH+>VW%Af;&ftctK3?d>Q zVF_;p!Z@KIH-GbPRAMUh@92z%t`j5D zGbTKM1@iHnJmDK^<0gNDF>Ufb?eigNvp#(-KXq9as1^d=>gKp_-D39~{OR73x>K`nGcAM`>YbS4>;LI>18Ig~^H7qmb#v_uW` zMD;U2D^x{Av_lirMQap9ZB#)q)I@XiM|}+}ykR|`6P3Kd4ET#wEbB;;M7IpavD!va zaD`7+WJJ`kRJ;(gb|AS>K^k9V$9e?`FN;XbkV&E>Ng_)FJ0(L(a7xg0N%4wA1SL#f zCB3q6RA58^cxzCGq)mYE8_(or(!@m)1y;5(0hkN0;w3{wB@P`>%1nf~j7u4IP+n{% z87cruoFG&v%U|e9Nq}TRW@S|{Qu|syzVxUGD zXn_F;r44OmLIe<2WRXH-B)}-dO*jltN(N8?i&Q|+M%+-h+)GgZVCGfoBvFopQu!27 zL}XP6g%6=d4ihUJtLsNBj95>kMwBH93(K}dgin%8LWBfTFjYe|ga8`wNYs%{Vrxuy zOi*kluaZkqrbY@wbpVO*!mjj0vP2C}NKT)@4WXBNf1ubMo8o|txAr+tj z5`93yYUH=vj0oZEZ(zU!K!794fdw`p5}E-FU;qYQAs$^K6s#cdeA6YWGnuU79qBPU zZ$}_>Qmj<7GEkGFj`HCWArQu361<=fR;L5LK?uI#4_G09LSYM+RFOqFgeFmx^D(3YkDIu319?g)A(G1o^3ZUGprzb|`mEGLhCXL7?1_*5G=hamnH( zof9F@$mb$K)I3k;M8_7)0grk?aVn|Oz{1$dgD)iG8&Y$rgcqg8k~zGicyW!6{4Ms< zww{bnFMdw{h_r6(w@8O>lcI*C*v@>Z zCnLCm_cte^DemZw?y@NJtIA=P4d zhF=&2U^o##z#c$=hA#+*9l&>9*c*V@a&9<=Q*DQGc!zuVc%2xAf!KGdr-@;h3aEgG zm-uvG*m7ccitk5!Wba;m8n1<^(h-=sZba;(@_=0TskB?W45t)e>8Ipnchs{`zyBLOfSc`G^ zg#o#Vb-0Y#IEe3Oj{n#Jco>TvfC}!Xm0$RaCHa+mc!mv`lEpZX6JdxU*#YR7mp|Et zF&U2Qc#64Lkb~HVbGeq?7>C7Jjh%RrbNO`tM45~4Sdyz}nD0l1BRPn1xSM}?lKI$j zPAAm_d6R)SnrqpYDVd9P_>yH9kh}PcSJ{!<*^`ggo|E~4P`Q$|*_VfylQ&tIPsfI( zxsth9l>1qn8(EjP_=hw3klFc$^Ui|#&;Lf{Slu+SY$QZR1hw?g0E>mP9BW8`(G7@Y zRxGf(g!NSffVhO^9IP+|F#)D!^+IS`N-hM#9wf37@dV|{UO%j^TIEZWgiWZ6UHLSp zC9zGWMo{VM!g4V~5EaU9MiE8Cx6aU6v9-8d=3_Q-^sBME6HfU9gQ;(WYz;- z!8p%TW?w-H^2{3s;1$qK3gWRD2>cZQoT5oWb-i!*0z}?iGcNU_2Pju{0tf+Ijs`j) zY6A!#B4~v%*9)Wo+QPyCGKYQtgU>havoLmuKFLEd&0^L>T=dXQl~i}sBEu85iZ#W} z@%pJUa*8<;(#OLpEPB8JCVT|GR?%Dl1P0*4!QgdQ2OmO#!earAa#B4cQ#IuCbp>d1 z<>Kf3_aNZ1#lOQ7tN?SPR>RdCb0+~GXn>0nZg}Nm$cs|mNH45T!_Wv5<`mB?ZefFL z!#+9lo^As-_0i?%cY0;6CU1crG`tV!!5ezP*d%8))3z~}ws;rZb2E?A@4Uy&;v00J zsA@7Sz<0+{-4qOc@1pK!rBi=h9Xk6r))BncO`;iKfbgWi9j%}qpkShK2D-Qk_x;a%SIUES$D-sfH4`yJkCAm8_W-}_zP@BQ8X z9pC|;-Ti&x)m`E3{oeWg;qjf~2_EAKe&X%j-!;DD>)qlDUg0r*-YNdzGydWyzT_j` z;7{J;PyXdCKH^c{;{*QTA)epsUFBWA<#C<{KtAV7KI9X==sUjUS^nMe-RCQw-dUdJ zi9YI|{^LpB=SSY@jUMT7zT#ir;cdR)P5$4z{_4U0=nuZ(b>8e(e&~^&>Xm-!6F%LY zec2P7tuA^~i&|L!Rwl8S5V$Y_!pI=GJ1|ys3j?-vUcA%_7we)WE4m)52G7B+l;j*_ zdal+avm6jkB`dqy`Ueegx80Hq56S30s{#TPqY1h>#sF=X{8+p|WcwaoNIXrE&%pkQ!y99;pl zC)-efwFXPX`l*mY{t#KR>l-i3Ua|zi&T+?j zkYS_@Ae>?sTelG)CF9|RH?u< zN(K%bDsZX)T3u8rFqNu}BgIKfXp#sKa23EY0Ou^#j+R6`np6g_!oZOgQZ<4|B-u|) zjl_XdHqs=LgA!8?eCNzrRU{G{?HuWBq(?HCh;%tQk%-!cR%s>l;cPBTyDd#7o9b>8 zizAU>Scw$Ln>Q$d7&q$xg@q@{kgbGzB?Sx&FrHWp;A6!z7%Ng3mtoAhwd>cgW6OqJ zW;N~ExFg+iVaf$>Q^0?lY6cuQA8*Bp16N+Wd9x$JfhUSJse1K#o2Z!5(Pl_>FCBE4 z`liWCy?W-3G&kj~$8+Jtp*v5$9{3R*-h4Ont)KV%<@A{%-+MZIQygzD=ulg3kvPyC zbid{QS6_6+9l_ju06rLly$j`+~v!Yzp`M`3dadNaa#UeMD+bhhZg+G@7JhTMVv1@|K|){W4Ib=P?@!i?ax z5nP4?_Gad99IhwddhsRVfIaJRIO3WcqB&fEL^>c3nl32E-;jQqDV=J$O=(IZk+|pF zkihjIg?W>BVT+i*2|*%!YX&IaH@j&_B8Kv1TA_cLrYS0Lw%j6~aQxwErg9@P=O>~I zGHC0qxaO+suDtf@>#x8DE9|hu7HceP9{f_zFWh+XiYEgQlA~>&Sb<$6Q639|6t8&y zP?@sagpyhriC94hAs$?I?7FelI$O5y;szzV^v)YEy!19U!Wh={(eDsr3?cBq026F* z!2Ajvu)zRt0z$UpuA%9e_Z@}6h*2D8XQ@XRtFzSYd)k}vn7GJi)G?LyQ1sf;wuDEF}Ek}=C8 z&&VrlJ#xw=@9g!{LRhW!(c^UZ-5Zh78luT8nsf`=V9hkJtm&UM}* zx7_vKsbfxa&6qQda>=m&DYc+{C=IyGxoZu3>0Be&G|9*N#&yk>lbpBIXq%4q;xv;j zdDu*2??TWzvwk)1aF;H-;BL1~@}DkmKX}b-&&?s$Z%-e;;e(qk``de4?K#a@yFj$( zED{0;uywHl8t^sVFvC@lA{Bx-&?H?LNk#?|!GWZtB^B@qIGjKfGB|}NSaBdpp3;&X zB!dhM>B3bABEc>QBqJsf;ZEct!U}wlATf;L192#omcYX#3YlO8=i)#jM$jZNlu8%i zfeK78fB|B`p-L8#LvW~YBoX8aRvOU-5;Vdi8&OCKv(l0TgoGzvq#_aj7(fJ76eWr< z1WZFRf)QnqK`kk%00Z1W6uTsZggIoP4(H+)lawWhE%{?0RU#3UB(ae=bYNFp0>Zf@ zks&;3i$cVq5GODs70JlKAIpLjQl>%~SkWO{NWv0?BtsQmTuBHU!H}waL@mzXBn*2Z z#fCUT6{&~{QBaW*xD+!ZU8#U4fmll-U~(WaWXV<!PD*ifB)OvYERg32kjWguEHNmm9UkYp&MEe3%`R5=zfrt!iU?5W|1cC*DP?rZ_Acb;-!UN41fE6qQnODG|11zw@01!pM14^u^x3SH< zq9h*YWGYk5_=bV%Gawfv!W)VBsy#^d)kJKs7x+LxDPmy`e257+G@yVvSg{Em{DC)# zpa%jFKmisBsXc-s(unFaAFqNSWF*>8nivHkR&6Ip&XLE&5J;p0foQNo`l>g+@tX?? zC_2Q^4^|uNn?!&BtfR70eYS=VbHsuViNKFHgzzU*fPexc=tc)Q8+dlZsPY99rS3Hj{PgZE_W3 z8NYa4HNLTpcg*7gN+A@XXoe>?(JT*m!voy-MQX4GhI)X3S2>nUD9&>pLi~aS9q0vP zq`)jI{{jr&h;omCWv?-t`OMUfL^sAThCZ~}8VHMX!PpEiHuGy?c2*d|>g+J7PWM=1 zW{}04S`M0a09~GtFJkSx;tuzWQR}sD$as^p$`;4}QbWQtqbGbI`*M21LxOH{JFIEs zx=2tV=Bf)s1?ol%2)~RbETzvh>(0Jv)4)Njg<*{#&wAR_x4v|wE4v}&a@y6%U37;b z4QXHhno+*?HGS%PIsprO>9(KZrtns zHoNUq>+Cn)l5bZ{#AK-3&_%&B;O{CX$QLWZ(vefv6@y3+8tz1d(2OL=DM)f6C<7euSilWOPI3`K5Qqa=z(Ck378SN6CC`KiOeAQR zFQVj^Y7qxQzBolph@%1+Fa|ACX%-lY#Tmx`Oya?ba=}|R;*O_8VlpaVOc5F}hF!5a z3nxg*mWOQoC6XZ zuN2Hk)DrlrkiafVfjdkdD3pbeKp_*4%SDLpK^101nI1&RN8*A>YrgQKTdd|E=i&w; z=q2GR(Ml;9ViBqk1sp!`$WsLH#|bhLD=cBaNd|F|vukASFYIAle&Q6N6eSry{JB|D zBK(2KMJ*7)gjF=Em5xjhn_h$oP%!b1x=8dXJ3(dB-}1lj+c!Uqf> zW?(2zO?Pwv2F;KdRv=Y0#TcH@3_kV$3XEX|P~Z)bzycm{8kOM(V8fvUkcDneVk-{f zDxTn2%mE$tpd(4hGZ@w)8bXHhK`LH#gh}{c7Zx0RfDEy)2~~&;Gk65&0~|VV3w%Ia zXcY)s@KtSa1~kw+hr$P;B`C4d96itmZIB;B!c^GefvQo188#t_@Cry607#gGM}UNy z0EBJe2}8JT*o9dnNFh>qDJ28{0&0kC)>bC6)@ldh0P+QC0^%q7@n|lV8#K@+iE?hi z5rcsc3sTSqe9#6oa0}*^Gjd{82!bg(z+lKYUn2%u(BWC}5s46TCth_jzQ!n>m|pO; z9+=2)y;5d^#)0k_RmK93?@GMOhkj)?kEbt5E@Km-U1y%+F z1MmvA;0@~H39rB`H24iL@CzQGiTX$z`WBD5@saKrWg^Kdp0F=-RxkkbFDjWZ1G8r@ zsW5QHX9MI^CD|@F2`tb813v`rC79OC5zRG<%X1?l~`25 zZ0NXaz8H>wLODojU!jHnVvzV*ij`uXwvP2f~+lvprgAmy~l~h!*k4oGD(1GCRI-${R+_#6l~WmS_XU{Ck#8MYn}p&GS|CB} zq!wleK|26qDg;M- zcR|(^7;Se)+Sd|$M0E|+|9ePua3HsMBUBdFB%IbnLH+AEeN?zAUsqho< z&_H^3a&h4Ut}uC|git$YeH0`Sk2jzlB@P>r3?_w35g`seCk_Jf6PQ$Z`e1}jQg$WGxN4Jy=*>^%@zyRQseHwv#9$`%+r9=&}b9k{& z0wEJ0;Sm*u6UJ#lJs}qaiWEqILhN}(4Ddl2Hx+R)7~EF@%J831N={LM2~L3o6QO-6 z@Dv$`2?C%{Mh6!pXGz+}MMU5Om_Q2|#6iOM7yqev(2xsf00SPtkmc|Sn;>8?00WUw z4jsS;9e|LR;Q^sg{|*d!Q?C#Rgy0F@kdd!Y4g;VAm0_Fh!YjwMnWC~ECg_$ewgq0$ zX5KLg_}~rrAR}Xt9r!Q_W3a4|k{xPEiOoSCA&?@Bs2sfLVNd94!r>->iCKN}jqL>; z1p<}7UV zi`zDAmx3pjIgUi)0=x)^)`o7M1t`TDY`rnAT9{mEa%yMNj<|6PB$5baK!mKwAt}fT z)nN|f(FT9O|Cg2WDXA5e!NDol<%FvyCpv4C^a^UGGM8Kkl(A{H)HWYXOJl%Vw|0BC zc#F4X;0a)$kq$^Mflvgo(YuYdN-vSx^|2wiavQ_?WCnw7g52x^{y9 zn~SpP|7lGrn6UZ3?Ykc4W*?k6Ca1ZxHT%Gt0=7r%0I!?3#^MdAus}=kphYxxXs1!) z7Z}#0OfA8jA?FszbWkl(ahN22e{>E6Api!aLm^z9AU78hN}XPZLvqvD#BID3xA#h_pcaECN3nOK1D8lmY)HVQc_i#bL{LwB_jz`-b7qWEPnrx@Orhvm z|EU%v5*9~GA^{GsM@2s1PHw?_piB^`R2A&h1*z}=fiXeOG*4W#s03w28U)4g&`~I7 z7nl@$)|7E7B^VRrcE4v5*wj$&_YP!W7UxG%QLIBa`aqC`OI6Vb^VbOVH=wE1aDzbx zxnK_!7z$vJF;*a8rLnj$zyd7rECvV$EC2;iFaQLt7>t2bQqTw3zi7KeCY{T@*TDyU+nP*+(?wTSkuj6 zT0jZD>sD-SE1AQH8w@s=Adq-e3hEebRY737ZfJ zrtk+;Kr&x>zHk%@Omerz`wu6G%!8($&D=!)h zyTlUFzCGN?-76Kz0*@OB&2W&QL6JOpR5YL~wX3+!Z3S2MxMd*H+z<#4vl_{Qs>zKp z!d>3zT`2ofx+w`~aCT<^(+3LEk|{~LeC7$p-5L{P+`;Ws9}}`6+b8ls|1`~TJ_SxQ z`|*PCb>IRXH3i-S5dJn14&aKVSX(pUZ&Tn=gE$&)H4qNr|5GwcqT%{cJpi6I#;Q9H z{^2ZcKM77&P6ObH&e&ZQ_KIii%FP<`XbK&+AKL~y`8cyU9-r^tL z;;YIG`8h+ps?%^dv;%S38RPG)u4&YUM}Ea+2t3m0G{Uq?myGZA7LpE&n4wv)8t+r;C(*51^(b?el;LY<41nyhW_aM zGv!I1=qeuPa?a!t?&Vo-Ux;&jikmcfl38m?ac1(G#tswPVEc7OXtu?=>G3~ zx9(D;?U{$|D)DxZWDp;b@lA^Fkvz!CE^sg;5#r#-3ojAS&C#4LL`bn=^L?GCi<#Y_r(m-7Zca6z{e2c;DNcMdz???@CuETI$1kOC9mNT?L_ z@C5FHycCVV3EC(16yHbJYT`tSN1925_>dyXhAB}}TzL{ikC`uFMr;O=rKyHF zDMIWy(}jaX4q-~1Su^HKlTi~Tq+0b>L>E&__QVQQVvi19JpR!kWavvFW*wd-%JXN# zM7Oxo6w21?+MYj&O3YhRsLF3TjLrob6{XOcCY4f5c# zvu4kgL5HR~n)GSZsa3B=UCs&&4+icGqCdb*J26+l4k=bEB;_ zTw;s0w$*nZ9o5x)FRg_KZ%P~PG0+0^#tJB!8CcN+35?7El^D|NuAvf1YN*6Oh=htw zMu=sTZt&?Pl3wsZ03Yj0js=-m5GduANI)pllUt6srGpW=p~pI$Ci3PFp(aXfD3@kZ z>4-!?IKnQPn7Yd;z9iD&8@716%mIv1LrqJpT0juD`T4Oo@~ z4imbuwuPR!t)Y-MO|pd$lUXnjsOSIz)?1E66ADb;8Sh)RGHI^GeCqnGrdT@60ePC@ zNhZxH2A$~Mk4i)_sE7}}D5$J}PALg++6i;qL%YfCD680S$P-)p()H&j+aB$_9$c{D;Y>YW^$5epyVSV>B&qA5|N3FBqljINKAfG zkW}NODOOp@P7*Sfj4b3ITuIAKo4Gw5KE z(llfxvnfePZgiuOtS3mnSxHe!M53bn<|b!JOm#kUo~6`;KKYr-gm&|trc9?YQ94L| z$`Yadge6G}8B2xEl#twnB`HH1No&rMsS;J?Qrqwif~>JLT&yD+BOwKa9mI}S#9@IV z;efTQd2f@G*iTc*7RQo!ut>`V9v-w?9<)?Iyh8 zjo%``6rMN&>!jd-TX;ZZr%lV&?Aie;#MT>+i-pBbvc9gYq#^bgjaC&BTcFru6R{Y8 z16GF*0OJD;07gI{1k49dfB^wph{W=8ax}F*#VMoJi))FpHGAlNcrhQI*PdQ76hZYzj zvyUx=0W$kkVh=v%@rhiGvRTD5R)JMn%X>Vb6mr82E0n<#R^Ub`IA{eDQhAP89P0oG z!GeGp|3nH5q)s_PQ4a>zBM@5-BW1A6XFz)f0q`Lre2Tc9_Z-?j?WqqCl_($nxG;)& z)MI!4+#Ru=k%QbpBX%^cVzGuA(|+#s6g?4V`yNV*T$LfK>zL_OcRDgtEEorMkikty zB4DW&jjrQt!&3hT)&#S1udxUn8|RRWVk`)GZa5jQW_3JW+@h;3!|GbAnkv`zqO7%D z?e9c8tJIeEw{y*FHeH+62jRA=3FK8O<5AmzrZ+-xa!Wx*gqMV*2rq$|&_TAumbVP# zPz-5HTE;Sw0fz`9@tsm@F1+8wbf~^lDoCIWyy3m12*L}#PP-7(noP^LS@7LUUb@n7 z|3c8XEw#q)h)}L~Iq4|O1?dn>R+E+xVR=+c&T@V;1(G=5_tl-A)`17op;Pyo!%f2POa6hN9UnT| z_uWgA<1*#CL;4w9uuD-^y_mYgdd*SZZ?>ouarkU4UpgUJTk>02as<=j z1ts1HOGZX;3w(H?9vVpx^E0x1=Z~TJ($`2RfZq!p3_vXP7(p9w;(&mD_U0pHV7jYGX?7z3U8=D5bTA3(m(ynG5or@-oi17iNnMI zu_EIO-MJmN&^)gJK0Zjo{?iHGvOn}&3;xlddOO6_z`aBSwLa55M0`Z5|7Zq0vjv0b zfO;@9U6T$%pg$>K0YY$rH4`9Cb2AvQnr2{udVm6N-~&S71{i1zGTSpq6tz2|qgf0^ zXiF4t=m;Nzk0C0w_{a}K>&5#ZM(JxJPh&(wydy`fML#Q$HBz%IOO0mm05Ir)Uz?0_ zz$@h#02qLf(HW~7;NeduhBeh1HqIDz)PiTe?2pm|mf>!_mRm==dL$_J`3^;*f_Q*|7yltOq78*!lkh} zyLhjb$fUyi38YIKrxCkM8l}QB3cf?6{`(@M8Iq_w(3lSs;+2umq^pQW@yu=FLjbjzFD%Gh$P-|LE`G>p0Q z%e&M<;_=F}5K0>)8nB#7!pp6)q{^V-O4Wcj08w?>&Z&PjJzpL5`zgH zU@f6Y1R~6cU!Z{Kls@XS&gRQb^_V`50K!e60U^+VOB{LE%iH|HB7SiX+yd&g-GZ@5Znal^MXwnz)9$U56p&yu3bUu7YujH}6whW!*v59*#8zSp4^?}dMR19yRLAFSnCFKg~sf?>w39TS8ZvfE} zte>GUxgy;OmEb?WNG-Xj%h4h+FVz|y(;Cn+3Ad`kmKf6g8_NCbftq~A+@r``G)_Ft zQ$5AUU+91dA%qF)jZWl-Uw{HS1IMx|He(|Q8VH0?|JX-wtOph-2R^WXNq~W{;)7qn zL}i@C8M?Mk%{@?4L`*{uUyKhzOI2cAB31oGLhBEnq*F`V(-_jK|45@ma8woug-{5q zX)J?KXbwW~fKIfUgeV7D3=cb<#>)s+gBSo7c!hy^1(O^P8n~c2jf4)ERC9Q|T4j5=54}h71S=InjH!2zc-PqMY&`8bj zhER~!NbrDAC)0x5qt!g^!=Awj zA()&ID~aE50hA4%;1LNI=mC@!iOCUyo+ul6|8QA{=tCjE31c#amkpktnTV2wS&?{I zngySeg;~XT*_o4vX841K$XR(H*{PMkzjKHq9I=-z2_ewgwV1g+gj&j(h{=K4m^IoS zXo$6yS)u@%sJ+^>?U~>?*|LpUQ&`)y6^XoM+oL_ZKM2yh)mpYS38dxQnbTUFxHq9C z+MP{XQyAO2bqJhzS)iHQhL}0F_1m7^+as)6nw#3O{oAz#+J?B=oXuL6rMa#(-M!UX zp=}16HQkE+zd)mqo>nVKbByG>o^ zh1uHOUfD%n#KqmOz1xy-Tc~x~%za$F#on@|y;!Zabd@4=oU*gpiTHU;KETqmNI{J- zhmx_;8r@C~w$2)zKIt0*3b=}!89;N;1gb$#IGw_WK%28Lzs%&n(R)vwNQ9-U7|h_k zxa1n~^RN{z48&jwAS1p3Ososuf(AX&j>rh%BF{}A&`CI%0UUuXm|_ZGg^XYYdRSsF z=zxZD2;|cUlmVYxsA3R2fde5T} z-2L;NB}1({1hJFAtn>REI@~}0|Cyea5Qx)K3I~8<;6TY=AOvBKGFaY8S{B(IN)J~()l|)9LK~ta+GZwlqKb6JQ1zc` zj-iE-we|9VKqv=q2m~gtoc9zxwpbmu;AuG^U5P~yLkOC-R z$PuyvcvOvn42^P-0x*Drhzi}up#z+VS

    0vWC3040E@mZ zKxIgmWEhH!Xe$6}DF_64y=YyNf^palf-VPsR3O+07}%hJ0`P{2zG-j3GFL`Usb_1jd5c$o2s0kOJ5cj*W&^Fo@=JrsXv9w6@MRP?aO@*phHeRF1XP zQqitgg=5$_e=6<$Y z4Ui2ISn-gP*sg6^|4nT~d8?Etipz8>;Ype{zz0?^hp~}@Sm>Vk?gj+#7<@2?mdTkB zn6diChi({w4?(%{KZ-YyAL-~_SAmfUxz_GRvva>W(C2KOp0KU^= zQyCt0-(xEP%vN=6YljwZvbwb4mUT$F-NkJ0xPfpbMOG(c!ggep+fh4o?JWypDR}3k8zy z(`FZ0O)Is+Cwyv-#^0vqPK{=aq}X$VZPh2Y;?79X=lXGm?ar_6)33H@Z2hf@*org_ zSkBkik639;#!xIr-nM;n8+|Z(XlC{NOlwhLA% z{}=t>&;4=xHqY07)(-DRjCDlRZq5ip=pAJ-ObSkqt60DXDUbsE6M{B41N;{PDFBEg zn-FZm*KHF8TWy+2>4h)Wt0T5<+0rCLlO{fVOu6VNPm?Vje>ghWXzJvVjwekuTj}y8 z$CHUb^m3UJ=F65WS2jzjBT-5hD0M_CYV;^l2OWE=3ZC5K9UbdS*M^;&VjG86iD-QRu~|jj1Dcg@A3=Mr^}2^7xd?XjhYzHbQEi zY^H-x;x;q};%oNpOkF-rU%Ft5(!~*?NXtYbjTA&jtfu$~k+Nw7GAS65A?Stx|3M{; ze);s$)Z>;s)p>QY49c}@P~w|cx^U2AXK}1s8(+n$b89o{RUIUP9uuZ=j+;{^Dry=j zQg5JLl<(o<8$JY;b@b4C=KFCWIICY(E;TPymfgZrP}ZfSl~>fUBpiUu87P$wc<~oi zbSoLh985x$haQI=diWuTA&O{TX(O6f#(5^HxFU-wviKs5G0He2jWyc%p^K3;^9u{5 zdE-GdqaBrFi7*n$VUC_i!G}?S)B}c5Wk~T$J>HObBbG=WiDZadqDPvSSz-w$h-8Wx zi8mumG6tJt48i7`V_4%RoOSjwMjvMI=zb;0YlEbO1v+EHq<9sW1!x0}Gyb69^b!R69T@1C;oS2a$Mi zDIrpj8i)s>loN@z&B6f1FM)Ui1`JG6%LlOaB5Q@VuWaHhAs%?rK`7qD>WQy}mRW|e ziFgxmB%4*=3H4_L^ekHv{lt`Pt=xX}QaO8*X^xwv^+I;WS8L%jIZJ z-i$3RO`f>jL!M_X!bKI$GKYLPHX`YV0#BO5MtQSgX``d}yN-@;UZ#kL7HvI~eREz; z_IuxcrSUBr#dq@|LhrkkDHb}o_UeM6HzrCUC zNPcrbGnf}W*6FQ*)w>_zRHTCdO{X!~=|Li}A`dBqpdOPz|3D;qp&wHSK|ejv0Y1Di zi9SrC9$vslBs4+;1bEO31E4}LdZ0s%1SmDlc+ORR;vfQ9XE-;ZN>66u9pQN9Gfp&) z5TVi${(;CF7;=evv?7%Y{ilc8Sx$xUL&A-aMTPYkfhNpRLrn~5F(vE)Yfe%^ooIwN zLXbxr+|v;qu4FEY$44xwB{f&XiE&KH6V4=}I}~cngJ5!#&WP~{*{RAcT&}S!< zB;poT*+gH;1Yx-ooCD)2PaHvTMt&R9JoBkfdKzT_^?*Vo5&^GP@iTEPswazbMKz;T z?MeGY)cPJOQ3rNoO?7G$Ml-5WJZ;oZYzh>i-buZP$|!sjJ?W69wJsKHA`&Wv!7Bm* z107hw3JhTZ6i5ZTDJ8;V76{U+zyPF2X-r@=xYVwChfuu9G!o^2LAZ?N2`B`DUl)@? z)nEVvp+UhDo&W>CSWpI1F=?2|io~+O05mJ0OIty*6w*2XnNWBD4Dw2p}gFwX4R%{If(!wRFmM#^g=1rLK4p$T@{8mWl zfo@KZchC+s14!lT(2q>!t!F`@y@{e%Rqa=lr$(woxB>%J3+r6qamZ4E0Pj)o1%`X# z3SHj#>UN<(v@?|hY(+^#Ajtcna#Rcqk5iHJdUX`gw$~d?>)w%`MYL-@IHv$?+33Re zSA>1l3N!#wGY|~nM1b{sU2<=ZjB8{M|4AVbqa_W$$_t|bK;ae!h9G=1Cawn$K&irP zp6TvKFQat8VqA)FP4_l{2MerG2KA69JYdt(Oe;uUaxu>eyX83_`Ml;Wg98{76VF^I zFNsjfO5nq$HT6OVFmcN!*JM!yw8a#WV8tZXgb&t$Q9P+B;Ut?QkLd97i#{w+5WP{s zsThYU=3G!?bnp#mLJ~v{0MAL(qo7W&QZZ=OqbJlL)iCHm|Jl%jrR>0a&ezXAAL-A7 z?kgyBLkb>K8T(4>-g(xnV7`L_H!N_woX?Z$XEu@5^9i%8bI22FvM5J4iqSi1)T3e# z6xUIVPoa11JX?aRCotyHt?sH@0=0s}2*CoOtqcmOlIdR^Fs#WD)mYw$+WcFy~)r?9JBJ~V|>CmQ12wQyqYG;K#@MFYv#z}5U zuK+8;gaW2mfzXV@#c-D=j03Z1j`7LMj!c-&VV?xrhzCelGjss#6wL(+STpdnBZ7S*mQumSj(vBnT~is2c!!hIE~2o3QoO3U>)8oNC{NE!ilwD&IC(ARnCV@ zRjKgcX6+ZY3;+lY6Tw)FlAzz`U7wA-!Y`N^6`Gl{SV_^C9%+;V`n?N-eVNilNjX@6 zs0a%S^ulI!KzUe;{}gl?pzTT^pv)`0VEm=<29)Yt#PKu=Li z59*GPxE%xylix*(CkT%bY6MpKj;9byQBdKnoJkotNu-F47p|Y!7$MELV5!&wq&Q7E zEY}0&h;Btn)lg023_veLB9k=E8we3nn@oZi(1Q+4(n+x6D5)fNSW^?}gsb_I3+RA7oE)l& zT)%;%XRMP8EKf{S(5gMiua#Sfm|S_ZK_nmmP&UIzyhO8o+Q(7Ss-;9zdc%Mqh;(St zQXEKAc1CjK1YLSlaa3A=C|o!~Qy3k`N+g05UgM1fqo45{Cpso&?i0LN0U?Csm2IX$ zK_>q6nTHr-V0BHZCI8Mc_$!CTAK-QK*U7wF%kPCT?OBpnyQ-tfoZy zW@Wwz|LJ&$N@-V1O^XyH0wDwo#e{;bWXg|dRkx7J1#T6_n8x;<4YlBwM!X6O>XXx~ z)?_&i<|`Ns+b|3LG0U!ep2idwT>Xnyg$<|}3)xT}wZMSmKnt}<0fNQg zu@II~@E)lo&2JHmO`)c2)>P3*4TP4%Ufr0JSjni&@Cl5lERdq{p379+q-?bPEvw#74rQ)Xy z%TZxs+8oTRybE24XmFmFWcEr2Sb<5XuC-f9sS<9|4kZh91nvrMsy^FJaYJoLQtQ5tx=&6Vb4H!^Lvf}8nFbl#I zjdpctU4g;pP!H}T9cGThSh0;f%*%Zun2uB`t}M%iU08Kdmp#Q0w0M@KSimdTLd84{ zSd~GB=3&vemC1C#db;M6mJ~u!YQ|U*R1RB(B*FyoL^I$+2#f#)n8c&m0s@Rc|81}W z0^H1VH~1(t+auwFIl#s(Y=Swk!lv!xN;sQPY#e7yTT}2GPG|&QAOI_L!vOq6%g&O8K*cu@ z54zD@50nMQY62CU0nm;BD~!MCAeh08Su z5Mkx7aiwA!nnM;xd+2~BplvrufqryaM>Jbp9^}?`M!}iFZ*W|72qxtohd3n%6WxRm zEeIG*$5vbj)J`10YU67Ltk$h=NJ**dzOGTQKt23ZSuvsk#isb|UoThy|BnztJ$y`K z&aUwuZ&9eFZsulfg55@~$tF;N-Hb{i>XYmuZ?7k0M6+X`$nP`CLhm~1|M*5rkIKUv@Alfj={D_STn%=Y;o#aH~ z8_o}!pw0SmPXljniOerUFfiKi>PbP5{rrv|c7SO_4rvsPm4xs75lq*CVH4)|Iv^YRe=_-)UI?@ zDtW?b6uPZzn@=bJ7EC$75g?=yk))wHnk|Wk{|>|?Z|Ll5w80U418-== zfb@c2`~}uRC5HS*sma=bG>B(>5vyI(%Kpbr^h9=O1!A(=5#*BA9zig9h^hf3fIJ0( z$h1oQxwIXz`HCBiMFv;}P?Vpa%o z9PCW*?Rr#`HvrLhY^8OGY#1G^Ss%13{~5qmsRU-R|3Uw@_~71No$|Ksu5XVBzJ!7W zj61dFcfqwJg6v|@JkCBMs?p$5ab&lSJ4=VzyHH!CS!jm_203ifIn7~ity;+rNYCP>< z*BOd{19#pKi6nOzwR8+j70V_f*yCKM!jzUt1!K;Tn4Pj1S`mWr7z?gQsM^4(hQ-vY zjKkh(*wpNff%B&Jl=nfKhNr*{!6;z2WQ$7?!co{&?*KHSTWDS^?0fJ?VmywFMqzm(@YIHmJ+XMntkrilB%WwTv z(;UUDa4&YnFQ3XY#mL#NM8c)SD5%)fUwPOdigRD77RT5RFax(dU-@e#0=}pgd+3ln zWKb*hy07oL4yZ>f^`tzoWE&(qA7GFU35G_T5EZn64$y$K(*SGaQ5)QXQ@3Lx<p8O?=mr zJHl0b)oXmZ_rMWTyw|6FvCBQMcRji{2l2eN4p|v+c(k(9$FpPmvd28jWBcI;J=e2+ z-XFXJ5IfnkN5g9duP?q1*@I^Me8l_uy{Ei;kbCFjy94OJU@-fx13bGY5Y`*}!K1zl z{Cp3n>x5JIg9GxyIOy!t{$uJ$|Cb4l%*PO4aRu3}Dx**u>}j{W{`UJj-d zn3=B+Fm5LNFCB`#@_IWaXaNKiZ;{FnEK@L2LWK$s5?r{jAi{?eDOR+25o1P%3!A~P zg79F(kP!`19I4TyLzEaBu9UbEro)#hW7f2J6K77HJ0YqxSg?Z?7*NVVfiVEet4Ko= zb~sut)T@~Zr`~)81qzFDRzfwi(jk%u76}tsA=<22AS>lyc%aIYVkj#KJsfT3LJA8o z9ib%TgSJDcfhcEIeake`|0@<9(DK3Rbu2=&1HFL}2$y1qKphE53Hqut)K_2v4UU91 zEsVD~XCjqirCu#5NuxF+^vY>DhGj@6isVhLr`0iAQcc9dn-xMH>U#U-p#zIoLKk{N zn^#Jt0mv^Jo>)A0SVGNMSm|iRvdn}~0!8Y;J`^Fam=l75;mzAC7>Zw!2lHRJNIbcU zv9efb#;E~ZQm-oMqzGj*$SRYp zQlTVixY9~4xfJlp|0I`W^2#vF^zutI%S^~ipDOfQ=}a!fk8T(ZtPkBk${Fr}pO zNizk-a?duCjI+=~!Bi8?I;rw*Av70FGfYIU%ri|pm6UW(M=kAA%{dt@v`2cg0v!Jja`;mVux)O+GwR! zHCgqhU9~%9uf&jNpTb>rUWDL$cOl)+kCCW06LxSS5q` zC3!)ROwP9B|CU|0$%8;VV6Vb*0?96reSfp8!fH3JcHxQidoK|7DtjeA)e?g-t7c|n z0SX?Ag{z>p5=zb}51KK`C_c&<5C$AQ02!jGKzeq!oQZq1HK=Cvv=2Lj5 z(V77xlv`fW+KQZ6@C*zd1$4?NDac-R>K-H6svOXo+3K|lSr}kC8yA{;pskgnuZ&w% z+irmOk_#J(0cL(nzd%@UE0WooeAev7tJ}nbfjprQ?&Ri@$dmsTnr=k6h)ifJv9OA< z1K59qB9yFwgJPWAFJ4)pKwe=>Yk{098tF(viA*6WO6!OP9Or|yFp836%z{@uN&P*c z_Jzs{|0&COh3WHQ7-~ak``OEw#lD4+Cq#khfG2v;20lEH4-Ryo4j$;hTkydFAkcvX z+t9%_T#$nuj36I$u)$l1unjr@!8bhkK?z21gD;F>3MWWI8c?BuG#nuX9k@dXj!=g^ zxJ4uySiv3Yu!9sNAqi=C!U%%E0YzM*1JE`R20l=USoA~*Q@BAOGVzET6e9|k*uxjr z@QXmq;0#gN#xW+bg%NCF4Y`;^Id-vzG>Bpd&&Wj}UXX`A>_PDs))G&okPjz3;T-wc zMiKJx7F!IV37H5-Ieu}BK%8SDBS-@;auA4KEF&Vzc*z$+kb^p)ffIX(MIVl^f*xEV z{{;sEv5GLT4TFpX749g@4lc5hXOtxcl}JoHp7DV_$Y2jX`9(4s(}~3_r6xTnMoywK z5#DeB5}DXcOB!>Qu#{mH31}1S1q@~X8X%C;Sx$Gpb0fB7r@!b4Pr{IMHw3F#I}fHU zem-Ob^?+Br2#PLt8Pr?{oy0;*;kb!hM_(@cr#(I9P{K^~C+nnW*_QPZeLiZV*s50{ zOTwU#QmrRJ`w2b^#?oVb6s0Ns&PY#MQ)o?WKr8Zw6kd@{>vT>=S9`^VNVYQU%?1k1 zutk5G)C}KvLpPD&15Z2f3LceX0E5A3MMR_!Z(zJm zinog?q#0l10}cN2n*m6H4}6tTLje1V?A$d#?KGGt%3-+EoM!+wLQAnkB%FfSb*q>i zj3@XIomW^@sd*Omx7`Pd|=tVR9JK_B*SicI^FoJa;5C7tq!UDc9f(NW${|Xsj84j_6bzl$sDwx9ZScx}UTw+g{;s_!h@P_j{V-tfo!!S-TiHGb0dFVjH z5k7E+4~*fv4Ef4JHZqchYzhDe`M^Eq@0dr-}FHoFv%{sa+C=y<0db7%!lrU4tg-={#u#Hf(|r{QJh@wH~`E&AmWYf zT;)E08pAP;bemmpghXIk!-8INi3PmpNcZ`}VK(s*HfUcG8@j}z7BZIa>l=*bmc7Bg z-b;ZkY-78#Uh+J)kKF6CU^hFSiA{*O+Lh3SF4WrCHkY>11+QwG|4U~BlgI!f>e6Tx zd)X%SXG@@+?u^j0aqSLROM8NDivio-{WKdsN0#qt;rqRe^S8SR4uVYt!WKYlh{y`r zKAXJfbBqJmz9SXw?P?cj*s3`2lsOgV_^^VzuHQG`rOn=G!;~NWbr&Og%89szh)v9Ay3cse`@O|C>TU{K z=s;po_ixqp>y5rI81JF(d#3~a_9M4C*WPHfti?QdQWrYI|7SP*oxiSwTev{%UvI_{ z@_zZdyjaG7&lal?JYytt+3ifuume1t-@_k1%X-E!lLzf;MmwI$F`jajgD-0rcq0*I z?y~NMZ{fQ8reKEuFA=RwdeI*l#JRTp?n7Pr-Rsx$kk5OnZ-3`KOWEy(Mtg5qC|NsBwFy`HsjpPIn08h#j@WBgMfdN@z2pSLqSz!Sq zumKlv2+YA6An*Yha0t9$6R1K8V1N)tFg^$&5Wayb$jw6fuV7g40AH}ZuH|7)V&`Bm zCkoKAY;dMrP$zKE`2C}v>1{|e_k>N_&V1!wN%%*~u=&ZN|7 zQ0AOwu)0RX3ghiZM1lzksb9$O3JtJ2vI+?=>Idg-a8TD{&L~3&qr|z&a7gPK*=nYY-997HuJl*bKlzXM>h2x|68su16@wA|oKF}hk?dR%`ZNO5fGiO_f$y3z96fOr9j)q4 za_d@g>sT=*O%2t+Y!y`z6=O0I8LYs@Ov-3-%xG=$f~?fS@h5>1%y2O%o6+w|%?O7O z<*2Y_f{-}$ucDMvDnVx|V^CtCQV#iV|8l|`XuvDIa!S5ZEdOLI#WF0*(kwBHYyRhd zHbJWf;1?{UW3aL+_mC;Kur5K0eGJH1M&=F)@GoyLFa7XjI%@UuQV1!|DYLSrhz^|q zaSh2S4dW1`1d|PwunQxTWdiXHFK#QD|Lz7Eh6d|Rt?r3imM#EM$}y)9GDT|TRPN$_ z4GNu5( zIfL^SdhJ0YQm#Nz_w8kyAUX6Fw)jH{J6qz&7+f#}ha$ zG(_8TcKC@d?=3e82saBAQQ3*$2=fUU6$sJEGM`0C6k<{-b#WeIQY&>>_5?N)LJIW7 z6C8D>5;X~R(=|<%RF`s}WMZ8d<^cO`pRiI?3p3?ja8^?_G1&xUl4~PUMd6@QwSq7T zJ=5dz$u2>&fH*1!xdqvnQh)|kS^01-+3+*B#dcbgGeeVArFGtv^4F^3Ql)JG%_-#k z31PetS{rU+SVJ~5GgXI1s(PeKh|W=joIiD zVvTKOPc|@L)@5T>rW}B1bfYq$zMI7B6Qt3>P-B zR`W0SDDsRIOdnT7QHU9<>Ylm+&Q)-*#U9S z1qlHkxYb%w_npLWD|L5wJ5y18x2A+w2F2D;?>2Qu*J1eJKmMmOLcu=91`G%R2Fl<( z#6l@1<_MvdP)Rd%$<;9(##t-2|3<2GrLBGP4Kj&0VjZ=0`^hKH#(R@j;E?4*Iv`6g zswm1sYBZK2dO;{U056qJeytZr{wLznz`z@5Zf*-ug(1a!T#I*A1==RldW9l@R*G6SScD(KD_~%O zGFWo?&2OtBXDYMgEdTf2I`tv!BM@9G5K&Wn(Kr9niGAtUiifa@WA|+fRo>2*SUy){ zkT(T?ArMeET?dmgPt}XB7;D`&i{aOQbMdBrL$BxGND!z=niKcv7L!iJ?b zSO418V{b~|<~Lez$~F<%ir3hV$<}Ch@MxWdcCnZ-Z-U%P0}cgb6Nmz?wv}lyf)CUp z!WhnTA;x4JKnkS5Ha_rjGr|gxLy&W;1Hj-@!9Zd;Mph{TcNBxVDtYxLSRp##M8b8L z`>hHui%q1!129BqfY#Xx86ju@3VtE87B_|^cq7iE8JswSAs1CYrY^*y9Kd#R4|xhF z!UKL`EcP&IA^+J^t>EZNBWSOZj(<0w#};F&Hj=$HW4m^EIhJG3c!${-TY=S7O#zo1 z*;@Y@q9^%huhwOkFrr`gqCXZSxW^l!!V~JkMl6H1!iIm^!=foVpy#-F$61{nI0^F> zhv%|l*ZFrPnprctSi$#EMW&E#+E%Nm=KyhQDnti7=4L^QC$8eNv?}o0=R!guwLljm z>|-mUSz8yvBhFY>Vb#6FN9V#Lz= zkS~j4Hezdtc3LAkVr;Nt1_f8EJ$E9!!6`DTr)e4|VrCM$tgvAo1gfA1qdM&&Y4;FCltWjvF$ctxx$`fT3YykNWdU>0#@Lj z@@3^oG29zydssvEHZT;8Ii3-vZ9W&?vmSawSj zva48PlUt&$8^vF{>Ew30W!tr1X0t(uwTl%sr8&k^{E>50d}ln9aXc@}qJbm9D1f8C z?f+viq${eZIINW%RSEOPn|9%5m%0zSj+xuXA-aQ0wT-F9#I1Z$dmJSmWNu)9uJo!r zkQpUFgbxTI;mqw`149pS;*$pe41f;*LQt10*y0fTBn-nd?B=r*<8_R}*T!|8viwla+&@(%>otD?RH`u50AmDOBSYWWAfO_GIH~J!v z-&i_Z4H?F9SGu1ZWu;xYy?xjv{nf$!|Gt)>D*`EIITUW#Citox@c-P1 zV*)9Dt1I5OIy^##ZK7-H!fVhM(#s(!Np~V>Knk$RYVbQ*bBZgv!Zgp?pYtjNt-zJN z+@~vp(@ikm$sKKuPIWL{wC~Axjt+wZ_h&d9Cjz5KfE_c2+Lf95wpDZba^_~>EKI$9a7;>vJtDzm%!0anIoDx(d9x0+!S3P&es;5|HIwB#2iZua2a zd@4dPs4#oCQRj!@0yv^)?=6|+bvRPYVns45r>(;)!p+dx{-UgV=RO)ntpA2DLDo8o zLcU>JU-dqiyL~o1!sVl!m=V7suHuk47cTN;D0T#c>g?*Y=0a@&%rvnjd7NKe~BNk-47O zf#1Bh+a~y+8~|SFt0VpG(~D`~??*W%CI_#!3N7B<*JfV%F+!=zA9e8IsZ^_4y^1xf*8i#?DP-IlSy%nK z+h|#y!P(~iZPv7G<2P-$M$Y`W@Sf2dD@GiA+l$j% zzYRaWe6pOax}T4Ke*OIS-TKa-*=)@T2;f~}?N?xe&M8PAb?gnuV1yFdXI_Q9Nhg?Y z;t7@=hLc@4msXrf)!&2wA_$g;7MjT7bW?$LScxqr_g{x7QvanHSnlOTA9w$~_}qd% z9VcUuF4pFtkTu=7)_4$7xLtRDAz4?FB0|{{cNH=zBxE@fHd2w4iCLP8;gRW|nOX5j z*^F+^h~{Neb_S$^abngUc5kNnWpmxBxo4n)>NO~#f8GgZp^DnMBAkiA<{P4mCOT=Q z4GsnvmycRXpp`~uSlnYj8k#0nqkaZmm22v$5Q%gu3Fwt!=J;A=wHo(lin6YDXrrXT zY9@GZu{kWK#>S@UvC6J=DzHbk$Yr##W|<(9#8Ma_sfkItY`3dE>FsizhRY(i@ZSrmuZ1m&@?NFYD*0%Hp0YENutc z%rmkWW-2hQc!KM&sX_NV>3;trZR^5;&Ae>9z|~u`y)k3l@vry7dv%!#b8MxJA%Z>e zs_mXUW^PN<1S4KgGhK9NP#az3(tJ@3cfSKWz2}@-?_Dj{*rHu0rEt?KH(YryZg{xB z9UU^`l1HrbrjwV<_T}UPJ$KoI?o6d^p{`e=yKbX)-soLl8T!P%MqD3{3BN1xw>qAN zc;QZiu4bHKmacj5!iTJSpwh;5wB18r*SYQ5KL6eP@O=v|eRa`S&o}nkr`y}?kQ;e@ z_9*MVeb%bd2yywAw#})(-#gf0!9W5(KG986zPi!&Kf7VPUz7blk+rTb>8ab62Im>~ zT`WeZ`d9$Lgf{@fhfMtmpZbP&!3=s$XBI4wasciifWj{Aj(gS5BeJdZx%)T2F4GmErj=bBlf&UxMJB+ zP^=veF(i$!V!uW^rS2qdCN6^@n@$xn<68VL{R1uiF9n` z5{D_wJhIY2!3tm#sb|Z9{g8~O3}quXSV$bz?vezfCMJ{Fr87PfRou*CTizlS=huS>o*2PhkEsTh+8@`4EXte_nG)GBl_|O{txH z?n;HG8zMpz`b2Mr6S)XgQ5Tjo0IvOK^777zjoi8x3{64AUtcC(;K z9i_6gnlX*O?-f!YNC(R5$csop3N*;+Mq36$7QTqA&zi_u2||Mogk&I6=)nE}c2PMZ zl_1R+07N))*9V%yuUxh1Mj40|DU<^xo?M7iWKsriyrLWg;lnG6;yhf2)?l3Ms%gVG zy;N51pYvkg$mljKr=C`nv^*$LV=CL($|iMknbtTlmI-7kCWB{NohzFnmT5nk4yunh5Cv4FS zPk4Y3o{&rNwz*aD7KFhg@dke(k}IUV0u0TVNI78Ofk;SJ#w=iLMlU5wc0w+&ER(1< zX}jG#MklvH_8EJKJkR6}mZm^0^7Ouo#+y2MhCGg>Mgv>r2}#%r5NQSspx}uPz+lYH z=l~&D0ERHL;LAlp@|1U*FAXAiAbe==Oh8}@J}d+Tp5TKmc*2KrxHl4CCI}(a8;L-J zU?DW zNI9g75={@}(}|!ie!by=P!!wO#ayX@@>vE_8++8Uo^B{S01;<58w`Os>_Y^i1C;cc z4;i*Bu4BvsDBJ?q9VkZ|Zv5s5RXNKE$F7L^$mwiKnY5Awu^z#Raip{pzsSzgQ4qI z*R#aA_MUrbxc};2Z$=;p5sFu+IqERrh|$j+68sJ%>*4+^3nYAAqenFqx9~vPkNXQ4 zbiKh#c2gpD9d-3;IJsPQ{Gq+ff?xR61A%ZmrX%4E$>-g~i|;$@L-7kMyy6!)k9<@I z;Hr}scrtvzJRz)**|oph6IQ6lyFo8{6YE?cxONI5I#7l{1fm00pl))j{tC|rg6eE{ zI!{Bad(@TIt0V7O$K!LnCaWJm*1ByvvE&z#mtU;%pFe}@Z-4mrwowQr*7<||b2>FC zTjmYv235`Q3RbXT+Xn-B*8#r(1_NdVRTW4Sv`hFmR1q~ZJ7g^3C4kSO1Bd2p;D&Sq z@C%yteE*)%b*RS&-mqq#Ab6p1Xtt1RE*M`dU=Gc&VRfclP}LNnP!v{RYo73Xzcwv% zQ&9>b1%&VlFwt@_P!6+~2pcv4eBcG@#Rpkfb1-;b3t}c<&bwOxCt!i4R==t4>oQ2HD;Oxgirv4 zo-l?T(1woqSuikm9Z(M)&|jOI5%7$_&^#DPO4 zP5;ZtA3p+IMo5hw7gr7kOWm?%Z54(v0Er$T1*=w$ZukpQFaQjuU$Nzk**H;1_gx1YPo0y13(BcmRzaVUs4bXvDSuGAZ>ogS@afo z14)Om(m5vAau#3(wlIkJ_zSOac7bM{~SA>9T12`GMdqsc&2L_wagj)#_7O)8tW?s103}_Y!W)^(R=3@(0dH&iB@E!q3KfZ z$XeVOLr=6G3%3M)w4!X z4&%UC9$*DJ0JV_-oYRM^g9-(&FaYWWZUYdW=h~&OAr=h^U;ldN39AVOT;>T{=>gBB zfHCH@hc&2r$DY#{W^@V$17M%Wm9>2sP(Nk56}LpE?eO%306lor9~k)i!=EtGf^-5}AuI5m$L`26sR9Ha!J^KD9tG z^qITMyaLj)x{F7;DM^y@yfma9T4H271!V>$y~gXOuS7-BND{HOvMji=_9+D?!EP-W zZ{&7ws3&V*hq@54W)HD!q-L@w`@YJ^Q?^Mj%w=luyR!7wZt(lA9d@!W(P1<&hwmF} zUq@&0R+UFmy(HmfEaqz_L1_cAq8-r;G+=K8;SFt-Zqd{gZ>}a`R22z~h`;aZUg=i1 z-aD+x7={=u6CP}DE6Z=Fhk6B=7Y^WREaz$_OKKb;Yxah^xeI>iia}?JQ+~w6&C86c zWlXCzGOkrQ>cp^8{KOT<#Wxdl-}}XIHf;PWwN5gbN=%ve)G7liCwQ~GLs`MROQr^! zrzMm*ANzCmNqJ*209H47(>Pid)J~{JdMM^13G<6HOsoKO!FR(hn=~#oS9MKCP?CAP oiDr~HVT}Fb#oyCZ?zg=0D5dCEr<^#)!_&#YHpZ`|GXVhrJ9R7sS^xk5 literal 0 HcmV?d00001 diff --git a/docs/img/showcase.png b/docs/img/showcase.png new file mode 100644 index 0000000000000000000000000000000000000000..576894f78c9f5f71fe010d2f5eb10b922e655ebc GIT binary patch literal 847983 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%0DX)87nPpnD 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%0Dj9TYjmu(FWKIgBNGtk-Pkj3e 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 z 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

    T}c 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%0DM|Ed_6C3^)UJj}DCs(iG61TR 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

    2Eqm$xsPQU;ll zqp{;UImx*2=KVZ~$_!UrNc*a4TL%RUc8FUB01%~Utu>};vc^o|GVU=6Vu_=5c6#^r z(%ii)#W?YE$N~|q8y=WZ&WHg-y`f{u0Fs@n71{{Wg$odELXkmYoWGD)Ed-3)=z>Ni zsPO~NHO1KCa<<5mp;jKKYbzSJ(TCl25IMrIaS<9O(a=R!T688mgA{aqgZ3>Efy-PA zQ0J}rLJ zMR{P(ZHzDu7iN0V(GeDkqN<3%88KtD2gUrHO(~t;h@zVoMOQ-A5fMX2Z5W3%=iR=c%_XhY5<+--&!}CmJFrj|j?aw8 zYa=ZzZ}vBZ5ST#BJU4Jdzbi8Cn^WPwg}I~G-~66m{IjJ4|LI4*?;Ah%@%!KTlkZts z9sS6Ue%tLg9oXGt$uow2jFl`w)K<>6iORw^fxIO$1sby~KXZW!%C3Y`ShJdWdif5Z!-_AhfiL_w%aA}~u6s?&CiuZ6SP)!#}t;$%^ zJp19!JIn838|>BcWydZGOYPyA!E{;yrp`f6`KL*lH-*G)Qel}T&=XD5(9`VXQ|WG7 z%#@xg#Q;HdQ&91|uM-kmBv{)A4$hk%pWwbZ8|G=!c6wc7wz4m($Y`8wrFb-JU|8bB7n5@dQu(!yi_js#!@ZJmQ)p4Np*gtcH&M>%FDsH8qH zHmxoqXo6sy_j;?UHqXaU|408cm~~5Y!!(BvsLG_9|O>t!i)3~;B4(?DM(aQmCyZQ zQqIC^thZ9$=Gq@Bh#}FTd;7jqzk@Ve!Pt<P6m807;bPP}tG&>}s!Z@6tf+x~2i@D>E~ie)@kh)XUM2ti_c!UB z`J&rr>>Y^R!xal6^8V5Yd|d(%(OhX9(OMm|sA^9&K&O?WSZ$gX#nRAu&#U90`c$|w z3ZP&&KV)lpobqU+?k@Z6^;&vT5Lh80r{#$*4E+9i-!^WoX|l+LJhg(<5HD1=@Mb(t zYrWLUl~!*ZAx2d<+BN`-B@PU2tbwD>Q7?EByHx)(mvMcciY_KUg zLP4pCE!?0@W2gZEIcGP>aRWpl8A~ae0un$uwOVng#Sob+0m*qvO>Fv~cT1I-pSQ_6 z!x5e&=)v{jGyCk92)mjnW9j_3-*W||hIDsr9t8KzB;uyt^o6Y;tdUX$b0jsREk7Zkka|N~uq=yBvb=)AR;l*jZIt zfVIm-GYmW^fQ12Ao2Dg%Dxkzb%0_!x8W;jGT7nRq*oMfMoRVdy07ItP`aHc4NMXPk z3K#=|a+cg#H^FdUHwwesP2yd!gOxL74~-zBCQ$<5z%U8PfdX>@aPHI2e%lbHQ6G^y zw$bc~!vs$%CP~eX4H=`scppJlaCX34U|69El$8M(p=`ScARajC$H+#Poy$x5>XroIf*cS1pF`mYS>o+6XL8syv)E3z?0M39wQwT9L5SraHh z2|{4gr6S;&5MifH(4RIliaaGCXiqlE)24(fF}jtfF*76+%}~F^1nNj}7HDD092MAf z=TOdhlaHZFLZq2UHD(4hL5xC0x_4Z}8vvv;6O+z_>9cYt1=QJ*k&tdWaEJozOhz&Q zqHq%Cu7kP2RD$6+Gi`Oz4kimv6^<-Yd)}_ob0&$PZOCl|>4J$RC!urSMFv8DFA_4! zQ2_2btb-Csbap1Z6vbG|NtjevayJ$$i~>2EO*&eNK-rV@X3MlKfu0dOkd;EGPBk42 zf^%gQ1q+~}AUFhY+0{G~&UqRp?KGSK7$a(kQq!{rx0@LRte}t$0i-Y)GA*l_nPC{h zP-Y>hbW%a49}B!h7DJj-0+nD@$W~%7QNuXxc%@BZXV?z-)xci;E%zx$kF{<2rxb=RG@21ViMTq@&}Ks^jY znjJj@YDhbu#lj#7>y&r;ltCbZHM(|MKlVw??dRKX0lAJ!=70>7khX&It?G?8`yYF! z`|}Ud%U`ZnUrp`Vi+lxQ))(Go-|1Q9K>kiSe=OKk{rwaj< zY!VC7MDD#0Z7?so1AZP^wtC%q)Gzv?^56b4&MfQEt5MD?Gfq4pAAE$aKf=eZh1g9_ zEfg>nzwK>-}!<8%=ZF2Hn6zQdJPSh)xRdg|BwJGl+)dZ5YuD)Ta@vIL?E zlfiPaSu`eamWS`x2T$=WSL5hS2=Od>tR;yTXl>hf{ z+GZjmy0(U6*U7xaI6m!4P|@?*I!_5*p0X!A_le$J6prv#JIAon?YgXI>C^(saOQ$$ zt8VKV^4)jSsbzZ63vlon`r_AAzxG>n=8Rnbe4R5?r|m|7y=crH_OOdk6ujtM(`wVi zJhRdukOEB;R-+Dwyfjx#nocO?i3SPv)y0Uhz z@`o0Rl~GDrrmjg(0ybO~X5ejT^U2j(RIluM>(<_F8&0-b7Jkmtf%$UMraEQG7qk#i z5C(-ER5rD;x)GC}%TFQ@GgYOVFNn{N)9nt-4~O6Vt#5kWt6u(lfB3$_``3QSOP+u0 zv1htayBbqP8PPgX!5jluoTANbK;eug0AgKkqdISGk`PhZ97W04p9Qehh1Ygci*^rZ zff5qf-C!10us-wg9!+KsR~~4S+_3AAyR6zST^V0VAh!=>D^3I*xE4Lr z`~!%vEkGf1NjCLAN56FIrBjl%!UkK~hjv>*I?LHp7INJj*Ck~Y6k&+O1G9&Y4XFVN zM1y1;cq<_!n3aK%UV$y5zo-JjVp&qM%mT8V6;u>9Mx5Wu(MO;osE8m?-b%@Dl^95! zFAfwW03&ZPcAA8eV1Q%*iOEe%MCY3)5{Q%%B_dL2gerVCkr^fdNQed=Xf3khud)mw_W~<4kPY+VbAf`=IAP}_s)g~dvP0zV9Ajt%ACCBNPVbWFyRkSS@07RHf z-X|i(C_1+gXFD-5F-?GdKo%)eHr>5tyG|V)IAn&g5CDZqohk_kWQkg)L<*4Q8fjYo z3}BNyZl{tkXI-{)iUF8}z(Y5EA_a9^n$7KmB2Tlt8CF3NfLi1T?aKleH7q z!hH(RkpKx%Oj15)*2^;lj27D@^){04SUKnY3kh5&3Db&Eg)1=QkJd4ydOaGj z>m>^?C@Nfv?bcY3I!+p?Gt?5Z%^)yhqvYI{8{Vd(OsCS~kqn;j)Ncb9`)kUq){sjH zAVxL-8-h}+4m`CU%jXg%vvBW?1jJ}<8yg;I&q|y9Zk(OC=Uo^@uZ(18I65<=ya=0M zgpGonQz$g_9LZL!GJ(JbIYA7GZ1rxFJ(!{}k#6oo>FkgJk4Y;pND0Mo+UTBC6^)pR zBnd@u*Z589f2z4NhfBoH7671vOi6mZsYOFiBZ|+CG@9$e{-~8pTeC5ktSUR_FVV*37CL&+(`fR$YE_r2e%uY5I4 z(w6cBks|B+{xrVlXXVjH?JHkpfBeTWn8%E_NJl&Ekp#xd^*4git>2!u2><3_(ThbX zAkX&wwKejoyVL*nuJnNqnA>mnKk;t7;11O1YIXFZuK_}x|F2&OKmQ&bjf(I32j(Ar zKWv2=nH{RLEFHqZLx_MOJowr8Pkt!=`JdYtzu5i257L*sj$+m?^u~tqy9_b=Ly5;OM;3c6Xg2a&RPaHfMh}0VW$X~^udRPANhwWW=xu5)L z+0-vQO33eiclecG%nJwY_x?lv=5Io_9lMok;l;(_;eAb(=9+5|LF2R&HB9m} ze3A*Yy`$LfK;E?(h>VL70%D`3k$?Md!q5J^uADBu=BxRC{9#;sy&kzruf7^Vsos_0 zpgrti59gs^c7+t=*Xx)>HhHDp)K=#hM>H(mV(BJ^MopSscLC_W?+trrN@o;0X;U4N zUg=bi^U<+#>y+b07!G)G;8T`K8$*&l?sG1*`>(KOIB=FQu2UV7=f!W`B{gEH|AHK0G z=fyIIpDQSt6{<>VtcU`VS~lFmk|Y)C>QIaY<&dIfQVC#IMo6tQ4k<7p8HWa$fk%a=Ov8K-}jW9vXGTj0`MvcU8-?vjNE068E`fwZnJlRs9QEfv)%G3i3!<~ zMuGyxlmbE?$teTe&a64Qj8h9YM$t*J{QvB|X|!$ERUY`wxz^fypYGoKT1oFovTVx+ zV<(sdV`3Uph$bEm!9dXlNWmba45Ttf4F;qdNT6U8g9;1+R6@mNhX4i-0u;tHHl1xS zMn;k?$+Beik|n+V-R?Ad@3q#PvwrMz?!B*(Ej_(wT|M3JhsM*n=j>*!wbx#2&ToF- z!rLQYr$q;YyaU`^PGs@>oIQ~-Yxfj5vR=qhIJUg?f-O4gfcJ1PSP3*uRg^Kq36l6l z(r2!7uiR-_%+J)I0!!f&fDC9+L;wUU5HGxUg(gbgJb?-;3@8yvEzCog0VQ|bl||2a zf)-D^7%-p|rB=4(8~SKcXAshbQY@4(G6RYWmvRwhWFVk5AC=KSs#(=tsyNLagc7kp zi^4B*UR$R|Lg6%X+8#yLZgnUEa@M(24ONb5()~EWcQmE>Rdov9H9?f;XJDzhgD5GcH>SX|KM{=;s{u{W{GO2U1k$c^p zSvRjYZBGXKY-H;wAN)yV~01Q3k6WPB|ltD7bdz|k1oDbB!lX1~sT-pZ~| zjNlj@1*a{_GUnK&#jMTV8EG=x8jf%RUmz}c307~Z)L7a&yePGcOJzi$aEtfCqEiZh z*xGtQQ!pSDpl18^VOcu|q=d3hU`5r@Ei!Uw%3?vaQF9BsB@nt5t-vLCMxtPr#7Yp9 zpC%Ddaw<3jMb{z(3yW`B5?C0wJLx+}g);&`%(3g~0?D11r}FF->I;Kg-Yq2Lxidx$E`N)TEo7sNbQGTL#xz_P{tDvCHo zNo2kwdwGDjSd3wD-o(&JE`YfrnctrEw%L6F*+V=M!BPt&NICzeD+oFhl+17pJT#peQ2%aqy*N_A2dGuT%CUy}7p8 z;_^!;Y76lv0s!)vtBVYwJzN$PMX|Cpy7tii>#sd{-NEJHTnK@P%Cfxf@cw=KM&!5N zkI(wxS7OE4DV}ws_EI)CL@) zZG7MR^1FT$$q>$UEZaP(zxiwVBe&}Dr`litRs8L();s6c&v}yp5Tz#5ER$W9H0naK z3BX)Y2L1&dN@B9q=zHInKJXV-*XhF_&cFJf5D4yK(Mu*2zJ2Jy`ZwOG>+9CE?SK6> zJn(>pbH8k$m}!70cthAeiekw zpmNKDvhX~Md3_ouZPI5ZqjEKZ2qch=S=yXMgDv&Lp!9r^GHElI^KQ9cEcFUWwlR(4 zI*C3X?AzxL)U}w}xJm2NsL4i^Umg^_vQt@px)qigtn_ZVUlyfXpQiO$%xdRqOaed| zc)9O~CGT>UOb6!e>wM8VBR@kVRTxM+M|gGKNYW0qV{g1K zV^Jo}1f`r@Mba8UNwZ@ivYb5_l+%1<5nwi`pM}Hk3kbXS3DHGD=*0;U64{#$K3gEz z!W#TVJLEoVD8PaEpqo#ruAsd)-<3m-l$yQf{cL~$W%4cpmJQgoR#zgBy{OG+0~D4) zZpkmwhyu&r!vX31-64R^jb)K9Z`3=s#K8bq(Pck~=0p)gwfKdIE6s6E!Hf(91i5+U zx;X#C0P{lo!5C&r znuRC>Xc4if>F!q2stl9>i&2|hAagzw&(mAUP(-zyAs|o-R8x@r|t#~Rc zynyEGLahL(i#Y)BfJ?DJmjQuK7brO~*qav;gGGvjq6Hbke35AhP?Ru3N&x^!3=HH& z&uyo4F=xP;VkLz(stvlIbsbMIDqMF}LWtQn zR_L4zWdN}w&)F~JLlk6W$(*W`v2~`iNUIH#s$*kOLf-DK>LO8F5GeHQB3C=R;KatuBu0eE0KS$ObB1b}apn z0f>zh$lV!(>o(a$=)3vP9Wu?+U&Uh7I|5L(O739u=Lelr8Gx4Ny>2pVWaPA`mDf2z+-D z6c`joW!#yF4NJ zM8=5OD1ivpqUc_zG}jigNHD;WF|8_fJ*|HU5<$hAIk2Zt>2zd=TIYX%(}-Gz!|~r~D8AureDxKRK=Ql^LHc*n_-f zwU_`*E>x2&OE^Z#$bwM9`E$6gyV1~iSBEoqU284i!X-UZ9VyWf%xqQ@6L~&Y4sZ{9 z*ux76L?{bh8ianYVD4(cwz)E@Hfz(`r1b@_42sJ8?yqI(R)*!Ua<%BjEKb`bdMSE` zR~?9eCg+V=tfTbGuy0g4CR5Lo0_0W7Vn#Wn(fXJIk}1kfFUIEDdi zU?626i+5~0{t5ud5fyvu%!j~0hRD2JP+6nr!uyV~A|A$|osm8QJga0XNFBrA0R&_< zr^X)Aak?Uktrejd2|-9R*o%ae7JDs%GZ>P(f>nuy$diGLQNY(oaDcKpCqy0dz!Lzn zYy=}SQosw~5DS<=6;7So>Fk1eS{M-sK$@qY=Vup4f-5~#NYF8OoEMG)1OhR(R1mg! zKL!GU7%UKvn86Nd9>x?0C&)~cLI8mcY!F50qczZudUyuN!vq;*qU6XN&B;wVUr{@# zhZ8mv=bSK+FarXDQ;-3SEM$O+kQxE1AtJG3F(o!fhRU@DCg&i9Q;4OmsZ7-aYyvGk zi#LWc6kfq#PZ0I3c{Mcyd4`FCjak(|=G0Px2Lte|h0g^o%$8KmC<{c;=a^sy&E!g_ zr4u4f-mz-oq6h=zhzb*inHsr1t_x^ zhyX+OK6Lg>W|WPiQ8wqWA2f86xW0h|D`NGcpU#NV3m`YAo2CgY#xSn}=g% zFqx6Tn|e>I#z3H~uIMP6rl4%zqpLa+IG!hY7ap&Kg0mx4&mf>Sb?Ra^RuDwcX%rb? zVC^~>01zO-M6-iw&nHiFA35s848({PKp+c9V+qk*k8|PFm<<^CM4o_F(KjX&^Q^P% z*+Gp7q~-!!L1}J^WaMa0un=O;Vq!2y3MFGO6xo9n-jVBAaDa(;l3ELI%2A9|9pKp; z2Z9R2KoB;wtSLhR7-$tqT{2g&@LWd7NI^tON)D2R0q-T0nKH;gFal@qVE|KLV@Ci5 z%cNc$17yssX0R>cB{6EmcaC78$XUdhdR9>frfy~-032Wo74-fZWZEsxU(aScr%n za&iSSfN0dwVgPtD6q*HUT)5WxEKKAr_{5fBnFBdh0-FSAV6)&D9%2ZJ!l88HNW?(G zFh!ohy}+~nR|i_Un2Xxe!e9ampZSZ=9tJo>1KG1rRGU#&eBqZD-}OE5cYl@qa{1%` z76*pZ2qxB0Wbs=oLi;H^J|isq}7#l_gZ!|q?cH3;dWj}*7u zg4cZkKvssiNOGN0XYSS#o_+P5Rjw1Tq4CpsgPiyIeByuBXL>$hRX_kmMZ2Tf)hIak zb^o+@^wIohf9k*B3*7hp03teXtnJ?-Uq8Gtzu*fGeb>KW$7!^fw3zIbH}!t(Cz@aRIk)dx|GnRb zm%Y5RRI^cl0uiL3p0^5!p!S(|i;V&dX!Np+ju7a1?U2s^+0w_`W!QSAY;LsnX`dBG z*7pFY5nC#%|Lv#RpZrOjJz0L+ci>BIA;>P2q1wY9_VCQ%91nZ!18q){YF98|G*4bo z%(^~q`dqCHi#9m|`G6+j>^SDmUwMxrvkfAU88+%XX=F4C2bM||J+m2G(P8O_l`l)4 zwl>{p#T)aBOGxIT=$x3^BneF;JgSQQqq2!IZj#J}L)f6sxlu3l3SJw>aU+EzUaayu zts??6@u&*DiubD1uU1sdW`;H+1TJA2F!%xGsgXBg(+F3Qw9qv_wXDbK-t7m!vIbs%eyv0WzWI(d=JkC zTC#D4tQfmc8ywS)D@h2lo$wPeV?u=$D_~&mH{`1iw!1y zvR#Q>ltoqtD^vpweLh-k1X3s;ET=aP)_R=I%3z}@;aR;)C7U<2fZ;?vT94I{a^w2m zCX8klO32V!V`{QDA`94889RVn6iL~69Pj5iAPFC3@wouDu779JW}jzi>iUnbcF$O@Cr6>Ao7$AA&K+Q z9w!ht;teQ$4lG&OfWSgz5g@{_m>sMpD`C1)G)tlB`Npz!G$DjEbNYil%5HJ=`8J;8jZ}_W9Y#W>{NrV?m=& zP4^wEM?=>vaXi)xpUTT5L?)-&!6V}XIl6;7uCu>qd<0nzV@-r_UwcWdWi_5uxw(7e z+WR)I$y0Hw`qyV)_Wt!(Hf!G2(#h%YW9v7JbLnC$ZSQ0rG*<2}nu7CYE){gJSNC08 zYq6dy&j@7eGC0%r$q;ha{dT0c{)*wLVQ8M5uFM)otq{pNRVUg$fS#pU4vqRHp02ow zD&>Sjq26E2*5cr-42hW=mmQ8ZOLY!6_0Jxv#;v%*X-{hw+m!x^dbvrClV-C9e#OtO ztu}|D1yH%Rq|5*+LS^tI?9RlhO~rxUWPden#1rFXqqSG`&z@^zuW!re*qi2tvs7JmvZTXJ1>+c_5tFw%8e5gI}(e)c*!@fyp^XQL{f6iJi(d1cM zJTYA%(2f1IeMP<6j)eGVZ*v&Z$v9$1hyB`-!P=*0D<@_vp~*bePi|cE!S$C;vvZsI zsg32oJ#*vn@d%qt5r4OO^i%ado~qPz@8)&)tX;z!(Q7`|?!R;WXe;b2gYAS4SDRww z;*gubvgFgX<*ZLF0Y|FMR}WA2oSbZz&ekIxX9nN1dCeUg*UwVnGisE_+m$4IZ87d~ z+(^AT&t++zY?s!pcX+Tl@bTgCfk*58sM$5?q^x{we0?kAlO*MnacH2wzx338KU+`L zN|=4&@*^YPeC)){PmWh;DiY<<>HbfSuif99y>hTRjm2i_AFkG4K03XTdiPDQYi8ai z^3=xu_Z)xq!|Mn6tgLPh-t*+E9-1C1nl`VykDs~WuFa!))rGZm&&Gj2KK{99rWMc9 zEc=Hihx#tRX6dPd6`DI9BDQk8adgF9-1ENh4hl)nZAp)`9tOO zrv6zmdZJz)xOlB!^JbqIUsr3`Pj#`GR&rfX{_yFSJ-m6q&7v2*dwTR^8`l?gv`Kn& zw*P_2;oP!McA{N*XmWUl${BK^&9>JlAF5_cMFcSN?JGy84wTc4RL!L5waIEcKH2|? zjce*@;Tud)-Z$GP=8u${1Byvq-^I^eI(EQKADir7oeq2im^adZ~P z22b;`+2E1M{(+A#8=ReLc(6H)KKVX#vA2rd1t_200UTd>{?VV|man8{?y!>p?J~JU)-OyVeez-S_Td-)bM@yR#oOOWH@t-Jd&pvK{bGK4 zGfKcee0}j#KUMw5x6zOMD4p5hd+&!CojF4fJ_<;1jQFe@5CAGix#0&Mdb$+z zMLsWfaYft~Y&r188GiT?Sc~G^z+X~2a-;v5e_ws@R{!>Q;JTydl3ieBz%t3>$JdUZ zB4?n2zU5oW|M<4v&;0_v>$^yt5$LI7e9ygz(W-M8UKBHKJm`Mu7t5djrS>QO13vFH zmz^bpIXT{6p@{1)VjJ+4u~>VC5CpmO^HUVO;+4hE{rlc8{_?(`{uyoB{Ma%2)N%UM zasK3keCiZ}r~mO^_Wt7T;yv%BH{L?W&RPLmE_n4UKl~8cESJzT>wMq+Xqu;gLeGIM z1zug{haMs{C@+88x#zV*K0S8PxIGsH1RyK2e5MRHkp-iBAEdkQGfQX*U-LE9@BMN4 zCm+E7@?#h-BktBH&>r@%hi42X^n*LJ6iS+#R_~CO;Yp)s>N+LsSH3K0JWHoHnj~`> z!ab_Tg>Xa$8;{$~TFb&8S}vCd)lx4wrqzu&o;Ko@uub*Y1Az_HW;r`;HYTYI?wXZe zuU7%E)`D~U`b96$>Nqwj7dy;DJGy6yl7OXN==a|8N=8lZZC;)hK0T1eFdS_N-tYyyE;*G zZr28>_V8JO+1a*#I<6qfOM7PzmSX{+cA%JzLQ{+Pq${EBb0#AX^g>z+^}shJrOrBs zkqPJoRbuj!R52q^%Gr;zpVz%9CONE2<&cLyt4UNYeI9URSV4BMH#^eXTyZskB^M7= z6Cyj-j5gVG!R(kTlE9UZ*Hr5Tsi<2H^>x)5N4lP?%~TO!1!-@t$dL`l+tDl+*A?Sy z%8g_$TJVr1U&F(U2;}BgHEt=So@?9eRJkDOxkO|cK9dKaWC{RoN9m)TV@?o&3(6u> z2EjYB3=^;eR;nq0XhcAOI;g;W3N zOiEdt0)=IA^C`5Tv=r)5Xe*bNLo;x77BAib#EcoaW9@QI7 z)|zTy?LKT~aSu%nVd`kwlG2w^_2)=@8%G)~dz&$6e0Y55lam9|<}|k3R&V_Clb@4j zK$Ffk{kt}50uBfZV#&;Tf$lw=uzN3I;4W?)0gHuH+F zmwl^7Y?wlNHXB?)jH{7*;^mM&MV{L2Py?*50jqB`e zBFztt58SzNG|m)tdph?%aPnnqslqHx>hke=zZku2ur>&3Q+jN;zBgX+?P?l`Vt?2? zN}G?)_MdKtP7-GN*m(b~lb5zLk6Au59(-i=rq%I~rYV`-zJAkV<9$A+M(DorHTRDX z$(T*ksmbW$o7dKJF%+DZ;d-u?ecSWmSO>m6Tuv)eCcD1B@zUYh9;cJdXmeWGG+9IU zPp|v<_(+?BPpGpy-VCF-ql1kB%Q%-=xnr#zt4C8Q4u)pn)0550@p{=NB0T08XAbeTk~$&ZcqJvQ5SpxAu%=y;7{ zEam>*#x;Yr_3^%spE{J1&ug>eYs2@Q{=7%Vhjk;z$bWh2mG?J?tG1oag8=^i(lKUxBCgcY+ayif;xA8q?p^CQ|o(=q#E~K+p1qK>Z8>L!%nxup>LMMrnCIu^pIp;mbRRx;bdBJ{@C%CKfJLIP3u%1 z8XvlQ?I;qY&QH~&2giqFCg0kbdibg4U`)(nqHb)JfLFr!P&Ee7ckRuCGfTcb(+;AM zPmo!Ds$G6?da#Ybr#Ow}1LH#} z&fYva?MRY(-)Jv3>vj1zr*B?u`?Qf)>*3#=ec9>Fp-p0p;e)4dK2|T6DQSy)Hn020 z>PvivrF^CtJw99Mx%krIYS!>zeV9fF-f5cWxmC4o&nL}{r_&RsS08)w^t7%4nAzIK zcztvHbnoZC{>WVqKYsi(y~X!%E-r;;Z4T**tcD%no>L-%vQVwqKSWv5ByR-(0+5jb z7zI4?Ncw?)G5yjn%HRAoc;I2YWQ86*Cg1j^@#{W6{W3UH*|Dw)IoE1oyCl@yJ8%cYf#Oi(fZ;{p;w~ z+iVy<<862H?6$3VvnxTcr9dC}(DaL6H~B|jlz#Y!ZS7PioU@InP{#fxN{*UyZpX-j zvi_?dn!Nhv&DXuQ`NdxXvc3In^_y>*e&g5aPyZBL(%*UK?5o~5e!~~Z4}Kro#;WZc zy$w9w^NILR{^{%+{|SBj*VFB{qU6h-*m8g(>lFwtSxdX5cSWIU&*zTUA-U&Jo>DSy zyS4eIZ=8MWH@2^PP5q`f)?f7{v#)$Z{k2~{ee+k%zWNRH7av4$Sn>9U@2=nQ`swRm zYwvm&Zohl_#jl&Z;fv~j^CQ#0`P<3&e)r@{Uf;guO?>Q_4L>avgkZx!fArqz=f7t1 zrLT`a`aj#o>iHD0=LXx|!OUG7{!>E&JR^Mi(M)6^+t2>Y^eew)`qf{i|L(`oo~5bS zzGd8aJsQ635|!ycYTIOkTD(W{DriiHV*5!wEw-b)Tv-qU!JQ^ueuMy3DkS!}*A zK_GxPChhUnSrOd6fpd=5CaKODAlk+0>E{syhM~^s)JDD0q~#v3^r~{`4lWe}oZN^p z$+=C}akYpmI=oW!dwVH~s~j^C0MykKUH~q@Tgy@d0Lzeed!d-d=Pw%b#J0YyaZa__ z`ef%`>EOoTxnBLQ#O|Gm2=FiBnUc)W^Sb4Halr#gFt=XX<62%>v;+VN+F0)U;CXMH zUl|ZQS-WBF1^`S?z$Pf%t`42NupyvWFE^)e^7g5Wtnj)kCllI@Zt7PhOdB%=z@7k@ zk_mxfSpf^&$!3CxyB-lhgw5C-E11c!;D~f$hiv3OP{-3rfmBpBGZblu*` zWl#VZ3idWdhHr`CDWfKgy)2&o$qQz?N?>`E6c*L96kfMCW>iJ0LbFsOnZ@s7HgfLI`P6`+ok zV3a|NzEjV}#BuA1Ln|(-%f|DI5oM9C|NV~VA&JZ8ZPAy(i37l}0>KLrEKrxbXVL(J zKzzT#Coq`QK@dO*?8vcoUEe)!4h{gZb>fABWC8-f$bcGo%M3LS5$jPlqpgR_$IfYt z8s|e0V;GSDfy6;onZy9=`%IiW83*b@PMx8b)9q?{Q|j6pFrZFe7rq6q6e82DT{Zy( z1xlJ%kaT~M%tnNZd9aWNstOP~@3{sHgVJOc zAO6a(z5AiZjstlAhwuE^|NC7(^$Wl8q1!)k;k5#I=kNZ-gO7abqJP@M(<0|*&y^v8 zzanWv0rb2#_N9PgKF=*hfY3dzRkFYOK>Yo8Blz~N`{mc(j-2GT{!9IlJ83vfAN-*H z_V1dtbAA2Q`(tF-TGmu<~#3}Uwwc6=tpQc$hY67Z~K+`Li1^0g-6u-|N3#=98+24_xy>x z_fO1u@a1ejd(IQ%mBTI>w-+MGGkT`13ijk$^IzT$5rEqF{I))E!iqpmqG_UCt0=sO zJ?!C9;hb9;xM~FFn3;P%92}KP1=^%%*3)L&u1;ezJFr|-A-s4!F`fYo#$@|@)io>C ztVx^Gq^A3ZVOV<5Zhmn+?;rvjFx^NSQyKK#{!w8@b)B0iI~K@hFd}x$qcZI4yS>8Q z7X!HCm=)*rweKyWSP^>p7|O(O<@S2@%<}ZI9eOum*RE9OUbipWbRIb+r@L4+^Xfw0 zeknhX+x!;^D%$pDXWA2iyMo9DtsxNra)WVgqXKB2@5{PcVX$hSLIz|f)Sk3@zw38` zAiE19P~FWm*{cQ=_7Qnto(CjWW(5O*+l|tbW+MP5Fb5C}@F9y5iJ2iAHz+)iF!v?O z%DLM@E@;HM@On>qYqh{TLuH&bMKYJHBg*BpSX<@!e*|!CXLJOJaWV%i2p|bo zAv*IiAIur3a-OI6;VLhFLC>H7&YHwIpPdt;R=bTInP)9X39tY}aAANz9Tak20%T4Z z0SqW$ZTEpX2+!{jDWFe)C(G~wmM$_cw8E~csg-azF0|*6Zv0Y&@stExttnXSNZxvg5 zQV1{vpEdy$NP!($oeNb`B@-etgu-(T^fe3n?JS(YgP@$ExIo4}SwY;y)K;jp8<`A6 zHWa9QW|*e!dlz`L4SGESoHIy)$_+y!(`6h40x??_RwHu}DL9X=apQtGWvv8Xig6Oo zf&efW307)ev{HAr9>-cs5QDdNC2DQXq3aD+SXYqUqG*Ah!Kt}zQV=pig6}pCb2TRG zDG{>+U}Avf-~pIXn_a=0R2K$0Rrr{}qh=EX}qXd|7 zf`*?NvNC%PDNaIm!4^%;3vFyRO&gR~2t2Wo;*7=TH8oVN_t z9V`Rn=SLt?cH@E^ zQ(=B0Yzm;=D0|B(CXd3E8(igR!E(zWgc4q)rxBi1(RqA|feb{ZA>K zNFaDpFoOamB=frI;1Rub6e|%1z^p`Q0!k&SiOjZUF&H?5y}CjeMi&nru%{?s1C>0# zc;b?o+L^N(97i}t#Zopcc>};?aYs#vBLzSO`LQgBG62AA4jjotX8>-!HAJ+N=3J4@TP z4?K42^KL$JVE7~8uroaffj^7=czxWUS(zo z-eLqmWeH}agiz3>l|X4G@2MQvY>IAaVGVF$0pCTkv%I^P`lMzNyni16Q>EU3LOG{A zJhL%o3>plmDl8_z)L=f)pbsV#!Bou%IU@urOO)pmJE>p*79&+9dxvC~-4&+eF<$0_ z0ssoXyXw|iLCr&=1}X83NCgL^j5)GG#?@oU*JXrFYJnWNXu$MVsUXRaoi=*K!*riqKZ{VGkFe>~lYGldVaq zU|#BnB5>VG)_D|@$(057f-C%sH<|uoL)isQ+Prh8Gk00K+~`c2w*I$@-psDPobK*j z)iK}~$)V>F0hXViecv9T^0NvWRb8CTL*pJl=}O{YQMHicGDWwOk7oRW8R{hpgGIy_ z#OjSbrg6J%RbLQS{ep!D)h8hBOPXU3mp2Ij3cKJXb^*M{9<}_l0!wRV89+=G02Mc< zTtq30x$1xd@Y%6Mpbx}Y5WxqlECoL^OIQm4lngEdoKP@QucG=QDH0+JA$6C5xW%N62F?bCTo6{3j(Mal z5MYEEh#bg4LTgc%LYpEQ?&N#W~hl@Za8NhnE?oty0Mg%8}URP zIgJ1maofga>j6{HEET8>z!rn31>jjrKdnm_GA~&x`kYl<&c3jQ&0^)-rX(@SR#LVS%JT=bhOfAFjWBeQ3Ip2`<;?<+`8z12 zrnPd5gl74inpcA@-c)TBtN{pW+^C=P=(gG#b0dB`8xdmJeQL1ww&%^{X3$rp= zCN~KVoVJE83^rZ7`)O`|vNbpexf@OMxqUH=XA-gzT3A(!A2r!I4|af5J&RN20H-#e z=PK^Bt*9woOVmxx9APC~+XJBLM2TDYx)TF}slp;ER4%zCK?7TJ0Gt!=WoxN2h!AIC zXlP*?JDY0*TEiBVEzSj^P%Ws}<|3$WVzIc#MN4RFW~0#BLJW;yvk{x`_nOFL6*Z<2 zz`(U*tpLCi1`e}x#uG!m%(5wfuYTj}UjEXf|N4LbW!o{#&a7@c_~=uA^>_Ciz3$pC ze9cX38{=yZ?YsG=BQLrB+QG28XMXveC(fL`{@R1Le(b*Q_@+1A zecwZW^cR2o$m1uz;!FR*|M1OU^VWa!AAa&jzUT141Mm2)KOT&RIWi29}f>q0x%_mTxUqPurO@^wL*O&zv5toxsaqWoJ)gye?mM zOZm!|XCY*I7U4GqipqWcH-xn{{pcOEyd2*8Ll_LHzA&Hb&$Tq^Rt~#+f1L$=cHi@T zvcBG{H~GK&TK@7kLLGF+)``i&oQ_P*Id@G_?eo8&{DB{u-gaBhv3t{-^|hbxzx_M# z>u*yo-B;XVfA7`&6<-k^eSpSm^x7}h*S?n89Y+w@SHGpW?QVMbUfldD{~h0Hy}>zO z_>6GQ0sxR2;?uHLmai?p;+Fbd@3Oo84mZEbzTw-c70AUd z$B}i;V!f((>krP_+@GAKulySK#xEn2OER{*IJyPQu4T#Xo^g92KHar>HctSk5xwqO z{Il;4fADUo`hWa&bo6jnN3n-J?BOZ~13l01Xj>iEIT{5}=hWtz0h=^AW%T=Dc~DGe zxsG{{E7QSXj;L4os&rX(qmC&VfrI0$I&NYT-!EJ*_-Pwwtz3Qz{0kfgV{pIl!@f%@ zo9mh>H$=VQ`jszSF_n~RQ?jD)!-|62t4DtkA?owSoafzXq41osdx;+-!qxARJXI*MBr!kj=g+4tg8smq`8SOn@5+7>6u!S>^1i#;M_J_ z!JuCh5Zd*PX$3-d@$q(ZNH|pXTT!)Ly?`UY1aY=~h569}uh}Jr=2ssS5E~tZs{j}% zc6p&)2oZ?D@7}ln)dT80gb;iSfLWar7^rY@JWnVxfb4~=a3Dol{{QT~dE8}JStk0t z?;7^rXZog^D^*D<10h5R7@0(nQ3h>PRP^V_aNFTRBVM(&!EW#GDk36!8(X;AXybs* zAc#l{mn*0Y66Oq$gd~+pQgeOt8TPP-_x`c>`Gy)oRZ^9FNxtWoU!`iFz4uvX?X}nR zKJW7gMu^Y}+zm1;Kl*IaXL>3j-Px%u0Yj0@F+gn=Io5pb|QXFd=xu0l45FY-&imCdO{1b^s`*D6 zP^OBSL5THu9brtM9MO~L0+n$VRsf(3DvZ@NjPr_>LU10srel@W3Y{Qd=dNgz? zNP*ThYiE)uREUm7g9>9M_szvhlhTCs16o*BBa+Z!6k|>f5dbF!0F!i+Dph{qtw?=B zC6o|c^E!?@ZiZyKickS6LtsDz2{7`Joo}HEPRC`cQUFkd#LFsaDrC~D!g6fd^XfRf zs;GyiiPe9)7=m82&o00yYNdkKUOWk43!kKwDDuR?ksmhd1O%iAWweqIfR3riN#ipF z1?WgxoJxDBil*}rQUWz5Y9M!drGQpd1aSlKWK79JuOG(@2#5hbXlad&t4{J)iU9K& z((*-7v>X!nl_dMxOxXd^pzt~tgwE;(-kUHsRx_N4AS2h}3P2HvmEr;%<5~L+`T)dCtlDdgWLwiGn5J^inooY)tO@ai3jH^+iL&y;W zz=fw?o1;S{a^sdJe>+S zfDl%C5&#%zq=DR!05IEH4~+ixT)eZ$=R{F5HH@1mVEH{5#nd;azl zKlQTbU3JBt_kHA_U+}E&SRVGbZJT`m|M$h;{H34TzHMe|qI;&Ve$?UI*F7s^_j!d} zxRfHPM{j_tK)ZL-ue}k+kI>W%w(OF=$K$TDZ}?BR`5UgL`3PHgWc|JwE@9g)87?EwdHWvfO@nH+zO$}G5vqdhy(GT!)#jRO=*nyHq{q_G zpCv26Z!FD`(}0SAXFjKU(N1zXcI-uWhTNKXGm~gdCyvRTx8kzL$j_gI7*KuuP6PtKM!x-wdG*{xPwSylKPI68*p%dH zAP~*ePK;4BEPU=v9Q4|B$ zTY_4HiAbV4<+PJ7cW%Qb4?I*5VU3dl*3?)=uO8G;S?U2HI3_5PsG8Fh5Z0VLzLvyq zK&gn0kLWk_()|n&OZtfGzkTkjpU4kpWL`V*#2=WrL`4o8o8O~7spXB^$v=YOh3*c? zQ#PheHS_80GB$DkL8=Mth0u7u#K?6VUh6gE2MN{brVi115x77^sQD9mOp*YgIdX{2 z_*DT37|nlH#W81KJ=LIzHHx92slJV>y=lhzm#Y4MI;Mv(i6&Z20@o0c80tAk6Yd(3 z$>4xMG7;_^rSZLEu($uLEEMNC7FNR+L%uWISNVuSth* zV#S2OqKIHAFs;rD$D*evO*o81fIvZ8q1pvX#<|~7Safr5%O1j_wXEFIHYAU_>b+8? z3W@erXSM5D^-- zX-iQcUc)c|mn%#HL4smpVG;^fjM%biGMXck00n(iahY^HMN!YCwWr8pxsKNv<&B~DpOseqp<8gsqWZxJ(cmQ5U6Y7)I ziVm27s;F0NlCWYDq#=p;f{6ra!-t3hZ%9^Jq2yF3l`wLg%r#j9854U#G_07^>N=Bv zgknt>2#Tc^15H%iv2n~%xjei;;5@Ow`h|n@F zA8Qd&L6F+dgxo1UAr!FMK%$Hjme-ARp#qFOU6=@fk3wEpntlraw8aYH$#OV(t*s!1 z)cm4IF&Zu_9UK9W+?Xs__R$CSCC3N_wm=2etYS12VM%F(^@}6+o^&K10B|9N*F6FN z7gZS=4rvwET~eV!fF}(=qUb0dfOV)&7gQ0*Q0ht%Ze&TRZu|j+&`=WLMQG&Bga&{h z*kWWP>{Thm zS>b9nj3^aX`aL}$u*3}HWYsZ500(ev291uw5&#$=U-N89PF@#@xEPR&rm~Uaa>6dP z^|-_&4LJs|?5q0yQG~YgefDF%olaE{ksz#3AHoumZ8MXv{IM4U*niLAcf9-WckP&g zh;sozS-Nhg;a(j-vABE3)-+8hrE4E|+3^$epZVhG@UgjrM^7k466JfJ|MdU)cb~lJ z*8Qzk`pl<1e#h3y5B}q4ndt{!^vuUzvG=s!{wRZk63991hzTS>&bOfrXiNpH8cVhF zd2Yt?=0T%ALP!%v~vqWj0caXOD|2{{>QTSV#{s_)JdH#0TMTUj3GvH z!h5f11~c#14VO&iowv9*zgd0hdfvVx`_p&Defw6pGGY{j=nsF}|J^4-H`71yGwLT^ z1(V{k$Jb;hasej8#bYffx4zP%P~|bR3p2Y2fRE>rw4=l-`M}?de)o5!EX;GCXWsA| zn4CFPSBBBZDV}$0Z_OKKkx3%zp`>OABR-IIZ4?4y+n#mzT=~P8peg?D?-zgd7wC5F zD__l1lldRLJsv-9Uiw4&*Z)sx=}5r#J($@A5V_Os4-z0{_#b~>{>eK4B(MJ8_h@I3Xh8Bm;g+LouW z?n^t?wA(uOVKnqU#74?^9f$xQ;VS22%u+kmvBN5iN*`lhgSJ_}g_Pc$QJ9M`rUhwA_s z<%dH+uymL|{&zwKAvT)6vv2w*yJ|{FaQzwND`ZKPyrdDB676Sq*>MZAzH-pSX4fMiNr@k?3jc|h@u0u zz()>3p;mNgh^hi^!e@1yYu&Hn@c_Ll84~q)C!7I_AdN_Xpq7C zfsCW$4Z9*z5iLlliZo`FiXseTr2!c4AqcT~OpW4#xR9lQ2hrMQ;9)=@4pv1bA+IS@ zK#Y;0NLKVb6aZuHh$A6}$Ra^B z`Jl&(1cLLmQqFkQM*{NW8gpSyU#DhU9XVqJIz_}Yh!-~l2ClSB{F<7?L3AO%Ln z8KS|4NEi|!GOm}y z0XFzk=nzCKf-G_51ql#gDNv}$YVCsnE>iu>ifA(BJOm=B#BeaY=4BzVH1e*YX4^5@G=dfncK|JRpZ_wT>A-AV!a z>6gFwt?zix2R{1GzwwJdg-t-Ch$jnU-6sgdP~if_^gRsWyl;DWjCpOSTmPEgKy&=a z--b_pjyfG#m;(S2_vufkfAUs&(;w9*Q*&8^@ju0gz!Dbd9M-{#gvtNI$HPB<6hzX$ zEB~E0r0@MFG5VBvyg7v{1G|AY`c@IouqI(b%+>qe>;L{k(#rhd!}x>W#2^2aKsP<1 zCH~h>4&L@o>UHB$j}QH=div9_@3HG1fyjL|z5D+3KCVkax8GL0^{wIdZ}QZn`+q;K zp7U&e$@ianW&jxaLXZ}SHVoT<0D^Yl_z-b-0!)As)M!Kj zF@#XP^N+J1{$bg&o60kgiXSjGvh~tNX}709QN8Y44l6SsSu&4OJX9g+GHhLFJ@QyG*vLc~ z0)il{h=V_fV1h&(Izl0$-9pT;FpndL@VLv?d#0Z|loIdc->#>-?@@dfzl#_|`1^mT zAJcuMAms)2?!h&WtCZd($~2IKd3ixT_y_QP=-#(HpOURA-0R=>_HTWrTg2X{t7p8> zE2d4N%sFBLZ2)ETgHU|SlQ#kk$oaUxTqwuMvi(>d2#e3a_J_7$X9?4R?V^}_sLSyv zL3y6j!Zz{n1?dh$0K@`Vv+L@>TAy)qO{9q&*U;!xpEO$eOec{N1ee6N5! zl&oIq^=j<%j96*MRBN$NT-ob4F0K|}yj-(z9vXr=6OTwvp10KJ8K6KNG_B*>d>=yG z2ILxLx3#zN238tP9P+2#c0D!pqBNpk4OH_=iRv?J_Uu@eWaT!i4j`a9*SYy;6!`H+ zLMtU8H1^N;xVZGXkZZt0pinhF5r*Ub-gdd8uF7|siESm9@A1BkFx zT+{4MQYl*DPSr;kk~FS2iSnc@kgL_7M$qeDF^Lgt;zG3gS09uJg}6?bYE?^W-4T+e z)=%k7Y+{`x%CEf~XRd1@jw^4_NtLw5dRCD}t;$(Hd(i+A<(kZI0RXl@4kC;V(P+(| z>%X)iDK(!d1RwZJN&gzPJKTCUl_qIkW<+C16r^!AB!Qx+$5an(Tr4#jYqPUmqcLNR zUe&2h0H_tkNW$8iu5?N#-Hr&*wJ?`=NjazV8K3zhuwOXFYxNrLWyOJHPabmw(SiJErRkpLX5jhK2jwm%ctT)qC1? z-*)ZQmv&ppEw|sDB*}}P_f#Uz(&UOucinQ^!9BaS7Nz^@&9~oj$HAT3W}f$5-*MWX z_viy5JvT)eK-AdS?mR+j2A{ehF$WEl_c1ig&Os{}BmF*<;!X!dF!qe+pM+G-z7v3e zLLiigLakH=Luey(#-U`*b+vF{1!QOYT^kVurNB&yMNxuJ-nWdST$o7&0%AVT%0l-I zW@yb*lawYxL}%D0RzQG{xFF688_G@D8^p8q1UuhQaB8gicOkIUCu=E75hJvQG01a> zh}Qjy$tfUc#BiT$DuIMb$|V>LK)jdb0=w4u7oJzhnP%r30~@wiiqgDOg!S{02zUY! zS&Onlx3e)bp*FFJO`Hw95AS~8NB{g!-g)o*<$EvVzy07%pS}KuUwzF_JpQqloNL6F z8QqRXiP0#Ch^&tFM1T`N+YeJ6vwbQXjlxn{id>M%z(#{0GI4K0w-Oyj1o38WUS|MW3M$UL}U1It!Ar~kn>de<*bFC8sS#`-F&x<;h_5PRIaHBKp&%qeieQ0U01Y1%)e(J!nwHQg zsnA%g1C2Ub?O&n+!xCW}azaqhfRflKT=>{L?hwg|smAS-1RSISNGSC&SEi;V5DAHh zAOZ$3);X6G^;el+B&L)wV~3=fkc29S*QZw30B8a^m^GFLR27ORa^V4 zd0A=+H`P!v8chSRha!Yp(|{_7CXS@*xbTW|2(L_RW35MH06%6q2((~DM?(OLfC>-| zXaxtVE7mEDbs&TgS2j(Ujgq3miX4lgSOt}mUqg}*37`n2LLC%0U`vrH5Q2xe$R-6M zqUO57ISp_Ejf7pwK`eVsjq0}-X_1&uNM2r@j<)D*V9tlv; z5=jK?!PY2OyOa9JUX*}JD7X-b6pO@qDjSRT@=AV8C%U?enJ8~_V!P1;&n0VJfWkZ=ST5-CzT z7NcBwQC6vYaaFs+rX_hH4TH*1Tscoe+}OE-7(|g+!2)Gyq+Ec6U0b_Q0BtX7#p?|U zu6~KVzzZ}*1`}u$EdW*^h?0=lXnk-I6~I7B9zYB%ky^Dp3j-;r066q1eyz)X@T zQLBLqZ7GdD@m`c7CXR6!OzEuyw^e1eCkv}QfT+j?216kl4k40Fo*11ynf@)SKOZW&k9swx_WMUfyXC{ij=Z80YxMA8C}3Luh9xd?W_mR={y z*(e|#O(2PuD&h#%M8S|SNXETe06a_y%Ry=-CT19Nk%fcy0Fl%?X30zI$yhU}8lr+IKr~kXBB+R} zZiLXy3RaVYX@Y`A6R}c3q9wxuP7t-G0FVL&g0{|5sDdghD?&PpB;>^Ew0T>0ZJ&JI ztA4O9#FL+RRS3~q{qmPSJNPg;*_)o|5Ybbg^w>)-+74j%jxFQXjp@nmi=KVmiP?o# zD}C{ElTMagamhuq^GmH(mZb)e;i&l1O}9Mdy32NL-vZ!eFL`EBxK@^I-#U#=0F5fx zxlJJ{To^@-TBxj6>^i@bS`QeUj<^aSM1IxJs=IHO+Ya!zJr@0;J9@%==QHFrZ$yY7 zI#XJcbBG{S*38o}+cAEth&DsCQZM~}^Nm~m=RTvZd`$Lh|5r>5jZQ7yx*HK#5Z%K% z2R91qgn#%)=+HsB{`0u{@p$Fy;p2+17D~bMUt(YRs_@Bw;)#y_f$zuOef1CtoFWCZ z0)5t%e`Zi2vhRxImw%;v^Y6%Tpr7}Adg^!L6jc&53WWq#%rYHG54`+tqck0&qt5%b~~0Z{TS-Zb)_ zue?0@`TwK(f8K%M?a%%!F29)i7fMbBSXnx4L~K|^85g7$=8`%ue>?%E==rf%>KA;E z|JeVciOKS{zto;Kav>kzCN{B&3j`7Q;*Gcc`Mdu7*)M$QZ~W3LM?QboyFT!?Km4D0 zp1t`ue(cJ97oF=aDHBbkCQ)jTd*@EdtARk~2UXjm-O>}*4u|fMA3h>UjBX{yFfA1! zFDij#=G>;E1oGa`FNdt9dx`1VWMSxCh#PlcJKr#h+ihbB%L6y4s#E2N2&|aWRCQ9# z=f1Zufb*UJqqX;5Kt`WM)Oiyd5-C$>XN6lLg#Zy@rVzv!s<*;KF3>^b)oIs0XTlu^ z4*kY&{kL0gU7YN=v^(>-T@;U;gbzF();$F&Y-A)F|?t#;A&(lKt}&GvM#JsEaQReD_#F_7poQ{{v$tI8NSf=Hqu z-UAU_Mw6;h$Cj1TC-Uxu8Fo=Iu%08wy+L?@wjHc&(a*3K#DpC>i$h*?z>9l{s zr6icNqa8_qX_VYrb+)+njP5Jr%S10Bov23plG&Ci8JMs|2RI(p{=xJW9bvV2BD98L zcbLA-ofaG^Cw8VwGqlXEm@Be{Dw*jHT8TTBcSg=ks4CH6Ioe9;9uREh2OLCAn#yn- zRJH`zi8X?tL)1Z{0cukX29f{*3V{}o1YD+)~5{^-aywGWqZ_|S#n5>*- zh}E6}Ul`ZOyb#7wIt3pZ&lg+g;tI4kY$~LQ6Tn4|k&>)pryWoNJzFk%TR{=TAVg0k z(gc#Bno?y~`$?1cOtn49BWN+0ZMss70kUr{&upI=Y>|b&^o|u1-DCu(Cxc(|={JX4 zsvguRsA4!j&kM&>N7Z7I-Z?u}&1hPr)O*avBUumgD539OoZhLIWLOT%?2f@!cBB5T zcB@~Um~Y=)ZXZn=JsjRMfAQA_yPnWJbcva5tMZQFmV1f`(8vXK*YfnyqE}U-oIh4g z-IGr}IXM)aKU_@Syu4!}x%J{{Bq|=A+c{sfXn>{VbU0_0%8ZT)rIL?Y_g32nxm5Ff z*J8Q=8i)>39hjQAqnx&R^rAHa6zE7f1r>vGuGIX}@(zH9uh!(1? z%OzjdI|{%B9)@IR(%+LT+*?e3;lw3#WtS_NCG{1vD-Ge=r-qFRX{jn-rsM?SaN+md@pwy?J5JRd!Zcd?I@=eL6*3E zdw)wr*lPPrE)i;HI_^vc3$Ak@pP8_;JCen(F75u}{Ka>k*cK9&g1(mTIh6Na+Wsow zPq_BMa&m`VeoTAe;BaQPY%h(n=*khb4wqZIs<_IY*h<6My!*9Nk2EIP|Y++*f(=tMtH?u}FXw$Jat zXs&D>N5_koP=rOK)_M9dn1#K5>BdU$!Nj2upYK!d#MU^~C{> zB~I+_9-N&#-by&{AMWh_+QP2KbWi;F-W&et&Zqy&>}AivHzsD6PHb(B4kr~k-(ip( z(vx?Ork=U&j!V*m%lV~82A#{y?9OzyYl_P(ea zb&uvwe`@yfyG9ez&f{G7Skc)(*fwk@2*rtP%a@lfx~hHD(hw46tJd~x@YLk)dplE~ zIQE#s?Fp^i&?R4=-__|9mroqpUJh(f3q>cEioH27m|0jd!#RsG^jpc7=XbxLcdP6# z?%g$cWPfLPr4%`j`ugzvzQ7n2hx?s7_s`tBZ8BDIWYyek zd%vE_d$N?+Lr2?ly%a_6WBcxfbe6VwjgaGj+j8sj_NUI=bzSeS+XmY{e`N1Vw%j~5 zb39~CTuN)Tb!MXed#Bwb7+rGFjSb)95~S+gZ20nv-OV?si)B-$x<5B?(>xaf_(HJ60IMGw^_J5k;*5f94+7|v z2+{++A&FL4n#G|z0S#t;<}cUxMQ|$nIf$si*aqeTtg9NK7)KHPudsxzD|OBex{g^3sKH-s$lh3PMDwQteDfk;Q&liJZie zsfCLYqgt6xHQhhEr4Yh54;;Mxj)Qx5ZJV86DDv>a=R7${Hs;{GiEn|X4G>A45lw_T z&r_*d<9*#h=JR#%oZ4Q0nE%`_zcXLYk?zMu%DT&+4z{LyL&z>!!MHd3I| zxMXY~&`^S5^Uht*`n{QFF_kT2ma1y(-?4EaM*NhAY}nMDMCmfxZA|}0ujM4EtN_l&7{M9t+`{abs}$VPqo-QEAj}^6g%WBxe~hW0yB~p$El2{4Gz!)W?tnvx{En02Ea2^+bXsjaga9GAW1!JRui~NC;)o*up5lc|cIB z`4tQpC#RSsQXl#tUD7F>JUF1N^8NEz6WQV=Ii(kwBI^?N{#(Sn?KZ75Z zt$yA{DRH8`T=uF_TLcLCJ^AGAOEcI~1>xhP_8t8#qe+9g0coj%9gGxwIT%?N*e{by z+DZo9`LdWy9IIH-^4xS;4UX;VUUGsDQE#r_m1(9W^iy>_Z|^m;6Ta$dpTk5Dix5Vm zD$8r}4Y=8|YqX#=Vn(HyD44dRoyp=BGpvGM@&;TMGIMBodTY8!fJ6)`BLriLjxGu$ zLAXt$HZMuU@uFQBt$8%eCyy7Mi&|lKYq4X73uR})TMcUaO8fXw+;e}3z+*&aH`i|pWN(tFbE0W7!_ zf>cHntGh-svp$g%14ay^q6{iOp`fI{B(q2N#1k4PFxYAq^44O%BTE6>Fr1(1Cjl8s zOT&J$!RL`{tD7;afE+fFnfg(L??(>v`_M=y4@pRZa)G!i8W?#gGj@}jcT;~^EL3lJ>8+G zL%)dXXxRyUl?){*=0^)V=87pgj;d`&bH-7Wqm`egL4WGN@j0;)=P4|NBa8W9B67aG zIGM&nURnm$%$J?H6T8*K@vYkqZr$%be(d7I?cU=TN5#-Y&(YIhkf5Vx-Ncb{qDQ46 zXDuzq%qhPmTVi0T>GmGGkd(VyuB5j(0p_Sg@qs)i9>mUN837CkkJyIa5ID9loS>DFkiIq9n2Jk z(J_yr2F}b4Q<)vcJO=`~!F7 zFmAj-z4GT;&v`y#q#{7Y`03Atcf38$&C$h|6?1dEbc`;&3d@VKFo*AXF<$#xOi$ze ze^LF9zamBagFm8v^e2&ZPM?jJDp?-+-~R3R)i2S+q<-x$(hI*w0#kmbWrbe98zg8v z2_Lo~h*n|$H^ZO(Nx0z#`rPO7A6_rtb}f}-eu!ln4c%|QDc*JqwAKgiRzLoe;r;Io zfB7!tL;n6B)vtXWOtK<2C#j+@U+>=XW;uR@p7>PtnqQ=gFC}+>muVpqJf8GqLT%Y{ zM%GHeS$JjLFKnDWi1l854>ow5n{vJ&tZ?G6f7hSNr#>#E!3xZnn1pxKUkt|TSG=mY zXs`bDUy1kLi|>7L`1xPJ0!Eeh(YI5b zTAe7{FGJX$$G{CVSqL=9MFai;%{OT4LK070-^*|JW+CXhhJ(GN?aNjz*aJ|6%fq!bhZK#-my7@`<5HD-O5Rch4AhOBW` zmqUP%C9n|%iNFC7B2}u1gUUwAYx3F{C}~Pc3_~IgkqRr)Qxymlz$Gl4LgGt6BY|)X zWuX%t02q`2BFst{D8d?$15g4QR6t12(^u?=j0ABDjKzRolrqmS#YibS|A<^ z(ur46v`~x-9aB_>B5_g`EI^h8JM@^0f$EjX001BWNklIyX9C3sdim%CPk@TSs54}LiM~z>b%myG3ic4i%=31723uDBAp6O zYI$-|RB9f2WyeY_$|Yn#P5^k=j`b2Bo ziS~xWN;?_sh(KEOpu8+FG`lx$sD$0s`2+{UFADH zU}iK;oc$TRTk=ptxj&LZ)5fpaK>-BVe~pz?@9Qc575o z8$fJ9LAvZ!s$EcCPe4&RT&1y>sqtC?NRs8L)WJeJf>QOSJF4KA^(OiywoZU5aFuFr zx=R4!z*Jf2brw6SM5nQ}C6ZQF0U_nwP=EmlWeILv+qjOG*R6pJxB~!6m0q-$tgKSq zOL{Vrq$5^$xacEI2z@o8K?DhP(z3`Wr0CiL#Kcy6WRQ|fzPbiifUckGWKuvP0MeDR zIgN*io~pn=0yFX%S3+7Ak`ho9GhIOwETu)+vVvNE490TM%Av~Yw=)?zkbs0Ih-?Lj zo74bc2$_P1niy+#0i+$LIRLTfB?VEm*7;&J4llhH^<>f&CJkPz7F_)`QK)WXD?M_X zD*%40#t=z2vF)T28t{2Q)L{=1QPW>oR@^>HdA9x>UnY-ym+PXvS{RJWmB3WJtA9!DN z{TGQzZokte)|D0ZA0)-%oLYL1|Dl)b?sV~%-wTTacxU(n>RHdgW#4wDFQPAezIyN9 zkk;ZH|K+>X6Rx55xk()P4Zps=FA$*`#Seejec=7EsO0)D*xl1|-4hWMd;lPZ@%gV* zfA*);Y0D@lWA!!Hxc9#=-gS>SM}PTl_52s$+9%RVx0R~+4<9K%`69+_XR2ey+=iEnz7 z&)T@>079rf^kM(Br_1wR4DU}}_)Dtj;6e8n|2@vnBTCHw++O^q zbL80E&Y77Pz2Iq2cG{%*)>VfB*e^Km0G> ze$8dIsO0^CChBI!=$Pjyd{`6ABmzQ={oFZ=R;I1yeh~&Em*|H+>IK~S=_idM5g8P|aIs}{H#Nb~;?Pw-+J}Gbt)TQVH9Xa^%)B)8rK__5)(Ob~ zN^9<>Y!yEcmJ9%9zH;A1FaQ4MzU8fdGCzOpKmW?lXBRRTWfK<^Oi*UM?OTjsMvSW- zJ>T*mb2EuO`-380oz+THM816EZCiF_S6_X3ePrv*#8uZ^`?)WD{iKQWp<@f5_~acw z{i;{*+q)x#C_)dgsoy_r+@3`N6!DN733<24lG(&2&Kt4qu?#mWTD0>B9xbDJ4)UD*6rCvYD}&E&ZTC+ybHlU@Rj_B#A;n zgQBjNJ+fXazh0CRyya*p0#FJ%M64$@uPnRkfS!j6;Fai}2LeTAuj+G1NU!}C2MDVO zjFW7+nF&f20EjR-qg4b^6`;m>ummAQrNA+*XuNP+zl{(OJwPl<*HprlNo{azj2D^? zw9Wt(0HL-kTZv`FX6_dNS(70B|Fiez@s^!cneemLJM6vBId`Zrl~h6!0wF*M^AH44 zf*?aHlj4AiK!e>%|FB!z-^b7nt=+bw$dDFnyTwoG{(*|o79!w)Oxg?$0c4aRn2=Pe z>ejty*k|u|SnK;^pL6fIHH1`B6$-xl{8E*=>+a#*@3h~&*7H7#0fL!TMt1{NQY9d= z)wEEWIsL#cas%^>5hFm+UCu%lDzYnyoBzwG&dP6qESzLv!z%d`_sEl-mC}$S+V<-V zf(k*psy10upgCnFmJ2*Q4rJV?udz$rR#v3xhj21stJHc$9H-nli1*}Vy6o6)m znHibU@vaiE)$6(jwcMx&I{8oIFpt3NGASs-2uM^mqZdXJ0i;Aw-dcRjFDi)12uR$? zd8J|M&~*7M6e3(`hC^zs-yDI`WV>Q2wtE7GI-Q+dP^Jlp;QefR(Vf|#TXHUNSW1BIlNHH89VI1i$<31CuZ4YGxx=pI#p1jCY5H?z3c{Q_Ch zZoMwK?wUd*hOBCf+ExJo<}QGuiIxOJF;;5k8(AjVkB^Zg0Cmqwo+j&|wo%);>riHi zCWr}Q(9EZUq;0TU^I!xN%yR_-U09zgI6@i#P*Wf%BX}P}y(HEmZ|gAXNC(WCDP$7F zcGh6fq(B6b9v@#-ayt7e4*)d6glwRjQ;k(~%A0({HW^i9kVP`c09vsC>{{ZUw!=2m z$*+Jm*B}OPkU*LVfUQc+CyhKCbTdKR$$9z>g^8!Dj-fz?p7BK|buw@ULC-uX-2mp) z3<%W(CJ$E|P zC(3l|`Z_UpZKo9;4qnr^|Q z0`=Ok3VE;fRL4_5&*8Ai4tB7E!&< z7&Gp9@dee=6@Tz2?>)LU?hdYs;)##D>cI~@@WBs%{Ls<0yK-M5DjhHNT+cd&2YCJ| zNd#8KXd2cwS_XFY-D>4KN6cM*+;12NSn|cLCC`lYNvzwLM2U#cumS`@DJ2~>andGd zdEZL8Qgt4HZ{phPpiqUZR(|htk$_{PwvB0F%SlI(0l`>nmrAbuU1iC1D7>=<80S1; z<4*5*;i^!y?heI9iRjSbV_fbU6vd`x@1B)<+Dxb0zJ)*cPhUa(neTk`RsZ2tzxUji z{K|7*^2@LNAAfq}*znBN)*ZsRyW$go8RpzA;0|`MgVRRNkoos<)SOhZIa`XvJ4k?A zqGAOA{4)AIN;{e|XBq64KgxUd8QRZ9;&akNt!E*su!EC3o_*mZ;-1ASXo2*zWGMb0?$BeiY2NI}!o_qsS_WNI?dG94{W&g@L(ae$1Vz zWEkiO9oi5Ji?Q2+2+~P;(0nzlo5T|q5F2Eu1w@Sqcf5$4yT`P}oEboyngv@@>D=*# zHgy}B0KzP{9WUG;0tF}n)^(Mjv)6|T7X8j<_R%bUR#ygFbeP4u?ASb;maVvhwTb4h zCIyI;X+gB6qd09}ph^S`1eBpVA7VrnvjdH)b`iDYSXw18jONy=uozWMx%KQU92u14 zT}VK!S}K^xkZ3X{E7-BXl7sl18gW?(z>;fPwnPTjZWT-$kORq#@c`DW3M6%%kV9ft zqK+sd;8qxJtGkFgOL?X5NIZ!vr@>XNG>sf)tA|IRg%HFSpNnnnTSLUm;jI{FDww+u8+*$Vja6d)OHdUB9N@0+1024K@B=u z%$5kf2n(R33R>8YEwkQez(xs5r--^37Ah45Pt2Yi0nqiyajd&8T_k~tofXw+C7I-SGmT`jEZ%_N zX#LiObvdP-(;1-B74njcZud=MB z$^cY=(kcuEkO?VECs!rb0mx8frJxE@mQ6}hCV-rhGDN|$=~xg&7E%FJGEkNPs6Z-B z0>hwd+k}qZL=078bg?|n8O#b~1wadI7ACd1q)kGiGaW63azsPYGj^P2eUb=KY5PX9 zten-@Or(g>vt(YF^R(~?AObna!cwPl2_RAG-U|RKjsT>`8et1#%3|BpnSd5#utmQ( zIZ-A-6{I_Ufx8)_(fAGj@1On7o8SJ`uN?(CLg?wOY&*@MvlSUlv;KR>p@rANfk{h$ zsyw6#5S(ITWefA%7gkq4M8^~N_{W zz_m46dTfoplN8vWv(nL~EBx&aXHg<=pY?Qq%@bg)eelERh5rUvQ0t74$3CHY@r$V_ zVH|ziHTmkt`X6`>dOcoVDxdd!z4rr=pj|}~0pK70alZHEh{-?W8RomMp?FsrELu1% zZf_56o~^;p{KVB|Wj!ZA0KrD^H;S5(;qskH@uuXp-2NZD77he^)q~tMPo%Qoy}PO3 zqh3Y5idR>t->0f7fAv+p>)y%x_GoC$V;;v3yPEX`xvj3_Mbdj7EMD{?cu!T&Jnx0{ zfCt_UpW)|n>ZNm~-<|-&g)0GP085X3qPgO}vc5r8Rs8FJrK_t8axy#E!4A%K+<4QW zSHJP?=O5Vj+FyD8Ti)>RU;FDneB{P=|I91?==~r12tpS(OscD6B{S#~n@%2j^X*8MSyYaUnszFyOKvdmb5FoG8S0Rk zX?4{P`rJ0*(8jchna=W?M-@#Q4-cEr>gtl)z2pJt<`%hcN+!mz7Jn5&_|z9}y8b;MU0bV9b@~p@ z9muA>$ejBEB5qspzT>_qGld}DLxfUNYbhl#D-net&OsF&Ipz+Yo->``vH8kPhhF*% z|Mf9Xf6237`16~8Kj!H#x%N%hjmGuOw;nlo-rhwDoiTjlmo&R=*9mPnJih29FMsV9 zzIfC3ea|(Ie8`n=y!P5_-}w8Z$?fhfIny{-zn=jBS&{W_*zB=`9qi!lgY~rA4%X7R z$G&3cp!u75X>;yE!64I{Rc*B!u8$md=F_u_^=K71&%hh=&8>O9gS!sh3Qoh24Q#hO zsVATFEFelTo7WO}7DJ@%|^7f)e0P*bRO1!)Gzy*`Ev;rPKT(x81GuWSbhdG&Yje+Y1NY zRb4ULF@v(OiC{5PL!?yX2tw{i`cMERaWDW(R%;~8=?>|H)w{wHpqg>KQiaadi+~Jv zyjXrmnW5m@O)h(~Cbul!2)g)4Lt35u$ZUe1Bt0&Ov7ouL?OBXsD{^JGo#{`}M{K7k z10@K6EM_h@KqrvIz7DoR3wnyyS4Bf`ryd8T0Soms>jI^0jwTy$*Y$`14tH$zvw2ug zs0Nnj7v7XjJ-(2~U*IIcZF9Vda-y6zPxmB}EdY=;B%6(5NF8SYh!N@mC{dinn>Xnu z3V>PNDdJ{!D;L%*$eof&$(%BN((&eMLVue%#vWn5^RJVCNp06{x~T^W4U2_39$ah> zt{H%k(pIymT=$nW9_s~rt6PtPSoiIx(K=1Xa$tYQr^(NKp?TW(mCZ=^ zpHB*$N?Ssk(hhdN?zQytpV$5XmBB5yVX0KVL?OYF<`ze4T`ocW6IUx;R7Mei>U8R8 ze)iduqG3`?s5f+~SQ$`Yq*Jf9qTu4o@^8MTxanrT5O0W^r3(%l7*yGd{&(0yTc$F};JWMI^MLza`jjVp+nfI2S=YYlx+|}||F=K<3IM8l*`*g=viByDGee1E zra@^O(MBD!LUd~xKp<7DH%*IjwP*bjuaARh$A>tF=EYM%p-i-ArCRNokmT?jnkCQ>G$3#p_a^Y&w9sooi>^lMC7+sBNG$2@9bc}XNn>N zAm{v{kACt`uK&U_{>ArRe%U=XuPmy!96I{jzyH7g@OQ7B=mRdjymo4uy*z(O0 z(Zv_;-?iKuO{Ncf(B(&t4IlQP%j>4S_@e#Z+w=GBx$&l3k1P4bmr+UOqD6tc@!seC zyZ`v&ANk(SvS+pT^Z)5jpZ>H%54`e{J6}hqiF21I!+<$eg6JLWUWsrRmZ{7)#6& zIfra46A|(}9me9^H`jKFOxh`J84DLBZr>M}=0A3ScUlwOHhYC9fQ^Dlb(T|ycq=Bo zP&k-K$#7w2pY56j1`5(_NEyPsusxEX1ZAep)HdBdaR3ZqsARNA1QIgLT|ON(CIg5I z#n;Upr!toW$->(cAkEcr6wn1S3j+)mhy!95kY`e5QGgg`Vaxh_;Bi29KtcjchFKu- zWS~>XSyV~DruGA|bb}zm2hjprLLqIqn~o}J|pTZ z&liILQZ!--!pV^uh%yA79!6LDq7Z>VK%4O~BCU|nNOsC3T_;dbULdUGSxe2x6tUBu zq||w|h(U&-OeBD60Z1!gg3tmtfmujqsh4b*lP7ri-1TRTNQtZ=Jq7D5@P8dX5Q%uu(~xJP|Skwrsu~B%&?{k`A z9gAn7I(0o?6)E%9bk-%C(s^z&>U59hU(1G27yuGyL_{hz*8Ql3vV+Z>1JE}hFsUc4 z1&QW$rG^rS0qVNt*7A%9On?x;1_%w{Vc>1<(w3#o9+IIzRuW|ZNs+TN5Fx-2A~bfH z)L zmL+G>Y>;Nt=~Ns5o(k^SBC#pma)B!4A#>nEBaH zdqO$zpa1+f$NpBq&u5?ktgI!dQL^0bTsN)fP# z0-{bP>vnUo6R8pW!5_A7`h7TOA9$sF;j=2){lrhxHBTf41Rzl*P`5rHfQWHi0Z4%m zQ8~TGdHR1o68_6CcA>wm6`;}vqjtqk4en!IB;cf@%eP)SLIc|)&AA>{=oVC>#xUs?yH~se0tsM(m(vI zedr_Y%YTV3xezsyXqN*}70ld*oZM+L%m|bS7KCkS?6uSPBVr~MY)ij&nr)|~`i^(S z-~CNFvgUu}1@;Bchd8(esmslCnbktS`X%#QuZcI@U@p1Xz3gRl`Tfz%b2c-B8~v@< zwb%U_?cL*k?D_nJCt_OAfqj5bt&oua{=M^1SXkYVc9UXGdeUW|c3#jTtG9XX}cQG##A|=qt`qG`e^&Bx_n``-wHt~!^ zde;lEI2c7{iTY-b$$ZiV{W?Z04BIy$^o3Zg%yJZ#_0MH z{oOajxBW3+cDeh1UQQ2tsGhf5-f?|=!>eU|g@`z+bcQU3API(C3Ti% zu9rwW-%CKUO%#(A!lz+m*`j9OaU%da-WU=J1q@O`;qLrQa)ynC*Drl3{o>2w``>4; zdZ2sxE9k)wC+qO&N0KUyB67C~J7Wb<(H&>Z4t8*sK!B~5R}S2(-z!x?1Y^uouX*UZ zpYS(-_t)>f=G!0nq{lt%CtmodUwqkhzwx@aT>cv`*|&Q|RKN6yiICqIMdFBEC zMwep;JJ`XQg9s|md+gxma14N<{7s#e^W2B&!L0&^QJe>|cU=cz2e$``qtB!uK*b;+ zpPSz~A`m%;C7Hi!o!xqM}a_ZdF1-7$80C=DQ3>j-A3IoU)sbaLUIB@M; zs--h_i=}Q=%ruSwsY=!^3R{qBMBZBKx!HFtK`e|yWE)eFNPIc9K8x9=i7(&?s~N=2 zEJmVpDVVMD8;0_%T(gNiqj1~j9Sel+f6_5a3_}3jyxr`^*#HWsXy--f5=CJqQNn_h zSYQ;8gov$=H=aFYnx$}o2gD#T0EErTXK;pD2>!;5neJ%LrgLB05Hny{EYsGgQ9eF_u(C+$JtW zw5jkx;Rd$hm~ECqF%=b|001BWNkl zW>U>lSO_RYAa7HvvA{AL6AfEaw9yq|x}L|T2-!@NRbx}*u}WRoDrQmy<>)zgkFP$e z;}i|%{WhR5Hi4`vEHck4UzJ)ItxUG2O-_XX5UDeg=1Gm_9Vu;=ZPrs90En_=fKr#O zi8d5{4?tkD$Y!-pa2vH^jX~_;EY?a!1 zwU?%FK{hBYokWnprjF?_k6g^zBMKz5MM6VTtjzk4_$*13J%|vugG3#-BUG9!fUJdptPKD_R>>Benq&bOlFCFomkhBn zt3kAE4SCy!fVkMAGm7R47ObsI^;Yf^X)_Zgs%OY(~MqTGm z^U4(25;Y-36@+JcRI@oICF9FUm4}cFvbpSm2#P#q0BnerU^|Kc0S@3yVA4#-e}HSJ zrUalYFa!*eF>`Vl6i5tl5E#pFT?#w`QErmk9J7m8ZL?{3s#pkm2_svIfy4sjh6w;H zp(F%w?*u0&CqqI&N=^dI!hBD43zPs7OtNNE?WswYD3i%dGfT+{K-y=Kz$x-^89+18 zs79!9(>jqcn2xcm=%{a7<*^Wf5%?WxnY$G$%Vitlm%n<;-rcL0UUa}1S}Lq53}VOn z>c%WXGuT2-V$3O5-Vh@fmX&Dh$jz7U;^}wPsAQPbc=WS@VM+;XAsMr{uz(C?%g7eZ zM?W(BwO`XCx53(c!^gm+DHC10{D_C}z6%f)ltmeY(il_nG{CZ1xTb;_k^oD{GMo(G z^1ssi{sF|z+uqi@;=cWtzg*Y=nnl?$nT*IyTYMZ8i{m$kse{=+xK zzyAnX6Mp+z|6Nb+-~V2z736t7OBJwzBr;C(ba>r$;cb6}n9?UcPD@M6Z+s)*Ap*b@ zruoSKJ@$*gK)oJ59bwGMgRjDcmyjr>jKbmYk&XZPhw;7tK*rR+`5S|0{=neD_s^{& z0nG4r)}Y&Z&b*bk9_l1UvIs{Hk6!3jZxiXs_?NG5_vG6pH&5tqRn1uYSjt4H%l0NJ~cqYZYD76Pd{eKiK?_H|fTP{?k`b+LbrIRd2d+{k5-3 zH+)h>!)t!M`0gk4_Uun0bN1))O)Y>9J!*f1_C&6g3jAc8Jr>Z z3>byypM;A>Gt;6wnbA9~EZAeUwD4yB_$Qt4H|yjs8Y9Two{`BEJo>%Yw}0^$RF&Za zAD}<|^W`hAqJc*M454DozTocA{BR0mw+m!uOp?9bS^1ZuP0W9@l#&SMa$4QTVa#%L6#AuG>N(r; zsEOw=S4NqrU)Zv=F{a5l)-iUwJ-#8OA#f6`O+r8MpmeLHuj|w#ku2wG1?WAtr za@~9W=C42aFMssOFZj_Xtt|B)_o%B@_FVk7w_X3CkAL<%u0D0T*d2UBLEtzc3aN8` z-km6e6%n(L%a|8p2%D=|X1>p57vK2VH-GhOw_SYjJR%y`%_nZS;gW;|WQZMY_OhaY8y;#BLJHtL|I48*{#=z{jX6_DXJho&e07SJZMRUuD z(PuO$v;`nQyRZ)Hg63Iyx|#P!;oBUxCv@);ag;y-IKUwpWa~hH=%7p0t2P>=1k}QS zDiG9w;JMihm=`3Z(I~t_$$_0o)1+eB$sh$oR+P}6>%TC>qh*_+cbaaxAucE+Q&av4%s55kN)^>ZHc4{(ODyErX9c+XFRN)p5 zC4k^Mg@y(S#Ey~_0L5|N4{0FoD z@IWwFSj7|fFa-e?#L}Xu&~4}?(P@;LY%h?Jw9l2sk*}NeG4^$i2+9I15u&2trt*17 zCr3R|%Z#{d;MO-ZX%y0e0Q8Op-xneaTIehT0`)*jqyW^kMTiParGN7mk>iAp0L-YMA;e=jpG76WMXe}WxF&z3_=Ml(GpBV*|nqsCDmE`>IzYW zMPOvZTdAI;B{m3R7-~BgdFSO9Ai`N#0tg1<7W*xUZJ?@P$Er$zf=$)4 zMMte-nuwzn^~Mi4O z#Vid}u{-0RQJUQADxV2!UDQX4BDh9vf;G`kHfR^TpA95Ktt(~F$+swn=!}6FWcY4b zpg@3W#bzIQIbj6Hb)VxXRTc>#hhQM81RyDgYzaVFfrwNYT2KsPyG(7_jEJbDrYf3Z ziAfzI2BsU|9Hq=k)@GYlxNj7=IkmQzQB%iKYk@qYzA!bglUAC_^y75kb#*o&@Gg*A z7;1Sx@ReB&E?F&kkZNSe0UzpJGv9U%e=Uu0_NjKz%2;bASXD?WSpc|MI(x!uA7g`&9W1x0r8<~$pG3` zZERLh(B|-r%MRr-2xx&;^9J(j)}p0V8+5i^#k-~`lC)(v7FNoDl^%w|M$3M%KDjiT z83#VDgzWAVLY|cMnCFT~mcKYlvuCfM5-Xw3&)(PTgAok_BL-49if>DMOX1Q-{)=GXyZeW`$Tr z-h9lNk-?cnRl{g1P3o5Jbogd9I$Jmy10orYy0SwhgV2>cXE52*+*qh8q#{CK-fU1N z5L8qF&a;YIY-K)G)1SncvjUJzOfW`c)RZM5cRggY?UKMUC7~qfguy$nYX}*D=2^s< z6dm!-8svnWRfN0BXQnKqij;_Gc6v$*{I@@0R98RjKF|N5C+@p&{~0f2!R-3#qZ_p`&T>9((PgseXd1Ja zUS*ew+K`)+XWQD&4Jecd-r1fr%rt4!w23nf#&0N?z(h^VSx`E&+_OGm(uNpB=TxL~ z461-PywWec!NxdD+eA#;i>d&zF@-h#9(z7x0fny}I{N0fe&EteR<69_(zpEiUp?r4 z=l{SnAF;YTOPwPkH+<%+Z~mjdzxwLOKKtqaVr8ihfPlUIw07%Fw;eflri!tHGmfAl zYP9lqe~)Kjx?^7>-|^^&Ty`nH>h;&Z@@Jm8vQ+)$dp`V;k9_IpU-=>?YTEW4?|R?Y zZo2VV&-&g=4(_}9(f9eySH1ck7wo_4e)qcdwzYS?`>zk~kLMp)y*r=o+$G9vdd1Gc z>1_u)*ukAfJ0~48Xkek7AUmV{tb-VShkAHcVIjSJqw|g_p%)|0+4{~IIm4d2Z~t!{ z_`MsULegE!v?4gv^d_m2*6ILlBmx{u->IF)ElX$vGL%<+GfE`^)}wI-t;rez1f{Gf zNn2nFs+9r|VJ7ODzyyWrR1w6wTqeZM?^_iOL`qJin$!@9FGGEdM~w;IS&Hk?AK~6U zskx+;Vq$w^f>Mh%(lO~>tOQWZcAR=s+E~tQA+3N|r3^tGP1Ot7mrzjwD;wt`X#&co zEvN@eZReXMnr+A1RGUEp;3Bezl+amZ)gl3sJrGgoHUdoS6ddOpS~X`#R__bt2GYgt zMT5{3Nl_?5u|T%*KnrwNl-VNF%vYL92mwoqQGq67snc>O=d>LH7^+ZFBKF?4cA6ap zLs}HN$~8G^1A{U&2H88-9srTL_A8<0iEyT(9|A!Shu$dJ-RixKX@j*TyB?68%^ z{YIn9O$AYk<$CTPZF}W%+vx(0QV}z2nvhkbL>e)T+A6Z95xaJzrm(k8utd~qZpihg z^|7oCHNlKqN3kt>6PoC#G-It4s!6O!Ek1*DF|l<~hqBhH3quWqbH+|R^^IpkPLrp+ zm+QTD(hgTQw3LAxIe)mVF5nhDkg7F03=Z0*aoO@I2ep&dL{FA$!LB21Z(tjyV5p7B zkF!OF08J=^x)hB%6=i^{vMC5FHr~1*`ZZ}w=W95`fMMhMg_^b+P%dn0gSQD}ph_{D z;i%`v4LPz>WVbqdzg3u4+?3bou$Bd$!P+wJWIO~$em`8O% z!fpyxh_cK@>4(XW#p;nUkvf{H7K%P5Q=yWkEsh#Gg62G~Ytp`$+aew~Rmt^wZYv)g zN5=X(H+y#bJeoF+08-5;H`J_2Zx_Zro)#|T35=jB8b59XB(TfW?6+gzx-jywXj#i) zDg-8}1))KCELTk0<;rTrwqnpswHRz_(9endz91DGh;98cv$^vbZ2k)>p~jblVaQ$%j$!Ia!A2x*^qJEY?xda2k@+jI@!) z<0ACzR6R(U6bfyED5;V$C{vUxhYhkbYxQLk#V}ufx|}zdnYye6bc$E zL)Ad`+tC5rjHfF>ECi!mAZh(IhS%wO)2>f-&zzmuZTo99jUC2m)I?d`$c$m(Ny%F= z07GwHTS@y%vKD1Qe8v*AhnS3EbLRYy-;(&y4WEDeU;V?=zUz?>dBEiWLPj%{Q+kh1 zw&qoc!g@<>lW+gX(=@6o8_ScJv6#3P$af7(P|1~p7gZxbDs&Ej;=c$XzM9!GV)HomlF%nsN)FbWpJUzYr&;8|l z?Tdb{iNM~A+;e{d|NZqknY!n{80YO7*YPCD1h)#QOjN14<8Qp2F>F#{8BhxYXF`xR zrIT;>KO@a_`bLEkOhIT;qIBnHlDlqH0=%6i;|)qb@O*#6KgN%J)I9hB{P^!|eT61% z$+s>}*LQBx*lyIMyn;~pSN$6UH>1Ws8-Sz^v*;aB^9YGu;Ij`#hIF5My&z@Rk!!l$h3(=ZJJ+QyRU zdWAFGFKy|W&uD^`%Db|%Z+h!rE@SN=Xa^Pm^hT|0^!N*Tom?>|Hq*z(CQDGz}>4?huca zJK9Un-?#GW*ZlG;f9b71^)t7w_T%Soo;>-fPrT;aA3;QI8?JxX-+ua&AAiK7u0DVN zeP8ku&-?jbyzwPJ_lNhsWY=_ZXd3jzFZ{6!_U${{&$5VfH&kW-k{RoI2Rqoow+uFS zyZ6ZYY<9L&oK+|*i~{6$<-q5}YWrIioIrw&(gQT$&M9(EzP*^S6B)W&kf9qJQP;wy zy`!tBzeaJKS0f%F`x~*QmPk-d; zXvKk9on&N8;fHM*f|pW;S{@1gwsepNSRG|2fb+4A1{fx%3@8H76NqpWmt$M%u)u*9zM!_? zRL4rB0Ak!O#sdHlpa2>I2$E-7+#YB)qe(BQXf(dAX4S?s4*K-9IR_U1t!5vGD135mutf+E*HpV$u?$M9!pCw zQ1Mw1l~OIRG77~l)8$4yxQW>uX$E0ru-h0!USIbNkcmx}wXng3L@R+1geNUYGnp>y zu$HzTzU&gT?ir-e9|bCLWMlPk=obV7c#{oFg6A3vOvN78fNkv19rqNU>+<$P$ z2}(|mB}7j{mF2je%eA(bA(3=FR+)+tVTD7_GzI0-wM44GP)kHyWQK|C1f_|Ti|L*` z$;wT(N^l9&;BP&)va#a!52vOONmdTCDI(ninB)|Ae8ggx0%#|Rnz0)WkQC#jqnxI? zQIa;p4XRROMqG_@VI&hI0i#q-k^{h`huWo~^gCkK61VLJCN*FZ$7vn{qB6>HH>Z(n zz1JnukwrUXQ9n$%Vi{`f9FHe)Y$maANy;duz*OC^EsIk7wzWtAtkoVS1RdwXXk0eq zdoCSYvSBUtX@b1l*U1YYk-%8XRh@iclWD{whHRr401f;w^f?=ynx1Pb8;-WUtZa_z z+UiOk_cQ<=(U?i}JywDiNKJMlE@`818(D!bPZf%kOiIR^1et=7l{eac8mkStN>e`8 zPJ+Wmq<)O!(P6`rL)080i7ro~*oZm<$iB+Aq-oWk9N7R4cD?0j=!d4aWCDe{NO@A@ z$h1l=*U@5}unSOa4c5!jS{c}uTQpRRa?vL1n>64?>)zUMpaW`yvNS15(jsl7+_zMV z&ucUx@j9xC^^wb!yuG10Ls`?jN9yPZI;10O!kZQp38b`D8X#4)gUI0QjQ`` zrr~rr@mdoKNbT42KqCXtajvJn4%CWfkgG?CllG{;b#+-LKnU4Ln_L<%M|dOB&yibm z+uBlI%af7$eB588TanO~cD?CY%>%UOEe-d((XHd%lZi!E{D16yXSgLtb?w@_s=E86 z8z#?4qco$LQO+O>tVJ}_#BsRnZku*3<6TP&*OjIz9_lu?7xi^%G(){~ zQ>U9x&vaKV8yy_kC)?fow>-3Z#j<5fh5!_$-@1KFM2|dtknTBZ+=!x>()oNm7hSt{$+p%C&BKm>T#2|Q`d(8MI&f4?5PPIKa) z+^Z*@n7r?!`tTU9TY=?AP_YNQy;+zlj98*tl~S+#^4Dl}Q;%3jorsOc*}wXG^ONm# z&1HAD06lbw5QQG97=!HF)d`ADu;-l5AN~|~OAc*%c$+R+=I*{z&pg{`PD!1EV%s)d zwnC+(M=zQL6lvRberT(#+lWSjPQZ#a_MQLByy{nZNexG@r><9*^2=YEoO=$u(1s(a zz#dpK0|$NwDU1%d1 z5m0z7yJgzoM%`vEnVRuM5I`3KT_%bWbhMe>Sb+(=DP1?g65x%Q^de`)iJe({+Xoqzf)^-?4M&OJBC(v=fh6I?@EtsMp@`npaLt{ldm| zM-kC+$1HvCU;puSH{NsSJzJKIZaDG8O&ix8mL$6c^$#Q#E>T7R=0%pwA{Ox^Lu~bj zowoWe1<>Fw@kQ)sP^M@Kz~UBL`M{!DF?6FS(4^S+m05UD-DP36hywvtB}KFuK+~E6 zAcAF;ffw_{6aWAq07*naRKS~(ol}0EO@G1-OnhPj)14O!H}jUJYDj69aHt9-LI^w? zhYMg*03nhBPWs_>MNd(@e@SC0lxYbILdDdn6xyj$@`fO_m5WVfwLw(rniC-+F|$50 z^B_t9ld4$K68)*C0#$w__O3r0I~}kV?&a6CcaH(CS0zB0jVNhgA+dw^4gx4vHcMe% z$yMRK|68???ix&HGTcuDGEoGS=FVYeffB@mp`f6qdYueMf<|FQ)PYCXzqVGb1t1{- zLs9`CuxK($0Ln6FKP8kXNMj9w5r+zC`^q3l9GL<@B#IQlqzO}q{i+L~0w~C`08omt zcZ_GfT`WQvi2o891xwQvLL$P}5)*(p2)aN4hIWAk**9rW)@U z03%Q&;@<7|T3wBz8krPv-d5$Ro~p&{o4^)XUD*wsrV*+=tH1u&CR1;Eb|zq>H6Oti zfCVf^PUd;wrSJqbv7emhUZ1U0xD@1fBPg1Xpw42fnz=qiq}6>1lM+e|D5KQ4-#Ae8 zoK@Vwj_ilFjeY4GSKsrKhyU`DH_jd$o1FRdzklnYty|X~w(7#OPd?_z)mL17!wt9I z+0Bb*J^hTQoplm+!xz5(y`R6}tVN>Cqd=tivp;yf0@IxUpjN9BkVj4TB@n03fSBy> zkUA4A0}9^Te6T_Qs?n*Z0-zAFVh#Cj_`CO%AN`1SJGJ+|hhF-M>T6|zViysB%+SLR z7H@q^xcVA*{`r=Q_7&HiN8GP#A5kKQb;r{tXxme{XAMyUM8w&R0<$h-xJ0amUg<_mr2sEBxqs9%|`Khc}&&eC(6)eedpm z@Po-o8{D70S5G|yW%(#2ku}9_H&4Iq56T~2Z_ha|`}n1jwx|r$T1HP<2?2F|W$pu$ zVABS$p*$cwMr|$QaqJ|Y{RuD7%{lhpp-f53F6i^nbke zMZbN?r+@41ANu^q-??_pDgf=7&I8-i6HY!lN#^wS4yG!GwLE0l5lwc>c@bFxfkm*r z=nku0(sGuP$xi7H4Od1LYGH>OCQVJ=mB~C8RhWfN@>8ST!uwKNnO)LK^IRsn`JSZ^ z4`!{PnKeUo=N!hS%Q8gOdGwvxSz^7Gv{Et$CJRnP!>!>{Hje!5yME{V^RN5IfBM4R zcenri9WOaz%?bcleD4Q-;@YSG+;6v=%Uyo&A}HgTCh`S0EoJu zm$Zvm#3BwYBBF7(pG*)4F2)ux{o;?W>0jf2hf6p}++51*- zTEs&h1zN)-XStj!)cyJ1Au|V0_>oB4*PbE74fFJFJT%OxNI$-yHLh$pNI}zR*iyD z>se_LU}@e3WVaknLJAO<*K5n6`bp3^-w^#De)?(B~f4nzZ`kf~^SXv}uY-AYoG z@E9Xx)w`4^xIH{mV&>TZj|2BIVrmfM{Cgr2HvNPd!DTsh$TLl6?9$TkKs97fDZ{>^ z%v^y80HnA1+w}N(76i3(L(QH;1Cjs$sj@tFax!!V#JWsUr$F8F`yYJpp`F`zPJZQE-~Yyy zKNz2!-ebc)xlymz&NykqnI~h>*GMId)zvZ7@6{Tra5!c*aU z&W~UG*YJstpv-kJ^$Z-On2O&BmJ7E2D#+#|6sW3Cd!g<&G-EW zJ`g_l`SOcjB#HjJ-;ode-5#1*fx>$TJpxUGx{W{RuBP(-A$lq z|KQQ+8wVGU<6Ydp@D{SKYN-mer{jCy?Z5d=bi1;3o6gMmZ+tC(#wo>z{t=-pufN&< z-%lVPf3%m|Qt~Fhfv&S zZ*cI^IFEujBcJ|Q+F!a~5<^_c&Hzotm>th7#v!Vj_-rb5SKQ&F+m@ zupkgPY8>z8lWm`*ymBO~Q3{A2qAjcnNi8iMb|CDSDhnT=vEKq)1)S~5~M2Z$vz zdnp21&HBqc}3)w+wc9IKm50IE`I4R zU3~7;bo(DK{g<0J-|@fx^nd@}n_qJN*{5CdmRFs5(ixxq_iOIm^3Z{-@FE@?A#|p9 zq}td`n*Bh6oPpuVk;Y@6I`}K1#JR-TL3#}loU^kmnF`L?EKL(<4~f0k!X?TuU=}!E zaS@AH#6E)HX1$g&GASEfT#OztXoM8B`s{e(ua~1IN+=fx)B_2FE*eL6?)i(ct2T|g zJU%wL;n1Mc09nL=M~ofKG7zNf@lzO;&J4%Io?Z2Wu=^D*%T09y{W+Np08Dt?zS zQwfM*)8AHICEX(-%to%Qt@K5tk_zF0w3Ps=vk~qX)Fws30g6!RZvaXx1_Bl^iU5rY z6p_;q#E=>?JW#~$V3JB!M!`_m&lM{{=PAkb6Y`M|X_sR?u8f`CF6jg!kxAJaR?~mo zw68Ow25@Ds@WE8S@1Ka!TQkqKynqBu5M~9C08Cwg6wH01iwJ`h93WtdrLZUgaMpu+ z0yTq95ChllEzvCr1Y9tH$PMinDBwwWE@Z=65|m5_ed5@Y6=g;g4n4IRrJ@yKK}r4DrC|C$8DdoC-%l@wIK1K9zz76Txu*+ zj#j(uJdY*TN|Fea;Ry;I67+Q?`ie3_0Z>?#q)#BInj$g)WfDVTn1~>haIFI{yv1zy z9?;%U4W3AWq|!|xQYH}hQu_i0d9{w_zeW^Dqbiws62XS5UZUV#A|@0uz;z(jj65kw zq3p%<`>A1$5mEXgN5GUf4&A=$NOb9-2ZwT^Wb=u3mGu-*G)zg4yHcG;3X)Q|Fi?WR z%+iLGp{~6R=TR>qctRn0UPdBjUf>Lw6aELaZ@ESQcRscHDb)a;uRCGH8(P#q{GbXZkIq5z`ogrpy281$EE`W%3$i6Lb`3tOor`#?;R7++F7 zPy(QysgR>YLrKCFjjo>(BZA?b(t0XvQ_nEm(SU-Gu;ePI0lMyBccjI5da_%1Ws97Id?^cRoI|!dI!J)s%iwl zaqHLq(#7W{*2+Mx@s4}$f5v%dopju~^UgYPY;yXBTkl-CY{^-t9(Un6r$&_@-mtkk z?cp7hANuDn+<5DqKlst+`?hS&vh*hpZoB&@Td%%u^QZp(8>;%z&wlyVJMSN#oVonl zKm5Yiu6qB+{=Epe?XLUp{>j7m8OA^`OZMH*LnHhFnGnavRhbBlXH(y0Vyc8Ac8SqB4)HF$r&UGfVgc3h}7;n+a$n&_0X$S z>;V>F_}!EX_XEnXU~X6_#zWfGX2tjR6*2I{j-Fpp2w>(`Q#%AU)M!9-K$-Iqpx~Ld zk%EVZkT?KFi@l}dA4uo|Rka21NKSDF7pmxVP}yEENm)Ww7ZUkw5sO&FW5V>;=B>=W z{v{WkclHS%|J1)cv~|bq2}zRt`fH#6jz9m)EkDsWzvY9!_U7LMhX4An{^Z0>#~h+6 z&!J|_a7MLS!bH1_*#yo*+&)!ya~*9Z&3YCNmVSUjL^0CLMw&?(;?5~QSr&bY%o7Mi zppN(3Cc0&i;bAjWORd4d|1dHmb9SVebiI!6K_5r~C88{I^(`A=b;jE5?jv4i5eEf<)1ehPO?G-FuvNab8Z<0YUc@wR8m$35Y;$<4Mk(UQqOM#@P2R(wueL#TcC_^iH#lrK?uqg zC;-3!8Bl^1Bw(H&h!?<;+8z@z2IV3erN}-Zrk>JF)kzJ(11SI)izwuy0s2lkfT|aO zD(j`BXYY|1@y2K*6*5);iz3HvNDIsuF{F-#7(^!Y7ho*A$XxaFuGJzj_Ky|lYc3FC zPpm~XNC{?PmKeZ&JrWSuz)D~d5!usb>N!OjfE7Gos|12FVvK+aNCTjKMH!NcWRh4L zW`p1&>_{qGD_>Z(K^z$1evt$EK!KX=jJ_$d z6+tY8S?aa~N3vzX)n+VL>sAy5j+O&Y=T4MDr=~}QIL+QysRh6iwMl?N=O}m)R#TvZ zsN|)$?2k$eq=6_&K!{|EXhaKwmm-4*D8kb2L3AQxLU4uCTHRW(ITSxdFnL}8HhE(L|p<8&j{fNqvZ)r`$YjcZsB zifOG5E_#)ZfddRF`rT0oksV25NQr=03|2LjV4yB70C+N!CIe7!Mq{P4?W$>+a$-gv zVKq=X$Y&u2JTfijtC@goLKp^eig%%|ZGdv8bRY8C%GWJC z&apz<-ENkp&RHT#64#!Y0idea{NN@gdEHAd9vNzVU@jr>c$jAjc(L@7YUdh1WFb`#qZ%+H=1g6Wq}p!J8l=f5<3?W?fPz2Qx0WYqm> z`9*Gl?KmTN&02WgOU$%~#N_;^Z0YRB8FD#%o`ViE)419cKLoec9{5ibNrdcxcRy2_y@cD09d-M1w=FrskrH>@7Fz z^c0M3(?Tv^OPEMgH)BoNV>6{D|y`B{JR$5;K$2S59sKmE-)4o$Q1##jB~ zrlZ$xADd9nIcJ=3#G2)Ywzjh{hKDnBNIOLgy(vmhVAwJPGTAMHntGZf!&$p13V#4> z9Os}4)Kgb?mI#v_-zfqCseOV5jeGo~v3A)=w3eAAE^T*x9;$sk2YiTEh-DtGr8c3N zZrRQ&GxzyIGQ`Z3IMd459#|onJ%ES?12nIE;m>{OBUk?8N5AsR&p&6TlYio0uK3;+ zSG@gQe|gdQXWswd_Ah_+`y;Arc!z=}l;&!Ws2@d5|CFpn4(4FbtBJWLkCQArXB!pjfy>83Wk8@f%pgA{Oz) zfkJI&Y(GUOUab|sfEV*mco1-CqBK8yP)yGlZH%Tw3%Wxa19ONsy8VnGIHNnaLYB6Y zt_LJ)BHpo}zc{mrBKUsHa8Fv)l*5^UO(qJsS&Bmha=;=IBty|f8f)9rHl#8RP?XZQ z0Lm4L)I^FDY^gyNXePc-Nzu8Bi;114T7sDi>>JMJ+@iDw^*tvfBCEk@?D&K*jkJai zfO)$GixkNWf^Z(K1d#EwQA9=(H0vS< z`ia#Ltw^ZO%0WOfP$mIALXQO$gGvt7c*)fNMhQTmtlDANdkSS)G#j;U)gElg7<7~r z#3>RkOoYW;GMj*U??0_dP!<494n%CM13(bns&Gh`1Q+J~L7eU&s7%?UmJU4>bnT2L zIm)3VnU2H&N;Yjf6p(@-Lk$3iq-H%hbcLdD(-iOYjB`Cn8 z!5L6mS2hGdC&0}bfZ%Ktv!s!Sd}%T~t+om=1fu>VU5Ei!$<GVvs#-bUJQ>t<0OjTVYk0vN%zGY2j#1luQ*>84$@o=mvZC@0vt*y># zjl(eqQ0ycbrKH;gAjT9~9SSroB7vAmTS;C-GnGT?0g4=+OeCA&`# zVn7IpWP80o1w#^e0709Q245x(=Zi8KwCz&@sZyD%(%d(q$L5-4W5U)kODrl@ z6%ha(1r%{2POPlW$WUEi#&gsZ1T>l;W63%2jt zZnJQX*x=qR+s=O~*q9`7twwXp0}tkT@B6WG#c}{dv~%a==;+AO(cxyJcG`*Sk|h1Y z*T47UJMNpF>86<@&?{f~%=dll^S9r#Wq5RC!x3x${F2wd<8Lqh*Ux|JkKX#a6OTRY z5o>TL5Jk3b+qr#gDovA4r(3IK$E`o&z+cwFg?*jk9*7yI0$@}Qv*GbY=b~cG(e7=R z*n93o2z1IBdh?Ia9HNnta?3Wo;lU z5CXQ`kLhVTY8@I)at8~LU8XMR9@24fpuzV!~9T3~EN598Ma(i7EI5geF5D@g%TXlSlPdEun zR^i#dkREZkj*Zc}jX3-W?F95w&webk+wUrTSkHG zU%E`SN>5Wxjma|8?Z!?KMJtNvf@`sTLGO8Y%8-ZH%51Zix)8cvd?mbb;HGCxwZzq( zm57N>Sr&1(##Dd|Q$2H;BWn(QJHO!-&t=fpuekM&yKa8q!Oqwee(U#t|8+09IEwz) zb$9*nM>oIhh36c5K@U^bTegKJLXqnRgKL4w7T2YEX!psJySvr%wbdETYW#WSa;hLrnk?@B?3oMJ!?w zPXZ7qMpy`l5pmYfU=arps)FS!!8A^d zDruREAsL)Y608FW0)Rqx=gMdX%nW#d5a4%F<5y7h$R(+vG~Ig9CzU9Wu}paefQ+gX zsddEME3aKTWPq8cCeee-kbZ}Es2AR5bpQY$ z07*naRJ?GgN@1tQvScQ(Maj;Adgt|JJ`(iv!#xb7)zVq6OavmR?^*>ol)0v<5k#wf zA&?#o!2ps#f*6lC*>ZUMn|{ zZm^>U1eFp#O(Q^YK=lDV?hpXtq+*t|#VREBn`@?-YDvYI^>%KZ>1i3`A&~ftr&ik) zc>`0VZca`!jjc zz@#VZk$Ar|N~KOQ+*8r9KA1X+l9RAwVsbgHW+DJq)uJVciasN2mUd)OlBpq9-Jti^ z8cPwmUIG?u5RHpvgsKvO1p(*+eWP14^DJ+*j8Lr<6urz%jG% z3K9+jiZUs|TU5eEo;Vxm>%BY=QDqDUhDL*E0H9r_z3wHTj_Qnx0Wx#}Qb}sMy-cdg zm(5Y0n5Ol^=mLN?phOx)#{&QbvolE+2gC6USZE&Es2FI~bN~#*A^_lqO}37$oUSV& zR+=kI)O4Z43V;K$j-Uq21Xu?ZQJVHyYT{4^Ev;IBAO&m_0AfIl;4-Cz0C;xM<)s*} zCaiKg*$r_N)!n9mh0Z`CGpXs$TM26o4RpImNf8XkSw)#fLqR4YDHREJk4qAipcEB^ z#)bkONfMGI7~9il5;Yo}6+flclqCw0t4F%3{^j*Xeo2vka7nFBPvH&-_N~GwQ2yE zgR?W0eoCj1q=uOe7a^I-mo~UFk(IC%1pviJooU-Ou4DuBZI4t`%fV$WqXb|q5*^qY zGLWLN)aKmra?E&_COyVpE{Q0cE|f@J!l9U@cu5Xq6{Dp$yo3&>d_8GR^H~1^zRTii z92kNbF(c?UcxnskaWrEt0a9+nA;I*VkaDFcQ)MDeoE{yXHZ1k2enk_&0kNkjlY}e+)e#hPS-n(V%!`sKFr#h#fbaeH@l`BRs z|Ms=_J+O7SS-awz8%LLn{_sbeU-#1I+;PvAZ+-VV0Lzz+jt)0J`kAj@@|Ks^GV|ch z>A(2HH+}HqmtFeVFaF&h|2h^7MD@m7@4EE=UM`~6xuPi69ku3Q5M=@$M+#BrO!@XB zboPH9Cq$_XSh@-DE|MZ{wq>8xb{{p}G zrE_Y604#9Ft>vX3!F~78`u|S<@Dd+<`PomIn{L9Y)#*Fmp{=IA@2|@%ucl?o-0!}P z&V8!?tGCOw*XOO4d)2GWFTXT?;j-|lPiUuOfB7Zm4ZkMe{?G7{59|22IrlvG&UdLb zv_Bel?@{>+9*C0tA>sTyGQ{+GjRzll&(UEb#Q4R_{6Bvj?KZWBwdk6spKmWXzx?u7 z^tRjS@YTuh{-GXo46R(Lj?w9a_q`{6>+3KMX-1aq%U@}-r1<0~b#lsH{5*5P)AA4h zWA~x$$+>6IZ@g7kF30u>|CfIefA|AhyW0Kc@6l4S&f*SDa%qsV4gg(S_B}9PIY}^rIDFomvp+mQ-%YPZLWOQhcj1Cs8hsF z9z|vMt0=5tsn<;15ig9U&eHVtuekWMlaKwu^*60v**@vSbP>4?Mi%eINZ?t5JLBTVF#&1|We54!Q=_A{McT0|hf6Q!vD? zMGIvJTErrLdT?&hl{`*X;ui}P%y=@=eitA#cA*hKE9O;q$T%vC%r<|VrJZ_E=ytdd^J#oVaEvvoj;@VghHv-GXXM|1VE?~jU`g*2Pz|YKv5=?Fs#l* z3}nQJtVK|;REga*C=itZ5Gj#H?Fmo}R)7&4O!U!n<-fx!NHosM!VtmmV65Nw6hsE2 z|9+r67?_yEN*~91fe4GRO<;nXEt44(lvDxhQSK%N+H2&><79BBrvM5P7*$y7iPgXn z^>{jlt8FP9f<>Zm5v3(a!huNvV@*JWF(5ZrD9tf+MAa+$iZaSZd(W#8irq!1j7}4j zk}mn&6;nyAbWKCSh*J5a%K}i7#G}zI| zB%V@kaKcb>CNb5DJxsf}qFbo43DPawT^Eoh!_zcnjTPr21n4p>w5i$#K(lnD2rK9U zHACw94qIJe1`3M|tOAw*XF;TJoaO)!6rtY~I?qK(i2$k;WdIT-g>hg4f{#`Iux3Cw z22l0_8--$Y(7ujcm9=G7>h}txI%(W;|n21-_od3`DE@2Fyg0i_SI!Il6(Dkc(3?=C1!Y(4{kS*-{HY(sLf zsg0od?^8sCv0B(DqAEd6qEKjF_%QdCVYh2+(pVu@J3Ti5hG0T4($||R)Ub(4WT9Lm zO!{`|0Fa4Es)kJ1DS8xAyG=1?y%f`07}HK;1kGUpNErzmR+Hrb#LQSPCSltJyxLlS zAYxW>DAY$|m^6iU$Sa!xRnuBt!a*Zu<&lzpr!&qCl+uWq^X9!)s#{>!}D{nlGgwzQ?AIh(V47?P*D#(iJAaJ z7}82nX7)Q|3e%5DlWR9%{H(rK1r0HbO<*~Y69Uq*KptdSuOS#9hN+6{5F%4K+eYTx zvrYt{st<16zJ09y3(tD$bbIDQpZJnty!d$+Zd!lD&p*Ro{-4)QwY$Ia;%6-#8L58u z%=1n!%JOqx`R?lFBhNnn%=6Dab=9&Z-@W#xMm>Axd1nw&ElW>7@%X#$p4xEq;hk=I z*_XbPrl~4^^%c)sP+L*U(*Ns!T(SP>!=7{DQviravtE15U+o7N57K?ghbs`F`(2fr zKoG#7tn{fK=aW$cMP~5Tua_VB2r=}>5zIskYjwI!Sthq{R`1DJz3B!@Qi$NzTeRDy zG*b!03{d#tf2YSCrN8n<`Pe^&Z+@GM$?v+oe)`$+oagK^#W4mbN$ZyGy-hy%*?8-1 zl4bhc4!KlSpwXQ16gp{!yZ;0W`T)HC>&Zd;v{_{#G^!Cl!sb}d)Cs5l1 zK*Ac~Fa3D<+`m$m>Ww##o&&vP#6NsX>-fT8)w9Nh!pC*@T z6l%82VQc+oJ{^B_9RdE*kJ)pcCYOIXTzxfJ6K}gc`NbFMQ_tAtdwrn603i}o_jfYJ z@`ABm0uW&$_KOJ8$NRUyd%ta~|H8k?efN@e`R1EzM{U4seub|5cKMl4 z5kWWK%&QK!8`ohz?fW2rK=DA>eeEY40##cgJhUZz{&VrBo5*mu>#qFSKfmNvuMFLa z-rrm78na++vlp?5MLaf$=**Kh9=m?&m0$U{Q_g$dYhL`E^UprjJ`pwt5>aBw)~OQ( z-uZzb901ECQD*WOqc&5QxMX6+`}ou9$|wXNYq?c-DbsW}6g~zK0zdgOumn;??qi5C zO_NsL)iXQO4IS@kKvDRoghH+1X2T_xr@OveR2rPS3dsOyr6x_;xrOCxm8IEJPCf3V zWJtaIR0o5Q>mQ5?CWz+Qlhb%>p?o%Gy7@KN-8wnd9-Ek| zLQ$1Kd8H41sB5=~MJ!_fARw^qEszV1MHHArr`5ZNMeJ8tc+O12bH`&K^0I&+3Jp<3 z7O*7qlLwCK)GeTBYl_MUw(>@;ooDCkmXgjf^zSj&GQi-6H z0}4jfzJCT%(oU7o3LyvwWtIq4q{x+=kt&QzL=;iQx0xxFX(<*2+pn5JBP>H0g49;Y z*Z>A#pbU+|1dqh@q!R=HBAkcXL=X}Nn5r}Z0doY&icr#5VClzBP5)?hOlI$CP;|jV zn2jijMiJLz2B<(Hn1m1kO?tl=jLN#IXaX2aAnFH`1z;#6s3JxKB}S=Qs{*GXR;epy zuAZ3%AZmhC)pepw4l1C~_j1MHwH2T$qERYC=X6Xc1^U_zL`sMNgc1dTYY2=uR7l%b z)E;q^2>>Bh5@Q4w)edP<%E4+BV%U|X7#JwUC>8%il>$f;6AA`&fTShSaFh~7U?oU^ zRvMd`)j)-6T@q3^TrXs-0q)3>GK_IqGE`v{1e#)?M{(&>GDIyP2*jn#TWeS$7_L-q zM4%d3OX=3ZK#gWQvJMbsR8<%Xlv>G1K!piGAPQ7m1Ofam;`_=3u`Jfi$skDeG=)iE zh@hd`V#WZ}RMt%r5R*b^G*{_HhQmQe+ zD_8^9Qj7zL%4LMIR1%$i(>4%;2qf%#4@(s`8Uuhkf*3LCFacE(A~0CgQS5pvW*!BH z1QAT6-ZFb-QUf60<*vp9As7+%BMv|WI?*r(X6eLKl>lTEe6&hzp`kRI zn#4o^8sWQT7z$h`Ti1|`0+ZCIe%gGdY&aM4#LoagR0Opw2o?ZIB8D_-C75K2SxS}~ ziDZe5dRB_C(3GQsx!<3?H3T(=)g~2ZDn@0pwx$q9X+p(614diQ>a`@BC>P3VdJH?O zP(_rv7heoPR7sR7222m88t)hYhY}Q!AVd=*!vO|Cje;n`soA9in>C9NZPO{=6W?*4}e8eBIhJSK~NL=Wir4p+|!QQ zBS|14OA_KjhgjFt@TH){EgSVkeP|- zndhAmV>HIR;5p}=a^i8zMr*A`1Hf6QZd!lzVWkf%myOO|v0lqw{M-wk`tbNrGif#I zF~)Ukmp|pSO-q^$mnKBG<&OJr{PAtie#XYtE0!?xZ@l&eTX(isEN!$J4P9U+rirr~ z*R9>SZtX$6D%pKag%iLq@c`u?0~{g#lo48j@m^=zv}_55pm|9n4fR3Gl9w-)sWyB> zvxP|yRT^q(dj_IZ%XDHwt>vL1OitmUEhr1!xdS3d(>OVaiSb?LbUj-}r-Xf`J9cV} zJk-)1bUM^(YBz^rGDfGi$4&}WSgY-6jE_SEHK$|aC}UL_?RIEr z2&Kp5IAS;?uOKhrb-q6&8HkB-Y~4y(3L;ERHy*q{0J{Wg48dU+=g37YVi8XmeDk|M zc>l*PdwAQE`)taA{vr?cExwrL~OnLUwk2&;T$k+)u}T0D+>Q(=GFyhlgFO>5!w-4YWU`Wx76& z{(tt~G}^Z8Di8bSoNMjooOADeO}*-#s#8fNsnj5e#w8?`givQn0?R@%wi6JI1O&`L zwu$559^(;{VFRWawu$M20b7j31477fFecauF@y{uSu&tu5TK@{YTkSIo^y7y)|@jx z_CDvH``&%kzUEfd{eDQd=G)y_YwfkyTJu}qSMZ4wWm23!pHj{wxP&DG09$38P336P zOPG0DSJREn7hT`)Hu{RQw@s&`9JRasz(4u%89x5bw|?{Ko!Qa+A|Dk3538DE)5DF#URsF2{IkUpzu`*4kd8KgE3sA8x3W3HG)B| zbMSI6<6{RQ66h4Kbn*d#1cVSgkOVBYxbV4?zaCaYoe{UVbh{1OXkv7aT6fiZa&Tyzd1oUGa?Dae@9YBgjBa@33r zZY3B|M6OwDy$((R0Sq%k1451fh`fsG!o5XvdV(vl3Z#q#RAE$)622W^TAJMyI0}kpl_N(2Qsh0ZzuIvCvqI(PptD4R(&Y zln%ypH+jo8V*si3yy)F5PL?UvO^Pf|MbRg*y#)8BE(l)0sl`m1qF!Fe z?WM^v$3cG>%t+1)iK9BetU|M3@} z9y%^ip~?HR`I3{6_6PuSCJ>W(P7H`55^_yB2HTEJCF`7G=u@0)$OMp@B0D%01#~C0 z%&uUvaHd$OhNg`!W+C6=2?V|*Z_!i0N|SY z)Fx!HIh6rfkR>3J#b9je(#J5?3M23Eyyl+w6h%RVQnCT+=sfJ^XrMA=074d7b5E}5 zfjXofAp^DKNodZuqDBCcG5}Ih2o*dCqDb#0rAP--=I0lc_GVME;00$QCoO78%w{e{ z&{LD8u+RGf0EAFg2ZU|hEoUmhrSEmKe%ScEwPT&(r)a`64M@0v<@{vXm>$Qfh(s7 z$>l>Dm^zGfnH8##w4L-> zj3^XZNdC;?l$t!+?kw6Mu1HXqPNfcQjCq^-Q}v#TsILF3X@oOJ-O>_ z?z6HBJH8|pcA+BmXccFOYK=t~$S7eV3BYogqfdz+nKHD zbiK3f#P)2HC9^*Fwp&i^Y|WTC#yF{~+ip2M-KvU$&FugAt&i1p^@i8HQbdSoHk}OD z#F5c#PbvS=Cm&ucn;XyE@bCY_M?U@FLk~WB?hilt@WYRsyC(N1bWgS%T#&A0rh?#A z1Q7y3uEZwL4*I4)IepIqK3`%|@?B?b+0xE-_@bBDBj;$gB`V9dGS5|7rzT1r^t^Il>z{v$IdBw$5&B30jT_%_u}O*qVuc7 zbf>7e_}Z`GvuEw$NBQ>K<2Sr7z4M*=Mfdq)$v595fBviS1@{$y>RsNnw7s?c_6O)~ zZ;Ee!z?Y3Dr5E3;Z+@#h@D7*YO&i|)R)5v2>HhoZ^tLzc^j&YW*WZt8zMLz7A=}mA zkQ|+i{$S#I9dDl=Lkoo9RpAstfWq#2vApd8gu}NhGFMEYPdQM*a zB7DPN!fFK1Z+(Y+(HGgH=e_NG(ICX~8^68&j_<^D=F290>D#J*{z19>9^c(7-ti8+ z{mVe&_q{HB;eFn;eAn~&U0;pK>1)4h=EFd|MKfDCBK>8boTVLD*3`ZpI>&__2{IAuRcg!&waLE zbatXH&TLghV1F9pG>3!i=B@hV$w|(3;leU|COIHf<8Xi?#qF|~O~cWcQ$8V_KDl%M zeXse2U;3T@^VdJzw*Btj;yeD%4}Iig>A(KK2j2L_uX+akkY_R6vHR%)?&y`6!Q@S% zN$@5in*(l+YzKn28H~QXG*~=#5RqxGxv+gr6m73Lj>^ZQuFB`#a;7fJq8O+2LfDzG z4;vkcVGL&YD)(|6e40ULFvHftVc}*YxE6bR5<$5NLBDE2x>h&3dOLM*t;BU4`jH%p5|iM{=5q+alnK@^Y8x338l_|)z#9Do1ivj-{m(s<6&yExD# zsU&ZQF0e5T^^sVRG=O|6xuhH<2cmO15`4Sp9Rh%%0j2;$yBu;3Atv&D!3=^kK*}As zMX@b?fX3jJq>1z~m~){@+ePYC`XGqtHO_O%2mrQXvsKT-D0`4P;}(S}EfHH3^HeJ= zz_+$KG7r6W7J7s!TF#+oHf3gGhJ+lbZ%~_pn21n?T!q{d+iF9)JIqE!F_Do1Lj;yV z`{<%+KLLc`tbq6KF=u8ng1d>6^#B2-s4&vFtiU}GfeZyAAQ|dNK(P`Z8QuyuRs}?p zgCOhxK|u}_L`}vi2eBgvj0LL=+61pdns8UL&ZK{Yt;^JMm`a~|HYWkRh9nm@hp0!2 zX)APabctw^>Pe0mPv#$t~WN&|C=9Yv1`rAXrj z-b}HLAvr5qPc%;@xd!(d{WNq1E1*_rrn*rH6fy@enSmTG%3VGc78h*dEqR%C%B6Su zS>3w5C#xcb0Dv0pHMpVK73_co%)rCj#7Vbfbs-TmYse}WQsuLq;zG~28?jULfiEF- zE@*VsaS%X_mCjb8y>YAkM0={SB9ZLLl&zIzjhRHzQakjHIl3T3VD>)6P_dYKm$~kT z7p%z5%&n*LVcKC>9kdb?awZ$pQmT*uxQiIJVpB;T$xT~ToNG4fGbeDb99aO2Ky$y< zn7fk6h0O#`Xf>Ll%TXIHr&<@?qvwOp2u0DhksNGhr4uNM!odj>O0^u2J=jZCDuZkp zGNKwSJ#EKIa^&1tF_pYE?WtGsKQ`uW8Yzah-|pw3iG@@vg_{glG^y^mDAT+*vE;g^ zxD$vV$pBfZZdRk005iGNFv!P8W-x8!M3QQ(0O22fP$`kBFO*%AOJ~3K~(Ux z+I4O%73Og^g%kA@ATXHs9d{W(o&`Rk84R)jrIJ8|4p@?(a<|-Lnd76+f zo64OY#urgqBeKTA1-kgeWH{(i+Bd7!b{RNL!iVC ziYWomQaD%$J;MQ1A*WoP^9d$G_2X~M-=woV1!~KiU-zo5+4S_u?Wc2*tBODP)WhHP z4}Wx0RZR5A`Q88KyMJVBQa^lt_cgD+_XF?$%B%mhj`GPSVM(u)q6U!{0lS~G&+Yk% zQ$>05%3QTiJ}dA&KQj4>e~U9``1U*LV;{lIx9Zt@@T))1cfP<+pTS2zOKt6%H4oI#uUt#6#%`h)VwAKI(FRAWWmfvl?mQUVJA zj&c^h{oCaY_tRwNFMVb4?|vC&L9e|Z?C77`uR0`Cl80~dQ36?k_kQ){o_o+Xc>U`j z^@d;@&^TWA#>vnAoc-=c`3vv!=iN5VpzrxwW+0WF!@>4i*+F$j0n@+;Fe}{bD=aD(SRN^S-}S=Evbo zRKzf=qzFfCX8AanO{=f_sxQ89e(^v2z|a5EFaN)v_~fTQ@_+sOH-Fn-`LloOP1pO; zjxmCWre_kw5!lUPPG#^W13+XrkR5~rL2L%oQwb*Xt@=bWIa21-R|-dkD6__V-k2FP zyQAr>%Zh>j4_q<@I}TpiAdZ92(%=zlW<4vL<;L2P(b9x~>v2{B%jVY^rz+zeR( zl7sPqT|>|z=^O#T1|L6BfbyvF;=sUgaR?6RP8eVUD8ibSCg2RF!Q`X`Vn92ZH?5FD z7YNQ!_~1!2-esL^$p{W)Am<>QH~<+riW32#4rXuz21*;RE=|PB=w18hcAx|(dJM^E z20Q|IR!t^Cfr*!0a1e462Q`Q+L9L$%KGQkS8$$tNwcru~@S@`rCks{p9`fL66-tAf zYYRAw4o;_KP*dyn8a?TWf>ohn73&zGU}X*LQnp#T4h2)Du)}25CsL=urE93m!6}Q$ z2Im(-7N`Q5Q4(slMu)oS1U`_uoNa&CyC|UhxzD`cqzbXYF=r6L08E`cB^2IgOk-z+ zB*^OxL3^O7mzs;9gs3h>Q0m}BSp+~SIkIt%TCV0ouEYDF0H=ZiyL*>|M-T-#i7$Ez z7;@)KtNH>FoV#|uOJ~jiu0W$`*(yDb53#vRZKy#qv6_dX2vUre+Wya#}|j1VM}j$>qv$!KV$W4#Q_ zgn_?=;nj89Ag6IR)JAYefN7j^pN+u@fC_77D20+GP?H6vs6h?cMlGc<$herG=S@)q zg7d-jjR8plkgVbk(Mq-q00mnRTOVtwnCf?;RW1gpKH6;)JC4I1W*rC^^RrkWfny4jJ$Q7osF|pu#J3bCjrX zD42+86bCCrIjtVm09|=JkrdGvPHLjbNSA{#o^O~+BolK2AY#OzsKf>ezGl%{=L+jV z1tU>v$8N`6LjhUsNbyM8g}#Eqt=?VwR#`NqHFe)JIZc8aa+fh36M9QT5V*99K3qXk)g)5iw`jRK5Rp4? zyXC6h;_2hgTTgw@Uwi-VB5CfY_0(X@v{<&}bWIkj6#Aq$ojUA_q(!}y{`Y^M{^8%t zANiPm$(!o;zaMwpq1_coYSKLUbcQc`CkzIhc*`xFdh75nfA`pBoV^vp;O*WQjg9;E zceud`xc8-=FyvfA_p$2MU*Ve{O0j9WKjRc>qq`d~r340&VX}iaeyIbz6B3_g#*+%?e<0Ui`5r=2w}UUQ{CR@dx-SbKM4T6(_R7#UipP!AmiGzWH63# zuZo;Z5w4%r(M4cKxI9(m8i2ruW(b8~o&DI4_5agP#IvXATmCY??oHGi3H$5s2Vg+d zPfX7L7=8M~{S6Q7{OPZfyzPsA&6J=<{lpHf`vC*>1}1;q>xtkAl$2lk^4aIVvhA#G zGYY~y`SuAs@Z~U|S6u8oc`ZN~C!0qT*McP@gy{71zo0+zgK1&$Yu+ng`5v!kc>Np4 zio1j*1E36R!Nc`T@fgQA#xn**@$6aO6rt^DC=$_U_3f@f7Q3-hjTlRaTKD<`5d$g~nT z?Jd%xPX}2t<5(hyl#yp;2v>O~dv!p!-h9hn{lL3^<=_9-|M71>e&_ACeD!;N;63kr z3W9);Oy9IkxWJ6>G@itQxyin3Wf<(v$CUj{L_uOwfCdyoOoIJI) zwqEM8ciF>pwCg^`F`k{EfLlWiz+GXg2E87O2*)_am4%y=TEF~cpi(UYPDgQ(%F$;p z1kXS*(q|&VjOo#)Eu&T7)@8L%!Fv!;#|$7t02}ANb&GCei)bO7fhGE#!kbu-M?$fg z4q;h4-2l*fi8&1BMTQ;7&?uxIxHw&jj;2K#HC6@4n8yA5fjMP`DzF~%Y6%Cq$07|s z!G|eiK|_W;A%@<<=63%cZWPf0Ab3EZyn+a^c3mk&+JCNtIX7kmAZ37trD}8_U?`Kc zubYF`#@*8DfEF#c0Ko9LvhD#o!lux^Ck&z;?fNQ!CMb761=yg&0g=&q2`IH}J+UGH zkceRol}4eO;cyD*z44;xb)cPOgrwvSfE*IR0{8*nDFUHjRO~j=2C9Kq5Tkm9K1P3Z zNF6b06>>A*>$NdIeY)&+-F8DIy@g&|D?&S`oB_VF#$(M2spLFrFl;-Jhy_}sI7^H&Wy<2ivq&}KqR=E59N7aIU#J+r~?_% z2i`@A#+ZO<%gW{EDZah{?JEhnE>P_3AC%Nr6-y-oP)m-5f>AmasT8wj7Rf2!uFm)PI!>G7w+rC6Sun~OlqXCQ{5b`o)(D*Kxt-P6Y_LNX>G$XDW zzHxk1(F^UF>F&8nOnq9m-Cj{_Pl}FQo0}?__v9_d4$vu}n8{{?L_kk)qOz_NW`P!< zZQ>pP9*kQrQFkRvj0oCA<#5ODJa|axI?OW?_dJ_fhZww=C0BQ1r=?c~+LfPxc&{7# z_#Ifu;V9CqFD?WCIY?i|K`(7#1ps!ddx)B32S6=S50HbCcobkZmDDx{}RsUX6TGT&k-=Z=ggN?Xz6V7R%XC{8sGu56o?FndUy0;$hqT;*WL3<0AoZh2>}(*xOY) zmW0cyBASwW7kKVwxM6s6rC(}lMj4*sd@9OCF{L`@iS{y_KJeG1K&-KJL=4%_TuV@+ zjsA4|{F2B+olvdcW&)5mt$CJ?DF8e|+mq&8Lz4!zm_aab9ua^FF(zg+5FEbX>L6W- z$Z%S4E>XKUye^+hh%uf%v3+ve|LITvZ}+|W-p_ye3yA1LAN}~h{Doip@Bh2^UH$uC zL;-(7xH4%`W?@P{{=@j0pQYJU{`n{E&fD?+Z@f|#Bh=@$>jp{i)}i?cuayHJvJ2JX zr)BX!10gJaxj6IkE`I(7t9Eb%1mcR=lZ?{pwZ8&}A7S%eD;%w9h(pjlVn6mzyI=g@ z;lRg!JHF!O{=%10yZ-$nJ7NDEGio;mPfqB@7U&X6{pjTUcMLg85T_ z*#FS?_aFTonEMZWZ+-Xec`Y?ltm`$K zJ@!|?;Y^qop)Nz0^Sn)J15xSXvqF$rEk)#KlHbxn5Yeff*}K2&wO{`B*QP#Cs>^H% zI>vQ^dlCkmBkqT=#!rt{&pZR z^jTQu$2i7w8rtutI-m1nvtvBFFe!@d=VShvqqa7E0739v-8yisk>CmlRWWl56H?*z z{KDF?}Y7_#2gc0vZ0PUZjt62Wr^ zDpvfF0_c&gh$T{E83kxeMVDolecb|wU%x;3Hz3QP3{wCd;3d36KORQt9e@)RG482F zKnRe&GIRhG)Q^k94wR0z1Xk`Wh(Hf_R0CIL$kRqR6^gb*99b}$_mkG{({h!3y2Q?Y zINUQz)YR`5!f6Pt6=n7h3m^us)6D8vI^4sgp`ZX-CIFn0gfRhMWY%}L`+SN0cjYMQoz~k_&WbVZ7WK3o>r4`qm$JEp4aIgoO`Yd&&C+`W< zi$@!kctId0f2%~Sjlp<08ogXoU{+?*3fcx zs)y3{jwLQmZdc_N0C&PUtv}bwiMdkM$_UXX*9w$IPVhz>&Mo`8Awn}9er;+xYR zgh-qV1HpID5{R%p%M>HZ60?Ag3Y+({9$hZG3p;Mfg8>t2dsGE3j6<&?fMh87jAD~e z66Xc(0OnvlUl?X{1V1x`eN1OOIV2bF|& zH(`gU_GULU9D5oYdD-TI%w@d(G6m^Yrp^TJ$5J_wmdmDANnOdQQ_8zsg^PyDOAFZt z<`$7aio}wQDqD4ZYF*pG7ofh(m;r=`$NQGEI@Ti>vp*5LcB@}_(}#H|Gq?cYpbJ3J zBQ==NdYvG)xo@S<`-6ww6B9fP^n}(i0|53OK-i#q=4y1FI*r|BJXvY33cWC?Eiuju z5!e|mQix_eLk|Mgwp<)oo#<1A{M;}7;xGT-|LOPs;MacrED=8X zd!IOa>rL0_3Br>e;rb|t^|atZ&QyHnGrc>qIwfB$KnQ$*7jdQF*wngzLLl^Pj|?4b zMAuVy=t0*K`G`%k3GS+xFWemN`Qh_%ZmSX5lZOLPvPV7K+V)-H3p#`43e89vk6wT_oBR=iiai7OLcm@G8VL zd$_hw51oT59LU+5<>Q`_vQr5hFHauh7{@poAfhT#ph$^Q?>XzHH5`G=e6LAW(5*U# zX|dO7zsQK23>bI#B*wZD29~WhIXz*YrsoKVfKD|xeW{q1MP10eO-+AUF4176v@;1& zLeu3%pZxG5r4Yk*#bxAYy5t5C6BQ++48`LgeT-`hbEmK|wn~SMN%IvA4(qMvY)5ST zdxdbcvSs(a_yvFc179=z?SNgstqI3C#xbrEq!>pDP8)f$V;tj|j@2e5%S(83#J;W@ zIAE}GjH`%DuwH$qusOV7GG}ucX15FiO0kvq(Lh>A#YIESJZ|w%alfk^6lEfMCwR$3 zH8i#>J&?TU2#|?v1?=)}+GOT3tkX3>Xlfcvn z07UYN04Rd70q}!+CgNu0VHv=z#z zmJL>!Z@9zEG58%py4GUZnPd~q0U?3B;tXPvfP-FHEF30LZFH{9VC9P71uHqjxT^wE zBH%`{{D?Vo0b@5@bfE)?gM^J302Jf|6q!JAv+DO13OFI={mye$5$+nYg`r&&JOY4_ zlMyE14rNH}hzef630r_6kt7xh0>8LN?oHI$LW-%%Vf7r8K?pr8_6{PZDrB$Vg@FLl zhvO80t3k(yrV8$`mH;q=7}OO2Rt+jnNPpi}BZ5Mo*!!?=I;JH6Hi$SP9HHV20Bb@|&rq@!u>_bmGh2lIhE7Zm_Uu#-eyuN@hY z9b{@U5G@;Ala-XY8Em_tMycm@+hTmynffvSC}ZpAdff?@LYNr<5)2CjQ8yZ6aChl`u78v8}<#Fc3!*+uRJSs#Fqed=J#0iaA_&|#TCNW!F<Bc7b!W576BDBtcZ-j#nwv$j1Xt)kv3?Ka3|d`)fudpHl?#d3Im&t z7u%C!51PEsJIjX6Ff|e`xA(cB3Wh^l;e!uQ#MTy$8syK;wU{T1stRv-%`0Dc*V)_7 z-gwUo?l^t=^jE&)4d3$BUw%z)o}R2yf&+SK|NG=Y*$f`P=6!tkEmRfZ3qLQs?*2TD<5^nqU0nk6q527whF^dg7bGWjK9XU%e&s6R}Ps zN8DTjeM0wosu+6rtD!I&u9BtGQ-ebEy0tcA9IjlKL0|CN;@$6|80m)7@z4D^KXaR> z!RwX)7)_e`Jzlv&1QHyn6c~XnokSfST*b9NA}^wcNFDr+ zJB#J!O zdvwt&`H5+q)sea-Y$jd{GuCJGKUf@>ljW>!?S=TbBrSnrkEDjBd=P7uD(*!*rSD`r6_af*&FUW zd&BTI17xs$%k*O$;~38l&@e~#Q7z#Z$9Ps?^{LABNdmw}ZhzSbr|Y-r@41B#z=7Z$ z05WzWC(3{U#Be~J7+4$0yA}v~pxH#p8OUI9fCpO3fwgG&)pDK#@Q?*AP#3$Xb0s(p zm$ni@bCWW?m}b$5=8_Z1TDz4}nto>hV391OQM z4Msu9R3-3X`Vs?%_3pes^3&l)!^4kRrvk_f7ZAXi0h1v$O%55o`~qMrfg4#}8-(c4 z;qL%WAcKv9k<0*wVp+{+6$m_Th=+txZhdnBwMPV&oIPn|?lk~CY;8{*QP^r{I&G-6 z5B0`GK?lVJK?2~yC^)czN{p62qQ=>JHH3k0($AX|ARx0K$}Sr_iw$PvdGJ;<36fGJ zIkE--N&q?ufJ1FeEG#joL6~`;j3z)2%t9s!)*w&SnR8?hRg;L>floQdn*{DHMCC5m2Ga z;tqFESD;30LQP3c%`yW08A=2N!A5!ncfrQu1CvE)2HcTVDiO=Q2UP-K$^bkuIS(FPWAiZQ^_G-D)5tyM z>{-REtE0zJ@{9;v?AMyoZEU|=wi!ZAKe4iyp|dnLJ*u4pZ~=uTY^{2af+3vsa0&f% ziDs!f`@u{faR@wi2IL6INenPX50K>;;XHJXk+{S%R#;}b>5!fN%A{b%KCgsq)#)nS zA%mTr<*b?DMCR(SG}MugU6}zI$Oj*>vP|x9HIOl_-5%XNyTUV&3`2idu^VzS7UGov zRa|7IltHPCVUx;`01|LO-mkbM>_)*X&{%y%mx)|r#zDh%+RS=~QH46)*d#Aftg@6{ zjP7Kqw`|S1B~F3ah`d1nz`@oYg=6tpNV7;6oR5840RYVOk{8_Z_rLR-L^uR7bApF! zEjq|58f$2Ts#)o$ z07}At=BujLy#@_%_iaQG`JyDmW0&*BrI10qd+T4Bbl+5!((1OiO!`<;FJB3W4Oe!^ z>gzxbp{L(UFM$G#a5YE^L^wi=(+s_i#2rOc%8NmA7pVT?Q9L71USRtTaoq>3}i&Q5AEV(t(Rm(v5Rzz=z z<_OffeCxN>Z+Qnbd;W@-fvU$ zz*b^T3FGGVr!*t&e}I^|%lz%qz0*=))*R%nlm|&v8-Ek=phSYDVk0MQ zlHC=6uX3@Lp&gZ$#2-69aPchTGRLm&h`Esw@+5u>z z2nL!@7>eD+b)Zv_1vt4ETYBhAvcGi;fNjqQazp2#k|Kr*K(E1PG43TkOW^8b?8iq~j22 z&4KW+-#Yc8-i8>&c>F}6uTFOxMP3=$SP2c0up&P>%pXq$M2VI~Rl-mUg?&oMMcBzL zhBCnDz?BvhCXKd)ZFonPHlA*cgc9mq3BcX>bfbAvX;eJ312$^ z_0XUOAV95Mdzsv2$f_GZtXH}CVF>^hQttovaK8{Qd2J3k@j%cqY>OreJh1bIUrP+y zf4_1q;B^u*5* zB)TGFP6sUwH=gp_{sbC>DX#Fs9Ftv`G(Q>7{RaTu*7s<*jmDvcuw9tVzl-(LSzfZ7 zev8Sei#QxZ%g=HbWMHVY7mc(DKsyY!$YK7k{ulbuA4*Lw{>I<-H{MUXSAN#uM~O-? z!kjqx3tof(TI7qQyd8n{+-&~W*&a>dRm<78I@Oou$`E`a{L>#i_hUa!XKo1Z{aX6s zHxKtX^l(SP_SxCqce8yim2YV3KMRVp-M=ULpG|IG%>IJ$txw<+_~amfA{*?=yaEUD z^x0Kc3NqNBUccKXfnL%~9D?Mt?qAXA4>2C@`mZzddij&&yUq0LyW-7+L0&`%+UjZ5s#NAk8zBril%A)!r%D8KlsF_ zzW49`#aF!O_I3Q+`3v9tSO1ZS{N4ZdeRnj0`ZX#1e$otP>i=61anUlS1UQ zW~Ee;1NJEj>>$$N_<$Z{a3}X+$-f7(F&yYegHnc#d;N8l7!m;y!`z0P5V4rBdIGa< znCo03^+8}6bX~^bzKnTu0)PNkztObXT zWN?XP=!eyNA7oy};>>A185z`HhT_t-Y6}2fR|&xc2B;Ikp-$WbAP_NU zS+%DUxsc1nv6NOp8fY0nnc)h#d|yVgmwFDjF*zDOT1?!>(-aHMt;= zM-~;k_b1LA8ihoNS2T~ub5Yq61y=*%>(C<6FguMk&#?G6q;KJz7$L^x(;%b zK>OBkLhiiE<_d_QiYCXIw<5uj-HDjM0p@VDIj*gjva>k>=(|V+Vulm>TAK_GR~Jt} zfG5^+f<}oEBDtEYPU^&u!0u#IkuJxSwc!1e_ox+uWFy|MS_5x~IdHIizAT^r$Jy0Du`S4&`_VfXVWQ!{T3? z=aPTh`NVSizQf8H0DKbY!ynmu|NE$ju7>5Jc>Y~Dd)H&Afy|aaDtkW%#IpHl;=2o4 z#J!&c82sUiZ(h#672qqY{-OXw82Y5&o5w?+F*_pL@{RP0GmM_x16)?qrOLk%&;Nbb z^A3^jQ>E0>e-zq<<`4T@?sJ+E6iBl8An$$dF9r7G=~gst7y<_)|dY;1#Rz+k%jn1(hSXqaP~nS(LRFg^{q zXE-$Oc8{9_eGJBfyRn<4u?b-cG8Ici@k&*HH;``o`KJoEr41WDL`u# ziEx>_&}&*>5q01K5ii0n~z_6(=yrc%lqwhJ!d# zuxL~($_^-PEcyuyaaLdeWV{?G?VWT zAS9?veTtkarEEGynQTGXS(r}fB}~N>3=lU(Yy}Vl&@56;fLYfq6u{VynWKVDJhxW0 z*rF&iD|GiQVvtHS9<7JwzzQVkmh5M;8xhxxabcrbGA%hHtr%`g7nP!*Uqs(qQ{Vw*w~NS8W~)S) zu@9uPssc)yvL$L5f(oG7HOd7G0lh$?Mv$Gv5??W|6eVYsr9p~N0(W^bgi%`k2% zC1N5f5(6c&R8X7j&^M)v3Gkxbwq{L}Nn2(|&Srvxn!@DGUC(khB%E9$&LoO(nJm-- z$O4X@Ee5VOtkggyEEi)pz`@ai8TbK*sXq`v4n?t+3>`}rRc3|`#~`)A^f(yftt}Fu z1QZK)Ev0D0QlCR66^ou77rY)=6@nxxUb)oV@YyTeMJ7R!d9hkaj{9re@|8IDi^ z1ynJPc3fF4BURLG>o(p2h-7M_tSSi}iO~wkl9rs90-(mGfoTCyHbquP5kTrin9$=G zg>kq16uZjG6Kjg!Li$;ejx#f z#$ks8AVKmf*ZDoP@~bRRrGA6t>GIY_C|;l070uNv&#WS zDG-Eh0!*T1i-?M8fkwVk5N7IH4ZA=F9w3+`tdce548w@R96bRALigkp8cP#v<3oh0 zP^OflP;N*9fWmYSgE-^?CqoLrx}*w;iCC1}x`&8m(=S`@0S#DUugGpVI(DoAkbNbt zXj&^h0I)u!(zj(#23}`^0H!Acmtm*3(dS?WtBq1pvW#A_Za{_|ixX=ifB>7p)+BWA zjM>Obg&Ft&g}L9=I;>sM$~3eaTvkD96FRmdV*&?)DFuxfGmSa+U9u*QY9~4v-~P%^{oil;;le*Idc~N0WS7*yn3=p9PvhosfiJVAJdqr~kx*vMR^)LC*2XDFUD|dA%Z3rLy*safaT72z~es903p4j3& z*}=?%f){(vIqn!Roe#T04b$Gma-nC}CUJEVOV2w7-Ws#L$&=d@1R`*l#KWr%Lznxu z^t@K5wJ3!KX^;*lpN>t5^ijD3f1BW&Mi_|%s2bIdWvlN>~J zw(m@!AyM_D4ZL&A@g#<9`|l8A&a_zl9H)lDP3q+xyZYxY+@~bAtV^4^jSI1xV2-0Ek6Xy4WeBG$`w~h|U01kal(}018kR>NfWmB@G(sBMW)oNp_Gbb&-lzDRV`jz00dhGNEkS zx@VvjXAOCbk~-xUfCEU>ZEUSpW3piZp>2z@OFNbPwg3s8?oI%-*f^3E4DDzp1hlGT zpcV+psTf8>&;n7D)o6hT2m$RzMw$Qx0nMyb0CGgu0!=epWmkw=i#&9J$WLW>pw@!d zm%y1!V0v(N<(%QPJ9?X48U zWY8MaD4=Ws$jFq-e(!KacBUNcvTJ&K9oUGWc1I=5pnT*=Pwkjhck5b#&?NM=-M!cz zYKC#rn#H`>A4L~q-K$MWq>S#KwBpcr^=RzD1FqCn$8=#Cp!51GgJF65y#uqHGj@;4 zDm05JFYMai9=I@~T#i8Wc0zvOVjXQRC%v*Am;gX6`!X*THIphRp>&)}6QR_?6G(wc z0kMo^3JL^?-Yr-4f&Srk9AOBShA!060$dlm=-bLBBBx}BTrc^iB~XQ7kxG-`BD6YI z_ZDr#qzVje+xL@Eay0JM&X*x&AW#BjChfD3hY#p;yI>l?WgjwNJQ7T;1e50y^S7Voo27n1zZaG#{II^a-5xjR*Q01f4pNj0b#&l*|&zU zFSNGMJ!g%2Lw9FbTqEOlr`GPVeF0%m<|X$)qe(z81Vg&u)N#wbl#F*Rpu{>T>yjdr zWY}X%dk04*lN~FQ!6%i(j%?{!4I0jASr0(zJ$zWSYAAi zB{0>-MKZl5&(s>$%BE71*9&#!@SbS^Vy!Q#bs^r zikSwg0*LPVT-*TDPxk4ddWBMdZSLZri+q~)r*pSy3;1QD?;xTN*)#{4QyAXx^a3W zTy>Ry%|AnbfiJkoy!a)wdmr)%O|a$HP<;=|XBuC{>e}e84ED0@uYo4xFA3ET2=yL| z8ha$;p{Uz_^hXYC$qmz%*)rNL|29nfM=Sooe~4gjRY z>icowh0?#q*}n9?t0{lrL37GVXCJUHeJP!_teo9TUq&}P8&TvDC~ZBK&{K|a+XiQ@ zt_a4UG;jt{#^+t_fB1)aY0>WAXJ7UGbnf{SPkT_^R?pNNb3940w6O5P=UjdC=zX92 z!W}6IfRF$EZMT2*_~p-h&czq(f9h!uJRv9wUL3f7VVq$CF>}9kXDt;XSe=C9bzGgq z)k*4kUhI2sJHO{`^`_eXP(W?Z3@fj|q|Hr`(%T(_+0HE}re23+3@`NDpx`-6W{$@n zs?qWjL-Y-_#!tnKOxxFbDFbo#H9W^0b3ApRSP9d`ZgxaOm~&<3nB#FnO2`Iw`@a33 zLQo=Yk9TAfmbPrOQH=-^Q3!dKl;XyY-wh!GkR-^KCX(4P9X2Q?O4vM63MkA8bGsJm z03g9K+6OD4R}dB^OPe z?9$ljtem*%v_SNu8Vdp-1V8BKoLojZbDaV&WoQkM9c8ne)}-QE0Z>$PJi}SC>l7(u z<(izaWB?QEs$knMv+yW-QiX4d+@27wiP?1q5n4lRp_;R%NpwljTefnXu)k4-tJF^7 znwIV1jON(po-^=)+g^m9-dU2Ar)oe1Wdxm)lcx97=M#Gh)2MCEp5&rfaO;=txd@;_ z03a|K2EaraKp_QML_ig7>xHN!tmOiLT10CFJaj>OlWBK|aM`W5lLn-o&K{6xLP4NL zQ3*^ku(rDogSDnuMyI_CsDwtHf}n&@>UcV9p{fr;w~v~wvRAAnb7&cRNX&6jDs$D( zLm<0$rbomGWZLXN&;_8yYADeII>{nIWfR+8YN=~ORe~b509pnd5S0>A_BGm>-%eI-C9mkY;#2}qj>2@1@qLjtkAg#q zY(kx!=hU)G6UH(?AR~4VQZ_kTaRrE=a54KL^@=EQYNOjHB|-@VF)~u)6$ZiXLO7(~ z47#gSrM`^}9oI!{5NgH%5eS}@aL8Agc-0lgwEL^JpEY8`b|Pe+$g)rgKz1y2v@HOr zx}K-pbwdTLhb;g|7hWeY34nrAx0iTkWv9?Yfk+I1ov{W$VohoRL>($(8uW?8yHPi& zR*0m2vQo>AqBCKr*#qr!OY2sgD+}54OnI9mfC=fm*egPUKr42PEM(Ie1w1p>=vB=nmdo06Idt ztJbKoPTE6`h$G*Z80`Q}9mO=VnMSGHhY^A+MCpScyY;`l_oFd}?|<2MzWhZuIA;Ke z$SwbP`#b;i1Cr!bFMIBRy}RG}rym$iYHQ7xzH--Z{L0T>^NjO0E~gO5fBc@m`Q8^_ zf7!+RyNyr}ws5bi5B|p|4Bpw7zTmodzxShWe(SsXz4Ep%f8z&V_JT)w%@2O;AAav$ z@BhA=o^#=OXLmO&BJcm;C%$>lz0bYjiq%PzyB%YvUlqDONS#T1`!#=swQ`8iMm~48 z1Irq@*Wh^IO9)t>S#@S=R_=x`C;gwU4&Ry<&T5yRgC;2~Y3=mx+`pivUoc<%TY35o zseh?!zM5zsAzHmJ@`Y1pN?5D+Lz~QJD=ZKR%<=#sC)(ZFkWI5)*lB*^b@Z$o0q~8_ zhA8rx=WM0Neicoja1OEM+i%x>XY0}~YSTlC{E&i;9$_6P+J`Mxuu4eLU7HvG50mc9 z?xJKbB`auF>09^c+52^2ktPY6tlld$$YGZbcDXnF@5N0w_@(9g(i^l`K!%q)NZZz2 z-Zi?_d!ZrmenJZN8d>}|B!|TuP;(%l(4~Jv>5$sJ$v%T-q^L7mKX{DRGEbia@Yq63 z_dW7NU>2@Y7(l$-k?1U;MIa~IGa3F|?B#>zd$O!B0kRu(4q zCwc7-dD@M!yoBlpu~EtjTiGA~7j(_lx>}oOU4=dS5rrz=W((HadSUI1Nq`wcx#qjR zroAQIw-0dk7k}A&_xF zCiD2}!-p!gw6@>#5M3F^kc5D$aD&o0W9l~7F#<3!-f-13#hfBD#}kBBv|G-4{2}J4 zIi76aP?-TpAcE5rO`KznIkr12cV-Q2x9@hBIp%nZ!WcXiX}{YN*_5Ht8p%s98d6ox z%J8sFgsQ;VQ@GkQz_hiMh}x~kOvAv+S$NAA?p7JWzI0j2?8Jj z9x&hpN&rJMI#G;Gu1c_A+1Na(2BMwuR77yo9pQu-m7|L{3y`N~L4XA!c&1jM$QH4* zsmrAcuNejrQnJRx?vfcu0$smVg=S=n#6T8O1;Ei63S=NN^NDs-B%y_qo{|ydtV*M? z;hmWgv0jo)T9T3#Dpbv|h@HlcT24dG<5sh**MuRdD2hS|flH4F5P>a;Zx zDXBT(_B)7{g=wLXys>!RCIcXd2f)Z?v#A6_3ZxZI$^{2jRfkS+h4R#PD+^OQ?X=k- zbAn3h8h}-hW)GdqzSY**1Y)r^qVtR*n5ODz35LY7fb3MYfK*+G)<|SHXiZQ|Y>Cil zCQZQ5%FY!KRBfABL)1#AvMpVutV<0{4VkdM1w|T`kzW3Qx4x z1JLMU8vx!%GaFMFut}h(^1*2>i8~TpBU}6|nABm+ozPQEqkN)TRnI1rpa%#kbflps zIR%VORWSz8s!eL_23t;Zu(YwZ>6r*#y9AwgBub zI!;VvS(w0u%_jQjKm;~0771v?C=kg|8oS7ECFypC@|6LEM#H;TqGjvstL+nG&wPjCXEIYME#+| z@}BqK{9`|O)0LMVc;lPjzW1zMH(qlIfIIFy_}jnx?w|X~AAIHju|Q70Wfxh)fcam3 z@`tQ3cOE?S%WwX@y}JhMmpXL+k%QklcGj-JIcM+Qy>t2a+W6qN?rYn4!Fgvd4*OsI z#=#5EJKGw2=>8)BoU;e-xmUzqdhvllZyN>BnE5%^UcR(A{Nf#Vi}26<_*Iu*dcmW- z=7D|tuD|9Pqj9}X3u5NmzVfvh(Y%}h03ZNKL_t&=uX*}+KmXb+Qg}CNL#ygfC(s!Z zyi*4Bj2gv=A|_M@Ap?+8MP7WFZ>d(^ESkgMHEr=Sp@p)3PqFso2W# zeI~{$Nk=ApE?3VP_5U~JflaqpYyaNlZ>GVk$K`7j*2LR;qu=5DtvLA6T>OAB{WfV~ zGg`rLH^1n+Aq))~A0#mUFwmxsBM@U&XEwh^)!Wmq^OTiYPu7JY@H%mLYg2lt;5Xhd z`QXjw>Z{%B|5v@>>Co^X(QqQb$4{1{w{yNP4u5=7yz+$Ol$^NBle-)MY~sTQut2V>K*=LJNZj7`z8y&nD8By`^)0$zu`eol-m5#qWM6%_EyqW9{#Jk z`cWId&>Q`Gig%>pPmHS{10>o@fy-v{g)zFT;I6`SVtM9QnFZWc*O~4A0J7*Kpvs)_ zVgL|@1g-pIb^ULjJ5VqHM>6hD{+*qCSjubb!OulLm!v7{KlSYgS$BB+g-}*C7CD>q z388=dS8?pv%3CBHY-n*&?!C`k_Zk1jU)AL$)DLna8R#wYcisdg$}xwW)rjx7I%o3U zlRT1rWNlJ!B#Gutz4`HPl!rjf@Cp#xq{ZnEQ0pKz7#)spdu#ry_tXBf{4f2QUVj7a z+=uVpk4z9jOs8uHkOUdXf+%WFqV+!pcxr~1=9mM(v#z-KRWE(U-+lU1w}1V{yY8_! z-+b^nFL>5>KmS=zbh(~tV5Y(w?>Hr09fc4@p)^|)BTyS<+&0Sv4~L~?9@nwWndTvw zZvzD|C|$p_De6kyW)T7lbY&cxzzc<2?7Je;sMUfosEnBhtfqV+J z_{5NqVHH3E!x;pJlej(xVCkF;GJp&rC__~gqGq-*da@@5vk*WAf+;n^Oa*4vOQH_Q z@F(OcoHvLvBC{SI{d7mQ>5dlwa2+|uGO}<634{d%u%DVTDOlmM7|i$?+?AGKSSGoI znV=&QZ8CizfC&V!LS-rrp(aZ-&Oj6fQR}=L>1FeOH5*XBT zwK^RUas$Vx3`U5=Bnf7tD@HgY3dw1c#1R|G;7&q-5eM|gWx&&3kd)O-dk85=8AMb14imwx_Z7;9K*CVv zEDnaXQ!%pB)01%QSYuPyEkZU%gjfNPkD4(^H2`Am_Qq4=VL|FFYi%XD2sScX5Z6wl zf*@)7Sh^V%!(?!VVI@;`ye&e(selLvATV%9JG= z8<~w1BX06RCo7<}_no5ui*cnJ4>5@Ai_3a?fN( z;3jdABoY87z?W(qGI(v`_s=RO!$F8JN)9!&r(gp%6jRT%9c6pm3>UFBZSIa1VxVAw zAtBAAK*JUUvWX-C5OoR>=Mo%P0y&|s@r|(ps7ebU6AM|yDc2;c0-}@^l7z%$lfeuT zB!V(3P6PxtRY7(vDT*Xj!#bt;N!P&(6U8V1i>x43r||@r1)B0>VnoR^6&DbxiDHcH zR2(coq-?WFrZz(m)G|dPu+QRRR%_!%XJb}2iqt?efKq0Iuv(}oZJs0zz-BKaQBi=} zZ0rO8(@fIL!vw*Q#x?AM0MN`)O&)oqNGHplSu$_}-0_Wr%Zr1{p0RsDlMx%G!$`J%nMcXZb|bl>4Wde8rK z&Rul=zOQ`!;H$p(JMX>!=&iTi@s&Hixqt7jpZ@3H_qIR!@2~x#n=U->ocDg>m?$( z`278!y!DHp`plQFyW%@u^8+t-u*04yfB@K;j)R#|T2D?a04-n)F@p+TPiz4@o2Z;J zk%2TzbhCkObD{;vP~k8j$ASP9K%C7P1Q5jXoBt=`=Myg%Ykx?+^A&?)^)0AFTjXl( zZ9KS`i%T?F1LVoaile`(rW$|X{^md2t4Yz^hF^K(&Odv%m|KeR|0_L{|NN`*&kj+4 zXZ*AGP1?`&erutad{JT#wsfoS=$l=6=WG1Ezt5wO5o#ZPtv%~1vvhuO_nWl2HG^p7 zZKii)#g{JhOFv`p5>aM2xG=lTjtrMOF4@CKG=LT;3qYrG@9VBBUCp0XAMl2E^osZ( z8F`{%;npj8no&W=-}$b|+usRe^4IR*{pT+H;=i`luu=Gv3f}^hkN9KnFr!ZZ*{8SU z12=ec&PhFoJP-&*^6Fo_zx}W8hU(<&cT|`Dr`|9BSh4oDm;-QUS$v=^s66_cWQMXv z#lT@~kvEl%B_C6ECD6%6%`&Gg6w@JXjXL?Qs0 zC3es9dZNX~1Aao{dhR8F9{JTj_Q&5YX@^aJS=s}<`{(WG@BP|4Cg2|3+2pd2oU9@r zH|Y>lW$o?9e>c>BeVocl#}g`i_|g~s`R5K_{|j08q3VRl5dv9nEkMoypytA z)(yV#4L|&?g&W=-jCDXZAT|U(-A-PV@CCdz*7BJh3Qn0=Jw^9n&oKvpLBG28nU{U^ z)BpHaAO2L+L>E5yQ$O(^7Y3&k6rSTzfe1uo?MxpN)R_TI{|dH@QOxaXyD)SM)*qjQ z5awK&2Zch6F~iE27UQvwQ!6^<9udegQqIR}>9xghXsUt7ddttg_ElZ_hd+MnFZ}X*s>Rh;-t_DzwuIXahOpqrk876AbgAxmzj^AhWU$SN zGFg!o^Eu=kb3CP>sB^+LmxY~UjydLdw8(&RDV$Pg|FQlDgQVn6IP{_L(8J}{Y0}BZ zcFS`aOi(r_{?)NCDF62iv%YC*&dh&Uk+}6LGy1u4-nQyO!-%&Yq^DncX$>{VNyfrpW7RViiNlxY%Z7J@| z@5Zfbr4+@f%S@YoqNwOX=1^5lS(Q&XP-iDpHcwM1N>}=b*yB?RCUC(ZWzR9be`lJ|byKDniGwApj6RGfXSE`?|AvZF6b6+@0TO_Y6={0%T?~ zC*ra=1+v;LRj_{hy>cTp;8dHk35q7!^(>93dB`o-vr9~G*ifBeL1dLuDvav7=|reE z^)6Lt#0E=hOZ9Y@%^k-t1B{N1)XzaS3%N`)CBP~KkRX;50cfZ1m82B)M7I;#{I9h& z0FVLME+r4m#sLZ~NpcCDb~Y8G$q}MhS$_&C3x@>bK@8pGvOyUnA+b(}r;}=qNR&e^ zlbW>7^4wY{rbyri?N4#G+(a~2}}@t=P1wLkJb7oE5N z%Xi%Mk6-%6Z@lrRr$tfy#6Ns-G--eSCthX@|Chh`@OWHbe8GWBEt_)A80~%NW1;rSNcJL7BWfNJapaf2OEY%}Pbnr^hht;5` zk$C#;OPD@}k0AF4ZBW1{j0IV^aEga<^N|moh)0yz6GIP4+UEjiD@2Qo#UyBsw}R$?Bd12+3$YW zdnfI}%U=1?7vAvnr(`^Jn}C^jFP3$kSL$$r4`TPC3LzaktivV0dsrS_3oDaY+Ie%F zh&twBX%;K*9FC3R@kuHi)8>gI05BAd#4`G_1WtdhJ;y_XnGft;{Dc4W(=U4Yk@vj! z=4W4b_0>;5|Bk!v{q^7a>v;T=@BYI-+P!1>i7w;zLdx~gb^!nsG-=d3I73I*bjJ`O zQOepYXmz5463nzR)}=n001!$?$40t5Ko**`I;?2isJC#Ij;!gLO+FAT#F-fC5o zrz{f%kWW(T6Q!B_$uvb3Dgvh<)M;a)XaI_7gG-Pz^c2=h84v>y1O|WwD8@?X7I`LBh=l?|lr2w19K?VaouUo{K%+#n z#cu(zYl$+Z*?}PBWTQfz!WjUz6q}VDI4J;9f*8?+ne@K4AgJS<2?EqDyahX>AOROm z^f9su0cMkMiz=5@BxW!$rjmu(0+3Xxj;OQviNY;W&)QP6c%)|i^d_op6ZLen;){ZK zN@*a4V}j{uSY*)2DAA@^D4?+71q9j@6X>)|5^Nr6PZh%aiSI|j8io#|{16cq-!bBd-;#k{c!puQN zrUac0`VDJfO5m9LEJ>9ilv@iRC9AeujVCspE{F&~!t0AWDvB&*F*Iz5vqzh!703oD z>eRT3ItvLx3oIq5CTE}|!C(Lo)cWrIqC}#U1R%-Ia8^fvAc3>8)=H(qAekjjhl-%qpfpgi%G` zMwFl<1Y!`Yx3(L{1pQ*9gpSN&yP+_HAdIZ6WR!qP5)_)UvIUT|r^xJTM&ubSECW;+ zS!txGfVA82In9GsB~jf&@9L)L4|@QK$RpKG6sgpB%dN9qbO8FSrnAJ2Jbo@D1*VS z%PFkOS%IL$v#|VTE+%(RwId?sO)NGn< z&LSdf<9c0qxoP8h=j?gzbywVX_}E82{+Vyxd-$UB_W#fS@0QD-e$oCt%hTRZbaZ8{ zDxLRkaoFFzYw7T@dfG{-^%=_bm+FtH1w6FL>T{ZD;{Nv9$Q8sXT-xLH3bB6qe0G;f~c|X1zoktJRGG z_Mrb0<=XGVQ!1ZV%T-wy`^8OF^H+ckFW8%IA-U@T+P%E+BL~XvuzC0N6tyvc@x&=AY-nxs7?aR0b1?3w)RZIhlw)ufS04x5{%jk-|zsydC< z3auPoYYpR+)=SR2)zzp$JAb_?jOQ2LWS;(C<(qf&x#!Xi&l&X=(6kToX-}ksUiDlb zK40l1Rxh7~r)gAlb3a|@HO{hkyXh4_;y-hH{PG=q-ud{E*BvP?AM{@6np@!ywEnrR zeW58|Ql;C#!`5Hd@U>iASIFN$Q|n%|(w?{IE-UOOos9C}l@t4&x+?3|rH>D)(rTb) zl(tmbnLtRofU-aM_D8NmRF609w?FPQAqrBnW8jX}LFJS_Xpa#XfT)t1VQJf}rhIkf zK3d5!wdYUxC1Gt~%!>xqhs*jCfU&*37Nk-`>ezop@RybOE$6;GKk(&ciBM*+G3TBq z-}ht3gJ80?pYU{657{EiDhep?C|#XXdnyw4BSsPol3QNjhhLv%yKs*K0jw89ZHaL-AcVHh=pMG+cB)_^RVzS`ClJXDTEt zqf9Z6V|*MU$dxyRFXmjCIi9LGub4Fg91gKl=xt_BtO`EgKrDfJZz*5gG^<7AMWHp7HOLvOOVIpSiTJUq? z*JB6f;>t_UdE4*2`t@)4FK_M{qq-}e_&qoCm>O==+_W4 znxOp>0J7+gArvsI-agq!I z;N^M}WBU?iI&0OFKh)=#V~!^^auCN1pn&t+cnF$fj;AI>AcFZv(c=LN@LD^9&y-wN zB2q(wsiI7${+^HxwzP)=qO!%nLUr?ow6MNEjihrc+E@eaoO!lfFTq#m!05#A6bmS3Zkr|4@WHl`!07O8v)RF*9#KSS7!AWvBd{Xyf%mf=OIEmF$cfS;D z<&$MJ#F`nHiiKndrd*)zOt zmmx7w%MFn-MX<8VhOM(8(ws3J9)yw*V8w2T$`BElrGaK-NtQA2vkEjS357`jm|Ynm z$_k)2bQ z)$ZBatQ{pvl!;_hZ;_cz9<>5Stt~OTW=y?AGpnQSY>5CwST?h~h>5+ZC?trZ0@Z-SW9F z-~RP)jwa#5AO7ammtAt#!F#X0^3p^1KXBy8YL>ij_ws>#=fD4N{{BtB^iM{U=JQ{? z;|0&T>VJIX@BjAiZrdhA87}y_*F7WUe8-*ljYg{n_U>L7_Rik3b8+Ex0_LZ@GINZf z-z!!1$g$P`=MVqes{t`U53RIzx}_!U zman}*5>_aINmp4XLOX>R$dmr-)Lp7FN&cEddqFZ@{I#Nd7Rblqc}k9u0ahg8!Dz>S zDDus66^vn)dqRuZ_>xq2a4}=^{eI z@vc~0FSKCva427*?i?ovYjeH93Z$7-uXe>1lvbmArcsjizS1nu<|JnZg%tqg#Rb~D z#jJ4RPJhRlGjytbYKryY(d(A5$~ftzmz2Nvd-&ANdhum+^)rz>R`#j0Rx0Z9N3wYu zY2Etklm_H7R*z|0V{sQu1!1E{SVoC=sW7g7w*QUaEWY&jbm_I}^6OFSc=6ZE{w*0x zt-VU&)^@yg5dT_uxpmhI7RSTa_sVNY>xp}X<3VHoiQ4mx9;wZ96&`3G=a|s{&)&Po z+jdoDg5MbPvDVsqpXYrgxk*SuNJ3tOgd_yQGayM z4ut}qb=B%RxkdPSw5c&q(YM-Mxd2iW5~(-pzZrtS68O zDjgA6O;3&`5Q<&y?vsQ!=;$$prAPNL64Y3ltmwun6{Rj6#90^E*T12B--qa&bLd-M zgwV}9tT@3}P2pewWjLl&-DtYokKqh6oM~8?8(eew1^*%G1?T&#FF*gWzMO9WsA`O2 z3{HkrG%&``(PkrUo3b9g*8@wI)y<}~c7EWN=8MhE&_tQ36DY(o4{R|U(YQ&g_P{-S4o6@-M!BP3W0OH>D)tB?g*P%zqv(u0XQhE2)<;O+G5iV#s12pN`P z&Gy&3!pkgGy_;n)XAaKXLDpp^j;Fdl!wfTg1H*bgfCT^(v^B!wv5KTK%rL{LgfWK~V`8O<@v|L(9}@qX-bU#W;$#&pQfOjosdV70{pnf>Km;g3a5%p-9f? zbT8-7X3VFZJ6_+(Kp?;-7GdOh%PD0xj&PP37Rj>C!fK0HU&L*b?3XpDl*5~OjG&{e@p`4P3 z7}ja8Rio3-DG&j;-W91Kf^}#DfEJG#qq3N*QI+;kKL4D&rhs4JI|va=o^( zMbmnl0;2%p zfJzt@0Fp=oVPrLCC~RIBxu9B=G62K|>AF><--N;dq{tY@eift%5L7l1vAPKW6G~eT zfg_}d|(>NMu8iX*N90N-~3 zA$O8l4hGRL>Y9ZB$hjEJcRN=FQ03$$cN4Y(K}97PC<6nVY+JP+sk=M|3ND}Q_XL3|c zTUbMofywP0V^hHdb;F!CQdC1b2Azq?H!ZZ&_QL&c*iVDvptiJW%S3Fu?~gAe}QXMWwQR2+cd*)Ni zs{EZleDB3iIQz%{$#cH#hO754FaFBg-g)7<2VVKo=UZ#7u}{0|oG;zE?}-4~XgH{Dy7r2N`O%(*s%`6qz01#k=C$V^Jh0wK%rN}uV(MEiU%MQMXMmBUdu3af zKIu1q!{}-(pVyS%AyfjU_RmE}heZTb**Dd919>V`)(O!Nki;z4{yU+93oyFu>aemh z{)JzVPkzFle^6iZ1L^YbK@wb}xaKAx$B4*J?n=5~pXTJtgY};^x)SVVgg{y|-9OMT zQo1*kH`k-@R$Kb!ul?pbq2r>sr72%b{Z;KEj+-0aEp8IwK@8>XzfH0}=?XmQDnJp_ zgO-HHoG1$o8~>c{@~BY#%pK|9{{OnUVV?aQe)%h1u~u&Us>z3fgb z1ype}K2dexn)h?~5NMIBec4@9gm+VWo8ftjVYW{<>2uWl73sudxh-CR_$6xI58ZS= z=IWKSs}!Y2h>YA3xpw!oN%VBz$=3zx3G)+9=;vUpe5oA&hRJv4>gnWP3M>G*HJ78h z8UX8h+5En1J|OnIX80P;_qoX*GciC4>+l|x&56A!FTO%=^n~ucW&{~c?qBg845PC8 z&UdE&_%?OkzVv1M+~ z*GsO_i?8L&o(3qQBBUKt`iUTA>13_)qxZdfv^b+WWri6}1=^7AJ-ljY?c1LJyo)b5 z=dr$=GaX0P#vlFU-+%hEU)!@dc*>Pey5yqs&52G!*6>^jYi!*}%5wC(nFwf7(g{j$ z7KeVL&UMTx@=Z(KQ)ubTuyBTHeG(>3HgxQkg+K&i)=}xI(#(XwP7j9O|LCpXGoGa1 z|Brw1^k-c4-7kIS;z^fDME?Lrmxdw|9QMo1KW#*Zqt(V#PN5x}KHy&s9?W~k?(P&;I zsGaV(X@^S|6H+~tY{00BhM~;S@)*3QHy>rvYCzWA?_|S_FBrPvMj&MM6qhWm_l8Yi zVph+&;Lrdrl1Dz;V63ziY%*uI9vdDyS zkPKx}5yD1MxMmaWT6ba0+O{!9)j19*wj=VSb+T3i00m{`Hd_Fqo`{AlAgBjIAH*k` zv{ZPj#mIJkJp>)Ps6Z7$R%)~90_%p9pblOfQsgLH6oFC+z>ol{4w}@EjHA=#i3*6+ zWi=9F$^(}+lfsjzXG#Sk!R4Zn)&-9$t1Hl`b50rXZH~TS2$KR335-OH3`1csOrb0z zslrVFosw2hgaef9MjedAq>H4bnyG*X8L}3Zgal9q!A@PMQDRl%e{LkbTh zAc0cR7D1Vm0A==B-C8^#Rz@k6yihcjML}*TX!E?Q0hmt2K>Y^DiDG@kA6|EQmNr_3RRg>8`CWiS z1~U+86(EVkDn-X;1PacTNlJva@sz+S%vumt;Iv7aV9^q+>B{mwd+SDPX$%2@Noy*S zaU{wxEQUmsTJ>Wp*bl%Kiv4kHNSIVPDP>Y^lu954FsUUWQo{u^be~scWdaj*h1!gE zWoTF^5md8L?Iv$K(rREQ!BXzYLC|H__{`X9+T6OpRkaLr{;zxHw> zdeO75d(pGEMPF{d@#+V^lL6d#&80V9bLm#G<~bLg^Bv#vbWGn3hweH2z7Kx<`l~KJ zcwh;@&;GCf7{HlDkpTc0!#6(lvMVlq!iPWhnLm5~NB;7IpHiNjBvFQlo_PL&?%#96 z>f2xNbO2Ak?urL}>``a<6m-J5(T6`ZbxSQ%O@5umzo$G`rY|PGFcvpVnYB9QM$nY_ zdYqItb$kX00*s^dp7*qG`ei_qbDpey!=-Q)8rg9+0r~|}S^u`(cxyBVEPdF5GIT&N z%0b#9em?n2)Sg|9-@@Y$MV!c}I?8A6>p{0!2$t2D z^rknrzw_JVeg4G9{r&^~rh9z-CvB#p{U~@K7?vBq9P_%}7?+Fl(LJSD|5utf3nb!E zV_sUV{WNk;P@mQ@KVNLV*))F}G?np-*cbd(&bB43;Qvc-ET)ErL{&05-0QMBI zb53X@r@J3q6+&j|w;ZPj27q1vMK}4Qgn^A;(!nL*XHu_7PO5P2-xQm_mD4?*|Ay1y zC=Y1(WVanMO4+Cl?ZAJy^_R8osf0Woy+?Uf0MOFV=RVi|AOBmv>kve+x#_OFf)1R& zQ%m#A3um1{UP}+giCml^7?F4VNqEa!biApPS{J8vD2kBuC(s2%M{VxE*;CO|6j{}@pai5(q03B^TFvAQpJf1K_G1xALo?(U=P792| z8J6;STtZcI8=-Q+`NbkOS|(FSWnv_^)>Hw-B2TOaBml`mifImqfs%CI1#dEd7Cg<& zi0wWdpzz+eSq+@6$+A_)nE+)fsP#4h2+4Y&vC%Vr*kfB1}99)rZg#nvT4=pdBfEa$IZ=R9IT~Ou^{9&Gm#c9LXZRw z@CXwWO)>*cm8~^v3{I5_Kov1zdeaJl0}3A;1H{OT=~gxLTJfB~(kUUJ?f$AJmp*2) z6g?vjsIf+3Hkk~N026_!oQwcg`||;Px-0`BLA%hn?@P=P0f#v6TENy~gtW4WjDnDo zEsAzZY=B1`*rqfJU^93_G$9wfCD8#|0l2LK*@25h8XODLf(rm(V1{`x%y!AbGUm9V zxIAj>azBRTmOx7mM3~nNacA#YSr{0~OL@dM?fJ5^_W;yNF{;wiAcSnNFkDz@&MG$m z2&l5@iF?MIQiQt9x!610n9mcROduZl_MB>+fuN&-%lpdpdSYe7RoNWee?K#8SuQWP zi)T;9HF!a@8SQgxtMz2HFbfOqg=bG_ID{cAn#HBbS@V-Rxv)N%2rv4H3I%nR(|*5h zNEEcu`ne*`nI?iZBMt19!Vs8cXtN=$b$;OLi{}o*U{cu4R4v+ZlelGSyc=;nZ`%l} z;g)?IaT5`3YDADY=jSHQv`qF$m}_B|${LCoh&a#N)Vds$W7isIKBs$^ ztH~3GMAx~JF(#s)HQnD=b~Nt@o9G#bK`B}zwz_xUwQ-e`F2V4a** ztq)kGLc#gM;Snb(W_R9bXXcO0c7$?pc^zx^Dx;JP|Y89ydO#*yzIoPDi%2r0R9xCdFtKq_AdK)E6I^Wb%Z% zD3umna&q9nYM{X+l&*pw`fA=WqBZ4+SF9VOa`(}~vR^-|*bpFzwwVf+flC|*xsc_e z9u?7)Oh%tLe87m@mFL}{UY@IY0084rp(N)H)_{~@$k3u|hJ_G;NzPwd84MM6P;k5-j@7@D)@*Y{QHn{7p@nD_0dXh4dQJu)0zSR9!v>jq_=OCawnS^!MC zcTk@#MdLIytXc zu~5Jk9M7rN>WbS+SKMNxsr!{N%uGba7<$Ap%kJ|JC28J@{N6j?x4gLUk{3N==kYU* zB?BOf{K30!`-wOHyTAG9XP$QTCBN{~-+$}(y;x31&?K5;9sC{!3S{iQ9gB2J2;Q>G zgUW=2S*k26BCEO`=02ubzD_G`|4Hxsnl=qNFY6om&^-vv^nBY6XImfU^aX%3=1fM0 zNU~OA1LjmBuW`JO(;DYP!B|dnl^VcNblXc9wQi&#g5t2CEBRWjTM($==p?FtI6=!B$B^^_`U!yZ= zj^f=$SFIi~Sqyuo<}nefX249%sCE~IaYDiA<63K-97s=da!o-Bc5=5$pyVK{M#ns5 zU!(K6lKUy%l~F1rL_=fF9mJB4vgsba$RF!xRCYN*>NI z!we^b`yW{S=qDez?kP83a?yEb;6nP$!Rq?t*MH}>_k7@QZ+-O(fA(MeyAm9#ZnZ62c(x&w$8bix-g|{c}Tlb9!g)m{h^3}j> zwt0Qripo~YY=J-^H!AGhz?8+wvSc1uS-bsXpFMJ9tg5T)8@fv`ug5DkHrhA*%v-+v z)#f$d_uTp7$nXBaJ6F~=AM1-c6JgmkQYe&ChG95MApxK^A}dlx$`CpBV0_TQc+9~B zdC0DhvIfE99h9nb+h%IGf zu*qer)Jmv00#G%iLeQqAG(t|MK(-^K0$aOrOBpJfwV-TB0hENn03d;i5hbAYa|*P| zu*80zs)6x&L2EPIgo2Y)8XOcv>Y&0EH$s$@BzFnyzVp$gG?bv0r}3Aa;d{w2Ia|s( zNoLA~fe|KH(+QJ6nRVK0Yygn51B3w#^eE>kVav)S0929`#<*lyl(PVKJE^3A7z3V~ z$XJsLlauVM5Qabsmck?e8SF_lDWH@>$!%#9Sk>C@%0xNFl7sM|o=^F(g|lX%i$TRS;5_ie&{QILEm(DJQ6fA3$so)~yof ztye-ej9^Kj);O|O=8E7c0Z`4(3R?v$5mh-k&RbJ87Y&(=R&1e5m>5-~qC1ju1bAda z!fc5+3)xY~DVdn;)`td_Nn%JEq6S%9E^XrJC?yro8Bh>=2LKcpYBiqP#Y@Tjs+ZmJ zkG}WCOAB+S@Mm@dlI4z1f8kS~`|{ex*1Tai~_zylh z5W(_vKSZ3>0NMF!C&?u;gH^nMB%2d4gNZDF!THun)43I+L~FKFP?XkF74^f z_@-8i3I`ZM0<<3fkH*fGa){irVON+{@fTFoSiU>EtCG7em?wwo1s)U2Uz5SJg1Kt9 z+vE7)$IioC;q>b%o-n`^6P%W>{$Av)o15;28}0LMO65z)oMZVb*3GJIB%zXl%H=E;Gt%GFJ5RxN)`2G0n5X>iw*A3*Pp z#j}IC^7P&R6d4ehQxtK1C^M|n4FVW8f(3eN=^6cMkdOf6xmO!IXUq{To)X=YWcqk2 zEMTO(UIx!7^e}5kd;Vo!_#qCUS=ipHvkW<1*F?`~54f^`C+hdJKJ1Z%iW+sKX{w6+no~*9}7=7orgO%cLPH}W5 zi|x-a!#5Phb@M0h{`iqKz2T>l$U;fqm zKlrheKj-5ZKlzKl{-HmA`~UER&-$5v@v2*1@Z3NCv#-A8x8EfvK_Y&CL<^?` z#6)$gg93n-o|@3v^w6Z$%F~g}?St5Hu=3ROG3x2T4Xr%YTL;5~55k(!W_a-RJPvT? zt_Bszr^O<4h8bo!otUO4XP9Az8NPv$vwZZ^U;68h+#xw%b=gHXU3Ym|_&<5~2S4-q zubzAM{#$N-s_|vF;W};@ug&JcOR#Msi4rLYnt<}*s&pBWU=^_O*qyD$ZlOn6UCJsd z1`MQ~`uH@hbuPnvUUI4TYcT8 z1$CJ&2WpSKcH4gx56ZD^wG$KAY&$`8LC$!*Pxklo;J(O!oqlesD%Jur?H)_WL|GU> zN)}F%+iE@rSksPX-w~YdViH@|&spi{jtpe;QK?NOBOoAeJ2Y8=PFuzy*U5=>fD)8} z7(`UF9#vP|-9t$c02vj>Nf-c{zNdq@F53{5MF~IvHR1qJLP{(k&Mg2(y@d^0#MY^j zG*uTmAoS*90E|rnO8_xQB`4AH=vF>j6Wtv9N7u2+IXe&#%PR_bD@?>D3Y| zI{+xYevqv{t#UtH!QKJtDdg=LDks2!6qF=w`700-+_9HcFk;w}3pB@TgRNU^w6M~S zY|da2jsv^pueOCY+sGp~m$A_veFB6=bmxIOLlm`Q*x%Rjnv4L-(d&-Kky!~6#r6Cg zd(?+hcKwW}vZGBjx9~wy5HHCi0ce%EGh~spMW6!^tw9S?ve_~;WTPOPaz{B(KsXV( zCcDn7u6tl|(#+O%cJi{F5)EQ#I(C`iJ!AV;Q#T1_;gn6+`Z0D47qF_89efs0n=C*e z6|gEb>H#P;2t{E@s)8n)t+5w{V_RA=Fr8PFRbXp4w7HvNDXW`4I8dcrI|V?jJ2H39 z#8zx!WyI+)5X5ZvYxk6a6{M#((Z7H1(rNv@6NUHg^{;!)KfU#pw}13AfBu2n|DRue z+e^On=GVOZmQ(-BghKJ?99GmI(rzbh2_Op?w3A*9dR)9J?t8M4mBw8!v_#XDK*wC| zM-nk<1QcYt7l4xM$S%j6-#z8Z!5_a{Z~F_n{3&wvl~hM$12Aa-83mCBB}-r+1bgku zzV~?jLd#cL-0S4d+FVoSPXGw~#Kh+SIv)L)RL?Qk+%z{&y&zA+Uih)1QW(+zkdmRJ zS8xgdj*y_Lu(Xln`(HEneBDd&A;0e7sqt2!j1>8&E>Nh?bzN76m9tu^_N+_uQt~z9MGI* z{(uD%vOsqI5kO1fM9Mfji<;dZd&xl(I=b+wfWnbRA^_B-@y6~Yao>eDABx2@N?W20 zqzdZCUZQh1=Kn80`o2s{kuQz*nt0%;j7G^C?JJUNdYYKIhj|#aEmCpzPyNgI+-J*Z z0XN(LS7PUG%OEN8nUq+3v~%=n#v`AV`c6lyWHnj$?B}@O_|0_3C;7m^@SK~mvCEAv zI5Cx`8D^N_SU79H^_Ht|dCuimUh)Jxlao0bs)#AY7>9!jz7!u|yi=tRt zYg8Y%HcSd7XjztvC1S>U6Jtzttk_<+DIj0C#fo;(>*u2L_WkRh{3ow{{V)C0&;G?l z7w+Gxw4C7>q?CX2_x}7%Z@&GO7k=0GzWn*~a|T>|NcYo@jw5^B1@xd5|3Out?kkL=1M?HwU!Ej?}2x;Uh9ql-hR(zw;i!>}$5 zX>Ibz4vw}DPFk(p(FZ}31~Jj&v;h0eCCc#eqN_8^FvB-G6d2>!jOYwA%y62pWiUCz z$svoZtWC~4`+zn4j(7dlMNc^Uv!DO!TYvXmKla0~`1q&4@E3pik#Bv$Gnh#qA|}`= zd2I12x&=>{6I7+1SYVie2$-ZhsV!X~&#+n{QV9BtZ}N zPA|#P{ec-ELL$IKBo7e8z@+|+or6O{CpgH;Mmoh8quUEw0|->00pvQK&kha}`jS%; zFd!D7JiT&c#kPJ)*EhY8j@^;ul}<-S&CYuEqmdI-!O8OUOls(ueld`(-36mgnZ_;H zB@lA3P#BTeFm<^Q?H9!yBZxpIcVoaR2$_9%VKkKyk}L*b2uCq>Hi2l+6HdI3buLwj zNxKf2=Cnx-Ih&a@1;LO+r%WX`Z9sG%dc*2_Pu3f|49> zQO^dF;W%qjArdA4rA-O&3Mf>MlJ!?ov9Z5o)2S{^|HPs!0P1WtH##hKtTi-sTb}9D zNCa5!?#kL!CvOQma`os2Yo~Hypae*h;YqC(K!qTb%hE*vFeKim#*{KvF;R;OEvQgN zqS!yNvZ|Pa6qLHF;;gofFaU*YfWC!`>CB+Sq(&2B2^GZX_G3e(5&*3r^w+8#r65ul zG9XGs0D=vO;Bv zsRNTzH^p^rU`Ul>W)Nkfay^o4JrU|inE?WYHc6nW1OOK5q;8Di902WjK$;0mAi|L9 z=qM*38$?Oe{hW4_l_p3c&II%XG7w-?i7_S5Y;*g1ZdoM}F>h^}DGNY^tOR8v%9&WD zV~+qJSR)-%#4yNoVm}~_HX$(shLn>NPv~mo6^T%q2!oVZRTRWb1QDpDu1$7yBKHBk zENELHC|E&odeqy7EhzR(KtD*CDKSZFwPbK^VM~)XW0?aCIA^V>1z^Y;A<8h0iIpqO z!reUJys$Ea5CsFpDmqFh8GyQ%8uvpI03ab+lXGirY1I+7WOC|8D<~)>N5*wyecI+* zjhKPdy*{jDcRH~cil10I10pO zT#oIh*HRF)!m?U6|AoS*tHEl`-wthy$vbTPgm)j<9R8@F z^z|S4_BM6rp?XC$7n}B@H2J+`4%opfqJ5HbRr50e01C7q)0!*0S1uu(ewB^RAB=ad zRCWo$=!q5SpOQ&bA8IYUDPr3dkK5|Dz^Q?!} zT}|<0LVF3V+Owdr=Ik=O2~?0-Oj?BM#jSnnR2oVj_F*J&+qNhQy!2(rpf=-}ngoF* zBt|-u5?-gaLrxCyklI(U=jtb4aPs>fZ_Q#!V{j9*99xAz1dLZ>9AI&14lE8H zSZ}jD4t;?X%7nS17*yQGw6Ynsi)=+yDL(|K|BO zU$=`Ve>~v}U%T(ufBPfPx@PTXU;oof3kv|Qc+&Z=eckKspZw?l@?Ssvs_%UMS^M@r z*4KCjVPGnf`|^CLOdT0smqzr!x-QS7iPQuw9IT;@8lpN^A!ZskCw?%bEj_>W`BGIM ze*u~^mnf3~nOTI+FvH^x1nj{~fN_Qy9wUfA84S%4l1l z1!6V|5>*8ihy*oBjw8QP07?voAV_Cpgb=(leW*8PHY@~WOENW50bsULO%9aBY-wCX zY<*_Om1i{5(5F2r2ujBtYrW9QwqMdTvkI`l2&P$Sh08l?{ElkOtSOLK$~J}_iZmGz z2;g1czP-U!+z~itsD&h$tvphf2qx4!EE~ESbRo()@%EQ35T?*{U#wA8k;q+{{07<5b6+lx49Y?P zT01m~kX$4ay-m)*X{Xf@lLazKHd7+N)Y(V~Ib{~5a%ibh#{q!QhK6xxttD+=)#M}_ zqP}+t#z2@Nv35im+a2zjo+UHb=<#CXDZmzOoeJaFX6YCh9dV?UjuAuvQ2-RK04Zoo z)uW|j>SlAYB3!sk?8~(l4mPPx3UmXwK#J&l_8ZJ5fq~Y_mEj?kGSEPejnCK#cpChC-^1Q?^S*wM2|Q5-LUq2L->j6%sMatjP&n=SeB$j11| zLp0bd3Zec%6HwBgiN@MueNkNifMhk4kEr>Dsw~ zDcEF?mbU+xDu^kw$q?ddYn&=)OiiF5KDwTUBF=#_SHAH~k`0+6N45ws4hc|7!F01$ z8{xz_LJgy2vIXF6+Gxw*r><%YHE2W2~K{g5n)^Ayl2%JgTE1QlpP5(WbvA)0K1 zF&QHpk1znEVl;Pa3d_=yDYs@6YXP{q2CY&ECJS}>V(&xn1JjDCE%MauGr@A|91y8Yu%e8R!YE;{%7UjBj$&)aiate0{x!uDvO zkW)q0=(&zvm|N*MDNZu^&T{ijsQ;48B2PYGG>aMX zK7Y@xnJcgF(Z)bRn%qH#C~k82VksgrDeI46(KidP9F2d?9{D+;VbOd@=3QI8L?P7I zt@a#XMatliJISn5(No9C(!0~X)K{1?eb68INzu$iPP{I@QFvk6yv(vzjo-|h?@;x_ z^i^5@_sLu|&3O|ks_|Rh=9{x*-@F$~Srx^`TSSf+%0phR-81a!&#_Jz4YbDahy0Nr zCRz6imiuJ>4Z{0&s6r4Rg!~w0y?N^Cx$E%ucwPSRI5kZnpyR9F?E(~*bz^Sr^{79u zoU3#sFZ^US2LUB%%gH{SWUw@4V{PA9!)MZa;YT{+q8q=N*4~`$s-@ z{kJ^lI%62X`3Lv^cQ3!;4L|kP-~Z#=o^;_kgX%;SsXz zcz87~&lO9SseVoZ+yjBdv85^|MJ$s zn{T}OZNGBvR}LLM<5pddH591!@8R)h)mt@0>l0lZ0)PlLK}RJu5p~eQp>T9$Q-{Ta z4sPhMd_)IVHg&kI9A4FNMwB_N;9jkCh8bpfyur@iZ8Oa9Siux4|3K!KK&6@gW;e&bnpEye&NlkS`>vUBnwT=T#hk^8Tu$) zX2b2|kPDuK|eXsE(z z>Qb}bhk88h&Za<@nsz}9Y{>};$RN|Jhy;d$bH6APDCSKI11$wd`jf}Pfj}(;NC}AB zk<2trnrq6~smiXH-jfGn0j+@uRN6c65VQdZ!GQzVDwxDW8k7o+fH&|(j%rLOy&luX z4v5_uw#pYBAn;xIQ_zX)SVe>fLYLi*N7rF`0<16zI~$;2kE~nPFr6dG(WwgVW57gc z0n?Vpth0B^vdvJF^3TQybdg@s>*ofBdK^_H~DttIn z3k5Le+X+!w1SNQvElqT4*P%Cxc0O*Cz3VIYx8z<7utCjd|n zG>9$G+fqdU7zmo9askF9W?@pzby%nn(2{Lw%LQw@Z*zi7g)3DFR)g#0a(a}oBwQyC zpg>}1nkbymq;>!~MOKo|x(YG7jWDpbAp>*o9=UKR_h{V56XVQ4Lv$hpi?3oIq3HLL z0|66l%?;8|1-?9x!TDu*^~rnTj{QliUJ70GM}_5y2NUy)6iH*Ipu!@UM80zj2}c2wJ@ zVovM(avQN&}Q?bm?&wLTZvt!o(XS3jmNo z32LmU$pvq278o{L&DI)9Z71T<({!3_Q^TkLLKdxC0iY8gK}pF}i~v9k=PjKUhB?2h zKWaQIe#2!VWpqDG33{(pFAfmHQ_~Fjuq?pn><<*#uIorDflsK_rgs%&{4{ z>F8lO=z&CVbnv4x2;)X3yLR)F~oZp1b~l0Z%YxH7X0Ol?H< zaT$(zv|y$iuDSH)>#w-@f^*Gj^{BRR>Cq-&%_&IPDth&zl#Zds(9s{W&<1iubxw3Z zTuL%2XEKF=3<>Kx5EYh=wtVA!7|@*eW4%$+5-nJ*RS{_)qgHj<47{uxJU}rc-Kj8w zWrqptVQ3;U*k;M}Mtl~hGDW2LPA~<9Y8Bi ztE3w{zREx*IZQy-1FZK_Iz%ueL3GK`hNgS1xzB5xum^O6^AVHpE%KpcpMX?zet>l> z*!SQoIz2c3P{^QD)a_@`JZK(*6TeGfS)p`)#!yvB)~Al7N{CkO6dh#Vi<}di0WHQ{ z5qr%D!lAdm?f1X<#rt1$%Tr(dUC%!6oc-OO=7!}>H$DAN z|Kejm|8M{3q6^Nw^rEu?5YaVPUGmHu55D)d+y18?dg-nZWdImM17>4r1BfweA0FAV zVIqaDY=+9)varmk8;Spoy>|_}?5fH{-!aCVbFH=a{w{S%Rc=KHk{cu>TtY(vfq+B= ziKJpwDJ>8GzaJ(EJk1bwW4&l?>+hxKl^)! z&X|1HcYVi|PrrCjpPUhYjAGyF^4^sJ^YOCm2lnqdW8dm2sSJ56L5q&>YRx+k!3=dk zn^0Hi61=0B!2|ap;AU&p@gtHQKQ4#k^t~lLw)S^{1r~UG;PEHo zx4;6ACFG2SAL=6jV`J{$n5g-zxU74iD_qMsOQ=Y zGp>w*a7;;R%OUcdNMlG`b*p^cJns@<;j49Ne^T=$u0*eE9-bE1rqp&MrJZQZ!(WF#iAg(qi+V^YMQ@9v%e0I@{ z=3{EdD9UhlTxOppH}prRIeC#Hl7XHNwIhS?KzaMbtnjJl_{>KK*|9b*0+_-Vup1JH zZO|mZ5+QHf*m+4yenKfgQO>-dH#Yff@~llsc}&44W<$Xf>|WFPT%BDy5^N|Dx-E4B zz$z+`O`RTbM8FD9!fGxl1L)Gy%)3nsr49gw=9>6m!5)J3 zggpa%C1-`eI*ohW&as*#Kci38a30a5))=hxJ-V5~F()57OeQD3n2{oE2d0SJcwHL5 zw~CfS5}rm^mUuoLL9pzwUMiOkPwrJ34ghfIC`16LD%WiglT;pn)W(y9Vj!4-V+V>8 zMrVFT_~@k!CBRi_Ixyv>&;lT0$G&8n7VnS<+r&n7sjvdro2Rro*b>Sqbq(gE12UC7 zty3Jv&R3Yi^}}MyIXM6}0A!Xf59n{4h-~1q>jquFdN>gIT%5sNt4m8Ab0x?*YILD8 zauv^)=h@&>nDwCu4Qe(xGy(@0tW0%&0~O|OVg= zK)9MFPE+A(=Hs>*0~q~kuhW5LhgE;LtpRw`P*QOKV;ueb!JRK*W_8GEy{>(raYUAx zqRe<~`!s_~h5bA+@`ZUGu7xA5IoE*W$`S#Hol~CVrZDYF;PNpCVZQ9*^Dp|EL#LJ{ z17tjc(9G^AP0Wao4?P_SMfqT=zE<3lca8J=nA<=_+zJ7Onl4;zy!yZ|mhik%UlX{c z`doxVB!#N8C7k1RD*kM$4|$%Vxj2PqD^;<&4&iH9*IIXZ3eN-i2koX)y9LgVMs6d9 zXP5c~-tH!;a`Ux?&e*zbLNOY}>iH~7%v~IOLzX8JvcVag0Y)x0*L8em;IURui}ed) zbG6my2TtbCO4W0syUglmir!|#Y z3JWZ-z-fbj{P<13@cK7==p(m(&$qtlN5B6SPdMk`R(6@0E`Q3CUiS4b_{2xw|E9P7 zj~Hj$y)*W$TyXJI@4kobyyx&qYzYz7o>vCG@$P|Z9f8bj64T~1I;NGO55e1Ryg8gI z7>tQlM`1W{F_!glOzFfd832RemItn?c4f19cy0XqZ+_n$cOCx0AN<~nzvkSXe@ZF+ z?jQfvr#|ry(=NZ^x32${-?;vkFW#m9f^}4h=z%Pm`SH`2!|-S!!$wtW1jI~PVFo6c zfe7d zvldw3@cW9ZNV5`-9c941i%(HuWphv<01mLMx+8_30Kh7z>>X1f zSc_nws?y?RLAZmbE4fo;3>9)Pe`K6%ycxcc^xmE$Y6=M09DVFrj= z|2=`29!C_dO7=QCshLfWOt1%V+r%Csgn`$ZX1{9^>MIkJ z(8V%N$*l34g@(Y9*=@NwSu1xCgD0JGh$Kj0Xd}ly;p2?KiL0O}qCmwNtHD$~jcLej z+;o9R+0cw5>y`$JIl^4@2fBP%Clh6|>@B-(cO)}S8CGdWHuTse40)Pnv!b>{+4?*^ z_3Rx@D9JYyV(sOE05F?~RY(~Gt}y2^QE_Qb62e+*gSjo;w1tXyT@fx)bsSpuIif=8 zXAoJDe!Z9`a3z7!!N`iJB?+SIt;B%J3ed;!5`bOi-|=Obnofig3G0Us!Zkpxr<)F8b@TmesY>Kv$TZK^Xe&&>8N!4xEDT!I1- za3EHY;b^M&EABuhPV6`Xf?-H=$*5UVHD;K(K}0629i&+Qzzm0!zy|3gR|7b7#&esf z`JzI_ERq9&L5WmI;^Nii(FP}w9cOs=&@iB1Yfml+1O*r(u!qtgF2+mK;dg0xvZ2Xx zj?bSla+%MQ@_7))=1Q}gtQVD;oyY;HK7Vud^&x#s-TusbB;ICn(8&Ax=IjrFDpzhU za$a&z1+)v-ls)@={-@SoZSK$mU62UW{~Ag!mKPq-%#(l<^a4K$>E4|A(0JwN2KC#M zToA)^jH+Wu3FN!xwZ&gdWs<@bMs?3NCa8f48vS$9-ZzwTOY)Z#IiEox94o+F1UNq55EGmdErowT2!I5uJws0|f2E)hGGPkI>R-7m`1_ z=ejh5f_OaoF$pgqLh_eu?_>!Na93SxtHUARF~zx-k0_rhgMXgz#boQoHCa^NOJ$R> zuCxTC?4Pc@3gD!1We9ZI5i95co0HQB520#nGun1BFriGt%hR4iK|k5LOR~R`c9D(+ z075i3BeBzNNEcXOfyXiqopbQ$gi~$~o_W^Nupy$`?!5PwTkl?9-?-pOhc0^3x!?Jk zm)v;cCw})g->|we`0*cj4S*Em-S^(_LS9`t`AOU0NQRCQ#ZGfBJ3N@smo3Cp)=C*x zVP)VZz&NJI+`?!x0cP5_TnW?KBzG~XnLAM=+<8|KEe(ZvSMJfw{^3KP{Md)y{hDuh z?hCJa`f-1K|A%h;z5n`wYhL`UpZn<_`}hqv|JOfy%f~>Al{aB(lQn^|S`(;ER(oor2?O-y4^E?1^Mj+B*2XrfX|ts| zKm!eLh>0z*z~c)N9!oD+3oP(>gV{pX>5+kst!3YwO#b@aA6Z|^ zAOGjiz5D$i`^J}E^IfmLZeud}-9P^CO;f-8#m}vrS2dEk@z1eHg~8i_%zlR&X8Ca_ z5gGd8dj-hJ&cX)|w4gSLX0?hK+85&cR4`9kZ@)bW08*1uOpQDQNUB56GaIB>I2P`| zu3$&nvpxK*Q7A6YQ!omc2|N{JQcvh$U;_my=w?Y;<751b*rPnKZll*)0c~|bADvVM z$RLKI9w-zOh%qNh%u=Y*Hw6R{1+ht%WBRzK>PSG$GfK{^C%1-z8WSBj001BWNkl^!z11T7$PzAsO5KQvS&8MI++p!sn zXp(I{P()QN(oL;7mQO>_e#cHFAQ7NG7}P8Y;MsHn_AHu`2^1xw5F03zw&}30E;~*G z$ra2DKr(hzvNDyD!M%0Re0T|9W;2tV%;xpzMhQAD9a?zu5r)zsD-jcj%%Q(uWi}_4 z6>OA%1_W^+z^D|UI$>JJP!N$-#4($Z8UV){0qXmZ84y;$zydN*oDHJXM(s9lij<+w zK%R?f<`|Wk$s8#I+7Er2k$9MA`68K*Wk2z^pinl7#Q_K~1~{O%`cRM(flb<$<}=EY zT2!h%#hSW|At}%$)(Qwf3*IvueKm^eN^Rzf$ILTpYc=SU0KmgK&LH?QbTLMTSVM2MMyLxBJSz&o##K3isucjBoe7Efow!sTe7Vk?U9dX>i77vUqoSw88Fy zERcr=0SqZ8Rli{y<;$i`$-u6B(Rc4B+tk7Lw)HCziXVS8#18`I(@nYkWbi9#^qo_A zcF&b5K+N3a4@>vAmJitA+hhHb{;jIGiwz7=_Lo?16$AtM(yze)R!_%aPIM&r&`b2d`}FZ)Q6@ zXy3wmn99A=<`5{m^l?cat@zHgbUEOXyCl0O+f1KOD*d!ie@$hduU9(vjMGh!x&RD$ zxKGVj0;UsFj~@jPz;FqyyY!sHP?YzU`bGW!2x{93y zV5^eBOaA<5^Os7xuMA!o2j8i*9P6tSo^5ad2zgiKdxYVDsUjEh3zO;v7Fgiq;oLLN z`2O$s+F$(TU;q0LUv}BW=l|UYZ}_#}eftd`Su5)wy!2mv^Z)+S-+0xtF8z^z{oSAb z!kxeTEANh}eDlkm|K7j9;jM4`#A{#uqBHhA&{OgxK!lcAI;Qn0$_Yg3s3_LkxNKp0 zQGyOxeETx`&V`Z}bV+0GbwWlSAVsORvv;YGMfdM#|k$_-A>eyiY zRh@T9b5j5?yi+MXA%=;vXN3Vwg=T^q%E7^QCTI;*aYixA#DN$vP^Ovdje$#{t;GM9 zqD+~|g**_Hk97zTpuhl_IikYAT-L^BJ+##lBc<7C+1XY$LO{A*XKu$ZcaBAwrI`E3 za^6yu*~%~#GVhC!Wt!QTz`-&MaL{ARmuV|FO;%v0R^!+U?|khJuDH2|3Bf!fh>R*2 zyLt+;L{dnqVB!clv^fu}jwum{NSKvLO<@fwNiErPuOFcmXRGSYC}kI18RY0vKiawB ztU@Uh6J)LxWUz*l=TZun!b6FhRG}duYa~`^5SB=eE~D#nTLKGSnGJ@HUCEBD5CDPz zVq5+kj)+JIEQOfoIf*h0;{$+Y?;HXZQzYdC_M&Ze zQqh@+a^v!BimC=iON7d@N+`w8R~Q4>G6-2f2{jj|TaP2vl0gD;vjwVRfC8-ldI4xI zYhpk)W-d$y_5dnMV{SG(Ur}*hhvSaaGI@dpE?^L25F!&zx^*3jba1`OQDZ`Rd7w7# zbI&wykD(@U+7|{B%&`WZ@!*I}IHDx=L5fw>C&i^hRdI|e0BWP6 zRZte{ErQIf$~GF5qTD545=PRc!T=~Z@3MozEW-ksN9xxgg?Uj?GpjQ(!Gw!386?x6$_Y1Le8Yk_-kzNV*bcZdkNM_8W>bRFb(Df?+rZL;|32OjdCg(g-nv zYoc{zwRbeTI?PffORhx(krH8RvVq{8d1%i{axT}Ld#d1kh))huQnxz}^t*~re&*KK z|6jj9owm-)U{L2=RJEPPr(XQTU;Ot!u>031w1kIOJZ6GKCp&3tu-+rGn}7%pQU59V z^MkctcIgJw-EH0eKTsYKvH^qkZSKCGI2xB% z!_;R^D?bJD*7F9Tn8nt&e*KM*@Z~fr2ta#^^9zp-m4eV$9+%nwj)%_s&;hi(@uNI` zFUgSCKc~Fkr;qrJH?a)4yvwLg*0{AdOri~CW7(gzUVk4U^>jdk_vLewFa5~ga6f>0 z@I_tyh0N!iRzw*GWE9<z$n?qAJ;i-O|ayRDUB-?PYo3oICk3!i>%OxaX}cTYO^j9>V7 z-*(gIUVPxpJr8p31s2%GxRm>jO!BD0Gy<^Y0j*B~(E1n#Gy#>P^$7^JZ;9^Tpfp7j zV0e&&(-R!roZ9M$j%?bfp`)AqL9~(dG}?2WM4Y}v8Qxi_yTAeqJnqntugop#Ll;=! zl%n4zEbvvsIl1`BhmK3L?O9p6>dH&ajEIUtbYo>ng^-0I7`RwkX-96F+#WZ90);^! zflw-GPLv@V_$;KYIs!5fGqG6kCS(!5m(wrCW|WN?7LW;Ags4DJKq$nO6z68KTSD=i zgq3mz#1p(|e|;zBSOFB_3T3Yw2Um&{pj7iXyubuW0pnmod;N4I-KP36xdBf-R4QlV(QlSZ0bFImruDGVwAjFD9-gL=7CBb$>_W?%rw22mxb zIH%djSQ%yHV(-`qNbjbc;VY!AuhZ-V{nd%`oXb;?;eo_3Knpy;f&!$@JSB0I#k8mp z89-jpWfYi$Rb;{U88Y)IeQrO9j$F!wA`-I*iu4XdpgN>RvaT>{+8ZY;gE6sUfJ9}u zr;gols&&$^G8_{b2Iv@j>ggB4US!-~hG&nCo*9nPdWA|tN-pr44iqC}IZ$tU(o#cQ zTJh6tl4_`@{eI)VdI;x;d`)?;+jOp^JQ}!iMm2V-;A&9f!Ft0}nK-9x7cSp@&*8IB zQR`)C7;p7{>gjMbdXn6~ufD@PXfO7M@lwc}+;rKOA_K_^bjn#>BN_nWDw7530#Ra4 zM8RWFvH=QqKqJY>CdHfD!De%4R%&QQjmWMq`msTX(-;)U$%&PbO9sp29P5&gQzG>a zz`#$%0Y=_zUlaCI?#yOmy5W*kLuyyU^wyd-yHy80d+EO0Hfjt(%M_f-lIy0; zeQB_~+O1UMin0cXri1nRz^i7;hP`3z$xHw%HP3Q3lT_~?tR1K)!KpRa&*PO4*;Zsg zL!WAw0MJrss9W{Z+r{&URouRM)AK5gtP>2mYbt|746H=8&jLg^1_GN1XNUofOuWlk z#en^T>20g48qyIr+@qWOZIe5eeKLr#i4i~+P@yH4Tvh;ZsF48}F_Z_cb6gMvjt3Nn zt_6uvAkkGfZd^9NiJnz&4s+CLNXF-_ZhU$&T3$+J$oukm>YM>3$iU~N)Oxn!uy-`s zJ2+A=c^x!eaAyqHIw@EVb;#$B?(ZhWhF+a-hU)e-xJR&;&aT(?%TXA`C0B=hu-d2* z5fEA(as*%l88+$6c7vNqOnzfB8Vr*u5ouzdiyyeeKsFxuysz18G+7-u+P-?qLPqSo z(ZE-s+uKYzbDR#QI(X9P@NJvR+MtMAp>9vTDYcB-!IIBiX$8oj1g=C#q%K=c09&A_EJZrGHiY62K49M1LE?7R1dqf(RyA)dWFmV0f(RU=v*gnV|h z2FF&@K-&Y=#-#XM`H}C=SUS2c89*57xp_Url!c5DBnQcWCU7I|!LSjKk8adONtV1b zu^}~8TCOK!A9S?_;rwvenQfHSwKzDZI z3AWP-WYgWftA~#aFoaP~dbA^EEIlH<^WB<#r#hY!rTr)X^+>rP49Skj zZ@l?EwI1>|I+b=TkrnUzxcbayY^X6yX5?> zgQG$9@|Rrlf%m=r$Yy-=@BZ88U3sZ6zxe7a&OK}YpI!gA|M;;h&N{H?%FE9G{a^j* zKYzzROxpO2%MV?8@soq>y0eM*w7l%6olK@#^;o}kkO2n0XT4h>t=(j@ zwmxaw*fhtC>1$qo?Zp?o`Pbg~r&qu9=l_q_z2ci*@!~;UiPV=~_yhn3jK}R{Iwhjj z<&pQNZw7yXM+-x7VR*o8emXDL)>Jg=^+l< zsG+q99Mjq+Di09a4#4_K-6uXCrCZ-EoW74)0rVj&gcev}fyXpdxv&u1>84n_zygnF zXm1U3+DbA%mhfONg4F0$jualo7EbkQ#LsvPCt;%k1QbNHQfERmpKguaN72L>% zu|b7Y0Mn#ogrZ7N7q2dj&RD;!XW6vSJ;W03_K8HLFdF!q$pvsR*FVnm6zyCW+HLkJ2( zi301_UI4}9#OmWDMRYdHJBzE{2c1prdYx88Yg+jb&ciY^_i#)Fr~M)CQk`F62*_SN)v>WLv`q00=aEjcxp1TbPNABlQ+ZxBxTflE1c&UOT6o{1bAJzx*^9?6 zAh<_%-rWhU>g?tF5n-o~!&e>>3f#ciss;_OjzpUfU=Fe&e|C7W| z`tAdU0S#Xb1e1fQeu*z{flc%BRau^Na>yif+HI)`q$lUzb_K`&9MF6bR|7|Xb>+So zs1!a|-310Ym0X$1(=K_3EwI1>|8kH^`Nxlb>i_+nzjETvJLim*84#4tg@S+z!@A`M#@_`S3@r74iwtw%Q<>jUCc-3{iU-l_WKYJoqF_WK8 zQ<}xz=6iY&K&DvVh$;AC?FiJy5=%M#Y?ur{?PXMZgB{t7G3$v~GA8VZur%dz@_8+|ajc&Oo#uR`x6}9mzIyl%qNYe;a8#T1qLKt0wFp93MwF{!mDFx5eN*7pQ zfyXC~avDoohChw>@(V2RxPu5}p(%WdU?c!KvLxoGFo4+VE={8IRo4)qI3#!%36kS> z9b1qhWQjz93Sdyh>LeRra2?1%U1D#k6xIR&Rkii){sjt?mWR8wo!4)Y3@IFO#06Ggj51?c? z1wMwWBQPNJ6StDAq!qU?6smxhi*TvUWPsi`H_q#wB!O*y z;eNtKqwEL*Y|Q7c38(_Z`_@=`wyjK7upxSFKFeyP{-Ny3Fa|flir0~5mR0kL+!UIU&Szk?J=(+#_X))+<&kBc8 zRdqJ5S*+6R$HsPyX;RR_H=xj_I>bjO8l>tm#S>P4Yjk-pR*7q|+pE*7liB^POP z`B0-Q))k5B0YM8uork$>E*-CWn30PiPN4!&>CjjnHIX)KI^nT+0H{0YK=X{}kv4;Q z?1&^f>sfJa23%54nmC03CQzI(YS@6RBLk@gGo}@+-Bv4`aw^#=ggi_qzyKiYyOPmT zWqmxe0y4VnDwF^rqUlCx4@o}&BbR%=8UeAJx5}Yk8~4U3iNQ>bJiswQ%?y+5BTHl+ zQflYZ!3;t=?HnqgA)mTq`l`d&2c3sbWFB;L-i>#BO?b=NE}pGK@2RsGN>KJ(`5-!+-EO%-mvZS&>VJ^cs1 z{p)xC%5K}z@GA!I!ZvSq!UCv}Z2+pYvhDb|*$vWjd1~+ZKrN}|Tw8(`;&M$JvR(@9W&LZbTcPUvnS^g<0pEnFT{~{o7 z+~TUnki=(RdeGxp9lcJvh)SnLR_6y6V%cJOV*J&|oAyNimy@GG1QClRO7Gqu11 z3p_S))6HLc*ZV(M$>BeF>)%{{>3J`F?iI|l^*DI{KqX7(WU1-S*uz!WPR^eC#4{0% zDhlM+yA)@B@yEQcnqoYOYBH>RN-v{jm3BFf%){wh_D^4I2Q=T%r2$AAap;Zn^!ffBuhGUHQ~A z_wNDl$xq$#E5GsAH{Ej6Q_nxI#P4k)B$zCw4+IDb$G~wes*x&S{(?4Hlp$ z;q)cS=#CV}0t+ng_`_cIE5#|FRbemtiioo?Y}6tet(aD>7uOx=26=s9M)?EFk~`001BWNkl<8D(_OzM2$blmGPW-rT)VUY8B~R{-LzM{$O&*jM^Hb__0}&d ztD+$t^7dt*I~ogcv!xs~W#6*%v22#c^Vo>8lcQQThvkfx!)hMU{EKD)R&2`9Q5)BL zH6jO?2e<;POrod{5v{8-vH-x+PPPX?h7Pc4H_d)kHs|f5fzQ@upa!52g##x2UkTAG zkkJ;$#*6?!tOKA@)DnQUZ;Z~lHprf~lV|<34`ePI6sXbjY7E7Y0mKw?2b*UdIRXPD z4qdFtljEu|7va6bsTVb1iMx>V@}w;Y)|Y@CYfWN9>)m8;r_~}GF1tQRf{3cdfXs}5 zvQrXZqE(Kztg^qjp3`(BR{gWI#p?k8bp246f~^d=WkR*I?t2pQ76On^!5pH80q`+X zudYm}s;EFFSF?48*KAMeVi2-{%K)W7nvS`jT1wzqQ#rtxvUjdvd&lO6AaG-{VgQ-n z{tLl&GV9i3?O6AQwktko8Xa!=&}^iN(bi?x%hKBPF3gDv-QB4y7n%Urp*(5;k+C5T zciwv)bFYwOZi3u%j9Q_tt>oz8N=9q#gxgISET>Wgh^T=vQUn#p`52Bx4{t!z^wKj@ zAqBBW1{w@XbAR3dctThKd0+xEgq3c*=6U;xE3;&L?a(4{5`p@d)%R6zFwofgVP&*L z#n!MAS}Mi`;xnVbKs?x)5wI??K5{{>mEX9t^41_{?OnDDrv^<{j zIWSgc}r7=ANikOb!2Vxo_p?7O>5Kk*MINrPrc;Aue;{*zB2FDJMQ_lH@I{)|>v9AN-aloW1u?{@Xi; z!@*5Af8mNtp7g2D-+Iv(zI5f&E_~o*c(f2>dfx{>aqhu=RTTz}-@7`!``-Ii^;E>F z+#{g9&?ETHmxBQ)0;iv;H{XPGM{Zu!*53s359G>lxm)5#vZ}MrHa;3`9Eac9)~^JV zpyr+l5N%7s^~JNfb(g_C1F)Tc`f71%qgwgVkD?LGLV91A{5eyJgKzEpGbMi1PyRSy zGu1DhRxbrtUHviuKp_;s#p;@V&JZ#vB!5Nn&ma^a5p+i<5}`yszYH!61L&lX=6^YX z!-sGjdr0*B;gi}+N+{b(j1R9h5YfA;@ta-wY!1(yHm@~m9#TYv4IIj+s_`G2=15B} zZRX*#bm<#3)kqrM<>sE*GnBHsAiIkI5OPnsD7>ds*8xn&zHxn(IQ{0_V_@Id^-hi^1?Klzj2_a|?C{~x~P zJ?Ec$_7k6Q=7aHGj;w9G{lEX?+D3c%rB4_PPK`F?Lm>oSc7DobnpDfNuf7BlOk>Vj zn8G{i>gom}OD)y(AibO;Q_N~75mDie? z6PZriU;Ujwd&0Q~zWp1&wytKo@ukM^TdD89{njH#HxKSxz4;4w{LIh4<e-iFd(~y9vhfR?=E%U(z;Vnvs$kX!X=%~{pf=5dWj)yi zfZCTkm`-qTt8}dYM|y;>(B=PU@6F>aIjS?k@0=46nfKmz-%^{Zw3T)t2@3=gViUp! z2?UtcFg6UPZ9MIDdhBt#d&cwowV4^u&(m$%ZtQVmH$C>W$97|;X}o|9*nlO#AhQTC z5=bD>E|p4EuikcVW=6z0^GD`=@4l)MQb|>%GJfChr{$h^Z)RjfWMpKVFTOA9L;Dw# z>h}4WL9hG{jKBknOAkDJX#4!!&TT{QPxdzNQ#Vy6?M6U_d>8VQwy=eNyf8(n-7eww zJ@_BS>--kB@ZA9sd^gg5PfcVVwqsm2bLxqa$Ig+iMn5QO7$FHV#ATvQ^D)n=Y!&-9 zPs?oHXT;XMkXK|RoNNPAR7qG zrQ~F!aMSO-3{^+kZRbUuU6|xnThw*2@m+Ar;*9|CQI@=GZAR3R9U zwIwwGK=ih0lXglDqRyd?$Vbef*YB$)vsv4sgu)>r1Drty@))awBLLAjPZVXE)``l@ znI3jb$I#CCCXr>0eAdAs&VQtB~LrSS$A3+WVPh|I)dmbP9davcGHt?xLs zI<;LQ8yam5yjTbTnMspN?}HXr)=hM4{)F>)<7-4|MgdrT+ z4qKHxOfE$uREoaCM&7SA@- zHO~MP)U{3m3^kA;xlIl^0h5OZph_$%$hC=|?E%sI*u>dUa_9?4#5TPQtI@hli$#!{ z%UJ_WwJn?jRi-O}76fr)w>7hQ(eLI3Dc^wH(rX)IisW4c{Xk3n(69EK= zG-l7Nfl&!?gs2A-mC!K-00ej-fyjDwq@Fh-4$AWxdDCorT74pBm?D%%TysirW`=S0 zN!T(xwDkw{J_1OI>qbyQj?8HhudR4hq~syS12Z5tZq=7Mr2~|mUqKm_q-RaPzaDqc z4NjFQrOe4Muf?Xxa>UZW&9{8*!G{n2>tFn*@A=Pv>4jF-M&J0>eP^Gs`;rUK{`KGf z!<`Gg=RETg05{$Il_L0``H|Nx%nxt-#yt-_@WAu0eER&{@Ql+>d;bS-G{Y57KmV_9 zy!rYUU1?@lTz39#cies6-aRjT&gJKwbNb;m^OQmj`yM&?@@ub3s%zusg;ziGo&Wxi z?Qr>{6M={ZI0}F4QDK0>j{ABOfgmtm^-J${tM9FOzKma0nybqjrZq(jUh)Iw>U-SU zr@aWqf0~=%!;HSpgBR-OGn`r@Kc|`Czo#P zt-PB@UngFU=>b~!t#b57ZuAjG%FW%h?V0NKPKXg5Q;oQ+fuRo?~CS> zBkT1MlWN~SZ!@QXpVv|=sC!SbZukK(nP;{0(8-M9IDwAvb$IGQ`P7h;Ix5zm->mz3 zYkwfsXNAq{ebHZ<_-tBd?w|DaK_Qx)`{+6ZTiC)Dw(yvE`S(8OWiNituAK|3tM(i3 z`i&1HUP@i%+FX(GI~)*M`3y7TS_|KhJc_u;>~^(}9_=DAm0A*aR)ZD4kN3XQFH zHcZnX0-|bOYMLI;54>Yu8>hOnVR}kn0Ls$O7A_|{uv*7tG*Kp=27!WbzmzgCKSfS4 zvM%dR^vJ%4{`|lGmpwbTzx;cj)6xY#{rRtd?8dvU|Gsl~Y+ty4-{QafcfWb#C-?oz z|Nh$7z5KboazKP1c-7S({_{WilfV4<7Exvk({N1H>Jrc{ts8V|`lJd4dI2$`j!!TM zbXqmQ#-9Kg#g&=x_&4gP>My_Rk8b?LSA(pccIE{?|5LB}o=eU@k}Ff!`dh#M{tx}d z?ZernW~ILB>gWH&k6gEB*GYBPJtfBCqrw2@Etbp{w(#8sZFHyxV60k^oro2iEo@;6 zj|x?sjBLsl0D!FqOpTmzVwghuQ3C-`fpkI;$m+~CE%Ik0H7YsBPB4W*uFW2Jr~(8N zRueOU!I+WrdXAIY*NMh5;%L>sr)K`EOjTQ^s75fi(awwCjh zE6qk#un}1VICrlX3}go*aL#>6RuBMz@nj*mXx&(d+N8cmjy97mnE`5Wl!e>OND~>o z+@9VvV+SWH0d&=$0mV3Z*RJ;(k&@R;(Ew;Ws}@D4Z{KQ)IM*i4#l$5sRi<80HE#s- z%qdf9h#A0e-~bp{ApiC|Sp|K}Y%lNR^n`T6ZBgtSv)Cg-sK=&BI;>v`wZ=_+75c=2DEl zy&1a|bA~x+5^0Gv27$VOTAeC+L;#sMIsxDdk-DS+z_@))&DqKffhS!qq)5Mo&(nXD1 zH7QjXA|e1)0kg3%G*=C{&@3JeljTOKN!d14UOPIiw}ufVW{pPcujLkVG)HQthBW=I znU$L?a0W{-i&==Q;MCT&ZxX2qG61uUG*4q8RkS{`Nsqbby%PYdqi%qN0C7|Ap(@Q`_+VS^qf`n22)gs%05HO@m$|tmIQ? zwUq=0Hp>o)S({DE6||m!$qIl>RYA&ZL_jlU^~@s`Bo~;SgAsW|6*Z>Rt$mP(O_OB= zP-K;jJRl%sxj{RCi?e3YwaIADodKO+A2iVUG}Pl<(Ij@@4>3*(TjAt5b*U z#&h%A>O?s!fQKJBG&|EvDUZh0hd*&M6W#p9+iv>IE#JE5p{mIjo`2R0uDta7uY3N} z&Ohr5U%tIP&UjRpWx*n5wrzg4N%kin{?x}l^@ZE+_;x##yyj&u*uVeKr*HoI-KXui z^ulxg#ZSHY*4yuS_wWDd$3OK&oJ#OcuK1pd&1_+A=FdLzsdxP9|FbYZb5hRij)^6M zmQ4#e?i7Y>h>Ak1fO{($x<-%>ueUeOGDeTnJ(3@se8-N=DNDzb zd}1;gM@Kg>`4cn)KMEP?Xf)-M4YC!=4>wZew5yly&p71u&d2^oon z`kgO({X5_CrZ;{0Yq$R|KmW>~{?QxeXHU*F{&9hc%D}^+cW!+daKqi0z$U0-IG_4eA15r1s+g2Oe6%^2_dFc>Ug7wte?GY=i}15Q{i7E>>(%f0 z*YE$GKm5>VzVwZE{m1wJ$WOlKjQM>(_=X!6hP^-k=%+sT@q^c0ciumFT2mkZ${lD*9T^m2nvm6(kvQy|T1CqDqs9V^=cNf^P`Vs&H4BN`tZ($23 z6p!SqnrF85CIt^mw5w^AbtH`#S-29N@ZoPl7L zHZ9iD(bncQV}0*uyBIm$BNPVp7Ox=C}QtDosUWDJl1Q}PD1ZbekO&3U_y zkCY5Vw2{)NlUOG_2Q{P3IWs}$9N?+r0Zh?0kg{`@0pw99mvUHlS}(bic4Jf*QD$v* zSOD=GSGO*n(p5*>_GSzNA)`|cT9+-+xm9qx55BEFql%yytF#R-Fd+jBsWX9^6lyB9 z5deU!lLTmtrr93Q2u+&`XE5#B$&9-TL=G*T!T`X56k;t6Wz*rz6vjF)w=U%vq#yNZJ;pQ-YyxPR*|Kt955+Z z0VzNP*^to!9WJC#9yF12Fc7fEP1pi=O+8_BfYZwD;iR(#Jme`Hy|-i?`o-@8Z(RZFk(& zD+@+PzS+HN`|i_re(Tr3Xt0H%U zhgMvE*h7^NP4?vSdEOQs7DE##-(BVd$v>->%fG|%;|ZXc5P<4LP$s?ujwhAkiQNF^ z&O&i%fk(tWkjrPO+oQ$h&XzpxN#&KvU3Of`rqF!+oOF&OTuWj+F$tvlvA=R8>;z@A zrp@vmKa}Uky*Gn;A>W&LPeoTe=1(G@AN$vlUlF-iXod4WbLT{N_PXHZ$%eGrpr;TF zhtGUYDXfo5Ca34(xn2)Ax+fP;i*n9WSSp~~qJi!?cPdxm7Phd3e*n1foZUb7<3F@= z&lmrXcfLnAY2f1G^Y;AkTQ2|QfAed9^jp99-@N7}GlSt%RmevJ5lZ15!_e=wa;3a! z@<1SP$~ZWxqhZHg0Jy@w39WB94pq>k}Gro|gN=oK% z5YhQ(?|9cc-f+XqF8}S{`oCWF+JE)#U;ot@@w5Nq|8UJ!m)*Z_@$WwMiETSpfBAoY z>!3f^K99`ob6>iB|H09-o_Xn0UHmPaT3E|^uvs`VPD`De_VnEUSb}Q+P{me7ru&$c zRwkSkBG$({@&5c*zy03#ef@v?KmX0^uYc}yFTd~?{^id)cfp^2wo+4o4IilY+(yeDacU` z1<)fd?C}q+TiC)DjtA%{T9jKjL2$Y{%FYq7h=E|pV*w!>`Hbw^T#Q z=FzDukScZ339(JLbIX9BE`QIkjSUo*VH%Yu<7)Y zU=6|o)z(o}SRsg(+DvAqUdq!{kF;)8A_SvUJGM#Mxcwi7@0<)gsLkeDCu*bSfqK)@ zWJ_}~h8lz>n6IQ}GiRXINrc!MWl9D>*J(y$G{_37%&}9E z+`tvIDC7V{VkEfKNyo3PxuP!}rGzPn3Pk{|!VeNbT53fr{X$V)>@1d$ykHDu0kUn- zGBm+g$s>cJacM@>m}hE?C>tP-IG9!tRO4yG7POX1A>|4JKsXDdF>W_CwB!SViYY+= zjMK(@N6gIJ_F12eVyA~O>70()C?z-PV+NoyA~@-K73WEpH{+aOti}LjmFWC4()v|TqF0cgBP zoth%6xJ8JjnSP;8j9aVC8*^Gu)A zHW5V30A*4JP)&8(PVkBuWPqiFhGg70;p`>nKo|pJo?uKyAU1Ngo^xlQRdoXZ$3mUX zmPyXaDFFtq6iNn3Q8j14sE>NZ2>`Q}_+|-29tMDHA{vxh4ka zlclp@^Qbgrb!cnO0AMVxpBuK^-YJ$04x{V?Wov)}(Rf`?NI@F8&^^X?ye^9>iAbH-P`_U+l>+!dEyH0T!qdSwvj&OLM2%U*odXTEUT!v~gr`k%bv zvWw4c3w-4>E@H+PzI+GR|HNBgbJ2Ncopa`Cx7~5q1?QY~)iW+-rr_PvpSJhGeT#d~ zJgo>=TwcBFo(C>EfA4kIJPW51>L&ip&9`2-_q6lQ-t)Q}UiADcpK-^x@7cX;$8kT= z^6L1P-uZvmP5M_q_qN?T7p8609ychrY=PqgBCFvmi$iF1SY7P>SYIx6^(V%IpGtf> z9g(okw6Hq!FUsOtqS)|-q57zyYz8kU-&jt_1^Eh5mF6doKicFK?>Oe+hBM#sfB`6h z@d;YqI!eRD$>irrA6nRr>bw?0ziH$stY-sZ)lh&!`z#|H0iraBe8$S~9i@LJ{GK)c z{QyS&x0kY;Y&0%jr94ZBgc_ojgFy&H*1)e>n%iLRJ=T>g*g?{%MOOfT1Tch8z}CMe zVOTu&*N()A>U~e>3JDs^=a07knrm*Yi06RF!g|uAE9BT0Z}Fzjc4Aj zw4HSsevjo5U$}KNu3mlp z^Upec7ZH8^8{hiMx7-_E{i<`%>YRVg?3P>ayzyfnf6lXpull|%-=!^V!a!K62Os-; z#~W^~$pkYy(mv@(-1OXa_B^O2-ensF{S!f+ieV+x&4jYy{4$}%`r217Gamt{-Q;4>!u(40fn6_Q1>f^*BL z0TR3+60F^to1mTAhSn1&7I1Q~uwH_^o{C05yXFo6mf@{kgf&<;g|;q4047^=DWiQR zwLf>M6{eZ2e>=$$oKm-ndRPK#{q>pg>;M2D07*naRHG9mvILkFNMxpDWMBg+y8%Ts z);5Qb!GHn|La>q&C0N?<{kjozG4&xXMNXn`Z8p` zh?11XMnf;z04P~4f!1Yu$O}@C3`X*jh$ZWQDgb2WRjZsTjerj!4_he+XzS@vAxz8d zC|JR+)r7Si42%pQ36uaJOj&R^RwGM5Q*$Y))C71d z1IU^iYtxD;3n?^_x2&TP;H+n8xGb~vLXM6#c5TeC451CnFmfy z92}L@1jz;%YmmG?>l;{;mBu4i)W*(wbtLPqO2}Gu5tp+B^#g0!Q-!1i!23X2xU?Sw z0H!bnB!CD7!c@Anq&!6gRG$(O)SOFNaH3f32pTLqHb*h82>O79R!S#<1yoG?#;8$- zi2%8V38U21>&IrvBYT$&fW;yyDCfWlK&~7d7!eaP)H-qkv$_cp$#Dz=g@OY7Sj7?8 z8OUnP__jwf*C6ORDG@|Q0>BaqYY0Xp$XQ5BNokoz{nChXGq>GXk1}Tnv*)0$?D91s8i& z!yW_-I0BF)*04|(ua+}lVhw>5)Q&Bs>oR97%A#lN-uZ?buBq#0+x!r~B^RE3@%a{f zOZ~zX-*XWRM0D<1dvg%3g*G&<^aHe;7%{+C8Ip222U4QWZedtA3U%vFrrvbS6 zmfJu3xv#$9%FB-XD)4;|9lZ3ybMAlm;L2Kk+75%yxwgZf`QH%+%gBC8sp(08*_QjG z_fYe#SiXqX7ESNz`>WQ%D|mQ4kb!t)ev=S6-Ou&k8wrZtYlELA(tYf&K=~R_m>S6hmi+jGy>xSu^Q!W-nRoi?BmMYEquI6o zn^ex__$|)+p!*$NnB3D67FLQkGZ7&XRO~>1?LU%@8h=$?yp(L*tNvIP|E})6GL|n> znt4o?6@eJ4NCrB}Aoi4^<#wM45f>*+s?_ycnGx8Ip*i=b3sTiFiHwD2`Xg(R1Z!|P6TpP<9B6h~|$0iw; z`l%(TIHBCuyx9{`Pus#4wy=fG=!fvn-v0XA?zrn$fAa%%6+ic-JI^|E{wLo0>auu3 zMAxSXy`BJAYf{X1n7$@4fo-+QDPgAXckU_{S7Q^Coj_eK6DIHcTwj_7t5s9yd{iMB zW){$F&zI$?yY5XymtC~?vWxbvN9sC$<<@&=X7j6GaaB=tYf($fs~`BY4}aL-7ICU}ThsXZX@kTD(co0GOeP_DaFm-!WOph zYHy)j}#oUIw+&B11Qd@EV=xxKNI@q?OtU z*^EyFC{R#c0ySXpUaB3XH=)JY8-q&d08M5Ymu0SH=tcxvvoKfcu5vk8JTRVZfE~q1 zK_mDeRnI6VNiz}2&h8yd>JF|Ag>|0SijdnS#j>aZnw&rYkrhR~R2MmSD$!Wy!PEfgSTZOI)M_yBls!`bnjX|4S4o(;VAP<>2u%=VL5_ft!C=;Hb8bsN z6ILby8>xX`fdleFSS?_O>R|$Ul55R5B87oNymWqFxkJZAm@k`)b{tGO=r*n!zI5== z8NKmCeA*!@uG;_#NXa`mi;0>o2E0@kbggI(}-EJ+-?(Z!`8>C^bFPYmn3SKMT7OG3<9_}y22djDK z@)ZkrpI$6$O(msg&EJ3b%7XO=xtCAxj|SWK#NN)uxO(>7p$qpMpa&)FD)tTzT(aXK zFZtlMfQ;S6YR{*XC?%TrYo(7Q{X{n89DV1%GA!zHJ`R!6nTOwr6)7tysqHa@+%IE=lN&V!1Nd zJW;BL#dxQA^B5CCXmZsvpn(O{bFT1eYqeWyiV_wzjgrsg1erOnSy6+AJlYvneNP+p zb27Sg_93l!Keib+r_YSaJF?F4?MWzEI4A=S?-V@q)_|C z{_NT1!KcqXuzPLUnto8*+h6Jzaa>DH#hJxQZM-G{pq*hPtlG!8!A@K9<;o+o)Enyd zwUyJitKVUV{0^eP z$|ho4vEq|0^Q?krX=yGD6Hq5PXK?7*+wY3~T+d-!GdgR2X=Wi>kqgzG#b}>T(7?)SVp=$Wzg>S|+_6v^Z_1u+59@#M@>n%0qJXdbULYeBq?XaaC^VMSLr-7`& zU%va^2dY`O)AwfLmGj@eY3__P?^bhf+dyZxukp5kT{9Qb!@IX%G}eLadZ;YM7mOdC z^9?}rMZV~a{o}P>Jcs7`)#dcy+2`D&_qjuDvQ#k8@Atu73{b9gIZj*>z)IPrOn4QTbw>x?r|D$voeEF z)n^u!F;(nSDtpKo)oLYU6!Tn#(8Sm?@XoS6jaKG{bv2%yp_OOP-@m=rV8Ir~D?1CZ zHiek5r#~uOK7c|^=Whad&#d9!w{P1ZNIDMmJb!% z2U1_YYhUtC7noo#-0|(D#p02oUls1M{=+xToz8=Kl-NG5`Ys2{hcq}e=kyPOVFSw1 zrH0MfaL^kLI_8RZo8~j#bt@Z0G@R+<2#83_u$g@1^^ZB{kNwSOo_W~?uYcu>+7+Ma z6P-GUIp6%HJMO)I|4pC$%3b$8RM&A_$Jf8|niH{C^3n^=n42m7!ykRfOo_;g^TC{f z1gyve0AkQqFX&N%L70ikU}^xvWh4Q#+YNOLK@whkuU~wZ@q$&iP*TuJ;cu+x_W1ra z$VTj_-F!h1MHT>{^srz24IX`1DGZ9gSv&3b7)kd3nv0)@4Pk+8S)?B5sM`4(Tz@Sr zy$kUkv2l-!X5klr)=BSJ$~hg(XqzRPm5v+`22y}B0|voV)wLYP?+_%I9wkU>E+Cj! zmxQUkb`|(+9FFb%+6xsyh(HPmBqIx1TJbA?;Fte6VbtdjV%G)Qy9$;WFoKbzm7D#c zcbGMS2I{vfF7wO3ruhMF zGJGCkhr~O>q2Ek!z3Owc9Xk6aC~Y)o1~Cq6WicY*BDnlGdgGG~c2v`&1&`KtB1}Ss zk_lW!Vzg6F5LAKh5NvzYqX!$a;EpW|MT8JK>rb@r34&Ia@yP^@jfsPhW=VxTfg8M~ z*@{7#4GybcESKJ?X;Ek<#M^`2ht;nq=laz*6BSZ_A?sSdxiy{kyGaJT_Mx!yZ-H!3 zgY@*E`Lk_!J&;*p)RJf?9N~8Me(b^NW||I01{n#HcOszdx-QBsacFbDJ*HqJbH~I< z1VrG2cp*zxIAOpChBzG7pA{-6@*a7#ATw28D_7p7%{MqvQQRWMC03lPs?2S7a!0+v zPg*c5O4q793KJbUj30GuKT5DY>|+JJKXr4rTiC)Dju(c5{!3nP#V0=Ux!-&5N3VVE z)vvk!Iosz?Iisb=M6V|<&}yYslT2;1@D>qJrJP0>1eqWB(U?XtCq4esG6waYXNw@r ztK(*MY~XyvSquO(_X<}!F2X;skyb6&P1-TPFjMr~ORJms(Hp<=!4Kbj-L>amf9>T( zcnT;HTR4@WYD*)Rn*^Lx2A+)LaH(3ClR31!`Zu5c`XdJq9M(fGI)CpoEMbU}mdKt!hFmpAvuwGzz3n5o6ljfRN3QCUPFyAb3QD5hQ^(=7#DKb8Agy zgrY5pz&u=nA{s)4rU1|#EfPGCrcRgF=a}_|9aURfw*DCbsM?yF`jSyAgd+kV)SzNB zq71cE8OSb?GizqI!L7M~GN$c3T4}ga z31tIjRxo8px#%ZRTP#WdA=EUvvL4l==oOUM^-z`6BLd((HEN{+%7Ek{SD2v@5r843 zkO2;G&gVFEb7gP}OE=zzI$e8F_>dj3OH5p7)d!0<1(+1BSp1V{S4xj*QSBCO@yH zBGEhQe4+@&(B*-ow#N*8`ZJ{okFztY=EAt{6)i1`kuvfqI73qwRc!ji z&Xki25THE*BO7PsL8v{e%~HWA3NuG(AVSJyMPCF>k3fKzm1I5EiluhM zl!Od~f*@plZm4tkX^6Be#uX&77Os|6vx301V|JOzlt6?4E3JuU1{9%QYk~uWs0d(& z4572g75X_lRS<~4q`5zXR+j(W>28uBVX+b7{a#$-tK;g1;iUo>36is3n3ZzH{=bl6m zn#T7E)Xk;=q5xchy0$XZ42#aOsYgSwM|fsnv0re{MIr+cfd;&>Io_i|1M8ux3z;!g zl$>NRskKW8rj4dBBUNf-KMjY7PBiUw6^Q{=`QQN&{a+uVy!13%n%p`QiU(&anOKdeaUs3KEhoDWgp%drw?cQao9?|p==?tim<`(ZDaIH>+8Mqxf1g2=0 z{~tTZUCuu$mgB+tWvoQC9Beec} zFh+1l7<2p@Awm}n_q%i}+;h5WA;3cq-6pymaXM_Nhx-#Pi0+GdTjb>O-JbWctwx?9 zs7tq*UlE=a;|wq%1JZoaND|KlJtVZqdLIxipANoT@;9AhQO*RfsHL4kb;=#YM^J)$#n%dgGG~^05UACcxCQOuB?>r+d>D^$7>Vu_vIIsBq2zu_>ktPrV)-7Cej- z^C&@M0B{251cZ`M3!HY-Xfh;5@g0LY2@(SyY55MshciwiPOka_a%yB=*?RF-A_Emf z?9!d^hsb-;Z?HDmcETAl0gFC<74BsO#|ov5+6xRdFrHx0Gt>@m5hpOf5i~F}Hw-uF zqJfYBZ}?6@f$7nMj^X7Pt&$!3h4+9tun>SC0^-9?I!U*L~j$ubdzDPuz>l356FPmgER^vZhs6o&o_m<)xHUmVWTw%W4(t zq{opfLqN~_eqTswX;jxKx9suh?-+~#X6~1MQ1G!%gHHu`=bm=a?hk$N{U5*aGiROg zT4DOoM{oM=-+BMs!g+6h+naXp-1bx#a0{m#y6q$z&gdr<>l<}e)~YZ5{Wl(X=z(5u zBh%ExNX(aAytf_q4)bYZCVxa$>Z`YZ^UGg3@P^ks`{K(k`{FIDfBScLUh(w1UvSmM zZu91-6N*zeRVDx_RB>{>sJ5_$Eu2_nvj9O*N_y*J_06;7(3~d3{dio5rAo#MCw=%FaJ2Fef2cMx5%-Nr8j} zA(%rG!7u@}6)X->!PW`P@U#J$p9srLsxWt|=Xv7~ZatgeC`HGJ$zT(jPz|(<7?~V5 z0!AJVx#6f>PzzW? z!t(v8khEG*BqEy$QJHvB&g3wrqUYjj9el4zkfyDCP0_+QIRLCcBWtO^*h*^&DU?N^ zKuSrhzNbuYfW!jSu&<|E2Ip>9Kqx$5qVfmF|#KdJ1BD)8-Ruy zn1=%#2r0tIw>{82az;-#IzT|XD-;>92BE;HLSs5$)oHt^_z?4XmYj7VrwWbEt*HZ` zkYv)`7>9B*Tf`Att$scm`IV*&P2~y6X${1r zG7LdToTW~ov>HIe1b{N!NNvbquE*JCu-10ehENeU@9M}v1$f#>z!*^$f?9)ekP^cp z3Ls^0lRY$(vz%N+!|kF!$Y5ds`$ltRR7}}awLM>r#_FeU2vrU-s&dSMx=|u7uMReq zZHdAzT5s!)-N=g9ITEIq$2uKk&GLL8k^S-qZLT=!-DI>=+Xu;z}wiUw=@Td`x zKt0M?09b%S((&}Rj|`|nas+|uCKS>j)h3eQ1vY1+z%gd2vjayZm*6X-^;h-;&y)d_ zMQsNFHCJa6vq^WR1a@3$@I{)J(F0h3!5zwB!N>$LWfZ3;o__LCF@Fr!IUI67*uO30;%!??;Zw*v@Lvf#Sq zyqMt`MvomNxT5z`J@jdzec7KO99_KEit}oDR$isl)ZP(*q!0oKFSms-ni;-=mfs5z4SOVhThk~Fe{@_sN9UKlXUW=UNXn*s$!Khhm=pjUqe7P0CBFQ5Y#(XisEtyby|Or1_H9eUf9~?VlZs$;KUeSdd#Q*E*29TFT2^{bjf_>cNkN`jc+_aacdj zye^r9)&J^gIro2Hwb^6Q`*2O)f5N4MM5STbWKSJlkjDz7q##0@)$58hxpCT7&Vc5P zTWP)N^WzRS$vg@AZZ#%k1z~-B$O;e~wQqk`Z0@&@8BA)kr4Ivs{2A38vA9x~LUp!b z&y~)P>$p!ZGIO8dzI)$Lug0$Gt}d$SCV)mlv>7Y|Ed~iR7zIcI1Q;tq$U}&*WFoBa z6et`4AsY|!ps+)PEG!(dEGcLSkc0pkXiS5|)b0WWVo(E3(_LM|yTdtWXXaYVKXUIg z-1lmDRd2XeeZC)6_vP6;=ggg%>&tJE*V-mn-I_3Wrty0e2&X7%RdiX@{Wj+I*ANJz z!wGkBFAT899&cvcI63`^pZ?(IeeTm=_f_BYy{5*yZqC0*z4sV&s%+2i5!F)dL9(m~Mul)LNW%tSW?&;}reqbr> zkWzm0qtE~6|Ji@>&d>VN|KwZ0`O1}}kNno>{nfwzzQ6LneD7cT&OiUeV-MZ4a$Q`a zj04PjmdqY|yxC9{a|-~jN<8pTcl})MvBw^F7iQQGx_brH1ez#>pv|GA8M_kzr6^=; znSfn_G&Lr}@RQ3Hi-VC!3aX=eqza~iYPeY%`@lWff&O0qv0^n36`5@+1V&J#dZhjpy$5H=SZCt zP{D8sv)$@!T!JS4PVQnrU`yQA ztQc+DH~>)A9ERcnr2^uJczm#&oVXVba!H#U93%Y>#h87hC7Fk;tBZ08{ z$e2(EnZnJ%28m>x9Ry;Sle%yP0jyrq6i!gp$f0QN2?-H!C#__+nqESvN--M%MAD@Y z_pRrIrYkg!)eD%xf(-?$BP=%rj2H`cH-JVJ+1&v0KngNasBu4GwAOF!VcW3e(5gmGv$?#BpDzzU0wPNqYCyxCTdzT~QW+T~0+mhyWp{Q55Dw}X5sfn?M;I+_tT|Kw9cYOn2@YHA z)NO#a>&X(TYobh6&ozOx>74~)5LO}shjxaTNS8>xCWZ?cERj1yBL=2qyVFnGQ4+vV zV<#FWkqGM{iO>8ys#yBQ>Uf9|=hiL$qJc_Ef>-ye?hg26rYWKeP z095VAf998d@JBvy?egL8e*C$UMgKSc&mXu;M477k@n@g!`yP#OO0Gr@Gf-2BGlLMR z0mG_cCoqtUGr5_80W~8q6RC~&K0)e6J_HVu={E&7>Z+!%h>tuN{WP6rLt9-NtdkJj z-66OYFK)pK#oe72EAH;@6n7}@Ufe0}(&Ap+wfNzA&pAI}C;77P%sp$?Ty7j9BRK_r zE$F!hyQ<1wv>ey2BzCsD)Dl)_X{_j7l5}ryN>2Z*8xR%`dz*_!yinnj$qt{>aas2N z+42yGl!d*0%@8r=9lvz)Ii6NVmD`1bCm@*pk$K&Un3N5ba5|<}%48<=&%lOAEJXL@ znT@O?7HT4Wxzb3N|A%DymoxhG?rc3hXn3OcIC#^lKEuaHzME&MM(5u%W86;%OE|bP zv*8uR>enW<+>xuKQB?)i&PS2D7r8w;S@)8;eDc>Y%R5OKDH`uKOKKcDFH8dehMSV3 zre=17@vFm8JJx5l&MOhxr>1em)QfcgYI0gO>~bzi^u^jA5Kaj?pn4i%jLnQj;;QG) zG3tN~Jje*dw@8y$jyh(ya`aI3-B1_O+x$>ggEb+>V=+V!Y*F<+@DC9^7>kW6UNZ!v ziLXmY9Dss*dm~a0R*tq-#1DVMgg{la={3&R zMl7?){p%!7>#V90t@)jZCs}dnou4)Y#34L%`9JwAY<8_a-jM(ZoP=?<_T~*4F=}|G zk-Fts{q{e+<&70dK4bM$C_y21q?X_MR?`O!*{2WjYBpRUi`Q)KFRt(ZRagktHm-Mz zrg1zB)%twTcXm&YEE6oGt9UiH+ku1;52IPR@Q#MICOsHXpEAkQS!z9Dlrh}y7CpW! z*CIm$A(FuXsl<QXOzAy{0%fZRtIH7NNmXpez`U;N&jhbx! zy4a&m2qa3Zx3Ce-?b%mI$TWDN3M{wH0WG7n>PJL+rZwtyL>tSfNEQE)+W$!S+JM{p zPly6C9cnZ$_H`&wWYuShrFXA2rnTd&t2U}q5ZANJCL#{^Fw&~e^ixH|*raUeH7zofKjZqOj@lZ?Fut_12#kQJHdMLwRT!4M>$_K0tRCj4V&0SuK|!C0jZ!3M!}eh zXB*I?=(|j)V$l~}5&o)892#sbe>zpJI&~_M!f)H2uA=1B( zeRYQJDq9QuMX5@c+w0z8xT;+UQ$p$IvZwTX8Dr2;u^Y}BkxmwZo*e^tG}!ewn#Awl zrz0JQGyxsC814B8Av3v)uB7UKv_SO1fh+`QAkZKS7YzMFN!*|OWjTRU-MlGv?FiK= z0h5bqHnM*Z@Aq;)sXt}X9!Mr@70w{IzZq`y?jNrv5sDyPSU>JA6g@Y`&PK@8t`H9c z;JWQnV)5q=w{UX80G?O+>dHIv3_v)o=KPDWpzDv^`8cyn<#obu?AQx-3Ll2{z&0`L*tNdgc)5l+xE8`J|@m=T9XSO{20 zG?F56*XMCjvleC&zw1oz+_D^wL=I1b3P*(unnob8Py@318h`Swd8B?X{w466EO75G zPQN`e@)qYvS6;ES$9s5xk=5jn?Ilc`M?F*9YR-K)EkkAjBeECl$}j?BS;9jLQTE)) z%dP~=-*;%;+{QCqmtaNU#l>xbdakO`;iTKo*QOtW3gC!fLVBc#Kh;yOA3pvlM}{zwWYMp#BI0K!DW( z7CujN_((o^1eC0pLeJwF70C@==doQ3Z_tXWf=cBt4LGWF;nA2<>OhwD5soFbE$U4j zj+{0p4#IL}j+Zq3-$?+V9 zy?UIfJaJB;y<>UnqCQ|9Ce@yJafzX^bke8QP!)n5t|W!FJNcp3;}UN|N+4u87@+ZY zPN9hXt=`mk*~bQ%t}gjGfISd5AX_Zk*Ei?Kxw1?YwVnB9@rSj9QF2gvcyzwlB5&Ga zRfS7$GgDkMRjbS9x5rVN=3xah+XR{u1=@SaG->fxo#0!_AYjuWWd1GF}9_o{>+QaL28QJ+{843EzHg3Fc+4 zy0hC^POZYF{9=*PYv*S^%H?HlYOK1JmlehExBVVV8_yH+yRX;#aj5HA$nR!M82cb? zY3*Kz!>a>FZK5q~YzhA1!a%ibSKZ0??Vsk$*4vH9^xy>{+cNq7|bxysgfb&zcW^3;`rD970m?i_kx@tkMv-r-->7WjBa3*|JpFQBn(V zr#tK)lev@N$|l$&U*YegPu;jEr6>i)9m@UX_8j3pmdj0 z@gogv0u2C{2v#a62p1qXi98HxD3U7VYMlkXb#F)SfGws*bXIeVPm=oyuD0k&Vb~uXV z4Hwu7?qq`7cg?9h(%~DGc}+(ODiV^5+BPlj7jaFzqy)ak!{>o6+`6Y>%PSP#R_vhZ zG@#FpYji=Rn@)H}?XT%i^(&dpTEayS)}YVocRy7UDm0QUqWTme?3qe)G~WjXC#+jJ zNcxa@y|Pe=h+N2)jqFYRV=PoLKsKcQrC1n_)fEd$D;~H2-on53KSxbW$M{=NzLPbj z2^1G`O*2pK=zfiEU!MN%`a|PMUZ5lePz^TKFf9Sh?ny^%PC&p^EmC&Qh#LuL4A8|! z-QxfQ8BoB81Pbmz)dwvdkSHP20NcgEYWN5Yu_y**I7Zw|5M_(L5Zt>-!zFKLqMKRn z=0A_X?HK-X^b?dT;1_#MWY0-yre}?L@RF-q%r5tDW5OGjkNp#x38bX~FeH(#fV6nb zEyx0tjk|rs_~T(l-uzMZ$WkpLqd&l@$9RFzp9%pd7z4`I9ig?D7Hq9>!3B)bgCXQ| zXAV_c%XH%B>e&ivpeA3Ge&4qq#g7fJ310Xy-GYLO$CBrbE!qk!*Bd>kDc`H(jul{w z0AWpN_yNPm!b@=@>_(zu`c-lWMy`}`N`Z~}L=6=MZJcvCG%)_@($og==e@dhA>vObt38GR6=`*IdXmp$ZO)>&~CK91w7g_U|4|qjB6j2IO>?g`mziK z+q8MTSe3qAD;lkU#hhOOHGXB3*aZFUrhw`3{n&Tw35|dk%E+=BAqGp(H?8||>R7zG zWxn&u^d12Xtkg*bL+U?g7Ob+uS}8zaBmD?d0Y?u7Gv@7Z-d}K1#4PxoV|jDAd#peB zfG{_Q5lJ<`H*QveovK>6x%ye`O+)XK%c0KU5aLWqTJs^*b4+nkd$Mz9Sy0gVtD|YY z&*WLn-SLS%m*0g7Pp*vNN$bu+RVnuwAc$(Lap&Qr`XuNKKaFswY{2)reQ3-dL30+_ zS)^2r@tLuPt@HNrWaahB@4e{a6g@kKMC5hRbmOJj_k*6#eeT0xjae~%+*H?#K-aOM z?*aZ>``c^xtGMCi)7!}XTc^kav){v%Z@;GBT}kIDkMFhHYjgMO+PUXY!MXcUf)^hW z3ybm~+o;2Tc7YwGmYpU&i0$6Mq4#e1eHNRA5su%%oUcQ_ND59!1JeN`9d>o=-qYoUCNmqhd z?fE!h2#<#;i%@iyBahq*Hn6dG2?FbQ$yxCeILzlctbAW9YX=Dyq@ec@kKQeV#24VN zu`-v>IF!B=a0Fy_R7v(())h!FPvi>>$ZS5Y!pJhMZNT^90nrlQk_FY z6F4E85ri;4Ibi0(XOEo4E0B3Qt)deUQgzj{=s;#oo>L>bf$7g^5Hh7R1b}0N{6Sh;S3fhA;Xz3Qv*Te zChKXF5PpWuu|dR2jU4GX5j8ONO99eq?2HP@EI%!!B#eV>T7)$ik)la^l$*Sxo@|pSM&CMajdVk(9+;hw}T!AAF#b z_;Cbg@`ZBc!EDYXPvGYJEHX0o7U88u1VUG{zHl8btG|Mpb-m}eh4hZPKX7f~F2Aj| zH;=hMphm1O+TFQE{^tsVDlO8mKLf6Pr5vIR94f*P;56d9Q&x`L0ItZ&Jx{Tj3{Chj z{c`T?G3klY_;FW_{~I|Dm@tMJvxL+5x7l7y^7p^+$102T_`*}$FnDurf1%biesBgT z9|XuUgp=ehNU{i5zfDoZOKgp(6lWt$j>R`$|ZpGbA&sd2a zunnlpp0>5^WmlUd_DEBgKsJJ|e|VLq`S`mJEabm>^@mDMdSXjSNji@V04g8CO=j?K zTPB%NC7G;+87)Nu0T{jlq+u)M6*!v4@*)yoJ?A*=UiiW#CR&JO+moWO;4NPeH_aqn z)ZUZU%95+fj9}aF&}CGtW#BMD{X!u(ztXu8q%mIOjl15Y@8?u7_(ND$(d~qWJCGJK z*!q)Lu%S^iH5`JoR|#rC{VK&U)Aq?c5D{h`MJJg)=$k+1RnfQMO4u_!3QZI3`UUlI z&779k%Uns7nlq*!n?pWfVCuXLwfuPUn(tGk)!CWU3O;^%EcutzkYbXQ&zT!(+Lbd)K)4E9TjK7SEQiIb}y;)_eQg%dIpEUc*H*bUElRm_H=k9qcj_QnCKvkIm-aW$(Jyg zHBAoAuW6X%6q^^ZD49%IM9S{s-fuqkIooM}T_@&aYbuvi&@ z<^YAh!iA(t+<;Z!{0V%Psq*;%#lvGn6h*(N>}S46=!(CKJLL}?YX%|NytbYBsl0qA zJOJV*vp$uBA&U*#TZ?iHM^qC-Ow-7i2gImtY5i8E-!x9-0>A6;H{a9#?gpK|Zo)7B z`v26dQ7NBguJLz$I4D|`?Gonw^pe`{MDNb?;SAG_sTuG)DqVkdhidK#4t7cZ(4q!E z=H=8aY|hbPPxO25-{Th`x(>}flgob8FPY1#>|xk}kO{4YPR@Tq|9M<108E#FzGwxn z4;nlb3aa?S#;jS%9(`Z1BrImWl_3o=YqF!6i{bZInmUo>CjWYXAu>`U!TIhHnTRNH zC(th>?6GwwTFSy{nA3SR=f` zQETY;09;JNXui(ozO@n4m9XaQ9)2`v_r^GHy*=uyR%4|V@cVBu>uj0XK_?S@?2_uf z%ZwBLrv9x7*{%FtzS)`0BXvTXF*a69%|TvW&n171@-z3SbgTVT9p%UI>$f#i;`+U^5XZZTiz2hokd1foB`txpS6;TKhmR z)U(o+$c*`)LLP!e2m_M$A8~;CfZ25pWk1FQ|4fdF1gOWp)>99u@t#-c6cKX6m&oW+ zfL<)yO^bl6poSn6MhSvAe|3Ft#d7i)Wx}BNrnEoi(UdmOCa2XJgdu8e&ZnP#3yvE8 z7|-K)DZQH~$`bzTSk!_{MMGgAuueO-Jpil#aS^W4XFn_f%1LOE2?H?WNHK$;L$iWp z>5j}m`j6B4-1Ic14)AnPrM{o$WPqM}u1E$gs~+uMh~TGXhak4lzXM&%naz_f}2mYh^Ex`OkCZr!hQMTUU2F#^f<$Ht{Xhy@eO!!VAmSV8_a7456j6ja{y_k+LW>opdgFj z(k+BZN;A@d`#0|Da6IWjCO!ikriKF3krD)vz|4At56eST%n1;(%uACm4ob#ifDG)} zp@IcB={gnl{uLG@*`9Lm#dMfBZ;L9Feje_?%JtwV0XN2m2U>rp^~5Shqjd102ke!5 zH>R+!3xW42ndz_;qy0m^g{3p+`zR4BioPZHE&Ksm&L8cE?(OrULE;Ltdk0p z2f|S+1UMH@MdIs|bu7P?R&w*Y@i6q2$};~qprTMP`O`xCwGkXTKQDTRBJ7@-w`P5) z#~_`U{qQO5Nj{e`4BJ>ZDwVcQqq~lNOvMtTB;SdBh@kj$u_}^rH_z%$B9WP|hB=^x zUL6K9Hv1}Tm6hD^eK{M+8qq=daQhUkQ{i90Si=yRpiaXV0Nb@UtrWbtwZy=9Dmtss zLkc`um#g!+Hb={FBnK$I7sb(GMDRaxWK$rOqx#&pv>?~jqAhRqpE#<(=zXy_diab$ zSs1o6Q;6K7^2>@he2H+PNkXa_V0mx#Um4Ea>ms|naBMqj9m7?J8#<@zkRsu6gce^_D9%CR|{l_7gVXuOV? z$OrXAhblgsWDXofeid?OSEM|)*14ekKF^3%6dlPyXdh-4pXXX;m@jakD4-U?3%&?m z4FXam0bqxJFOvpA+-x}52$Q!!8f@agr8f2xvm%`EekFW7jh-fF6SxWt=@9rYFq&Ha zxb`7{kls+G1lVySF`JY^wBc9+c?2Y}GFvp~6ul@(l#bw!N*SdP2^_$jmU$9#$2T); zB~grd26mu%!8Cdl$BF~m+0D-fC-(V5s* z9r#FwI(yC^#}rv|6_>rzKG#GsDME9Vk@Tlas(rUr4&zGJddo$mUwYNNj${%lE_ZFN z_frz3Hx+K|e|`_wQx)^gW13VGKr|qW9&$R@gis1{Ym=C02Sa!p7uv~$A0&7LKD7zA zUslVKCmzVG(s&UJ{UPI}87O1k;Aq7}s}!iUT_{Of8b;KiBUOgit;Y_kavjhwM+!U) zZs$Cgp$Md_*MW|sc$Es|>~|zhA^@d_OAZ`kqlGCgXlOGE)tkTX)iHtKjmu8pOn#PC z?NN{)7i#h$nP61Lhz8SYA&v)-jUW8_qRwA{VTxFrtUUR7 z5v{F@ui{9>_o??9oiv9;@yEhNPbJBGpmy%2;`n3^ZyP4Mev4il4_WskL`XXAI-g~o ze~#eDGK>1Ic_OFX*|Zg!DzR@|WHpAv?ABo0T0Up4d2Pah{z6S3t?4oA;Nv(ef*}T! zx^pvl`&S@ENB321JZ{2vxDe|a>o8$ysl>onV;`%7WMoOV=EK2o1bu?RDPCeB6KsMT z^ay1ynxEqG$Oi(C=D{FQa!@{2q-FL>(jzo${9by*k5euiLou)LM5yjIO5<9Z=poEr zCyclNql{~ylIHXl3$M6Cfd>f?BA7z^G-MuD*1bxaYa+JE$862Wzw-{gEh0W|yQy0* z3Pk6vsV#*75*rzpD1K)mjP~Y}7%&N!w9JRuV~J-wmqE$0n2W<4_+(uq(Vt>U&_!Ht zXOAlNGIc}*co)(>vmtu={7jQkPq!RgVHNT^J+f@uX4tjV_ni#tzP;Gy)w?5177G{# zus!^BFAhyym>(yT=P~OjRjtS0O*p*lPfV0%L!Dao4!mMW&DDJbCw$Q%+v8-fAg$4` zWbr{EO6y2uCT*qKb`0m3f zl#YN^kHB7 zBX{b#yyM?ua)GmS(S@>(FrOD%YO=yt6BpVCI5WDO&DYJFlTSINpQ!(T79i&X8t)*7 zVe$~UKmxq~i4)&7;sS%zRB;~z@9bz~{AB;AR-fpG@|#z+_bxWwHSTrr*zFlL^|ko6 z75Y((t#B9y=|5b*kT`##Ugoy`s?TQ?+!M11@Jrb z`Ojy2KRP3_W~H2t{N4iVr4JGGnP^WrvfpQ}GNZalnjnQ?$M$)5^VYvxfyO;@rLq7P z6e!*=7?@gmh$BT$_Q;P$=>DK!J0AwXfW4Mxpkj0(7M<=ritwQB`0b4K>2w?GD~Zv1 z!iXw|H558L8Y zt$(naKuO~Ly2K_&H4)Wt)`EZUK4uCdN^q|ew#tV*6z87E0JNjQC2=@2X!y}4?)N|% ztDSNjamZ;$Ih^b&MZaa43DgL{%T&it`ipZ6(Z7c>3AmxxZ%WEtXWB~NgBsuFundX) zVH76t1*eF7O$qf}1IXFvk7$Jvl&y=E5z+4Nt&a6+CmV=_eu0E(@BbAX$}{!h#5##; zAP>zABM7JpI7)Cb3aXP7qW~1ONF-XdtGU9D4oc0_i-}KEMc4C|Xh92ZU^W%b8YRH? z%vnfBeFgnBC38Vph_#hc#ty-Ml|-k%y)2=gsMv&xp-_cMl%Y>A%~Zxo z;mMwvoY9*H0^xsXikTWX1d@%^BR68j5!%!U)D}3xO5gf-kGn}i7+3RL7mTeyKG9C%50+n(PkZ$TtR(#as|LNFl+z;=ZNM` z;1+VBkt-MT4~&Rf(?Ck7D9C$sp@^HXST-q6%rO0f`@RS5tik{&9~+=0n&iRl$!fBg z+@eM1@?veku~#=*VttUl8-57kp?mDh6~RI$Cv#F^JSVR6sB83}d0r z#p_fk$;wL}ZbA-W`1Tb*;eR#s;Gpr;{KPst&7gw(+D#HHEs~{|LOY-F?8II5zow{7Fgeo z!knse9~taAT_5sXqJ{SjUt;1`d9_JMCpRAEchH{iq;g*t8>T9j7skTg(;jrLBBb{B z-PbQ7uTR1|r@0T+CF|jTFr2DIF8a^kUd|tGYF_&dsmF64EYF`a{hr8Iv46-xJA~j6 zf#BcmUx>NDM1maaqV)bVH9MpdfF9^gd&5I#$T5wr!rJ4WL)UJqXq}1srN7`;bk507ci;sivDnkkNw=Vs3*{8AbztI{3#+2;c65Y&s z3|Yv=?X5kl+8e6K64FoqbsTop=fGS#aq22_IQpUGFlOiL2HK(RCFwV>BYPLJ`;={= zI}6B<3aLP4-5J{am#u)z!Dt04|JsAGtz8$mK!&Wp{EGajw}VS3|L*iyJC*GnqIUiH z&(h;B{`bxA0m+9;xJJZIOi>Aq2rDzb#qUTo>Y~#!`;&-=d)=0epZ;9_+W@TaA-VpW z%y(WDqSsh6c8k78{zmXsxt33s6brQ!oE9HZ;0cTt3#SSj!c?~06gT3zIxV!3v%l%B z&!73oE!QqA)~;#&nL7c+FX>Vu8Ge1@=M`gG%o1Q=t$kjwSf02&ffE`plSxE{A&L+> zNE)St+tRC!^O4sTLXN^#LsTuClTjmYGZCQs32HACAB*}GcEEA5NMRHm|2j>(1}$qN7&s&;!WWy z)&rJ08E_{3J{4!Px0^|_fTYp)_Z811Ks*zjqK_~y05I0=x1D_x1^lkh)wW~^{##jD z=f98r`w5mgGKO-_^JaWSGvAsWOpd?6;YF-=Fj%44WkJQ!ooH#BZ7T4SRivDfW!N16 z3Q)EZGLrzET{QkN_Ka#OyXrh|>iDJ)8j$JYu zop<>2&+>}oAs{CmOo0^>pE?3bu!&xvvyN_V@()Qb@pZ z9y641kOAh0_V2;dqR_pniE;r!c&Y1ljX#&RB_qEm(`A_*NWPx1l%pMTwW&tq`m0xs zt@8V6z(H#_%R?pzG!XX`IzudNcKeNO9X6slpcHU@Z4so_@uwefsnltEl2?^8Dq5uh zgoTmDBwNA1$@aP&#?QoU(v40C$K;1>6XB2;0~xiZ1$CR~up>o{YP}6)d$Yc6;T2Hg z#N}ja*4zf2L0v3h=XEY-DM`9EZH`R7xxw>!yElU>oRA}$7`396?7pH47L8x56AH7< z)JGD>bS*%S^g=Nc_1P9X;KOT}&;ep!=w6@R4(MKc(O-5IU!%-lYwlkfi0RBvOVIsx zcit{?U*}n$uk4=5{qDnFH~cR1_YHVoSI(bi$R96r-^y~I{u(}Nc86s4jGw>tO!>SM z6kV?s?GP}wj<$Mr$y$Bg*)kRWEiXLGDGKeaugrKfoXC5xHKV+s9M}^(=*7=Wz72Lu#fG1Q8$Oy#Gf~sCiUy_#a_FDo+bfDhtu@!^M968g~7b*D1tC^7BLo4B=hq-RQs?;F%f< zq=dk5?F+z=(ghJQg#yTzh=O`wR|$E6V!DWEXL*}4C!%TG-dW5Q?aiM?!o_#tcr^s= zkx2@vs7jRm#?$9%N>$oZJNC5VmF?;K3s2&ce%sgzgt`NQ*4n`s6ooRQfOhUrc*7L9 zIMT*l{VL7b1ff5H?U*Q}9p9o{IFznU)hoaZ7DrsL_A24%AA(bu?Mz;TCnc+)J*6ya zQr9_88A8*aM6K}~4@q3gKn=_=0&|}JT%!^HJVmw?ijc4X3EcS0kB9PgR7!x5fMlU) z-$t&)@ob=K*(4y^MElR&r?25#lY0TH(YQ5;#a;@V5TA%F6&JiA{{KHn3ZJ1wz6B5*vBGr0|KV3F8Z4WS zZcF@L)04Kn-X^9zp0_HRt2dqkF!~Y|yKenni8t;q_YF?k&b(gF{jSRF{Kn#ZHt~J; zO{e_U&AX3BhR9oW5%D(&<7$u!`?0na3UYGE&TujqRa@tN+QG8{Q`{n$oT4)5Gvf|3 z3IEG&us}46K`2`>9h;>8r8d?Mr42c~zie!vtBH5UG1nkOddlvb-=q7E5pJ1m_9=Y! zx$L*K^LbyL-YtK9$PexB(%u~sesf97v4kXd?W}jHC2KPuC+YeErcyjRjv_3uCTnOj z!iq6=XVqvEHo{f%-dDK$_=sw~bR8VIF!41<4;ib!7Gis9^C8R#>0yble_?u?JvnNT z!xDuJvlIBnw`}!m@h7d?pKpqZ6Yx_b%>6O%SoZ&0-roJjo!H)!=e290Gf*&s3{kO8 z9Iky!?>OQY-B)+lXsNa*zvYDA7I%=9E%=rKlyliAX=~kE(c5CCly`>s)Q_KL8N)^a zJh&gd_%M@HOou+kF%Q_sSM=awl~*-RKDP-Eecc%=7{@x56T(iGPDyVG&_SFHQe-xfVVU% zznb_@j3D;EEaN_lc{SknVE#flh*u02z`R{fC^(kv(~6sXbs+DFYzF?i`4+$~Zd$0RsXTo=(#1*v>d>2dw}hBSe0y|BIY z{2iqLHbo?jf)Bma!Agz_oGhJ4upE&VXN5Yj)lWh&{v&AYV_*f#SqrT~q9qt(l6=c= z)Bord7O0(xBqbLkI-t{LNMUL0gI)DjGqXJqLa*ZT7Os&Jdxhv_R9{;w>gm?c75;e4*YZ+NZF+P=TN&N(IMblFFS`B%^PuMqja zmA5ewukCwb_QvrSQ$^p$A>Ze0>ci3As~tt(wqq5R+oCuj3oDVkowq(xk;_TLm)m=h z%k(M3#}PyKx0pa!(C5Zg>{Wzto!w;F91oscNeJ-{Q&-15`OI`FReuV@JiW~B3{<;abWM^8o zGwZ(*@TH)HrmFp7hA?%XAr5;#T!|7A{^Kq}K6CM=l1qK8l5NO3>L7;?*)uy3;nn&_YsWJ-)xu%e@#_NnaAsF;cz@j1NkvdjD-RS z`Uqbk{`uS9e8yCQQnf+Lw<7)VT`{61kj)(5F#NBCQytibQkN%&p(MggIq5(F5(!F7 zSLy5~CPax+Qgf`8qp)G_#LKUO=rJX*4vEo-$v^9pz<}iN05pFos4-(F4Gi6ZFij|( z8dM$TI{vZ*JnwQG*WfpJFmxyWXVo;eE|sHp@v*a?Waw$2?r)|HhpK8N2~&>1MPz_` z*0dxPRJEznaZ6dddhBZQ00LYU6qL#c%bMoo#v}G*F)k3281yWOD}y0V2~#YSnzj=1 znCAHo2EY5|Fw4DE>Cq}^i+?Q8+=tEvdH2$UM*D11qFd3yrZsKQI+V;VqCn5laCi&) z`ZJ&sB*w68n3hSE4)*aB?vjBru5FvH0BYWZdkHZ*zYm_O{}=#iy(pSG!K>6{1PWFa zjP1so_RjuPcmy_8$^f~~DUrwkw&NJ)d_o#N0L4X}qNtm@zH;THpcaVBhQ!d#&rPep z)7q!|O1zcaI&BC^>Vy>fWu>gMG~fpzD`tCCtc*b>a}onTz^s&+AJ^Vu3P7@2%9al@ z@N|a<)a~$>yrxgXGD3A8&1iIyL4So!gfHN~p<>wZoq&6`Sp3nWo^pU6%v4Zk4{Z8} zleLuQW!lW7`lPCRA{0n43Deqv*729VtC)g1GjcAU7nkJ7If;f1TN%jMft)vR^GNiw zC8%ySfB~%|=w0OT!=mc0k;+0Ec*tD?g=sWfJ(TY3UNdSSUc5p;Z#Iv4cP01D$6wX- zxusR()Co;A4Y8+Ewp<*t{PR%2@A4)0dEWf(x8a+jtDD=~_1n!9$o-vj{A~C<@%Hfc z{3LQyFGU9VVd!-pW^nnhVB;ya`Q&WeZ%e=1<8bzGjn7}%T;Dw_nZv^|O`!MAiox61 z`70^jq0`&lJC%)2`1a84wXfz);BBwD>n7nz5$V(>2*Gc^x#K~g`|rf5l$%|#Z1Xy; zVBT-ydP-`4(GpvsISoQy%KV(WoK`#fzLJP=+SI)k8on3%?-1}d8XDvl;;g$Kwr@arQD6E8oJ_SL> zE^!X%*4*#W3Wcy%BEg%E)akzRUItqnkW zBuviH50(f(a_&FmyHj78Z6w`HM}h#qrEamzJ(} zzyM{0gEIJ4B_bhEg8 zclE$frx&(7613oCnx@n9Y?F@JS|4}<`(3e7C4P#(e?l$LA-4d?kG{x3%Y)1wbQrS0 zni27wOKUM$4lE%Kf9~v1n2yY!B|9V)**7P%hwCW6e$L#k41~iGed-Kos{2I(aILOJ zb3|Z+oP4McR}~TF<= zCo~=thyqBo0%6(-=+1@p`>4GvNMxah6H*xoeAAYmwmtQQRKA*uye4*E_QnZ2eHBS9FW$J0ZN6*j zx^EVFRA==&d3`#2JobCo@S8g}yfu7ne%pL|IW!btXf%g?k20`Me_GI9D!#jYYsckf zs_Ni7Af1gxq}z1OK-GsSSgGDCFpsBp5nw;f^JAbdIgjUl7b%FWRv0r1+fD-PF2t8A zh>pf|r<0~NUEQN&2DwX9K6lpwhtHG|;r&4LcEptd&g`@Fe?$YmOdl4Q|6i5D z%N)L`Q23I=h2tg>7Vh;`EF6rOUPvUglBo&)nQi-jeX10b&|OF=LMilqNS_Vj79wC!{Ss2Yxz zgioYfUoGXNebm2cW8#u051=RfmROvkZ#N&ZSv#1#m1v4@iA@900KyL`Uxye24Jf$X z$p(!b#;0@JJHQyp-%xjbQDY>Gf{lja?xHAS4-r1dzA{fZvqBcQLCmTm7YhvA8J&S_fIA4lW#$yB4*4Y*?(g6DeMuwi zI~DyPMZNEH8}Pli*3DSpnK)2Ah~MVzr?|I}n&nl;_xV2@xdWZ-M)A zXxso~7EcGfNHk`|8W z4WDqB6e0wKAn9S#xeMjiRu8cD0^o*7@oI$2+NdRZR2JM~xu~=}SR{lg0VzmI5);H5 zOG-seRKq}l+DbHkXe*PS4iuPhO^YPJ<3S*Z&Yg6Ci?Y{csru9EsUsZJ_DhvGPl1ue zXMhEBB^N|3{#wa0wMAtz)PEiqWM;D%3~C9PJ&9%9=1mLwy{oYH$Pmr=W3wqwCH99x z6NYmEJ$9i^9a2@E`zlHX%)eGiVUjK)+v%8CRXJiGDG^@UUz#2{lq6p(_)J}HQ(E)f7$BFr`H=(_uh zPu_Xn$J%)x;r90X{SCjt?>dvO@!5bEzEbV}x1Q_u$L?*-?*d!og8UsXmg{*WPX5q8 z<^6ia+O;2n?t8HFHl_HYb2NKw@KXPY(&H}^S-Z2x+k2in@%-U*<7J6){rc+vX905G z{=N2IAse>bB(wS;T=*u3d=-{OU%l>8d^^Er^*ij>L`U=6S|j&-o{6gQ{3V<7?;vrC za04G5X*aYg)!K&1)ibZSV2HlC$1?)1Jxlcy5X0X)>h4id$#~sSxuc)LUN}(>k!=09 zf}d*oltR$R%bjiJoQrSpyTCXcpZLf>HlEL^%T5@vVlGEv@!yNx)saA%n;Rxc2g;e+ z7V=WY5^;)0*Idfv?0gcZ7~03L!v@mBuImmwc-QM@ux+*W$l*^;Wg!A$+FR<0 zgi$_Eq#K=yW-y`vRQ!I6xuJ_m3cU*g=zms^5R$qJA-7KztEOAKE5RXJ|5B5Iqd%ds z%>MtxO)z2!Y{T3Xqg)GG0z!yJ2itMMPAPAcO*qw%@O{fmWe+#&7EvUW>;Tp~T5=N? z55N}97{3|LZ7UY3=arQP6P`io<~ojpU>_P~(O%2om!~pjGqPEx=1=;5dj9h}2J-j# zbbD2be48^g1f@{ka;q=wlT~}OM@u=XP+-s>#AbptlIAs|0Jiab5J&jTt=*Qq%@^JY z#!UV+Ku9D?j)sY;(XS$vSd1VIUMPw}EfwI19gnwnsb?{snFQfIjas~jrz<-6%7#F^ zDTr|)bxh-CwTh`8p#+8go*jq(zM2fe^v=$zh-bpb?=2@X`4-$71WV6o&&kA0A}Q(r ziJQZ*B%mB4RF@r4vn!LVl=hq$#Bb>x!bsxf~Qx3We`}l@zM=NWNr~x{i23BQLt9O zd#ctzPW*yA;jJ%MALH9T1XgrHHLg-`4#4#~vP?elC@CFFlc>=HFTHzTua7|4lBB4n z!8{&!jOGR}e_M`ll;Y~+iWE1wIEu$Y+i$^~M+M-zVs-;i!eer1M}`v7E3-!tkuyuc zL8Ed4z7PTQy=)kklP0~WPO=o;uI&dEHftFfDVP1G#VbT6nq|9=Su?Ev{=(2U$GV29 z+24>;+whU?x!BHWck^Q6L3ydYG2WdjVZac2OBARYzy1{{$e~Y%i=-SM((q0z?brp8 zD#>hrqukeV*tUdEHO>8F3xBXZzPMlmsNqf}YDvY##PHODsu*1NUVW^LF2%kxPZT1s zb<^4YipB^G=;wVLGOecbYy#BcuU9L(`qWJ6n4vh#Npc+{ zwcX^0nSJZ{bi6;6FbAJnBitH|@N0XG8^*_CnET1FMhlVfk<3lH=r{J?x8m8?)BrW2 zSvurAlfu@vxK&wC$ZSXaCUKeaf=l`((KF*!ebUxx5HI9zc30=DXEX@p&s?H4b#08! zPZQsUB?Pk+@aC=1y(et`Jz?0YrutvzgQf24g7tMOtkF8yy0e*X20hK0-rZFDnBv3S z)4espy}1j%eu>h_WjOM5;&WKR=OGE1I@Fya_Cp(YEmq`eoQbf}nuUB?xo<+n$M6)W zT@pdRe9Z(-z3{7vvkeF=wZ}WNNv%AKnR1fM4mq}xmlWSdGI(P92>tV`0{>~WaOm?; z=oMa25ipKUicT zpXThYd-VGL{2oardquBg@|$&_m0M_62XfoZqrr5@I@p8?kG2XRJV2x}+0O_7!_`^V zF-rg#A+d2zrNxh~#G17W*k4@*z2g#dO3*?`#V#EXsZ|uEe;nOQAeiNj4Z=bLJVsNA z$-Yyi<66WK!gEOEegR|O$j?|Z^RfS9n9j`j*Rr$TnTQ?&-PjnRbQDmw2)AHF1P$a* z(y4ivw|nc1e3AV5-pU6opFf(n&8CzfS{oN`7E|N@2^`-R3UsryQm<03DN$!Ikl8S! zXT_J1sKRZUMFgVCbEX=U0N!auOaPOGIwm1h2)MD1^>MRdBmF4)hUE)p^KiYL{)R!T zD;8ehIw|S1cgn{H%SM+?eM3#nJ0DJNmHNfp1+2|P2!TDn=HtP*A!ycyg=B0r>}RXe zs3B&KN_*zioQ>svyaFZ17xx6wp9DK1g2I9%iWgMoip9*-C6xqsfk`|gtILW17F$^Rv zA&BcS>pMe!{cP96ltc2-MQ3Z;;jmpm>esKr)GTe3EYuDs^FpqZ@;gI7e>p~lS)iu` z8>eXq^R{4g7+7In3C6v!Lmv6pDO7S_>@L8R4bp+b>Q2{T2%t$~)qqk0-s1uWVkjN2 z^}^Q|Rz72mk(wsilCYMenVTSbq3qKFO`-%e=Gk0%5NZ)ZNb{HAz35wGog#0ot-Khb z7@1AaF(fx~h)|qA3j#S7R90QfMojHKlZ1>Cy>li~x&)b3VY$IGtrrbZQ?-_xQ8J#x zX~zW``7&WahY*dg?f-`bDVBPt`Pp%?VJN&0bu*;D zLwYp(ez)|S34dDon+@o2*TT>}$iZI(uzZQ)!iJ|FD*U|$kidI`t;hGa4mWjrcBBOw z-3|;KR0M&3;!p7`x>lw^sK?&ddZaNt5zWd+-41wDj zSMO}ZA^3e-QNy4lVCY))RR%v2$K%6^GeHCEkIrn?Pe_}%CMFrzb!vG>dOPZW82eiY z&OLw6&FWAM8h7~|vx;_|?Q$Y<{V%>K36MdQjj{<4H%MK&?lnD(jF;4)1HMri;N{AC zDW~61xRZXT{u*gYp;!>>NRg40r&T{L8UbgdmYVRMcq(34>?fdbal@(Zu~O9pp-foH zw50L1G(5gEOOhhkK^a&|g9ngk-R~#Eu*280p<;1!TSfl?Gf)J?tq^*vbnd<#O5eYgoz zel=~gepL^W0FI-ITofH10b(AT6g9a2-Tk4Zez**l+F`O{4Bnd*c-BoXO~#Xb!2`Z( zkDOW8A+Db~L(t(v3DKJl{VVA&zj=<4I+%SoOwQ#>al=DQd%UAV?H)%*P~i+91Vo^Umr zAH;_&3GIq3bpEzMxAm>H+Wq+DH8GP_%ycy#F+YeSZjFxFM~`R9Vc08Df5s!~*{R;o zX0jLfUH((&L~cZy*Y1_iEEi_JM*V%c^R0ZP+vgWirtWD_ke5n*?XM6=eoGJM8g(kI zeN!sbxK4p8TL4vwE7aTi3&LAek$7~AYdCGtyITC}23jBwrdK2=H0+m=%@LD;9fGTh zpAGIOf4AGqf3fFtnm@>>16_T@-_`077!fp0nAd?}2)OT62119nG1=;e^EH@Gqs`ok zlFJw5-?^=%8ZotK9F(^xzEy+NV(vO+=J$s`_Iey@!#vu#397LihIrPQ8ABusp0uUWVMnY9|<0{ zmF1Ss+R?FMvDJy`THTOj-YeU*Mt2OQg!A1W=BvEAHJImYEu9qXz-WJxTQV|?riz^8l zD5-|SQC1Wo%D3ps_3Im*+`!{Fe~)zUBgb>Uy{LRA87VB6ul_go+kEfI%8*Egw6@-- z*f9Ksi}RbgkKd)5|4Oeau*4@bLGodvo~p!G zN19{`+zYRWqA@%_S@@}__C_vvH;m%nB}3nZaPO}-okaJ=E#hzC=?IW?xcllcA%-a; ztBX3~U3dah6+2>m92_D>Qtr+;gtO`Ov>|Bw^`-i4=YJ#`{CmrPty}T)i-FK+e94=5 zp<=_kW)#nV!*1(Ff4lKpz}=Xt*mK|WuuEgz+dYQBXGN1Mwd&r$Z;?mOp{2*JdE0kT zEZke^>y|YnaW|O`yD~zZsOPQ6%8S5h7ty~I!LKKqcaNDi5i9Yc#}n_~Bo7`N+dhI$ zX>ZtXHdxmm_jjE>V4aop zM(9&nFO!Hk>Qm2@VKD`Zk#vp9w7Rcv_e_t8P?gUS%lr!6IH4)e*w}v`eRZVe1xoZxKOB%d_AAx;=un~%O*o2dVp>{6 z(5k~RXy|gJH9hmLwSTr^3)(|eiyxfWmt`|9f=Jp)r@0C1mT`ufLIFnG2!N6j9+pB* zxytx|d)9APAgO`dmgf^mDCn@+)!|s#C!$1hR3?5KCc^E6U&7S*tl93G{)G4IsAg2O zOAn%T&XB}(#N4z|x`i5GJ!SRqFAQo2{-4yg8u*t+D@K4-MHUYh{1`9x)x2@-;gWTA z<1)ty6D#r?&|y-|Z51#?EA*QwqO{Hiay-E8{?wLXA7z3TNzZcf-J+mdk8qtdE+V~Z z3d?(0OU}@+Wg<0N9cvsUFquC!FSQoN`TZ0|PZ+r?_`t}>jmH|=)RH^Yi*HV~h5nIV zM=Pc3D^pHd0&m4r2nyl`RSlnISt(_1mTT(K7q@-dS?~!j2efgth8dCL?~x{4e@g%C zu$V)U8k=P_fLc4L1sf)xzTV>9Wcr@G{Bqmfip|LxF%(tn_$$bgbsQd+4sfE08^h5B z+tYb>GMHpfyK}%gEsVo!LV%uW7dd3EnPjA$1(=G*Ab`7S3Z3>lwQtU>O%91S(gry$ zStvyz%Eo$5^g@|N>BA9t_fwc%^;OupBCX38lKAT5Sy9ArkGS^9+527d%!oIGv;P8& z>~`s>2~-{FA^dy_TVlmWF$ zCZ9^4_vRNR9MV$64d>zytMmP9HIX78prmDL=sGYAjKi3NAAOiV6Q##Zt9F*cpG^@) z>kVpFzwo3Ymr*yz(nBi$=!LCo{_WdJN*T&E#_yg_rOwuZ^nYB<+VjqIV!(?Xl;74J zY|_0YH`m5+jqy-Kx|g@c4#ru9vVe&80PW}`zbg7EJ=YIL&Ge9z+@uCpjV~bVJ&q=N zK9p?~?-j*PA5L?s+~j(QaSj;0P9g6*T2dowXFUKC5=OwC1c1Gwi7%ok;Ti3XeP;Ij=>`h zkmLGf#h@ib@x&wLmG~{|K&>mCf%5zQwFaK4T!~+hYT&ecI<(x*gEJ(uPxH*Ph#PkR zd1S^T1xvn$%A7xa!twgqzxZnUL(t3!_21nc7=P60yj1K?@G}F&!%pA*^vTPM|K`)|>z}CCLBp-f z{+-!22F*T8u;~}d6VYW#ysx}5yEs`OEcRF>slCvxv>q(8rLivY%W8^$B(KL7g%2WF zqF$Y^$$eLqVU3%l-((Ood*-)fRdymQtcM|Lw++ue;?FQch z*H6nOT0-A#6~&@5{GG-;*z5kitn+_}vNM+TM2jF;uP!zRPKDAsM=|eA!-qkrQz^^! zWc%E|D<2s-q$Z|ws)Q7ei-8wH#&Y9T9J}&0>62jaY=mU11|Uj!Z1N}}x5eg*sHe_W zF~k3YB)e|(c7lJpV2fTcO<$~to&qD8u(lJF$Ws9xAVjMdLSnzBqe|58ir)ndh5C-d z56`mF13>$ENmX#;877|O_wUJE!S9RqM5oQi+DdC!O(hR`E1~ry*Pq&GmEkD?iM3>F z`(>d1J=N!jN1ZRKNuOJ4Y$J$-07n6}`ItTkYU4BX06aBcE=nqH`8-m*=sGTVRYq6B z(2yqL8>F5uvBXBCmQs9)gc6bQ`tP&=9v57CRCohB)o$s{a37D*kt#W-Je4*Y;kfFg zNYL^ttzmF-H_AuYP-A#sc@~A`f{)2SYBziMA_opn^F(Rd}@8sS2y&m;o~XqG1*eFWTxM^e&H zcRM4}0SZZz526v^)+fdCc?w@F4a~1{L5-5ZWP;sUI4HiS9aAVzW=0HQ#))8gCT`kV zc+v7YF?!0+weF6+d>H$D-@dF#HCC;_uSeptIdBy1cc_4;RtG@_A!piTBxNU4{t< zIn<_M+VdQTUy7q})lmege=22sD@Lr1MuUEUX~aL3>yaHfvXyb-M(v9k(7~bUEy0eP zx$K7PydvT_&=9}ja~3rz;pDtiCj$HC!khi}&nc#OmjI#K0|WM{68OCLiI(AWkUk0X z*ZzATHip4w{%!Lu77<2uWRlKG?}G4{iH-mYrmi~GV_31m3Nb2|0@9rt(V~nPJw;G> z0gW+6QS1RI{MihS4zyWG?tpMHq`~=7S<=u5o7bz=OXlNRXe^I!m%Hj3lD0OMwiaNk_G?v4jTTAP?);~WzTB0w_USD6|N0}6C^X0 zsa)Nu2sYk1<_hO6e%)5`e`4vyIXqo)np;9V`L87EjePT{vE1+}X!Uh)NSVxjQ*Lgg zWBrca!C9ym)$Nr?PflYoLgNFVDz%`Lbcp!f=uk+)Yx?gXjq9j$D{H~wwyuD`h>=C| zVjwOMq4g;aH?NNEg33u{uN3HN&{wS8KeDd>Bk_qZF$6YT#PP2S3D$d1YWMHi{EGt)AA?q+~2iYORSzG%0eiyJi!B z3336jDT}6gEEAAhVJzJk#!0&JOou1I!Slu(JX2GIet>?~szwXG8)Gti1I87V8bwNw zqQzT>2OsTPW;x9Pz%usK7ofxe_`IXX&i$!9HvRZ=j$ykQ-fHY4a&J&@a{Ib$y55^K zQZFSDWicFD2SrnZCZm=lCflG&z!BR}YGPi9v{1{#t}aPi*5~^<b!$SdJU28TP>mBRPgdXE!v; zcC>Txi}n)?oqXl1n3;2E(!O`SB%pi8%4LLf)8`t8e3}*Os9ZdT{JihSAtRG>C%1rZ zG`l;8rpr?*A-ZFUByfmJj^Ge<(4iX=W`i`EuMh)o)o^0s(@(ufR*}536;IL?PTma?qW0s;$4xmk-dRS>0s3(tX`{jL4h|^4f-D8{IDQqN7$* z|7YMVIacif2vqupXRw1X8!5wkINTUcjDbw&WqhHsU*x2t`Q^PwJJUBt&X4?3XTT!L z1-Dbrjhb62vQgXc>r$O|35QP`Ld*<=45|J{JxgZW?+bv8;U8<)67b+@D>YPfSZ7JQ zD}LwQvkkrs92;Le&0M@}rmkTVXEvPoT_0{;PZb7FU;I0#*w>gEU5ZQUeraRx^fmk0 zVB)v3huL$yD158bS&&C`M8+5ysJM;c?!UN)DgH28+A9M8Z*A*E`_QL+zvTyyAJt^! zW4f5H>SM*1AO!o!Cx^aYv;Oa<_+M9!tQP`Q5FU4_A_CO~4ychVuT`r z!v{XQ_nZ#4DWK8jQskN=bAx%+IZ^0JPWq}!cd?FuXT`+_>gA5k>pae$Pdue?-|{x} zb4n%FH0q$H9RL(Wd(E`s_!6`Mi!vj%;jp>K0w-<}INCW{o)O&@1=?bwN?bw-gTV|l zw0cO9B?N-%4q(aJ#xgNWaA)mQ1Qb(yw=RI$9ICM)YE^Nf0BR&sj|aS>Pi!k6KEuz# zQ##RY&M%pW;e{Wu5G-KpM-{zmA3Or+5b{#AAMlat30^qyRai)hoqEsB>Ol;q*CPET zy1xY)@Gs=Ahb+2Y1K_bC{v#3zEuv}zap>VCXh6BsM*kZz0N!V2;j%12F6wT`Z&|0Z z_R6f}uh6CSOl%szwf&JF%kcEj>CE7OTn>Uk&E#dyK5g}#T3Iwy`c{VYCUFE^BO{|ANp1cLOG4p(*s&H* z2j)cFiD9l8x2-0hEiZgyNy2A8*ewTT`9PjyxX=n(&@xp*X}$BTs_ahI2`e-9M6m@* zx8Y|jBXIlN{3_I(y! zd5<699r?zrr3K$lRvICKyI~!Kai_(z@cM9pdy}u*BaSKnTVU^QH_r#OB|>8dMgp~3 z1Vm{|D44v}Rv99u_0+WE6h1dc+=?G}8zs1Bfi zKvO_0c1*Hr*R+rCeq2IODLmRRg5qVCLN$M1qwhI)^D5ruZ;sA`>gzZ5m(zxSzj8m^ zk84kT`1?R(iX^BUTkZ7!S^($$)*d)S@r~yS$2*t6dxwkFo3q=Iz>ayDbp(u-QZm$tLpG*Mm^^o=~r}cTk zr=ZEt=g$o<xTltOD{lPi5B^y%JuuAas zY3sEjQ@r^}nBryPKj))*pC>WN>YY0dr&-Hmet%TS``-?JUIrJRJ^=aH@(mRPFcfzu zjN)pFV+J}>L4fQ+z2%2@{95wA0P=Ou7FK*+d(DbAnT&gY>*19D%CV7gR4}bOtfmlf z>Lp-8)@g~PJBx)dPO>z1=3(iL;x`*~?sSSdM=J*o1Q|VIGG(j?17F=UND0kM zp7)Cb0Fp;cgmeCji?6{l#S%I9m!-7W9&&{4W4JuE z^DMKe3qypPElI(kF9Yq!Fqi@&VZ9}YYgvyD7)Moe-rFWlwxL*^1ss7D;ev}Wny6A$ zU|{!fEy4kKH347(ZGaXlhEM8JRxO4GDuhC69M-{@PK7qm&ZpB>jzy;hvPyE)#CBxK zzL>>@cw}nbe2sI(`O*mX>IYlWJb?irB}l8wJ+=rjF5kNUDup0%;k7HPwf_Y#j%HJ0 zxO9>-vJe6g_)g@Us7k45i2xnfrU1%)>97(dDrv@CK|-|%hHbDZpSK4?iS_+_diUx} zmcm|; zxLqwVgshBNt>eMbqSFeXnCQ;d27)5M3G=;$E=Sett(X zmjYihuyFxDwJKDEQLSJW9ex7@2rHByJ8x7(O=|PnGX@zS&&DhNh5ucS%pV{8qS^Nt zVN>vzB>0v+U^^!9`Kn9&0gwIT(GJo%;^p_kz{lypt-{ClhG1hbSE1KaPw`KZ{f`}c zk5k=D3&+Bwy%)kC@PGfA7Ab!ndVSeU4Eo2tbx+n1_&t|GoVoIn52b6lDUfmkO3fJWB8vV0h-|G^B*Hn6bWSh*iH8$MM(A+;Cyk4I5Jw>U$mInVVUgUc1yzpBi z`OtE|5X2YNd7<67L2pGAwkfNP6Shi}V}~)sc{r3i=p3s`b`yLkx3zfqD0<;Lnfu}C z=zR0vbnyL2@2l{KixCzUYp2QQl0qHRX|o1DLo7lNu2j>n<&UUtBkN!PyOtX%s-dpj z(-_B*ds8~k0|?;I#F7j=$%le4JEmv|M4K9$Y@Az@+A*-pgcIn(xK+~BqXc~o`2KIG zpgC~EbOjoe5IQIMlJ=#BV{HjxIY|S2@PKSe9Gg3Y9o;B))?SAm_Ny{TBPg0rb>Ob& zbNE;O0uNeF%(es?>$KnNwYG}AeQsvU5Czw1uU_bj1XSDABH_TfXJPN z)~QF$VN8I-V=|PKS|p@Z^jyff4T)+mdW4Fv(jJa|-|QcGnn%VB$VG<|63U&}48oVw zeg9%ZP)yftr({az!U@M!mX%ycw`FGG*dVxXJ7T3s8SUGcBlw&AjQX}oxLr#1><*2Q zI5h@W4H!LU=<4g}^hpn|J@5{d!$JTHcR+nd#lWfzoz&2(8yy>^6mc5a4}M|a332ng zN4@$q=kAiKqb?&UrMtC9AN{8h!1hNLa_OO%3yC$mf6`Zb3qb8VmcX?bfyc9!g@JwdCp|c*vmJ)cT); z!G`$FrQizA(CJLCG7eVdT+Q`(b}S2t_sNLoiD(DYOJ-}@UG-aqb*bn&M&L!&9094S z$ZEN;erZnW5@j3bEn&iAz1|IHL~wnQz~eHY2i+W7<fIyRyc_um z2tOaewF2X+=6ZrcQ+$++(ZnCbpZEJ78N@9DUs=Sj&-?C6gMX_AZtUq|xab&AgOH}D zyE+E^$NS#`3V&8}=A)<_rTK=D1cC@Up5L;>J{FP5dC|Y*Yie)YZ+@}+LiaJ5?Z;Cr zdOMH=Z3NK*pF|$y8>9~&3s=HUp#sv^4q;0Ya={O#Kq&iY2`9L$KbU8P0QgKUo!_@R zu3S|F`d@6U8EYR-P%H*s1gfgaHZMg#JyZ4QHn{k(Rn|N${e6707Q%yJBuNQzznsBB zVQ7wKLpTYmC7qLB0{5RTf~WgH9luWa10H%BzU~ggjXG)7mFoIjP)02A6>oT^#!^E_(k=HoV~W+q^#47Y4t0MaA>96KoP<;O}B48AOL@ zlX9T@!j*1^MKVck-;8z~?woL~*sGDP}Wf%Ff0PhsMzlc%tyxx<6tN_dmN24*22mPTJz zgBI1uL&EEAHVrT7PU!dIqwuF|R(+B_}P(TY|F=FA+zCK~1|WmwZVeMu(e*$d%G@Mn)I$@COE z#TDTR;%Lfhu3^uGg@0{A{X>wH<)|14s&e)rSRlh>oDfRehF=bftRW3N^0uUA)3b$X z`f768X|OYGOC1|lcf~=rYrVIXYy05zOq>0%IGQr0X?RX_@~9<{ciG&27Zn#)FPvcm za7}A*W2&T`g=mVfm31LN+2UtnQ4~fkKRRhOx-G?@x^oy@bfVQ8SjSja8iU-w_h~B< zfjomOsrHDzjBf+?BPefv6@8KIJ*o7#zLs^0R;hx!T!eOvQfA`5GI2?EXw90iYU@zL zd*lk|Q!R}7RtlEb=?Nm{2<02D+y_0a+o}?cKm2xemT(`?J2CfE48>%ms8wlWRVm$9 z($vvl_Hz`W_H+}4HFRx~?kEKK;w78yu8H_c^xG5-xVqj#_89`m#nqB* zokvoWA7e~zA&(`jkVO-e9M#W@p@u}zVG2|rtKmScOBdc9Ex?boshE3zmzMxK@^WM$ zALFbsgxWL9_hA2&k_RK!o7XXFh|Aral!V(Rr$=)R$La61QV-aclS&!4n`Xk^6i>hF z$l@VkH-p?n@Blg@94cvespMlQ!)L}A=sMLNDCS0oya+NhE{T4t=@m9tj+X$Z=#HY; zowaQ7TGnI}Hl{EM#nYgu+_*kXYNXXB(PsTgmJftfg+0#6*NsT0tE6)=a5hylRP%Zu zF2A{um+GuH?SBE{ID`M?u>7pu@ZNfMc=?-iLHw&y^uUr&5JvhutWiFm6w`XYJ@d@_ zM_>6|3E(&>z5Zu(gE>x(!)4=Z;M&L}VgB?8{@%%XPwCU7l56c%aYZ@Z5W(~N)Q&S7)LvuTio z(}H`$g~s=j7sfsp!do{bhvN4{@d1S$vFAe4`|Sq~&K*_fyL3w&7BXg*i84Cuq$fzcu4k z&$-?LQbNLO-fPP&hQ}hMglpr{Tg`l)=9Z&IuNH6pVT%lqOgF*DVpJS=`ne&uc=Ejw zke=>EAZ;d9K9vl_NpVZ+zL@+?n3Ubje!#YQDDTdGRPgoipXCX$jMbt^XfBW@-99{# z6prvxLCpP2$}9&^7FwpR9-1$aTwf|(yeltbTRtx}zS!}1;Uo60R(wH?g@km>cB>&D zf_H4b{^ARdU`j3qQ%h{WGS!wGRQ>KjE}YTMTN<&9Pn282F>Zt!8)Bwh+UQm24~I`E z1HB1(E^Dge3N0TZ7S1M8RFQ?yQBy1VIS^}$O7TeMsMpYwdeS2k%mUa#s9>Zpr2s8B z1UR#lDs8XQidkMI$#N=)(#AqiAA9Q0caFk(?By7mA=m-fXxZbi-z6sbwfwcS_x4Vd z1=^zodAuAe#qW7%)xUt$XR;)U1z|8Hf3&U4Vi#XrrYMtgnRV^Mvo4- zHmif2od{UwJf?K<*ubR33~dcRNkvGi0fyItwh|#Pp!I5)i!Wb{8ijD6e3^@=_;k)l z4@zp50#REehf^P7qK-(#LLt$SG9WoB=cxIm3s9e}WFKaVQ~ofGT6CN&*grDkJ%vae z?OH4Tor8Iw=9|(`S#kyfv}`Jz(4AggBkO(LcTqv1>JV_P3~PLe!x=s>iRwc$C=XjM z;`lU8%Y9e_)#cvblCz=)orwxNM#qAczRbD3?DvfK#SG=#jF?Z`JKE;a;xBj}YNk`C zO$R5spN}moHPfg(yswwehKA}^EG$reO=j~ibvt~kaoS6jNvc~LNAt$E3NMcRP=!be zVN(jH1$KVrfT*|Zuv&DJ$!B4Sn40;BxPL)`+f^IFXp2k`x89s?=v(X3mm~eS{6}uO z(Dr)_gfRum%9VuG}M=5a`yyX}ots zrD;1FokBr(Ji^nM5lFF_#CO`*^{|#$h=pG}`#NfhV9g4j=3^pHvybYOIRL^MYy@IK zTXqbjx;U+bB)%xa<2%#%su8P!kW1RU?;!21bZG;jG}Hr1B#%UUWm$_|xy@U*3n8Lzv=zV;VpL90&$kF|EY?582_tD!My$ z>2I)soR(~~5DAnfaS*2gM48IF}dvXis{@E7B-3XHKh;I@pO-FKR>aXlK3 zp)StJ(#*59FiCVCDEcW*Ty%=i59}Q}V#2-Q10KEHiXWZ6HrKm72 z+!n@{9oCs&p+Eb|Aj7n*;cJ)$<5+0a{}E5XwQ`5SboZ5|oiK}m)X$Cny&~e;HbI`p z{$bxuk`o%6iHOgVyoaIiLxSI}o%EcC0l?esG;~~kC_As+<+|SegsV&ZrbosiYSaHJ zq9$u`93@`HknKIppyR{W_MgT=7G{gn!nlZ_Hm*#}c^C`#Tfg_uW&qBC{B@!4-_saF z-1DTriLlMxI^K^4-zR_ZtIfU_+sge+k=JhPJ!otP$Mu*ZX5XWQOVDNVZQ;Mn6S2!3 zhqohNJ-adlm>pbjXpO4su{;=p_vK;HjMx1`C*nS5UJm?@0k=O)9v0>kiisvOkO)m- zK*YBX26PM8QPFYIJX?KI@#YwYFEx!(5E*)_QOgy1$7s;D{bvIp-uvHnY$s^;wIAjQ z`r$^TYq*m!=$O4A+P1$GJe$v~#Ms%CUy`3z=4l#if4sv zt|v=m3RDj#MVUmss=y9RLNgc~Vo@8U1dt|oHXHM_hV(DCG~YugkwiX5pqQHF$4iHL z*PA$z=UxKU=9IW)Na*?jG)k)~$-K*k4`?5eh;TD_1~aocA(S>%QgM`U7iv7$jXir; zwfoVw$u{F4Ojbuninr@`7Gvgm!feB=aOs0kcz@S$r_O|?CUhjmAwyRn!!{}9jBj?6 zdOu&h3m>(>?KC0GSb-DTx3Ai|SInBGz0lT$$T{lA^*@ zJ*zN7%MPTji_@Kmu zE?q%M3#dvmO6nv5*#m=3E`;j4A}rfx_RUh6SCqGCQJiDEpvycVKm3u83z4)$$`wUB^ICc#Rxbk%^aBj9 zUB1oM45FmI1*{6n0}FRIQ1jRfS@Y4#b@B_H0r+CnKhdnDVFr4K-Et!m*R`I^oc+sL zG8>4v{jNK3had4HnIbcEOGMa9=E}Y(5tdL-o0HJwg=w({AT#EbatJ$QA}}&ASBD&# zp%!vB`H?j_AyJkLGztFnccX-ig2zX(*0n1@rj#FdX{;B|Y?dF5y1mSn(-TnlTBJ`~ z^;?&ameB~O{?YS9*S1lq&jlgpd0I*@8Qmnb&f98SWBdJA=RI)=fN>{g zo9kgNY)p?NG~*aZyI1fQJh`i#T%c6Z+8TbbbR2_fWpAd1uz-ZZd@IU%J~L6Td59L_ zRvA%4PR<-n2Zq+Zt0DGI#AjD8k*{6-{LFSm1zpK3KF=UJ-uijRp!u-BHxRWh6vMoz z>A_1qpO@9H^q~78C}Xl&_`>jYq9wz`bt+jV&eglbxI-4MHX;#l79h>zV7p_1dts#G z+ms;rHX_=z<@-dL!6aR9i8Co{B0XEBPCHyRSX0f7JY!6#=KCP)j8%#`U{#MMVHHJV zm9xLZ9wmtrR&$q$B21Dj&p91`Plt8TsV;A0-mHmn@bT_Av!F1sl}~x}2fNsx4!XY; zf3^d=lE28m*OqEd+L%Y~^^f4xx2(x{GihX7ACcpqJ1(`PBr?~KV|DRm`qZiMo)&$& z8NO7DmP`Cd8j$Bk=08}B+1YY7_8!uf6Mtvvdwn6w?Sf8oR8BzZbJZM?pO9Fyk(j9| z{-XH(U6pJE(;s-2v7k?Rb`jOi#1I}@uG{+BGgUnS3vna>O8m25?SID(NTND*LB4wx z+AiJ4{Fu3-KRF7$cbhIg{y2F(d=h_7P7J1-Ubi9;=bg6Z!`TwIBW1Tku-512Y_|NTRH`+^5!5fvrza@fInFqr15T_!&MguV^l>KJX6$g~K7V}TLH z^g975F77s|c{8wvBE(&Gr$Qr2vqT2i52A-dp++E*{l(+!3SX)ewLeob?o%l`$tuUG zJSUYtBO4$jFy4uZmMjjbU3m6lL{*w@IsH?Rel6F-<*oNA}DL?myApjjbX&VWL;(L_Ff z!bMRFi$!Ck!Z+=}M%kaiP@{w3g3}H@N}%W#DQ%o3AvkL9kIqHE(eeodA!&URt|TUf zW*Ad7D>EKRR&*r#ga!zj;%X*2PUBFjjxS9HfwK<}iOBfF*5_lFjy zkm1L$mIYJs7EwpiOR>taY!r4Y?{OS>AZy0zjB7PhL8*5)5V zsPbAL9j}A8m9-*lc9JWOhNP7)j3JkyxQ;{$;9H4~7!@JMEFlsV^TFj^z3mgwOCAE&27$bNRaU3lRUccYkDykV#tz^PfYBGytQn5%g#SK6taI*5I zS2=S1g>VUpDgoy5wiR)CPB7vTl~;MAU!{GRo*q#hW`jd%aTBd?mEm3#Rxg>f`T*h zBCc$8yvGrRL8eZZ=ozD9L<&NrW~^_{f2IyK5D#`{BU6cpyA0CD3a2(=#}=t3I;XVJ zW@}TpD~=_SjOL=aSlP%CT8Jae5)$d16JOyAs*SPfg1*Skb^8g+q?e zr+p|PTWgjHMSHSkB5QLguErbXqPA(Nss@t^o=UR7hPyZUb%^9#%zpONBGIU0uP_L~ z?WUx&@AhQ6?;ye7W|~;=^)&T*VzN+pwN*!2SG2W0*@iu6lRMF{*_W$7d)(P2v)Hb8 zesgWsZAvAM;HQbtv?!*N-)c3g4Sx&L8UptKc1Z;)I{#VS4~o|t0_UmSyTcFO=iJkR z#A-1$GjG>eqZ9HBGR$UD%;;q?jgklbrt~i*usZ_?rD-ki4ysWkHZ@LeiF%-BBUYLBe zrg6ayk|TEs#o#}aN_75rMBwa1uGU&p_YcyZL)sz-BB`c~3X^ z`TU7I;Izaev-f6~dsG8$c0nV$Ytatff!tX9PiMn=v-ioqVxh<2{Ip2To_6JwutUMb z!?`&xSE=~p%9TTK<8kZWTj0SD)jp@ctJ6UTZ!x_eTMWu10-`6neNEm7rubunc;NPI zJc0Og8Nr8+xR?qA84JSJ|JMTS1W9n|AYddlaD)(|4flvP+!K3$HecHL)kXgJ(`B7X z?Bx#6rXXl{_wTiJ-xKCL6a~JhM2TJUIzYw~cou0zVHXX+F>r}fN9&J?qAC+A{95gj=Y6IAolS5T`V$L)PtJEA*HUmbdGS_8 z9dYO;BsCbrjhwG9xelC};P zRHJT?FPUKsjiQq-jf_FCiV?YB-UX=StNDHJw1gGI@S;^+9+E4^6)KnN)O1r48}Z5I zv8e_mL=_O#wT=}Z7=XE8YQhL#!hU~C3@iC|$$he_aLqKV#>TctMGM zr;m$>SyC;sIhSfL3cKlu$8|Z_O4Kp?_ zaw-R7nhcFcYFnSC(3{utM_>qA(Xi#5bnvb-QftV|9e@!lpV?@LAX#4GawZK?3sbw_ z3JQ$4zElQKUgRfY#4BvmY3<79z=?T5V_DYXhpT&Ky}|+VZWdS|S~!#rQY!$cq9-6J zFUT*TRyLT0m68!Y4uo;J?$9FjTOGg#qXdGBixr@9v)~O6hE+Tikg!*>rM;XLS{pPR zSxts6CDk&YFa!epY%VgCp7*Z>cN8X#C1shWMB43AgDqVQ9vHkma?+4Q-evC0sWIlv zAA@szJ12|1VoO6?FN3R-l@~#S2Saj)Q6fq_;)hTY32C1X+~4N{$|bc=-hK1@M1yG= zO-HM5y%@Hmpv_#0-aZ8d!uZrGwj^O4n;j&|)dzZ#Jk{@j68%(O`Rr!uP!IM|JtruH z5Fs6Lv=oC0p5Oy6WV@xDp`aG66{ zRPFQP6?vtN6=W*m(2LK!Wd(4|f^Y{_s-D_1q`d!M=w4rte8oC@U0 zP5siH=z#zyhddv=Zvk*lV_8))3+PHhFhdQZuY8~sXaM6-)AyRVL!rumXEp&gA_s^F z*48hX_qC}k9o$4jBU+H!%CN3ek#`i_qf2`6l#weEfw7>BN)JFagy1OezaveFZZ1n` zgB-M89?Hm(m}xT8!@HlcQ*Lk`aEJiMv?4orD6yxe1}NWj`-(4r>qjBTb1!(>bDwc~ z<}3gaS@X!+cmMBeUiAE@z4&?OZ`{1?8{fNr#i}*T^up&n?Yy&3-SKV0kAM1$mp|{k z0Z}G_h|W57+4097X$&_TxvIY8(q}kp&pGpi6HhqWG7k?mnSoHE?6U^j1t?S?cCXr( zJI3d~e)EU_=?9y)cfK>kzA?6Wyj*qnnxWQjJo~9jCSu4NX0nX`{e9oO^Ts=Et99=~ zTjsy3mh@i0 z3=j4PTONAffdJ~R;X6O72x1JJgAW*K+0T9Dw!i(`FK;Yp?1t4~`}?mr$5@Ip$?!Cs z9q+_H{_F4D@Z&r4R_pOcH~z&RJpX@v>L*|P;(yTS+y_=XH2kJtyZ&c)fAk-|GtR9a zfB%;G^TsYdZ^@SN%C2R1o0B{K*#G|@pZn5JJCPo^?~#Rn`HCYKkNGl8J8Wm9o;^gX zWpBQ9{a^mgx9)#%<8@=rJMLO@`>M^$?_X!_N>@xsbA*`7t(#Uoxb}>thky3!?@u7V z>$V4voIiB>$%{ht2f*EzzzibVtMroHxH=io?#lb@LnuJ;Nri{Y?6!%C5B|dsesses z3327>b)Wsp8wAI0rn!GQ>%0R|Xgfd3p=c-Y+0p}AlC?$2NPf^+B3 zodqDv+_Ro}?kj&|)5kyh_h0qN4CeE;@YH=!mMGe(DL2JoXbnMuzNA!}7G<_W=eNV1NMz7-087fCcP; zR=-~msElCJErOgNT<;A=z#-1KQCI>Nh9Cm&(qX9L)^rhPet0YEqq+N1Z6er20U`;5 zD}n@!gX~DtLC63wK$V0>&6V+}DI|U3Eg(`dDyVEms&q9W8W^FJUe7bcw0oS=vz|QF z`X>UbP(YGXj|U7?dON5Fh$TgaDx!b{h7kZQ0Rt02M1gE?&$UF7ogsk`VBkHBK^b5S zRGB?PX`Zq&fUlz;~yb#7Z>TudYn*H@#IN-m*<$N(S_)xNQT)SbfsRjh-u8j(an zhyaigsdJ$^0pN092u$j0Qn-l7sVUY-5(H-pA`8_BXAuMfMBPdD#rBgSB-KX|6$%3u zFet(%@{+tgV+E04Y-`2o%5!SSvnO;vS}J0FZo*;0eZ4Vr^Aq zh!i_ojdQd>NE1#u%@$2_0x`tQFtq+yaxe-IuAGdj;{a$BB3S49;u&N>7Pdc0Aazew zQ=9-|m!i-Cfk_FX6~7_za@fOG_7V&uNpwe&i`xu_wL~dp((UMeqD+J{C=j_)<*x%O zMoYF}mi|Toh}C#o>k6*MoqB^wy<;g6J1oOf;$p$2fl{yPDw&l4r*CHcz%fH4uo1Sm*B z1ZdTZ4it&&DACj^uGmz7WQ+n@_F^bEkyu1qC6z{9ue*BF!U5@qQ?=D219ixGGWq&V z;UE9)+ZR9c^rgof`LTb#cEOyXvrj((K)c^B9({bnqw6+~4G+zmH#UFX?5*3zS3kVAD9aO<9z8PLTz=m}#~*uy zG3L>=8<|NI4?nuj8eY2Oh_R7Fe6y8^hKHKnpEKtGWSN#=V*w zl^Ack`_YXXw$Sjbbsd2(K(u=GV?Voj^~L8M1EA&1jd$O-{Qh+`GCM@S>i)-9t=@9d z(uG7iI%I$R^M`K#`8^n(-I>^S>m3hm+0vPJ*jQQgcAGpv`(X2_T9w>Bl1t_u)v;F; z4wAjTeG08^*fT#@PeXF%GS&#wjd!fsv|$s?KWbZux83zn@uHJktyY{VS3cadt5!UE z{dG5DWNv%1v*O-IZ@6{&O+UR&o1-f7&_nBPU;g0T%kSG>61D8wM<2Um<>Qx}e>AFx zmq^f^J+SQvm$}Vtf8(vIC$~?~=-eCc*>K15)u${yYvT^2%zZ>S7|zU!m3QBN?;|ua zds7G3{@`981wil;C`TEA2;02z)`xHX;Z5bxTn**Q2OeL!X7kx6Ep8tWHE>0g14nTX zknI09KQWY_)G#!dS3WX%<2{c{(V?NSm5+>X-q1O0Y-rmKB&|Kc!Mr3L%p{%x1{h#~ z{fRY?ZTjbHzV+}UYv;`$d*v0+KjpZ^OOIOclFLv2;76|e$fv&g&OiVE(qW?`LziEA z-nC!7>5Jd|`R`oyk_B_;9KbsJ5LT>u=tH0Q*7v^q{fnP_`o$MMr7J#~n4SY0rU4FB zL?1(^w2gi8HpY%H&c?z6$ZGNALkS1blWM2a2{ACUG1bdq&e)W@$bZR42N+<00R|Xg zfL+4i3&Q>ZDHGJVY})>~0|44t5+=EV5VY?l)Tum~nKnO7{~xKAdar)(W?8EvBXs7i zz${=g{UntY##DzEOncdmD5Ze8cNMMv>D6AlyXNT#21{KrLIhartx4_4=5tNcAp&Xb zUeZ%%04V}dO2+m&A=Fhjpma8=&Y2Ro234AwHKpgLDChKDLlL4i##=@21xkgjbtZu1 zdP4-NJE{LoOY;41-P5%HcYySI5Rq!Z2vrT;tXfnEC<_p9@}r6U;|%l7(LhMGkG*56gL-xB#u8V# zWSU}Omefb`K8+Sz6NIWi6F?NxhavzGRv6;`AWc3doW`^}I@DL)9taA7knPhw;l6}w zby7z?5>)yeiK2>u{;2LQWi@%DHgQTP?VACb)LSYQst6c}g#<;;EcKxd2oXa}6p8vq zJLMF+YE@aoNadnKiGEmh_20jB=9??VbiMH65!D&7|=md&&) zRzxl8Te(Tu%#g>mNXANF#1N)M_tZ&6mDpDr_8GsxM_B7RkTg(AP=F*L&wW)Ng~F&* z)FD-yDlYYWH+7Bs7lEM8#E2#|){hVMY6Zm(ub5Nf$8q)3ltu*M$Ta1igzg!&IwuSi z2ve+M2y9^QTDiK}%rAPzQx?pdb@+l=H{ZT85oOr$rO!V1-UrsCgBQ%5b=IlN?p*P} zqw6-Da?-Kg8m`;8<)6Rsosp5&*vRmPjax^Cht_V`yyE^fD_5<#XXTo!UiRF7_}8z$ z_EncHJbeDwzWdYB(V^w{tvTV?Be%DUtTA-R6J>S{^|HPjPyHsP6w2QoVxUc)|}C;ci%;0bBCJQ{J9MxQPs_DS+;D+vg40l zaqC?GmM%GS)>y-rQ=Z5iFuo5G-vpqupIHR^X}9#ig8HNYcM&l}2Xor-i>_e~kFPeZ zp;`0iw3?$LGoNN#A;&H}^7OM$x%DSE0a$q0(hJW!>9apregD^gs4)&NJM8R}7CgN6 z1o(So?Ir;8<_c@B4oniN-pVj1(j$3&9^|xwgV$sRVPCj<=#11T(!eeyb?2vZa zdgPMhv$=DNhaaS|xtCpf{&hdScia6ddF~<|-wfB#?VA9c{`9ktU2@X3pZz9)BTqhd z$>AfN7jp1XjrOTko!+>|nv%)@e)T{%rLFInHH^-qw_N?X zyZ-HyzjyALC!BZosV6SJ=7S&l?xh!>|Mat#rGrmAcERtz=E66<;~PJ{dBsaFIe))Z zvMl}TN7ilFJh^rI_FM0`=YchkUw`BBhgWTDxlQLj^Lc;qr>{P0(E5Zv0K}ANXNRQy&%v@lscCmUu95A{q{RR;g26FZ6*UO4FUJf( zLDRiz093w6n#QK9KA_NEavqp*^HWjjV-R4dOBP7^@kWwA@qK)Pne$v_t-b-`{;SxO z^iIj)-Zd2wuvF!4RJoh}1lx@c0;G3ir#>HWn40RhN?#DI}Nso%)L z1Q3$Kg(RX*=%e5CdHwXR7J+)C1FS`?o=N}yPg1`g$5aq=BBaeY@Q@|RdfTkqL4Be$f!LW%)FKeq! z$5Bjk3;p>)lj?8#*ZrV6b@QUW2XLCM!B`U!VJ%4=BU7wIf`Xz!&hUVSnWj+{epV?a zl^9p8Mc%nA3IQ+-h9v+#Skr84?|u*fMWnQnG54atSuZ84f*}<#MiAi~CaZAn)pP2d z%}1z`>!mP>U;#rNr*0eoP)kg81C6TRxSu*j60L$dg^Z32Tgw3E%^qtPRZ6SbXaLwg z(VjEQrCpmX+uL`qd~oG`Yfd_T39|v9syE-Ua?_S=zxLvbtTo^M!42c%6HAX?bkee8 zHg6gK*)4Zo^|Ff>%%Ah!AKm=Sb5DEt@%5J+zvM^P-?nVY;%A(5$`Oan-m$lT72$Q} zrR0e~v5vzh1~Zzu%UFs?%9J6NFh$2l5oT^>#u*KPC%vBx{tth9@li*-_<_g#sY_0J zWYd}--+2F3SDyK-GmqUm;Q@@7e$KG_?uTCc&X0a&b0M#}{LE*ZaZC{+fKI1#_=48o zzvrs2{qWA=;q1zbPP2JlP9@5Cz*WyGdlL$v0kroYSH@RFMZBMXP%bL9X%Q`d*IPWFMZYt zue|)Uty`>EH@Vx{r}q@wi}Ip# z7X9;I{q}c$dgp0NM_zQnX>0$>Iq&}XkB?k5f2e83CyPejnCuj3{s`%ddRF1&#cmy%!BIz>`5zlrg#U6CKxT5L3Cm zosBd@;fY`}S8SWiM_U>tbV@hW@a@7l%hq(ZPBg}b#77CyHnVb~s)%ow*-*nz7SUI^gF{bJ=3pVpoOaT&KlsTnzVe;_IQ^7m-}?UbZ+P8R0u&-C z2@(Vf^#WB*53maOzCxY3Q1^QwDKrSAuTWB9+-HSxmkULqJ1-7Yp@ZDNI4q zEmYO8^FrD;g?JK$*rmd-^TOW5+4VwHn=*6I`H7G?0|p zKM3SuM52ebKxJ2X!UN5&@6J@jis%xx-^B#cOvy6E9Un&pb%tLc5nKs9^zzwKC+H2J zFlNRKkgcqjxT1R0^p{E&BGCnrWW?7s~+n-n`)goP(+3% zc1o-&CW$W*;S?cORjTwIB9K%V#7x-?=IUCSYHT0^7>KU~X;dpuC=dyQ0>Ds((Qa>a z>nd>0E8u}v-vxY3Y8;N>x!dy$02aO`KvxHj2vVMs`qE=k9;hV`Ieb|5F57sy`V3CQLoD&u}JA`Q6tSG^njn`p7xc zs}g&@O8~@Fxw4(a9wGn*qfeK`cUw_evq<%GKa#o*Ky~o25lS~xnMQ?CAfrA#8}5aV zXw?nGmBEnI!O+!ziE0`~S*@mvCIV0dxF_FJ@gg)iF_|f;6DdKiYHDw&s>x*lWhmSJ zz9&^uFj2)NFcmSwOxwm680A_YsUN8>s=kk%BU6qtfXCE%gk-&BkgS)wRFnD))Hm|= z$`onZqNIQ@*e1pmGk{J+-k?y?+Z0_(Fg8_Ra6NNTrK+o%vNH;p2+zqlY)XB)&8j2A z#vW&@pKn3wotOT48Zs~tg=nR}0$5O4oji7XG5u#4L1BctWHhS#U`HB&aut6SKhCId zKldZCmjaMg{VUNk(!{A3+G=I2DnKwSL6Yvxj9k|`6pd=4i&b;in3y<9hywM50Kl4< z7E)$FC8`A|X5G6@m-U5E8dgoDr>e+;eFPjxh;~>r6p&;==OEN=f&o-Wm{hY!6?=>2_Y{TM(3l_|sH9XXuGkdgMgzx?2mdSQGG1*R^df86X)&OLo+*ZLKL3-G#Iyaxpo@=N!d2*{1O;TI3yw)}zlbLVFH z@ap^S8Jn~8WtT2$+(d zn?&&p6?S`7$Y)o;1ee(x?|$SbKfY?x-$Ibz{h@Ujyo_;iRwaF{nTeCCp6Cmb`X6x)Sdf6MxN?!Iem&M}uf_sChThOZvR zK%nj0%VUoi`l~lwNSgq=LV9B^p;(uS%I>^TM)V1Qpu zgeZ5fdT9OD$A0J4uQ+_cEN1?l7oR@cz5OrW@#&BM2*gRxp3>&@o#JTd(K$S zoMjn+Aad*NtKRUAPp*4t<)6LfgTMD{XNM>s{?z|@--o_<`20D~dB$1$t*QeIuphvN zlO2+6<|;yLvf+kAvANSIs+y0s#7B0Qnz@7sMPqD8LS$#ikcwtQ4GEFhpMN~K7H54z{zJ;cF6lsR(Ig5P@Oi>~>~bszi8wSWHKe)HK+ zJBd<~B&7s_q{`5JX02X2J6H?(pe>{)F2o^R*!{lqD_KapU5Eo;IGD?WX*-z9yH-fM zSZD|=k>rph{vLG5w3$(y07@bS2XKZGl@hxv(cbYR3e6A%YWg%aD6#i?NA2XvE$xXi z)B?dGCYnYL6bfQk3yqa%fS-ALy?(}xFcGF_eUq|Fb%wo8@lfO}QX(5TbS6L<5Ew*C zfr0}9m{D{$SyKiz)2t)_q_74auo05p0uIP1N$OC=FcA0*2(SbRfJ036$kdipW)UX9 zS)Zg2QdZi)1i&dr3PA2r5*(vUG8F+a*IcRamHvkfDUsLfgsQHQ9K%~h=yq19#7+br zPysBgshx`goUg_-2B-ztKs`JIj4)}1I5$}U1)%DE z>4<8jBTm7W_je-$;*b^9Tec2LRW95I5NQ@>$Z2G#m>pG&^++QMC@dr*hZJ??4IpLx z$)wF;fp(~rct~pX8IOt<1)o9NeKeJN5(>dsB*h)nm(3GNK`KuuYvDb^qLRl5fPfr| zSf5Zq&iRh86oCK`eBT(c0~+Akz^kf3HKi0N2^PU*O<#36l8ZsQ3sxjHsuqW;*||qs z(KXtc4uJ-Rg%xz_oC#O{YbiP?hk_i+DTxc`%A|Xg60J1}jylyCb+1&<4FwE=rl=PX zfyhKK;29P<6h0tJkyi6!99J_ebO}6+qC}QeG!g*Z2^J_CFaV1XfCl`wDe-T54PaMW z$e};n>+|&&v3PjL60H(~ShW${yReyZr&K`*(ts^BSG67ZW;$ykuu|+ybA*Wi03ZNK zL_t(dArB%ZQmBK*+MvqDGeSmd(W*{`%`b z{rP<$dgY5wf8U?Kka~h}K*fC9f#|x&a7fI!-Q!H`GVDymiCxK+?@hFFd;7iX|Hr$( zeEXdbHkvoCeEeB&`GaR?#+GsKb7h*&uHCfhzrXeB+wOk2IcxUIFFpCque)SqC@aG* zwR))OzV*YqU-#B8O>EpcZ{fT*zy5_s&(Gia!LP4a`6!J2okuQt&wsl}fzZd5nJ5Dh zF%t*%1;6hj|95Fc7I=8pM=uZJ_G?e_334&$SmEpV%@v`_rEV+y;(Lr_LJooefm9D z!jKpWia4=PytEGH4G5|p>gd45(*OeuFu;L?s`?^`NT-b5Tfp-!Jbm3CzUU*L_|oUT z^tGcFzvhbPUohD&KKY4%_=|V_(@Dpj^w=Z!cFOFp-u~-P@B+hL$C4u#{>|Hd_tT&K z;yriWKY#9FSG@4N!{^WKKVbQ)hu-$?_piJ!e&Aj2c*W)CIp+X8|DtoR{nC%Fzv<2a zQD%Tc3@RE*Z!<@ReY=n-i8q7Hs)%~Exr^Sb3K6)YC~P?GXdikk85}%Ms!Vj+@khSv&wu;#AAj3(&p##09DpF$wXeDZ z3^2d|0}L?0FM$F9|Bt=z46~~^(tfM^gqtTPjdIo~3n3&xAd!<084M;F@Y=>+a9;a! z#H`bL9oF7;P6T6;eHz=8oh2gV>YkP=}CV!$Vlz)n6gM_5QQ zRZyvBXeO}nnHfZE+XY?OOvFA6U>7VBhET?1g0bKgG#TZnGR#b1$FK}JW`#oP5X|{N zV;Tqm=IGjS_M@C8GBog62Y_ZczHbO@fi*a58%>r2F9tsV3#fdgDlowShT&6Qv226= z=x5ge0Ye~+V*m4AHqHO)dXas(z!?f1$BU{Na2Qz)QiGyuMA~+I29sonuIu>kbW5KD zumD?Nzyint1GWPr$d^%1xXTF*;1TENNB~AY!bhQk%>hOJ9F-_QF|*_3>)T*JDJZrX z6a{nRuwXcdhVJkARwbtP7nkR=SgDh zTdXNB4#jYc0&4`(v1cc0o%1s#`q^MZfBgbQAz(zhYU}O&Vlu-G+ z5bQ@`1Hm?!@=lWXdFMa2C4?p$NPrv*5+Nug61b_?9IO)7I#{KYD5B~Y_>E}-# zH*U<((@!3C&m+$^?rb^xv=c1LipQK&PV75)NNJDyS|U90_m}?T+rMhddbfY%$|L;z zaO{E)%T*HznmKRdnicCAXl~1Ov}Tbg;kI2*ytXBq_1~PkZ1bialt>57yWUu|KIf}9 z-dx|@xD!Cr?#?LeNBicjOIGc&=xxupDpc>FXrvR?s&(zJz4{gd>}B7Ww_$fjAnmtN z4(M==@<`*zKkZwRW-r{hdg)rqRQNKsX#VouEiJZvSh^95(Sl{$7R+8usnT3$cIo1E zjm_4=lUKKLLISZr--YudVlbx5hwS7xu- z-qh;aq(Y@a#fQtqj!}e~0SJOTR(42=D58iWjx;POdel`DyD!gJwzIi4DoiF~Q_nl; z%+rTF^X#J6=d9L-KYZEQ-~aAiXHFd5-ku#Yu-8{Ud+Ee+LylxWiKt(nx;s98{b{G2 zdf!8@fA41xZr!o7>#xnNoxi>3r4_3--|_LYE<69Uh$RDHXLCy!1`NE%^HmW=d>~Oc z?Wg?EiaCfL;RpbvV^f~aLg0Mt8DP&LY%A`7yUua29e3X@Zso;^P~iUSK(RhQEU9Ef&NA+31)sDb_|=wh5JXZ9@n`Etq^LXx75<0+Udr zB!^)Dr2=K7YZ;MxJ%CXQa4YZMll*OTBrF7g53Z4OBPbF3PVM9J`4io^QZWs2SD0J7^AgTkvQOmxtRU73^1w? z<%05OqVqbDdqP8?E1Oibqh&}*W26xbC}k`WA_NH`3sD`SnhNNOz|r+XR}%~nbfk6# zNU)@kSqfr{TvntUO-eD_%pe_xkW#U<^C@`%kTTlRk`#iNw3QIPfs{HcB|1Y6NeeK@ z=uk>4U}7ue&{#1AKwIp4MhH(UM@Z#qNa9ezQrZYsT6@y*IB=L06g#4W*;XM1B15bg zOkv1IYh{G=rSc3JY2}QOMj@0ewT_EiTab{XmG(nRk!C3=P+n*o5gKW-f@6|>Wx?_x zZ9}BBF)&7lWDrR91uKST4lMQpBV4J2z$k~wQc$@-8QamygsyE26KlBR-qAApxGhq zvE50rtm({HmI<|I2|FaMw1EjFARW(V2Y@lgCdCpQa1a=g$mvi(3&TSCN=qS?7qTSe zIF!;@QnFOOVo1vf(|$u5AE> z5ygm982CcNK-k*Y!k0$cY#CC_?Se{#@&jd=cxbd%%8(XPH60=O zQg=d!M(M$Q>+b&iM?~TD(gkOZ@7m0}_1cS~9~uVs{;#inyz3iiS7jl@HB-;HYRaU- zJ(@-j>2>LOrxFnn8N(a5HqKeJdg8bdeS6j#W4`|B8{tF5i;qlQP_Pa<^^(~WYiYj- z0(s&ImG!;qw{C7kA_Zx2+b#gZ`qw0q_P~bvl4lpT?rx-H$;keLT}uvY=>PPKZ>iml zlq%s|2eh{1vc9hLT^D|5S35e@fL_V*C-j^3#&TA{-~lzMgu{m4A+w(pf$s|;AT1y` za;cY&N>qdq1IuGo)!D6$j%)Yn(~wA(1p2USw}&AH_U%4k#E{i1HbBa%x)GI`^nr)= zAfRXWGC`zTnlh#7VSTF_2Gmrfo!#5F02ni{wmdC8f8TBpXjIoE2Mq7O;raQdt+}jU zx1s$q`sa8X0DA@}W9Roks<`<6x|(g;0DWVm&g6LU`-H-^}nF?%lj zT^rQ5Pkh%~f@5qDp9Z%_qwNA%Y{1J{`!~UUrFqjBc<*Cw4qN#B!3E8iq zcV$)L&~d%?jbnCSMbM$2r$rP|L=nd_n0ejCZO^_uw`o_)u)%#UJ%1t*4eVEc#;L>q z{OFwVCl0^-!f}pm5s9jb@~bYtaQ@=#^j8;5K6yx4X?on~A%pt&Xz$1+;%-SgWm!i$ zs~!Q><)znMKC!;8;*SqKebeo~`R+Ha7&ELtfY;}|HS4wKFTZ@szg>TEES7%@$$8$a zd5g6Z8-GGW^zz8ezOTYiClaod$I_j=h$0RWtPL0@)F2SZC~dj6v@JFqwCAjZ8)SXy zSVGF6JtrM2df>5KCuq-+peT@x<=V;*Ss5oC4>~=|wV63+&slLtWqsjTLQ0kMWz2!f zKk|FU)JsPamOxqD(y)X$rrte@D58iWiYVd(i~~MzS;YH7Or|RbMKN^-0}ngK$2h> zf?@EskJqvgP9f?5fE4H3k_ID7VnXOt%u6!jYR~I#d|v~!wUXM9>qv$HQWECv=a=&r z7SM&XP=djn?@#{AGUua7n8N>&e|A;NkF;>Xw-pj%%Bmn^3u7dNh7m}a{H3}s+tnpg z5ESpaW}$=71zD+F*YXJvgaiQ$Q3y0ag*w>l3NZkHYiUVLp(OzbBn`BHR${E> z1cY8G*Op7N19U5>lqIBw22us_c)?Oh06B#a=_MX`z+Pin^!ArU9{YA6~q@0E3EZx87* zr6>gY03d;oL{iCAEaw_ZYKemBGeCv02*yo#H7T0~1%VT@f&`%y@O?KZX)kk~vdATD zRbj}}5(SP|8hhq)=53llX~Cd%8H7Ym;FiREf{JMwD~-kM&ZMhrJts64fi0mURd~v= zEMEfMKsn{a(;c;GhnYfS*|D5ps#9`r4^I|Gn>2-~BmhPb+T{taGZZ~Dq?ppiDvf!} z$f;=ToQQ?BUVe|41G!`*A=Mi%C>HnI$42?ZddVsXoh{8m7DKmu`tY9OavSbi-~rfo~;FyU3koKmJ5WxICZ0ttaK&voN| ztnMUmAtIgi!d&>ranfBsrWAs_4pSY*m zK5u^ix{&boLGe5YAPBwRy-^0JBIDXpOdQ$$`(M6t+H1=P_v=|->&#l=53i}XMAy6U$38%hokE^zD1`oxGAGiu|mv@Igg zKE1;8^p1AFtRnS|&tCGt-{!@r?1syR)s!U|v^%SUAdH?$G=O}f#Y2hwM>m^sSiWq@ zcXMULo`7CQ2yHnvdU(&D-F3;|UR;w&C$5_^HsRX7I%Jw8;!MnSU18X?XTx6Ancx2C zmdBr+SC&bhaq^%{sUvNwO1cEC#O4 z=#CwM&Iue|W;o9&(14_$ipl^0F4#=QFaX0Ajte9hzwi9lc z^R1X8Ea|uBoP?`G1;BD`za#4;Vr*FXp&fU%9||djV|%TgZaU6}O&Ey>mTL=J`t4cE zwN0?+mD4#M_m+;?Cshy;6_33aQA80%6j4MGA4phL)f4=H5m7`03kYLON-`p@3mG8< zG@FPHqhVQ6D0E*NHS?? z0ig@w6r(&o3;+Ved$=|hTS{gut(c;H&UAiHwu`9}eT6O*MwyF1X#;7U*mWfKbp@R9GO@ysc0WVAw!F zYD-HkwJ<`Hj+BdtJfkCi4gdp^AOkHSHH^rg@nr#_^Cp1;1O&jPlB3;vNl=2okW7Y| zA!x5_5-94w%5!WCfHZ^z2}`q*N@~FXV2p@bFO3u>h=hTLVWa?QNu@M_1(1rr$)OemZAmhkG+0Uy zkyeHw36bNOj6|t{VgRr#Vh|gn36_DDCCjf~1HGx7S>L7a5E#3s6#9+5(J;OfO0-qm)*#(@BOXq@{uY zbVlYkq8TDBInW}V&_qHAqjkjM5)mJ-u$4-A&yJQC(n5fl1fUHkqAg;A5YU9Z#g>jHG6BXI z5ijuW2tt5$UM+0pUBU=K0F2?N16n~qXc#HLjDSTtMX+=&4N?N3ipmHV%69Q5pVF8K= zg1{MR*g!B8Km;L>(`3bwE=&+fQV9)B5)hJ=mJFSdBs6JoS^&%eqa*Bsi8suOj_zP03f4;>%uymCzc$CCZ95#kRhf0WDk|0Nx3Z5uzwVULeKVPq<+OIIDt&R* zTk}_W_m<`pT8Z*PBQ|`j$jZeI=e0cxT zGfwRvbL{#|th%PGsyta&l}xx+_ zZN6~w;BiB$W-VBA|I@1)2Gv&AlvO14#_eAJdV5=23c!QUE)_c4t*&%7leJoCSKbV%F>pW5!fwbN=n0y>Cb3&O2|r;wX-yh$7xURL-|thXi@MJKan|<$Na< z4?8`}wS^^fyW8VsX&ovyY$x2HJ?A81Bt_8C>6Rpw7l24Qme<-DD@n38Di=8Ec$oF2 zYYAKCn%m>$d173c%^w3h@T9jNARN0ynIaAfVHgI1NhI9k(Mu0KIy(GB!rtFm!*@Vy z9RxZSv-fvq@t_a{K@e~%<^JQU|H8=SLLw216)C+(6UK1X3miu}R`E`;2SK2S$hHrS zb9Q$6jw8C#rWSFWL2HdXMT22D+RLW=&LD%CwE>tAQD>kP1H2~)iYCBlFtjnqe}E=% zz7WQ6#P!Gr#fU!CYNoD;F&Y4j!JeXsfxFu`?S3 za6u;P$L#=^yzL4BiSnMKp!fJ~WGpWDvxvfrMxLB^rvkwRx=^mVv=ogL zh02VAHy3`*+b%La?d4RANNFgI#1nIiA+}h$;qvW(`oZWJM83OhH8|s=sH=(aIEbCD?S? z$S9Q`4jU9a-vCA{E^v<`(?sr+pU7RN?20I4@}|t!r@a;;Ds&)HBNcL*Q{;`x0D@pl zp(W&J4HG!8S8ewAgX!`y0t^%k7}{`N`<$O60GOEb+p1kt4|yx^WqL-zw;4cwrC>J7 z6cz}f3qLcUVG4%Z?%y6?e4U|3oDKZr%BV)bo&* zY2Gf%YdP1!9W7K+Nlwf(ZT{&!GZ1(jc)xyhuHMziZt8#j_$svKj^_U>sp5`S&b2RD zy#BtQT^ozVIy{ea_L{YuKKZSu7re2IwR&sGML+n$d5&#|p$Y*TR(Pl*$}oT!kUOlw z8s3I5pVsooA-ZL>`(Zl(Kc6-9P+dF`kF8zPbjzpzux`aVN@TwE#cQvu8B6B?9PmTv#-Weo$Wzwp)jmo420qHAw%`rOSEzWkq$&UkSi zfR(GZ{m)m<|JXO5c;Rm|$c@imzVkbuIs5y+c=6GPUee6J8Po8G?_b`#dv!-HzgDJF z&SQUHef!t$3z{1Lue#63OX9#7RSu*e3`uMLpYgx4aACu{%;rrh6WL508{tj3+q~{V$6g$yb5MuY&m67IR zk8x@@^WB^3Ef=Zi@T^jGiT56AETq&G;i+tEvp$GyuHmGUhXIRT8$VYNI^(lk7gA9X z_YXtHuG)v4X&fHO00$!)C-BHr($m{DTlnYM^eb2|-+eM4s;XuHd~?**J|>1jJ!;Ne$KQdup4AiE#6so`3hb7{bh_uI6Fk zrF(lo81$O@s_whsNXq5q6+53v$Z9uy3ONn!xkT56RTXvl1n-nUa=sm3XjXY%b)P|^ycJjjQq*U)inlYcW=W4lZD6A$c zt7IL?ko|DDDz_!M0Cn%$tsulK?18i5n-@=d#gi|r_pZxEuSslV*r|2RW6YxcN9?adPuHMc1z7UVffao)7?gf1Sh|u&3SN~on?}(9-;bdvEJOgg{pjD0dg#`VT zk^99(*S4}5eDYX-6Lqv3u_(PXWCa4P+Z%2I4Ih=bkew@Xu#WTfG`LU(A@TX#H7@YM z{1vM88SX)cI92HWIJiZa>N^nP|-~IPzBJg zivGwZWDZ2FjElSk%dB1D{pzxvpf$uaFTqI&3)`>ak~>ljycwz01VM zJ(HW!t``_%o;&JPQS#|@Vf|S2ltH3IRy*eY$B57Q%l{PoNF~%L*jI(Zp$Gop#3C3`7Y~Kx*(btIB-as~kyx=RO z0EI7cJ2Ck|PVWlb2@d;O_@=*$701^#WvRIER4RZn8*6OzJ@7TrjYd59wvDtmkW z7&c~W%jWp1V;42|;DIRR>uIfjpU%0Bg+I0*z)Ac1ZJ6@{k7@ux91x0RdBHqr*b5)q&%8YZ-Ma&v7u@eh+!@gj zA}wkuuW2bK41ec^kybBSc%Dg(@@xh5Gi`0zx>;9nRORc>WA#2)k7SceDojBiBB2-5OsVzO;M({c4H|6i$!) z5&lJ54uuATb3!gFRN0d=6;77gk!OtSQitg&-NCo@w-jpDSGQ$)uYE7^v1p&(wEV;> zl}A@w4OMA?QEQH-czE*5wW#jnXv=#bctW9jQoVPx<+9RMg?uF4cSl_+1wngU z;D>*clv7k!NmOcYsod5Yi;G!+`o@I+JgN0gEel(g8@wUUWJGmnzQJ*r2fLKHaBpis zkjr>+S<3+fJo+U9i-E>p&))UF#(olwHO6FPL@J5B>H(08Ze|uH?<1XlQlBMG-W;ug zhc#`!{W|*Iey9}tTuU1J1dG^^e?g8oi?WDS8%devQNiT)qn^<-lINDkjVzM)BJ#tg zS{_N)z$@nH7wuVh83;It%37jeXo$WbNZrSUMEFAmq= z%;RPSdyCgwmB3+9Z@8Qh*W6rjx@tfvHo@74c|J@q15 zXT_&=*>>;U=hrYcYe5_Agi&!nPAm$e%H~PiMA!>D*?Q3VTVt&!miu8c&Q8G#r{?Vx zR@2iU2i1;0W6&f8S^9nE&oAVkOj=0>*`IQ`{zh(LGkPCf_se$U-X7^USp^4UdMyf8 zxXFW`%-^(VoSrIiRP&yjuXcCTn!A|RV%2qkH1r+y18v)xFzuijWSo!RRL2q=yxzgj zcda`$Snl-4{~7(>Mz2*S`zz6b*=keID}9sM#u^++IvLDULnrXb4A z-iI?M>|?$Sx;|QHbdth%qLQpH5hl2K3#F7{1())S(TMznC1j7~uC8|8R7jxHnTZ}l zb(U5X8d&=QNa4XDJc0CRhQYg5Vy4Y*wx7jWsK>=#L|Up*Cc8^kZ<(2KyQAu$wpk z6E)cjUsod^#Oi2dONeF)G`5mlYO9Kb4a6fis)0jUvNv0OSjYC=J*OFlls@OLWp6I3 zwPZZoZ0YBa+ey}7&(Q-2<@p`RUyeUe;bwMz`F8!-z4M|gw@#+Lqv&V@Y94YKN1ev5 z`S3@Dw~k{%$(SWQ2JFq0RGJ%zNk)h#yxxnVBUW8ph-fqg#+r193i(rffZDkxh-O+3 z@T*$2CtWHY8o7MWE_J4Ljb_82E?g-Wcg7lx<-qkYeci%IYD@TBQqr3ia<)|OxO#L0 zoB~VN219Z-QHPaBm#N;Ga*j8{^cj02<~Jfr%^u4%c8xrNH|ZmWraqEFV8I(*P{6-s ztxZ2=dr|mG9%R8~$?vGmY5*4w?6I4>Ez2Asd)M6R-_;&4fj@wY>4rLC2o4^|fN6kk zCUC(a0u27HoF(ML|3*b<3qr!|;BNDz3h zDaEVPUPofZRRcR1LD&gD=le98^_o5(MNGGOj%3k*4OygH>dL&#DN8m)4F^u zE&jJB^VRO>ZXXU2XOpKeb6K}*Vmn!Mqf|lA+0FCGoO)m6Bs(~G9gZS0^Lpp#czEny z`=0HjVF35%W>@G)l?Dtf+Y0m@g2@J=rythCZjsP}oQHPwAPx!>5>9-FIO_hn8e348`Z7n2! z59@k3-N<~AKy+eG(+5^q8>SsrE7#NmvDb3v*JP4jeQOW{q9fhKa+T9*)lbvv?L{~*iUj=Xc;DF#k@^o*{SO7JyTfhVu8G$WGO@7ob+&;8w`RHRo(~jiHU6a!ra|Kj%oMd7 zshXH8>kYd-WKYj1jZ;ct^EOq$(=m86dP!t*9h-N}w6+k(WG%+Xx&FFl2SJhq4a3;m6!u+~sgBE){(y|bfR z0G5UH01s;x3(Pb7l+&KtOPx~J^-4H+xE8TCgDCY-V5|>2 zwX4gh>-MtQl+^^r;(n_euaB4qKO6)ms{>7RXf}f82Yuezcr(lU`1m1-WUen-7FTDf z6X?tlrCMf^u83K4^aox^YolI5B4v$}PifU)5rQOD7vE8X$yytQ* z@|RzqYaSe2ulhku12)=@Xkb5e5unQj?<}4TuZ6)F&*Badf-kO{zWe<+$4`kWy2FnC z+03r52W^cBZTvjVyxV<2cEqLjaGG;5Z|nBT+;^-6bBDcq(AiCo*8wYIan)sc)BHb9 zl5$^{__(Z|O&F@n+z)QuJebF&HAeI}d{lG>!gAvml4$47i{@f&Li1IZ#?@IvN@HGB zJd8tm?{=c&F!Emmt6DyFm@zx}J(qSna~-=QMafPE(sD`Zc z6Ctf&$J(p=G*aXz|;~-ZzpQbL=VI*tY`hw zuQ{dJ=8~Xevh*>q(5FUb`vVzus>0rXTxS4xt>GTS(WV`I<)U$`zEP3f9uGJlG?8If z@+{Fm#N9{{T!BQ>(pOUNvc59f8+l9k+K&TfvYZ7nnKsDkw> z_B`>f8W!X#?nA53e9Tr9G6anaLfs|mLX)Vj*TFKD3C5jnSB)aHv4jWnfBu-5o0lav zaA#|>tIKl97}TwzCKxxQoB|%Ry|Z|Y+b?v*%u+Skc06BN))2lfIwrvul7nBaxj$k8 zd}N|pZVpiHc8D>FLG*_fJO})EQD>Vy2#n9-Gi~&{_CH(e>b{48LQYb>p}2*JxpO(h zaWME`uG8M}&3>S4_;7xwJNkr3lVS0%(e2~IS;}f{CqMoF_<`4NTiG72m#+AFd+J*| ziY&nSSV2CkUAC|((Bt3qrq|N&%M(mv*iDZ;2{|NsN6Np|udWU;1zrO|T@7!KjjzCR z?L_~{99J=hoSfgZP$-T1p03xN(n5r5Eqa6R{`Od_yfANd+L<~JEb3xC9L^h)LrfsU z5Vo7gA&BKbPbh|5coePI3Qeb+aiGWk@a-Fu=+ki6y_ObO;&ezN3JLFmZ`srOx0uS< zHo|bx!Hcx7U1h22?8i~lWSGjTwQ<^7>EOfBL|r$;(cs0vT-=~m*wqrW7L1W>&#g!` zEo$aV`)_^4WdLn$U%lSI0HGk z59e?#myHeKi;^vjiwO)_IU!SlW9__zOJ5X@O``4@8EDt)R{w@|n}eGiZc%$=>|W|uFY;jer;RSNgB~zb z^{xkAu6qng$laf^09!>`nu7}%&HWFTd%IwD7+{4$vDaeKhGnkKYxCvy>xR9^)m8U) zCm%&VwPygiUf9U!*G6Ei#QDA!$p7TaTlPfi%U>22raeJdJd5VvBsQ8pwY0#(uB%nd zUM5-h3i$UOFw4->&e?H`J8yq?mCAAN+5v*@=NFsumwjnPeSP+OkWIa7fnynITJ-n1 zNN||*eFw(1S4i7lZ&Ns99ux~rqPs(lc^lNM2Vm|~k0`80PWJBP+Y=f4N#ib?`wk)v znPZ3KMoiX^qHp~A?T=p|ZG`dv2_6P72tG1BWgJ9*d2&@d{ZiqZ?Od1bs(E(zg6~gS zUWU+_-LR49G}R#~FRRyk8$Lt-)FzMgbG%%jj;B<-BVpEC!wUwzhLB4ad!zZ9vJTd; zq2(8>dao%BB_Y*3+-hu(mnWon0(M5|KTWu?qk1KCF!i5{5&AhFe0F0R8%9T!RVI@W zmcnWyFAG-A2T5dflU}N&@1vMLy&+~I@)f5B{QqLprc?9(`u=@RdkPlq$x5H~EoBn& z^4QB&J64;u&Dg_8YqnJ(Wj&hrZqn3Z|FPieulvFRM-S9r&8Iw96S}o`mux9z;nryX zw&Htn2xMRvDl^uof^aE~`RB=w3cS8XiJMc(Yinssh6a&| zGpxzJ^VRpUV9(+awQStmT_#Q6@6ZzK`XfWrE)R%7_B*Kpwv|*-qyqQj&eir4o7252 zhnS_lCc79ZzowNfkxb+8+>yk)>3dgCygjY0m@Y_Rdxr7zYa0S~`;m!Yz5iRm4L&n7rw1vuDk7dyuDfM|izlu#>EJrq;I=pv zsw=6$G~FOFN5y3JB|(8{tO!|P)aEx=`?gyMrbU;o$u8%KzN?;M%>E)(sr2fkD3*?s zt||TXTfHUpmi1W4|H)or8Bb5?v2AAK95$tLuk6OdoDY7O-?Yq&WZ1Uo@2RwdaIsz; z%{84BFB-bbS}RFYR#*L2`rNc(x-!#@0{Vm8mi~sBWf<0NB9Orr)l~wp0@0%b-*ya> ziThpSFK~n$|E886LKFcSSwP;?Jv!zc=#(|oQ)w^sUUjB$UF>(32rxkwW; zleD`FH($rxp|My-^eKe5_un;=F{F_@t?LFc=3G6t{vAEsH8j#Dg>Jcz!o9Ansr)m{ zfAxquo6%83hF*{{t~7=&Vj9{!?z?J`4HLR=tovQf(9ViOca)f4@d1C zf;zWS_1--B`}puL0FrY#1v<%b;k`pgfxx{1H^0Kx#a!J{OE)k1%-SDH7hi^*&WRDw zuHgcl-Ok6uE?KfPC4v>qH1@cfD96p3orX__9Wk(tlRXbVvGF|IlnxN_{o z)hr5^6+S)V+wj}|9q~Nt=lzfjDF1Px>HtwoR?W>NFfQ4wNhh#g zAkTO7;+~iV+jOzOYm#$OJ-^uweVYtA6U#CauXL}=aYr98sF=VsWe>C9vNtzVYt2sU ztr$@9#~{;fwdc4F1TGYr%4@mr;DY+uU>0WLb1d>wlTL1X_PHjeWo9pY7*&cXUW1PX zgAv%E$!jcg|A(x$Js{P3j2#Sa=`6kZpHC@{(dMja zK9Mr}xbP#UjE!E*z$|6TYHcRl`SiCzrmZRL zH_p?4As|Dw*qL|Fs(y0#o^&gW`R$9kEt><)bj%Tx+++C?AVY6wNeVtLRZQyjsfpOB zi@-3yw{4)~t5$nj9=v(P#A=!+q^I?0J+gq2Kll6be-3N&nPYn{(0CHp^8cp=XyxI` z{{sCqX=S^}Q4=cnr9CN~6d>fkFa0Vdq4QCDfy(Xtx9_eOW?uzKq<*6R4EyZ=XJ}IE zti0JRBZrrvIlPV~4cNMWBJ`=YCW1b3LZ^_eW>$ThU&33(ezMWV@XdVQOODcyBXJE6+&()B`LB={WMT(#J? z4{fA7cBlp>cwFC78Du_!FjOIb)sD%Xy`9^7kBKinbHo9?I#ifetUk*56I63M6~?L= z8fbw~3*_S)X-bop()4y=Pom|u{N=%tMzHVRD-+xA7M|tj zGnMaMe!4DUKPh2Ptu?c1>7^5!pcW1ww)CrY)x$3AC_K%Ut6gcj;!xnAnGd^2GB}tdNilccAOsZtf2#`l(%o=YVFg#hBcmIvp|4032aG%RT9?b1*5lO{ z-}MNk0tLfNdAc2X&L@ILCz8@^m$yn*YN>ctl;OMhxx9Pajk;nkgV?R&kQJRs%X z;>Ewcyyw{PkuiC^C$K|v!!XUK9||Vr`Mr!TGS_3doM>VRIL62SRaMd9E4$~4%w+AG zH@KB^;H9!QfAXKqlrgprS$c{TwcS1^%{dvZ@j&Z^z}b5;SHG(eVn} z{Ft&zd-4m8ulm8)*C>5ikBxmU9uW5*wcy~6*NVU^-dM%C8svFiXk+8q`};#}4rw24 z9n-ly(VOS+^~)ug8|Y|E=$4K{&KHrOq0<;*9zh)G>6ckoDzhXe$Ic~l>R~)_r=$3U zY2uhh=9Bz=We!<}@7(JIy%IuQI$Lh3xvaCR|9&l{L=DUsEo!iT;I!sunGkZ2my7ujBS67&=s0AAGiQf~_@^v`sE!zn{S zpiG*WdFD&;a-TW+(?y%r_tVpeP!&yj?&>@lR{~~nsyLWU8-?*8mHnOcB7#KMRP9aG z5#&sU=2Utcm68sw3Phq4;|*MRWsKKzEht}T)Eu{-y1TtFogCV#X!V5l`DeKY-K@9Z zCglOb%P1dL$3(k3JTO#ntjPL-mF?8!1MVvL5gB}5v(or!;B4X6TY5GJh<?T-Q3iEtWrj z#4G^>vK}}}MDoO&q}Qx=Jhmu1zpPohghLF@mq6pqLAMU>zGgem>%z1RO!E1qV_r2F zZZ6l`4KPp2^?&*$Avd?w=&+ZGqqe|j-d)qOzF8cEP@EClH1D#y(i{+eA}=;Re+=gf zaJLtyd3?=3)j`N()5A8@dCVL#~{kFJ^$No`!3)_Jp8oAz7~P?~1QEf(hw@ z4<{&6#vGPdpzzpocP5$ z(_Svpc&uMBr?^=^H(D)6ViZd=(r?piT<$yar%;~lLsE9vNuer_s3T;<*u%m<+yQqU z&LN?Nd60G=x8%|bCgcRtlt z+Jy4dDtI;P1`J;gm`8vgN!9`n$T5L`-bXi`NpT1jgrnD^PxGPLxs{FNSC<0l$Jmo6 z;R`~Vg87i%a4oBT!Qpo02v6Q;0go5I4zXfcKA3#t+RLyPWso+|S*Lnk`z6(2bNb`5 zks{vN0b=r@)IOFH04QE7T06S-Rz-Fh$n{(G zRvU%RY^3Q%@72GaM!!+!WuT@QA<8Fpj9cqc}W0!{`4I&@+4m0Dk|a zZ3RDz7Fkc3Vfa$Bsz>?)DvlNJHF_s!!0*l>FzIwU zp>jt{Z$b8Q9!AN%hK@fE^BnxU?ObC5A;F6oO;%nj80U>mXNy-^Y{DQ8j0ddB&GURk%tD&w@~n6~ z;jripFeifl9o69$=GQ`LABz?9Xv$8sZ!FWZ^`5_rh+^_b4R<|wH<;m6e*U5I{%p`A z%n$b2+s=g2+68sM?B3h!3EP;R+6W|rsf(#&|2fsZ6r2ODMrF*~yHpV*=wmt_hbwc5 z!t9WM3)^G=BnF{3GF+gY+b98zWToa2>)16p_x-ip*S00?WO6Z7JJ#wQ z3*N{W@A*{V6^ep>cl9()4GYUqC4EYuh7~%fizP%aI&qM)P;JUOD;zcmN%`qx{2mE^ zQM&SW+0=0d@|HH4j+>KDDuFmhz;>;*TLp;ji`j2YWr5O*s_K_?ASeO9)!|1m4b>&W zR7p>x1eCOc|K**ogyAfIWwo=lo9K3&MFGn-yRDSW{bJ;ZZ*hwf8f4g@&Q;cBjz=BL z&l=~-$^!FTA1r~uUogM<1&DC#-N4MjS6`{8FX5Fkb6w|__x3O?NqsYY{l(uBi!U&$ zY$1j==Y?kcffG>)(s_l#?;PJw2&QV$D%93e@Qf9gXTu!CNeg1F=DCDzZ^U6{x586r zvhS=f-m`wvotF?|@A`)j>>ThLSYih72OlkIbKDkha%0503EX%wR-z&huGGJt5*tQc zNrDEzP4cgUv(ia}B?3HnF)Vn6ZFUDw74e!11U{I_@oNsuR48)}|1NsRN|U8L&ha9) zc*}@eZdEEoyVt(J;!w?-h+{M!D)OO{wZbjdNp}xXCYtnXuhD(o-)QcpBc^pg#pKy# zBb<&qdGOQYL(8g#S#w$C{CPcRaV*98a!XUs?R9+wP7w$8z>I_5RR=wf>%(Z3*BwoZ!j7QRM z@Yi<#&&`LMQwMcmdzgKw_3^Gi6y#i@5h)*7SJ@qQ{G@JG!gj6RlLdFh^=nzS6g(@F zuI4>zQMjg6KH$9YGIOD6*pN_KYF);)|DS{K!!>yG2!~AqCUr}P|G7U6`XXP@%_t}* z-aD+T@l4(k$2!3~2H-O%t{2qUSjHT9Cq%h8sx^Niq33sPRI1F`=kVuSzp*ZqfOZM4 zu9#-!Ak#gudPW4Q_dCU zD13brdE#Ju36#5~S~OC-+J_^Hl%dnbK`{djW^7Q(+6~f#K>!m?JfCr=D?Fm{{rKNJ zMk)O!&tO#!QXIg5aB;&@WfcOelp+pCx|Z6u+zC#{!B_WFKwa&%P5;4LvUe{|HpR+I z=NaRMgNhP0=A^ZQLhf-pS5VB8f%>iksciAd>6t>q)H~(QG=7X6?nFvYm`D?qUm-@S zhIcaPAI#Iez*AD*N8f+?KsPr{DB_{c$GLC@?#+g}Kg~f4No0wRQn#7BX5BkRL)3sD z2{?*dF_e!5QP5-BRS8(1wm5M@mSLX6+)^fS9QANgw@T}o#7DE$?;Kls=WG7g=k7H< z(@`~;`OfHHtM1)l6_^Omp@V_ov({pZ%ZlfZcAj5U@k2X(+IPQF$Py=N@~~j)b1maO zi-VYRKb7%1vALb zsV%`oeveKr-xnIb3aKr)R9BqceKcxz+Ck9cu0{z=25N*}VUU{hQSOr;h3ylJ1X$s< zK#`l%IA)sUFv1=+T zpjcrXyl=o7#~LXoM2HpNh^_jc%zmq)l@;S??MCh{hTdfuKU&pOiLEYuYk>x;O*U|j3X8;9vca1vnS|lcnTaP2GkBomVq@=q2&NOu}g{9H7)%mAOa!J84p-&q7 zxGbkwHaX`aJdaEUuxwq5SBD*s#0&a+|{rwBLu6?P8`^UZwbrzd5ZbGt64s^-dc@26@8%^Jm(m=8e);#ZACzfcB$#byOPF)@E{h?4Dw&F}~S<;!scikm+ znSOw*35Q-BxyD$nOIoiL7VkY?og624)BV!&*N&sz}6oE6pm4bkP2RX{09xD``8Us}$wa=chTT#z!--z>a6+?|{E}Gow}D!Z=qCW{6E9zzE!8W@CnSKo{!qvoa&Uoj zCzjo%!}zd(BiRqeNuXOf zZ#5>d=oKEhGK7v5! zYE;asq~f@p8V$?jfZt=PT2)7wvAiDWljk?&9adde4>9uMG;xFM$@C`Qa&?SDhdIZn zo+$i2_FN(lynLa!;3`8r*KEll=wrz|Y^1-d^np-^m>~x=H}>2>_HkAr+S1bVVZeW? z-F82^x2t3Ku(vBC`;1zUb#6yi?n><|h(sJ#q$JIoA=K=490p=)3z+}kX_|b?La+3< z#3)l3yBJg69r`n>dUuj2s3e0IeAZ9>7&h`mj3 z=(vBTYpsl~yYAk=p1uX>x}Z{w00&SvCg42kU`*~zoAYps_}W$mu63jmbNV;VX?;t_ zE$8*~({M>jciHWC5-eyU-526#(XZV3HjQ)_je^VeHrmAq>5Zu3h9M`?B^)0)$R97n zdcS4b;f9|i2&<9;S6RNkNv2s*vv&~IIL`&kg#EDu{LSODfOy-hW-A}gSbz545KLq- z^}17X2L97F9y06+IFHsD0x*5;|6MpFR4$6dVg~%8B4S)i_U?gOwlAJiE%8|p2i?A~ zApZS}`7=9h&W@*9>L5CHEFNKZd$=ROQ{7eNhQ38_dDuXEX5FRz{14-f;EN~q9Np;s zN{qdr+F3gxh#fH3-Apam=jA=RfX@~x#uijnaY^Zmg?2f^`*!e})=Xo|95E?7Q5QaZ z?EYLoI>bux)#^%AyrJuhcb|%5iRdIs@Q71ct=4{T$CQHc(8X7p&UL@@ zd?CZ1s{&Sk!Yw&2VIbZaVO<^8Ub)L+cNx8pCJlePZ_x2x?gf&fe5<&CRHijSbPQs6 zL6cURPDZC26Za$KglLVDf!&%0BJ_1X(OdA|X87MYPnH;lx{A=y8QjmIUZ{v^L=Eo4 z4j0jxoN130G|V{jtliqgAcn|Vx&qYqce@AA61|YBExyppFUPgM%7ABYYq#XuI549t zOJ|m{D6hh8kdO_^}@N5C(N(=;zGcuxykCu!^_Iuk{ml!O}P7nc+?Pv zN(X9S9yP(>2Q3I8ZQjLn-jg!?I4p9j0n}u1Q-l1`Y7u-**a1;7-ezms(w+vWXYdd> zd>>^~R3JcZp=5O-DY)q`*Y{n-HS*4)H{=?v!EQ#{gPfchhz;nuTO#m0#GtXR^V>o+ zf?}w}nei~{KiA~h&N4z-^l32UwC>O_{o=R%)8EhLYLZ(Z+|SoV-%(q?uRrT{wbVbJ zP#L9pN0f8jE;Sr0;{4}_EN1@H@nxc|9=XOSo0AMGdnW3cknq)-!4Ms`JZh!=rR6W| z>6Xi91B+WDx`UEeZ*f@mv(CB;8#sN6M&&+v>__=)0=`jqX7c(_nwCFL<1TXUH7|Le z@@hz=sH&Co#2s;N(Tn`8xC6dJt>qDD3ChisV?_@_8FMzxE$&+wWrRGh5B4*U22_$X zsLlQrgL-=_n9yn2W^a_A0RWbi$)9=Dv6Ww?R>WEZm^e}?7USN3$Ji0F`|rfVab0SW zuXN_N^Tr63iJ>-KrmB|QTgD7YWaWzrm3fbH`-x7sysHdaerqcZ zn{bT~dchNV)fBpMy!b3e);Q2ymh*ciMe?y|?ki$a0%aTHk2WKiI$ZUpWpW+jp4%w< za!s0>`}-zwSc=2X(h2wPnc=qJsV%Q1JmxaTmeyFslrK}q*MaL1mcJVvI;NaW4Ah*L ztg-;|6oL{-sJ~h_M5F^I8;*sPwa^j$*a1VZR1AU3D%gV!d+_h5lRUCLT-xn6n zAXH=5rOPhQJT_>O3=H$BXM2-bMS-usNFOMCW%rC0yPB21U9XN)vN9gyvjz z)AuvOtDc!BbJZT!)THFO_=}T5R@0-86}N*1_}6)HOPkjjFK`EVF?Es0l-LTK&MuDe zN;{Z+CO7WMM0+kPSzkn#V?dQ6Nv8&dGBZs)mV&6VD9`bXyBvC61*X+$WwecWFI;wL z7nDN_@L8XJA(Zmt4SAdh1mW7q!?Mmc_DP(SCA#7(IbO^}fN)@-K zX4YVD+v)n1Zt;5Xy9!xo>b4Np#3vtMb|uSt;Ee@qy}N zlkc^5J)g%EKUnfl?DT*Co%)^N@%y$#;)~S}gz5QVyBiW!>Hy2F(Nj!x+~e`c0}8V} zJZ)mvWDvVnc|^|sDnhx-crpUIdi{_;syw#|U+0(lNp zwOrT5I4Epy>d{otdiKCr_ub>Z*7H2S8>E)ZckQsLK5KVw6aT*lBe1ahM1g^)*O3K$ zJv}Ea%8YBmu0J_Oi(_8anLu_LaNW-r#oz@{5Mq3)SI4V@n=)SRwp}Xo=SGL$)x%=J zqs~WZu{S;Nme>cy}qAj^G>b9xp@oa~%8pj8m&_)s&KV}eyJcJ^>)C@WO~0uQc6x=}epPS8-Gvz~s? zKGb4lLi6$WQEg5mnLY+G)N`AxPhVaq7oaxk%&7!_@RP<(bOw68H7_eW#4CJ+%YnL& z_c=AoPp9g*Ls5NFWl4+$(?Wek89>Z?h&DvHE|S*&%sym+c!*h67tIW>r;{zP_2Sfu=u9e$%9l`bTTcLhX_Uxx=?BOS3$UUkIj6m zC97oU?3YIb+8M)Yim?cwd%>Z;OTUU@&)V+|r@GC*Wu;_f+^1n{b%FmO(tACIGK2Ru8HIl=oiF~*=xQ(_IBEQX&5&qZAyn!1 z>0FgU$qbenF23L4_G)W;eN-X~=LrkBQ1+Woqj3ykY!s?gYS^(pQO0z5SzqwNsjZ*A z6&SNIJbOJL!4HW1W%rWjMNt{EpM{O+Xq#Dz4K?Ixi(3~D;Clkn(HosfdD;-<%M6b7i=oGt;@~E8yJAt#0w#hrsOp8PY zobYL0%Ft;_WZ{w26UQ49N)`V4)WJr=O*Yd=^@^2J2>(egJ(S=Xif)1$H=zMYGLZB3 z9vW0p9q#!HuTxK;D%YUSUu-A*3FfmCb>@8jl%@nEz6i>>Jyzh>K;;_e^abl_{VH~{ znbULXh_=HfRm#uW>Fq9f*fvI#9e%5ilslTrnfy-ij*BB7Qlq`jbSMUj1m;d=783>$ zf3?3XGT&SlW?_;mC2bseSD18J;C<<0&%Xm0W0!NLhQ4e~wQlfW0IYldSWI7hFJ`;2 z_&i6**26R6n`B(dHd(xF13ReaWCHF-lADi3tn;Hol{F%Vk_5+2hcH~AjFQ5&kz%ev zUfddH>S$!dL?`ZHNy(P_{zcmR|H=tS2*SlnzgRjM6}{0NP)AMN+{uB0&qE=J-KgRy zmE=X#;m{B+;W=`ds3#105+}35%^0hvl+Ey#9D8PYrqwNr#rVK$g*IpP;ooJj2G1!b z{Y--4pEYCG59`4oT%F$|m-{w>WQ^Sm{@X;VmvRNnY5DAkost!VAAKegak6<6z$Mn45fVdtwaC^L~#;1|YCrk@gz*nKUx?{}M2 z^*i*^7VxiN^|I;}yI(0jGxgzFf{*{DMfBgUlZ1G&>6;IRx~7d5C!!(@<$Dw@n~&!& zzdpZ8H5UZ@tzS)zGRtIZZ#tLejfMKQy5=VlCiB)oGroOz;9B?p|9E?=usEV_TeKl) zAV3JxNN{&|cbDMq?(R--2@+g_I|O$K?hqijYX^6?Tlx1s_uPHI^L+ZHtBch|^{Ta| zjyYyiynr83XyTLtlRGaj?wFB=N$vf7-}mmft0NT(dC<nG;Dhs|T-Q?k!mRczN@&qjOxgP&?mV`nVW?WS zJq$9`#4tS0V5gdu^i>H#Wo3_h&Ak_oi9;*Kbg>g?V$v`SLar~Tj%~K(Y(I!jHm9{W zJ%?WF?iTFvG}Ew=2RYxx-Aix%=IDp$62h=AYazuwxtC!SuzkNm!)3e7e*#G74_43}C!Syo& zoM?=PsiUR!h2+j)i*kq~>ItEfrS(m~)7Tx58ei{tqJq!KPA5PJ<+6a6Rjkr%R+*jP z2tWfl1?pI=Z@On+AsJsT5(8NQTN_m02cN0^JyR5#Lr>a4{&c~Xu2w%uX)Pctur9hs zskqR2IhpaaKQS(IheD|Ox1l0w@B_E1b`V+yzn$EINBoti$3R$BJIZ9Y+vUvMiuIAU z^?U#@tHzmls) zQK9WO4#1q!b@uxrc12boU@Gf5E2fC>n8&-rd(3C5dPDv4b@{W`5)J^T;m@Nla=reR z|3k3FbdEwzO#+o#!1=mxtca~yY+bjG20t>_%9fsHxR%!0U441Jb1%?Qc_XVZ6&VBy zH)P5}pq>EhbXXtFu=BoNuLPXAGva^%o}|X5I$!(LF{evcJ-TYY{S;}z#Q+$z@=`0^ z2IqPj#74J?0Y8^DhW4o=t}p5zBM<8x@UyQI%N(qA>dc1#Jc! z9f|z(*^(Iz0WGFf2n`z95E=oL4ApB`|LMmM68vsw+7}pO<`}2&ichD1enbEI&Hoi4P|u(EoxS6n1R3Hr7aDRz&=4^R zOolY9P~_Yb`U#z`?KfRF#sY>tL`fVdQn<}z*d(V}=s60W=#SjZ=(9~%kpguWi~>iDI;+rVOoK3D!LTvE!#A#+d9L$!wq~N?;6ugHa6ZDk zGDDm-oJNJwYtGqKK;mfVaV*e-AR@$m@^=tj4965jHhO#Ialdw=xStJQiufFeFTqcu^`Xpk( zX~cJqn%g$A8KT~o3A~WCZBFFABX@7zCdCR_rKkX6@K;apF-m`H5e^81;510T)(f43vV5QHsQ{{D_f)hL=jtaQaLhZ{~;sN_Ch4n99yJ z^gYuP>Dp<&lGdKu1)lEBc0lWgrzNK(XMa(9czZpv8M#WPW{~$1@5`G>+VDBd%X{~} zx{-mJ0lP1%O0(Ogx20#p`#Q*`YOEwwi0k&XJod^y=lWjMr3M((7L=SS_kNPQh^{)l zrsFC|YV!gf^15@PmS>p!rCchJE(&C*rHbyfz1=IIHKd@XF~<=Gq-5k6>4slQaof_x zE1Fc*vme$q1e>ky5*qP5NQI(EM(T#a?>5&bV}iD%Y?asJtz;n?H2eYoV_^_p}WH-%1(WzZD&# zF_$BN1;tz`apA@el1n$xodQq>97N6@f;~Bvqlmm0i4Oj5zOw|}q&|K)N*Cdfh0eP52h zjN+q6<}VdEorKuI1JV=a@5rh}ia4xD)YE=vo#7m6*Q-_^n~Bp0P}kiUcGr~ys%KUc z5G;odycJqxnvBdPd@tEIokk~Z7bNAcz|%M$nwb3MZ!HJ_RwQA%fj2n?AD!R2yv76; zUz-=ySN)!@4Y|BK>Y4(S*S9WbzxvgQN!wf7cM3gLsy}e!m`I}NwwXV@l9p(%yqjZ> z<%dw!yG}Iue{Jo4?D_O@jf$~iz3%DPkL}S{D;c@&z9QM3q^wgkKC^E)^x z?832*lResaW&{vXLUoll=7wUT)C>$Vwu9F%FwldX}SpFTo=#K9iRe)Rr4W2 z2wrQGPWF)Q-nLM*(Wx$}>mUqjfmTBiv>sJXakVD4z8U0c3Y9(?3}`bD5w|L9F>!F2 z5h$>9G{xR9NHatD0}_bK>=!pW!e0t`t|hc_`V62s3u2v^+dI%V<99LagUMs8w)6(g ztfaI@K~Ipk3&Q9RSK9la7pX5@xSdgC2v_Fv8JspVjq1BeKpC#YL^{X5woStJs3ULo z+r_R$O(Rw=4PeJkJwr6WCJWjLfMj?5gaE)fsIz(e|Gtt^0*FCtWe#t#S~_X_X3~V8 zQ#(%HdjB+5EDrOJwrVe+DyYqDqTB9paciKnnA&8#?r&jjADOadt-pmFYq26ebyV=e zo?M~ub<6R=I*P0XknWk_Rlve70$`kQ0aTZjbW*F?6DlZd-`3_P)GJ61S2*D6?xvjSSVqdf9$yz9}t;(NklY>CC5+19Mgyw6VF2rZwIE z)Kha|@dbi8TJ>HI%EJ1&&vGStdoi~oV;xMI87o%t5+;ZysaTvl%yyFv)BGhri8iy4 zbE&=oaJFOGvYVFAuZD{!?g(Nn9;eqKMUM zw6xY-7wD5dz3#bZCMG3>dDHd#>9Rs^-2>2qC(K>wU)e6j04h_16Im@`RN+rU13Z1m zWVhWTfb?w9g}|HbW?5J~nrdxlO{K9}4;Ctee!2x%Jw(o`45FUp1@%xNg>7@nR6q$`&qaXOHMO$#KeMm{Ck8>r%X-c(O<8A;k!@vSzORiqjFa*_`QFe-g$gaX4I=E1rXGkd!#TH<}Jr{6+adI zy|pEMyOO@&WHx`!^b}neT-QHw zQh@pyk^MdnjDL-K^f<=Y@l#Y#AukkD^kZR!L=QAFvJg`by6~nU6Pi?b_M^y!X;OwB ziGZ&7)# zS!Qg+&^0H9r6~*6BS|Gx8{Fl?=YT~6r*YuWMuD4KiVl7;R+e&>oN$k|z{-6WtNbA~ zB(q2_+vCN0eTg)cZj4oT9A)WjZiS!AO3;=k%81XcNyd-a z;500dW?MR!xYYrL1wJ!HDLN~4eJSPwH$=5Lf({xIiB#DV$ApD35@Qv^0+JHTNXRPx zIE`kKbzw?uu{wi12?m`jWnx`OrFPo;zLkZWO50lBWMZA9bNuB%JF6uP`-iekAQ6wk zpk@gDqW;C(dM`}x<+A=Pld~YNwX=0j(ALmEAKa}t!c8x#_T z-PFXy z8NjL8gdJQh?(jt8No0%>ydP3fpD!*cX+N&(GoO`DVm@?U4Vi>=vAdx*xG z90~$4rHaCjv`#TIbCnkT6xXkymObs(x8wBTbYqJq@4%a_*h?2>hIJ{GPDW>0w2sV+ z*94oh`5~yUo{=7(=cncFH~*yrDmy*O5@ za)8jC#}o)u4kpjEm?z^4Tuffd8~A(XU@e4yU}&hYX2KUmXvMd-P$f`zD<;Qyf7CX~ zJvB8kJ~aZs?vT9z&wYXzDN`2gHTHk=M5JXC1ge37N?!Roehh zqnyNPQZYy1svUdX@7cwrL=kto@y0c~3AUG8z+?3fUWU$222SiCw~)EFc6adc>0Anc zbrpjZRwApV|24xGOtd-Q6xdg77*k=5>zahM4GYW_^N9ufBF@Y1Q^htf+t~bMOJ$<@5z)EMYVb=bc zv!P$DHdBM6IlrGOdho-+YIOn(ai1UTWY@Z9>W-yg<=ELNRCCqwP`?_unO8EJL; z<%BbX6jo7`>yc-VZhO^WErqlC<823<4j)(ybJ{3)zCXosLj#=3G`1Me9>i3 z8OV7)NaVz}70MZp*8kOaBGnY+>K>goBoc`Bh4*fcE=dx4ILRqaRfqplk0y}+j`QUz z-oV#zJ(PClR?2HH{_SoLet*LEew|x`Y%#MC-|YXDHr|->oa*+=8^0Hwhbj@j`b~Na zw}?@F?YGgXIjLkGY(C{~vw2ISJe(8i;#fkUa(N=w>F5k=TfEu=;*8OM>@sTJrE;;x0DHv1S@5y&>%Pa9ZPl8~Q8YEJhiH}vSJ0*r_a;&7a zrz6X$fX}-N;Js|4{&65(~|}TLQt~c&8_0^BX0_oLqT>c-fy)$@*5xQ{^B$#Of*~-)l+H) zB_8NqnlBp};JLw#5e$yRg@ZTD%3ko0zKBMRl(in1fV zL4T`k!Uvh1V%X1T^q)VtxkX=*_jAK%W;rKI|M$}Lr9+;5T&wWW_j2gICN}b5&2koN z-lmWzpgLa^n4BY*;bIAm0{@w+$e_IejAJG`0ff1VAeK-p27 zXM4SwyBmwkr3hsjWEzaL1-qCl`0jRPb~5;g91hox626?t=61Tw-yBmV$#f?F*TyK6 zny!$_XL8wgjHw+nYIn>$M#r=0>?jFi#^ud_15p0@%{w$5rkjsUlmT@uIYWJBG>#LE zZES>+o$J00SBGtrI_!ud!zT@bo(poB-da7e-Vdz|Jl#?6>j+xUQrONOpd1)zd|q6| zH2mH>vjUKo4uMv!)bm6rP^kCok85!n{_Zt2k*^QwihQm<_UhgTW)demrvh916l2f$tY&th(dY$aUdzMLcj6@LB##YQKnGf zcc4&aPHHLW?JVUmF+f5|Ab9A8fh}T;f*hlR1E;V{Kot2Pg!BkmWGWy^hMyiGjqlP= zk3s?x59IERNXM6rU`0U=`V~YX7DyZ?pM_EKOCBT*$BG;UieX04lsZHlH7Lp+mPeNG{PBtw3ho{8agTn3m$9i&-J0AIzrY~4 zac&C=BAjnu%Ld3lGH-&>3BaETkPzCiL^!da;mtovAl8Go|8{7hhLR#N*N)})p#6x~ zXG0Uk+B<$0`#}f`7ZNNJs3pX`4MHGA)-2J*I$sJJYKizLVyF}c3x`3vndN9|{0$62 z(29sgrjkfw9j_G@D$XMAN5cl!F(Jedhw`RM!Z@aH6FExs>` zbEUMiCBsTdHLz}@vu>(%|1T`S+uwl)(SeJvHto_q(1!TncTge131mblhRh5flMzzH z&X*W@2ZhKCzo0Swm}Km!{`B0}PY$J(>@fx-_upInnU*xN_fA0YpglMD+UWFi4A<2;6tlsO432=qy)|93+6Wgi-p2QGrD_~_&{iwx_`T94BBNfUgC zGU%_yw=!2muTgOP&`pK^;yN*=GR1!s-T$(H|D&7+#F^v?Sm}BZ1Kqews_1@@YzLDu z!4&tPi6WH3N`c0MoPUA2U=@TwOw@+ZY42c(5HwSrML=LCm_n5-$DiLK#A7}r5r=(h z_X1J}P-vj{-xgP7|E4cq_38al@chOEf(e}blxoJr4W_{4$`fMV3=P76*A)2PQJ=Uj z(9d-1&EahF9ZHc`S%RX`v zcef9UVj9(D-S~rOo6!9%1B7~3kw;#SC6aAW6~G`-8If!uPP50c4sYXB0hF3_xO1+f zFeJBG)ZAEhzdk8*j*4iKi;*WQi6D5`4#ufql{tK`%Ml?!UE@ z7j!&)99qzM@GsBE1vL@3%Q-)-S;V)ZuIHNd_Xx^fIoPIK_tVlFIl~|0&}n>YeFmA8 ziTI{ew6OAV&6cg!-YZZlZ*q?+D`UhYIzE2plCYvGjK)`lp>Yfr-p|LKHZiCt!Qnj_ zjaOW`!Bvu9ZMaer{`dl2X z97V}r2Csb2Y*&(5M8H#b9rvVd)vOX?P_!z*$X{M0(z?N9A4L$jCt6VyVz%+({S>P> zbvFxJp!%?9zcLo(HZ0UagUMc1+pi2(j|<~FsXGrSPZY>R!)Ne{2YBQPhRtDG^{bv9z5YSZ&EvU%BJ zjem+knJ6@3oBGL3H_oliG$*y&(T7+f@|y#~cixH7c!!mbA`x2{9=)^OdpYf5BEwd1 zZ*c!+r6krLZ{J$@2axFl{d&NPEY!iFmIg9;ix9!Bn3xR>UQra$@fLn38%&p z8Z}Z?+fQZCf2R=daF*aMs;n-%>BG!??m3@J1(<6JrO+mqp6vf!`M+O*^&)OO=c)SW z`%}3a8)pB`w*0(@?&*ZLIp&a6k%inwg`_5<8nk&I)lD_U5%Qa^Lu@Sk0bYG`Ugs**Pj5>s|We3!e8*^4fI?H+v^x8M;l1Hmu zhDP>nWH)_xO!0r3yE^ad^E>2{F0x#MYNqFxUS4Nz2&-338`EY~;KgV?TKF93bQ}LB zedwTqm{OoNC|vxZjXuO%8HL;X5ZZPqPVMJ&VR7cyQGMyCqVL|eWC~Uqcn3_#eUr`6 zvA4%X6S4Tfjs)h1Mfj?qo7I1h*pb+gOw%EacQ3`pJf^F(AA-s}IPcr#b2^T=FqO?> zttmaX1s6c%dQqCEp)W9P%#1FAtGyhub$)!XS6}?Sq=W|;UD7=TTne;FJIB$`aX&xv zZtkYMc!*q7ZSGcmjtcGoa<{>BSLa-S-t5NG@w(|lScN725Z(;*c2rXCsB2u311|kq zTv4*_vCt@qw}P9wvd!-Lav7|sUb%5`^<;nf5bWUplZL^|U&|+)mY@CM_Q=A&&3y=7 zb|Jfnp=FHq#&wm%U#o(Kr+QBis%9DK__mOxXtE zu#Dp4Yiw#jo%a>|n4sXBS%g@_SHdctHfI+yT;8d0dtjz+=g4CY@7BECr1kfOJU42r zm*b*j;u+b>e0PHfDs-z)|6QNXpx$n}F1CX6jKFe>w=uSA+VXhbrlh@%A1Spua&Ypl z5eAr)^R<-poXhhNPF)Va#lYA^VomRVOLX&jhf4utplz^e?I~VYz$}I?GS85WojhTO zD})XX+Fwnre)h9^MN!{@c}!6W4@O9b?ajRO4uiGTnT&MP-5rqY1c9=&!^b*Z=k{mv zvvv!~)QbAS;e6C4K|dvMNaY$bCYlY&jGz6PTFlHjI_(Y{yZ};M4q||k-e0SzEV}g=;7vbr#g><_l3)2d2v*f9Z5j< zY15DM#v?B-FIgdzOXOSOP43y@SzT5onP58=XA)Yquc?Kbo()w#HJoSwHh>KWZMKur zFZu7Rw!9Gg#vxZK{S!EWNKht~YX`5Ed;6=Ef66{dA_fzUS+91Z=wIfG-6LbI%fKgf?xoG zYFEX@<-PbLK{T3OzJP6JgPbQEOw5b=ho}9yo-xx=KYmP8-f!$Ss$7QY9S%6@`nf!vzLO050Fa37eEjoooq{%K5R(7R3fBg(bK%E0fbE}eCI+%MqC)Io9G9b&=6DWn%zrh-PwK>_$P+~RZ1OB zH5>hH?A4cFMI|fZ|M;wSwIIj6=M(gmx==jpI?a2s|4prTgdt;gg$@aXDMU!>#Y=tFk&_KDY<{iAZ>{O zP@WeTHOdt>pUs{FfeAW8T#D>hZJ%HPiGGob;seR<-9Dz)ETv=|r!h6z{#e`lH>;a` zzh-3r9YAzMU50!JYv^ewtIDk+#7q?Vyx-n==-u66WBb3A1kg|qXRw=P(M5-%31cKC zqI<6|RV_969As3*%4grLJE^O$(7=#8j z-Q+)$7jiMK?Oofi>tV*0W2ro+A}w{)UpC%p==wc`8i~rR>35U%;NFR5eO6Ngbe9(0 zzF7MJAy8Wdp;7oN$K2}~H#Ie4?a_uh$MJEHP5$UiB>PiLLSG|&4Wq8UcA^GH>8~B6 zLW=AuGo$o5vbegubb=_APjn9PIVoYR*OqJL zK4|=4rzVMum%(cxPr&)ZSO9DigBCBy^+QG+!O6`h*Y8DCq(!GXd+P=kQwv=jIr-mA z>uR1q!vpV*T^|@GweEY*e1l4hkLreL;nE=w@MoR1^(#rH%^5L6#eO*+4>0n0k_bjI zdTfP1i3C~c`IqRVU$otUuLst!6>@Qs(u*(LnEv~@`+J3hX1%B~2U~5$6TGx)YP7>+ zXx^;V8)m(xVm0T7R5X>&2b3kVmk}tj9*!sA-K9EVbJ=R5DjDADwbz1FMN?L#3 ztWVw0`S`v9z~$Ag$T^L7OVSmeRaL5~RUJz8g;lAsQpTrodmV$)TfRab?AmE{c-QiU zMrE8Cadm$KazSGAA;An*{2@J~SQ^@b1MdXUsXYY_Lw*66{dx8#Jo(YB<-MJuk=vQe77N z{+X$!j;pQ1-j1wGW-~zeCuxnR^kzZb$;ZD7$KyCF&Ejf0?u?(`H7z#ax5;0N3Id!z zKmsFif=c-RslgVe8@@EZxfOi?5NP_t4-*wQw>j3EKvnd|RCSvrW&(T#-$!5&h-TcJ zPEYY^YRJx&5B%Q8S2%m-8Y7%6>Vn3Rt@z=&C%G{69%WZWCR=a4v^*;K+wM=C-TQE* zBc2myA2s=sWa|uj#h=JoIA&BulMITgbDnYaT5{^qR)J#Y*L$d;FhQI+I~=^zfg(6p z-tS%w(;(bxbCp;siGA*`I>HNOg5bKe*nCHQQ8lnho@4(Gl4Gc>bd&5m6BKm$68m^Y z@cWfdwutjk3)CVBnp7AH3UYtXf_;M)0QMQ54{*|IZUx3tu8U$&0ha&7ovtPt)xY=u z@xq3Ik@^3h`~?dY#PUBz0UsQNh5loO|Bv&!X#eL+{>P*F|Bn2>cS*GWZODT_5%qgE zO)n<{U!w)ru4i<{GPHTaQRvml4#qOeVj5dl@lD_!FuGwufoFjynD8$>O3wM6oMtBw zOdhjH_oMC{FFQZk_SqyuRwU@I*!kQh4SeL#-jPT|gKiv?%C3RA^(`4`9w+|N^2dj` zcZeL(#@~ECRm5`;^6BQLX1iC*AeR8#0a_cYR`nU=fCFUN=HF7?ICk5g3GQ_MTIY7u ze0r35IoPY#ey8z9d-o7Ex-7&bhOpGI^Gh<?ozozB$ffvwl(5TG_ksJE}5CbHNrBOmT~j}gxTI)rDhv!BY}E}wh5JMVio3?6^< zE$QhjG*}(wh>vkrX|{j=(&nZyx1-qo0qLlZv$#6Ecsgx5EA7ugLZY%mgm16=uZNF9 zOod?65E9lwTpb=XRVVk172xJGEw4T8Dy-#2+o#?J)Nk*3boCxDaEp^0-5w8hcuWp2 zdfX(Q^Q06r(M6tLORH5x5Q^BaqHkb+!$40?JD7B{q25V z9dhO1+u-gZE~nO)fH36(Br&8!b*Rv}72PgA_ktq_N{g*N&`$y?pEFE)K})BkrmRtC zHm-5Mz6Kz3t*6fuim{>t$EeLUcy|u*&=rssmv{0n*TwUvlL~~hIK=&X?t-s>GI{S*!$p_}yMB+xFzGD-vKio|wDM*G zlLArv;2x@?7_@xrjD<5syySp~WM-`T1i<64vv*+`^vrR@m!$T4{4Rdx-$H>Ffe7uO zY8tn5sH00@&|pCGpC|>KKy5eDzqJL3NqepF;z*Nlhnmt$_<|9XmAmT9^z@YbS;^NX z(}7~ZXQH7VPiOWzPQK{lY4=s^I)DA(Qj+|Azw>;)&Q0f5kJZL_Lk$e5qmI1f)7608 zubcuYrU?hf&8TZe9Mml<&(kc_neHsNMUf;klX$7D_@z>S~ndU6nw9P6JXuu%xoWTyc|zj z%K7cjk-Np(VO5mXwVmdyK=fFzwx!q}$17yx{xpX6D#tT2y+Jk%TKyNM!{$@hwQpbW z7?a4Ho=(fF89e0mDkiL7uL%8(Rg(S7>m3MX4oZ%iYL;6n%9gl&Eqemi17x|%yXp)d z_OsRahF*?`n&UsGG#jntpr+WdWPW%;osT6@zZ68>C^)i(toH#0chjqf<5LPg#}Kz@`A?x3%p7TLxWGh>X79*{q;o^XB>Ves9M({AosNLdIge z+fCIDD$K@%Z`xv2kP-TT3zB8>sop~qlc7bt?tS$@#jmW_ zj=A%D%V6${0_wS2tcLt$v@A+WY#rC1bJuX9#IP7QTD&yWJW^{~Cm#BEtLer^mVUYk z4mn8_czJ6115Oqode&C=>(Y{W9omdNwUoQ(fliH#VD0m*Wxwx3+7C@f7Ha|y-el!K ziv_m_i(D7{){FA8R0AIO3re6S$%+|QT}5UHneh60ESfj2@sfW>^80&e2M*l+oeJu? z&vw2((}w}w5FU-@H;ZmBi`Tvd1u*aZKy!+9G79x5ukMEXQRA$up5J-%+i&VdZTXC1 z9r{7`On1U+J8L_a$Y3UiTk_hp$I;+D>By#Alsi(?b#?W`jhdT())(mANAv%9ae&^% zm5|zCym7&29)>1OW}!zzK3n#&^cesQEhR2%4m>+7745`{1Vetu!o0Nu3j7rvHCeDz z+e>-*-3m8g(kw!MJjtEn=k=QzrX*;86C`XQAF&7K%D}}2lI!m>#Tei{6d&*)sWvCl zC1mG!6f;tQ-F*$8D|kJet4|bKSVAW7`1`Yiz)OTQbI0{0i<+7WJ|d;r`rhS75x`j3 z(0X1f+L7$IxOUK8>+0@qP+GXTMG5#_^ZXce#_u`xVXEWVp9{Ur#>KJy4fB*I#n@)EQ_4`eg+t1>IuaMmK zon>l=*PR4j`!sTd?Zepi6`r=&4br>U?Vy!_>np+141)9N$F@yW`?Q-|L4pTQtqGqo zj&nX7-K+;-d*94_>IUqRqh>;q(7!x4k0G7hsTgKdYF?-8|j} z`(>@Q-z*-F1F+ob9=d{8#TCWc^80W1&6%$pZ$UcM>9@OAXSchbkYNk_%&#vVUibz1 zE}nx8nXX5Z-n`yWtGyqK#0d<3)V3B>tlX`xhCyvLgFK)dX`8`ql01`A|#>1+4f+**A}s*c=# zz#DMymy7Yhu!#V_S3Tu#F#2&~YVv}&f3g!T9ghB1^QjtaERK?3R?OS~NLE*!Tdqpc zl#3l;8yqf(@6JDX3a=jMU7xsDv>S1|BX}L{U2He=M z@$p?^y&t79#$=)pOHgU)mCs@8k5iH$N^ji~DxfDQeIx3B*Q2s>Aq_RgU4jIe431GzaeWi*(eFNdhUMtYd- zYa$32kHO*bO<;M70aNEzzqUy*alTxM{6zgq4EK^&Yx+Sjk>*5GgQ=vSN+#gV8rDYy z|2X0?p~Ibp5#Hpozr6n#iGoLLs-&#myf6hm(gPuM>1#=!erR65SY4qVinDApK1`Eh zn_pc1h#byoFGv)XpMAu$yelKktj|$J#>hKi%QD&C z%8_sCiqC=_&&MUl>EM12j~3X=+3SD*q}K!3)|DMXj>13)SNntrVnvxvGUi*0vX{hw zPj>3WI5i94+GJ+9F1SE`(ovO_#`Bh!_26Lt z(y6RWdVj1$zr%59klx3JpFptaSV_KM0pj4GqPO;18Dl!CNmPg~B9h=JFDff5d6)At zXEhQTN-73q$DD=;*FV5<3vzZg)v959J*cm-vUh1}YHvsrDDySFN#H3UiQsecdFl51 zi_)90dmS3w5o1WT+J5+H>MHcxaZEBXId@{eBG_koGRj)UN|EQE;1^=#BZB^S@XO9+wK9;&DwQ?`s)xDdMM$7#tS zWLjmliIbbJy+Dph5bU-{FJN$9mWu7L+A(C!q6DxAhkmn^V+R+m8>xy&QQ?z^4%ek+ zB^$ERip8(_-u%gZyPwao<5D0J`%5p8-)GA~edgbwp4=bM?xx^vZOnxKK{7v)>e}4X z7$Jo;B9WW4S(pDLsJ-UO+b_WL^2XgF)%csdMA8Tqp6OPCB;nYYoRd%Isl5eTu@gRa zY=0f=m-e;wlH7nDOTUUaG9*4qSw0gw{8;h)+I3r5q?vlwBm-X`En)k?tb@HLRD!j} zxAVfw1imRZpO;Wai4b9o(46SrrIXmfeD~-ez>012_cccx8okusJjKk4>oud!7MB8v*9y0)z>&zLZ#8J?gU9$EZp z_tsUuEJ^s-^Q{+IM2ZP~0WadWO@lESF&IIDlo&xFU_#kgr@T!^A->5ij+Kbtl>4%K zDJ-5|ULHou3_KsS!$9;?5D2kbT1;5g`=Uy1Y~h$~ROE}X2p76pGIQ*EAoxE-vtg<_ z7~g4m_evUWlL@o{1Sm>RA|V@NBMKu^GQ}}}d1k3uaXx&Wv=@meKgd%G-SLXs0irv^ zl&4pnIEh`&mjBjZ;0{y4zoZl32rft^Cg&zy9NWm=s;WPA5c>r0-B_HCOiGPQHEJwy zti4rq7Z&q`rC=rRniZ2TjY@v--fu*;Im{q@J+P~JzDezVJi|_@UbU@F^S>y_ocV(P z;zt7lVN>Z@tk9Ha>E%2hUr(`huHaG8jyTvKMU}Pva>5@PVNv9&?kYQ}|FCkW#sgS_ zj#GEl`N>TlTu9C=F%qIg0F&ESwCxM{kUUF=Wcd2i9`r7wNhLF68TM*}1%H2G? zyY~ExZpKz#o?tm{s%oywV!jYWnn)JfJDpZ6gHDJXc7m9aL*LnDNQRCiP6A94S!9&3 zfbQ(K^c-Ur>N4uMwI`H#T=l})Pc~Kq#@a*}b8gq$z&(j@`48oYY8{M(A8A)%?ff+o zxBHwUEZ!PqxJWcM6pYF}Nfcc%?~vLEJl26#eTlo1|T~ z&CKF;Rzu-OvydF`%QC^&i*AG=abso!CJ`JQ)vTx6{5kxgIrb*EHoiJ4mccrfL{8ha z%p6-qnTE0q0+q&`l{!we=R?+iD>V=)l_}u$`IX_nVs=7&%!6SVkaf?!7(|m%`&Os@ z36~NwO?p1YbotSuy#n(ou*c3SwM%hoDi-8@Fq5m&E0F(@!`CSWBU4Mq9qr5Iuy#HJ zX#sr_4NbkxJZZn}63 zVgEoMq~xkJ@;bc@UX#LQc`z z(usnS0vK3KL2g<^DVqE%SMnLE2bRkzvpE^Zao^=wMX*x4R1;e8+t!}>tYASGRA)ux}8 znx2%ttn*MtjS@mNk>+frT`rHYdpw?;Ac}+;LU&F^No%KRC2a4mow~BIxGG@oIWk-~ z6AVxZh*gmG%q%XaXPE-|cqw^leBG=ua0#mbCoMfGd+ixM=J^fD^kU8^Zjy2eIdl08 z9zE-C)+L`Jm;K)# z!A+CZZN-zyeeYSne2Qmls9JBZIgPn&z-X@@E1+`rSI-b;1|08xr!0xGHFNr5=_6hh z4BrAvwx*KHi2UIwItexJm#mR=D{1qj#0*=(IvF|zXRyXHmjhai4iUXwuO{2)V3 zG??%?5l{5UGLk9T#L^=+-01X}(RcBDR?SQPZ)3cqA8$D0yOng)UJ7`tjbk33iM7zp zq{;9T$RZ&vj%#b>mK1RPVPe zsn2&kT$3h$$rT)S%33mw=~s;gY}V3p1)T5XAC>JbfMf>W({f@~Wdrx@n3w)ftr-5Q z$|E+k_d~|z)0Rwlm~lIBtQNRV5yH%4q*j073!1 z{`!6-gc!dxMA~=I)TkJYis8!}3j%L4Duj@GZ=3tq7e2V>7k}nBE;BXpy4jOOK_G;j zbd*yb2)>cUY_yn-eNzNMNVFfT+nA~mLU^7}u$mR+L=cQ5ese2x9A`EiYgxr05h5M` z`9yP@O^Vs1eBtOk??|xrmV^+(aYQlT4eA-wblu|%76^jMBDxdFtiQ; O0000 Date: Fri, 14 Apr 2023 18:06:12 +0200 Subject: [PATCH 08/26] fix closing details in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dd2866425..5976efbd3 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ Chart.Point( ) ``` ![notebook quichstart in C#](docs/img/notebook_quickstart_csharp.png) - +

    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 Qd85F*&q^%z_;W& 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

## Samples and tutorials You can find extensive documentation with samples and tutorials of the core `Plotly.NET` library [📖 here](http://plotly.github.io/Plotly.NET/). From f0c327bc4109c5e9ae54b68adae18552769b6d81 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 14 Apr 2023 18:06:57 +0200 Subject: [PATCH 09/26] update readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5976efbd3..fd60545d9 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,7 @@ Chart.Point( ``` ![notebook quichstart in C#](docs/img/notebook_quickstart_csharp.png) + ## Samples and tutorials You can find extensive documentation with samples and tutorials of the core `Plotly.NET` library [📖 here](http://plotly.github.io/Plotly.NET/). From 9cea9f28abf1febacf645ada0e26376494400a4c Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 14 Apr 2023 20:49:43 +0200 Subject: [PATCH 10/26] refactor html codegen tests --- Plotly.NET.sln | 21 ++ build/ProjectInfo.fs | 9 + build/TestTasks.fs | 10 +- .../FSharpTestBase/FSharpTestBase.fsproj | 6 +- tests/Common/FSharpTestBase/Library.fs | 5 - .../TestCharts/Chart2DTestCharts.fs} | 37 ++- tests/CoreTests/CoreTests/CoreTests.fsproj | 34 +-- .../CoreTests/HTMLCodegen/Chart2D.fs | 273 ++++++++++++++++++ .../HTMLCodegen/Chart2D/AnnotatedHeatmap.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Area.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Bar.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/BoxPlot.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Bubble.fs | 18 -- .../HTMLCodegen/Chart2D/Candlestick.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Column.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Contour.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Funnel.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Heatmap.fs | 18 -- .../HTMLCodegen/Chart2D/Histogram.fs | 18 -- .../HTMLCodegen/Chart2D/Histogram2D.fs | 18 -- .../HTMLCodegen/Chart2D/Histogram2DContour.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Image.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Line.fs | 31 -- .../CoreTests/HTMLCodegen/Chart2D/OHLC.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Point.fs | 24 -- .../HTMLCodegen/Chart2D/PointDensity.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Range.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Scatter.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Spline.fs | 24 -- .../HTMLCodegen/Chart2D/SplineArea.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Splom.fs | 18 -- .../HTMLCodegen/Chart2D/StackedArea.fs | 18 -- .../HTMLCodegen/Chart2D/StackedBar.fs | 18 -- .../HTMLCodegen/Chart2D/StackedColumn.fs | 18 -- .../HTMLCodegen/Chart2D/StackedFunnel.fs | 18 -- .../CoreTests/HTMLCodegen/Chart2D/Violin.fs | 18 -- .../HTMLCodegen/Chart2D/Waterfall.fs | 18 -- .../CoreTests/HTMLCodegen/SimpleTests.fs | 20 +- tests/CoreTests/CoreTests/Main.fs | 2 +- .../CoreTests/TestCharts/Chart2D/Line.fs | 24 -- .../CoreTests/TestCharts/Chart2D/Spline.fs | 15 - tests/README.md | 16 +- 42 files changed, 363 insertions(+), 656 deletions(-) delete mode 100644 tests/Common/FSharpTestBase/Library.fs rename tests/{CoreTests/CoreTests/TestCharts/Chart2D/Point.fs => Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs} (67%) create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Area.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/BoxPlot.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bubble.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Candlestick.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Column.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Contour.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Funnel.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Heatmap.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2DContour.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Image.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Line.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/OHLC.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Point.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/PointDensity.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Range.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Scatter.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Spline.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/SplineArea.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Splom.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedArea.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedBar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedColumn.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedFunnel.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Violin.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Waterfall.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Line.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Spline.fs diff --git a/Plotly.NET.sln b/Plotly.NET.sln index afe1476aa..bc2e9fbfb 100644 --- a/Plotly.NET.sln +++ b/Plotly.NET.sln @@ -166,6 +166,12 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ImageExportTests", "tests\E EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpTests", "tests\ExtensionLibsTests\CSharpTests\CSharpTests.csproj", "{1170E3A9-D83E-40B0-8D51-20485C76BE88}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{6CFE1FBD-0999-4704-9F79-8A3D31580477}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpTestBase", "tests\Common\CSharpTestBase\CSharpTestBase.csproj", "{9B73CE85-9F85-42DB-8CEC-7A49B70189ED}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharpTestBase", "tests\Common\FSharpTestBase\FSharpTestBase.fsproj", "{18F778B2-3409-4309-8C9B-596109072481}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -245,6 +251,18 @@ Global {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Dotnet|Any CPU.Build.0 = Debug|Any CPU {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Release|Any CPU.ActiveCfg = Release|Any CPU {1170E3A9-D83E-40B0-8D51-20485C76BE88}.Release|Any CPU.Build.0 = Release|Any CPU + {9B73CE85-9F85-42DB-8CEC-7A49B70189ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B73CE85-9F85-42DB-8CEC-7A49B70189ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B73CE85-9F85-42DB-8CEC-7A49B70189ED}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {9B73CE85-9F85-42DB-8CEC-7A49B70189ED}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {9B73CE85-9F85-42DB-8CEC-7A49B70189ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B73CE85-9F85-42DB-8CEC-7A49B70189ED}.Release|Any CPU.Build.0 = Release|Any CPU + {18F778B2-3409-4309-8C9B-596109072481}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18F778B2-3409-4309-8C9B-596109072481}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18F778B2-3409-4309-8C9B-596109072481}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {18F778B2-3409-4309-8C9B-596109072481}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {18F778B2-3409-4309-8C9B-596109072481}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18F778B2-3409-4309-8C9B-596109072481}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -269,6 +287,9 @@ Global {32E187BB-D1D4-4864-A021-55A7A08E17EC} = {023425D8-B375-45ED-A29A-A3ED00C0E2BC} {A3693DD1-4D34-4B10-B310-07A4C7433F7D} = {02886FBB-DB32-4BBB-A93C-E13EBF453ACC} {1170E3A9-D83E-40B0-8D51-20485C76BE88} = {02886FBB-DB32-4BBB-A93C-E13EBF453ACC} + {6CFE1FBD-0999-4704-9F79-8A3D31580477} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} + {9B73CE85-9F85-42DB-8CEC-7A49B70189ED} = {6CFE1FBD-0999-4704-9F79-8A3D31580477} + {18F778B2-3409-4309-8C9B-596109072481} = {6CFE1FBD-0999-4704-9F79-8A3D31580477} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {7177F1E1-341C-48AB-9864-6B525FFF7633} diff --git a/build/ProjectInfo.fs b/build/ProjectInfo.fs index e3222bc78..089644062 100644 --- a/build/ProjectInfo.fs +++ b/build/ProjectInfo.fs @@ -62,6 +62,15 @@ let pkgDir = "pkg" /// binaries are built using this configuration. let configuration = "Release" +// test base projects (need to be built first) +let FSharpTestBaseProject = ProjectInfo.create("FSharpTestBase", "tests/Common/FSharpTestBase/FSharpTestBase.fsproj") +let CSharpTestBaseProject = ProjectInfo.create("CSharpTestBase", "tests/Common/CSharpTestBase/CSharpTestBase.csproj") + +let testBaseProjects = [ + FSharpTestBaseProject + CSharpTestBaseProject +] + // test projects (.NET) let CoreTestProject = ProjectInfo.create("CoreTests", "tests/CoreTests/CoreTests/CoreTests.fsproj") let CSharpInteroperabilityTestProject = ProjectInfo.create("CSharpInteroperabilityTests", "tests/CoreTests/CSharpInteroperabilityTests/CSharpInteroperabilityTests.csproj") diff --git a/build/TestTasks.fs b/build/TestTasks.fs index fdce19418..cd9ce618b 100644 --- a/build/TestTasks.fs +++ b/build/TestTasks.fs @@ -19,15 +19,15 @@ let createTestBuildTask (name: string) (deps: BuildTask.TaskInfo list) (projects ) } -let buildTestsAll = createTestBuildTask "BuildTestsAll" [clean; build] (testProjectsCore @ testProjectsExtensionsLibs @ testProjectsNetFX) +let buildTestsAll = createTestBuildTask "BuildTestsAll" [clean; build] (testBaseProjects @ testProjectsCore @ testProjectsExtensionsLibs @ testProjectsNetFX) -let buildTestsAllNoNetFX = createTestBuildTask "BuildTestsAllNoNetFX" [clean; build] (testProjectsCore @ testProjectsExtensionsLibs) +let buildTestsAllNoNetFX = createTestBuildTask "BuildTestsAllNoNetFX" [clean; build] (testBaseProjects @ testProjectsCore @ testProjectsExtensionsLibs) -let buildTestsCore = createTestBuildTask "BuildTestsCore" [clean; build] testProjectsCore +let buildTestsCore = createTestBuildTask "BuildTestsCore" [clean; build] (testBaseProjects @ testProjectsCore) -let buildTestsNetFX = createTestBuildTask "BuildTestsNetFX" [clean; build] testProjectsNetFX +let buildTestsNetFX = createTestBuildTask "BuildTestsNetFX" [clean; build] (testBaseProjects @ testProjectsNetFX) -let buildTestsExtensionsLibs = createTestBuildTask "BuildTestsExtensionsLibs" [clean; build] testProjectsExtensionsLibs +let buildTestsExtensionsLibs = createTestBuildTask "BuildTestsExtensionsLibs" [clean; build] (testBaseProjects @ testProjectsExtensionsLibs) let createRunTestTask (name: string) (deps: BuildTask.TaskInfo list) (projects: ProjectInfo list) = diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index 20a5bdd3e..0547deae9 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -6,7 +6,11 @@ - + + + + + diff --git a/tests/Common/FSharpTestBase/Library.fs b/tests/Common/FSharpTestBase/Library.fs deleted file mode 100644 index e17dbbabc..000000000 --- a/tests/Common/FSharpTestBase/Library.fs +++ /dev/null @@ -1,5 +0,0 @@ -namespace FSharpTestBase - -module Say = - let hello name = - printfn "Hello %s" name diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Point.fs b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs similarity index 67% rename from tests/CoreTests/CoreTests/TestCharts/Chart2D/Point.fs rename to tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs index 742b8b620..32ef8ee1c 100644 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Point.fs +++ b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs @@ -1,14 +1,9 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D +module Chart2DTestCharts open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Point -module Point = +module Point = + let ``Point chart with full plotly.js reference`` = let xData = [0. .. 10.] let yData = [0. .. 10.] @@ -57,4 +52,28 @@ module Point = MultiText=labels, TextPosition=StyleParam.TextPosition.TopRight, UseDefaults = false - ) \ No newline at end of file + ) + +module Line = + + let ``Simple line chart`` = Chart.Line([ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ], UseDefaults = false) + + let ``Line chart with line styling`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + Chart.Line( + x = x, + y = y, + Name="line", + ShowMarkers=true, + MarkerSymbol=StyleParam.MarkerSymbol.Square, + UseDefaults = false + ) + |> Chart.withLineStyle(Width=2.,Dash=StyleParam.DrawingStyle.Dot) + +module Spline = + + let ``Simple spline chart`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 19356108b..b13fd3334 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -13,9 +13,6 @@ - - - @@ -93,36 +90,8 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -214,5 +183,6 @@ + diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs new file mode 100644 index 000000000..97a5fbf3a --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs @@ -0,0 +1,273 @@ +module CoreTests.HTMLCodegen.Chart2D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart +open Plotly.NET.Tests + +open TestUtils.HtmlCodegen + +open Chart2DTestCharts + + +module Scatter = + [] + let ``Scatter chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Scatter" [ + ] + ] + +module Point = + [] + let ``Point chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Point" [ + testCase "Text label data" ( fun () -> + """var data = [{"type":"scatter","name":"points","mode":"markers+text","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"text":["a","b","c","d","e","f","g","h","i","j"],"textposition":"top right","marker":{},"line":{}}];""" + |> chartGeneratedContains Point.``Point chart with text labels`` + ) + testCase "Text label layout" ( fun () -> + emptyLayout Point.``Point chart with text labels`` + ) + ] + ] + +module Line = + [] + let ``Line chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Line" [ + testCase "With LineStyle data" ( fun () -> + """var data = [{"type":"scatter","name":"line","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"symbol":"1"},"line":{"width":2.0,"dash":"dot"}}];""" + |> chartGeneratedContains Line.``Line chart with line styling`` + ) + testCase "With LineStyle layout" ( fun () -> + emptyLayout Line.``Line chart with line styling`` + ) + testCase "Chart line data" ( fun () -> + """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0],"y":[1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0,100.0,121.0,144.0,169.0,196.0,225.0,256.0,289.0,324.0,361.0,400.0,441.0,484.0,529.0,576.0,625.0,676.0,729.0,784.0,841.0,900.0,961.0,1024.0,1089.0,1156.0,1225.0,1296.0,1369.0,1444.0,1521.0,1600.0,1681.0,1764.0,1849.0,1936.0,2025.0,2116.0,2209.0,2304.0,2401.0,2500.0,2601.0,2704.0,2809.0,2916.0,3025.0,3136.0,3249.0,3364.0,3481.0,3600.0,3721.0,3844.0,3969.0,4096.0,4225.0,4356.0,4489.0,4624.0,4761.0,4900.0,5041.0,5184.0,5329.0,5476.0,5625.0,5776.0,5929.0,6084.0,6241.0,6400.0,6561.0,6724.0,6889.0,7056.0,7225.0,7396.0,7569.0,7744.0,7921.0,8100.0,8281.0,8464.0,8649.0,8836.0,9025.0,9216.0,9409.0,9604.0,9801.0,10000.0],"marker":{},"line":{}}];""" + |> chartGeneratedContains Line.``Simple line chart`` + ) + testCase "Chart line layout" ( fun () -> + emptyLayout Line.``Simple line chart`` + ) + ] + ] + +module Spline = + [] + let ``Spline chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Spline" [ + testCase "Spline chart data" ( fun () -> + """var data = [{"type":"scatter","name":"spline","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{"shape":"spline"}}];""" + |> chartGeneratedContains Spline.``Simple spline chart`` + ) + testCase "Spline chart layout" ( fun () -> + emptyLayout Spline.``Simple spline chart`` + ) + ] + ] + +module Bubble = + [] + let ``Scatter chart HTML codegeneration tests`` = + testList "HTMLCodegen.Bubble" [ + testList "Bubble" [ + ] + ] + +module Range = + [] + let ``Range chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Range" [ + ] + ] + +module Area = + [] + let ``Area chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Area" [ + ] + ] + +module SplineArea = + [] + let ``SplineArea chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "SplineArea" [ + ] + ] + +module StackedArea = + [] + let ``StackedArea chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedArea" [ + ] + ] + +module Funnel = + [] + let ``Funnel chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Funnel" [ + ] + ] + +module StackedFunnel = + [] + let ``StackedFunnel chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedFunnel" [ + ] + ] + +module Waterfall = + [] + let ``Waterfall chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Waterfall" [ + ] + ] + +module Bar = + [] + let ``Bar chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Bar" [ + ] + ] + +module StackedBar = + [] + let ``StackedBar chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedBar" [ + ] + ] + +module Column = + [] + let ``Column chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Column" [ + ] + ] + +module StackedColumn = + [] + let ``StackedColumn chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedColumn" [ + ] + ] + +module Histogram = + [] + let ``Histogram chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Histogram" [ + ] + ] + +module Histogram2D = + [] + let ``Histogram2D chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Histogram2D" [ + ] + ] + +module BoxPlot = + [] + let ``BoxPlot chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "BoxPlot" [ + ] + ] + +module Violin = + [] + let ``Violin chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Violin" [ + ] + ] + +module Histogram2DContour = + [] + let ``Histogram2DContour chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Histogram2DContour" [ + ] + ] + +module Heatmap = + [] + let ``Heatmap chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Heatmap" [ + ] + ] + +module AnnotatedHeatmap = + [] + let ``AnnotatedHeatmap chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "AnnotatedHeatmap" [ + ] + ] + +module Image = + [] + let ``Image chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Image" [ + ] + ] + +module Contour = + [] + let ``Contour chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Contour" [ + ] + ] + +module OHLC = + [] + let ``OHLC chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "OHLC" [ + ] + ] + +module Candlestick = + [] + let ``Candlestick chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Candlestick" [ + ] + ] + +module Splom = + [] + let ``Splom chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Splom" [ + ] + ] + +module PointDensity = + [] + let ``PointDensity chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "PointDensity" [ + ] + ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs deleted file mode 100644 index 39ae55e76..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/AnnotatedHeatmap.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module AnnotatedHeatmap = - [] - let ``AnnotatedHeatmap tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "AnnotatedHeatmap" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Area.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Area.fs deleted file mode 100644 index 4d96e71db..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Area.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Area = - [] - let ``Area tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Area" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bar.fs deleted file mode 100644 index 234ed34c9..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Bar = - [] - let ``Bar tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Bar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/BoxPlot.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/BoxPlot.fs deleted file mode 100644 index f5881b16a..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/BoxPlot.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BoxPlot = - [] - let ``BoxPlot tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "BoxPlot" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bubble.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bubble.fs deleted file mode 100644 index 9f0f3708b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Bubble.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Bubble = - [] - let ``Bubble tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Bubble" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Candlestick.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Candlestick.fs deleted file mode 100644 index 3264a5596..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Candlestick.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Candlestick = - [] - let ``Candlestick tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Candlestick" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Column.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Column.fs deleted file mode 100644 index 3a4efa245..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Column.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Column = - [] - let ``Column tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Column" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Contour.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Contour.fs deleted file mode 100644 index 495b39f33..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Contour.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Contour = - [] - let ``Contour tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Contour" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Funnel.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Funnel.fs deleted file mode 100644 index f13725b69..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Funnel.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Funnel = - [] - let ``Funnel tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Funnel" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Heatmap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Heatmap.fs deleted file mode 100644 index 937e62afb..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Heatmap.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Heatmap = - [] - let ``Heatmap tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Heatmap" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram.fs deleted file mode 100644 index 4813bf935..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Histogram = - [] - let ``Histogram tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Histogram" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2D.fs deleted file mode 100644 index 54aa2893f..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2D.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Histogram2D = - [] - let ``Histogram2D tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Histogram2D" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2DContour.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2DContour.fs deleted file mode 100644 index 6a29e52af..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Histogram2DContour.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Histogram2DContour = - [] - let ``Histogram2DContour tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Histogram2DContour" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Image.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Image.fs deleted file mode 100644 index 63d4b25ee..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Image.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Image = - [] - let ``Image tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Image" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Line.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Line.fs deleted file mode 100644 index ceb877864..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Line.fs +++ /dev/null @@ -1,31 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Line = - [] - let ``Line tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Line" [ - testCase "With LineStyle data" ( fun () -> - """var data = [{"type":"scatter","name":"line","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"symbol":"1"},"line":{"width":2.0,"dash":"dot"}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Line.``Line chart with line styling`` - ) - testCase "With LineStyle layout" ( fun () -> - emptyLayout TestCharts.Chart2D.Line.``Line chart with line styling`` - ) - testCase "Chart line data" ( fun () -> - """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0],"y":[1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0,100.0,121.0,144.0,169.0,196.0,225.0,256.0,289.0,324.0,361.0,400.0,441.0,484.0,529.0,576.0,625.0,676.0,729.0,784.0,841.0,900.0,961.0,1024.0,1089.0,1156.0,1225.0,1296.0,1369.0,1444.0,1521.0,1600.0,1681.0,1764.0,1849.0,1936.0,2025.0,2116.0,2209.0,2304.0,2401.0,2500.0,2601.0,2704.0,2809.0,2916.0,3025.0,3136.0,3249.0,3364.0,3481.0,3600.0,3721.0,3844.0,3969.0,4096.0,4225.0,4356.0,4489.0,4624.0,4761.0,4900.0,5041.0,5184.0,5329.0,5476.0,5625.0,5776.0,5929.0,6084.0,6241.0,6400.0,6561.0,6724.0,6889.0,7056.0,7225.0,7396.0,7569.0,7744.0,7921.0,8100.0,8281.0,8464.0,8649.0,8836.0,9025.0,9216.0,9409.0,9604.0,9801.0,10000.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Line.``Simple line chart`` - ) - testCase "Chart line layout" ( fun () -> - emptyLayout TestCharts.Chart2D.Line.``Simple line chart`` - ) - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/OHLC.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/OHLC.fs deleted file mode 100644 index 700806323..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/OHLC.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module OHLC = - [] - let ``OHLC tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "OHLC" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Point.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Point.fs deleted file mode 100644 index 98ed06a99..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Point.fs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Point = - [] - let ``Point tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Point" [ - testCase "Text label data" ( fun () -> - """var data = [{"type":"scatter","name":"points","mode":"markers+text","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"text":["a","b","c","d","e","f","g","h","i","j"],"textposition":"top right","marker":{},"line":{}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with text labels`` - ) - testCase "Text label layout" ( fun () -> - emptyLayout TestCharts.Chart2D.Point.``Point chart with text labels`` - ) - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/PointDensity.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/PointDensity.fs deleted file mode 100644 index 134803cde..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/PointDensity.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module PointDensity = - [] - let ``PointDensity tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "PointDensity" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Range.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Range.fs deleted file mode 100644 index 10be6ccf5..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Range.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Range = - [] - let ``Range tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Range" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Scatter.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Scatter.fs deleted file mode 100644 index 82dcdbf99..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Scatter.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Scatter = - [] - let ``Scatter tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Scatter" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Spline.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Spline.fs deleted file mode 100644 index d4cdd24b5..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Spline.fs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Spline = - [] - let ``Spline tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Spline" [ - testCase "Spline chart data" ( fun () -> - """var data = [{"type":"scatter","name":"spline","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{"shape":"spline"}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Spline.``Simple spline chart`` - ) - testCase "Spline chart layout" ( fun () -> - emptyLayout TestCharts.Chart2D.Spline.``Simple spline chart`` - ) - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/SplineArea.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/SplineArea.fs deleted file mode 100644 index a7360b7f8..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/SplineArea.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module SplineArea = - [] - let ``SplineArea tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "SplineArea" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Splom.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Splom.fs deleted file mode 100644 index c0b93f46d..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Splom.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Splom = - [] - let ``Splom tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Splom" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedArea.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedArea.fs deleted file mode 100644 index aaf78a3bc..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedArea.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module StackedArea = - [] - let ``StackedArea tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedArea" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedBar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedBar.fs deleted file mode 100644 index 99185c2c9..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedBar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module StackedBar = - [] - let ``StackedBar tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedBar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedColumn.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedColumn.fs deleted file mode 100644 index 1558e178f..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedColumn.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module StackedColumn = - [] - let ``StackedColumn tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedColumn" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedFunnel.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedFunnel.fs deleted file mode 100644 index 6174238a6..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/StackedFunnel.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module StackedFunnel = - [] - let ``StackedFunnel tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedFunnel" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Violin.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Violin.fs deleted file mode 100644 index 47c447e6b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Violin.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Violin = - [] - let ``Violin tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Violin" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Waterfall.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Waterfall.fs deleted file mode 100644 index b75b1ce11..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D/Waterfall.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart2D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Waterfall = - [] - let ``Waterfall tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Waterfall" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs index 89f61e163..dc577777e 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs @@ -14,27 +14,27 @@ let ``Html layout tests`` = testList "SimpleTests.Simple tests" [ testCase "Expecting plotly js script reference in generated html document" ( fun () -> $"""https://cdn.plot.ly/plotly-{Globals.PLOTLYJS_VERSION}.min""" - |> substringIsInChart TestCharts.Chart2D.Point.``Point chart with axis labels and title`` toEmbeddedHTML + |> substringIsInChart Chart2DTestCharts.Point.``Point chart with axis labels and title`` toEmbeddedHTML ); testCase "Expecting data" ( fun () -> """var data = [{"type":"scatter","mode":"markers","x":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with axis labels and title`` + |> chartGeneratedContains Chart2DTestCharts.Point.``Point chart with axis labels and title`` ); testCase "Expecting layout info" (fun () -> """var layout = {"title":{"text":"Hello world!"},"xaxis":{"title":{"text":"xAxis"},"showgrid":false},"yaxis":{"title":{"text":"yAxis"},"showgrid":false}};""" - |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with axis labels and title`` + |> chartGeneratedContains Chart2DTestCharts.Point.``Point chart with axis labels and title`` ); testCase "Expecting html tags in embedded page only" (fun () -> [""; ""; ""; ""; ""; ""; ""] - |> substringListIsInChart TestCharts.Chart2D.Point.``Point chart with axis labels and title`` toEmbeddedHTML + |> substringListIsInChart Chart2DTestCharts.Point.``Point chart with axis labels and title`` toEmbeddedHTML ); testCase "Expecting some html tags in both embedded and not embedded" (fun () -> [""] - |> chartGeneratedContainsList TestCharts.Chart2D.Point.``Point chart with axis labels and title`` + |> chartGeneratedContainsList Chart2DTestCharts.Point.``Point chart with axis labels and title`` ); testCase "Passing args to the function" ( fun () -> "data, layout, config);" - |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart with axis labels and title`` + |> chartGeneratedContains Chart2DTestCharts.Point.``Point chart with axis labels and title`` ) ] @@ -44,18 +44,18 @@ let ``plotlyjs reference tests`` = testList "SimpleTests.plotlyjs reference" [ testCase "full reference" (fun _ -> getFullPlotlyJS() - |> substringIsInChart TestCharts.Chart2D.Point.``Point chart with full plotly.js reference`` toEmbeddedHTML + |> substringIsInChart Chart2DTestCharts.Point.``Point chart with full plotly.js reference`` toEmbeddedHTML ) testCase "cdn reference" (fun _ -> $"""https://cdn.plot.ly/plotly-2.0.0.min""" - |> substringIsInChart TestCharts.Chart2D.Point.``Point chart with plotly.js cdn reference`` toEmbeddedHTML + |> substringIsInChart Chart2DTestCharts.Point.``Point chart with plotly.js cdn reference`` toEmbeddedHTML ) testCase "require: Expecting cloudflare link" (fun () -> """https://cdnjs.cloudflare.com/ajax/libs/require.js""" - |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart referencing plotly.js using require.js`` + |> chartGeneratedContains Chart2DTestCharts.Point.``Point chart referencing plotly.js using require.js`` ); testCase "require: Expecting require config" (fun () -> (sprintf """var fsharpPlotlyRequire = requirejs.config({context:'fsharp-plotly',paths:{plotly:'https://cdn.plot.ly/plotly-%s.min'}}) || require;""" Globals.PLOTLYJS_VERSION) - |> chartGeneratedContains TestCharts.Chart2D.Point.``Point chart referencing plotly.js using require.js`` + |> chartGeneratedContains Chart2DTestCharts.Point.``Point chart referencing plotly.js using require.js`` ); ] \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/Main.fs b/tests/CoreTests/CoreTests/Main.fs index 19b2b37ba..a3da167a0 100644 --- a/tests/CoreTests/CoreTests/Main.fs +++ b/tests/CoreTests/CoreTests/Main.fs @@ -1,4 +1,4 @@ -module CoreTests +module Main open Expecto [] diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Line.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Line.fs deleted file mode 100644 index 259d24d2e..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Line.fs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Line -module Line = - let ``Simple line chart`` = Chart.Line([ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ], UseDefaults = false) - - let ``Line chart with line styling`` = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - Chart.Line( - x = x, - y = y, - Name="line", - ShowMarkers=true, - MarkerSymbol=StyleParam.MarkerSymbol.Square, - UseDefaults = false - ) - |> Chart.withLineStyle(Width=2.,Dash=StyleParam.DrawingStyle.Dot) \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Spline.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Spline.fs deleted file mode 100644 index 2cc40feee..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Spline.fs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Spline -module Spline = - - let ``Simple spline chart`` = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) diff --git a/tests/README.md b/tests/README.md index 5cfded22c..5c4e4d322 100644 --- a/tests/README.md +++ b/tests/README.md @@ -25,13 +25,15 @@ build.cmd runTestsAll build.sh runTestsCore ``` -Available test targets are (WIP): - -- `runTestsAll` - runs all tests -- `runTestsCore` - runs all tests in the `CoreTests` folder -- `runTestsExtensionLibs` - runs all tests in the `ExtensionLibTests` folder -- `runTestsJSTests` - runs all tests in the `JSTests` folder -- `runTestsCSharp` - runs all tests in the `CSharpTests` folder +Available test targets are: + +- `RunTestsAll` - runs all tests +- `RunTestsAllNoNetFX` - runs all tests except the ones that require .NET Framework +- `RunTestsCore` - runs all tests in the `CoreTests` folder except the ones that require .NET Framework +- `RunTestsCoreWithNetFX` - runs all tests in the `CoreTests` folder including the ones that require .NET Framework +- `RunTestsNetFX` - runs all tests that require .NET Framework +- `RunTestsExtensionLibs` - runs all tests in the `ExtensionLibTests` folder +- `RunTestsJSTests` - runs all tests in the `JSTests` folder ## Folder structure From 934c08d10168988e059ab8a4f89c55d9406be0a1 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sat, 15 Apr 2023 10:40:53 +0200 Subject: [PATCH 11/26] Add solutions for the core project and test suite --- Plotly.NET.Core.sln | 53 +++++++++++++++++++++++++ Plotly.NET.TestSuite.sln | 83 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 Plotly.NET.Core.sln create mode 100644 Plotly.NET.TestSuite.sln diff --git a/Plotly.NET.Core.sln b/Plotly.NET.Core.sln new file mode 100644 index 000000000..c31beb505 --- /dev/null +++ b/Plotly.NET.Core.sln @@ -0,0 +1,53 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33530.505 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET", "src\Plotly.NET\Plotly.NET.fsproj", "{0CF51626-E5F1-453E-A689-2D95B436D96B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{61781406-92F2-4717-AB99-C67C02D4A112}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + .config\dotnet-tools.json = .config\dotnet-tools.json + key.snk = key.snk + LICENSE = LICENSE + README.md = README.md + RELEASE_NOTES.md = RELEASE_NOTES.md + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{2FF92462-3027-47B2-BB69-0ADD97F11943}" + ProjectSection(SolutionItems) = preProject + build.cmd = build.cmd + build.sh = build.sh + global.json = global.json + EndProjectSection +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "build", "build\build.fsproj", "{3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Dotnet|Any CPU = Dotnet|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0CF51626-E5F1-453E-A689-2D95B436D96B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0CF51626-E5F1-453E-A689-2D95B436D96B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CF51626-E5F1-453E-A689-2D95B436D96B}.Dotnet|Any CPU.ActiveCfg = Dotnet|Any CPU + {0CF51626-E5F1-453E-A689-2D95B436D96B}.Dotnet|Any CPU.Build.0 = Dotnet|Any CPU + {0CF51626-E5F1-453E-A689-2D95B436D96B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0CF51626-E5F1-453E-A689-2D95B436D96B}.Release|Any CPU.Build.0 = Release|Any CPU + {3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {3356D9F4-4BCF-47D7-A9BB-CCB998E37B1D} = {2FF92462-3027-47B2-BB69-0ADD97F11943} + EndGlobalSection +EndGlobal diff --git a/Plotly.NET.TestSuite.sln b/Plotly.NET.TestSuite.sln new file mode 100644 index 000000000..1a4e31a3a --- /dev/null +++ b/Plotly.NET.TestSuite.sln @@ -0,0 +1,83 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33530.505 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{CAAD0310-031B-4875-9AB2-7026A0DCD941}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CoreTests", "CoreTests", "{6C49B0AB-8502-4E46-9348-64161F84E727}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ExtensionLibTests", "ExtensionLibTests", "{CCB58D28-C02B-49A8-8614-8BD3D4FA9DF9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JSTests", "JSTests", "{82F7B528-07C1-4E77-AD8B-9738FAB57974}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharpTestBase", "tests\Common\FSharpTestBase\FSharpTestBase.fsproj", "{1971920D-8E65-41FF-84DA-47E8B29738E8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpTestBase", "tests\Common\CSharpTestBase\CSharpTestBase.csproj", "{21AFCC90-CB61-4B03-9394-D9A9A769AB6E}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "CoreTests", "tests\CoreTests\CoreTests\CoreTests.fsproj", "{BA47F7BE-B699-4E65-9CD0-938F92BA976C}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "StrongNameTests", "tests\CoreTests\StrongNameTests\StrongNameTests.fsproj", "{26AA07CD-168B-45FC-93D3-315A26198E92}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpInteroperabilityTests", "tests\CoreTests\CSharpInteroperabilityTests\CSharpInteroperabilityTests.csproj", "{FEAB6AB7-1F9A-4E75-B047-F34C3AE1919B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpTests", "tests\ExtensionLibsTests\CSharpTests\CSharpTests.csproj", "{24AE6CF2-8A86-4F8B-82D6-30D04D674933}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ImageExportTests", "tests\ExtensionLibsTests\ImageExportTests\ImageExportTests.fsproj", "{B1214EE4-C1D4-4046-975D-A06373390E71}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".project", ".project", "{F8584D5A-AC8A-488D-9ACF-7C6570A9BE2B}" + ProjectSection(SolutionItems) = preProject + tests\README.md = tests\README.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1971920D-8E65-41FF-84DA-47E8B29738E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1971920D-8E65-41FF-84DA-47E8B29738E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1971920D-8E65-41FF-84DA-47E8B29738E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1971920D-8E65-41FF-84DA-47E8B29738E8}.Release|Any CPU.Build.0 = Release|Any CPU + {21AFCC90-CB61-4B03-9394-D9A9A769AB6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21AFCC90-CB61-4B03-9394-D9A9A769AB6E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21AFCC90-CB61-4B03-9394-D9A9A769AB6E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21AFCC90-CB61-4B03-9394-D9A9A769AB6E}.Release|Any CPU.Build.0 = Release|Any CPU + {BA47F7BE-B699-4E65-9CD0-938F92BA976C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA47F7BE-B699-4E65-9CD0-938F92BA976C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA47F7BE-B699-4E65-9CD0-938F92BA976C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA47F7BE-B699-4E65-9CD0-938F92BA976C}.Release|Any CPU.Build.0 = Release|Any CPU + {26AA07CD-168B-45FC-93D3-315A26198E92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {26AA07CD-168B-45FC-93D3-315A26198E92}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26AA07CD-168B-45FC-93D3-315A26198E92}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26AA07CD-168B-45FC-93D3-315A26198E92}.Release|Any CPU.Build.0 = Release|Any CPU + {FEAB6AB7-1F9A-4E75-B047-F34C3AE1919B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FEAB6AB7-1F9A-4E75-B047-F34C3AE1919B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FEAB6AB7-1F9A-4E75-B047-F34C3AE1919B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FEAB6AB7-1F9A-4E75-B047-F34C3AE1919B}.Release|Any CPU.Build.0 = Release|Any CPU + {24AE6CF2-8A86-4F8B-82D6-30D04D674933}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24AE6CF2-8A86-4F8B-82D6-30D04D674933}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24AE6CF2-8A86-4F8B-82D6-30D04D674933}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24AE6CF2-8A86-4F8B-82D6-30D04D674933}.Release|Any CPU.Build.0 = Release|Any CPU + {B1214EE4-C1D4-4046-975D-A06373390E71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1214EE4-C1D4-4046-975D-A06373390E71}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1214EE4-C1D4-4046-975D-A06373390E71}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1214EE4-C1D4-4046-975D-A06373390E71}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {1971920D-8E65-41FF-84DA-47E8B29738E8} = {CAAD0310-031B-4875-9AB2-7026A0DCD941} + {21AFCC90-CB61-4B03-9394-D9A9A769AB6E} = {CAAD0310-031B-4875-9AB2-7026A0DCD941} + {BA47F7BE-B699-4E65-9CD0-938F92BA976C} = {6C49B0AB-8502-4E46-9348-64161F84E727} + {26AA07CD-168B-45FC-93D3-315A26198E92} = {6C49B0AB-8502-4E46-9348-64161F84E727} + {FEAB6AB7-1F9A-4E75-B047-F34C3AE1919B} = {6C49B0AB-8502-4E46-9348-64161F84E727} + {24AE6CF2-8A86-4F8B-82D6-30D04D674933} = {CCB58D28-C02B-49A8-8614-8BD3D4FA9DF9} + {B1214EE4-C1D4-4046-975D-A06373390E71} = {CCB58D28-C02B-49A8-8614-8BD3D4FA9DF9} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {67F9FFDF-3841-4DE1-9A55-9494FFC0A288} + EndGlobalSection +EndGlobal From 4e6e7c809c1a10d21fbd8b30036959677344ba32 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sat, 15 Apr 2023 21:35:10 +0200 Subject: [PATCH 12/26] Refactor some test charts, remove unnecessary files --- .../TestCharts/Chart2DTestCharts.fs | 99 +++++++++ tests/CoreTests/CoreTests/CoreTests.fsproj | 130 ----------- .../CoreTests/HTMLCodegen/Chart2D.fs | 203 ------------------ .../CoreTests/HTMLCodegen/Chart3D/Bubble3D.fs | 18 -- .../CoreTests/HTMLCodegen/Chart3D/Cone.fs | 18 -- .../HTMLCodegen/Chart3D/IsoSurface.fs | 18 -- .../CoreTests/HTMLCodegen/Chart3D/Line3D.fs | 18 -- .../CoreTests/HTMLCodegen/Chart3D/Mesh3D.fs | 18 -- .../CoreTests/HTMLCodegen/Chart3D/Point3D.fs | 18 -- .../HTMLCodegen/Chart3D/Scatter3D.fs | 18 -- .../HTMLCodegen/Chart3D/StreamTube.fs | 18 -- .../CoreTests/HTMLCodegen/Chart3D/Surface.fs | 18 -- .../CoreTests/HTMLCodegen/Chart3D/Volume.fs | 18 -- .../HTMLCodegen/ChartCarpet/BubbleCarpet.fs | 18 -- .../HTMLCodegen/ChartCarpet/Carpet.fs | 18 -- .../HTMLCodegen/ChartCarpet/ContourCarpet.fs | 18 -- .../HTMLCodegen/ChartCarpet/LineCarpet.fs | 18 -- .../HTMLCodegen/ChartCarpet/PointCarpet.fs | 18 -- .../HTMLCodegen/ChartCarpet/ScatterCarpet.fs | 18 -- .../HTMLCodegen/ChartCarpet/SplineCarpet.fs | 18 -- .../HTMLCodegen/ChartDomain/Doughnut.fs | 18 -- .../HTMLCodegen/ChartDomain/FunnelArea.fs | 18 -- .../HTMLCodegen/ChartDomain/Icicle.fs | 18 -- .../HTMLCodegen/ChartDomain/Indicator.fs | 18 -- .../ChartDomain/ParralelCategories.fs | 18 -- .../HTMLCodegen/ChartDomain/ParralelCoord.fs | 18 -- .../CoreTests/HTMLCodegen/ChartDomain/Pie.fs | 18 -- .../HTMLCodegen/ChartDomain/Sankey.fs | 18 -- .../HTMLCodegen/ChartDomain/Sunburst.fs | 18 -- .../HTMLCodegen/ChartDomain/Table.fs | 18 -- .../HTMLCodegen/ChartDomain/Treemap.fs | 18 -- .../HTMLCodegen/ChartMap/BubbleGeo.fs | 18 -- .../HTMLCodegen/ChartMap/BubbleMapbox.fs | 18 -- .../HTMLCodegen/ChartMap/ChoroplethMap.fs | 18 -- .../HTMLCodegen/ChartMap/ChoroplethMapbox.fs | 18 -- .../HTMLCodegen/ChartMap/DensityMapbox.fs | 18 -- .../CoreTests/HTMLCodegen/ChartMap/LineGeo.fs | 18 -- .../HTMLCodegen/ChartMap/LineMapbox.fs | 18 -- .../HTMLCodegen/ChartMap/PointGeo.fs | 18 -- .../HTMLCodegen/ChartMap/ScatterGeo.fs | 18 -- .../HTMLCodegen/ChartMap/ScatterMapbox.fs | 18 -- .../HTMLCodegen/ChartPolar/BarPolar.fs | 18 -- .../HTMLCodegen/ChartPolar/BubblePolar.fs | 18 -- .../HTMLCodegen/ChartPolar/LinePolar.fs | 18 -- .../HTMLCodegen/ChartPolar/PointPolar.fs | 18 -- .../HTMLCodegen/ChartPolar/ScatterPolar.fs | 18 -- .../HTMLCodegen/ChartPolar/SplinePolar.fs | 18 -- .../HTMLCodegen/ChartSmith/BubbleSmith.fs | 18 -- .../HTMLCodegen/ChartSmith/LineSmith.fs | 18 -- .../HTMLCodegen/ChartSmith/PointSmith.fs | 18 -- .../HTMLCodegen/ChartSmith/ScatterSmith.fs | 18 -- .../HTMLCodegen/ChartTernary/BubbleTernary.fs | 18 -- .../HTMLCodegen/ChartTernary/LineTernary.fs | 18 -- .../HTMLCodegen/ChartTernary/PointTernary.fs | 18 -- .../ChartTernary/ScatterTernary.fs | 18 -- .../CoreTests/HTMLCodegen/SimpleCharts.fs | 81 ++----- .../CoreTests/HTMLCodegen/SimpleTests.fs | 2 +- .../TestCharts/Chart2D/AnnotatedHeatmap.fs | 10 - .../CoreTests/TestCharts/Chart2D/Area.fs | 10 - .../CoreTests/TestCharts/Chart2D/Bar.fs | 10 - .../CoreTests/TestCharts/Chart2D/BoxPlot.fs | 10 - .../CoreTests/TestCharts/Chart2D/Bubble.fs | 10 - .../TestCharts/Chart2D/Candlestick.fs | 10 - .../CoreTests/TestCharts/Chart2D/Column.fs | 10 - .../CoreTests/TestCharts/Chart2D/Contour.fs | 10 - .../CoreTests/TestCharts/Chart2D/Funnel.fs | 10 - .../CoreTests/TestCharts/Chart2D/Heatmap.fs | 10 - .../CoreTests/TestCharts/Chart2D/Histogram.fs | 10 - .../TestCharts/Chart2D/Histogram2D.fs | 10 - .../TestCharts/Chart2D/Histogram2DContour.fs | 10 - .../CoreTests/TestCharts/Chart2D/Image.fs | 10 - .../CoreTests/TestCharts/Chart2D/OHLC.fs | 10 - .../TestCharts/Chart2D/PointDensity.fs | 10 - .../CoreTests/TestCharts/Chart2D/Range.fs | 10 - .../CoreTests/TestCharts/Chart2D/Scatter.fs | 10 - .../TestCharts/Chart2D/SplineArea.fs | 10 - .../CoreTests/TestCharts/Chart2D/Splom.fs | 10 - .../TestCharts/Chart2D/StackedArea.fs | 10 - .../TestCharts/Chart2D/StackedBar.fs | 10 - .../TestCharts/Chart2D/StackedColumn.fs | 10 - .../TestCharts/Chart2D/StackedFunnel.fs | 10 - .../CoreTests/TestCharts/Chart2D/Violin.fs | 10 - .../CoreTests/TestCharts/Chart2D/Waterfall.fs | 10 - .../CoreTests/TestCharts/Chart3D/Bubble3D.fs | 10 - .../CoreTests/TestCharts/Chart3D/Cone.fs | 10 - .../TestCharts/Chart3D/IsoSurface.fs | 10 - .../CoreTests/TestCharts/Chart3D/Line3D.fs | 10 - .../CoreTests/TestCharts/Chart3D/Mesh3D.fs | 10 - .../CoreTests/TestCharts/Chart3D/Point3D.fs | 10 - .../CoreTests/TestCharts/Chart3D/Scatter3D.fs | 10 - .../TestCharts/Chart3D/StreamTube.fs | 10 - .../CoreTests/TestCharts/Chart3D/Surface.fs | 10 - .../CoreTests/TestCharts/Chart3D/Volume.fs | 10 - .../TestCharts/ChartCarpet/BubbleCarpet.fs | 10 - .../TestCharts/ChartCarpet/Carpet.fs | 10 - .../TestCharts/ChartCarpet/ContourCarpet.fs | 10 - .../TestCharts/ChartCarpet/LineCarpet.fs | 10 - .../TestCharts/ChartCarpet/PointCarpet.fs | 10 - .../TestCharts/ChartCarpet/ScatterCarpet.fs | 10 - .../TestCharts/ChartCarpet/SplineCarpet.fs | 10 - .../TestCharts/ChartDomain/Doughnut.fs | 10 - .../TestCharts/ChartDomain/FunnelArea.fs | 10 - .../TestCharts/ChartDomain/Icicle.fs | 10 - .../TestCharts/ChartDomain/Indicator.fs | 10 - .../ChartDomain/ParralelCategories.fs | 10 - .../TestCharts/ChartDomain/ParralelCoord.fs | 10 - .../CoreTests/TestCharts/ChartDomain/Pie.fs | 10 - .../TestCharts/ChartDomain/Sankey.fs | 10 - .../TestCharts/ChartDomain/Sunburst.fs | 10 - .../CoreTests/TestCharts/ChartDomain/Table.fs | 10 - .../TestCharts/ChartDomain/Treemap.fs | 10 - .../TestCharts/ChartMap/BubbleGeo.fs | 10 - .../TestCharts/ChartMap/BubbleMapbox.fs | 10 - .../TestCharts/ChartMap/ChoroplethMap.fs | 10 - .../TestCharts/ChartMap/ChoroplethMapbox.fs | 10 - .../TestCharts/ChartMap/DensityMapbox.fs | 10 - .../CoreTests/TestCharts/ChartMap/LineGeo.fs | 10 - .../TestCharts/ChartMap/LineMapbox.fs | 10 - .../CoreTests/TestCharts/ChartMap/PointGeo.fs | 10 - .../TestCharts/ChartMap/ScatterGeo.fs | 10 - .../TestCharts/ChartMap/ScatterMapbox.fs | 10 - .../TestCharts/ChartPolar/BarPolar.fs | 10 - .../TestCharts/ChartPolar/BubblePolar.fs | 10 - .../TestCharts/ChartPolar/LinePolar.fs | 10 - .../TestCharts/ChartPolar/PointPolar.fs | 10 - .../TestCharts/ChartPolar/ScatterPolar.fs | 10 - .../TestCharts/ChartPolar/SplinePolar.fs | 10 - .../TestCharts/ChartSmith/BubbleSmith.fs | 10 - .../TestCharts/ChartSmith/LineSmith.fs | 10 - .../TestCharts/ChartSmith/PointSmith.fs | 10 - .../TestCharts/ChartSmith/ScatterSmith.fs | 10 - .../TestCharts/ChartTernary/BubbleTernary.fs | 10 - .../TestCharts/ChartTernary/LineTernary.fs | 10 - .../TestCharts/ChartTernary/PointTernary.fs | 10 - .../TestCharts/ChartTernary/ScatterTernary.fs | 10 - tests/README.md | 5 + 136 files changed, 125 insertions(+), 2111 deletions(-) delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Bubble3D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Cone.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/IsoSurface.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Line3D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Mesh3D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Point3D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Scatter3D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/StreamTube.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Surface.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Volume.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/Carpet.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ContourCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/LineCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/PointCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/SplineCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Doughnut.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/FunnelArea.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Icicle.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Indicator.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCategories.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCoord.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Pie.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sankey.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sunburst.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Table.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Treemap.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleGeo.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMap.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/DensityMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineGeo.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/PointGeo.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterGeo.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BarPolar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BubblePolar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/LinePolar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/PointPolar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/ScatterPolar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/SplinePolar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/BubbleSmith.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/LineSmith.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/PointSmith.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/ScatterSmith.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/BubbleTernary.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/LineTernary.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/PointTernary.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/ScatterTernary.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/AnnotatedHeatmap.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Area.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Bar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/BoxPlot.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Bubble.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Candlestick.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Column.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Contour.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Funnel.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Heatmap.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2D.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2DContour.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Image.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/OHLC.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/PointDensity.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Range.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Scatter.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/SplineArea.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Splom.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedArea.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedBar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedColumn.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedFunnel.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Violin.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart2D/Waterfall.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Bubble3D.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Cone.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/IsoSurface.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Line3D.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Mesh3D.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Point3D.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Scatter3D.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/StreamTube.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Surface.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/Chart3D/Volume.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartCarpet/BubbleCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartCarpet/Carpet.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ContourCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartCarpet/LineCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartCarpet/PointCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ScatterCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartCarpet/SplineCarpet.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Doughnut.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/FunnelArea.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Icicle.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Indicator.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCategories.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCoord.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Pie.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sankey.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sunburst.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Table.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartDomain/Treemap.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleGeo.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMap.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/DensityMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/LineGeo.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/LineMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/PointGeo.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterGeo.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterMapbox.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartPolar/BarPolar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartPolar/BubblePolar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartPolar/LinePolar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartPolar/PointPolar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartPolar/ScatterPolar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartPolar/SplinePolar.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartSmith/BubbleSmith.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartSmith/LineSmith.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartSmith/PointSmith.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartSmith/ScatterSmith.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartTernary/BubbleTernary.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartTernary/LineTernary.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartTernary/PointTernary.fs delete mode 100644 tests/CoreTests/CoreTests/TestCharts/ChartTernary/ScatterTernary.fs diff --git a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs index 32ef8ee1c..40370455d 100644 --- a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs @@ -77,3 +77,102 @@ module Spline = let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) + + +module Bubble = () + +module Range = () + +module Area = + + let ``Simple area chart`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [5.; 2.5; 5.; 7.5; 5.; 2.5; 7.5; 4.5; 5.5; 5.] + Chart.Area(x = x, y = y, UseDefaults = false) + +module SplineArea = + + let ``Simple spline area chart`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [5.; 2.5; 5.; 7.5; 5.; 2.5; 7.5; 4.5; 5.5; 5.] + Chart.SplineArea(x = x, y = y, UseDefaults = false) + +module StackedArea = + + let ``Two stacked areas chart`` = + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [5.; 2.5; 5.; 7.5; 5.; 2.5; 7.5; 4.5; 5.5; 5.] + [ + Chart.StackedArea(x = x, y = y, UseDefaults = false) + Chart.StackedArea(x = x, y = (y |> Seq.rev), UseDefaults = false) + ] + |> Chart.combine + + +module Funnel = () + +module StackedFunnel = () + +module Waterfall = () + +module Bar = + + let ``Simple bar chart`` = + let values = [20; 14; 23;] + let keys = ["Product A"; "Product B"; "Product C";] + Chart.Bar(values = values, Keys = keys, UseDefaults = false) + + let ``Two stacked bars chart`` = + let values = [20; 14; 23;] + let keys = ["Product A"; "Product B"; "Product C";] + [ + Chart.StackedBar(values = values, Keys = keys, Name="old", UseDefaults = false); + Chart.StackedBar(values = [8; 21; 13;], Keys = keys, Name="new", UseDefaults = false) + ] + |> Chart.combine + +module StackedBar = () + +module Column = + + let ``Simple column chart`` = + let values = [20; 14; 23;] + let keys = ["Product A"; "Product B"; "Product C";] + Chart.Column(values = values, Keys = keys, UseDefaults = false) + + let ``Two stacked columns chart`` = + let values = [20; 14; 23;] + let keys = ["Product A"; "Product B"; "Product C";] + [ + Chart.StackedColumn(values = values, Keys = keys,Name="old", UseDefaults = false); + Chart.StackedColumn(values = [8; 21; 13;], Keys = keys,Name="new", UseDefaults = false) + ] + |> Chart.combine + +module StackedColumn = () + +module Histogram = () + +module Histogram2D = () + +module BoxPlot = () + +module Violin = () + +module Histogram2DContour = () + +module Heatmap = () + +module AnnotatedHeatmap = () + +module Image = () + +module Contour = () + +module OHLC = () + +module Candlestick = () + +module Splom = () + +module PointDensity = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index b13fd3334..cfc13ee18 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -12,138 +12,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs index 97a5fbf3a..f92b300bb 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs @@ -5,13 +5,10 @@ open Plotly.NET open Plotly.NET.LayoutObjects open Plotly.NET.TraceObjects open Plotly.NET.GenericChart -open Plotly.NET.Tests open TestUtils.HtmlCodegen - open Chart2DTestCharts - module Scatter = [] let ``Scatter chart HTML codegeneration tests`` = @@ -71,203 +68,3 @@ module Spline = ) ] ] - -module Bubble = - [] - let ``Scatter chart HTML codegeneration tests`` = - testList "HTMLCodegen.Bubble" [ - testList "Bubble" [ - ] - ] - -module Range = - [] - let ``Range chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Range" [ - ] - ] - -module Area = - [] - let ``Area chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Area" [ - ] - ] - -module SplineArea = - [] - let ``SplineArea chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "SplineArea" [ - ] - ] - -module StackedArea = - [] - let ``StackedArea chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedArea" [ - ] - ] - -module Funnel = - [] - let ``Funnel chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Funnel" [ - ] - ] - -module StackedFunnel = - [] - let ``StackedFunnel chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedFunnel" [ - ] - ] - -module Waterfall = - [] - let ``Waterfall chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Waterfall" [ - ] - ] - -module Bar = - [] - let ``Bar chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Bar" [ - ] - ] - -module StackedBar = - [] - let ``StackedBar chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedBar" [ - ] - ] - -module Column = - [] - let ``Column chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Column" [ - ] - ] - -module StackedColumn = - [] - let ``StackedColumn chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "StackedColumn" [ - ] - ] - -module Histogram = - [] - let ``Histogram chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Histogram" [ - ] - ] - -module Histogram2D = - [] - let ``Histogram2D chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Histogram2D" [ - ] - ] - -module BoxPlot = - [] - let ``BoxPlot chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "BoxPlot" [ - ] - ] - -module Violin = - [] - let ``Violin chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Violin" [ - ] - ] - -module Histogram2DContour = - [] - let ``Histogram2DContour chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Histogram2DContour" [ - ] - ] - -module Heatmap = - [] - let ``Heatmap chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Heatmap" [ - ] - ] - -module AnnotatedHeatmap = - [] - let ``AnnotatedHeatmap chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "AnnotatedHeatmap" [ - ] - ] - -module Image = - [] - let ``Image chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Image" [ - ] - ] - -module Contour = - [] - let ``Contour chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Contour" [ - ] - ] - -module OHLC = - [] - let ``OHLC chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "OHLC" [ - ] - ] - -module Candlestick = - [] - let ``Candlestick chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Candlestick" [ - ] - ] - -module Splom = - [] - let ``Splom chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "Splom" [ - ] - ] - -module PointDensity = - [] - let ``PointDensity chart HTML codegeneration tests`` = - testList "HTMLCodegen.Chart2D" [ - testList "PointDensity" [ - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Bubble3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Bubble3D.fs deleted file mode 100644 index 267a4fe46..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Bubble3D.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Bubble3D = - [] - let ``Bubble3D tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Bubble3D" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Cone.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Cone.fs deleted file mode 100644 index 26954252b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Cone.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Cone = - [] - let ``Cone tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Cone" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/IsoSurface.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/IsoSurface.fs deleted file mode 100644 index bc13ae5c7..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/IsoSurface.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module IsoSurface = - [] - let ``IsoSurface tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "IsoSurface" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Line3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Line3D.fs deleted file mode 100644 index 8c969cc7e..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Line3D.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Line3D = - [] - let ``Line3D tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Line3D" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Mesh3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Mesh3D.fs deleted file mode 100644 index 15ac9f4fa..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Mesh3D.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Mesh3D = - [] - let ``Mesh3D tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Mesh3D" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Point3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Point3D.fs deleted file mode 100644 index c9e7ebeaa..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Point3D.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Point3D = - [] - let ``Point3D tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Point3D" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Scatter3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Scatter3D.fs deleted file mode 100644 index f4de8a434..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Scatter3D.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Scatter3D = - [] - let ``Scatter3D tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Scatter3D" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/StreamTube.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/StreamTube.fs deleted file mode 100644 index ef64d5004..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/StreamTube.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module StreamTube = - [] - let ``StreamTube tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "StreamTube" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Surface.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Surface.fs deleted file mode 100644 index 15105b832..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Surface.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Surface = - [] - let ``Surface tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Surface" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Volume.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Volume.fs deleted file mode 100644 index b8402096b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D/Volume.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.Chart3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Volume = - [] - let ``Volume tests`` = - testList "HTMLCodegen.Chart3D" [ - testList "Volume" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs deleted file mode 100644 index fa03adfd6..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/BubbleCarpet.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BubbleCarpet = - [] - let ``BubbleCarpet tests`` = - testList "HTMLCodegen.ChartCarpet" [ - testList "BubbleCarpet" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/Carpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/Carpet.fs deleted file mode 100644 index a1659aa66..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/Carpet.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Carpet = - [] - let ``Carpet tests`` = - testList "HTMLCodegen.ChartCarpet" [ - testList "Carpet" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ContourCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ContourCarpet.fs deleted file mode 100644 index be7fbfd90..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ContourCarpet.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ContourCarpet = - [] - let ``ContourCarpet tests`` = - testList "HTMLCodegen.ChartCarpet" [ - testList "ContourCarpet" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/LineCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/LineCarpet.fs deleted file mode 100644 index a0b0e7842..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/LineCarpet.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module LineCarpet = - [] - let ``LineCarpet tests`` = - testList "HTMLCodegen.ChartCarpet" [ - testList "LineCarpet" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/PointCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/PointCarpet.fs deleted file mode 100644 index 1d07106e7..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/PointCarpet.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module PointCarpet = - [] - let ``PointCarpet tests`` = - testList "HTMLCodegen.ChartCarpet" [ - testList "PointCarpet" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs deleted file mode 100644 index af4da16a5..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/ScatterCarpet.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ScatterCarpet = - [] - let ``ScatterCarpet tests`` = - testList "HTMLCodegen.ChartCarpet" [ - testList "ScatterCarpet" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/SplineCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/SplineCarpet.fs deleted file mode 100644 index 3dd15ba7b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet/SplineCarpet.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartCarpet - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module SplineCarpet = - [] - let ``SplineCarpet tests`` = - testList "HTMLCodegen.ChartCarpet" [ - testList "SplineCarpet" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Doughnut.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Doughnut.fs deleted file mode 100644 index ea84bdb67..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Doughnut.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Doughnut = - [] - let ``Doughnut tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Doughnut" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/FunnelArea.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/FunnelArea.fs deleted file mode 100644 index db42dc3de..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/FunnelArea.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module FunnelArea = - [] - let ``FunnelArea tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "FunnelArea" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Icicle.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Icicle.fs deleted file mode 100644 index d8d54d6af..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Icicle.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Icicle = - [] - let ``Icicle tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Icicle" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Indicator.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Indicator.fs deleted file mode 100644 index edbfbfc08..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Indicator.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Indicator = - [] - let ``Indicator tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Indicator" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCategories.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCategories.fs deleted file mode 100644 index c9ff5fc77..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCategories.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ParralelCategories = - [] - let ``ParralelCategories tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "ParralelCategories" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCoord.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCoord.fs deleted file mode 100644 index ae09834e8..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/ParralelCoord.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ParralelCoord = - [] - let ``ParralelCoord tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "ParralelCoord" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Pie.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Pie.fs deleted file mode 100644 index 087214bb9..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Pie.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Pie = - [] - let ``Pie tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Pie" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sankey.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sankey.fs deleted file mode 100644 index 9f6a884e1..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sankey.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Sankey = - [] - let ``Sankey tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Sankey" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sunburst.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sunburst.fs deleted file mode 100644 index 16f8c6828..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Sunburst.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Sunburst = - [] - let ``Sunburst tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Sunburst" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Table.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Table.fs deleted file mode 100644 index 1934995c4..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Table.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Table = - [] - let ``Table tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Table" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Treemap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Treemap.fs deleted file mode 100644 index 27d06dc2c..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain/Treemap.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartDomain - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module Treemap = - [] - let ``Treemap tests`` = - testList "HTMLCodegen.ChartDomain" [ - testList "Treemap" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleGeo.fs deleted file mode 100644 index e24bd70b3..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleGeo.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BubbleGeo = - [] - let ``BubbleGeo tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "BubbleGeo" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleMapbox.fs deleted file mode 100644 index 4fc8838dd..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/BubbleMapbox.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BubbleMapbox = - [] - let ``BubbleMapbox tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "BubbleMapbox" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMap.fs deleted file mode 100644 index 7298d2120..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMap.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ChoroplethMap = - [] - let ``ChoroplethMap tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "ChoroplethMap" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs deleted file mode 100644 index 52b77e472..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ChoroplethMapbox.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ChoroplethMapbox = - [] - let ``ChoroplethMapbox tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "ChoroplethMapbox" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/DensityMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/DensityMapbox.fs deleted file mode 100644 index 614c2195b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/DensityMapbox.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module DensityMapbox = - [] - let ``DensityMapbox tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "DensityMapbox" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineGeo.fs deleted file mode 100644 index 5c16c32f0..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineGeo.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module LineGeo = - [] - let ``LineGeo tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "LineGeo" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineMapbox.fs deleted file mode 100644 index 101784d1a..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/LineMapbox.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module LineMapbox = - [] - let ``LineMapbox tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "LineMapbox" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/PointGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/PointGeo.fs deleted file mode 100644 index f9c4d39bf..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/PointGeo.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module PointGeo = - [] - let ``PointGeo tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "PointGeo" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterGeo.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterGeo.fs deleted file mode 100644 index 188c35ccd..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterGeo.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ScatterGeo = - [] - let ``ScatterGeo tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "ScatterGeo" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterMapbox.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterMapbox.fs deleted file mode 100644 index 863433795..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap/ScatterMapbox.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartMap - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ScatterMapbox = - [] - let ``ScatterMapbox tests`` = - testList "HTMLCodegen.ChartMap" [ - testList "ScatterMapbox" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BarPolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BarPolar.fs deleted file mode 100644 index 959616b1a..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BarPolar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BarPolar = - [] - let ``BarPolar tests`` = - testList "HTMLCodegen.ChartPolar" [ - testList "BarPolar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BubblePolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BubblePolar.fs deleted file mode 100644 index 9a37cbe87..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/BubblePolar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BubblePolar = - [] - let ``BubblePolar tests`` = - testList "HTMLCodegen.ChartPolar" [ - testList "BubblePolar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/LinePolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/LinePolar.fs deleted file mode 100644 index a3275ad82..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/LinePolar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module LinePolar = - [] - let ``LinePolar tests`` = - testList "HTMLCodegen.ChartPolar" [ - testList "LinePolar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/PointPolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/PointPolar.fs deleted file mode 100644 index e02821234..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/PointPolar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module PointPolar = - [] - let ``PointPolar tests`` = - testList "HTMLCodegen.ChartPolar" [ - testList "PointPolar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/ScatterPolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/ScatterPolar.fs deleted file mode 100644 index ac2336cd7..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/ScatterPolar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ScatterPolar = - [] - let ``ScatterPolar tests`` = - testList "HTMLCodegen.ChartPolar" [ - testList "ScatterPolar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/SplinePolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/SplinePolar.fs deleted file mode 100644 index fc4b1b48f..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar/SplinePolar.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartPolar - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module SplinePolar = - [] - let ``SplinePolar tests`` = - testList "HTMLCodegen.ChartPolar" [ - testList "SplinePolar" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/BubbleSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/BubbleSmith.fs deleted file mode 100644 index 102a47365..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/BubbleSmith.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BubbleSmith = - [] - let ``BubbleSmith tests`` = - testList "HTMLCodegen.ChartSmith" [ - testList "BubbleSmith" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/LineSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/LineSmith.fs deleted file mode 100644 index b6e5236fe..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/LineSmith.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module LineSmith = - [] - let ``LineSmith tests`` = - testList "HTMLCodegen.ChartSmith" [ - testList "LineSmith" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/PointSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/PointSmith.fs deleted file mode 100644 index 01c36969b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/PointSmith.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module PointSmith = - [] - let ``PointSmith tests`` = - testList "HTMLCodegen.ChartSmith" [ - testList "PointSmith" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/ScatterSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/ScatterSmith.fs deleted file mode 100644 index e7b5bba07..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith/ScatterSmith.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartSmith - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ScatterSmith = - [] - let ``ScatterSmith tests`` = - testList "HTMLCodegen.ChartSmith" [ - testList "ScatterSmith" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/BubbleTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/BubbleTernary.fs deleted file mode 100644 index 3abfbd76b..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/BubbleTernary.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module BubbleTernary = - [] - let ``BubbleTernary tests`` = - testList "HTMLCodegen.ChartTernary" [ - testList "BubbleTernary" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/LineTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/LineTernary.fs deleted file mode 100644 index 78633f653..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/LineTernary.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module LineTernary = - [] - let ``LineTernary tests`` = - testList "HTMLCodegen.ChartTernary" [ - testList "LineTernary" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/PointTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/PointTernary.fs deleted file mode 100644 index 2fc5715f2..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/PointTernary.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module PointTernary = - [] - let ``PointTernary tests`` = - testList "HTMLCodegen.ChartTernary" [ - testList "PointTernary" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/ScatterTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/ScatterTernary.fs deleted file mode 100644 index 5c15286b1..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary/ScatterTernary.fs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Plotly.NET.Tests.HTMLCodegen.ChartTernary - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.Tests - -open TestUtils.HtmlCodegen -module ScatterTernary = - [] - let ``ScatterTernary tests`` = - testList "HTMLCodegen.ChartTernary" [ - testList "ScatterTernary" [ - - ] - ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs index 3126a1383..d03445837 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs @@ -8,113 +8,72 @@ open Plotly.NET.GenericChart open Plotly.NET.StyleParam open TestUtils.HtmlCodegen +open Chart2DTestCharts + + + + + -let columnChart = - let values = [20; 14; 23;] - let keys = ["Product A"; "Product B"; "Product C";] - Chart.Column(values = values, Keys = keys, UseDefaults = false) - -let barChart = - let values = [20; 14; 23;] - let keys = ["Product A"; "Product B"; "Product C";] - Chart.Bar(values = values, Keys = keys, UseDefaults = false) - -let stackedBarChart = - let values = [20; 14; 23;] - let keys = ["Product A"; "Product B"; "Product C";] - [ - Chart.StackedBar(values = values, Keys = keys, Name="old", UseDefaults = false); - Chart.StackedBar(values = [8; 21; 13;], Keys = keys, Name="new", UseDefaults = false) - ] - |> Chart.combine - -let stackedColumnChart = - let values = [20; 14; 23;] - let keys = ["Product A"; "Product B"; "Product C";] - [ - Chart.StackedColumn(values = values, Keys = keys,Name="old", UseDefaults = false); - Chart.StackedColumn(values = [8; 21; 13;], Keys = keys,Name="new", UseDefaults = false) - ] - |> Chart.combine [] let ``Bar and column charts`` = testList "SimpleCharts.Bar and column charts" [ testCase "Column chart data" ( fun () -> """var data = [{"type":"bar","x":["Product A","Product B","Product C"],"y":[20,14,23],"orientation":"v","marker":{"pattern":{}}}];""" - |> chartGeneratedContains columnChart + |> chartGeneratedContains Column.``Simple column chart`` ); testCase "Column chart layout" ( fun () -> - emptyLayout columnChart + emptyLayout Column.``Simple column chart`` ); testCase "Bar chart data" ( fun () -> """var data = [{"type":"bar","x":[20,14,23],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}}];""" - |> chartGeneratedContains barChart + |> chartGeneratedContains Bar.``Simple bar chart`` ); testCase "Bar chart layout" ( fun () -> - emptyLayout barChart + emptyLayout Bar.``Simple bar chart`` ); testCase "Stacked bar data" ( fun () -> """var data = [{"type":"bar","name":"old","x":[20,14,23],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}},{"type":"bar","name":"new","x":[8,21,13],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}}];""" - |> chartGeneratedContains stackedBarChart + |> chartGeneratedContains Bar.``Two stacked bars chart`` ); testCase "Stacked bar layout" ( fun () -> "var layout = {\"barmode\":\"stack\"};" - |> chartGeneratedContains stackedColumnChart + |> chartGeneratedContains Bar.``Two stacked bars chart`` ); testCase "Stacked column data" ( fun () -> """var data = [{"type":"bar","name":"old","x":["Product A","Product B","Product C"],"y":[20,14,23],"orientation":"v","marker":{"pattern":{}}},{"type":"bar","name":"new","x":["Product A","Product B","Product C"],"y":[8,21,13],"orientation":"v","marker":{"pattern":{}}}];""" - |> chartGeneratedContains stackedColumnChart + |> chartGeneratedContains Column.``Two stacked columns chart`` ); testCase "Stacked column layout" ( fun () -> "var layout = {\"barmode\":\"stack\"};" - |> chartGeneratedContains stackedColumnChart + |> chartGeneratedContains Column.``Two stacked columns chart`` ); ] - -let simpleAreaChart = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [5.; 2.5; 5.; 7.5; 5.; 2.5; 7.5; 4.5; 5.5; 5.] - Chart.Area(x = x, y = y, UseDefaults = false) - -let withSplineChart = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [5.; 2.5; 5.; 7.5; 5.; 2.5; 7.5; 4.5; 5.5; 5.] - Chart.SplineArea(x = x, y = y, UseDefaults = false) - -let stackedAreaChart = - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [5.; 2.5; 5.; 7.5; 5.; 2.5; 7.5; 4.5; 5.5; 5.] - [ - Chart.StackedArea(x = x, y = y, UseDefaults = false) - Chart.StackedArea(x = x, y = (y |> Seq.rev), UseDefaults = false) - ] - |> Chart.combine - [] let ``Area charts`` = testList "SimpleCharts.Area charts" [ testCase "Simple area data" ( fun () -> """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"marker":{},"line":{},"fill":"tozeroy","fillpattern":{}}];""" - |> chartGeneratedContains simpleAreaChart + |> chartGeneratedContains Area.``Simple area chart`` ); testCase "Simple area layout" ( fun () -> - emptyLayout simpleAreaChart + emptyLayout Area.``Simple area chart`` ); testCase "Spline data" ( fun () -> """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"marker":{},"line":{"shape":"spline"},"fill":"tozeroy","fillpattern":{}}];""" - |> chartGeneratedContains withSplineChart + |> chartGeneratedContains SplineArea.``Simple spline area chart`` ); testCase "Spline layout" ( fun () -> - emptyLayout withSplineChart + emptyLayout SplineArea.``Simple spline area chart`` ); testCase "Stacked area data" ( fun () -> """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"stackgroup":"stackedarea","marker":{},"line":{},"fill":"tonexty","fillpattern":{}},{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,5.5,4.5,7.5,2.5,5.0,7.5,5.0,2.5,5.0],"stackgroup":"stackedarea","marker":{},"line":{},"fill":"tonexty","fillpattern":{}}];""" - |> chartGeneratedContains stackedAreaChart + |> chartGeneratedContains StackedArea.``Two stacked areas chart`` ); testCase "Stacked area layout" ( fun () -> - emptyLayout stackedAreaChart + emptyLayout StackedArea.``Two stacked areas chart`` ); ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs index dc577777e..813491ed8 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleTests.fs @@ -7,7 +7,7 @@ open Plotly.NET.TraceObjects open Plotly.NET.GenericChart open TestUtils.HtmlCodegen -open Plotly.NET.Tests +open Chart2DTestCharts [] let ``Html layout tests`` = diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/AnnotatedHeatmap.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/AnnotatedHeatmap.fs deleted file mode 100644 index 81be32383..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/AnnotatedHeatmap.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.AnnotatedHeatmap -module AnnotatedHeatmap = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Area.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Area.fs deleted file mode 100644 index a746047e7..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Area.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Area -module Area = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bar.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bar.fs deleted file mode 100644 index 960a8a4e8..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Bar -module Bar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/BoxPlot.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/BoxPlot.fs deleted file mode 100644 index cbe11c5d9..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/BoxPlot.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.BoxPlot -module BoxPlot = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bubble.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bubble.fs deleted file mode 100644 index 7acf04ab8..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Bubble.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Bubble -module Bubble = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Candlestick.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Candlestick.fs deleted file mode 100644 index 2681fb891..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Candlestick.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Candlestick -module Candlestick = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Column.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Column.fs deleted file mode 100644 index 6b47e30b6..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Column.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Column -module Column = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Contour.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Contour.fs deleted file mode 100644 index 96effd68a..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Contour.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Contour -module Contour = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Funnel.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Funnel.fs deleted file mode 100644 index 33965820b..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Funnel.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Funnel -module Funnel = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Heatmap.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Heatmap.fs deleted file mode 100644 index 0b55b21a6..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Heatmap.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Heatmap -module Heatmap = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram.fs deleted file mode 100644 index 502e475a9..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Histogram -module Histogram = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2D.fs deleted file mode 100644 index f9c7b62bc..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2D.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Histogram2D -module Histogram2D = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2DContour.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2DContour.fs deleted file mode 100644 index 59e0fa878..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Histogram2DContour.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Histogram2DContour -module Histogram2DContour = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Image.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Image.fs deleted file mode 100644 index 71a419eab..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Image.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Image -module Image = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/OHLC.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/OHLC.fs deleted file mode 100644 index 1dcb4d0b8..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/OHLC.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.OHLC -module OHLC = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/PointDensity.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/PointDensity.fs deleted file mode 100644 index 34d3b5f11..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/PointDensity.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.PointDensity -module PointDensity = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Range.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Range.fs deleted file mode 100644 index d659e6167..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Range.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Range -module Range = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Scatter.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Scatter.fs deleted file mode 100644 index 111417661..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Scatter.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Scatter -module Scatter = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/SplineArea.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/SplineArea.fs deleted file mode 100644 index 1ca667073..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/SplineArea.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.SplineArea -module SplineArea = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Splom.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Splom.fs deleted file mode 100644 index 175fb21ed..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Splom.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Splom -module Splom = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedArea.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedArea.fs deleted file mode 100644 index 59d68ab75..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedArea.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.StackedArea -module StackedArea = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedBar.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedBar.fs deleted file mode 100644 index 37295d087..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedBar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.StackedBar -module StackedBar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedColumn.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedColumn.fs deleted file mode 100644 index eae2daece..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedColumn.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.StackedColumn -module StackedColumn = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedFunnel.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedFunnel.fs deleted file mode 100644 index a1ea22d44..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/StackedFunnel.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.StackedFunnel -module StackedFunnel = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Violin.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Violin.fs deleted file mode 100644 index 1b9771821..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Violin.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Violin -module Violin = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Waterfall.fs b/tests/CoreTests/CoreTests/TestCharts/Chart2D/Waterfall.fs deleted file mode 100644 index 7dbba0cf2..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart2D/Waterfall.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart2D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart2D.Chart.Waterfall -module Waterfall = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Bubble3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Bubble3D.fs deleted file mode 100644 index 9035895f0..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Bubble3D.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Bubble3D -module Bubble3D = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Cone.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Cone.fs deleted file mode 100644 index 51716c274..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Cone.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Cone -module Cone = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/IsoSurface.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/IsoSurface.fs deleted file mode 100644 index 2c2c14ae4..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/IsoSurface.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.IsoSurface -module IsoSurface = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Line3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Line3D.fs deleted file mode 100644 index 28b1a7cda..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Line3D.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Line3D -module Line3D = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Mesh3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Mesh3D.fs deleted file mode 100644 index 9f1d80073..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Mesh3D.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Mesh3D -module Mesh3D = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Point3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Point3D.fs deleted file mode 100644 index aca38c07f..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Point3D.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Point3D -module Point3D = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Scatter3D.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Scatter3D.fs deleted file mode 100644 index e331cff6e..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Scatter3D.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Scatter3D -module Scatter3D = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/StreamTube.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/StreamTube.fs deleted file mode 100644 index cc4ab0fd0..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/StreamTube.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.StreamTube -module StreamTube = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Surface.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Surface.fs deleted file mode 100644 index 7a01e2e2a..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Surface.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Surface -module Surface = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Volume.fs b/tests/CoreTests/CoreTests/TestCharts/Chart3D/Volume.fs deleted file mode 100644 index 97c1c7c47..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/Chart3D/Volume.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.Chart3D - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with Chart3D.Chart.Volume -module Volume = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/BubbleCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/BubbleCarpet.fs deleted file mode 100644 index fa2ea51f5..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/BubbleCarpet.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartCarpet - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartCarpet.Chart.BubbleCarpet -module BubbleCarpet = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/Carpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/Carpet.fs deleted file mode 100644 index 4384ef8b7..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/Carpet.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartCarpet - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartCarpet.Chart.Carpet -module Carpet = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ContourCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ContourCarpet.fs deleted file mode 100644 index 24a93124f..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ContourCarpet.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartCarpet - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartCarpet.Chart.ContourCarpet -module ContourCarpet = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/LineCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/LineCarpet.fs deleted file mode 100644 index 51e4487be..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/LineCarpet.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartCarpet - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartCarpet.Chart.LineCarpet -module LineCarpet = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/PointCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/PointCarpet.fs deleted file mode 100644 index 56e1fdbae..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/PointCarpet.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartCarpet - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartCarpet.Chart.PointCarpet -module PointCarpet = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ScatterCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ScatterCarpet.fs deleted file mode 100644 index b912dbbcb..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/ScatterCarpet.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartCarpet - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartCarpet.Chart.ScatterCarpet -module ScatterCarpet = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/SplineCarpet.fs b/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/SplineCarpet.fs deleted file mode 100644 index d25830ff9..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartCarpet/SplineCarpet.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartCarpet - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartCarpet.Chart.SplineCarpet -module SplineCarpet = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Doughnut.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Doughnut.fs deleted file mode 100644 index ba8ca86c3..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Doughnut.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Doughnut -module Doughnut = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/FunnelArea.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/FunnelArea.fs deleted file mode 100644 index da58d92a2..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/FunnelArea.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.FunnelArea -module FunnelArea = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Icicle.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Icicle.fs deleted file mode 100644 index 82c77f968..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Icicle.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Icicle -module Icicle = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Indicator.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Indicator.fs deleted file mode 100644 index 829fb8026..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Indicator.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Indicator -module Indicator = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCategories.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCategories.fs deleted file mode 100644 index dfd9a3a27..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCategories.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.ParralelCategories -module ParralelCategories = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCoord.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCoord.fs deleted file mode 100644 index 827e20b23..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/ParralelCoord.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.ParralelCoord -module ParralelCoord = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Pie.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Pie.fs deleted file mode 100644 index 4ab71cd93..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Pie.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Pie -module Pie = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sankey.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sankey.fs deleted file mode 100644 index 85edeb04e..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sankey.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Sankey -module Sankey = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sunburst.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sunburst.fs deleted file mode 100644 index c0da092f9..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Sunburst.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Sunburst -module Sunburst = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Table.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Table.fs deleted file mode 100644 index d3d5a261e..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Table.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Table -module Table = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Treemap.fs b/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Treemap.fs deleted file mode 100644 index d7ee944cd..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartDomain/Treemap.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartDomain - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartDomain.Chart.Treemap -module Treemap = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleGeo.fs deleted file mode 100644 index 02cbfe9f9..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleGeo.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.BubbleGeo -module BubbleGeo = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleMapbox.fs deleted file mode 100644 index 22b0176e2..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/BubbleMapbox.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.BubbleMapbox -module BubbleMapbox = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMap.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMap.fs deleted file mode 100644 index 01cc903bf..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMap.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.ChoroplethMap -module ChoroplethMap = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMapbox.fs deleted file mode 100644 index ab71bc0b7..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ChoroplethMapbox.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.ChoroplethMapbox -module ChoroplethMapbox = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/DensityMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/DensityMapbox.fs deleted file mode 100644 index 9af44cbf1..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/DensityMapbox.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.DensityMapbox -module DensityMapbox = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineGeo.fs deleted file mode 100644 index 5feba76e8..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineGeo.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.LineGeo -module LineGeo = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineMapbox.fs deleted file mode 100644 index b0cca7e81..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/LineMapbox.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.LineMapbox -module LineMapbox = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/PointGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/PointGeo.fs deleted file mode 100644 index 549d6e272..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/PointGeo.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.PointGeo -module PointGeo = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterGeo.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterGeo.fs deleted file mode 100644 index 6d74d4443..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterGeo.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.ScatterGeo -module ScatterGeo = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterMapbox.fs b/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterMapbox.fs deleted file mode 100644 index 3c683f312..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartMap/ScatterMapbox.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartMap - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartMap.Chart.ScatterMapbox -module ScatterMapbox = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BarPolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BarPolar.fs deleted file mode 100644 index d845ba004..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BarPolar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartPolar - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartPolar.Chart.BarPolar -module BarPolar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BubblePolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BubblePolar.fs deleted file mode 100644 index 49d562e20..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/BubblePolar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartPolar - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartPolar.Chart.BubblePolar -module BubblePolar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/LinePolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/LinePolar.fs deleted file mode 100644 index 25a93e8e9..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/LinePolar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartPolar - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartPolar.Chart.LinePolar -module LinePolar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/PointPolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/PointPolar.fs deleted file mode 100644 index 5af367155..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/PointPolar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartPolar - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartPolar.Chart.PointPolar -module PointPolar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/ScatterPolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/ScatterPolar.fs deleted file mode 100644 index 34e8092be..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/ScatterPolar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartPolar - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartPolar.Chart.ScatterPolar -module ScatterPolar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/SplinePolar.fs b/tests/CoreTests/CoreTests/TestCharts/ChartPolar/SplinePolar.fs deleted file mode 100644 index 4e3c662a6..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartPolar/SplinePolar.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartPolar - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartPolar.Chart.SplinePolar -module SplinePolar = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/BubbleSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/BubbleSmith.fs deleted file mode 100644 index 63c0585a4..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/BubbleSmith.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartSmith - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartSmith.Chart.BubbleSmith -module BubbleSmith = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/LineSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/LineSmith.fs deleted file mode 100644 index c8329e6f4..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/LineSmith.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartSmith - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartSmith.Chart.LineSmith -module LineSmith = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/PointSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/PointSmith.fs deleted file mode 100644 index 3fc364e57..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/PointSmith.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartSmith - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartSmith.Chart.PointSmith -module PointSmith = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/ScatterSmith.fs b/tests/CoreTests/CoreTests/TestCharts/ChartSmith/ScatterSmith.fs deleted file mode 100644 index ee1adb371..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartSmith/ScatterSmith.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartSmith - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartSmith.Chart.ScatterSmith -module ScatterSmith = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/BubbleTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/BubbleTernary.fs deleted file mode 100644 index 97defa3d5..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/BubbleTernary.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartTernary - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartTernary.Chart.BubbleTernary -module BubbleTernary = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/LineTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/LineTernary.fs deleted file mode 100644 index fac67965e..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/LineTernary.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartTernary - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartTernary.Chart.LineTernary -module LineTernary = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/PointTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/PointTernary.fs deleted file mode 100644 index 9eb330c8e..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/PointTernary.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartTernary - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartTernary.Chart.PointTernary -module PointTernary = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/ScatterTernary.fs b/tests/CoreTests/CoreTests/TestCharts/ChartTernary/ScatterTernary.fs deleted file mode 100644 index 59e0edf14..000000000 --- a/tests/CoreTests/CoreTests/TestCharts/ChartTernary/ScatterTernary.fs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Plotly.NET.Tests.TestCharts.ChartTernary - -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -/// Test charts created with ChartTernary.Chart.ScatterTernary -module ScatterTernary = () \ No newline at end of file diff --git a/tests/README.md b/tests/README.md index 5c4e4d322..8d6f470c9 100644 --- a/tests/README.md +++ b/tests/README.md @@ -35,6 +35,11 @@ Available test targets are: - `RunTestsExtensionLibs` - runs all tests in the `ExtensionLibTests` folder - `RunTestsJSTests` - runs all tests in the `JSTests` folder +### Using Visual Studio Test Explorer + +You can also run tests from within Visual Studio using the Test Explorer. + +Just note that test projects targeting .NET Framework will not be visible in the Test Explorer, as they are not supported by the Test Explorer. ## Folder structure From 3a6979047a2203e2bbeb1d1f1e95d54836507c79 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 16 Apr 2023 11:17:02 +0200 Subject: [PATCH 13/26] Refactor test charts for simple charts tests into FSharpTestBase --- .../FSharpTestBase/FSharpTestBase.fsproj | 8 + .../TestCharts/Chart2DTestCharts.fs | 133 +++++- .../TestCharts/ChartDomainTestCharts.fs | 209 ++++++++++ tests/Common/FSharpTestBase/TestUtils.fs | 17 + tests/CoreTests/CoreTests/CoreTests.fsproj | 2 + .../CoreTests/HTMLCodegen/SimpleCharts.fs | 385 ++---------------- 6 files changed, 399 insertions(+), 355 deletions(-) create mode 100644 tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs create mode 100644 tests/Common/FSharpTestBase/TestUtils.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index 0547deae9..42b590f12 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -6,6 +6,14 @@ + + + + + + + + diff --git a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs index 40370455d..458d43cb8 100644 --- a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs @@ -79,9 +79,33 @@ module Spline = Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) -module Bubble = () +module Bubble = -module Range = () + let ``Simple bubble chart`` = + let x = [2; 4; 6;] + let y = [4; 1; 6;] + let size = [19; 26; 55;] + Chart.Bubble(x = x, y = y,sizes = size, UseDefaults = false) + +module Range = + + let ``Styled range chart`` = + let rnd = System.Random(5) + + let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + + let yUpper = y |> List.map (fun v -> v + rnd.NextDouble()) + let yLower = y |> List.map (fun v -> v - rnd.NextDouble()) + Chart.Range( + x = x, + y = y, + upper = yUpper, + lower = yLower, + mode = StyleParam.Mode.Lines_Markers, + MarkerColor=Color.fromString "grey", + RangeColor=Color.fromString "lightblue", + UseDefaults = false) module Area = @@ -161,11 +185,110 @@ module Violin = () module Histogram2DContour = () -module Heatmap = () +module Heatmap = + + let ``simple heatmap with custom colorscale`` = + let matrix = + [[1.;1.5;0.7;2.7]; + [2.;0.5;1.2;1.4]; + [0.1;2.6;2.4;3.0];] + + let rownames = ["p3";"p2";"p1"] + let colnames = ["Tp0";"Tp30";"Tp60";"Tp160"] + + let colorscaleValue = + StyleParam.Colorscale.Custom [(0.0,Color.fromString "#3D9970");(1.0,Color.fromString "#001f3f")] + + Chart.Heatmap( + zData = matrix, + colNames = colnames, + rowNames = rownames, + ColorScale=colorscaleValue, + ShowScale=true, + UseDefaults = false + ) + |> Chart.withSize(700,500) + |> Chart.withMarginSize(Left=200.) -module AnnotatedHeatmap = () + + let ``Simple heatmal with custom colorscale and styled colorbar`` = + let matrix = + [[1.;1.5;0.7;2.7]; + [2.;0.5;1.2;1.4]; + [0.1;2.6;2.4;3.0];] + + let rownames = ["p3";"p2";"p1"] + let colnames = ["Tp0";"Tp30";"Tp60";"Tp160"] + + let colorscaleValue = + StyleParam.Colorscale.Custom [(0.0,Color.fromString "#3D9970");(1.0,Color.fromString "#001f3f")] + + Chart.Heatmap( + zData = matrix, + colNames = colnames, + rowNames = rownames, + ColorScale=colorscaleValue, + ShowScale=true, + UseDefaults = false + ) + |> Chart.withSize(700.,500.) + |> Chart.withMarginSize(Left=200.) + |> Chart.withColorBarStyle(TitleText = "Im the Colorbar") + + +module AnnotatedHeatmap = + + + let ``Simple annotated heatmap`` = + Chart.AnnotatedHeatmap( + zData = [ + [1..5] + [6..10] + [11..15] + ], + annotationText = [ + ["1,1";"1,2";"1,3"] + ["2,1";"2,2";"2,3"] + ["3,1";"3,2";"3,3"] + ], + X = ["C1";"C2";"C3"], + Y = ["R1";"R2";"R3"], + ReverseYAxis = true, + UseDefaults = false + ) + +module Image = -module Image = () + let private colors = [ + [[0 ;0 ;255]; [255;255;0 ]; [0 ;0 ;255]] + [[255;0 ;0 ]; [255;0 ;255]; [255;0 ;255]] + [[0 ;255;0 ]; [0 ;255;255]; [255;0 ;0 ]] + ] + + let ``Raw color component image chart`` = + Chart.Image(Z=colors, UseDefaults = false) + |> Chart.withTitle "Image chart from raw color component arrays" + + let ``HSL image chart`` = + Chart.Image(Z=colors, ColorModel=StyleParam.ColorModel.HSL, UseDefaults = false) + |> Chart.withTitle "HSL color model" + + let ``ARGB image chart`` = + let argbs = [ + [ColorKeyword.AliceBlue ; ColorKeyword.CornSilk ; ColorKeyword.LavenderBlush ] |> List.map ARGB.fromKeyword + [ColorKeyword.DarkGray ; ColorKeyword.Snow ; ColorKeyword.MidnightBlue ] |> List.map ARGB.fromKeyword + [ColorKeyword.LightSteelBlue; ColorKeyword.DarkKhaki; ColorKeyword.LightAkyBlue ] |> List.map ARGB.fromKeyword + ] + Chart.Image(z = argbs, UseDefaults = false) + |> Chart.withTitle "ARGB image chart" + + let ``Image chart from base64 string`` = + let base64String = TestUtils.getLogoPNG() + Chart.Image( + Source=($"data:image/jpg;base64,{base64String}"), + UseDefaults = false + ) + |> Chart.withTitle "This is Plotly.NET:" module Contour = () diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs new file mode 100644 index 000000000..9f1082b53 --- /dev/null +++ b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs @@ -0,0 +1,209 @@ +module ChartDomainTestCharts + +open Plotly.NET + + +module Pie = + + let ``Simple pie chart`` = + let values = [19; 26; 55;] + let labels = ["Residential"; "Non-Residential"; "Utility"] + Chart.Pie(values = values, Labels = labels, UseDefaults = false) + + let ``Styled pie chart`` = + + let values = [19; 26; 55;] + let labels = ["Residential"; "Non-Residential"; "Utility"] + + Chart.Pie( + values = values, + Labels = labels, + SectionColors = [ + Color.fromKeyword Aqua + Color.fromKeyword Salmon + Color.fromKeyword Tan + ], + SectionOutlineColor = Color.fromKeyword Black, + SectionOutlineWidth = 2., + MultiText = [ + "Some" + "More" + "Stuff" + ], + MultiTextPosition = [ + StyleParam.TextPosition.Inside + StyleParam.TextPosition.Outside + StyleParam.TextPosition.Inside + ], + Rotation = 45., + MultiPull = [0.; 0.3; 0.], + UseDefaults = false + ) + +module Doughnut = + + let ``Simple doughnut chart`` = + let values = [19; 26; 55;] + let labels = ["Residential"; "Non-Residential"; "Utility"] + Chart.Doughnut( + values = values, + Labels = labels, + Hole=0.3, + MultiText=labels, + UseDefaults = false + ) + +module FunnelArea = () + +module Sunburst = () + +module Treemap = () + +module ParralelCoord = () + +module ParralelCategories = () + +module Sankey = () + +module Table = + + let ``Simple table chart`` = + let header = ["RowIndex";"A";"simple";"table"] + let rows = + [ + ["0";"I" ;"am" ;"a"] + ["1";"little";"example";"!"] + ] + Chart.Table(headerValues = header, cellsValues = rows, UseDefaults = false) + + let ``Styled table chart`` = + let header = ["RowIndex";"A";"simple";"table"] + let rows = + [ + ["0";"I" ;"am" ;"a"] + ["1";"little";"example";"!"] + ] + Chart.Table( + headerValues = header, + cellsValues = rows, + HeaderAlign = StyleParam.HorizontalAlign.Center, + CellsMultiAlign = [StyleParam.HorizontalAlign.Left; StyleParam.HorizontalAlign.Center; StyleParam.HorizontalAlign.Right], + HeaderFillColor = Color.fromString "#45546a", + CellsFillColor = Color.fromColors [Color.fromString "#deebf7"; Color.fromString "lightgrey"; Color.fromString "#deebf7"; Color.fromString "lightgrey"], + HeaderHeight = 30, + HeaderOutlineColor = Color.fromString "black", + HeaderOutlineWidth = 2., + MultiColumnWidth = [70.; 50.; 100.; 70.], + ColumnOrder = [1; 2; 3; 4], + UseDefaults = false + ) + + let ``Cell color dependent table chart`` = + let header2 = ["Identifier";"T0";"T1";"T2";"T3"] + let rowvalues = + [ + [10001.;0.2;2.0;4.0;5.0] + [10002.;2.1;2.0;1.8;2.1] + [10003.;4.5;3.0;2.0;2.5] + [10004.;0.0;0.1;0.3;0.2] + [10005.;1.0;1.6;1.8;2.2] + [10006.;1.0;0.8;1.5;0.7] + [10007.;2.0;2.0;2.1;1.9] + ] + |> Seq.sortBy (fun x -> x.[1]) + + //map color from value to hex representation + let mapColor min max value = + let proportion = + (255. * (value - min) / (max - min)) + |> int + Color.fromRGB 255 (255 - proportion) proportion + + //Assign a color to every cell seperately. Matrix must be transposed for correct orientation. + let cellcolor = + rowvalues + |> Seq.map (fun row -> + row + |> Seq.mapi (fun index value -> + if index = 0 then Color.fromString "white" + else mapColor 0. 5. value + ) + ) + |> Seq.transpose + |> Seq.map Color.fromColors + |> Color.fromColors + + Chart.Table( + headerValues = header2, + cellsValues = rowvalues, + CellsFillColor=cellcolor, + UseDefaults = false + ) + + + let ``Sequence representation table chart`` = + let sequence = + [ + "ATGAGACGTCGAGACTGATAGACGTCGATAGACGTCGATAGACCG" + "ATAGACTCGTGATAGACGTCGATAGACGTCGATAGAGTATAGACC" + "GTGATAGACGTCGAGAAGACGTCGATAGACGTCGATAGACGTCGA" + "TAGAGATAGACGTCGATAGACCGTATAGAAGACGTCGATAGATAG" + "ACGTCGATAGACCGTAGACGTCGATAGACGTCGATAGACCGT" + ] + |> String.concat "" + + let elementsPerRow = 60 + + let headers = + [0..elementsPerRow] + |> Seq.map (fun x -> + if x%10=0 && x <> 0 then "|" + else "" + ) + + let cells = + sequence + |> Seq.chunkBySize elementsPerRow + |> Seq.mapi (fun i x -> Seq.append [string (i * elementsPerRow)] (Seq.map string x)) + + let cellcolors = + cells + |> Seq.map (fun row -> + row + |> Seq.map (fun element -> + match element with + //colors taken from DRuMS + //(http://biomodel.uah.es/en/model4/dna/atgc.htm) + | "A" -> Color.fromString "#5050FF" + | "T" -> Color.fromString "#E6E600" + | "G" -> Color.fromString "#00C000" + | "C" -> Color.fromString "#E00000" + | "U" -> Color.fromString "#B48100" + | _ -> Color.fromString "white" + ) + ) + |> Seq.transpose + |> Seq.map (fun x -> Seq.append x (seq [Color.fromString "white"])) + |> Seq.map Color.fromColors + |> Color.fromColors + + let line = Line.init(Width = 0., Color = Color.fromString "white") + let chartwidth = 50 + 10 * elementsPerRow + + Chart.Table( + headerValues = headers, + cellsValues = cells, + CellsOutline = line, + HeaderOutline = line, + CellsHeight = 20, + MultiColumnWidth = [50.;10.], + CellsMultiAlign = [StyleParam.HorizontalAlign.Right;StyleParam.HorizontalAlign.Center], + CellsFillColor = cellcolors, + UseDefaults = false + ) + |> Chart.withSize(Width=chartwidth) + |> Chart.withTitle "Sequence A" + +module Indicator = () + +module Icicle = () \ No newline at end of file diff --git a/tests/Common/FSharpTestBase/TestUtils.fs b/tests/Common/FSharpTestBase/TestUtils.fs new file mode 100644 index 000000000..b66c39648 --- /dev/null +++ b/tests/Common/FSharpTestBase/TestUtils.fs @@ -0,0 +1,17 @@ +module TestUtils + +open System.Reflection +open System.IO + +let getLogoPNG() = + let assembly = Assembly.GetExecutingAssembly() + use str = assembly.GetManifestResourceStream($"FSharpTestBase.logo.png") + use r = new BinaryReader(str) + r.ReadBytes(int(str.Length)) + |> System.Convert.ToBase64String + +let getFullPlotlyJS() = + let assembly = Assembly.GetExecutingAssembly() + use str = assembly.GetManifestResourceStream($"FSharpTestBase.plotly-{Globals.PLOTLYJS_VERSION}.min.js") + use r = new StreamReader(str) + r.ReadToEnd() diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index cfc13ee18..bd3c31a49 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -43,6 +43,8 @@ + + diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs index d03445837..45496bc1a 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs @@ -8,13 +8,9 @@ open Plotly.NET.GenericChart open Plotly.NET.StyleParam open TestUtils.HtmlCodegen -open Chart2DTestCharts - - - - - +open Chart2DTestCharts +open ChartDomainTestCharts [] let ``Bar and column charts`` = @@ -78,471 +74,160 @@ let ``Area charts`` = ] -let rangePlotsChart = - let rnd = System.Random(5) - - let x = [1.; 2.; 3.; 4.; 5.; 6.; 7.; 8.; 9.; 10.; ] - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - - let yUpper = y |> List.map (fun v -> v + rnd.NextDouble()) - let yLower = y |> List.map (fun v -> v - rnd.NextDouble()) - Chart.Range( - x = x, - y = y, - upper = yUpper, - lower = yLower, - mode = StyleParam.Mode.Lines_Markers, - MarkerColor=Color.fromString "grey", - RangeColor=Color.fromString "lightblue", - UseDefaults = false) + [] let ``Range plot`` = testList "SimpleCharts.Range plot" [ testCase "Range plot data" ( fun () -> """var data = [{"type":"scatter","name":"lower","showlegend":true,"legendgroup":"Range","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[1.0244410755226578,1.1291130737537114,4.930085632917511,1.4292117752736488,2.5179894182449156,2.3470285278032668,1.5358344954605374,1.4046562835130172,2.6874669190437843,0.7493837949584163],"fillcolor":"lightblue","marker":{"color":"lightblue"}},{"type":"scatter","name":"upper","showlegend":true,"legendgroup":"Range","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.338369840913624,1.7844184475412679,5.2629626417825754,2.125375844363764,3.4634618528482792,3.4283738280312965,2.6463105539541276,2.4505998873853123,4.096133255211699,1.1174599459010455],"fill":"tonexty","fillcolor":"lightblue","marker":{"color":"lightblue"}},{"type":"scatter","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"color":"grey"},"line":{},"legendgroup":"Range","legendgrouptitle":{"text":"Range"}}];""" - |> chartGeneratedContains rangePlotsChart + |> chartGeneratedContains Range.``Styled range chart`` ); testCase "Range plot layout" ( fun () -> - emptyLayout rangePlotsChart + emptyLayout Range.``Styled range chart`` ); ] -let bubbleCharts = - let x = [2; 4; 6;] - let y = [4; 1; 6;] - let size = [19; 26; 55;] - Chart.Bubble(x = x, y = y,sizes = size, UseDefaults = false) - [] let ``Bubble charts`` = testList "SimpleCharts.Bubble charts" [ testCase "Bubble data" ( fun () -> """var data = [{"type":"scatter","mode":"markers","x":[2,4,6],"y":[4,1,6],"marker":{"size":[19,26,55]},"line":{}}];""" - |> chartGeneratedContains bubbleCharts + |> chartGeneratedContains Bubble.``Simple bubble chart`` ); testCase "Bubble layout" ( fun () -> - emptyLayout bubbleCharts + emptyLayout Bubble.``Simple bubble chart`` ); ] -let pieChart = - let values = [19; 26; 55;] - let labels = ["Residential"; "Non-Residential"; "Utility"] - Chart.Pie(values = values, Labels = labels, UseDefaults = false) - -let pieStyled = - - let values = [19; 26; 55;] - let labels = ["Residential"; "Non-Residential"; "Utility"] - - Chart.Pie( - values = values, - Labels = labels, - SectionColors = [ - Color.fromKeyword Aqua - Color.fromKeyword Salmon - Color.fromKeyword Tan - ], - SectionOutlineColor = Color.fromKeyword Black, - SectionOutlineWidth = 2., - MultiText = [ - "Some" - "More" - "Stuff" - ], - MultiTextPosition = [ - StyleParam.TextPosition.Inside - StyleParam.TextPosition.Outside - StyleParam.TextPosition.Inside - ], - Rotation = 45., - MultiPull = [0.; 0.3; 0.], - UseDefaults = false - ) - -let doughnutChart = - let values = [19; 26; 55;] - let labels = ["Residential"; "Non-Residential"; "Utility"] - Chart.Doughnut( - values = values, - Labels = labels, - Hole=0.3, - MultiText=labels, - UseDefaults = false - ) - [] let ``Pie and doughnut Charts`` = testList "SimpleCharts.Pie and doughnut Charts" [ testCase "Pie data" ( fun () -> """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"marker":{"line":{}}}];""" - |> chartGeneratedContains pieChart + |> chartGeneratedContains Pie.``Simple pie chart`` ); testCase "Pie layout" ( fun () -> - emptyLayout pieChart + emptyLayout Pie.``Simple pie chart`` ); testCase "Pie styled data" ( fun () -> """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"pull":[0.0,0.3,0.0],"text":["Some","More","Stuff"],"textposition":["inside","outside","inside"],"marker":{"colors":["rgba(0, 255, 255, 1.0)","rgba(250, 128, 114, 1.0)","rgba(210, 180, 140, 1.0)"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":2.0}},"rotation":45.0}];""" - |> chartGeneratedContains pieStyled + |> chartGeneratedContains Pie.``Styled pie chart`` ); testCase "Pie styled layout" ( fun () -> - emptyLayout pieStyled + emptyLayout Pie.``Styled pie chart`` ); testCase "Doughnut data" ( fun () -> """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"text":["Residential","Non-Residential","Utility"],"marker":{"line":{}},"hole":0.3}];""" - |> chartGeneratedContains doughnutChart + |> chartGeneratedContains Doughnut.``Simple doughnut chart`` ); testCase "Doughnut layout" ( fun () -> - emptyLayout doughnutChart + emptyLayout Doughnut.``Simple doughnut chart`` ); ] -let table1Chart = - let header = ["RowIndex";"A";"simple";"table"] - let rows = - [ - ["0";"I" ;"am" ;"a"] - ["1";"little";"example";"!"] - ] - Chart.Table(headerValues = header, cellsValues = rows, UseDefaults = false) - -let tableStyledChart = - let header = ["RowIndex";"A";"simple";"table"] - let rows = - [ - ["0";"I" ;"am" ;"a"] - ["1";"little";"example";"!"] - ] - Chart.Table( - headerValues = header, - cellsValues = rows, - HeaderAlign = HorizontalAlign.Center, - CellsMultiAlign = [HorizontalAlign.Left; HorizontalAlign.Center; HorizontalAlign.Right], - HeaderFillColor = Color.fromString "#45546a", - CellsFillColor = Color.fromColors [Color.fromString "#deebf7"; Color.fromString "lightgrey"; Color.fromString "#deebf7"; Color.fromString "lightgrey"], - HeaderHeight = 30, - HeaderOutlineColor = Color.fromString "black", - HeaderOutlineWidth = 2., - MultiColumnWidth = [70.; 50.; 100.; 70.], - ColumnOrder = [1; 2; 3; 4], - UseDefaults = false - ) - -let tableColorDependentChart = - let header2 = ["Identifier";"T0";"T1";"T2";"T3"] - let rowvalues = - [ - [10001.;0.2;2.0;4.0;5.0] - [10002.;2.1;2.0;1.8;2.1] - [10003.;4.5;3.0;2.0;2.5] - [10004.;0.0;0.1;0.3;0.2] - [10005.;1.0;1.6;1.8;2.2] - [10006.;1.0;0.8;1.5;0.7] - [10007.;2.0;2.0;2.1;1.9] - ] - |> Seq.sortBy (fun x -> x.[1]) - - //map color from value to hex representation - let mapColor min max value = - let proportion = - (255. * (value - min) / (max - min)) - |> int - Color.fromRGB 255 (255 - proportion) proportion - - //Assign a color to every cell seperately. Matrix must be transposed for correct orientation. - let cellcolor = - rowvalues - |> Seq.map (fun row -> - row - |> Seq.mapi (fun index value -> - if index = 0 then Color.fromString "white" - else mapColor 0. 5. value - ) - ) - |> Seq.transpose - |> Seq.map Color.fromColors - |> Color.fromColors - - Chart.Table( - headerValues = header2, - cellsValues = rowvalues, - CellsFillColor=cellcolor, - UseDefaults = false - ) - -let sequencePresentationTableChart = - let sequence = - [ - "ATGAGACGTCGAGACTGATAGACGTCGATAGACGTCGATAGACCG" - "ATAGACTCGTGATAGACGTCGATAGACGTCGATAGAGTATAGACC" - "GTGATAGACGTCGAGAAGACGTCGATAGACGTCGATAGACGTCGA" - "TAGAGATAGACGTCGATAGACCGTATAGAAGACGTCGATAGATAG" - "ACGTCGATAGACCGTAGACGTCGATAGACGTCGATAGACCGT" - ] - |> String.concat "" - - let elementsPerRow = 60 - - let headers = - [0..elementsPerRow] - |> Seq.map (fun x -> - if x%10=0 && x <> 0 then "|" - else "" - ) - - let cells = - sequence - |> Seq.chunkBySize elementsPerRow - |> Seq.mapi (fun i x -> Seq.append [string (i * elementsPerRow)] (Seq.map string x)) - - let cellcolors = - cells - |> Seq.map (fun row -> - row - |> Seq.map (fun element -> - match element with - //colors taken from DRuMS - //(http://biomodel.uah.es/en/model4/dna/atgc.htm) - | "A" -> Color.fromString "#5050FF" - | "T" -> Color.fromString "#E6E600" - | "G" -> Color.fromString "#00C000" - | "C" -> Color.fromString "#E00000" - | "U" -> Color.fromString "#B48100" - | _ -> Color.fromString "white" - ) - ) - |> Seq.transpose - |> Seq.map (fun x -> Seq.append x (seq [Color.fromString "white"])) - |> Seq.map Color.fromColors - |> Color.fromColors - - let line = Line.init(Width = 0., Color = Color.fromString "white") - let chartwidth = 50 + 10 * elementsPerRow - - Chart.Table( - headerValues = headers, - cellsValues = cells, - CellsOutline = line, - HeaderOutline = line, - CellsHeight = 20, - MultiColumnWidth = [50.;10.], - CellsMultiAlign = [HorizontalAlign.Right;HorizontalAlign.Center], - CellsFillColor = cellcolors, - UseDefaults = false - ) - |> Chart.withSize(Width=chartwidth) - |> Chart.withTitle "Sequence A" - [] let ``Table charts`` = testList "SimpleCharts.Table charts" [ testCase "First table data" ( fun () -> """var data = [{"type":"table","cells":{"fill":{},"line":{},"values":[["0","1"],["I","little"],["am","example"],["a","!"]]},"header":{"fill":{},"line":{},"values":["RowIndex","A","simple","table"]}}];""" - |> chartGeneratedContains table1Chart + |> chartGeneratedContains Table.``Simple table chart`` ); testCase "First table layout" ( fun () -> - emptyLayout table1Chart + emptyLayout Table.``Simple table chart`` ); testCase "Styled table data" ( fun () -> """var data = [{"type":"table","columnorder":[1,2,3,4],"columnwidth":[70.0,50.0,100.0,70.0],"cells":{"align":["left","center","right"],"fill":{"color":["#deebf7","lightgrey","#deebf7","lightgrey"]},"line":{},"values":[["0","1"],["I","little"],["am","example"],["a","!"]]},"header":{"align":"center","fill":{"color":"#45546a"},"height":30,"line":{"color":"black","width":2.0},"values":["RowIndex","A","simple","table"]}}];""" - |> chartGeneratedContains tableStyledChart + |> chartGeneratedContains Table.``Styled table chart`` ); testCase "Styled table layout" ( fun () -> - emptyLayout tableStyledChart + emptyLayout Table.``Styled table chart`` ); testCase "Color dependent chart data" ( fun () -> """var data = [{"type":"table","cells":{"fill":{"color":[["white","white","white","white","white","white","white"],["rgba(255, 255, 0, 1.0)","rgba(255, 245, 10, 1.0)","rgba(255, 204, 51, 1.0)","rgba(255, 204, 51, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 26, 229, 1.0)"],["rgba(255, 250, 5, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 174, 81, 1.0)","rgba(255, 215, 40, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 102, 153, 1.0)"],["rgba(255, 240, 15, 1.0)","rgba(255, 51, 204, 1.0)","rgba(255, 164, 91, 1.0)","rgba(255, 179, 76, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 164, 91, 1.0)","rgba(255, 153, 102, 1.0)"],["rgba(255, 245, 10, 1.0)","rgba(255, 0, 255, 1.0)","rgba(255, 143, 112, 1.0)","rgba(255, 220, 35, 1.0)","rgba(255, 159, 96, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 128, 127, 1.0)"]]},"line":{},"values":[[10004.0,10001.0,10005.0,10006.0,10007.0,10002.0,10003.0],[0.0,0.2,1.0,1.0,2.0,2.1,4.5],[0.1,2.0,1.6,0.8,2.0,2.0,3.0],[0.3,4.0,1.8,1.5,2.1,1.8,2.0],[0.2,5.0,2.2,0.7,1.9,2.1,2.5]]},"header":{"fill":{},"line":{},"values":["Identifier","T0","T1","T2","T3"]}}];""" - |> chartGeneratedContains tableColorDependentChart + |> chartGeneratedContains Table.``Cell color dependent table chart`` ); testCase "Color dependent chart layout" ( fun () -> - emptyLayout tableColorDependentChart + emptyLayout Table.``Cell color dependent table chart`` ); testCase "Sequence presentation table data" ( fun () -> """var data = [{"type":"table","columnwidth":[50.0,10.0],"cells":{"align":["right","center"],"fill":{"color":[["white","white","white","white","white"],["#5050FF","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E00000","#E6E600","#E00000","white"],["#00C000","#00C000","#E00000","#00C000","white"],["#5050FF","#E6E600","#00C000","#E6E600","white"],["#00C000","#E00000","#5050FF","#E00000","white"],["#5050FF","#00C000","#E6E600","#00C000","white"],["#E00000","#5050FF","#5050FF","#5050FF","white"],["#00C000","#E6E600","#00C000","#E6E600","white"],["#E6E600","#5050FF","#5050FF","#5050FF","white"],["#E00000","#00C000","#E00000","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#5050FF","#E00000","#E6E600","#E00000","white"],["#00C000","#00C000","#E00000","#E00000","white"],["#5050FF","#E6E600","#00C000","#00C000","white"],["#E00000","#E00000","#5050FF","#E6E600","white"],["#E6E600","#00C000","#E6E600","#5050FF","white"],["#00C000","#5050FF","#5050FF","#00C000","white"],["#5050FF","#E6E600","#00C000","#5050FF","white"],["#E6E600","#5050FF","#5050FF","#E00000","white"],["#5050FF","#00C000","#00C000","#00C000","white"],["#00C000","#5050FF","#5050FF","#E6E600","white"],["#5050FF","#00C000","#E6E600","#E00000","white"],["#E00000","#E6E600","#5050FF","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E6E600","#5050FF","#E6E600","white"],["#E00000","#5050FF","#E00000","#5050FF","white"],["#00C000","#00C000","#00C000","#00C000","white"],["#5050FF","#5050FF","#E6E600","#5050FF","white"],["#E6E600","#E00000","#E00000","#E00000","white"],["#5050FF","#E00000","#00C000","#00C000","white"],["#00C000","#00C000","#5050FF","#E6E600","white"],["#5050FF","#E6E600","#E6E600","#E00000","white"],["#E00000","#00C000","#5050FF","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E6E600","#5050FF","#E6E600","white"],["#E00000","#5050FF","#E00000","#5050FF","white"],["#00C000","#00C000","#E00000","#00C000","white"],["#5050FF","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E00000","#E6E600","#E00000","white"],["#5050FF","#00C000","#5050FF","#E00000","white"],["#00C000","#E6E600","#E6E600","#00C000","white"],["#5050FF","#E00000","#5050FF","#E6E600","white"],["#E00000","#00C000","#00C000","white"],["#E00000","#5050FF","#5050FF","white"],["#00C000","#00C000","#5050FF","white"],["#5050FF","#5050FF","#00C000","white"],["#E6E600","#5050FF","#5050FF","white"],["#5050FF","#00C000","#E00000","white"],["#00C000","#5050FF","#00C000","white"],["#5050FF","#E00000","#E6E600","white"],["#E00000","#00C000","#E00000","white"],["#E6E600","#E6E600","#00C000","white"],["#E00000","#E00000","#5050FF","white"],["#00C000","#00C000","#E6E600","white"],["#E6E600","#5050FF","#5050FF","white"],["#00C000","#E6E600","#00C000","white"],["#5050FF","#5050FF","#5050FF","white"],["#E6E600","#00C000","#E6E600","white"],["#5050FF","#5050FF","#5050FF","white"],["#00C000","#E00000","#00C000","white"]]},"height":20,"line":{"color":"white","width":0.0},"values":[["0","60","120","180"],["A","A","G","A"],["T","C","T","C"],["G","G","C","G"],["A","T","G","T"],["G","C","A","C"],["A","G","T","G"],["C","A","A","A"],["G","T","G","T"],["T","A","A","A"],["C","G","C","G"],["G","A","G","A"],["A","C","T","C"],["G","G","C","C"],["A","T","G","G"],["C","C","A","T"],["T","G","T","A"],["G","A","A","G"],["A","T","G","A"],["T","A","A","C"],["A","G","G","G"],["G","A","A","T"],["A","G","T","C"],["C","T","A","G"],["G","A","G","A"],["T","T","A","T"],["C","A","C","A"],["G","G","G","G"],["A","A","T","A"],["T","C","C","C"],["A","C","G","G"],["G","G","A","T"],["A","T","T","C"],["C","G","A","G"],["G","A","G","A"],["T","T","A","T"],["C","A","C","A"],["G","G","C","G"],["A","A","G","A"],["T","C","T","C"],["A","G","A","C"],["G","T","T","G"],["A","C","A","T"],["C","G","G"],["C","A","A"],["G","G","A"],["A","A","G"],["T","A","A"],["A","G","C"],["G","A","G"],["A","C","T"],["C","G","C"],["T","T","G"],["C","C","A"],["G","G","T"],["T","A","A"],["G","T","G"],["A","A","A"],["T","G","T"],["A","A","A"],["G","C","G"]]},"header":{"fill":{},"line":{"color":"white","width":0.0},"values":["","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|"]}}];""" - |> chartGeneratedContains sequencePresentationTableChart + |> chartGeneratedContains Table.``Sequence representation table chart`` ); testCase "Sequence presentation table layout" ( fun () -> "var layout = {\"width\":650,\"title\":{\"text\":\"Sequence A\"}};" - |> chartGeneratedContains sequencePresentationTableChart + |> chartGeneratedContains Table.``Sequence representation table chart`` ); ] - -let heatmap1Chart = - let matrix = - [[1.;1.5;0.7;2.7]; - [2.;0.5;1.2;1.4]; - [0.1;2.6;2.4;3.0];] - - let rownames = ["p3";"p2";"p1"] - let colnames = ["Tp0";"Tp30";"Tp60";"Tp160"] - - let colorscaleValue = - StyleParam.Colorscale.Custom [(0.0,Color.fromString "#3D9970");(1.0,Color.fromString "#001f3f")] - - Chart.Heatmap( - zData = matrix, - colNames = colnames, - rowNames = rownames, - ColorScale=colorscaleValue, - ShowScale=true, - UseDefaults = false - ) - |> Chart.withSize(700,500) - |> Chart.withMarginSize(Left=200.) - -let heatmapStyledChart = - let matrix = - [[1.;1.5;0.7;2.7]; - [2.;0.5;1.2;1.4]; - [0.1;2.6;2.4;3.0];] - - let rownames = ["p3";"p2";"p1"] - let colnames = ["Tp0";"Tp30";"Tp60";"Tp160"] - - let colorscaleValue = - StyleParam.Colorscale.Custom [(0.0,Color.fromString "#3D9970");(1.0,Color.fromString "#001f3f")] - - Chart.Heatmap( - zData = matrix, - colNames = colnames, - rowNames = rownames, - ColorScale=colorscaleValue, - ShowScale=true, - UseDefaults = false - ) - |> Chart.withSize(700.,500.) - |> Chart.withMarginSize(Left=200.) - |> Chart.withColorBarStyle(TitleText = "Im the Colorbar") - -let annotatedheatmap = - Chart.AnnotatedHeatmap( - zData = [ - [1..5] - [6..10] - [11..15] - ], - annotationText = [ - ["1,1";"1,2";"1,3"] - ["2,1";"2,2";"2,3"] - ["3,1";"3,2";"3,3"] - ], - X = ["C1";"C2";"C3"], - Y = ["R1";"R2";"R3"], - ReverseYAxis = true, - UseDefaults = false - ) - [] let ``Heatmap charts`` = testList "SimpleCharts.Heatmap charts" [ testCase "Heatmap data" ( fun () -> """var data = [{"type":"heatmap","x":["Tp0","Tp30","Tp60","Tp160"],"y":["p3","p2","p1"],"z":[[1.0,1.5,0.7,2.7],[2.0,0.5,1.2,1.4],[0.1,2.6,2.4,3.0]],"colorscale":[[0.0,"#3D9970"],[1.0,"#001f3f"]],"showscale":true}];""" - |> chartGeneratedContains heatmap1Chart + |> chartGeneratedContains Heatmap.``simple heatmap with custom colorscale`` ); testCase "Heatmap layout" ( fun () -> "var layout = {\"width\":700,\"height\":500,\"margin\":{\"l\":200.0}};" - |> chartGeneratedContains heatmap1Chart + |> chartGeneratedContains Heatmap.``simple heatmap with custom colorscale`` ); testCase "Heatmap styled data" ( fun () -> """var data = [{"type":"heatmap","x":["Tp0","Tp30","Tp60","Tp160"],"y":["p3","p2","p1"],"z":[[1.0,1.5,0.7,2.7],[2.0,0.5,1.2,1.4],[0.1,2.6,2.4,3.0]],"colorscale":[[0.0,"#3D9970"],[1.0,"#001f3f"]],"showscale":true,"colorbar":{"title":{"text":"Im the Colorbar"}}}];""" - |> chartGeneratedContains heatmapStyledChart + |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` ); testCase "Heatmap styled layout" ( fun () -> "var layout = {\"width\":700,\"height\":500,\"margin\":{\"l\":200.0}};" - |> chartGeneratedContains heatmapStyledChart + |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` ); testCase "Annotated heatmap data" ( fun () -> """var data = [{"type":"heatmap","x":["C1","C2","C3"],"y":["R1","R2","R3"],"z":[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]}];""" - |> chartGeneratedContains annotatedheatmap + |> chartGeneratedContains AnnotatedHeatmap.``Simple annotated heatmap`` ); testCase "Annotated heatmap layout" ( fun () -> """var layout = {"yaxis":{"autorange":"reversed"},"annotations":[{"x":0,"y":0,"showarrow":false,"text":"1,1"},{"x":1,"y":0,"showarrow":false,"text":"1,2"},{"x":2,"y":0,"showarrow":false,"text":"1,3"},{"x":0,"y":1,"showarrow":false,"text":"2,1"},{"x":1,"y":1,"showarrow":false,"text":"2,2"},{"x":2,"y":1,"showarrow":false,"text":"2,3"},{"x":0,"y":2,"showarrow":false,"text":"3,1"},{"x":1,"y":2,"showarrow":false,"text":"3,2"},{"x":2,"y":2,"showarrow":false,"text":"3,3"}]};""" - |> chartGeneratedContains annotatedheatmap + |> chartGeneratedContains AnnotatedHeatmap.``Simple annotated heatmap`` ); ] - -let colors = [ - [[0 ;0 ;255]; [255;255;0 ]; [0 ;0 ;255]] - [[255;0 ;0 ]; [255;0 ;255]; [255;0 ;255]] - [[0 ;255;0 ]; [0 ;255;255]; [255;0 ;0 ]] -] - -let imageRawChart = - Chart.Image(Z=colors, UseDefaults = false) - |> Chart.withTitle "Image chart from raw color component arrays" - -let imageRawHSLChart = - Chart.Image(Z=colors, ColorModel=StyleParam.ColorModel.HSL, UseDefaults = false) - |> Chart.withTitle "HSL color model" - -let argbs = [ - [ColorKeyword.AliceBlue ; ColorKeyword.CornSilk ; ColorKeyword.LavenderBlush ] |> List.map ARGB.fromKeyword - [ColorKeyword.DarkGray ; ColorKeyword.Snow ; ColorKeyword.MidnightBlue ] |> List.map ARGB.fromKeyword - [ColorKeyword.LightSteelBlue; ColorKeyword.DarkKhaki; ColorKeyword.LightAkyBlue ] |> List.map ARGB.fromKeyword -] - -let imageARGBChart = - Chart.Image(z = argbs, UseDefaults = false) - |> Chart.withTitle "ARGB image chart" - -open System.IO - -let imageSource = $@"{__SOURCE_DIRECTORY__}../../../../../docs/img/logo.png" - -let base64String = - imageSource - |> File.ReadAllBytes - |> System.Convert.ToBase64String - -let logoImageChart = - Chart.Image( - Source=($"data:image/jpg;base64,{base64String}"), - UseDefaults = false - ) - |> Chart.withTitle "This is Plotly.NET:" - [] let ``Image charts`` = testList "SimpleCharts.Image charts" [ testCase "Image raw data" ( fun () -> """var data = [{"type":"image","z":[[[0,0,255],[255,255,0],[0,0,255]],[[255,0,0],[255,0,255],[255,0,255]],[[0,255,0],[0,255,255],[255,0,0]]]}];""" - |> chartGeneratedContains imageRawChart + |> chartGeneratedContains Image.``Raw color component image chart`` ); testCase "Image raw layout" ( fun () -> """var layout = {"title":{"text":"Image chart from raw color component arrays"}};""" - |> chartGeneratedContains imageRawChart + |> chartGeneratedContains Image.``Raw color component image chart`` ); testCase "Image raw hsl data" ( fun () -> """var data = [{"type":"image","z":[[[0,0,255],[255,255,0],[0,0,255]],[[255,0,0],[255,0,255],[255,0,255]],[[0,255,0],[0,255,255],[255,0,0]]],"colormodel":"hsl"}];""" - |> chartGeneratedContains imageRawHSLChart + |> chartGeneratedContains Image.``HSL image chart`` ); testCase "Image raw hsl layout" ( fun () -> """var layout = {"title":{"text":"HSL color model"}};""" - |> chartGeneratedContains imageRawHSLChart + |> chartGeneratedContains Image.``HSL image chart`` ); testCase "Image ARGB data" ( fun () -> """var data = [{"type":"image","z":[[[240,248,255,255],[255,248,220,255],[255,240,245,255]],[[169,169,169,255],[255,250,250,255],[25,25,112,255]],[[176,196,222,255],[189,183,107,255],[135,206,250,255]]],"colormodel":"rgba"}];""" - |> chartGeneratedContains imageARGBChart + |> chartGeneratedContains Image.``ARGB image chart`` ); testCase "Image ARGB layout" ( fun () -> """var layout = {"title":{"text":"ARGB image chart"}};""" - |> chartGeneratedContains imageARGBChart + |> chartGeneratedContains Image.``ARGB image chart`` ); testCase "Image base64 data" ( fun () -> """var data = [{"type":"image","source":"data:image/jpg;base64,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RAFgOgIKUERA4XBCClBCSAFgSr+4egAA7ElAAYoIKIF//Zf/+rurN4zmL7/76g/btn139Q5geb/etu2nb374+durhwDAnkQUAKYhoABFBJTAj19//5v//ad//I9vfvj5N1dvGY2QApQQUgCYjogCwBQEFKCIgBL48evvf7Nt25//75e//Idt2/4spNxPSAFKCCkATEVEAWB4AgpQREAJPAeUbdt+9XT61SakRIQUoISQAsA0RBQAhiagAEUElMALAeWZkBISUoASQgoAUxBRABiWgAIUEVACbwSUZ0JKSEgBSggpAAxPRAFgSAIKUERACdwQUJ4JKSEhBSghpAAwNBEFgOEIKEARASVwR0B5JqSEhBSghJACwLBEFACGIqAARQSUQBBQngkpISEFKCGkADAkEQWAYQgoQBEBJfBAQHkmpISEFKCEkALAcEQUAIYgoABFBJTADgHlmZASElKAEkIKAEMRUQCoJ6AARQSUwI4B5ZmQEhJSgBJCCgDDEFEAqCagAEUElMABAeWZkBISUoASQgoAQxBRAKgloABFBJTAgQHlmZASElKAEkIKAPVEFAAqCShAEQElcEJAeSakhIQUoISQAkA1EQWAOgIKUERACZwYUJ4JKSEhBSghpABQS0QBoIqAAhQRUAIXBJRnQkpISAFKCCkAVBJRAKghoABFBJTAhQHlmZASElKAEkIKAHVEFAAqCChAEQElUBBQngkpISEFKCGkAFBFRAHgcgIKUERACRQFlGdCSkhIAUoIKQDUEFEAuJSAAhQRUAKFAeWZkBISUoASQgoAFUQUAC4joABFBJRAcUB5JqSEhBSghJACwOVEFAAuIaAARQSUwAAB5ZmQEhJSgBJCCgCXElEAOJ2AAhQRUAIDBZRnQkpISAFKCCkAXEZEAeBUAgpQREAJDBhQngkpISEFKCGkAHAJEQWA0wgoQBEBJTBwQHkmpISEFKCEkALA6UQUAE4hoABFBJTABAHlmZASElKAEkIKAKcSUQA4nIACFBFQAhMFlGdCSkhIAUoIKQCcRkQB4FACClBEQAlMGFCeCSkhIQUoIaQAcAoRBYDDCChAEQElMHFAeSakhIQUoISQAsDhRBQADiGgAEUElMACAeWZkBISUoASQgoAhxJRANidgAIUEVACCwWUZ0JKSEgBSggpABxGRAFgVwIKUERACSwYUJ4JKSEh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"}];""" - |> chartGeneratedContains logoImageChart + |> chartGeneratedContains Image.``Image chart from base64 string`` ); testCase "Image base64 layout" ( fun () -> """var layout = {"title":{"text":"This is Plotly.NET:"}};""" - |> chartGeneratedContains logoImageChart + |> chartGeneratedContains Image.``Image chart from base64 string`` ); From 3d5cdd89ed0649183e767f4049fa31e2dfba3ebe Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 16 Apr 2023 11:22:51 +0200 Subject: [PATCH 14/26] Move test utils into TestBase project --- .../FSharpTestBase/FSharpTestBase.fsproj | 6 ++ .../TestCharts/Chart2DTestCharts.fs | 2 +- .../TestCharts/ChartDomainTestCharts.fs | 1 - tests/Common/FSharpTestBase/TestUtils.fs | 63 +++++++++++++++---- tests/CoreTests/CoreTests/CoreTests.fsproj | 1 - .../CoreTests/HTMLCodegen/SimpleCharts.fs | 2 - tests/CoreTests/CoreTests/TestUtils.fs | 48 -------------- 7 files changed, 58 insertions(+), 65 deletions(-) delete mode 100644 tests/CoreTests/CoreTests/TestUtils.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index 42b590f12..da47f705a 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -17,6 +17,12 @@ + + + + + + diff --git a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs index 458d43cb8..818e0060f 100644 --- a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs @@ -283,7 +283,7 @@ module Image = |> Chart.withTitle "ARGB image chart" let ``Image chart from base64 string`` = - let base64String = TestUtils.getLogoPNG() + let base64String = TestUtils.HtmlCodegen.getLogoPNG() Chart.Image( Source=($"data:image/jpg;base64,{base64String}"), UseDefaults = false diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs index 9f1082b53..0177ae216 100644 --- a/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs @@ -2,7 +2,6 @@ open Plotly.NET - module Pie = let ``Simple pie chart`` = diff --git a/tests/Common/FSharpTestBase/TestUtils.fs b/tests/Common/FSharpTestBase/TestUtils.fs index b66c39648..ebd0f0ac1 100644 --- a/tests/Common/FSharpTestBase/TestUtils.fs +++ b/tests/Common/FSharpTestBase/TestUtils.fs @@ -2,16 +2,55 @@ open System.Reflection open System.IO +open Expecto +open Plotly.NET +open DynamicObj +open Newtonsoft.Json + +module HtmlCodegen = + + let getLogoPNG() = + let assembly = Assembly.GetExecutingAssembly() + use str = assembly.GetManifestResourceStream($"FSharpTestBase.logo.png") + use r = new BinaryReader(str) + r.ReadBytes(int(str.Length)) + |> System.Convert.ToBase64String + + let getFullPlotlyJS() = + let assembly = Assembly.GetExecutingAssembly() + use str = assembly.GetManifestResourceStream($"FSharpTestBase.plotly-{Globals.PLOTLYJS_VERSION}.min.js") + use r = new StreamReader(str) + r.ReadToEnd() + + let substringIsInChart chart htmlizer substring = + chart + |> htmlizer + |> Expect.stringContains + |> (fun expecting -> expecting substring $"Should've contained {substring}") + + + let substringListIsInChart chart htmlizer substringList = + for substring in substringList do + substringIsInChart chart htmlizer substring + + + let chartGeneratedContains chart substring = + substringIsInChart chart GenericChart.toChartHTML substring + substringIsInChart chart GenericChart.toEmbeddedHTML substring + + + let chartGeneratedContainsList chart substringList = + for substring in substringList do + chartGeneratedContains chart substring + + let emptyLayout chart = + "var layout = {};" |> chartGeneratedContains chart + +module Objects = + + let jsonFieldIsSetWith fieldName expected (object:#DynamicObj) = + Expect.equal + ((object :> DynamicObj)?($"{fieldName}") |> JsonConvert.SerializeObject) + expected + ($"Field `{fieldName}` not set correctly in serialized dynamic object.") -let getLogoPNG() = - let assembly = Assembly.GetExecutingAssembly() - use str = assembly.GetManifestResourceStream($"FSharpTestBase.logo.png") - use r = new BinaryReader(str) - r.ReadBytes(int(str.Length)) - |> System.Convert.ToBase64String - -let getFullPlotlyJS() = - let assembly = Assembly.GetExecutingAssembly() - use str = assembly.GetManifestResourceStream($"FSharpTestBase.plotly-{Globals.PLOTLYJS_VERSION}.min.js") - use r = new StreamReader(str) - r.ReadToEnd() diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index bd3c31a49..2aee9fb13 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -10,7 +10,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs index 45496bc1a..5c5833da9 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs @@ -229,6 +229,4 @@ let ``Image charts`` = """var layout = {"title":{"text":"This is Plotly.NET:"}};""" |> chartGeneratedContains Image.``Image chart from base64 string`` ); - - ] \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/TestUtils.fs b/tests/CoreTests/CoreTests/TestUtils.fs deleted file mode 100644 index 5354c37af..000000000 --- a/tests/CoreTests/CoreTests/TestUtils.fs +++ /dev/null @@ -1,48 +0,0 @@ -module TestUtils - -open Expecto -open DynamicObj -open Newtonsoft.Json -open Plotly.NET.GenericChart -open System.Reflection -open System.IO - -module HtmlCodegen = - - let getFullPlotlyJS() = - let assembly = Assembly.GetExecutingAssembly() - use str = assembly.GetManifestResourceStream($"CoreTests.plotly-{Globals.PLOTLYJS_VERSION}.min.js") - use r = new StreamReader(str) - r.ReadToEnd() - - let substringIsInChart chart htmlizer substring = - chart - |> htmlizer - |> Expect.stringContains - |> (fun expecting -> expecting substring $"Should've contained {substring}") - - - let substringListIsInChart chart htmlizer substringList = - for substring in substringList do - substringIsInChart chart htmlizer substring - - - let chartGeneratedContains chart substring = - substringIsInChart chart toChartHTML substring - substringIsInChart chart toEmbeddedHTML substring - - - let chartGeneratedContainsList chart substringList = - for substring in substringList do - chartGeneratedContains chart substring - - let emptyLayout chart = - "var layout = {};" |> chartGeneratedContains chart - -module Objects = - - let jsonFieldIsSetWith fieldName expected (object:#DynamicObj) = - Expect.equal - ((object :> DynamicObj)?($"{fieldName}") |> JsonConvert.SerializeObject) - expected - ($"Field `{fieldName}` not set correctly in serialized dynamic object.") From c849e7890ba28c3331ee33fd65091e725e47d8c8 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 16 Apr 2023 12:15:57 +0200 Subject: [PATCH 15/26] Move SimpleCharts tests into the respective ChartAPI based modules --- tests/CoreTests/CoreTests/CoreTests.fsproj | 4 +- .../CoreTests/HTMLCodegen/Chart2D.fs | 324 ++++++++++++++++++ .../CoreTests/HTMLCodegen/ChartDomain.fs | 148 ++++++++ .../CoreTests/HTMLCodegen/SimpleCharts.fs | 232 ------------- 4 files changed, 473 insertions(+), 235 deletions(-) create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 2aee9fb13..8ae0382f2 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -12,6 +12,7 @@ + @@ -27,7 +28,6 @@ - @@ -42,8 +42,6 @@ - - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs index f92b300bb..cb9b80809 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs @@ -68,3 +68,327 @@ module Spline = ) ] ] + +module Bubble = + [] + let ``Bubble chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Bubble" [ + testCase "Bubble data" ( fun () -> + """var data = [{"type":"scatter","mode":"markers","x":[2,4,6],"y":[4,1,6],"marker":{"size":[19,26,55]},"line":{}}];""" + |> chartGeneratedContains Bubble.``Simple bubble chart`` + ); + testCase "Bubble layout" ( fun () -> + emptyLayout Bubble.``Simple bubble chart`` + ); + ] + ] + +module Range = + [] + let ``Range chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Range" [ + testCase "Range plot data" ( fun () -> + """var data = [{"type":"scatter","name":"lower","showlegend":true,"legendgroup":"Range","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[1.0244410755226578,1.1291130737537114,4.930085632917511,1.4292117752736488,2.5179894182449156,2.3470285278032668,1.5358344954605374,1.4046562835130172,2.6874669190437843,0.7493837949584163],"fillcolor":"lightblue","marker":{"color":"lightblue"}},{"type":"scatter","name":"upper","showlegend":true,"legendgroup":"Range","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.338369840913624,1.7844184475412679,5.2629626417825754,2.125375844363764,3.4634618528482792,3.4283738280312965,2.6463105539541276,2.4505998873853123,4.096133255211699,1.1174599459010455],"fill":"tonexty","fillcolor":"lightblue","marker":{"color":"lightblue"}},{"type":"scatter","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"color":"grey"},"line":{},"legendgroup":"Range","legendgrouptitle":{"text":"Range"}}];""" + |> chartGeneratedContains Range.``Styled range chart`` + ); + testCase "Range plot layout" ( fun () -> + emptyLayout Range.``Styled range chart`` + ); + ] + ] + +module Area = + [] + let ``Area chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Area" [ + testCase "Simple area data" ( fun () -> + """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"marker":{},"line":{},"fill":"tozeroy","fillpattern":{}}];""" + |> chartGeneratedContains Area.``Simple area chart`` + ); + testCase "Simple area layout" ( fun () -> + emptyLayout Area.``Simple area chart`` + ); + ] + ] + +module SplineArea = + [] + let ``SplineArea chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "SplineArea" [ + testCase "SplineArea data" ( fun () -> + """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"marker":{},"line":{"shape":"spline"},"fill":"tozeroy","fillpattern":{}}];""" + |> chartGeneratedContains SplineArea.``Simple spline area chart`` + ); + testCase "SplineArea layout" ( fun () -> + emptyLayout SplineArea.``Simple spline area chart`` + ); + ] + ] + +module StackedArea = + [] + let ``StackedArea chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedArea" [ + testCase "Stacked area data" ( fun () -> + """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"stackgroup":"stackedarea","marker":{},"line":{},"fill":"tonexty","fillpattern":{}},{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,5.5,4.5,7.5,2.5,5.0,7.5,5.0,2.5,5.0],"stackgroup":"stackedarea","marker":{},"line":{},"fill":"tonexty","fillpattern":{}}];""" + |> chartGeneratedContains StackedArea.``Two stacked areas chart`` + ); + testCase "Stacked area layout" ( fun () -> + emptyLayout StackedArea.``Two stacked areas chart`` + ); + ] + ] + +module Funnel = + [] + let ``Funnel chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Funnel" [ + ] + ] + +module StackedFunnel = + [] + let ``StackedFunnel chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedFunnel" [ + ] + ] + +module Waterfall = + [] + let ``Waterfall chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Waterfall" [ + ] + ] + +module Bar = + [] + let ``Bar chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Bar" [ + testCase "Bar chart data" ( fun () -> + """var data = [{"type":"bar","x":[20,14,23],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}}];""" + |> chartGeneratedContains Bar.``Simple bar chart`` + ); + testCase "Bar chart layout" ( fun () -> + emptyLayout Bar.``Simple bar chart`` + ); + ] + ] + +module StackedBar = + [] + let ``StackedBar chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedBar" [ + testCase "Stacked bar data" ( fun () -> + """var data = [{"type":"bar","name":"old","x":[20,14,23],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}},{"type":"bar","name":"new","x":[8,21,13],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}}];""" + |> chartGeneratedContains Bar.``Two stacked bars chart`` + ); + testCase "Stacked bar layout" ( fun () -> + "var layout = {\"barmode\":\"stack\"};" + |> chartGeneratedContains Bar.``Two stacked bars chart`` + ); + ] + ] + +module Column = + [] + let ``Column chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Column" [ + testCase "Column chart data" ( fun () -> + """var data = [{"type":"bar","x":["Product A","Product B","Product C"],"y":[20,14,23],"orientation":"v","marker":{"pattern":{}}}];""" + |> chartGeneratedContains Column.``Simple column chart`` + ); + testCase "Column chart layout" ( fun () -> + emptyLayout Column.``Simple column chart`` + ); + ] + ] + +module StackedColumn = + [] + let ``StackedColumn chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "StackedColumn" [ + testCase "Stacked column data" ( fun () -> + """var data = [{"type":"bar","name":"old","x":["Product A","Product B","Product C"],"y":[20,14,23],"orientation":"v","marker":{"pattern":{}}},{"type":"bar","name":"new","x":["Product A","Product B","Product C"],"y":[8,21,13],"orientation":"v","marker":{"pattern":{}}}];""" + |> chartGeneratedContains Column.``Two stacked columns chart`` + ); + testCase "Stacked column layout" ( fun () -> + "var layout = {\"barmode\":\"stack\"};" + |> chartGeneratedContains Column.``Two stacked columns chart`` + ); + ] + ] + +module Histogram = + [] + let ``Histogram chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Histogram" [ + ] + ] + +module Histogram2D = + [] + let ``Histogram2D chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Histogram2D" [ + ] + ] + +module BoxPlot = + [] + let ``BoxPlot chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "BoxPlot" [ + ] + ] + +module Violin = + [] + let ``Violin chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Violin" [ + ] + ] + +module Histogram2DContour = + [] + let ``Histogram2DContour chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Histogram2DContour" [ + ] + ] + +module Heatmap = + [] + let ``Heatmap chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Heatmap" [ + testCase "Heatmap data" ( fun () -> + """var data = [{"type":"heatmap","x":["Tp0","Tp30","Tp60","Tp160"],"y":["p3","p2","p1"],"z":[[1.0,1.5,0.7,2.7],[2.0,0.5,1.2,1.4],[0.1,2.6,2.4,3.0]],"colorscale":[[0.0,"#3D9970"],[1.0,"#001f3f"]],"showscale":true}];""" + |> chartGeneratedContains Heatmap.``simple heatmap with custom colorscale`` + ); + testCase "Heatmap layout" ( fun () -> + "var layout = {\"width\":700,\"height\":500,\"margin\":{\"l\":200.0}};" + |> chartGeneratedContains Heatmap.``simple heatmap with custom colorscale`` + ); + testCase "Heatmap styled data" ( fun () -> + """var data = [{"type":"heatmap","x":["Tp0","Tp30","Tp60","Tp160"],"y":["p3","p2","p1"],"z":[[1.0,1.5,0.7,2.7],[2.0,0.5,1.2,1.4],[0.1,2.6,2.4,3.0]],"colorscale":[[0.0,"#3D9970"],[1.0,"#001f3f"]],"showscale":true,"colorbar":{"title":{"text":"Im the Colorbar"}}}];""" + |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` + ); + testCase "Heatmap styled layout" ( fun () -> + "var layout = {\"width\":700,\"height\":500,\"margin\":{\"l\":200.0}};" + |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` + ); + ] + ] + +module AnnotatedHeatmap = + [] + let ``AnnotatedHeatmap chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "AnnotatedHeatmap" [ + testCase "Annotated heatmap data" ( fun () -> + """var data = [{"type":"heatmap","x":["C1","C2","C3"],"y":["R1","R2","R3"],"z":[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]}];""" + |> chartGeneratedContains AnnotatedHeatmap.``Simple annotated heatmap`` + ); + testCase "Annotated heatmap layout" ( fun () -> + """var layout = {"yaxis":{"autorange":"reversed"},"annotations":[{"x":0,"y":0,"showarrow":false,"text":"1,1"},{"x":1,"y":0,"showarrow":false,"text":"1,2"},{"x":2,"y":0,"showarrow":false,"text":"1,3"},{"x":0,"y":1,"showarrow":false,"text":"2,1"},{"x":1,"y":1,"showarrow":false,"text":"2,2"},{"x":2,"y":1,"showarrow":false,"text":"2,3"},{"x":0,"y":2,"showarrow":false,"text":"3,1"},{"x":1,"y":2,"showarrow":false,"text":"3,2"},{"x":2,"y":2,"showarrow":false,"text":"3,3"}]};""" + |> chartGeneratedContains AnnotatedHeatmap.``Simple annotated heatmap`` + ); + ] + ] + +module Image = + [] + let ``Image chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Image" [ + testCase "Image raw data" ( fun () -> + """var data = [{"type":"image","z":[[[0,0,255],[255,255,0],[0,0,255]],[[255,0,0],[255,0,255],[255,0,255]],[[0,255,0],[0,255,255],[255,0,0]]]}];""" + |> chartGeneratedContains Image.``Raw color component image chart`` + ); + testCase "Image raw layout" ( fun () -> + """var layout = {"title":{"text":"Image chart from raw color component arrays"}};""" + |> chartGeneratedContains Image.``Raw color component image chart`` + ); + + testCase "Image raw hsl data" ( fun () -> + """var data = [{"type":"image","z":[[[0,0,255],[255,255,0],[0,0,255]],[[255,0,0],[255,0,255],[255,0,255]],[[0,255,0],[0,255,255],[255,0,0]]],"colormodel":"hsl"}];""" + |> chartGeneratedContains Image.``HSL image chart`` + ); + testCase "Image raw hsl layout" ( fun () -> + """var layout = {"title":{"text":"HSL color model"}};""" + |> chartGeneratedContains Image.``HSL image chart`` + ); + + testCase "Image ARGB data" ( fun () -> + """var data = [{"type":"image","z":[[[240,248,255,255],[255,248,220,255],[255,240,245,255]],[[169,169,169,255],[255,250,250,255],[25,25,112,255]],[[176,196,222,255],[189,183,107,255],[135,206,250,255]]],"colormodel":"rgba"}];""" + |> chartGeneratedContains Image.``ARGB image chart`` + ); + testCase "Image ARGB layout" ( fun () -> + """var layout = {"title":{"text":"ARGB image chart"}};""" + |> chartGeneratedContains Image.``ARGB image chart`` + ); + + testCase "Image base64 data" ( fun () -> + """var data = [{"type":"image","source":"data:image/jpg;base64,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RAFgOgIKUERA4XBCClBCSAFgSr+4egAA7ElAAYoIKIF//Zf/+rurN4zmL7/76g/btn139Q5geb/etu2nb374+durhwDAnkQUAKYhoABFBJTAj19//5v//ad//I9vfvj5N1dvGY2QApQQUgCYjogCwBQEFKCIgBL48evvf7Nt25//75e//Idt2/4spNxPSAFKCCkATEVEAWB4AgpQREAJPAeUbdt+9XT61SakRIQUoISQAsA0RBQAhiagAEUElMALAeWZkBISUoASQgoAUxBRABiWgAIUEVACbwSUZ0JKSEgBSggpAAxPRAFgSAIKUERACdwQUJ4JKSEhBSghpAAwNBEFgOEIKEARASVwR0B5JqSEhBSghJACwLBEFACGIqAARQSUQBBQngkpISEFKCGkADAkEQWAYQgoQBEBJfBAQHkmpISEFKCEkALAcEQUAIYgoABFBJTADgHlmZASElKAEkIKAEMRUQCoJ6AARQSUwI4B5ZmQEhJSgBJCCgDDEFEAqCagAEUElMABAeWZkBISUoASQgoAQxBRAKgloABFBJTAgQHlmZASElKAEkIKAPVEFAAqCShAEQElcEJAeSakhIQUoISQAkA1EQWAOgIKUERACZwYUJ4JKSEhBSghpABQS0QBoIqAAhQRUAIXBJRnQkpISAFKCCkAVBJRAKghoABFBJTAhQHlmZASElKAEkIKAHVEFAAqCChAEQElUBBQngkpISEFKCGkAFBFRAHgcgIKUERACRQFlGdCSkhIAUoIKQDUEFEAuJSAAhQRUAKFAeWZkBISUoASQgoAFUQUAC4joABFBJRAcUB5JqSEhBSghJACwOVEFAAuIaAARQSUwAAB5ZmQEhJSgBJCCgCXElEAOJ2AAhQRUAIDBZRnQkpISAFKCCkAXEZEAeBUAgpQREAJDBhQngkpISEFKCGkAHAJEQWA0wgoQBEBJTBwQHkmpISEFKCEkALA6UQUAE4hoABFBJTABAHlmZASElKAEkIKAKcSUQA4nIACFBFQAhMFlGdCSkhIAUoIKQCcRkQB4FACClBEQAlMGFCeCSkhIQUoIaQAcAoRBYDDCChAEQElMHFAeSakhIQUoISQAsDhRBQADiGgAEUElMACAeWZkBISUoASQgoAhxJRANidgAIUEVACCwWUZ0JKSEgBSggpABxGRAFgVwIKUERACSwYUJ4JKSEh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"}];""" + |> chartGeneratedContains Image.``Image chart from base64 string`` + ); + testCase "Image base64 layout" ( fun () -> + """var layout = {"title":{"text":"This is Plotly.NET:"}};""" + |> chartGeneratedContains Image.``Image chart from base64 string`` + ); + ] + ] + +module Contour = + [] + let ``Contour chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Contour" [ + ] + ] +module OHLC = + [] + let ``OHLC chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "OHLC" [ + ] + ] + +module Candlestick = + [] + let ``Candlestick chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Candlestick" [ + ] + ] + +module Splom = + [] + let ``Splom chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "Splom" [ + ] + ] + +module PointDensity = + [] + let ``PointDensity chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart2D" [ + testList "PointDensity" [ + ] + ] + diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs new file mode 100644 index 000000000..55a6bcf61 --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs @@ -0,0 +1,148 @@ +module CoreTests.HTMLCodegen.ChartDomain + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +open ChartDomainTestCharts + +module Pie = + [] + let ``Pie chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Pie" [ + testCase "Pie data" ( fun () -> + """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"marker":{"line":{}}}];""" + |> chartGeneratedContains Pie.``Simple pie chart`` + ); + testCase "Pie layout" ( fun () -> + emptyLayout Pie.``Simple pie chart`` + ); + testCase "Pie styled data" ( fun () -> + """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"pull":[0.0,0.3,0.0],"text":["Some","More","Stuff"],"textposition":["inside","outside","inside"],"marker":{"colors":["rgba(0, 255, 255, 1.0)","rgba(250, 128, 114, 1.0)","rgba(210, 180, 140, 1.0)"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":2.0}},"rotation":45.0}];""" + |> chartGeneratedContains Pie.``Styled pie chart`` + ); + testCase "Pie styled layout" ( fun () -> + emptyLayout Pie.``Styled pie chart`` + ); + ] + ] + +module Doughnut = + [] + let ``Doughnut chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Doughnut" [ + testCase "Doughnut data" ( fun () -> + """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"text":["Residential","Non-Residential","Utility"],"marker":{"line":{}},"hole":0.3}];""" + |> chartGeneratedContains Doughnut.``Simple doughnut chart`` + ); + testCase "Doughnut layout" ( fun () -> + emptyLayout Doughnut.``Simple doughnut chart`` + ); + ] + ] + +module FunnelArea = + [] + let ``FunnelArea chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "FunnelArea" [ + ] + ] + +module Sunburst = + [] + let ``Sunburst chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Sunburst" [ + ] + ] + +module Treemap = + [] + let ``Treemap chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Treemap" [ + ] + ] + +module ParralelCoord = + [] + let ``ParralelCoord chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "ParralelCoord" [ + ] + ] + +module ParralelCategories = + [] + let ``ParralelCategories chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "ParralelCategories" [ + ] + ] + +module Sankey = + [] + let ``Sankey chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Sankey" [ + ] + ] + +module Table = + [] + let ``Table chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Table" [ + testCase "First table data" ( fun () -> + """var data = [{"type":"table","cells":{"fill":{},"line":{},"values":[["0","1"],["I","little"],["am","example"],["a","!"]]},"header":{"fill":{},"line":{},"values":["RowIndex","A","simple","table"]}}];""" + |> chartGeneratedContains Table.``Simple table chart`` + ); + testCase "First table layout" ( fun () -> + emptyLayout Table.``Simple table chart`` + ); + testCase "Styled table data" ( fun () -> + """var data = [{"type":"table","columnorder":[1,2,3,4],"columnwidth":[70.0,50.0,100.0,70.0],"cells":{"align":["left","center","right"],"fill":{"color":["#deebf7","lightgrey","#deebf7","lightgrey"]},"line":{},"values":[["0","1"],["I","little"],["am","example"],["a","!"]]},"header":{"align":"center","fill":{"color":"#45546a"},"height":30,"line":{"color":"black","width":2.0},"values":["RowIndex","A","simple","table"]}}];""" + |> chartGeneratedContains Table.``Styled table chart`` + ); + testCase "Styled table layout" ( fun () -> + emptyLayout Table.``Styled table chart`` + ); + testCase "Color dependent chart data" ( fun () -> + """var data = [{"type":"table","cells":{"fill":{"color":[["white","white","white","white","white","white","white"],["rgba(255, 255, 0, 1.0)","rgba(255, 245, 10, 1.0)","rgba(255, 204, 51, 1.0)","rgba(255, 204, 51, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 26, 229, 1.0)"],["rgba(255, 250, 5, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 174, 81, 1.0)","rgba(255, 215, 40, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 102, 153, 1.0)"],["rgba(255, 240, 15, 1.0)","rgba(255, 51, 204, 1.0)","rgba(255, 164, 91, 1.0)","rgba(255, 179, 76, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 164, 91, 1.0)","rgba(255, 153, 102, 1.0)"],["rgba(255, 245, 10, 1.0)","rgba(255, 0, 255, 1.0)","rgba(255, 143, 112, 1.0)","rgba(255, 220, 35, 1.0)","rgba(255, 159, 96, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 128, 127, 1.0)"]]},"line":{},"values":[[10004.0,10001.0,10005.0,10006.0,10007.0,10002.0,10003.0],[0.0,0.2,1.0,1.0,2.0,2.1,4.5],[0.1,2.0,1.6,0.8,2.0,2.0,3.0],[0.3,4.0,1.8,1.5,2.1,1.8,2.0],[0.2,5.0,2.2,0.7,1.9,2.1,2.5]]},"header":{"fill":{},"line":{},"values":["Identifier","T0","T1","T2","T3"]}}];""" + |> chartGeneratedContains Table.``Cell color dependent table chart`` + ); + testCase "Color dependent chart layout" ( fun () -> + emptyLayout Table.``Cell color dependent table chart`` + ); + testCase "Sequence presentation table data" ( fun () -> + """var data = [{"type":"table","columnwidth":[50.0,10.0],"cells":{"align":["right","center"],"fill":{"color":[["white","white","white","white","white"],["#5050FF","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E00000","#E6E600","#E00000","white"],["#00C000","#00C000","#E00000","#00C000","white"],["#5050FF","#E6E600","#00C000","#E6E600","white"],["#00C000","#E00000","#5050FF","#E00000","white"],["#5050FF","#00C000","#E6E600","#00C000","white"],["#E00000","#5050FF","#5050FF","#5050FF","white"],["#00C000","#E6E600","#00C000","#E6E600","white"],["#E6E600","#5050FF","#5050FF","#5050FF","white"],["#E00000","#00C000","#E00000","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#5050FF","#E00000","#E6E600","#E00000","white"],["#00C000","#00C000","#E00000","#E00000","white"],["#5050FF","#E6E600","#00C000","#00C000","white"],["#E00000","#E00000","#5050FF","#E6E600","white"],["#E6E600","#00C000","#E6E600","#5050FF","white"],["#00C000","#5050FF","#5050FF","#00C000","white"],["#5050FF","#E6E600","#00C000","#5050FF","white"],["#E6E600","#5050FF","#5050FF","#E00000","white"],["#5050FF","#00C000","#00C000","#00C000","white"],["#00C000","#5050FF","#5050FF","#E6E600","white"],["#5050FF","#00C000","#E6E600","#E00000","white"],["#E00000","#E6E600","#5050FF","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E6E600","#5050FF","#E6E600","white"],["#E00000","#5050FF","#E00000","#5050FF","white"],["#00C000","#00C000","#00C000","#00C000","white"],["#5050FF","#5050FF","#E6E600","#5050FF","white"],["#E6E600","#E00000","#E00000","#E00000","white"],["#5050FF","#E00000","#00C000","#00C000","white"],["#00C000","#00C000","#5050FF","#E6E600","white"],["#5050FF","#E6E600","#E6E600","#E00000","white"],["#E00000","#00C000","#5050FF","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E6E600","#5050FF","#E6E600","white"],["#E00000","#5050FF","#E00000","#5050FF","white"],["#00C000","#00C000","#E00000","#00C000","white"],["#5050FF","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E00000","#E6E600","#E00000","white"],["#5050FF","#00C000","#5050FF","#E00000","white"],["#00C000","#E6E600","#E6E600","#00C000","white"],["#5050FF","#E00000","#5050FF","#E6E600","white"],["#E00000","#00C000","#00C000","white"],["#E00000","#5050FF","#5050FF","white"],["#00C000","#00C000","#5050FF","white"],["#5050FF","#5050FF","#00C000","white"],["#E6E600","#5050FF","#5050FF","white"],["#5050FF","#00C000","#E00000","white"],["#00C000","#5050FF","#00C000","white"],["#5050FF","#E00000","#E6E600","white"],["#E00000","#00C000","#E00000","white"],["#E6E600","#E6E600","#00C000","white"],["#E00000","#E00000","#5050FF","white"],["#00C000","#00C000","#E6E600","white"],["#E6E600","#5050FF","#5050FF","white"],["#00C000","#E6E600","#00C000","white"],["#5050FF","#5050FF","#5050FF","white"],["#E6E600","#00C000","#E6E600","white"],["#5050FF","#5050FF","#5050FF","white"],["#00C000","#E00000","#00C000","white"]]},"height":20,"line":{"color":"white","width":0.0},"values":[["0","60","120","180"],["A","A","G","A"],["T","C","T","C"],["G","G","C","G"],["A","T","G","T"],["G","C","A","C"],["A","G","T","G"],["C","A","A","A"],["G","T","G","T"],["T","A","A","A"],["C","G","C","G"],["G","A","G","A"],["A","C","T","C"],["G","G","C","C"],["A","T","G","G"],["C","C","A","T"],["T","G","T","A"],["G","A","A","G"],["A","T","G","A"],["T","A","A","C"],["A","G","G","G"],["G","A","A","T"],["A","G","T","C"],["C","T","A","G"],["G","A","G","A"],["T","T","A","T"],["C","A","C","A"],["G","G","G","G"],["A","A","T","A"],["T","C","C","C"],["A","C","G","G"],["G","G","A","T"],["A","T","T","C"],["C","G","A","G"],["G","A","G","A"],["T","T","A","T"],["C","A","C","A"],["G","G","C","G"],["A","A","G","A"],["T","C","T","C"],["A","G","A","C"],["G","T","T","G"],["A","C","A","T"],["C","G","G"],["C","A","A"],["G","G","A"],["A","A","G"],["T","A","A"],["A","G","C"],["G","A","G"],["A","C","T"],["C","G","C"],["T","T","G"],["C","C","A"],["G","G","T"],["T","A","A"],["G","T","G"],["A","A","A"],["T","G","T"],["A","A","A"],["G","C","G"]]},"header":{"fill":{},"line":{"color":"white","width":0.0},"values":["","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|"]}}];""" + |> chartGeneratedContains Table.``Sequence representation table chart`` + ); + testCase "Sequence presentation table layout" ( fun () -> + "var layout = {\"width\":650,\"title\":{\"text\":\"Sequence A\"}};" + |> chartGeneratedContains Table.``Sequence representation table chart`` + ); + ] + ] + +module Indicator = + [] + let ``Indicator chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Indicator" [ + ] + ] + +module Icicle = + [] + let ``Icicle chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartDomain" [ + testList "Icicle" [ + ] + ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs deleted file mode 100644 index 5c5833da9..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/SimpleCharts.fs +++ /dev/null @@ -1,232 +0,0 @@ -module Tests.SimpleCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.StyleParam - -open TestUtils.HtmlCodegen - -open Chart2DTestCharts -open ChartDomainTestCharts - -[] -let ``Bar and column charts`` = - testList "SimpleCharts.Bar and column charts" [ - testCase "Column chart data" ( fun () -> - """var data = [{"type":"bar","x":["Product A","Product B","Product C"],"y":[20,14,23],"orientation":"v","marker":{"pattern":{}}}];""" - |> chartGeneratedContains Column.``Simple column chart`` - ); - testCase "Column chart layout" ( fun () -> - emptyLayout Column.``Simple column chart`` - ); - testCase "Bar chart data" ( fun () -> - """var data = [{"type":"bar","x":[20,14,23],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}}];""" - |> chartGeneratedContains Bar.``Simple bar chart`` - ); - testCase "Bar chart layout" ( fun () -> - emptyLayout Bar.``Simple bar chart`` - ); - testCase "Stacked bar data" ( fun () -> - """var data = [{"type":"bar","name":"old","x":[20,14,23],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}},{"type":"bar","name":"new","x":[8,21,13],"y":["Product A","Product B","Product C"],"orientation":"h","marker":{"pattern":{}}}];""" - |> chartGeneratedContains Bar.``Two stacked bars chart`` - ); - testCase "Stacked bar layout" ( fun () -> - "var layout = {\"barmode\":\"stack\"};" - |> chartGeneratedContains Bar.``Two stacked bars chart`` - ); - testCase "Stacked column data" ( fun () -> - """var data = [{"type":"bar","name":"old","x":["Product A","Product B","Product C"],"y":[20,14,23],"orientation":"v","marker":{"pattern":{}}},{"type":"bar","name":"new","x":["Product A","Product B","Product C"],"y":[8,21,13],"orientation":"v","marker":{"pattern":{}}}];""" - |> chartGeneratedContains Column.``Two stacked columns chart`` - ); - testCase "Stacked column layout" ( fun () -> - "var layout = {\"barmode\":\"stack\"};" - |> chartGeneratedContains Column.``Two stacked columns chart`` - ); - ] - -[] -let ``Area charts`` = - testList "SimpleCharts.Area charts" [ - testCase "Simple area data" ( fun () -> - """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"marker":{},"line":{},"fill":"tozeroy","fillpattern":{}}];""" - |> chartGeneratedContains Area.``Simple area chart`` - ); - testCase "Simple area layout" ( fun () -> - emptyLayout Area.``Simple area chart`` - ); - testCase "Spline data" ( fun () -> - """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"marker":{},"line":{"shape":"spline"},"fill":"tozeroy","fillpattern":{}}];""" - |> chartGeneratedContains SplineArea.``Simple spline area chart`` - ); - testCase "Spline layout" ( fun () -> - emptyLayout SplineArea.``Simple spline area chart`` - ); - testCase "Stacked area data" ( fun () -> - """var data = [{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,2.5,5.0,7.5,5.0,2.5,7.5,4.5,5.5,5.0],"stackgroup":"stackedarea","marker":{},"line":{},"fill":"tonexty","fillpattern":{}},{"type":"scatter","mode":"lines","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[5.0,5.5,4.5,7.5,2.5,5.0,7.5,5.0,2.5,5.0],"stackgroup":"stackedarea","marker":{},"line":{},"fill":"tonexty","fillpattern":{}}];""" - |> chartGeneratedContains StackedArea.``Two stacked areas chart`` - ); - testCase "Stacked area layout" ( fun () -> - emptyLayout StackedArea.``Two stacked areas chart`` - ); - ] - - - - -[] -let ``Range plot`` = - testList "SimpleCharts.Range plot" [ - testCase "Range plot data" ( fun () -> - """var data = [{"type":"scatter","name":"lower","showlegend":true,"legendgroup":"Range","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[1.0244410755226578,1.1291130737537114,4.930085632917511,1.4292117752736488,2.5179894182449156,2.3470285278032668,1.5358344954605374,1.4046562835130172,2.6874669190437843,0.7493837949584163],"fillcolor":"lightblue","marker":{"color":"lightblue"}},{"type":"scatter","name":"upper","showlegend":true,"legendgroup":"Range","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.338369840913624,1.7844184475412679,5.2629626417825754,2.125375844363764,3.4634618528482792,3.4283738280312965,2.6463105539541276,2.4505998873853123,4.096133255211699,1.1174599459010455],"fill":"tonexty","fillcolor":"lightblue","marker":{"color":"lightblue"}},{"type":"scatter","mode":"lines+markers","x":[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{"color":"grey"},"line":{},"legendgroup":"Range","legendgrouptitle":{"text":"Range"}}];""" - |> chartGeneratedContains Range.``Styled range chart`` - ); - testCase "Range plot layout" ( fun () -> - emptyLayout Range.``Styled range chart`` - ); - ] - -[] -let ``Bubble charts`` = - testList "SimpleCharts.Bubble charts" [ - testCase "Bubble data" ( fun () -> - """var data = [{"type":"scatter","mode":"markers","x":[2,4,6],"y":[4,1,6],"marker":{"size":[19,26,55]},"line":{}}];""" - |> chartGeneratedContains Bubble.``Simple bubble chart`` - ); - testCase "Bubble layout" ( fun () -> - emptyLayout Bubble.``Simple bubble chart`` - ); - ] - -[] -let ``Pie and doughnut Charts`` = - testList "SimpleCharts.Pie and doughnut Charts" [ - testCase "Pie data" ( fun () -> - """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"marker":{"line":{}}}];""" - |> chartGeneratedContains Pie.``Simple pie chart`` - ); - testCase "Pie layout" ( fun () -> - emptyLayout Pie.``Simple pie chart`` - ); - testCase "Pie styled data" ( fun () -> - """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"pull":[0.0,0.3,0.0],"text":["Some","More","Stuff"],"textposition":["inside","outside","inside"],"marker":{"colors":["rgba(0, 255, 255, 1.0)","rgba(250, 128, 114, 1.0)","rgba(210, 180, 140, 1.0)"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":2.0}},"rotation":45.0}];""" - |> chartGeneratedContains Pie.``Styled pie chart`` - ); - testCase "Pie styled layout" ( fun () -> - emptyLayout Pie.``Styled pie chart`` - ); - testCase "Doughnut data" ( fun () -> - """var data = [{"type":"pie","values":[19,26,55],"labels":["Residential","Non-Residential","Utility"],"text":["Residential","Non-Residential","Utility"],"marker":{"line":{}},"hole":0.3}];""" - |> chartGeneratedContains Doughnut.``Simple doughnut chart`` - ); - testCase "Doughnut layout" ( fun () -> - emptyLayout Doughnut.``Simple doughnut chart`` - ); - ] - - - -[] -let ``Table charts`` = - testList "SimpleCharts.Table charts" [ - testCase "First table data" ( fun () -> - """var data = [{"type":"table","cells":{"fill":{},"line":{},"values":[["0","1"],["I","little"],["am","example"],["a","!"]]},"header":{"fill":{},"line":{},"values":["RowIndex","A","simple","table"]}}];""" - |> chartGeneratedContains Table.``Simple table chart`` - ); - testCase "First table layout" ( fun () -> - emptyLayout Table.``Simple table chart`` - ); - testCase "Styled table data" ( fun () -> - """var data = [{"type":"table","columnorder":[1,2,3,4],"columnwidth":[70.0,50.0,100.0,70.0],"cells":{"align":["left","center","right"],"fill":{"color":["#deebf7","lightgrey","#deebf7","lightgrey"]},"line":{},"values":[["0","1"],["I","little"],["am","example"],["a","!"]]},"header":{"align":"center","fill":{"color":"#45546a"},"height":30,"line":{"color":"black","width":2.0},"values":["RowIndex","A","simple","table"]}}];""" - |> chartGeneratedContains Table.``Styled table chart`` - ); - testCase "Styled table layout" ( fun () -> - emptyLayout Table.``Styled table chart`` - ); - testCase "Color dependent chart data" ( fun () -> - """var data = [{"type":"table","cells":{"fill":{"color":[["white","white","white","white","white","white","white"],["rgba(255, 255, 0, 1.0)","rgba(255, 245, 10, 1.0)","rgba(255, 204, 51, 1.0)","rgba(255, 204, 51, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 26, 229, 1.0)"],["rgba(255, 250, 5, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 174, 81, 1.0)","rgba(255, 215, 40, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 153, 102, 1.0)","rgba(255, 102, 153, 1.0)"],["rgba(255, 240, 15, 1.0)","rgba(255, 51, 204, 1.0)","rgba(255, 164, 91, 1.0)","rgba(255, 179, 76, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 164, 91, 1.0)","rgba(255, 153, 102, 1.0)"],["rgba(255, 245, 10, 1.0)","rgba(255, 0, 255, 1.0)","rgba(255, 143, 112, 1.0)","rgba(255, 220, 35, 1.0)","rgba(255, 159, 96, 1.0)","rgba(255, 148, 107, 1.0)","rgba(255, 128, 127, 1.0)"]]},"line":{},"values":[[10004.0,10001.0,10005.0,10006.0,10007.0,10002.0,10003.0],[0.0,0.2,1.0,1.0,2.0,2.1,4.5],[0.1,2.0,1.6,0.8,2.0,2.0,3.0],[0.3,4.0,1.8,1.5,2.1,1.8,2.0],[0.2,5.0,2.2,0.7,1.9,2.1,2.5]]},"header":{"fill":{},"line":{},"values":["Identifier","T0","T1","T2","T3"]}}];""" - |> chartGeneratedContains Table.``Cell color dependent table chart`` - ); - testCase "Color dependent chart layout" ( fun () -> - emptyLayout Table.``Cell color dependent table chart`` - ); - testCase "Sequence presentation table data" ( fun () -> - """var data = [{"type":"table","columnwidth":[50.0,10.0],"cells":{"align":["right","center"],"fill":{"color":[["white","white","white","white","white"],["#5050FF","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E00000","#E6E600","#E00000","white"],["#00C000","#00C000","#E00000","#00C000","white"],["#5050FF","#E6E600","#00C000","#E6E600","white"],["#00C000","#E00000","#5050FF","#E00000","white"],["#5050FF","#00C000","#E6E600","#00C000","white"],["#E00000","#5050FF","#5050FF","#5050FF","white"],["#00C000","#E6E600","#00C000","#E6E600","white"],["#E6E600","#5050FF","#5050FF","#5050FF","white"],["#E00000","#00C000","#E00000","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#5050FF","#E00000","#E6E600","#E00000","white"],["#00C000","#00C000","#E00000","#E00000","white"],["#5050FF","#E6E600","#00C000","#00C000","white"],["#E00000","#E00000","#5050FF","#E6E600","white"],["#E6E600","#00C000","#E6E600","#5050FF","white"],["#00C000","#5050FF","#5050FF","#00C000","white"],["#5050FF","#E6E600","#00C000","#5050FF","white"],["#E6E600","#5050FF","#5050FF","#E00000","white"],["#5050FF","#00C000","#00C000","#00C000","white"],["#00C000","#5050FF","#5050FF","#E6E600","white"],["#5050FF","#00C000","#E6E600","#E00000","white"],["#E00000","#E6E600","#5050FF","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E6E600","#5050FF","#E6E600","white"],["#E00000","#5050FF","#E00000","#5050FF","white"],["#00C000","#00C000","#00C000","#00C000","white"],["#5050FF","#5050FF","#E6E600","#5050FF","white"],["#E6E600","#E00000","#E00000","#E00000","white"],["#5050FF","#E00000","#00C000","#00C000","white"],["#00C000","#00C000","#5050FF","#E6E600","white"],["#5050FF","#E6E600","#E6E600","#E00000","white"],["#E00000","#00C000","#5050FF","#00C000","white"],["#00C000","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E6E600","#5050FF","#E6E600","white"],["#E00000","#5050FF","#E00000","#5050FF","white"],["#00C000","#00C000","#E00000","#00C000","white"],["#5050FF","#5050FF","#00C000","#5050FF","white"],["#E6E600","#E00000","#E6E600","#E00000","white"],["#5050FF","#00C000","#5050FF","#E00000","white"],["#00C000","#E6E600","#E6E600","#00C000","white"],["#5050FF","#E00000","#5050FF","#E6E600","white"],["#E00000","#00C000","#00C000","white"],["#E00000","#5050FF","#5050FF","white"],["#00C000","#00C000","#5050FF","white"],["#5050FF","#5050FF","#00C000","white"],["#E6E600","#5050FF","#5050FF","white"],["#5050FF","#00C000","#E00000","white"],["#00C000","#5050FF","#00C000","white"],["#5050FF","#E00000","#E6E600","white"],["#E00000","#00C000","#E00000","white"],["#E6E600","#E6E600","#00C000","white"],["#E00000","#E00000","#5050FF","white"],["#00C000","#00C000","#E6E600","white"],["#E6E600","#5050FF","#5050FF","white"],["#00C000","#E6E600","#00C000","white"],["#5050FF","#5050FF","#5050FF","white"],["#E6E600","#00C000","#E6E600","white"],["#5050FF","#5050FF","#5050FF","white"],["#00C000","#E00000","#00C000","white"]]},"height":20,"line":{"color":"white","width":0.0},"values":[["0","60","120","180"],["A","A","G","A"],["T","C","T","C"],["G","G","C","G"],["A","T","G","T"],["G","C","A","C"],["A","G","T","G"],["C","A","A","A"],["G","T","G","T"],["T","A","A","A"],["C","G","C","G"],["G","A","G","A"],["A","C","T","C"],["G","G","C","C"],["A","T","G","G"],["C","C","A","T"],["T","G","T","A"],["G","A","A","G"],["A","T","G","A"],["T","A","A","C"],["A","G","G","G"],["G","A","A","T"],["A","G","T","C"],["C","T","A","G"],["G","A","G","A"],["T","T","A","T"],["C","A","C","A"],["G","G","G","G"],["A","A","T","A"],["T","C","C","C"],["A","C","G","G"],["G","G","A","T"],["A","T","T","C"],["C","G","A","G"],["G","A","G","A"],["T","T","A","T"],["C","A","C","A"],["G","G","C","G"],["A","A","G","A"],["T","C","T","C"],["A","G","A","C"],["G","T","T","G"],["A","C","A","T"],["C","G","G"],["C","A","A"],["G","G","A"],["A","A","G"],["T","A","A"],["A","G","C"],["G","A","G"],["A","C","T"],["C","G","C"],["T","T","G"],["C","C","A"],["G","G","T"],["T","A","A"],["G","T","G"],["A","A","A"],["T","G","T"],["A","A","A"],["G","C","G"]]},"header":{"fill":{},"line":{"color":"white","width":0.0},"values":["","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|","","","","","","","","","","|"]}}];""" - |> chartGeneratedContains Table.``Sequence representation table chart`` - ); - testCase "Sequence presentation table layout" ( fun () -> - "var layout = {\"width\":650,\"title\":{\"text\":\"Sequence A\"}};" - |> chartGeneratedContains Table.``Sequence representation table chart`` - ); - ] - -[] -let ``Heatmap charts`` = - testList "SimpleCharts.Heatmap charts" [ - testCase "Heatmap data" ( fun () -> - """var data = [{"type":"heatmap","x":["Tp0","Tp30","Tp60","Tp160"],"y":["p3","p2","p1"],"z":[[1.0,1.5,0.7,2.7],[2.0,0.5,1.2,1.4],[0.1,2.6,2.4,3.0]],"colorscale":[[0.0,"#3D9970"],[1.0,"#001f3f"]],"showscale":true}];""" - |> chartGeneratedContains Heatmap.``simple heatmap with custom colorscale`` - ); - testCase "Heatmap layout" ( fun () -> - "var layout = {\"width\":700,\"height\":500,\"margin\":{\"l\":200.0}};" - |> chartGeneratedContains Heatmap.``simple heatmap with custom colorscale`` - ); - testCase "Heatmap styled data" ( fun () -> - """var data = [{"type":"heatmap","x":["Tp0","Tp30","Tp60","Tp160"],"y":["p3","p2","p1"],"z":[[1.0,1.5,0.7,2.7],[2.0,0.5,1.2,1.4],[0.1,2.6,2.4,3.0]],"colorscale":[[0.0,"#3D9970"],[1.0,"#001f3f"]],"showscale":true,"colorbar":{"title":{"text":"Im the Colorbar"}}}];""" - |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` - ); - testCase "Heatmap styled layout" ( fun () -> - "var layout = {\"width\":700,\"height\":500,\"margin\":{\"l\":200.0}};" - |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` - ); - testCase "Annotated heatmap data" ( fun () -> - """var data = [{"type":"heatmap","x":["C1","C2","C3"],"y":["R1","R2","R3"],"z":[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]}];""" - |> chartGeneratedContains AnnotatedHeatmap.``Simple annotated heatmap`` - ); - testCase "Annotated heatmap layout" ( fun () -> - """var layout = {"yaxis":{"autorange":"reversed"},"annotations":[{"x":0,"y":0,"showarrow":false,"text":"1,1"},{"x":1,"y":0,"showarrow":false,"text":"1,2"},{"x":2,"y":0,"showarrow":false,"text":"1,3"},{"x":0,"y":1,"showarrow":false,"text":"2,1"},{"x":1,"y":1,"showarrow":false,"text":"2,2"},{"x":2,"y":1,"showarrow":false,"text":"2,3"},{"x":0,"y":2,"showarrow":false,"text":"3,1"},{"x":1,"y":2,"showarrow":false,"text":"3,2"},{"x":2,"y":2,"showarrow":false,"text":"3,3"}]};""" - |> chartGeneratedContains AnnotatedHeatmap.``Simple annotated heatmap`` - ); - ] - -[] -let ``Image charts`` = - testList "SimpleCharts.Image charts" [ - testCase "Image raw data" ( fun () -> - """var data = [{"type":"image","z":[[[0,0,255],[255,255,0],[0,0,255]],[[255,0,0],[255,0,255],[255,0,255]],[[0,255,0],[0,255,255],[255,0,0]]]}];""" - |> chartGeneratedContains Image.``Raw color component image chart`` - ); - testCase "Image raw layout" ( fun () -> - """var layout = {"title":{"text":"Image chart from raw color component arrays"}};""" - |> chartGeneratedContains Image.``Raw color component image chart`` - ); - - testCase "Image raw hsl data" ( fun () -> - """var data = [{"type":"image","z":[[[0,0,255],[255,255,0],[0,0,255]],[[255,0,0],[255,0,255],[255,0,255]],[[0,255,0],[0,255,255],[255,0,0]]],"colormodel":"hsl"}];""" - |> chartGeneratedContains Image.``HSL image chart`` - ); - testCase "Image raw hsl layout" ( fun () -> - """var layout = {"title":{"text":"HSL color model"}};""" - |> chartGeneratedContains Image.``HSL image chart`` - ); - - testCase "Image ARGB data" ( fun () -> - """var data = [{"type":"image","z":[[[240,248,255,255],[255,248,220,255],[255,240,245,255]],[[169,169,169,255],[255,250,250,255],[25,25,112,255]],[[176,196,222,255],[189,183,107,255],[135,206,250,255]]],"colormodel":"rgba"}];""" - |> chartGeneratedContains Image.``ARGB image chart`` - ); - testCase "Image ARGB layout" ( fun () -> - """var layout = {"title":{"text":"ARGB image chart"}};""" - |> chartGeneratedContains Image.``ARGB image chart`` - ); - - testCase "Image base64 data" ( fun () -> - """var data = [{"type":"image","source":"data:image/jpg;base64,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RAFgOgIKUERA4XBCClBCSAFgSr+4egAA7ElAAYoIKIF//Zf/+rurN4zmL7/76g/btn139Q5geb/etu2nb374+durhwDAnkQUAKYhoABFBJTAj19//5v//ad//I9vfvj5N1dvGY2QApQQUgCYjogCwBQEFKCIgBL48evvf7Nt25//75e//Idt2/4spNxPSAFKCCkATEVEAWB4AgpQREAJPAeUbdt+9XT61SakRIQUoISQAsA0RBQAhiagAEUElMALAeWZkBISUoASQgoAUxBRABiWgAIUEVACbwSUZ0JKSEgBSggpAAxPRAFgSAIKUERACdwQUJ4JKSEhBSghpAAwNBEFgOEIKEARASVwR0B5JqSEhBSghJACwLBEFACGIqAARQSUQBBQngkpISEFKCGkADAkEQWAYQgoQBEBJfBAQHkmpISEFKCEkALAcEQUAIYgoABFBJTADgHlmZASElKAEkIKAEMRUQCoJ6AARQSUwI4B5ZmQEhJSgBJCCgDDEFEAqCagAEUElMABAeWZkBISUoASQgoAQxBRAKgloABFBJTAgQHlmZASElKAEkIKAPVEFAAqCShAEQElcEJAeSakhIQUoISQAkA1EQWAOgIKUERACZwYUJ4JKSEhBSghpABQS0QBoIqAAhQRUAIXBJRnQkpISAFKCCkAVBJRAKghoABFBJTAhQHlmZASElKAEkIKAHVEFAAqCChAEQElUBBQngkpISEFKCGkAFBFRAHgcgIKUERACRQFlGdCSkhIAUoIKQDUEFEAuJSAAhQRUAKFAeWZkBISUoASQgoAFUQUAC4joABFBJRAcUB5JqSEhBSghJACwOVEFAAuIaAARQSUwAAB5ZmQEhJSgBJCCgCXElEAOJ2AAhQRUAIDBZRnQkpISAFKCCkAXEZEAeBUAgpQREAJDBhQngkpISEFKCGkAHAJEQWA0wgoQBEBJTBwQHkmpISEFKCEkALA6UQUAE4hoABFBJTABAHlmZASElKAEkIKAKcSUQA4nIACFBFQAhMFlGdCSkhIAUoIKQCcRkQB4FACClBEQAlMGFCeCSkhIQUoIaQAcAoRBYDDCChAEQElMHFAeSakhIQUoISQAsDhRBQADiGgAEUElMACAeWZkBISUoASQgoAhxJRANidgAIUEVACCwWUZ0JKSEgBSggpABxGRAFgVwIKUERACSwYUJ4JKSEh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"}];""" - |> chartGeneratedContains Image.``Image chart from base64 string`` - ); - testCase "Image base64 layout" ( fun () -> - """var layout = {"title":{"text":"This is Plotly.NET:"}};""" - |> chartGeneratedContains Image.``Image chart from base64 string`` - ); - ] \ No newline at end of file From 75275eedd367ae2fa8524ca43fbabdda3eb75f80 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 16 Apr 2023 13:40:46 +0200 Subject: [PATCH 16/26] Refactor Chart3D html codegen tests --- .../FSharpTestBase/FSharpTestBase.fsproj | 3 +- .../TestCharts/Chart3DTestCharts.fs | 174 +++++++++ tests/Common/FSharpTestBase/TestUtils.fs | 19 + tests/CoreTests/CoreTests/CoreTests.fsproj | 2 +- .../CoreTests/HTMLCodegen/Chart3D.fs | 186 ++++++++++ .../CoreTests/HTMLCodegen/Charts3D.fs | 333 ------------------ 6 files changed, 382 insertions(+), 335 deletions(-) create mode 100644 tests/Common/FSharpTestBase/TestCharts/Chart3DTestCharts.fs create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Chart3D.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/Charts3D.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index da47f705a..9f63021b0 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -13,8 +13,9 @@ - + + diff --git a/tests/Common/FSharpTestBase/TestCharts/Chart3DTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/Chart3DTestCharts.fs new file mode 100644 index 000000000..e61be4608 --- /dev/null +++ b/tests/Common/FSharpTestBase/TestCharts/Chart3DTestCharts.fs @@ -0,0 +1,174 @@ +module Chart3DTestCharts + +open Plotly.NET +open Plotly.NET.TraceObjects +open System + +open TestUtils.DataGeneration + +module Scatter3D = + + let ``Simple scatter3d chart with axis titles`` = + let x = [19; 26; 55;] + let y = [19; 26; 55;] + let z = [19; 26; 55;] + + Chart.Scatter3D(x = x,y = y,z = z, mode = StyleParam.Mode.Markers, UseDefaults = false) + |> Chart.withXAxisStyle("my x-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withYAxisStyle("my y-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withZAxisStyle("my z-axis") + |> Chart.withSize(800,800) + +module Point3D = + + let ``Simple Point3D chart with axis titles`` = + let x = [19; 26; 55;] + let y = [19; 26; 55;] + let z = [19; 26; 55;] + + Chart.Point3D(x = x,y = y,z = z, UseDefaults = false) + |> Chart.withXAxisStyle("my x-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withYAxisStyle("my y-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withZAxisStyle("my z-axis") + |> Chart.withSize(800,800) + + + +module Line3D = + let ``Upwards spiral line 3D chart with markers`` = + let c = [0. .. 0.5 .. 15.] + + let x, y, z = + c + |> List.map (fun i -> + let i' = float i + let r = 10. * Math.Cos (i' / 10.) + (r * Math.Cos i', r * Math.Sin i', i') + |> fun (x,y,z) -> + Math.Round(x,3), + Math.Round(y,3), + Math.Round(z,3) + ) + |> List.unzip3 + + Chart.Line3D(x = x, y = y, z = z, ShowMarkers=true, UseDefaults = false) + |> Chart.withXAxisStyle("x-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withYAxisStyle("y-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withZAxisStyle("z-axis") + |> Chart.withSize(800, 800) + + +module Bubble3D = + + let ``Simple Bubble3D chart with axis titles`` = + Chart.Bubble3D( + xyz = [1,3,2; 6,5,4; 7,9,8], + sizes = [20; 40; 30], + MultiText = ["A"; "B"; "C"], + TextPosition = StyleParam.TextPosition.TopLeft, + UseDefaults = false + ) + |> Chart.withXAxisStyle("x-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withYAxisStyle("y-axis", Id=StyleParam.SubPlotId.Scene 1) + |> Chart.withZAxisStyle("z-axis") + +module Surface = + + let ``Peak and sink surface plot`` = + + //---------------------- Create example data ---------------------- + let size = 100 + let x = linspace(-2. * Math.PI, 2. * Math.PI, size) + let y = linspace(-2. * Math.PI, 2. * Math.PI, size) + + let f x y = - (5. * x / (x**2. + y**2. + 1.) ) + + let z = + Array.init size (fun i -> + Array.init size (fun j -> f x.[j] y.[i] ) + ) + + Chart.Surface(zData = z, UseDefaults = false) + + let ``Surface plot with x/y indices mapping to z matrix with contours`` = + let x' = [0.;2.5] + let y' = [0.;2.5] + let z' = [ + [1.;1.;]; // row wise (length x) + [1.;2.;]; + ] // column (length y) + + Chart.Surface(zData = z', X = x', Y = y', Opacity=0.5, Contours=Contours.initXyz(Show=true), UseDefaults = false) + + +module Mesh3D = + + let ``Mesh3D chart with random x/x/z data`` = + + let rnd = System.Random(5) + let x = Array.init 50 (fun _ -> rnd.NextDouble()) + let y = Array.init 50 (fun _ -> rnd.NextDouble()) + let z = Array.init 50 (fun _ -> rnd.NextDouble()) + + Chart.Mesh3D( + x = x, + y = y, + z = z, + FlatShading = true, + Contour = Contour.init(Show = true), + UseDefaults = false + ) + +module Cone = + + let ``Simple cone chart`` = + Chart.Cone( + x = [1; 1; 1], + y = [1; 2; 3], + z = [1; 1; 1], + u = [1; 2; 3], + v = [1; 1; 2], + w = [4; 4; 1], + ColorScale = StyleParam.Colorscale.Viridis, + UseDefaults = false + ) + +module StreamTube = + + let ``Simple StreamTube chart `` = + Chart.StreamTube( + x = [0; 0; 0], + y = [0; 1; 2], + z = [0; 0; 0], + u = [0; 0; 0], + v = [1; 1; 1], + w = [0; 0; 0], + ColorScale = StyleParam.Colorscale.Viridis, + UseDefaults = false + ) + +module Volume = + + let ``Fancy mgrid based volume chart`` = + let x,y,z = mgrid(1.,2.,4) + Chart.Volume( + x = (x |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + y = (y |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + z = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + value = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + ColorScale = StyleParam.Colorscale.Viridis, + UseDefaults = false + ) + +module IsoSurface = + + let ``Fancy mgrid based isosurface chart`` = + let x,y,z = mgrid(1.,2.,4) + Chart.IsoSurface( + x = (x |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + y = (y |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + z = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + value = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), + ColorScale = StyleParam.Colorscale.Viridis, + UseDefaults = false + ) \ No newline at end of file diff --git a/tests/Common/FSharpTestBase/TestUtils.fs b/tests/Common/FSharpTestBase/TestUtils.fs index ebd0f0ac1..a355490d5 100644 --- a/tests/Common/FSharpTestBase/TestUtils.fs +++ b/tests/Common/FSharpTestBase/TestUtils.fs @@ -7,6 +7,25 @@ open Plotly.NET open DynamicObj open Newtonsoft.Json +module DataGeneration = + + //---------------------- Generate linearly spaced vector ---------------------- + let linspace (min,max,n) = + if n <= 2 then failwithf "n needs to be larger then 2" + let bw = float (max - min) / (float n - 1.) + Array.init n (fun i -> min + (bw * float i)) + + //-------------------- Generate linearly spaced mesh grid --------------------- + let mgrid (min,max,n) = + + let data = linspace(min,max,n) + + let z = [|for i in 1 .. n do [|for i in 1 .. n do yield data|]|] + let x = [|for i in 1 .. n do [|for j in 1 .. n do yield [|for k in 1 .. n do yield data.[i-1]|]|]|] + let y = [|for i in 1 .. n do [|for j in 1 .. n do yield [|for k in 1 .. n do yield data.[j-1]|]|]|] + + x,y,z + module HtmlCodegen = let getLogoPNG() = diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 8ae0382f2..79cfa350e 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -12,6 +12,7 @@ + @@ -28,7 +29,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D.fs new file mode 100644 index 000000000..1300c2f1e --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/Chart3D.fs @@ -0,0 +1,186 @@ +module CoreTests.HTMLCodegen.Chart3D + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +open Chart3DTestCharts + +module Scatter3D = + [] + let ``Scatter3D chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Scatter3D" [ + testCase "3D Scatter charts data" ( fun () -> + """var data = [{"type":"scatter3d","mode":"markers","x":[19,26,55],"y":[19,26,55],"z":[19,26,55],"marker":{},"line":{}}];""" + |> chartGeneratedContains Scatter3D.``Simple scatter3d chart with axis titles`` + ); + testCase "3D Scatter charts layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"my x-axis"}},"yaxis":{"title":{"text":"my y-axis"}},"zaxis":{"title":{"text":"my z-axis"}}},"width":800,"height":800};""" + |> chartGeneratedContains Scatter3D.``Simple scatter3d chart with axis titles`` + ); + ] + ] + +module Point3D = + [] + let ``Point3D chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Point3D" [ + testCase "3D Point charts data" ( fun () -> + """var data = [{"type":"scatter3d","mode":"markers","x":[19,26,55],"y":[19,26,55],"z":[19,26,55],"marker":{},"line":{}}];""" + |> chartGeneratedContains Point3D.``Simple Point3D chart with axis titles`` + ); + testCase "3D Point charts layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"my x-axis"}},"yaxis":{"title":{"text":"my y-axis"}},"zaxis":{"title":{"text":"my z-axis"}}},"width":800,"height":800};""" + |> chartGeneratedContains Point3D.``Simple Point3D chart with axis titles`` + ); + ] + ] + +module Line3D = + [] + let ``Line3D chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Line3D" [ + testCase "Line data" ( fun () -> + """var data = [{"type":"scatter3d","mode":"lines+markers","x":[10.0,8.765,5.376,0.699,-4.079,-7.762,-9.458,-8.797,-6.02,-1.898,2.489,6.042,7.925,7.774,5.766,2.536,-1.014,-3.973,-5.664,-5.8,-4.534,-2.366,0.02,1.974,3.058,3.146,2.427,1.303,0.232,-0.428,-0.537],"y":[0.0,4.788,8.373,9.863,8.912,5.799,1.348,-3.295,-6.971,-8.802,-8.415,-6.015,-2.306,1.713,5.025,6.863,6.893,5.27,2.562,-0.437,-2.939,-4.377,-4.536,-3.576,-1.944,-0.209,1.124,1.76,1.684,1.127,0.46],"z":[0.0,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0],"marker":{},"line":{}}];""" + |> chartGeneratedContains Line3D.``Upwards spiral line 3D chart with markers`` + ); + testCase "Line layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"x-axis"}},"yaxis":{"title":{"text":"y-axis"}},"zaxis":{"title":{"text":"z-axis"}}},"width":800,"height":800};""" + |> chartGeneratedContains Line3D.``Upwards spiral line 3D chart with markers`` + ); + ] + ] + +module Bubble3D = + [] + let ``Bubble3D chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Bubble3D" [ + testCase "Bubble data" ( fun () -> + """var data = [{"type":"scatter3d","mode":"markers+text","x":[1,6,7],"y":[3,5,9],"z":[2,4,8],"text":["A","B","C"],"textposition":"top left","marker":{"size":[20,40,30]}}];""" + |> chartGeneratedContains Bubble3D.``Simple Bubble3D chart with axis titles`` + ); + testCase "Bubble layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"x-axis"}},"yaxis":{"title":{"text":"y-axis"}},"zaxis":{"title":{"text":"z-axis"}}}};""" + |> chartGeneratedContains Bubble3D.``Simple Bubble3D chart with axis titles`` + ); + ] + ] + +module Surface = + [] + let ``Surface chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Surface" [ + testCase "First surface data" ( fun () -> + // the data generated by this chart generates a + // line of code which is 200 Kb long, unreasonably + // huge for a test. + [ + "var data = [{\"type\":\"surface\",\"z\":[[0.3929110807586562,0.39272903726671055,0.3923748718856843,0.3918384347714509,0.39110921172503726,0.39017633288191317,0.38902858492457726" + "-0.3755066766683234,-0.38085145315419006,-0.38575670319102695,-0.3902383753762268,-0.3943127362115111,-0.3979962450330162,-0.4013054412792835" + "-0.3901763328819132,-0.39110921172503726,-0.39183843477145097,-0.3923748718856844,-0.39272903726671055,-0.3929110807586562]]}];" + ] + |> chartGeneratedContainsList Surface.``Peak and sink surface plot`` + ); + testCase "First surface layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" + |> chartGeneratedContains Surface.``Peak and sink surface plot`` + ); + testCase "Second surface data" ( fun () -> + """var data = [{"type":"surface","opacity":0.5,"x":[0.0,2.5],"y":[0.0,2.5],"z":[[1.0,1.0],[1.0,2.0]],"contours":{"x":{"show":true},"y":{"show":true},"z":{"show":true}}}];""" + |> chartGeneratedContains Surface.``Surface plot with x/y indices mapping to z matrix with contours`` + ); + testCase "Second surface layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" + |> chartGeneratedContains Surface.``Surface plot with x/y indices mapping to z matrix with contours`` + ); + ] + ] + +module Mesh3D = + [] + let ``Mesh3D chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Mesh3D" [ + testCase "Mesh data" ( fun () -> + """var data = [{"type":"mesh3d","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382],"y":[0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116],"z":[0.1348700468125148,0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959],"contour":{"show":true},"flatshading":true}];""" + |> chartGeneratedContains Mesh3D.``Mesh3D chart with random x/x/z data`` + ); + testCase "Mesh layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" + |> chartGeneratedContains Mesh3D.``Mesh3D chart with random x/x/z data`` + ); + ] + ] + +module Cone = + [] + let ``Cone chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Cone" [ + testCase "Cone data" ( fun () -> + """var data = [{"type":"cone","x":[1,1,1],"y":[1,2,3],"z":[1,1,1],"u":[1,2,3],"v":[1,1,2],"w":[4,4,1],"colorscale":"Viridis"}];""" + |> chartGeneratedContains Cone.``Simple cone chart`` + ); + testCase "Cone layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" + |> chartGeneratedContains Cone.``Simple cone chart`` + ); + ] + ] + +module StreamTube = + [] + let ``StreamTube chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "StreamTube" [ + testCase "StreamTube data" ( fun () -> + """var data = [{"type":"streamtube","x":[0,0,0],"y":[0,1,2],"z":[0,0,0],"u":[0,0,0],"v":[1,1,1],"w":[0,0,0],"colorscale":"Viridis"}];""" + |> chartGeneratedContains StreamTube.``Simple StreamTube chart `` + ); + testCase "StreamTube layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" + |> chartGeneratedContains StreamTube.``Simple StreamTube chart `` + ); + ] + ] + +module Volume = + [] + let ``Volume chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "Volume" [ + testCase "Volume data" ( fun () -> + """var data = [{"type":"volume","x":[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],"y":[1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0],"z":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"value":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"colorscale":"Viridis"}];""" + |> chartGeneratedContains Volume.``Fancy mgrid based volume chart`` + ); + testCase "Volume layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" + |> chartGeneratedContains Volume.``Fancy mgrid based volume chart`` + ); + ] + ] + +module IsoSurface = + [] + let ``IsoSurface chart HTML codegeneration tests`` = + testList "HTMLCodegen.Chart3D" [ + testList "IsoSurface" [ + testCase "IsoSurface data" ( fun () -> + """var data = [{"type":"isosurface","x":[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],"y":[1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0],"z":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"value":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"colorscale":"Viridis"}];""" + |> chartGeneratedContains IsoSurface.``Fancy mgrid based isosurface chart`` + ); + testCase "IsoSurface layout" ( fun () -> + """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" + |> chartGeneratedContains IsoSurface.``Fancy mgrid based isosurface chart`` + ); + ] + ] + diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Charts3D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Charts3D.fs deleted file mode 100644 index 974f0fedb..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Charts3D.fs +++ /dev/null @@ -1,333 +0,0 @@ -module Tests.Charts3D - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.LayoutObjects -open System - -open TestUtils.HtmlCodegen - -//---------------------- Generate linearly spaced vector ---------------------- -let linspace (min,max,n) = - if n <= 2 then failwithf "n needs to be larger then 2" - let bw = float (max - min) / (float n - 1.) - Array.init n (fun i -> min + (bw * float i)) - -//-------------------- Generate linearly spaced mesh grid --------------------- -let mgrid (min,max,n) = - - let data = linspace(min,max,n) - - let z = [|for i in 1 .. n do [|for i in 1 .. n do yield data|]|] - let x = [|for i in 1 .. n do [|for j in 1 .. n do yield [|for k in 1 .. n do yield data.[i-1]|]|]|] - let y = [|for i in 1 .. n do [|for j in 1 .. n do yield [|for k in 1 .. n do yield data.[j-1]|]|]|] - - x,y,z - -let scatterChart = - let x = [19; 26; 55;] - let y = [19; 26; 55;] - let z = [19; 26; 55;] - - Chart.Scatter3D(x = x,y = y,z = z, mode = StyleParam.Mode.Markers, UseDefaults = false) - |> Chart.withXAxisStyle("my x-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withYAxisStyle("my y-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withZAxisStyle("my z-axis") - |> Chart.withSize(800,800) - -[] -let ``3D Scatter charts`` = - testList "Charts3D.3D Scatter charts" [ - testCase "3D Scatter charts data" ( fun () -> - """var data = [{"type":"scatter3d","mode":"markers","x":[19,26,55],"y":[19,26,55],"z":[19,26,55],"marker":{},"line":{}}];""" - |> chartGeneratedContains scatterChart - ); - testCase "3D Scatter charts layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"my x-axis"}},"yaxis":{"title":{"text":"my y-axis"}},"zaxis":{"title":{"text":"my z-axis"}}},"width":800,"height":800};""" - |> chartGeneratedContains scatterChart - ); - ] - -let pointChart = - let x = [19; 26; 55;] - let y = [19; 26; 55;] - let z = [19; 26; 55;] - - Chart.Point3D(x = x,y = y,z = z, UseDefaults = false) - |> Chart.withXAxisStyle("my x-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withYAxisStyle("my y-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withZAxisStyle("my z-axis") - |> Chart.withSize(800,800) - -[] -let ``3D Point charts`` = - testList "Charts3D.3D Point charts" [ - testCase "3D Point charts data" ( fun () -> - """var data = [{"type":"scatter3d","mode":"markers","x":[19,26,55],"y":[19,26,55],"z":[19,26,55],"marker":{},"line":{}}];""" - |> chartGeneratedContains pointChart - ); - testCase "3D Point charts layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"my x-axis"}},"yaxis":{"title":{"text":"my y-axis"}},"zaxis":{"title":{"text":"my z-axis"}}},"width":800,"height":800};""" - |> chartGeneratedContains pointChart - ); - ] - -let lineChart = - let c = [0. .. 0.5 .. 15.] - - let x, y, z = - c - |> List.map (fun i -> - let i' = float i - let r = 10. * Math.Cos (i' / 10.) - (r * Math.Cos i', r * Math.Sin i', i') - |> fun (x,y,z) -> - Math.Round(x,3), - Math.Round(y,3), - Math.Round(z,3) - ) - |> List.unzip3 - - Chart.Line3D(x = x, y = y, z = z, ShowMarkers=true, UseDefaults = false) - |> Chart.withXAxisStyle("x-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withYAxisStyle("y-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withZAxisStyle("z-axis") - |> Chart.withSize(800, 800) - -[] -let ``Line charts`` = - testList "Charts3D.Line charts" [ - testCase "Line data" ( fun () -> - """var data = [{"type":"scatter3d","mode":"lines+markers","x":[10.0,8.765,5.376,0.699,-4.079,-7.762,-9.458,-8.797,-6.02,-1.898,2.489,6.042,7.925,7.774,5.766,2.536,-1.014,-3.973,-5.664,-5.8,-4.534,-2.366,0.02,1.974,3.058,3.146,2.427,1.303,0.232,-0.428,-0.537],"y":[0.0,4.788,8.373,9.863,8.912,5.799,1.348,-3.295,-6.971,-8.802,-8.415,-6.015,-2.306,1.713,5.025,6.863,6.893,5.27,2.562,-0.437,-2.939,-4.377,-4.536,-3.576,-1.944,-0.209,1.124,1.76,1.684,1.127,0.46],"z":[0.0,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains lineChart - ); - testCase "Line layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"x-axis"}},"yaxis":{"title":{"text":"y-axis"}},"zaxis":{"title":{"text":"z-axis"}}},"width":800,"height":800};""" - |> chartGeneratedContains lineChart - ); - ] - -let bubbleChart = - Chart.Bubble3D( - xyz = [1,3,2; 6,5,4; 7,9,8], - sizes = [20; 40; 30], - MultiText = ["A"; "B"; "C"], - TextPosition = StyleParam.TextPosition.TopLeft, - UseDefaults = false - ) - |> Chart.withXAxisStyle("x-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withYAxisStyle("y-axis", Id=StyleParam.SubPlotId.Scene 1) - |> Chart.withZAxisStyle("z-axis") - - -[] -let ``Bubble charts`` = - testList "Charts3D.Bubble charts" [ - testCase "Bubble data" ( fun () -> - """var data = [{"type":"scatter3d","mode":"markers+text","x":[1,6,7],"y":[3,5,9],"z":[2,4,8],"text":["A","B","C"],"textposition":"top left","marker":{"size":[20,40,30]}}];""" - |> chartGeneratedContains bubbleChart - ); - testCase "Bubble layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}},"xaxis":{"title":{"text":"x-axis"}},"yaxis":{"title":{"text":"y-axis"}},"zaxis":{"title":{"text":"z-axis"}}}};""" - |> chartGeneratedContains bubbleChart - ); - ] - - -let firstSurfaceChart = - - //---------------------- Create example data ---------------------- - let size = 100 - let x = linspace(-2. * Math.PI, 2. * Math.PI, size) - let y = linspace(-2. * Math.PI, 2. * Math.PI, size) - - let f x y = - (5. * x / (x**2. + y**2. + 1.) ) - - let z = - Array.init size (fun i -> - Array.init size (fun j -> f x.[j] y.[i] ) - ) - - Chart.Surface(zData = z, UseDefaults = false) - - -let secondSurfaceChart = - let x' = [0.;2.5] - let y' = [0.;2.5] - let z' = [ - [1.;1.;]; // row wise (length x) - [1.;2.;]; - ] // column (length y) - - Chart.Surface(zData = z', X = x', Y = y', Opacity=0.5, Contours=Contours.initXyz(Show=true), UseDefaults = false) - -[] -let ``Surface charts`` = - testList "Charts3D.Surface charts" [ - testCase "First surface data" ( fun () -> - // the data generated by this chart generates a - // line of code which is 200 Kb long, unreasonably - // huge for a test. - [ - "var data = [{\"type\":\"surface\",\"z\":[[0.3929110807586562,0.39272903726671055,0.3923748718856843,0.3918384347714509,0.39110921172503726,0.39017633288191317,0.38902858492457726" - "-0.3755066766683234,-0.38085145315419006,-0.38575670319102695,-0.3902383753762268,-0.3943127362115111,-0.3979962450330162,-0.4013054412792835" - "-0.3901763328819132,-0.39110921172503726,-0.39183843477145097,-0.3923748718856844,-0.39272903726671055,-0.3929110807586562]]}];" - ] - |> chartGeneratedContainsList firstSurfaceChart - ); - testCase "First surface layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" - |> chartGeneratedContains firstSurfaceChart - ); - testCase "Second surface data" ( fun () -> - """var data = [{"type":"surface","opacity":0.5,"x":[0.0,2.5],"y":[0.0,2.5],"z":[[1.0,1.0],[1.0,2.0]],"contours":{"x":{"show":true},"y":{"show":true},"z":{"show":true}}}];""" - |> chartGeneratedContains secondSurfaceChart - ); - testCase "Second surface layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" - |> chartGeneratedContains secondSurfaceChart - ); - ] - - -let meshChart = - let size = 100 - let x = linspace(-2. * Math.PI, 2. * Math.PI, size) - let y = linspace(-2. * Math.PI, 2. * Math.PI, size) - - let f x y = - (5. * x / (x**2. + y**2. + 1.) ) - - let z = - Array.init size (fun i -> - Array.init size (fun j -> - f x.[j] y.[i] - ) - ) - - let rnd = System.Random(5) - let a = Array.init 50 (fun _ -> rnd.NextDouble()) - let b = Array.init 50 (fun _ -> rnd.NextDouble()) - let c = Array.init 50 (fun _ -> rnd.NextDouble()) - - Chart.Mesh3D( - x = a, - y = b, - z = c, - FlatShading = true, - Contour = Contour.init(Show = true), - UseDefaults = false - ) - -[] -let ``Mesh charts`` = - testList "Charts3D.Mesh charts" [ - testCase "Mesh data" ( fun () -> - """var data = [{"type":"mesh3d","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382],"y":[0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116],"z":[0.1348700468125148,0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959],"contour":{"show":true},"flatshading":true}];""" - |> chartGeneratedContains meshChart - ); - testCase "Mesh layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" - |> chartGeneratedContains meshChart - ); - ] - -let coneChart = - Chart.Cone( - x = [1; 1; 1], - y = [1; 2; 3], - z = [1; 1; 1], - u = [1; 2; 3], - v = [1; 1; 2], - w = [4; 4; 1], - ColorScale = StyleParam.Colorscale.Viridis, - UseDefaults = false - ) - -[] -let ``Cone charts`` = - testList "Charts3D.Cone charts" [ - testCase "Cone data" ( fun () -> - """var data = [{"type":"cone","x":[1,1,1],"y":[1,2,3],"z":[1,1,1],"u":[1,2,3],"v":[1,1,2],"w":[4,4,1],"colorscale":"Viridis"}];""" - |> chartGeneratedContains coneChart - ); - testCase "Cone layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" - |> chartGeneratedContains coneChart - ); - ] - -let streamTubeChart = - Chart.StreamTube( - x = [0; 0; 0], - y = [0; 1; 2], - z = [0; 0; 0], - u = [0; 0; 0], - v = [1; 1; 1], - w = [0; 0; 0], - ColorScale = StyleParam.Colorscale.Viridis, - UseDefaults = false - ) - -[] -let ``StreamTube charts`` = - testList "Charts3D.StreamTube charts" [ - testCase "StreamTube data" ( fun () -> - """var data = [{"type":"streamtube","x":[0,0,0],"y":[0,1,2],"z":[0,0,0],"u":[0,0,0],"v":[1,1,1],"w":[0,0,0],"colorscale":"Viridis"}];""" - |> chartGeneratedContains streamTubeChart - ); - testCase "StreamTube layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" - |> chartGeneratedContains streamTubeChart - ); - ] - -let volumeChart = - let x,y,z = mgrid(1.,2.,4) - Chart.Volume( - x = (x |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - y = (y |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - z = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - value = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - ColorScale = StyleParam.Colorscale.Viridis, - UseDefaults = false - ) - -[] -let ``Volume charts`` = - testList "Charts3D.Volume charts" [ - testCase "Volume data" ( fun () -> - """var data = [{"type":"volume","x":[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],"y":[1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0],"z":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"value":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"colorscale":"Viridis"}];""" - |> chartGeneratedContains volumeChart - ); - testCase "Volume layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" - |> chartGeneratedContains volumeChart - ); - ] - -let isoSurfaceChart = - let x,y,z = mgrid(1.,2.,4) - Chart.IsoSurface( - x = (x |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - y = (y |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - z = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - value = (z |> Array.concat |> Array.concat |> Array.map (fun x -> Math.Round(x,3))), - ColorScale = StyleParam.Colorscale.Viridis, - UseDefaults = false - ) - -[] -let ``IsoSurface charts`` = - testList "Charts3D.IsoSurface charts" [ - testCase "IsoSurface data" ( fun () -> - """var data = [{"type":"isosurface","x":[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],"y":[1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.333,1.333,1.333,1.333,1.667,1.667,1.667,1.667,2.0,2.0,2.0,2.0],"z":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"value":[1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0,1.0,1.333,1.667,2.0],"colorscale":"Viridis"}];""" - |> chartGeneratedContains isoSurfaceChart - ); - testCase "IsoSurface layout" ( fun () -> - """var layout = {"scene":{"camera":{"projection":{"type":"perspective"}}}};""" - |> chartGeneratedContains isoSurfaceChart - ); - ] From f6ee7cc9d5be0dba09cac1a8c74aa23e48c96573 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 16 Apr 2023 20:42:39 +0200 Subject: [PATCH 17/26] Refactor Distribution tests --- .../TestCharts/Chart2DTestCharts.fs | 160 ++++++++- tests/Common/FSharpTestBase/TestUtils.fs | 11 + tests/CoreTests/CoreTests/CoreTests.fsproj | 1 - .../CoreTests/HTMLCodegen/Chart2D.fs | 97 ++++++ .../HTMLCodegen/DistributionCharts.fs | 306 ------------------ 5 files changed, 258 insertions(+), 317 deletions(-) delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/DistributionCharts.fs diff --git a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs index 818e0060f..acf1c226e 100644 --- a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs @@ -1,6 +1,10 @@ module Chart2DTestCharts +open System open Plotly.NET +open Plotly.NET.TraceObjects + +open TestUtils.DataGeneration module Point = @@ -78,7 +82,6 @@ module Spline = let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] Chart.Spline(x = x, y = y, Name="spline", UseDefaults = false) - module Bubble = let ``Simple bubble chart`` = @@ -132,7 +135,6 @@ module StackedArea = ] |> Chart.combine - module Funnel = () module StackedFunnel = () @@ -175,15 +177,100 @@ module Column = module StackedColumn = () -module Histogram = () +module Histogram = + + let ``Simple histogram`` = + let rnd = System.Random(5) + let x = [for i=0 to 500 do yield rnd.NextDouble() ] + Chart.Histogram(X = x, UseDefaults = false) + |> Chart.withSize(500, 500) + -module Histogram2D = () +module Histogram2D = + + let ``Histogram2D of 2D normal distribution`` = + let rnd = System.Random(5) + let n = 2000 + let a = -1. + let b = 1.2 + let step i = a + ((b - a) / float (n - 1)) * float i + + //---------------------- generate data distributed in x and y direction ---------------------- + let x = Array.init n (fun i -> ((step i)**3.) + (0.3 * (normal (rnd) 0. 2.) )) + let y = Array.init n (fun i -> ((step i)**6.) + (0.3 * (normal (rnd) 0. 2.) )) + Chart.Histogram2D (x = x, y = y, UseDefaults = false) + +module BoxPlot = + + let ``Simple boxplot with boxpoints`` = + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] + Chart.BoxPlot(X = x, Y = y,Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All, UseDefaults = false) + + let ``Simple horizontal boxplot with boxpoints`` = + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] + Chart.BoxPlot(X = y,Y = x,Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All,Orientation=StyleParam.Orientation.Horizontal, UseDefaults = false) + + let ``Combined chart with 2 horizontal boxplots`` = + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let y' = [2.; 1.5; 5.; 1.5; 2.; 2.5; 2.1; 2.5; 1.5; 1.;2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + [ + Chart.BoxPlot(data = y , orientation = StyleParam.Orientation.Horizontal, Name="bin1",Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All, UseDefaults = false); + Chart.BoxPlot(data = y', orientation = StyleParam.Orientation.Horizontal, Name="bin2",Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All, UseDefaults = false); + ] + |> Chart.combine + +module Violin = + + let ``Simple violin plot with jitterpoints`` = + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] + Chart.Violin ( + X = x, Y = y, + Points=StyleParam.JitterPoints.All, + UseDefaults = false + ) + + let ``Simple horizontal violin plot with jitterpoints`` = + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] + Chart.Violin( + X = y, Y = x, + Jitter=0.1, + Points=StyleParam.JitterPoints.All, + Orientation=StyleParam.Orientation.Horizontal, + MeanLine=MeanLine.init(Visible=true), + UseDefaults = false + ) + + let ``Combined chart with 2 horizontal violin plots`` = + let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + let y' = [2.; 1.5; 5.; 1.5; 2.; 2.5; 2.1; 2.5; 1.5; 1.;2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] + [ + Chart.Violin (data = y , orientation = StyleParam.Orientation.Horizontal, Name="bin1",Jitter=0.1,Points=StyleParam.BoxPoints.All, UseDefaults = false) + Chart.Violin (data = y', orientation = StyleParam.Orientation.Horizontal, Name="bin2",Jitter=0.1,Points=StyleParam.BoxPoints.All, UseDefaults = false) + ] + |> Chart.combine -module BoxPlot = () +module Histogram2DContour = -module Violin = () + let ``Histogram2DContour of 2D normal distribution`` = -module Histogram2DContour = () + let rnd = System.Random(5) + let n = 2000 + let a = -1. + let b = 1.2 + let step i = a + ((b - a) / float (n - 1)) * float i + + //---------------------- generate data distributed in x and y direction ---------------------- + let x = Array.init n (fun i -> ((step i)**3.) + (0.3 * (normal (rnd) 0. 2.) )) + let y = Array.init n (fun i -> ((step i)**6.) + (0.3 * (normal (rnd) 0. 2.) )) + [ + Chart.Histogram2DContour (x = x, y = y,ContourLine=Line.init(Width=0.), UseDefaults = false) + Chart.Point(x = x,y = y,Opacity=0.3, UseDefaults = false) + ] + |> Chart.combine module Heatmap = @@ -290,12 +377,65 @@ module Image = ) |> Chart.withTitle "This is Plotly.NET:" -module Contour = () +module Contour = + + let ``Contour plot with peak and sink`` = + + // Create example data + let size = 100 + let x = linspace(-2. * Math.PI, 2. * Math.PI, size) + let y = linspace(-2. * Math.PI, 2. * Math.PI, size) + + let f x y = - (5. * x / (x**2. + y**2. + 1.) ) + + let z = + Array.init size (fun i -> + Array.init size (fun j -> + f x.[j] y.[i] + ) + ) + + Chart.Contour(zData = z, UseDefaults = false) + |> Chart.withSize(600.,600.) module OHLC = () module Candlestick = () -module Splom = () +module Splom = + + let ``Simple scatterplot matrix`` = + let data = + [ + "A",[|1.;4.;3.4;0.7;|] + "B",[|3.;1.5;1.7;2.3;|] + "C",[|2.;4.;3.1;5.|] + "D",[|4.;2.;2.;4.;|] + ] + Chart.Splom(keyValues = data, MarkerColor=Color.fromString "blue", UseDefaults = false) + + +module PointDensity = -module PointDensity = () \ No newline at end of file + + let ``Simple PointDensity chart`` = + let rnd = new System.Random(5) + let x = [for i in 0 .. 100 -> rnd.NextDouble()] + let y = [for i in 0 .. 100 -> rnd.NextDouble()] + Chart.PointDensity(x = x,y = y,UseDefaults = false) + + let ``Styled PointDensity chart`` = + let rnd = new System.Random(5) + let x = [for i in 0 .. 100 -> rnd.NextDouble()] + let y = [for i in 0 .. 100 -> rnd.NextDouble()] + Chart.PointDensity( + x = x, + y = y, + PointMarkerColor = Color.fromKeyword Purple, + PointMarkerSymbol = StyleParam.MarkerSymbol.X, + PointMarkerSize = 4, + ColorScale = StyleParam.Colorscale.Viridis, + ColorBar = ColorBar.init(Title = Title.init("Density")), + ShowContourLabels = true, + UseDefaults = false + ) diff --git a/tests/Common/FSharpTestBase/TestUtils.fs b/tests/Common/FSharpTestBase/TestUtils.fs index a355490d5..5d36caa3b 100644 --- a/tests/Common/FSharpTestBase/TestUtils.fs +++ b/tests/Common/FSharpTestBase/TestUtils.fs @@ -26,6 +26,17 @@ module DataGeneration = x,y,z + let normal (rnd:System.Random) mu tau = + let mutable v1 = 2.0 * rnd.NextDouble() - 1.0 + let mutable v2 = 2.0 * rnd.NextDouble() - 1.0 + let mutable r = v1 * v1 + v2 * v2 + while (r >= 1.0 || r = 0.0) do + v1 <- 2.0 * rnd.NextDouble() - 1.0 + v2 <- 2.0 * rnd.NextDouble() - 1.0 + r <- v1 * v1 + v2 * v2 + let fac = sqrt(-2.0*(log r)/r) + (tau * v1 * fac + mu) + module HtmlCodegen = let getLogoPNG() = diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 79cfa350e..d2340c1ea 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -29,7 +29,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs index cb9b80809..d7b1433f7 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs @@ -235,6 +235,18 @@ module Histogram = let ``Histogram chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Histogram" [ + testCase "Histo data" ( fun () -> + // the string is too big to be here fully. + [ + "var data = [{\"type\":\"histogram\",\"x\":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985" + """0.7608672612164483,0.8280196519699039,0.040246858280267035,0.0017312127173557937],"marker":{"pattern":{}}}];""" + ] + |> chartGeneratedContainsList Histogram.``Simple histogram`` + ); + testCase "Histo layout" ( fun () -> + "var layout = {\"width\":500,\"height\":500};" + |> chartGeneratedContains Histogram.``Simple histogram`` + ); ] ] @@ -243,6 +255,13 @@ module Histogram2D = let ``Histogram2D chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Histogram2D" [ + testCase "Histo 2D data" ( fun () -> + "var data = [{\"type\":\"histogram2d\",\"x\":[-1.566002360265054,-1.833996340961623,-1.0330391275776571,-0.8476993487909306,-0.8471270832604864,-1.021055309868153,-0.5368298779218124,-0.9982579324563884,-0.6367576994858231,-1.433590036163408,-1.3735531103452598" + |> chartGeneratedContains Histogram2D.``Histogram2D of 2D normal distribution`` + ); + testCase "Histo 2D layout" ( fun () -> + emptyLayout Histogram2D.``Histogram2D of 2D normal distribution`` + ); ] ] @@ -251,6 +270,27 @@ module BoxPlot = let ``BoxPlot chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "BoxPlot" [ + testCase "Box1 data" ( fun () -> + """var data = [{"type":"box","x":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{},"boxpoints":"all","jitter":0.1}];""" + |> chartGeneratedContains BoxPlot.``Simple boxplot with boxpoints`` + ); + testCase "Box1 layout" ( fun () -> + emptyLayout BoxPlot.``Simple boxplot with boxpoints`` + ); + testCase "Box2 data" ( fun () -> + """var data = [{"type":"box","x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"y":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"orientation":"h","marker":{},"line":{},"boxpoints":"all","jitter":0.1}];""" + |> chartGeneratedContains BoxPlot.``Simple horizontal boxplot with boxpoints`` + ); + testCase "Box2 layout" ( fun () -> + emptyLayout BoxPlot.``Simple horizontal boxplot with boxpoints`` + ); + testCase "Box3 data" ( fun () -> + """var data = [{"type":"box","name":"bin1","marker":{},"line":{},"boxpoints":"all","jitter":0.1,"x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]},{"type":"box","name":"bin2","marker":{},"line":{},"boxpoints":"all","jitter":0.1,"x":[2.0,1.5,5.0,1.5,2.0,2.5,2.1,2.5,1.5,1.0,2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]}];""" + |> chartGeneratedContains BoxPlot.``Combined chart with 2 horizontal boxplots`` + ); + testCase "Box3 layout" ( fun () -> + emptyLayout BoxPlot.``Combined chart with 2 horizontal boxplots`` + ); ] ] @@ -259,6 +299,27 @@ module Violin = let ``Violin chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Violin" [ + testCase "Violin1 data" ( fun () -> + """var data = [{"type":"violin","x":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{},"box":{},"points":"all"}];""" + |> chartGeneratedContains Violin.``Simple violin plot with jitterpoints`` + ); + testCase "Violin1 layout" ( fun () -> + emptyLayout Violin.``Simple violin plot with jitterpoints`` + ); + testCase "Violin2 data" ( fun () -> + """var data = [{"type":"violin","x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"y":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"orientation":"h","marker":{},"line":{},"box":{},"jitter":0.1,"meanline":{"visible":true},"points":"all"}];""" + |> chartGeneratedContains Violin.``Simple horizontal violin plot with jitterpoints`` + ); + testCase "Violin2 layout" ( fun () -> + emptyLayout Violin.``Simple horizontal violin plot with jitterpoints`` + ); + testCase "Violin3 data" ( fun () -> + """var data = [{"type":"violin","name":"bin1","marker":{},"line":{},"box":{},"jitter":0.1,"points":"all","x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]},{"type":"violin","name":"bin2","marker":{},"line":{},"box":{},"jitter":0.1,"points":"all","x":[2.0,1.5,5.0,1.5,2.0,2.5,2.1,2.5,1.5,1.0,2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]}];""" + |> chartGeneratedContains Violin.``Combined chart with 2 horizontal violin plots`` + ); + testCase "Violin3 layout" ( fun () -> + emptyLayout Violin.``Combined chart with 2 horizontal violin plots`` + ); ] ] @@ -267,6 +328,13 @@ module Histogram2DContour = let ``Histogram2DContour chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Histogram2DContour" [ + testCase "Histo contour data" ( fun () -> + "var data = [{\"type\":\"histogram2dcontour\",\"x\":[-1.566002360265054,-1.833996340961623,-1.0330391275776571,-0.8476993487909306,-0.8471270832604864,-1.021055309868153,-0.5368298779218124,-0.9982579324563884,-0.6367576994858231,-1.433590036163408,-1.3735531103452598" + |> chartGeneratedContains Histogram2DContour.``Histogram2DContour of 2D normal distribution`` + ); + testCase "Histo contour layout" ( fun () -> + emptyLayout Histogram2DContour.``Histogram2DContour of 2D normal distribution`` + ); ] ] @@ -358,6 +426,14 @@ module Contour = let ``Contour chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Contour" [ + testCase "Contour data" ( fun () -> + "var data = [{\"type\":\"contour\",\"z\":[[0.3929110807586562,0.39272903726671055,0.3923748718856843,0.3918384347714509,0.39110921172503726,0.39017633288191317,0.38902858492457726" + |> chartGeneratedContains Contour.``Contour plot with peak and sink`` + ); + testCase "Contour layout" ( fun () -> + "var layout = {\"width\":600,\"height\":600};" + |> chartGeneratedContains Contour.``Contour plot with peak and sink`` + ); ] ] module OHLC = @@ -381,6 +457,13 @@ module Splom = let ``Splom chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Splom" [ + testCase "Scatterplot matrix data" ( fun () -> + """var data = [{"type":"splom","dimensions":[{"label":"A","values":[1.0,4.0,3.4,0.7],"axis":{}},{"label":"B","values":[3.0,1.5,1.7,2.3],"axis":{}},{"label":"C","values":[2.0,4.0,3.1,5.0],"axis":{}},{"label":"D","values":[4.0,2.0,2.0,4.0],"axis":{}}],"marker":{"color":"blue"},"diagonal":{}}];""" + |> chartGeneratedContains Splom.``Simple scatterplot matrix`` + ); + testCase "Scatterplot matrix layout" ( fun () -> + emptyLayout Splom.``Simple scatterplot matrix`` + ); ] ] @@ -389,6 +472,20 @@ module PointDensity = let ``PointDensity chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "PointDensity" [ + testCase "PointDensity data" ( fun () -> + """var data = [{"type":"histogram2dcontour","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"line":{"width":0.0},"contours":{"coloring":"fill","showlines":false}},{"type":"scatter","opacity":0.3,"mode":"markers","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"marker":{}}];""" + |> chartGeneratedContains PointDensity.``Simple PointDensity chart`` + ); + testCase "PointDensity layout" ( fun () -> + emptyLayout PointDensity.``Simple PointDensity chart`` + ); + testCase "PointDensity styled data" ( fun () -> + """var data = [{"type":"histogram2dcontour","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"line":{"width":0.0},"colorbar":{"title":{"text":"Density"}},"colorscale":"Viridis","contours":{"coloring":"fill","showlabels":true,"showlines":false}},{"type":"scatter","opacity":0.3,"mode":"markers","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"marker":{"color":"rgba(128, 0, 128, 1.0)","size":4,"symbol":"4"}}];""" + |> chartGeneratedContains PointDensity.``Styled PointDensity chart`` + ); + testCase "PointDensity styled layout" ( fun () -> + emptyLayout PointDensity.``Styled PointDensity chart`` + ); ] ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/DistributionCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/DistributionCharts.fs deleted file mode 100644 index 0c457aef7..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/DistributionCharts.fs +++ /dev/null @@ -1,306 +0,0 @@ -module Tests.DistributionCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open System - -open TestUtils.HtmlCodegen - -let histoChart = - let rnd = System.Random(5) - let x = [for i=0 to 500 do yield rnd.NextDouble() ] - Chart.Histogram(X = x, UseDefaults = false) - |> Chart.withSize(500, 500) - -[] -let ``Histogram charts`` = - testList "DistributionCharts.Histogram charts" [ - testCase "Histo data" ( fun () -> - // the string is too big to be here fully. - [ - "var data = [{\"type\":\"histogram\",\"x\":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985" - """0.7608672612164483,0.8280196519699039,0.040246858280267035,0.0017312127173557937],"marker":{"pattern":{}}}];""" - ] - |> chartGeneratedContainsList histoChart - ); - testCase "Histo layout" ( fun () -> - "var layout = {\"width\":500,\"height\":500};" - |> chartGeneratedContains histoChart - ); - ] - -let box1Chart = - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] - Chart.BoxPlot(X = x, Y = y,Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All, UseDefaults = false) - -let box2Chart = - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] - Chart.BoxPlot(X = y,Y = x,Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All,Orientation=StyleParam.Orientation.Horizontal, UseDefaults = false) - -let box3Chart = - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let y' = [2.; 1.5; 5.; 1.5; 2.; 2.5; 2.1; 2.5; 1.5; 1.;2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - [ - Chart.BoxPlot(data = y , orientation = StyleParam.Orientation.Horizontal, Name="bin1",Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All, UseDefaults = false); - Chart.BoxPlot(data = y', orientation = StyleParam.Orientation.Horizontal, Name="bin2",Jitter=0.1,BoxPoints=StyleParam.BoxPoints.All, UseDefaults = false); - ] - |> Chart.combine - -[] -let ``Box charts`` = - testList "DistributionCharts.Box charts" [ - testCase "Box1 data" ( fun () -> - """var data = [{"type":"box","x":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{},"boxpoints":"all","jitter":0.1}];""" - |> chartGeneratedContains box1Chart - ); - testCase "Box1 layout" ( fun () -> - emptyLayout box1Chart - ); - testCase "Box2 data" ( fun () -> - """var data = [{"type":"box","x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"y":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"orientation":"h","marker":{},"line":{},"boxpoints":"all","jitter":0.1}];""" - |> chartGeneratedContains box2Chart - ); - testCase "Box2 layout" ( fun () -> - emptyLayout box2Chart - ); - testCase "Box3 data" ( fun () -> - """var data = [{"type":"box","name":"bin1","marker":{},"line":{},"boxpoints":"all","jitter":0.1,"x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]},{"type":"box","name":"bin2","marker":{},"line":{},"boxpoints":"all","jitter":0.1,"x":[2.0,1.5,5.0,1.5,2.0,2.5,2.1,2.5,1.5,1.0,2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]}];""" - |> chartGeneratedContains box3Chart - ); - testCase "Box3 layout" ( fun () -> - emptyLayout box3Chart - ); - ] - - -let violin1Chart = - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] - Chart.Violin ( - X = x, Y = y, - Points=StyleParam.JitterPoints.All, - UseDefaults = false - ) - -let violin2Chart = - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let x = ["bin1";"bin2";"bin1";"bin2";"bin1";"bin2";"bin1";"bin1";"bin2";"bin1"] - Chart.Violin( - X = y, Y = x, - Jitter=0.1, - Points=StyleParam.JitterPoints.All, - Orientation=StyleParam.Orientation.Horizontal, - MeanLine=MeanLine.init(Visible=true), - UseDefaults = false - ) - -let violin3Chart = - let y = [2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - let y' = [2.; 1.5; 5.; 1.5; 2.; 2.5; 2.1; 2.5; 1.5; 1.;2.; 1.5; 5.; 1.5; 3.; 2.5; 2.5; 1.5; 3.5; 1.] - [ - Chart.Violin (data = y , orientation = StyleParam.Orientation.Horizontal, Name="bin1",Jitter=0.1,Points=StyleParam.BoxPoints.All, UseDefaults = false) - Chart.Violin (data = y', orientation = StyleParam.Orientation.Horizontal, Name="bin2",Jitter=0.1,Points=StyleParam.BoxPoints.All, UseDefaults = false) - ] - |> Chart.combine - -[] -let ``Violin charts`` = - testList "DistributionCharts.Violin charts" [ - testCase "Violin1 data" ( fun () -> - """var data = [{"type":"violin","x":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"y":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"marker":{},"line":{},"box":{},"points":"all"}];""" - |> chartGeneratedContains violin1Chart - ); - testCase "Violin1 layout" ( fun () -> - emptyLayout violin1Chart - ); - testCase "Violin2 data" ( fun () -> - """var data = [{"type":"violin","x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0],"y":["bin1","bin2","bin1","bin2","bin1","bin2","bin1","bin1","bin2","bin1"],"orientation":"h","marker":{},"line":{},"box":{},"jitter":0.1,"meanline":{"visible":true},"points":"all"}];""" - |> chartGeneratedContains violin2Chart - ); - testCase "Violin2 layout" ( fun () -> - emptyLayout violin2Chart - ); - testCase "Violin3 data" ( fun () -> - """var data = [{"type":"violin","name":"bin1","marker":{},"line":{},"box":{},"jitter":0.1,"points":"all","x":[2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]},{"type":"violin","name":"bin2","marker":{},"line":{},"box":{},"jitter":0.1,"points":"all","x":[2.0,1.5,5.0,1.5,2.0,2.5,2.1,2.5,1.5,1.0,2.0,1.5,5.0,1.5,3.0,2.5,2.5,1.5,3.5,1.0]}];""" - |> chartGeneratedContains violin3Chart - ); - testCase "Violin3 layout" ( fun () -> - emptyLayout violin3Chart - ); - ] - -let contourChart = - // Generate linearly spaced vector - let linspace (min,max,n) = - if n <= 2 then failwithf "n needs to be larger then 2" - let bw = float (max - min) / (float n - 1.) - [|min ..bw ..max|] - - // Create example data - let size = 100 - let x = linspace(-2. * Math.PI, 2. * Math.PI, size) - let y = linspace(-2. * Math.PI, 2. * Math.PI, size) - - let f x y = - (5. * x / (x**2. + y**2. + 1.) ) - - let z = - Array.init size (fun i -> - Array.init size (fun j -> - f x.[j] y.[i] - ) - ) - - Chart.Contour(zData = z, UseDefaults = false) - |> Chart.withSize(600.,600.) - -[] -let ``Contour charts`` = - testList "DistributionCharts.Contour charts" [ - testCase "Contour data" ( fun () -> - "var data = [{\"type\":\"contour\",\"z\":[[0.3929110807586562,0.39272903726671055,0.3923748718856843,0.3918384347714509,0.39110921172503726,0.39017633288191317,0.38902858492457726" - |> chartGeneratedContains contourChart - ); - testCase "Contour layout" ( fun () -> - "var layout = {\"width\":600,\"height\":600};" - |> chartGeneratedContains contourChart - ); - ] - -let histogramContourChart = - let normal (rnd:System.Random) mu tau = - let mutable v1 = 2.0 * rnd.NextDouble() - 1.0 - let mutable v2 = 2.0 * rnd.NextDouble() - 1.0 - let mutable r = v1 * v1 + v2 * v2 - while (r >= 1.0 || r = 0.0) do - v1 <- 2.0 * rnd.NextDouble() - 1.0 - v2 <- 2.0 * rnd.NextDouble() - 1.0 - r <- v1 * v1 + v2 * v2 - let fac = sqrt(-2.0*(log r)/r) - (tau * v1 * fac + mu) - - let rnd = System.Random(5) - let n = 2000 - let a = -1. - let b = 1.2 - let step i = a + ((b - a) / float (n - 1)) * float i - - //---------------------- generate data distributed in x and y direction ---------------------- - let x = Array.init n (fun i -> ((step i)**3.) + (0.3 * (normal (rnd) 0. 2.) )) - let y = Array.init n (fun i -> ((step i)**6.) + (0.3 * (normal (rnd) 0. 2.) )) - [ - Chart.Histogram2DContour (x = x, y = y,ContourLine=Line.init(Width=0.), UseDefaults = false) - Chart.Point(x = x,y = y,Opacity=0.3, UseDefaults = false) - ] - |> Chart.combine - - -let histogram2DChart = - let normal (rnd:System.Random) mu tau = - let mutable v1 = 2.0 * rnd.NextDouble() - 1.0 - let mutable v2 = 2.0 * rnd.NextDouble() - 1.0 - let mutable r = v1 * v1 + v2 * v2 - while (r >= 1.0 || r = 0.0) do - v1 <- 2.0 * rnd.NextDouble() - 1.0 - v2 <- 2.0 * rnd.NextDouble() - 1.0 - r <- v1 * v1 + v2 * v2 - let fac = sqrt(-2.0*(log r)/r) - (tau * v1 * fac + mu) - - let rnd = System.Random(5) - let n = 2000 - let a = -1. - let b = 1.2 - let step i = a + ((b - a) / float (n - 1)) * float i - - //---------------------- generate data distributed in x and y direction ---------------------- - let x = Array.init n (fun i -> ((step i)**3.) + (0.3 * (normal (rnd) 0. 2.) )) - let y = Array.init n (fun i -> ((step i)**6.) + (0.3 * (normal (rnd) 0. 2.) )) - Chart.Histogram2D (x = x, y = y, UseDefaults = false) - -[] -let ``Histogram 2D charts`` = - testList "DistributionCharts.Histogram charts" [ - testCase "Histo contour data" ( fun () -> - "var data = [{\"type\":\"histogram2dcontour\",\"x\":[-1.566002360265054,-1.833996340961623,-1.0330391275776571,-0.8476993487909306,-0.8471270832604864,-1.021055309868153,-0.5368298779218124,-0.9982579324563884,-0.6367576994858231,-1.433590036163408,-1.3735531103452598" - |> chartGeneratedContains histogramContourChart - ); - testCase "Histo contour layout" ( fun () -> - emptyLayout histogramContourChart - ); - testCase "Histo 2D data" ( fun () -> - "var data = [{\"type\":\"histogram2d\",\"x\":[-1.566002360265054,-1.833996340961623,-1.0330391275776571,-0.8476993487909306,-0.8471270832604864,-1.021055309868153,-0.5368298779218124,-0.9982579324563884,-0.6367576994858231,-1.433590036163408,-1.3735531103452598" - |> chartGeneratedContains histogram2DChart - ); - testCase "Histo 2D layout" ( fun () -> - emptyLayout histogram2DChart - ); - ] - - -let scatterplotMatrixChart = - let data = - [ - "A",[|1.;4.;3.4;0.7;|] - "B",[|3.;1.5;1.7;2.3;|] - "C",[|2.;4.;3.1;5.|] - "D",[|4.;2.;2.;4.;|] - ] - Chart.Splom(keyValues = data, MarkerColor=Color.fromString "blue", UseDefaults = false) - -[] -let ``Scatterplot matrix charts`` = - testList "DistributionCharts.Scatterplot matrix charts" [ - testCase "Scatterplot data" ( fun () -> - """var data = [{"type":"splom","dimensions":[{"label":"A","values":[1.0,4.0,3.4,0.7],"axis":{}},{"label":"B","values":[3.0,1.5,1.7,2.3],"axis":{}},{"label":"C","values":[2.0,4.0,3.1,5.0],"axis":{}},{"label":"D","values":[4.0,2.0,2.0,4.0],"axis":{}}],"marker":{"color":"blue"},"diagonal":{}}];""" - |> chartGeneratedContains scatterplotMatrixChart - ); - testCase "Scatterplot layout" ( fun () -> - emptyLayout scatterplotMatrixChart - ); - ] - -let pointDensityChart = - let rnd = new System.Random(5) - let x = [for i in 0 .. 100 -> rnd.NextDouble()] - let y = [for i in 0 .. 100 -> rnd.NextDouble()] - Chart.PointDensity(x = x,y = y,UseDefaults = false) - -let pointDensityChartStyled = - let rnd = new System.Random(5) - let x = [for i in 0 .. 100 -> rnd.NextDouble()] - let y = [for i in 0 .. 100 -> rnd.NextDouble()] - Chart.PointDensity( - x = x, - y = y, - PointMarkerColor = Color.fromKeyword Purple, - PointMarkerSymbol = StyleParam.MarkerSymbol.X, - PointMarkerSize = 4, - ColorScale = StyleParam.Colorscale.Viridis, - ColorBar = ColorBar.init(Title = Title.init("Density")), - ShowContourLabels = true, - UseDefaults = false - ) - -[] -let ``PointDensity charts`` = - testList "DistributionCharts.PointDensity Charts" [ - testCase "PointDensity data" ( fun () -> - """var data = [{"type":"histogram2dcontour","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"line":{"width":0.0},"contours":{"coloring":"fill","showlines":false}},{"type":"scatter","opacity":0.3,"mode":"markers","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"marker":{}}];""" - |> chartGeneratedContains pointDensityChart - ); - testCase "PointDensity layout" ( fun () -> - emptyLayout pointDensityChart - ); - testCase "PointDensity styled data" ( fun () -> - """var data = [{"type":"histogram2dcontour","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"line":{"width":0.0},"colorbar":{"title":{"text":"Density"}},"colorscale":"Viridis","contours":{"coloring":"fill","showlabels":true,"showlines":false}},{"type":"scatter","opacity":0.3,"mode":"markers","x":[0.33836984091362443,0.2844184475412678,0.2629626417825756,0.6253758443637638,0.46346185284827923,0.9283738280312968,0.1463105539541275,0.9505998873853124,0.5961332552116985,0.11745994590104555,0.975558924477342,0.37088692624628866,0.0699143670824889,0.07078822472635109,0.48201058175508427,0.15297147219673332,0.9641655045394625,0.09534371648698287,0.8125330809562156,0.2506162050415837,0.48126059979259067,0.07473527084790882,0.8369272271343168,0.7793545950107996,0.18997055114711195,0.7421991949631829,0.2328434778530353,0.7856600809775572,0.9278804142623583,0.10790790343094053,0.03301328235911824,0.770361295794305,0.30779169793603556,0.11389689665003536,0.388590590743623,0.9796536713743832,0.17214082375734152,0.7884985966554371,0.1994013894346549,0.7964705586416976,0.3436089406458703,0.10509170037931376,0.9796912223006092,0.8392714871276503,0.5432778380547081,0.1979652751227679,0.038267011306372944,0.5355382620056803,0.6352935864754456,0.8821615948724382,0.9909701128448221,0.9722291035448336,0.2536179266188377,0.5066026125599642,0.19606175189654423,0.2636345700657156,0.447491220406951,0.48360804677177593,0.4354052932166519,0.7212626578850964,0.6955303501782615,0.3606504729765702,0.022719473122954123,0.48822535178075793,0.08444666354192731,0.20519762868303695,0.06309522831025312,0.9560174704324536,0.682197633982728,0.5023569103807011,0.9808306484393918,0.17566690788402545,0.8959423270523279,0.016062522314518,0.9070072643957134,0.37616889941327686,0.0950440485472996,0.9976557400066665,0.2360767569560915,0.9920052760243441,0.70393218365681,0.6973052158473549,0.15036649450211156,0.04571881938992013,0.11693779058611849,0.060784178814284585,0.5167433691754674,0.8011890853760714,0.9178351447534912,0.1249560206779074,0.5321624509674322,0.6885327769855656,0.35309330343878514,0.47813873154955855,0.10094020846343608,0.9829584676693001,0.08237222725635963,0.4914658705198513,0.754824823585723,0.33808020937167116,0.1348700468125148],"y":[0.0822495408739194,0.8533406280229523,0.13293667609474466,0.9013309464330463,0.8153032049607966,0.07628677649250569,0.2375554043043197,0.5995953481642508,0.8198928524832674,0.16859052151841603,0.44983548040028454,0.24753128981568445,0.44340001719230787,0.017330474228286406,0.9982251343309065,0.21028397847445868,0.977000653733034,0.37128756119463946,0.023662484727642725,0.6884542595075696,0.2619061429341818,0.03818232567896243,0.5572416133048207,0.9701944594132688,0.29229787145382624,0.8225736044452403,0.4178035955027694,0.9151223138510819,0.9240487967264135,0.29379667215691724,0.6035781780274483,0.24283091642094354,0.8979965475844204,0.8571352292118293,0.6216826427828905,0.8439645878244026,0.0174298184073669,0.1443878729568738,0.30163458562532186,0.9844974023217788,0.2791879648711476,0.20159373721182056,0.09794229227022375,0.9563654991594914,0.0823269705671477,0.44100148716988113,0.9096932862464773,0.4608082573212722,0.10271507413252959,0.7726744891948414,0.10537157352332564,0.12017830932521183,0.7311623388580802,0.6496259498641016,0.872963903878333,0.04406721519495697,0.29609901471813166,0.16274221668147584,0.6090330749792201,0.9927296005155564,0.6584831809897363,0.3224330904532378,0.6755465514378374,0.5260961803263501,0.5650123434909677,0.20700456397934097,0.34953474223126413,0.5862647879804787,0.3956478314453959,0.15426054650650387,0.19285416006709177,0.8326127807761602,0.06965297556931757,0.03916508240586383,0.409266294636422,0.06031240572236125,0.9402400334087387,0.6008761141453293,0.8878674888461211,0.8512963842839452,0.912880318198763,0.9569953381814972,0.8124072397185523,0.15137430753157208,0.1884250986335916,0.4833998687022365,0.5116685775628633,0.24837059772031875,0.9841713253334963,0.5776154275879336,0.547865573106271,0.8546876017258911,0.5353547979776537,0.30890498510976555,0.3260142213320426,0.9567548744179099,0.5260471857739832,0.5718461119438736,0.3913531556685237,0.8753224065878067,0.09146674493861699],"marker":{"color":"rgba(128, 0, 128, 1.0)","size":4,"symbol":"4"}}];""" - |> chartGeneratedContains pointDensityChartStyled - ); - testCase "PointDensity styled layout" ( fun () -> - emptyLayout pointDensityChartStyled - ); - ] \ No newline at end of file From 4308d80b74cc0a06257abb51017fc0cbc7b8e537 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Tue, 18 Apr 2023 07:38:20 +0200 Subject: [PATCH 18/26] Refactor ChartMap tests --- .../FSharpTestBase/FSharpTestBase.fsproj | 1 + .../TestCharts/Chart2DTestCharts.fs | 2 +- .../TestCharts/ChartMapTestCharts.fs | 250 ++++++++++++++++ tests/Common/FSharpTestBase/TestUtils.fs | 127 +++++++++ tests/CoreTests/CoreTests/CoreTests.fsproj | 3 +- .../CoreTests/HTMLCodegen/Chart2D.fs | 5 +- .../CoreTests/HTMLCodegen/ChartMap.fs | 200 +++++++++++++ .../CoreTests/HTMLCodegen/GeoMapCharts.fs | 269 ------------------ .../CoreTests/HTMLCodegen/MapboxMapCharts.fs | 220 -------------- 9 files changed, 583 insertions(+), 494 deletions(-) create mode 100644 tests/Common/FSharpTestBase/TestCharts/ChartMapTestCharts.fs create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartMap.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/GeoMapCharts.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/MapboxMapCharts.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index 9f63021b0..2d0ba9379 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -15,6 +15,7 @@ + diff --git a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs index acf1c226e..9f04ee636 100644 --- a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs @@ -298,7 +298,7 @@ module Heatmap = |> Chart.withMarginSize(Left=200.) - let ``Simple heatmal with custom colorscale and styled colorbar`` = + let ``Simple heatmap with custom colorscale and styled colorbar`` = let matrix = [[1.;1.5;0.7;2.7]; [2.;0.5;1.2;1.4]; diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartMapTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartMapTestCharts.fs new file mode 100644 index 000000000..d2b734cd7 --- /dev/null +++ b/tests/Common/FSharpTestBase/TestCharts/ChartMapTestCharts.fs @@ -0,0 +1,250 @@ +module ChartMapTestCharts + +open Plotly.NET +open Plotly.NET.TraceObjects +open Plotly.NET.LayoutObjects +open System + +open TestUtils.DataGeneration +open Deedle + +module GeoBaseMap = + + let ``Base map only`` = + Chart.PointGeo(locations = [], UseDefaults = false) // deliberately empty chart to show the base map only + |> Chart.withMarginSize(0, 0, 0, 0) + + let ``styled base map only`` = + let myGeo = + Geo.init( + Resolution=StyleParam.GeoResolution.R50, + ShowCoastLines=true, + CoastLineColor=Color.fromString "RebeccaPurple", + ShowLand=true, + LandColor=Color.fromString "LightGreen", + ShowOcean=true, + OceanColor=Color.fromString "LightBlue", + ShowLakes=true, + LakeColor=Color.fromString "Blue", + ShowRivers=true, + RiverColor=Color.fromString "Blue" + ) + Chart.PointGeo(locations = [], UseDefaults = false) + |> Chart.withGeo myGeo + |> Chart.withMarginSize(0, 0, 0, 0) + + let ``Base map country borders at 1:50m resolution`` = + let countryGeo = + Geo.init( + Visible=false, + Resolution=StyleParam.GeoResolution.R50, + ShowCountries=true, + CountryColor=Color.fromString "RebeccaPurple" + ) + Chart.PointGeo(locations = [], UseDefaults = false) + |> Chart.withGeo countryGeo + |> Chart.withMarginSize(0, 0, 0, 0) + +module ChoroplethMap = + + let ``ChoroplethMap chart of top beverage consumption countries`` = + let locations,z = + beverageConsumptionLocationData + |> List.unzip + + Chart.ChoroplethMap( + locations = locations,z = z, + LocationMode=StyleParam.LocationFormat.CountryNames, + UseDefaults = false + ) + + let ``ChoroplethMap chart of top beverage consumption countries with styled map and projecton`` = + let locations,z = + beverageConsumptionLocationData + |> List.unzip + + Chart.ChoroplethMap( + locations = locations,z = z, + LocationMode=StyleParam.LocationFormat.CountryNames, + UseDefaults = false + ) + |> Chart.withGeoStyle( + Projection=GeoProjection.init(projectionType=StyleParam.GeoProjectionType.Mollweide), + ShowLakes=true, + ShowOcean=true, + OceanColor= Color.fromString "lightblue", + ShowRivers=true) + |> Chart.withColorBarStyle ( + TitleText="Alcohol consumption[l/y]",Len=0.5 + ) + +module ScatterGeo = () + +module PointGeo = + + let ``Point geo chart of canadian cities`` = + + let cityNames = [ + "Montreal"; "Toronto"; "Vancouver"; "Calgary"; "Edmonton"; + "Ottawa"; "Halifax"; "Victoria"; "Winnepeg"; "Regina" + ] + + let lon = [ + -73.57; -79.24; -123.06; -114.1; -113.28; + -75.43; -63.57; -123.21; -97.13; -104.6 + ] + let lat = [ + 45.5; 43.4; 49.13; 51.1; 53.34; 45.24; + 44.64; 48.25; 49.89; 50.45 + ] + Chart.PointGeo( + longitudes = lon, + latitudes = lat, + MultiText=cityNames, + TextPosition=StyleParam.TextPosition.TopCenter, + UseDefaults = false + ) + |> Chart.withGeoStyle( + Scope=StyleParam.GeoScope.NorthAmerica, + Projection=GeoProjection.init(StyleParam.GeoProjectionType.AzimuthalEqualArea), + CountryColor = Color.fromString "lightgrey" + ) + |> Chart.withMarginSize(0, 0, 0, 0) + + +module LineGeo = + + let ``LineGeo plot of feb. 2011 American Airline flights`` = + let data = + FlightData + |> fun csv -> Frame.ReadCsvString(csv,true,separators=",") + + let opacityVals : float [] = data.["cnt"] |> Series.values |> fun s -> s |> Seq.map (fun v -> v/(Seq.max s)) |> Array.ofSeq + let startCoords = Series.zipInner data.["start_lon"] data.["start_lat"] + let endCoords = Series.zipInner data.["end_lon"] data.["end_lat"] + let coords = Series.zipInner startCoords endCoords |> Series.values + + coords + |> Seq.mapi (fun i (startCoords,endCoords) -> + Chart.LineGeo( + lonlat = [startCoords; endCoords], + Opacity = opacityVals.[i], + MarkerColor = Color.fromString "red", + UseDefaults = false + ) + ) + |> Chart.combine + |> Chart.withLegend(false) + |> Chart.withGeoStyle( + Scope=StyleParam.GeoScope.NorthAmerica, + Projection=GeoProjection.init(StyleParam.GeoProjectionType.AzimuthalEqualArea), + ShowLand=true, + LandColor = Color.fromString "lightgrey" + ) + |> Chart.withMarginSize(0,0,50,0) + |> Chart.withTitle "Feb. 2011 American Airline flights" + +module MapboxBaseMap = + let ``Open streetmap layer only`` = + + Chart.PointMapbox( + longitudes = [], + latitudes = [], + UseDefaults = false + ) + // open street map is default layer + +module ScatterMapbox = () + +module PointMapbox = + + let ``Point mapbox chart of canadian cities`` = + let cityNames = [ + "Montreal"; "Toronto"; "Vancouver"; "Calgary"; "Edmonton"; + "Ottawa"; "Halifax"; "Victoria"; "Winnepeg"; "Regina" + ] + + let lon = [ + -73.57; -79.24; -123.06; -114.1; -113.28; + -75.43; -63.57; -123.21; -97.13; -104.6 + ] + + let lat = [ + 45.5; 43.4; 49.13; 51.1; 53.34; 45.24; + 44.64; 48.25; 49.89; 50.45 + ] + + Chart.PointMapbox( + longitudes = lon, + latitudes = lat, + MultiText = cityNames, + TextPosition = StyleParam.TextPosition.TopCenter, + UseDefaults = false + ) + |> Chart.withMapbox( + Mapbox.init( + Center=(-104.6,50.45) + ) + ) + +module LineMapbox = + + let ``LineMapbox plot of feb. 2011 American Airline flights`` = + + let data = + FlightData + |> fun csv -> Frame.ReadCsvString(csv,true,separators=",") + + let opacityVals : float [] = data.["cnt"] |> Series.values |> fun s -> s |> Seq.map (fun v -> v/(Seq.max s)) |> Array.ofSeq + let startCoords = Series.zipInner data.["start_lon"] data.["start_lat"] + let endCoords = Series.zipInner data.["end_lon"] data.["end_lat"] + let coords = Series.zipInner startCoords endCoords |> Series.values + + coords + |> Seq.mapi (fun i (startCoords,endCoords) -> + Chart.LineMapbox( + lonlat = [startCoords; endCoords], + Opacity = opacityVals.[i], + LineColor = Color.fromString "red", + UseDefaults = false + ) + ) + |> Chart.combine + |> Chart.withLegend(false) + |> Chart.withMapbox( + Mapbox.init( + Center=(-97.0372,32.8959) + ) + ) + |> Chart.withMarginSize(0,0,50,0) + |> Chart.withTitle "Feb. 2011 American Airline flights" + + +module BubbleMapbox = () + +module ChoroplethMapbox = () + +module DensityMapbox = + + let ``Density mapbox chart of earthquakes`` = + let dataDensityMapbox = + EarthquakeData + |> fun d -> Frame.ReadCsvString(d,true,separators=",") + + let lon = dataDensityMapbox.["Longitude"] |> Series.values + let lat= dataDensityMapbox.["Latitude"] |> Series.values + let magnitudes = dataDensityMapbox.["Magnitude"] |> Series.values + Chart.DensityMapbox( + longitudes = lon, + latitudes = lat, + Z = magnitudes, + Radius=8, + ColorScale=StyleParam.Colorscale.Viridis, + UseDefaults = false + ) + |> Chart.withMapbox( + Mapbox.init( + Style = StyleParam.MapboxStyle.StamenTerrain, + Center = (60.,30.) + ) + ) diff --git a/tests/Common/FSharpTestBase/TestUtils.fs b/tests/Common/FSharpTestBase/TestUtils.fs index 5d36caa3b..b8460a27c 100644 --- a/tests/Common/FSharpTestBase/TestUtils.fs +++ b/tests/Common/FSharpTestBase/TestUtils.fs @@ -37,6 +37,133 @@ module DataGeneration = let fac = sqrt(-2.0*(log r)/r) (tau * v1 * fac + mu) + // this is not the original string, but its few first entries + let [] FlightData = """start_lat,start_lon,end_lat,end_lon,airline,airport1,airport2,cnt +32.89595056,-97.0372,35.04022222,-106.6091944,AA,DFW,ABQ,444 +41.979595,-87.90446417,30.19453278,-97.66987194,AA,ORD,AUS,166 +32.89595056,-97.0372,41.93887417,-72.68322833,AA,DFW,BDL,162 +18.43941667,-66.00183333,41.93887417,-72.68322833,AA,SJU,BDL,56 +32.89595056,-97.0372,33.56294306,-86.75354972,AA,DFW,BHM,168 +25.79325,-80.29055556,36.12447667,-86.67818222,AA,MIA,BNA,56 +32.89595056,-97.0372,42.3643475,-71.00517917,AA,DFW,BOS,422 +25.79325,-80.29055556,42.3643475,-71.00517917,AA,MIA,BOS,392 +41.979595,-87.90446417,42.3643475,-71.00517917,AA,ORD,BOS,430 +18.43941667,-66.00183333,42.3643475,-71.00517917,AA,SJU,BOS,56 +18.33730556,-64.97336111,42.3643475,-71.00517917,AA,STT,BOS,44 +25.79325,-80.29055556,39.17540167,-76.66819833,AA,MIA,BWI,112""" + + let [] EarthquakeData ="""Date,Latitude,Longitude,Magnitude +01/02/1965,19.246,145.616,6.0 +01/04/1965,1.8630000000000002,127.352,5.8 +01/05/1965,-20.579,-173.972,6.2 +01/08/1965,-59.076,-23.557,5.8 +01/09/1965,11.937999999999999,126.427,5.8 +01/10/1965,-13.405,166.62900000000002,6.7 +01/12/1965,27.357,87.867,5.9 +01/15/1965,-13.309000000000001,166.21200000000002,6.0 +01/16/1965,-56.452,-27.043000000000003,6.0 +01/17/1965,-24.563000000000002,178.487,5.8 +01/17/1965,-6.807,108.988,5.9 +01/24/1965,-2.608,125.95200000000001,8.2 +01/29/1965,54.636,161.703,5.5 +02/01/1965,-18.697,-177.864,5.6 +02/02/1965,37.523,73.251,6.0 +02/04/1965,-51.84,139.741,6.1 +02/04/1965,51.251000000000005,178.715,8.7 +02/04/1965,51.638999999999996,175.055,6.0 +02/04/1965,52.528,172.007,5.7 +02/04/1965,51.626000000000005,175.74599999999998,5.8 +02/04/1965,51.037,177.84799999999998,5.9 +02/04/1965,51.73,173.975,5.9 +02/04/1965,51.775,173.058,5.7 +02/04/1965,52.611000000000004,172.588,5.7 +02/04/1965,51.831,174.368,5.7 +02/04/1965,51.948,173.96900000000002,5.6 +02/04/1965,51.443000000000005,179.605,7.3 +02/04/1965,52.773,171.97400000000002,6.5 +02/04/1965,51.772,174.696,5.6 +02/04/1965,52.975,171.09099999999998,6.4 +02/04/1965,52.99,170.87400000000002,5.8 +02/04/1965,51.536,175.045,5.8 +02/04/1965,13.245,-44.922,5.8 +02/04/1965,51.812,174.206,5.7 +02/05/1965,51.762,174.84099999999998,5.7 +02/05/1965,52.438,174.321,6.3 +02/05/1965,51.946000000000005,173.84,5.7 +02/05/1965,51.738,174.56599999999997,6.0 +02/05/1965,51.486999999999995,176.558,5.6 +02/06/1965,53.008,-162.00799999999998,6.4 +02/06/1965,52.184,175.505,6.2 +02/06/1965,52.076,172.918,5.6 +02/06/1965,51.744,175.213,5.7 +02/06/1965,52.056999999999995,174.11599999999999,5.7 +02/06/1965,53.191,-161.859,6.3 +02/06/1965,51.446999999999996,176.46900000000002,5.8 +02/07/1965,51.258,173.393,5.7 +02/07/1965,52.031000000000006,175.41099999999997,5.7 +02/07/1965,51.294,179.092,5.8 +02/08/1965,55.223,165.426,5.9 +02/09/1965,-18.718,169.386,5.6 +02/09/1965,52.815,171.90400000000002,6.0 +02/12/1965,52.188,172.752,5.8 +02/15/1965,51.00899999999999,179.325,5.8 +02/15/1965,3.0260000000000002,125.95100000000001,5.9 +02/16/1965,38.908,142.095,5.7 +02/17/1965,51.693999999999996,176.446,5.7 +02/17/1965,21.526999999999997,143.08100000000002,5.6 +02/18/1965,25.011,94.186,5.6""" + + + let beverageConsumptionLocationData = [ + ("Belarus",17.5); ("Moldova",16.8);("Lithuania",15.4);("Russia",15.1); + ("Romania",14.4);("Ukraine",13.9);("Andorra",13.8);("Hungary",13.3); + ("Czech Republic",13.);("Slovakia",13.);("Portugal",12.9);("Serbia",12.6); + ("Grenada",12.5);("Poland",12.5);("Latvia",12.3);("Finland",12.3); + ("South Korea",12.3);("France",12.2);("Australia",12.2);("Croatia",12.2); + ("Ireland",11.9);("Luxembourg",11.9);("Germany",11.8);("Slovenia",11.6); + ("United Kingdom",11.6);("Denmark",11.4);("Bulgaria",11.4);("Spain",11.2); + ("Belgium",11.);("South Africa",11.);("New Zealand",10.9);("Gabon",10.9); + ("Namibia",10.8);("Switzerland",10.7);("Saint Lucia",10.4);("Austria",10.3); + ("Estonia",10.3);("Greece",10.3);("Kazakhstan",10.3);("Canada",10.2); + ("Nigeria",10.1);("Netherlands",9.9);("Uganda",9.8);("Rwanda",9.8); + ("Chile",9.6);("Argentina",9.3);("Burundi",9.3);("United States",9.2); + ("Cyprus",9.2);("Sweden",9.2);("Venezuela",8.9);("Paraguay",8.8);("Brazil",8.7); + ("Sierra Leone",8.7);("Montenegro",8.7);("Belize",8.5);("Cameroon",8.4); + ("Botswana",8.4);("Saint Kitts and Nevis",8.2);("Guyana",8.1);("Peru",8.1); + ("Panama",8.);("Niue",8.);("Palau",7.9);("Norway",7.7);("Tanzania",7.7); + ("Georgia",7.7);("Uruguay",7.6);("Angola",7.5);("Laos",7.3);("Japan",7.2); + ("Mexico",7.2);("Ecuador",7.2);("Dominica",7.1);("Iceland",7.1); + ("Thailand",7.1);("Bosnia and Herzegovina",7.1);("Sao Tome and Principe",7.1); + ("Malta",7.);("Albania",7.);("Bahamas",6.9);("Dominican Republic",6.9); + ("Mongolia",6.9);("Cape Verde",6.9);("Barbados",6.8);("Burkina Faso",6.8); + ("Italy",6.7);("Trinidad and Tobago",6.7);("China",6.7);("Macedonia",6.7); + ("Saint Vincent and the Grenadines",6.6);("Equatorial Guinea",6.6); + ("Suriname",6.6);("Vietnam",6.6);("Lesotho",6.5);("Haiti",6.4); + ("Cook Islands",6.4);("Colombia",6.2);("Ivory Coast",6.);("Bolivia",5.9); + ("Swaziland",5.7);("Zimbabwe",5.7);("Seychelles",5.6);("Cambodia",5.5); + ("Puerto Rico",5.4);("Netherlands Antilles",5.4);("Philippines",5.4); + ("Costa Rica",5.4);("Armenia",5.3);("Cuba",5.2);("Nicaragua",5.); + ("Jamaica",4.9);("Ghana",4.8);("Liberia",4.7);("Uzbekistan",4.6); + ("Chad",4.4);("United Arab Emirates",4.3);("Kyrgyzstan",4.3);("India",4.3); + ("Turkmenistan",4.3);("Kenya",4.3);("Ethiopia",4.2);("Honduras",4.); + ("Guinea-Bissau",4.);("Zambia",4.);("Republic of the Congo",3.9);("Guatemala",3.8); + ("Central African Republic",3.8);("North Korea",3.7);("Sri Lanka",3.7); + ("Mauritius",3.6);("Samoa",3.6);("Democratic Republic of the Congo",3.6); + ("Nauru",3.5);("Gambia",3.4);("Federated States of Micronesia",3.3); + ("El Salvador",3.2);("Fiji",3.);("Papua New Guinea",3.);("Kiribati",3.); + ("Tajikistan",2.8);("Israel",2.8);("Sudan",2.7);("Malawi",2.5);("Lebanon",2.4); + ("Azerbaijan",2.3);("Mozambique",2.3);("Togo",2.3);("Nepal",2.2);("Brunei",2.1); + ("Benin",2.1);("Singapore",2.);("Turkey",2.);("Madagascar",1.8);("Solomon Islands",1.7); + ("Tonga",1.6);("Tunisia",1.5);("Tuvalu",1.5);("Qatar",1.5);("Vanuatu",1.4); + ("Djibouti",1.3);("Malaysia",1.3);("Syria",1.2);("Maldives",1.2);("Mali",1.1); + ("Eritrea",1.1);("Algeria",1.);("Iran",1.);("Oman",0.9);("Brunei",0.9); + ("Morocco",0.9);("Jordan",0.7);("Bhutan",0.7);("Guinea",0.7);("Burma",0.7); + ("Afghanistan",0.7);("Senegal",0.6);("Indonesia",0.6);("Timor-Leste",0.6); + ("Iraq",0.5);("Somalia",0.5);("Egypt",0.4);("Niger",0.3);("Yemen",0.3); + ("Comoros",0.2);("Saudi Arabia",0.2);("Bangladesh",0.2);("Kuwait",0.1); + ("Libya",0.1);("Mauritania",0.1);("Pakistan",0.1); + ] + module HtmlCodegen = let getLogoPNG() = diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index d2340c1ea..259f6c2cf 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -13,6 +13,7 @@ + @@ -29,8 +30,6 @@ - - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs index d7b1433f7..2466b993f 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs @@ -353,11 +353,11 @@ module Heatmap = ); testCase "Heatmap styled data" ( fun () -> """var data = [{"type":"heatmap","x":["Tp0","Tp30","Tp60","Tp160"],"y":["p3","p2","p1"],"z":[[1.0,1.5,0.7,2.7],[2.0,0.5,1.2,1.4],[0.1,2.6,2.4,3.0]],"colorscale":[[0.0,"#3D9970"],[1.0,"#001f3f"]],"showscale":true,"colorbar":{"title":{"text":"Im the Colorbar"}}}];""" - |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` + |> chartGeneratedContains Heatmap.``Simple heatmap with custom colorscale and styled colorbar`` ); testCase "Heatmap styled layout" ( fun () -> "var layout = {\"width\":700,\"height\":500,\"margin\":{\"l\":200.0}};" - |> chartGeneratedContains Heatmap.``Simple heatmal with custom colorscale and styled colorbar`` + |> chartGeneratedContains Heatmap.``Simple heatmap with custom colorscale and styled colorbar`` ); ] ] @@ -436,6 +436,7 @@ module Contour = ); ] ] + module OHLC = [] let ``OHLC chart HTML codegeneration tests`` = diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap.fs new file mode 100644 index 000000000..70f93e70d --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartMap.fs @@ -0,0 +1,200 @@ +module CoreTests.HTMLCodegen.ChartMap + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +open ChartMapTestCharts + +module GeoBaseMap = + [] + let ``GeoBaseMap chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "GeoBaseMap" [ + testCase "Basemap data" ( fun () -> + """var data = [{"type":"scattergeo","mode":"markers","locations":[],"marker":{},"line":{}}];""" + |> chartGeneratedContains GeoBaseMap.``Base map only`` + ); + testCase "Basemap layout" ( fun () -> + "var layout = {\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" + |> chartGeneratedContains GeoBaseMap.``Base map only`` + ); + testCase "More features map data" ( fun () -> + """var data = [{"type":"scattergeo","mode":"markers","locations":[],"marker":{},"line":{}}];""" + |> chartGeneratedContains GeoBaseMap.``styled base map only`` + ); + testCase "More features map layout" ( fun () -> + "var layout = {\"geo\":{\"resolution\":\"50\",\"showcoastline\":true,\"coastlinecolor\":\"RebeccaPurple\",\"showland\":true,\"landcolor\":\"LightGreen\",\"showocean\":true,\"oceancolor\":\"LightBlue\",\"showlakes\":true,\"lakecolor\":\"Blue\",\"showrivers\":true,\"rivercolor\":\"Blue\"},\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" + |> chartGeneratedContains GeoBaseMap.``styled base map only`` + ); + testCase "Cultural map data" ( fun () -> + """var data = [{"type":"scattergeo","mode":"markers","locations":[],"marker":{},"line":{}}];""" + |> chartGeneratedContains GeoBaseMap.``Base map country borders at 1:50m resolution`` + ); + testCase "Cultural map layout" ( fun () -> + "var layout = {\"geo\":{\"resolution\":\"50\",\"visible\":false,\"showcountries\":true,\"countrycolor\":\"RebeccaPurple\"},\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" + |> chartGeneratedContains GeoBaseMap.``Base map country borders at 1:50m resolution`` + ); + ] + ] + +module ChoroplethMap = + [] + let ``ChoroplethMap chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "ChoroplethMap" [ + testCase "Choropleth map 1 data" ( fun () -> + """var data = [{"type":"choropleth","z":[17.5,16.8,15.4,15.1,14.4,13.9,13.8,13.3,13.0,13.0,12.9,12.6,12.5,12.5,12.3,12.3,12.3,12.2,12.2,12.2,11.9,11.9,11.8,11.6,11.6,11.4,11.4,11.2,11.0,11.0,10.9,10.9,10.8,10.7,10.4,10.3,10.3,10.3,10.3,10.2,10.1,9.9,9.8,9.8,9.6,9.3,9.3,9.2,9.2,9.2,8.9,8.8,8.7,8.7,8.7,8.5,8.4,8.4,8.2,8.1,8.1,8.0,8.0,7.9,7.7,7.7,7.7,7.6,7.5,7.3,7.2,7.2,7.2,7.1,7.1,7.1,7.1,7.1,7.0,7.0,6.9,6.9,6.9,6.9,6.8,6.8,6.7,6.7,6.7,6.7,6.6,6.6,6.6,6.6,6.5,6.4,6.4,6.2,6.0,5.9,5.7,5.7,5.6,5.5,5.4,5.4,5.4,5.4,5.3,5.2,5.0,4.9,4.8,4.7,4.6,4.4,4.3,4.3,4.3,4.3,4.3,4.2,4.0,4.0,4.0,3.9,3.8,3.8,3.7,3.7,3.6,3.6,3.6,3.5,3.4,3.3,3.2,3.0,3.0,3.0,2.8,2.8,2.7,2.5,2.4,2.3,2.3,2.3,2.2,2.1,2.1,2.0,2.0,1.8,1.7,1.6,1.5,1.5,1.5,1.4,1.3,1.3,1.2,1.2,1.1,1.1,1.0,1.0,0.9,0.9,0.9,0.7,0.7,0.7,0.7,0.7,0.6,0.6,0.6,0.5,0.5,0.4,0.3,0.3,0.2,0.2,0.2,0.1,0.1,0.1,0.1],"locations":["Belarus","Moldova","Lithuania","Russia","Romania","Ukraine","Andorra","Hungary","Czech Republic","Slovakia","Portugal","Serbia","Grenada","Poland","Latvia","Finland","South Korea","France","Australia","Croatia","Ireland","Luxembourg","Germany","Slovenia","United Kingdom","Denmark","Bulgaria","Spain","Belgium","South Africa","New Zealand","Gabon","Namibia","Switzerland","Saint Lucia","Austria","Estonia","Greece","Kazakhstan","Canada","Nigeria","Netherlands","Uganda","Rwanda","Chile","Argentina","Burundi","United States","Cyprus","Sweden","Venezuela","Paraguay","Brazil","Sierra Leone","Montenegro","Belize","Cameroon","Botswana","Saint Kitts and Nevis","Guyana","Peru","Panama","Niue","Palau","Norway","Tanzania","Georgia","Uruguay","Angola","Laos","Japan","Mexico","Ecuador","Dominica","Iceland","Thailand","Bosnia and Herzegovina","Sao Tome and Principe","Malta","Albania","Bahamas","Dominican Republic","Mongolia","Cape Verde","Barbados","Burkina Faso","Italy","Trinidad and Tobago","China","Macedonia","Saint Vincent and the Grenadines","Equatorial Guinea","Suriname","Vietnam","Lesotho","Haiti","Cook Islands","Colombia","Ivory Coast","Bolivia","Swaziland","Zimbabwe","Seychelles","Cambodia","Puerto Rico","Netherlands Antilles","Philippines","Costa Rica","Armenia","Cuba","Nicaragua","Jamaica","Ghana","Liberia","Uzbekistan","Chad","United Arab Emirates","Kyrgyzstan","India","Turkmenistan","Kenya","Ethiopia","Honduras","Guinea-Bissau","Zambia","Republic of the Congo","Guatemala","Central African Republic","North Korea","Sri Lanka","Mauritius","Samoa","Democratic Republic of the Congo","Nauru","Gambia","Federated States of Micronesia","El Salvador","Fiji","Papua New Guinea","Kiribati","Tajikistan","Israel","Sudan","Malawi","Lebanon","Azerbaijan","Mozambique","Togo","Nepal","Brunei","Benin","Singapore","Turkey","Madagascar","Solomon Islands","Tonga","Tunisia","Tuvalu","Qatar","Vanuatu","Djibouti","Malaysia","Syria","Maldives","Mali","Eritrea","Algeria","Iran","Oman","Brunei","Morocco","Jordan","Bhutan","Guinea","Burma","Afghanistan","Senegal","Indonesia","Timor-Leste","Iraq","Somalia","Egypt","Niger","Yemen","Comoros","Saudi Arabia","Bangladesh","Kuwait","Libya","Mauritania","Pakistan"],"locationmode":"country names"}];""" + |> chartGeneratedContains ChoroplethMap.``ChoroplethMap chart of top beverage consumption countries`` + ); + testCase "Choropleth map 1 layout" ( fun () -> + emptyLayout ChoroplethMap.``ChoroplethMap chart of top beverage consumption countries`` + ); + testCase "Choropleth map 2 data" ( fun () -> + """var data = [{"type":"choropleth","z":[17.5,16.8,15.4,15.1,14.4,13.9,13.8,13.3,13.0,13.0,12.9,12.6,12.5,12.5,12.3,12.3,12.3,12.2,12.2,12.2,11.9,11.9,11.8,11.6,11.6,11.4,11.4,11.2,11.0,11.0,10.9,10.9,10.8,10.7,10.4,10.3,10.3,10.3,10.3,10.2,10.1,9.9,9.8,9.8,9.6,9.3,9.3,9.2,9.2,9.2,8.9,8.8,8.7,8.7,8.7,8.5,8.4,8.4,8.2,8.1,8.1,8.0,8.0,7.9,7.7,7.7,7.7,7.6,7.5,7.3,7.2,7.2,7.2,7.1,7.1,7.1,7.1,7.1,7.0,7.0,6.9,6.9,6.9,6.9,6.8,6.8,6.7,6.7,6.7,6.7,6.6,6.6,6.6,6.6,6.5,6.4,6.4,6.2,6.0,5.9,5.7,5.7,5.6,5.5,5.4,5.4,5.4,5.4,5.3,5.2,5.0,4.9,4.8,4.7,4.6,4.4,4.3,4.3,4.3,4.3,4.3,4.2,4.0,4.0,4.0,3.9,3.8,3.8,3.7,3.7,3.6,3.6,3.6,3.5,3.4,3.3,3.2,3.0,3.0,3.0,2.8,2.8,2.7,2.5,2.4,2.3,2.3,2.3,2.2,2.1,2.1,2.0,2.0,1.8,1.7,1.6,1.5,1.5,1.5,1.4,1.3,1.3,1.2,1.2,1.1,1.1,1.0,1.0,0.9,0.9,0.9,0.7,0.7,0.7,0.7,0.7,0.6,0.6,0.6,0.5,0.5,0.4,0.3,0.3,0.2,0.2,0.2,0.1,0.1,0.1,0.1],"locations":["Belarus","Moldova","Lithuania","Russia","Romania","Ukraine","Andorra","Hungary","Czech Republic","Slovakia","Portugal","Serbia","Grenada","Poland","Latvia","Finland","South Korea","France","Australia","Croatia","Ireland","Luxembourg","Germany","Slovenia","United Kingdom","Denmark","Bulgaria","Spain","Belgium","South Africa","New Zealand","Gabon","Namibia","Switzerland","Saint Lucia","Austria","Estonia","Greece","Kazakhstan","Canada","Nigeria","Netherlands","Uganda","Rwanda","Chile","Argentina","Burundi","United States","Cyprus","Sweden","Venezuela","Paraguay","Brazil","Sierra Leone","Montenegro","Belize","Cameroon","Botswana","Saint Kitts and Nevis","Guyana","Peru","Panama","Niue","Palau","Norway","Tanzania","Georgia","Uruguay","Angola","Laos","Japan","Mexico","Ecuador","Dominica","Iceland","Thailand","Bosnia and Herzegovina","Sao Tome and Principe","Malta","Albania","Bahamas","Dominican Republic","Mongolia","Cape Verde","Barbados","Burkina Faso","Italy","Trinidad and Tobago","China","Macedonia","Saint Vincent and the Grenadines","Equatorial Guinea","Suriname","Vietnam","Lesotho","Haiti","Cook Islands","Colombia","Ivory Coast","Bolivia","Swaziland","Zimbabwe","Seychelles","Cambodia","Puerto Rico","Netherlands Antilles","Philippines","Costa Rica","Armenia","Cuba","Nicaragua","Jamaica","Ghana","Liberia","Uzbekistan","Chad","United Arab Emirates","Kyrgyzstan","India","Turkmenistan","Kenya","Ethiopia","Honduras","Guinea-Bissau","Zambia","Republic of the Congo","Guatemala","Central African Republic","North Korea","Sri Lanka","Mauritius","Samoa","Democratic Republic of the Congo","Nauru","Gambia","Federated States of Micronesia","El Salvador","Fiji","Papua New Guinea","Kiribati","Tajikistan","Israel","Sudan","Malawi","Lebanon","Azerbaijan","Mozambique","Togo","Nepal","Brunei","Benin","Singapore","Turkey","Madagascar","Solomon Islands","Tonga","Tunisia","Tuvalu","Qatar","Vanuatu","Djibouti","Malaysia","Syria","Maldives","Mali","Eritrea","Algeria","Iran","Oman","Brunei","Morocco","Jordan","Bhutan","Guinea","Burma","Afghanistan","Senegal","Indonesia","Timor-Leste","Iraq","Somalia","Egypt","Niger","Yemen","Comoros","Saudi Arabia","Bangladesh","Kuwait","Libya","Mauritania","Pakistan"],"locationmode":"country names","colorbar":{"len":0.5,"title":{"text":"Alcohol consumption[l/y]"}}}];""" + |> chartGeneratedContains ChoroplethMap.``ChoroplethMap chart of top beverage consumption countries with styled map and projecton`` + ); + testCase "Choropleth map 2 layout" ( fun () -> + "var layout = {\"geo\":{\"projection\":{\"type\":\"mollweide\"},\"showocean\":true,\"oceancolor\":\"lightblue\",\"showlakes\":true,\"showrivers\":true}};" + |> chartGeneratedContains ChoroplethMap.``ChoroplethMap chart of top beverage consumption countries with styled map and projecton`` + ); + ] + ] + +module ScatterGeo = + [] + let ``ScatterGeo chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "ScatterGeo" [ + ] + ] + +module PointGeo = + [] + let ``PointGeo chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "PointGeo" [ + testCase "Point geo data" ( fun () -> + """var data = [{"type":"scattergeo","mode":"markers+text","lat":[45.5,43.4,49.13,51.1,53.34,45.24,44.64,48.25,49.89,50.45],"lon":[-73.57,-79.24,-123.06,-114.1,-113.28,-75.43,-63.57,-123.21,-97.13,-104.6],"text":["Montreal","Toronto","Vancouver","Calgary","Edmonton","Ottawa","Halifax","Victoria","Winnepeg","Regina"],"textposition":"top center","marker":{},"line":{}}];""" + |> chartGeneratedContains PointGeo.``Point geo chart of canadian cities`` + ); + testCase "Point geo layout" ( fun () -> + "var layout = {\"geo\":{\"scope\":\"north america\",\"projection\":{\"type\":\"azimuthal equal area\"},\"countrycolor\":\"lightgrey\"},\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" + |> chartGeneratedContains PointGeo.``Point geo chart of canadian cities`` + ); + ] + ] + +module LineGeo = + [] + let ``LineGeo chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "LineGeo" [ + testCase "Flight map data" ( fun () -> + """var data = [{"type":"scattergeo","opacity":1.0,"mode":"lines","lat":[32.89595056,35.04022222],"lon":[-97.0372,-106.6091944],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.3738738738738739,"mode":"lines","lat":[41.979595,30.19453278],"lon":[-87.90446417,-97.66987194],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.36486486486486486,"mode":"lines","lat":[32.89595056,41.93887417],"lon":[-97.0372,-72.68322833],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.12612612612612611,"mode":"lines","lat":[18.43941667,41.93887417],"lon":[-66.00183333,-72.68322833],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.3783783783783784,"mode":"lines","lat":[32.89595056,33.56294306],"lon":[-97.0372,-86.75354972],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.12612612612612611,"mode":"lines","lat":[25.79325,36.12447667],"lon":[-80.29055556,-86.67818222],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.9504504504504504,"mode":"lines","lat":[32.89595056,42.3643475],"lon":[-97.0372,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.8828828828828829,"mode":"lines","lat":[25.79325,42.3643475],"lon":[-80.29055556,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.9684684684684685,"mode":"lines","lat":[41.979595,42.3643475],"lon":[-87.90446417,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.12612612612612611,"mode":"lines","lat":[18.43941667,42.3643475],"lon":[-66.00183333,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.0990990990990991,"mode":"lines","lat":[18.33730556,42.3643475],"lon":[-64.97336111,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.25225225225225223,"mode":"lines","lat":[25.79325,39.17540167],"lon":[-80.29055556,-76.66819833],"marker":{"color":"red"},"line":{}}];""" + |> chartGeneratedContains LineGeo.``LineGeo plot of feb. 2011 American Airline flights`` + ); + testCase "Flight map layout" ( fun () -> + "var layout = {\"showlegend\":false,\"geo\":{\"scope\":\"north america\",\"projection\":{\"type\":\"azimuthal equal area\"},\"showland\":true,\"landcolor\":\"lightgrey\"},\"margin\":{\"l\":0,\"r\":0,\"t\":50,\"b\":0},\"title\":{\"text\":\"Feb. 2011 American Airline flights\"}};" + |> chartGeneratedContains LineGeo.``LineGeo plot of feb. 2011 American Airline flights`` + ); + ] + ] + +module BubbleGeo = + [] + let ``BubbleGeo chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "BubbleGeo" [ + ] + ] + +module MapboxBaseMap = + [] + let ``Mapbox base map chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "MapboxBaseMap" [ + testCase "Mapbox open streetmap layer only data" ( fun () -> + """var data = [{"type":"scattermapbox","mode":"markers","lat":[],"lon":[],"cluster":{},"marker":{},"line":{}}];""" + |> chartGeneratedContains MapboxBaseMap.``Open streetmap layer only`` + ); + testCase "Mapbox open streetmap layer only layout" ( fun () -> + "var layout = {\"mapbox\":{\"style\":\"open-street-map\"}};" + |> chartGeneratedContains MapboxBaseMap.``Open streetmap layer only`` + ); + ] + ] + +module ScatterMapbox = + [] + let ``ScatterMapbox chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "ScatterMapbox" [ + ] + ] + +module PointMapbox = + [] + let ``PointMapbox chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "PointMapbox" [ + testCase "Point mapbox data" ( fun () -> + """var data = [{"type":"scattermapbox","mode":"markers+text","lat":[45.5,43.4,49.13,51.1,53.34,45.24,44.64,48.25,49.89,50.45],"lon":[-73.57,-79.24,-123.06,-114.1,-113.28,-75.43,-63.57,-123.21,-97.13,-104.6],"cluster":{},"text":["Montreal","Toronto","Vancouver","Calgary","Edmonton","Ottawa","Halifax","Victoria","Winnepeg","Regina"],"textposition":"top center","marker":{},"line":{}}];""" + |> chartGeneratedContains PointMapbox.``Point mapbox chart of canadian cities`` + ); + testCase "Point mapbox layout" ( fun () -> + "var layout = {\"mapbox\":{\"style\":\"open-street-map\",\"center\":{\"lon\":-104.6,\"lat\":50.45}}};" + |> chartGeneratedContains PointMapbox.``Point mapbox chart of canadian cities`` + ); + ] + ] +module LineMapbox = + [] + let ``LineMapbox chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "LineMapbox" [ + testCase "Flights mapbox data" ( fun () -> + """var data = [{"type":"scattermapbox","opacity":1.0,"mode":"lines","lat":[32.89595056,35.04022222],"lon":[-97.0372,-106.6091944],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.3738738738738739,"mode":"lines","lat":[41.979595,30.19453278],"lon":[-87.90446417,-97.66987194],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.36486486486486486,"mode":"lines","lat":[32.89595056,41.93887417],"lon":[-97.0372,-72.68322833],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.12612612612612611,"mode":"lines","lat":[18.43941667,41.93887417],"lon":[-66.00183333,-72.68322833],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.3783783783783784,"mode":"lines","lat":[32.89595056,33.56294306],"lon":[-97.0372,-86.75354972],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.12612612612612611,"mode":"lines","lat":[25.79325,36.12447667],"lon":[-80.29055556,-86.67818222],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.9504504504504504,"mode":"lines","lat":[32.89595056,42.3643475],"lon":[-97.0372,-71.00517917],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.8828828828828829,"mode":"lines","lat":[25.79325,42.3643475],"lon":[-80.29055556,-71.00517917],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.9684684684684685,"mode":"lines","lat":[41.979595,42.3643475],"lon":[-87.90446417,-71.00517917],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.12612612612612611,"mode":"lines","lat":[18.43941667,42.3643475],"lon":[-66.00183333,-71.00517917],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.0990990990990991,"mode":"lines","lat":[18.33730556,42.3643475],"lon":[-64.97336111,-71.00517917],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.25225225225225223,"mode":"lines","lat":[25.79325,39.17540167],"lon":[-80.29055556,-76.66819833],"cluster":{},"marker":{},"line":{"color":"red"}}];""" + |> chartGeneratedContains LineMapbox.``LineMapbox plot of feb. 2011 American Airline flights`` + ); + testCase "Flights mapbox layout" ( fun () -> + """var layout = {"mapbox":{"style":"open-street-map","center":{"lon":-97.0372,"lat":32.8959}},"showlegend":false,"margin":{"l":0,"r":0,"t":50,"b":0},"title":{"text":"Feb. 2011 American Airline flights"}};""" + |> chartGeneratedContains LineMapbox.``LineMapbox plot of feb. 2011 American Airline flights`` + ); + ] + ] + +module BubbleMapbox = + [] + let ``BubbleMapbox chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "BubbleMapbox" [ + ] + ] + +module ChoroplethMapbox = + [] + let ``ChoroplethMapbox chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "ChoroplethMapbox" [ + ] + ] + +module DensityMapbox = + [] + let ``DensityMapbox chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartMap" [ + testList "DensityMapbox" [ + testCase "Density Mapbox data" ( fun () -> + """var data = [{"type":"densitymapbox","z":[6.0,5.8,6.2,5.8,5.8,6.7,5.9,6.0,6.0,5.8,5.9,8.2,5.5,5.6,6.0,6.1,8.7,6.0,5.7,5.8,5.9,5.9,5.7,5.7,5.7,5.6,7.3,6.5,5.6,6.4,5.8,5.8,5.8,5.7,5.7,6.3,5.7,6.0,5.6,6.4,6.2,5.6,5.7,5.7,6.3,5.8,5.7,5.7,5.8,5.9,5.6,6.0,5.8,5.8,5.9,5.7,5.7,5.6,5.6],"radius":8,"lat":[19.246,1.863,-20.579,-59.076,11.938,-13.405,27.357,-13.309,-56.452,-24.563,-6.807,-2.608,54.636,-18.697,37.523,-51.84,51.251000000000005,51.639,52.528,51.626000000000005,51.037,51.73,51.775,52.611,51.831,51.948,51.443000000000005,52.773,51.772,52.975,52.99,51.536,13.245,51.812,51.762,52.438,51.946000000000005,51.738,51.486999999999995,53.008,52.184,52.076,51.744,52.056999999999995,53.191,51.447,51.258,52.031000000000006,51.294,55.223,-18.718,52.815,52.188,51.00899999999999,3.026,38.908,51.694,21.526999999999997,25.011],"lon":[145.616,127.352,-173.972,-23.557,126.427,166.62900000000002,87.867,166.21200000000002,-27.043000000000003,178.487,108.988,125.952,161.703,-177.864,73.251,139.741,178.715,175.055,172.007,175.74599999999998,177.84799999999998,173.975,173.058,172.588,174.368,173.96900000000002,179.605,171.97400000000002,174.696,171.09099999999998,170.87400000000002,175.045,-44.922,174.206,174.84099999999998,174.321,173.84,174.56599999999997,176.558,-162.00799999999998,175.505,172.918,175.213,174.116,-161.859,176.46900000000002,173.393,175.41099999999997,179.092,165.426,169.386,171.90400000000002,172.752,179.325,125.951,142.095,176.446,143.08100000000002,94.186],"colorscale":"Viridis"}];""" + |> chartGeneratedContains DensityMapbox.``Density mapbox chart of earthquakes`` + ); + testCase "Density Mapbox layout" ( fun () -> + "var layout = {\"mapbox\":{\"style\":\"stamen-terrain\",\"center\":{\"lon\":60.0,\"lat\":30.0}}};" + |> chartGeneratedContains DensityMapbox.``Density mapbox chart of earthquakes`` + ); + ] + ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/GeoMapCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/GeoMapCharts.fs deleted file mode 100644 index d65e00dfd..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/GeoMapCharts.fs +++ /dev/null @@ -1,269 +0,0 @@ -module Tests.GeoMapCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.LayoutObjects -open System - -open TestUtils.HtmlCodegen - -let basemapChart = - Chart.PointGeo(locations = [], UseDefaults = false) // deliberately empty chart to show the base map only - |> Chart.withMarginSize(0, 0, 0, 0) - -let moreFeaturesBasemapChart = - let myGeo = - Geo.init( - Resolution=StyleParam.GeoResolution.R50, - ShowCoastLines=true, - CoastLineColor=Color.fromString "RebeccaPurple", - ShowLand=true, - LandColor=Color.fromString "LightGreen", - ShowOcean=true, - OceanColor=Color.fromString "LightBlue", - ShowLakes=true, - LakeColor=Color.fromString "Blue", - ShowRivers=true, - RiverColor=Color.fromString "Blue" - ) - Chart.PointGeo(locations = [], UseDefaults = false) - |> Chart.withGeo myGeo - |> Chart.withMarginSize(0, 0, 0, 0) - -let cultureMapChart = - let countryGeo = - Geo.init( - Visible=false, - Resolution=StyleParam.GeoResolution.R50, - ShowCountries=true, - CountryColor=Color.fromString "RebeccaPurple" - ) - Chart.PointGeo(locations = [], UseDefaults = false) - |> Chart.withGeo countryGeo - |> Chart.withMarginSize(0, 0, 0, 0) - -[] -let ``Geo charts`` = - testList "GeoMapCharts.Geo charts" [ - testCase "Basemap data" ( fun () -> - """var data = [{"type":"scattergeo","mode":"markers","locations":[],"marker":{},"line":{}}];""" - |> chartGeneratedContains basemapChart - ); - testCase "Basemap layout" ( fun () -> - "var layout = {\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" - |> chartGeneratedContains basemapChart - ); - testCase "More features map data" ( fun () -> - """var data = [{"type":"scattergeo","mode":"markers","locations":[],"marker":{},"line":{}}];""" - |> chartGeneratedContains moreFeaturesBasemapChart - ); - testCase "More features map layout" ( fun () -> - "var layout = {\"geo\":{\"resolution\":\"50\",\"showcoastline\":true,\"coastlinecolor\":\"RebeccaPurple\",\"showland\":true,\"landcolor\":\"LightGreen\",\"showocean\":true,\"oceancolor\":\"LightBlue\",\"showlakes\":true,\"lakecolor\":\"Blue\",\"showrivers\":true,\"rivercolor\":\"Blue\"},\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" - |> chartGeneratedContains moreFeaturesBasemapChart - ); - testCase "Cultural map data" ( fun () -> - """var data = [{"type":"scattergeo","mode":"markers","locations":[],"marker":{},"line":{}}];""" - |> chartGeneratedContains cultureMapChart - ); - testCase "Cultural map layout" ( fun () -> - "var layout = {\"geo\":{\"resolution\":\"50\",\"visible\":false,\"showcountries\":true,\"countrycolor\":\"RebeccaPurple\"},\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" - |> chartGeneratedContains cultureMapChart - ); - ] - - -let pointGeoChart = - let cityNames = [ - "Montreal"; "Toronto"; "Vancouver"; "Calgary"; "Edmonton"; - "Ottawa"; "Halifax"; "Victoria"; "Winnepeg"; "Regina" - ] - - let lon = [ - -73.57; -79.24; -123.06; -114.1; -113.28; - -75.43; -63.57; -123.21; -97.13; -104.6 - ] - let lat = [ - 45.5; 43.4; 49.13; 51.1; 53.34; 45.24; - 44.64; 48.25; 49.89; 50.45 - ] - Chart.PointGeo( - longitudes = lon, - latitudes = lat, - MultiText=cityNames, - TextPosition=StyleParam.TextPosition.TopCenter, - UseDefaults = false - ) - |> Chart.withGeoStyle( - Scope=StyleParam.GeoScope.NorthAmerica, - Projection=GeoProjection.init(StyleParam.GeoProjectionType.AzimuthalEqualArea), - CountryColor = Color.fromString "lightgrey" - ) - |> Chart.withMarginSize(0, 0, 0, 0) - -open Deedle -open FSharp.Data -open System.IO -open System.Text - -let flightsMapChart = - // this is not the original string, but its few first entries - let data = - "start_lat,start_lon,end_lat,end_lon,airline,airport1,airport2,cnt -32.89595056,-97.0372,35.04022222,-106.6091944,AA,DFW,ABQ,444 -41.979595,-87.90446417,30.19453278,-97.66987194,AA,ORD,AUS,166 -32.89595056,-97.0372,41.93887417,-72.68322833,AA,DFW,BDL,162 -18.43941667,-66.00183333,41.93887417,-72.68322833,AA,SJU,BDL,56 -32.89595056,-97.0372,33.56294306,-86.75354972,AA,DFW,BHM,168 -25.79325,-80.29055556,36.12447667,-86.67818222,AA,MIA,BNA,56 -32.89595056,-97.0372,42.3643475,-71.00517917,AA,DFW,BOS,422 -25.79325,-80.29055556,42.3643475,-71.00517917,AA,MIA,BOS,392 -41.979595,-87.90446417,42.3643475,-71.00517917,AA,ORD,BOS,430 -18.43941667,-66.00183333,42.3643475,-71.00517917,AA,SJU,BOS,56 -18.33730556,-64.97336111,42.3643475,-71.00517917,AA,STT,BOS,44 -25.79325,-80.29055556,39.17540167,-76.66819833,AA,MIA,BWI,112" - |> fun csv -> Frame.ReadCsvString(csv,true,separators=",") - - let opacityVals : float [] = data.["cnt"] |> Series.values |> fun s -> s |> Seq.map (fun v -> v/(Seq.max s)) |> Array.ofSeq - let startCoords = Series.zipInner data.["start_lon"] data.["start_lat"] - let endCoords = Series.zipInner data.["end_lon"] data.["end_lat"] - let coords = Series.zipInner startCoords endCoords |> Series.values - - coords - |> Seq.mapi (fun i (startCoords,endCoords) -> - Chart.LineGeo( - lonlat = [startCoords; endCoords], - Opacity = opacityVals.[i], - MarkerColor = Color.fromString "red", - UseDefaults = false - ) - ) - |> Chart.combine - |> Chart.withLegend(false) - |> Chart.withGeoStyle( - Scope=StyleParam.GeoScope.NorthAmerica, - Projection=GeoProjection.init(StyleParam.GeoProjectionType.AzimuthalEqualArea), - ShowLand=true, - LandColor = Color.fromString "lightgrey" - ) - |> Chart.withMarginSize(0,0,50,0) - |> Chart.withTitle "Feb. 2011 American Airline flights" - - -[] -let ``Scatter and line plots on Geo maps charts`` = - testList "GeoMapCharts.Scatter and line plots on Geo maps charts" [ - testCase "Point geo data" ( fun () -> - """var data = [{"type":"scattergeo","mode":"markers+text","lat":[45.5,43.4,49.13,51.1,53.34,45.24,44.64,48.25,49.89,50.45],"lon":[-73.57,-79.24,-123.06,-114.1,-113.28,-75.43,-63.57,-123.21,-97.13,-104.6],"text":["Montreal","Toronto","Vancouver","Calgary","Edmonton","Ottawa","Halifax","Victoria","Winnepeg","Regina"],"textposition":"top center","marker":{},"line":{}}];""" - |> chartGeneratedContains pointGeoChart - ); - testCase "Point geo layout" ( fun () -> - "var layout = {\"geo\":{\"scope\":\"north america\",\"projection\":{\"type\":\"azimuthal equal area\"},\"countrycolor\":\"lightgrey\"},\"margin\":{\"l\":0,\"r\":0,\"t\":0,\"b\":0}};" - |> chartGeneratedContains pointGeoChart - ); - testCase "Flight map data" ( fun () -> - """var data = [{"type":"scattergeo","opacity":1.0,"mode":"lines","lat":[32.89595056,35.04022222],"lon":[-97.0372,-106.6091944],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.3738738738738739,"mode":"lines","lat":[41.979595,30.19453278],"lon":[-87.90446417,-97.66987194],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.36486486486486486,"mode":"lines","lat":[32.89595056,41.93887417],"lon":[-97.0372,-72.68322833],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.12612612612612611,"mode":"lines","lat":[18.43941667,41.93887417],"lon":[-66.00183333,-72.68322833],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.3783783783783784,"mode":"lines","lat":[32.89595056,33.56294306],"lon":[-97.0372,-86.75354972],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.12612612612612611,"mode":"lines","lat":[25.79325,36.12447667],"lon":[-80.29055556,-86.67818222],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.9504504504504504,"mode":"lines","lat":[32.89595056,42.3643475],"lon":[-97.0372,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.8828828828828829,"mode":"lines","lat":[25.79325,42.3643475],"lon":[-80.29055556,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.9684684684684685,"mode":"lines","lat":[41.979595,42.3643475],"lon":[-87.90446417,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.12612612612612611,"mode":"lines","lat":[18.43941667,42.3643475],"lon":[-66.00183333,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.0990990990990991,"mode":"lines","lat":[18.33730556,42.3643475],"lon":[-64.97336111,-71.00517917],"marker":{"color":"red"},"line":{}},{"type":"scattergeo","opacity":0.25225225225225223,"mode":"lines","lat":[25.79325,39.17540167],"lon":[-80.29055556,-76.66819833],"marker":{"color":"red"},"line":{}}];""" - |> chartGeneratedContains flightsMapChart - ); - testCase "Flight map layout" ( fun () -> - "var layout = {\"showlegend\":false,\"geo\":{\"scope\":\"north america\",\"projection\":{\"type\":\"azimuthal equal area\"},\"showland\":true,\"landcolor\":\"lightgrey\"},\"margin\":{\"l\":0,\"r\":0,\"t\":50,\"b\":0},\"title\":{\"text\":\"Feb. 2011 American Airline flights\"}};" - |> chartGeneratedContains flightsMapChart - ); - ] - - -let locations,z = - [("Belarus",17.5); ("Moldova",16.8);("Lithuania",15.4);("Russia",15.1); - ("Romania",14.4);("Ukraine",13.9);("Andorra",13.8);("Hungary",13.3); - ("Czech Republic",13.);("Slovakia",13.);("Portugal",12.9);("Serbia",12.6); - ("Grenada",12.5);("Poland",12.5);("Latvia",12.3);("Finland",12.3); - ("South Korea",12.3);("France",12.2);("Australia",12.2);("Croatia",12.2); - ("Ireland",11.9);("Luxembourg",11.9);("Germany",11.8);("Slovenia",11.6); - ("United Kingdom",11.6);("Denmark",11.4);("Bulgaria",11.4);("Spain",11.2); - ("Belgium",11.);("South Africa",11.);("New Zealand",10.9);("Gabon",10.9); - ("Namibia",10.8);("Switzerland",10.7);("Saint Lucia",10.4);("Austria",10.3); - ("Estonia",10.3);("Greece",10.3);("Kazakhstan",10.3);("Canada",10.2); - ("Nigeria",10.1);("Netherlands",9.9);("Uganda",9.8);("Rwanda",9.8); - ("Chile",9.6);("Argentina",9.3);("Burundi",9.3);("United States",9.2); - ("Cyprus",9.2);("Sweden",9.2);("Venezuela",8.9);("Paraguay",8.8);("Brazil",8.7); - ("Sierra Leone",8.7);("Montenegro",8.7);("Belize",8.5);("Cameroon",8.4); - ("Botswana",8.4);("Saint Kitts and Nevis",8.2);("Guyana",8.1);("Peru",8.1); - ("Panama",8.);("Niue",8.);("Palau",7.9);("Norway",7.7);("Tanzania",7.7); - ("Georgia",7.7);("Uruguay",7.6);("Angola",7.5);("Laos",7.3);("Japan",7.2); - ("Mexico",7.2);("Ecuador",7.2);("Dominica",7.1);("Iceland",7.1); - ("Thailand",7.1);("Bosnia and Herzegovina",7.1);("Sao Tome and Principe",7.1); - ("Malta",7.);("Albania",7.);("Bahamas",6.9);("Dominican Republic",6.9); - ("Mongolia",6.9);("Cape Verde",6.9);("Barbados",6.8);("Burkina Faso",6.8); - ("Italy",6.7);("Trinidad and Tobago",6.7);("China",6.7);("Macedonia",6.7); - ("Saint Vincent and the Grenadines",6.6);("Equatorial Guinea",6.6); - ("Suriname",6.6);("Vietnam",6.6);("Lesotho",6.5);("Haiti",6.4); - ("Cook Islands",6.4);("Colombia",6.2);("Ivory Coast",6.);("Bolivia",5.9); - ("Swaziland",5.7);("Zimbabwe",5.7);("Seychelles",5.6);("Cambodia",5.5); - ("Puerto Rico",5.4);("Netherlands Antilles",5.4);("Philippines",5.4); - ("Costa Rica",5.4);("Armenia",5.3);("Cuba",5.2);("Nicaragua",5.); - ("Jamaica",4.9);("Ghana",4.8);("Liberia",4.7);("Uzbekistan",4.6); - ("Chad",4.4);("United Arab Emirates",4.3);("Kyrgyzstan",4.3);("India",4.3); - ("Turkmenistan",4.3);("Kenya",4.3);("Ethiopia",4.2);("Honduras",4.); - ("Guinea-Bissau",4.);("Zambia",4.);("Republic of the Congo",3.9);("Guatemala",3.8); - ("Central African Republic",3.8);("North Korea",3.7);("Sri Lanka",3.7); - ("Mauritius",3.6);("Samoa",3.6);("Democratic Republic of the Congo",3.6); - ("Nauru",3.5);("Gambia",3.4);("Federated States of Micronesia",3.3); - ("El Salvador",3.2);("Fiji",3.);("Papua New Guinea",3.);("Kiribati",3.); - ("Tajikistan",2.8);("Israel",2.8);("Sudan",2.7);("Malawi",2.5);("Lebanon",2.4); - ("Azerbaijan",2.3);("Mozambique",2.3);("Togo",2.3);("Nepal",2.2);("Brunei",2.1); - ("Benin",2.1);("Singapore",2.);("Turkey",2.);("Madagascar",1.8);("Solomon Islands",1.7); - ("Tonga",1.6);("Tunisia",1.5);("Tuvalu",1.5);("Qatar",1.5);("Vanuatu",1.4); - ("Djibouti",1.3);("Malaysia",1.3);("Syria",1.2);("Maldives",1.2);("Mali",1.1); - ("Eritrea",1.1);("Algeria",1.);("Iran",1.);("Oman",0.9);("Brunei",0.9); - ("Morocco",0.9);("Jordan",0.7);("Bhutan",0.7);("Guinea",0.7);("Burma",0.7); - ("Afghanistan",0.7);("Senegal",0.6);("Indonesia",0.6);("Timor-Leste",0.6); - ("Iraq",0.5);("Somalia",0.5);("Egypt",0.4);("Niger",0.3);("Yemen",0.3); - ("Comoros",0.2);("Saudi Arabia",0.2);("Bangladesh",0.2);("Kuwait",0.1); - ("Libya",0.1);("Mauritania",0.1);("Pakistan",0.1);] - |> List.unzip - - -let choroplethMap1Chart = - Chart.ChoroplethMap( - locations = locations,z = z, - LocationMode=StyleParam.LocationFormat.CountryNames, - UseDefaults = false - ) - -let choroplethMap2Chart = - Chart.ChoroplethMap( - locations = locations,z = z, - LocationMode=StyleParam.LocationFormat.CountryNames, - UseDefaults = false - ) - |> Chart.withGeoStyle( - Projection=GeoProjection.init(projectionType=StyleParam.GeoProjectionType.Mollweide), - ShowLakes=true, - ShowOcean=true, - OceanColor= Color.fromString "lightblue", - ShowRivers=true) - |> Chart.withColorBarStyle ( - TitleText="Alcohol consumption[l/y]",Len=0.5 - ) - -[] -let ``Choropleth maps charts`` = - testList "GeoMapCharts.Choropleth maps charts" [ - testCase "Choropleth map 1 data" ( fun () -> - """var data = [{"type":"choropleth","z":[17.5,16.8,15.4,15.1,14.4,13.9,13.8,13.3,13.0,13.0,12.9,12.6,12.5,12.5,12.3,12.3,12.3,12.2,12.2,12.2,11.9,11.9,11.8,11.6,11.6,11.4,11.4,11.2,11.0,11.0,10.9,10.9,10.8,10.7,10.4,10.3,10.3,10.3,10.3,10.2,10.1,9.9,9.8,9.8,9.6,9.3,9.3,9.2,9.2,9.2,8.9,8.8,8.7,8.7,8.7,8.5,8.4,8.4,8.2,8.1,8.1,8.0,8.0,7.9,7.7,7.7,7.7,7.6,7.5,7.3,7.2,7.2,7.2,7.1,7.1,7.1,7.1,7.1,7.0,7.0,6.9,6.9,6.9,6.9,6.8,6.8,6.7,6.7,6.7,6.7,6.6,6.6,6.6,6.6,6.5,6.4,6.4,6.2,6.0,5.9,5.7,5.7,5.6,5.5,5.4,5.4,5.4,5.4,5.3,5.2,5.0,4.9,4.8,4.7,4.6,4.4,4.3,4.3,4.3,4.3,4.3,4.2,4.0,4.0,4.0,3.9,3.8,3.8,3.7,3.7,3.6,3.6,3.6,3.5,3.4,3.3,3.2,3.0,3.0,3.0,2.8,2.8,2.7,2.5,2.4,2.3,2.3,2.3,2.2,2.1,2.1,2.0,2.0,1.8,1.7,1.6,1.5,1.5,1.5,1.4,1.3,1.3,1.2,1.2,1.1,1.1,1.0,1.0,0.9,0.9,0.9,0.7,0.7,0.7,0.7,0.7,0.6,0.6,0.6,0.5,0.5,0.4,0.3,0.3,0.2,0.2,0.2,0.1,0.1,0.1,0.1],"locations":["Belarus","Moldova","Lithuania","Russia","Romania","Ukraine","Andorra","Hungary","Czech Republic","Slovakia","Portugal","Serbia","Grenada","Poland","Latvia","Finland","South Korea","France","Australia","Croatia","Ireland","Luxembourg","Germany","Slovenia","United Kingdom","Denmark","Bulgaria","Spain","Belgium","South Africa","New Zealand","Gabon","Namibia","Switzerland","Saint Lucia","Austria","Estonia","Greece","Kazakhstan","Canada","Nigeria","Netherlands","Uganda","Rwanda","Chile","Argentina","Burundi","United States","Cyprus","Sweden","Venezuela","Paraguay","Brazil","Sierra Leone","Montenegro","Belize","Cameroon","Botswana","Saint Kitts and Nevis","Guyana","Peru","Panama","Niue","Palau","Norway","Tanzania","Georgia","Uruguay","Angola","Laos","Japan","Mexico","Ecuador","Dominica","Iceland","Thailand","Bosnia and Herzegovina","Sao Tome and Principe","Malta","Albania","Bahamas","Dominican Republic","Mongolia","Cape Verde","Barbados","Burkina Faso","Italy","Trinidad and Tobago","China","Macedonia","Saint Vincent and the Grenadines","Equatorial Guinea","Suriname","Vietnam","Lesotho","Haiti","Cook Islands","Colombia","Ivory Coast","Bolivia","Swaziland","Zimbabwe","Seychelles","Cambodia","Puerto Rico","Netherlands Antilles","Philippines","Costa Rica","Armenia","Cuba","Nicaragua","Jamaica","Ghana","Liberia","Uzbekistan","Chad","United Arab Emirates","Kyrgyzstan","India","Turkmenistan","Kenya","Ethiopia","Honduras","Guinea-Bissau","Zambia","Republic of the Congo","Guatemala","Central African Republic","North Korea","Sri Lanka","Mauritius","Samoa","Democratic Republic of the Congo","Nauru","Gambia","Federated States of Micronesia","El Salvador","Fiji","Papua New Guinea","Kiribati","Tajikistan","Israel","Sudan","Malawi","Lebanon","Azerbaijan","Mozambique","Togo","Nepal","Brunei","Benin","Singapore","Turkey","Madagascar","Solomon Islands","Tonga","Tunisia","Tuvalu","Qatar","Vanuatu","Djibouti","Malaysia","Syria","Maldives","Mali","Eritrea","Algeria","Iran","Oman","Brunei","Morocco","Jordan","Bhutan","Guinea","Burma","Afghanistan","Senegal","Indonesia","Timor-Leste","Iraq","Somalia","Egypt","Niger","Yemen","Comoros","Saudi Arabia","Bangladesh","Kuwait","Libya","Mauritania","Pakistan"],"locationmode":"country names"}];""" - |> chartGeneratedContains choroplethMap1Chart - ); - testCase "Choropleth map 1 layout" ( fun () -> - emptyLayout choroplethMap1Chart - ); - testCase "Choropleth map 2 data" ( fun () -> - """var data = [{"type":"choropleth","z":[17.5,16.8,15.4,15.1,14.4,13.9,13.8,13.3,13.0,13.0,12.9,12.6,12.5,12.5,12.3,12.3,12.3,12.2,12.2,12.2,11.9,11.9,11.8,11.6,11.6,11.4,11.4,11.2,11.0,11.0,10.9,10.9,10.8,10.7,10.4,10.3,10.3,10.3,10.3,10.2,10.1,9.9,9.8,9.8,9.6,9.3,9.3,9.2,9.2,9.2,8.9,8.8,8.7,8.7,8.7,8.5,8.4,8.4,8.2,8.1,8.1,8.0,8.0,7.9,7.7,7.7,7.7,7.6,7.5,7.3,7.2,7.2,7.2,7.1,7.1,7.1,7.1,7.1,7.0,7.0,6.9,6.9,6.9,6.9,6.8,6.8,6.7,6.7,6.7,6.7,6.6,6.6,6.6,6.6,6.5,6.4,6.4,6.2,6.0,5.9,5.7,5.7,5.6,5.5,5.4,5.4,5.4,5.4,5.3,5.2,5.0,4.9,4.8,4.7,4.6,4.4,4.3,4.3,4.3,4.3,4.3,4.2,4.0,4.0,4.0,3.9,3.8,3.8,3.7,3.7,3.6,3.6,3.6,3.5,3.4,3.3,3.2,3.0,3.0,3.0,2.8,2.8,2.7,2.5,2.4,2.3,2.3,2.3,2.2,2.1,2.1,2.0,2.0,1.8,1.7,1.6,1.5,1.5,1.5,1.4,1.3,1.3,1.2,1.2,1.1,1.1,1.0,1.0,0.9,0.9,0.9,0.7,0.7,0.7,0.7,0.7,0.6,0.6,0.6,0.5,0.5,0.4,0.3,0.3,0.2,0.2,0.2,0.1,0.1,0.1,0.1],"locations":["Belarus","Moldova","Lithuania","Russia","Romania","Ukraine","Andorra","Hungary","Czech Republic","Slovakia","Portugal","Serbia","Grenada","Poland","Latvia","Finland","South Korea","France","Australia","Croatia","Ireland","Luxembourg","Germany","Slovenia","United Kingdom","Denmark","Bulgaria","Spain","Belgium","South Africa","New Zealand","Gabon","Namibia","Switzerland","Saint Lucia","Austria","Estonia","Greece","Kazakhstan","Canada","Nigeria","Netherlands","Uganda","Rwanda","Chile","Argentina","Burundi","United States","Cyprus","Sweden","Venezuela","Paraguay","Brazil","Sierra Leone","Montenegro","Belize","Cameroon","Botswana","Saint Kitts and Nevis","Guyana","Peru","Panama","Niue","Palau","Norway","Tanzania","Georgia","Uruguay","Angola","Laos","Japan","Mexico","Ecuador","Dominica","Iceland","Thailand","Bosnia and Herzegovina","Sao Tome and Principe","Malta","Albania","Bahamas","Dominican Republic","Mongolia","Cape Verde","Barbados","Burkina Faso","Italy","Trinidad and Tobago","China","Macedonia","Saint Vincent and the Grenadines","Equatorial Guinea","Suriname","Vietnam","Lesotho","Haiti","Cook Islands","Colombia","Ivory Coast","Bolivia","Swaziland","Zimbabwe","Seychelles","Cambodia","Puerto Rico","Netherlands Antilles","Philippines","Costa Rica","Armenia","Cuba","Nicaragua","Jamaica","Ghana","Liberia","Uzbekistan","Chad","United Arab Emirates","Kyrgyzstan","India","Turkmenistan","Kenya","Ethiopia","Honduras","Guinea-Bissau","Zambia","Republic of the Congo","Guatemala","Central African Republic","North Korea","Sri Lanka","Mauritius","Samoa","Democratic Republic of the Congo","Nauru","Gambia","Federated States of Micronesia","El Salvador","Fiji","Papua New Guinea","Kiribati","Tajikistan","Israel","Sudan","Malawi","Lebanon","Azerbaijan","Mozambique","Togo","Nepal","Brunei","Benin","Singapore","Turkey","Madagascar","Solomon Islands","Tonga","Tunisia","Tuvalu","Qatar","Vanuatu","Djibouti","Malaysia","Syria","Maldives","Mali","Eritrea","Algeria","Iran","Oman","Brunei","Morocco","Jordan","Bhutan","Guinea","Burma","Afghanistan","Senegal","Indonesia","Timor-Leste","Iraq","Somalia","Egypt","Niger","Yemen","Comoros","Saudi Arabia","Bangladesh","Kuwait","Libya","Mauritania","Pakistan"],"locationmode":"country names","colorbar":{"len":0.5,"title":{"text":"Alcohol consumption[l/y]"}}}];""" - |> chartGeneratedContains choroplethMap2Chart - ); - testCase "Choropleth map 2 layout" ( fun () -> - "var layout = {\"geo\":{\"projection\":{\"type\":\"mollweide\"},\"showocean\":true,\"oceancolor\":\"lightblue\",\"showlakes\":true,\"showrivers\":true}};" - |> chartGeneratedContains choroplethMap2Chart - ); - ] \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/MapboxMapCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/MapboxMapCharts.fs deleted file mode 100644 index d69f89051..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/MapboxMapCharts.fs +++ /dev/null @@ -1,220 +0,0 @@ -module Tests.MapboxMapCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open Plotly.NET.LayoutObjects -open System - -open TestUtils.HtmlCodegen - -let baseLayerOnlyChart = - Chart.PointMapbox( - longitudes = [], - latitudes = [], - UseDefaults = false - ) // deliberately empty chart to show the base map only - -[] -let ``Mapbox charts`` = - testList "MapboxMapCharts.Mapbox charts" [ - testCase "Base layout only data" ( fun () -> - """var data = [{"type":"scattermapbox","mode":"markers","lat":[],"lon":[],"cluster":{},"marker":{},"line":{}}];""" - |> chartGeneratedContains baseLayerOnlyChart - ); - testCase "Base layour only layout" ( fun () -> - "var layout = {\"mapbox\":{\"style\":\"open-street-map\"}};" - |> chartGeneratedContains baseLayerOnlyChart - ); - ] - - -let pointMapboxChart = - let cityNames = [ - "Montreal"; "Toronto"; "Vancouver"; "Calgary"; "Edmonton"; - "Ottawa"; "Halifax"; "Victoria"; "Winnepeg"; "Regina" - ] - - let lon = [ - -73.57; -79.24; -123.06; -114.1; -113.28; - -75.43; -63.57; -123.21; -97.13; -104.6 - ] - let lat = [ - 45.5; 43.4; 49.13; 51.1; 53.34; 45.24; - 44.64; 48.25; 49.89; 50.45 - ] - Chart.PointMapbox( - longitudes = lon, - latitudes = lat, - MultiText = cityNames, - TextPosition = StyleParam.TextPosition.TopCenter, - UseDefaults = false - ) - |> Chart.withMapbox( - Mapbox.init( - Center=(-104.6,50.45) - ) - ) - - -open Deedle -open FSharp.Data -open System.IO -open System.Text - - -let flightsChart = - let data = - "start_lat,start_lon,end_lat,end_lon,airline,airport1,airport2,cnt -32.89595056,-97.0372,35.04022222,-106.6091944,AA,DFW,ABQ,444 -41.979595,-87.90446417,30.19453278,-97.66987194,AA,ORD,AUS,166 -32.89595056,-97.0372,41.93887417,-72.68322833,AA,DFW,BDL,162 -18.43941667,-66.00183333,41.93887417,-72.68322833,AA,SJU,BDL,56 -32.89595056,-97.0372,33.56294306,-86.75354972,AA,DFW,BHM,168 -25.79325,-80.29055556,36.12447667,-86.67818222,AA,MIA,BNA,56 -32.89595056,-97.0372,42.3643475,-71.00517917,AA,DFW,BOS,422 -25.79325,-80.29055556,42.3643475,-71.00517917,AA,MIA,BOS,392" - |> fun csv -> Frame.ReadCsvString(csv,true,separators=",") - - let opacityVals : float [] = data.["cnt"] |> Series.values |> fun s -> s |> Seq.map (fun v -> v/(Seq.max s)) |> Array.ofSeq - let startCoords = Series.zipInner data.["start_lon"] data.["start_lat"] - let endCoords = Series.zipInner data.["end_lon"] data.["end_lat"] - let coords = Series.zipInner startCoords endCoords |> Series.values - - coords - |> Seq.mapi (fun i (startCoords,endCoords) -> - Chart.LineMapbox( - lonlat = [startCoords; endCoords], - Opacity = opacityVals.[i], - LineColor = Color.fromString "red", - UseDefaults = false - ) - ) - |> Chart.combine - |> Chart.withLegend(false) - |> Chart.withMapbox( - Mapbox.init( - Center=(-97.0372,32.8959) - ) - ) - |> Chart.withMarginSize(0,0,50,0) - |> Chart.withTitle "Feb. 2011 American Airline flights" - -[] -let ``Scatter and line plots on Mapbox maps charts`` = - testList "MapboxMapCharts.Scatter and line plots on Mapbox maps charts" [ - testCase "Point mapbox data" ( fun () -> - """var data = [{"type":"scattermapbox","mode":"markers+text","lat":[45.5,43.4,49.13,51.1,53.34,45.24,44.64,48.25,49.89,50.45],"lon":[-73.57,-79.24,-123.06,-114.1,-113.28,-75.43,-63.57,-123.21,-97.13,-104.6],"cluster":{},"text":["Montreal","Toronto","Vancouver","Calgary","Edmonton","Ottawa","Halifax","Victoria","Winnepeg","Regina"],"textposition":"top center","marker":{},"line":{}}];""" - |> chartGeneratedContains pointMapboxChart - ); - testCase "Point mapbox layout" ( fun () -> - "var layout = {\"mapbox\":{\"style\":\"open-street-map\",\"center\":{\"lon\":-104.6,\"lat\":50.45}}};" - |> chartGeneratedContains pointMapboxChart - ); - testCase "Flights mapbox data" ( fun () -> - """var data = [{"type":"scattermapbox","opacity":1.0,"mode":"lines","lat":[32.89595056,35.04022222],"lon":[-97.0372,-106.6091944],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.3738738738738739,"mode":"lines","lat":[41.979595,30.19453278],"lon":[-87.90446417,-97.66987194],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.36486486486486486,"mode":"lines","lat":[32.89595056,41.93887417],"lon":[-97.0372,-72.68322833],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.12612612612612611,"mode":"lines","lat":[18.43941667,41.93887417],"lon":[-66.00183333,-72.68322833],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.3783783783783784,"mode":"lines","lat":[32.89595056,33.56294306],"lon":[-97.0372,-86.75354972],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.12612612612612611,"mode":"lines","lat":[25.79325,36.12447667],"lon":[-80.29055556,-86.67818222],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.9504504504504504,"mode":"lines","lat":[32.89595056,42.3643475],"lon":[-97.0372,-71.00517917],"cluster":{},"marker":{},"line":{"color":"red"}},{"type":"scattermapbox","opacity":0.8828828828828829,"mode":"lines","lat":[25.79325,42.3643475],"lon":[-80.29055556,-71.00517917],"cluster":{},"marker":{},"line":{"color":"red"}}];""" - |> chartGeneratedContains flightsChart - ); - testCase "Flights mapbox layout" ( fun () -> - """var layout = {"mapbox":{"style":"open-street-map","center":{"lon":-97.0372,"lat":32.8959}},"showlegend":false,"margin":{"l":0,"r":0,"t":50,"b":0},"title":{"text":"Feb. 2011 American Airline flights"}};""" - |> chartGeneratedContains flightsChart - ); - ] - - -let densityMapboxChart = - let dataDensityMapbox = - "Date,Latitude,Longitude,Magnitude -01/02/1965,19.246,145.616,6.0 -01/04/1965,1.8630000000000002,127.352,5.8 -01/05/1965,-20.579,-173.972,6.2 -01/08/1965,-59.076,-23.557,5.8 -01/09/1965,11.937999999999999,126.427,5.8 -01/10/1965,-13.405,166.62900000000002,6.7 -01/12/1965,27.357,87.867,5.9 -01/15/1965,-13.309000000000001,166.21200000000002,6.0 -01/16/1965,-56.452,-27.043000000000003,6.0 -01/17/1965,-24.563000000000002,178.487,5.8 -01/17/1965,-6.807,108.988,5.9 -01/24/1965,-2.608,125.95200000000001,8.2 -01/29/1965,54.636,161.703,5.5 -02/01/1965,-18.697,-177.864,5.6 -02/02/1965,37.523,73.251,6.0 -02/04/1965,-51.84,139.741,6.1 -02/04/1965,51.251000000000005,178.715,8.7 -02/04/1965,51.638999999999996,175.055,6.0 -02/04/1965,52.528,172.007,5.7 -02/04/1965,51.626000000000005,175.74599999999998,5.8 -02/04/1965,51.037,177.84799999999998,5.9 -02/04/1965,51.73,173.975,5.9 -02/04/1965,51.775,173.058,5.7 -02/04/1965,52.611000000000004,172.588,5.7 -02/04/1965,51.831,174.368,5.7 -02/04/1965,51.948,173.96900000000002,5.6 -02/04/1965,51.443000000000005,179.605,7.3 -02/04/1965,52.773,171.97400000000002,6.5 -02/04/1965,51.772,174.696,5.6 -02/04/1965,52.975,171.09099999999998,6.4 -02/04/1965,52.99,170.87400000000002,5.8 -02/04/1965,51.536,175.045,5.8 -02/04/1965,13.245,-44.922,5.8 -02/04/1965,51.812,174.206,5.7 -02/05/1965,51.762,174.84099999999998,5.7 -02/05/1965,52.438,174.321,6.3 -02/05/1965,51.946000000000005,173.84,5.7 -02/05/1965,51.738,174.56599999999997,6.0 -02/05/1965,51.486999999999995,176.558,5.6 -02/06/1965,53.008,-162.00799999999998,6.4 -02/06/1965,52.184,175.505,6.2 -02/06/1965,52.076,172.918,5.6 -02/06/1965,51.744,175.213,5.7 -02/06/1965,52.056999999999995,174.11599999999999,5.7 -02/06/1965,53.191,-161.859,6.3 -02/06/1965,51.446999999999996,176.46900000000002,5.8 -02/07/1965,51.258,173.393,5.7 -02/07/1965,52.031000000000006,175.41099999999997,5.7 -02/07/1965,51.294,179.092,5.8 -02/08/1965,55.223,165.426,5.9 -02/09/1965,-18.718,169.386,5.6 -02/09/1965,52.815,171.90400000000002,6.0 -02/12/1965,52.188,172.752,5.8 -02/15/1965,51.00899999999999,179.325,5.8 -02/15/1965,3.0260000000000002,125.95100000000001,5.9 -02/16/1965,38.908,142.095,5.7 -02/17/1965,51.693999999999996,176.446,5.7 -02/17/1965,21.526999999999997,143.08100000000002,5.6 -02/18/1965,25.011,94.186,5.6" - |> fun d -> Frame.ReadCsvString(d,true,separators=",") - - let lon = dataDensityMapbox.["Longitude"] |> Series.values - let lat= dataDensityMapbox.["Latitude"] |> Series.values - let magnitudes = dataDensityMapbox.["Magnitude"] |> Series.values - Chart.DensityMapbox( - longitudes = lon, - latitudes = lat, - Z = magnitudes, - Radius=8, - ColorScale=StyleParam.Colorscale.Viridis, - UseDefaults = false - ) - |> Chart.withMapbox( - Mapbox.init( - Style = StyleParam.MapboxStyle.StamenTerrain, - Center = (60.,30.) - ) - ) - -[] -let ``DensityMapbox charts`` = - testList "MapboxMapCharts.DensityMapbox charts charts" [ - testCase "Density Mapbox data" ( fun () -> - """var data = [{"type":"densitymapbox","z":[6.0,5.8,6.2,5.8,5.8,6.7,5.9,6.0,6.0,5.8,5.9,8.2,5.5,5.6,6.0,6.1,8.7,6.0,5.7,5.8,5.9,5.9,5.7,5.7,5.7,5.6,7.3,6.5,5.6,6.4,5.8,5.8,5.8,5.7,5.7,6.3,5.7,6.0,5.6,6.4,6.2,5.6,5.7,5.7,6.3,5.8,5.7,5.7,5.8,5.9,5.6,6.0,5.8,5.8,5.9,5.7,5.7,5.6,5.6],"radius":8,"lat":[19.246,1.863,-20.579,-59.076,11.938,-13.405,27.357,-13.309,-56.452,-24.563,-6.807,-2.608,54.636,-18.697,37.523,-51.84,51.251000000000005,51.639,52.528,51.626000000000005,51.037,51.73,51.775,52.611,51.831,51.948,51.443000000000005,52.773,51.772,52.975,52.99,51.536,13.245,51.812,51.762,52.438,51.946000000000005,51.738,51.486999999999995,53.008,52.184,52.076,51.744,52.056999999999995,53.191,51.447,51.258,52.031000000000006,51.294,55.223,-18.718,52.815,52.188,51.00899999999999,3.026,38.908,51.694,21.526999999999997,25.011],"lon":[145.616,127.352,-173.972,-23.557,126.427,166.62900000000002,87.867,166.21200000000002,-27.043000000000003,178.487,108.988,125.952,161.703,-177.864,73.251,139.741,178.715,175.055,172.007,175.74599999999998,177.84799999999998,173.975,173.058,172.588,174.368,173.96900000000002,179.605,171.97400000000002,174.696,171.09099999999998,170.87400000000002,175.045,-44.922,174.206,174.84099999999998,174.321,173.84,174.56599999999997,176.558,-162.00799999999998,175.505,172.918,175.213,174.116,-161.859,176.46900000000002,173.393,175.41099999999997,179.092,165.426,169.386,171.90400000000002,172.752,179.325,125.951,142.095,176.446,143.08100000000002,94.186],"colorscale":"Viridis"}];""" - |> chartGeneratedContains densityMapboxChart - ); - testCase "Density Mapbox layout" ( fun () -> - "var layout = {\"mapbox\":{\"style\":\"stamen-terrain\",\"center\":{\"lon\":60.0,\"lat\":30.0}}};" - |> chartGeneratedContains densityMapboxChart - ); - ] \ No newline at end of file From 2518abdc86f71285f84d1a269263e5bae71aba22 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 13:20:22 +0200 Subject: [PATCH 19/26] Refactor FinanceChart tests --- .../TestCharts/Chart2DTestCharts.fs | 45 +++- .../TestCharts/ChartDomainTestCharts.fs | 76 ++++++- tests/CoreTests/CoreTests/CoreTests.fsproj | 1 - .../CoreTests/HTMLCodegen/Chart2D.fs | 40 ++++ .../CoreTests/HTMLCodegen/ChartDomain.fs | 42 ++++ .../CoreTests/HTMLCodegen/FinanceCharts.fs | 208 ------------------ 6 files changed, 198 insertions(+), 214 deletions(-) delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/FinanceCharts.fs diff --git a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs index 9f04ee636..763c6dbd5 100644 --- a/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/Chart2DTestCharts.fs @@ -135,7 +135,22 @@ module StackedArea = ] |> Chart.combine -module Funnel = () +module Funnel = + + let ``Simple funnel chart`` = + let y = [|"Sales person A"; "Sales person B"; "Sales person C"; "Sales person D"; "Sales person E"|] + let x = [|1200.; 909.4; 600.6; 300.; 80.|] + + // Customize the connector lines used to connect the funnel bars + let connectorLine = Line.init (Color=Color.fromString "royalblue", Dash=StyleParam.DrawingStyle.Dot, Width=3.) + let connector = FunnelConnector.init(Line=connectorLine) + + // Customize the outline of the funnel bars + let line = Line.init(Width=2.,Color=Color.fromString "3E4E88") + + Chart.Funnel (x = x, y = y,MarkerColor=Color.fromString "59D4E8", MarkerOutline=line, Connector=connector, UseDefaults = false) + |> Chart.withMarginSize(Left=100) + module StackedFunnel = () @@ -398,9 +413,33 @@ module Contour = Chart.Contour(zData = z, UseDefaults = false) |> Chart.withSize(600.,600.) -module OHLC = () +module OHLC = + + let internal candles = + [|("2020-01-17T13:40:00", 0.68888, 0.68888, 0.68879, 0.6888); + ("2020-01-17T13:41:00", 0.68883, 0.68884, 0.68875, 0.68877); + ("2020-01-17T13:42:00", 0.68878, 0.68889, 0.68878, 0.68886); + ("2020-01-17T13:43:00", 0.68886, 0.68886, 0.68876, 0.68879); + ("2020-01-17T13:44:00", 0.68879, 0.68879, 0.68873, 0.68874); + ("2020-01-17T13:45:00", 0.68875, 0.68877, 0.68867, 0.68868); + ("2020-01-17T13:46:00", 0.68869, 0.68887, 0.68869, 0.68883); + ("2020-01-17T13:47:00", 0.68883, 0.68899, 0.68883, 0.68899); + ("2020-01-17T13:48:00", 0.68898, 0.689, 0.68885, 0.68889); + ("2020-01-17T13:49:00", 0.68889, 0.68893, 0.68881, 0.68893); + ("2020-01-17T13:50:00", 0.68891, 0.68896, 0.68886, 0.68891); + |] + |> Array.map (fun (d,o,h,l,c)->System.DateTime.Parse d, StockData.Create(o,h,l,c)) + + let ``Simple OHLC chart`` = Chart.OHLC(stockTimeSeries = candles, UseDefaults = false) + + let ``Simple OHLC chart without range slider`` = Chart.OHLC(stockTimeSeries = candles, ShowXAxisRangeSlider = false, UseDefaults = false) + +module Candlestick = + + let ``Simple candlestick chart`` = Chart.Candlestick(stockTimeSeries = OHLC.candles, UseDefaults = false) + + let ``Simple candlestick chart without range slider`` = Chart.Candlestick(stockTimeSeries = OHLC.candles, ShowXAxisRangeSlider = false, UseDefaults = false) -module Candlestick = () module Splom = diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs index 0177ae216..e9c8f826f 100644 --- a/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs @@ -52,7 +52,35 @@ module Doughnut = UseDefaults = false ) -module FunnelArea = () +module FunnelArea = + + let ``Simple funnelarea chart`` = + let values = [|5; 4; 3; 2; 1|] + let text = [|"The 1st"; "The 2nd"; "The 3rd"; "The 4th"; "The 5th"|] + let line = Line.init (Color=Color.fromString "purple", Width=3.) + Chart.FunnelArea(values=values, MultiText=text, SectionOutline=line, UseDefaults = false) + + + + let ``Styled funnelarea chart`` = + let values = [|5; 4; 3|] + let labels = [|"The 1st"; "The 2nd"; "The 3rd"|] + + Chart.FunnelArea( + values = values, + Labels = labels, + MultiText = labels, + SectionColors = [ + Color.fromKeyword Aqua + Color.fromKeyword Salmon + Color.fromKeyword Tan + ], + SectionOutlineColor = Color.fromKeyword Black, + SectionOutlineWidth = 2., + AspectRatio = 0.75, + BaseRatio = 0.1, + UseDefaults = false + ) module Sunburst = () @@ -203,6 +231,50 @@ module Table = |> Chart.withSize(Width=chartwidth) |> Chart.withTitle "Sequence A" -module Indicator = () +module Indicator = + + open Plotly.NET.TraceObjects + open Plotly.NET.LayoutObjects + + let ``Angular gauge indicator`` = + ChartDomain.Chart.Indicator( + value = 200., + mode = StyleParam.IndicatorMode.NumberDeltaGauge, + Delta = IndicatorDelta.init(Reference=160), + Range = StyleParam.Range.MinMax(0., 250.), + Domain = Domain.init(Row = 0, Column = 0), + UseDefaults = false + ) + + let ``Bullet gauge indicator`` = + Chart.Indicator( + value = 120, + mode = StyleParam.IndicatorMode.NumberDeltaGauge, + DeltaReference = 90, + Range = StyleParam.Range.MinMax(-200., 200.), + GaugeShape = StyleParam.IndicatorGaugeShape.Bullet, + ShowGaugeAxis = false, + Domain = Domain.init(Row = 0, Column = 1), + UseDefaults = false + ) + + let ``Delta indicator with reference`` = + Chart.Indicator( + value = "300", + mode = StyleParam.IndicatorMode.NumberDelta, + DeltaReference = 90., + Domain = Domain.init(Row = 1, Column = 0), + UseDefaults = false + ) + + let ``Delta indicator`` = + Chart.Indicator( + value = 40., + mode = StyleParam.IndicatorMode.Delta, + DeltaReference = 90., + Domain = Domain.init(Row = 1, Column = 1), + UseDefaults = false + ) + module Icicle = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 259f6c2cf..8bd0319e9 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -30,7 +30,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs index 2466b993f..e7c460e55 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/Chart2D.fs @@ -149,6 +149,14 @@ module Funnel = let ``Funnel chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Funnel" [ + testCase "Funnel data" ( fun () -> + """var data = [{"type":"funnel","x":[1200.0,909.4,600.6,300.0,80.0],"y":["Sales person A","Sales person B","Sales person C","Sales person D","Sales person E"],"marker":{"color":"59D4E8","line":{"color":"3E4E88","width":2.0}},"connector":{"line":{"color":"royalblue","width":3.0,"dash":"dot"}}}];""" + |> chartGeneratedContains Funnel.``Simple funnel chart`` + ); + testCase "Funnel layout" ( fun () -> + "var layout = {\"margin\":{\"l\":100}};" + |> chartGeneratedContains Funnel.``Simple funnel chart`` + ); ] ] @@ -442,6 +450,22 @@ module OHLC = let ``OHLC chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "OHLC" [ + testCase "simple OHLC data" ( fun () -> + """var data = [{"type":"ohlc","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" + |> chartGeneratedContains OHLC.``Simple OHLC chart`` + ); + testCase "simple OHLC layout" ( fun () -> + """var layout = {"xaxis":{"rangeslider":{"yaxis":{}}}};""" + |> chartGeneratedContains OHLC.``Simple OHLC chart`` + ); + testCase "OHLC no range slider data" ( fun () -> + """var data = [{"type":"ohlc","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" + |> chartGeneratedContains OHLC.``Simple OHLC chart without range slider`` + ); + testCase "OHLC no range slider layout" ( fun () -> + """var layout = {"xaxis":{"rangeslider":{"visible":false,"yaxis":{}}}};""" + |> chartGeneratedContains OHLC.``Simple OHLC chart without range slider`` + ); ] ] @@ -450,6 +474,22 @@ module Candlestick = let ``Candlestick chart HTML codegeneration tests`` = testList "HTMLCodegen.Chart2D" [ testList "Candlestick" [ + testCase "simple Candlestick data" ( fun () -> + """var data = [{"type":"candlestick","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" + |> chartGeneratedContains Candlestick.``Simple candlestick chart`` + ); + testCase "simple Candlestick layout" ( fun () -> + """var layout = {"xaxis":{"rangeslider":{"yaxis":{}}}};""" + |> chartGeneratedContains Candlestick.``Simple candlestick chart`` + ); + testCase "Candlestick no range slider data" ( fun () -> + """var data = [{"type":"candlestick","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" + |> chartGeneratedContains Candlestick.``Simple candlestick chart without range slider`` + ); + testCase "Candlestick no range slider layout" ( fun () -> + """var layout = {"xaxis":{"rangeslider":{"visible":false,"yaxis":{}}}};""" + |> chartGeneratedContains Candlestick.``Simple candlestick chart without range slider`` + ); ] ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs index 55a6bcf61..200c307a6 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs @@ -51,6 +51,20 @@ module FunnelArea = let ``FunnelArea chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ testList "FunnelArea" [ + testCase "Funnel area data" ( fun () -> + """var data = [{"type":"funnelarea","values":[5,4,3,2,1],"text":["The 1st","The 2nd","The 3rd","The 4th","The 5th"],"marker":{"line":{"color":"purple","width":3.0}}}];""" + |> chartGeneratedContains FunnelArea.``Simple funnelarea chart`` + ); + testCase "Funnel area layout" ( fun () -> + emptyLayout FunnelArea.``Simple funnelarea chart`` + ); + testCase "Funnel area styled data" ( fun () -> + """var data = [{"type":"funnelarea","values":[5,4,3],"labels":["The 1st","The 2nd","The 3rd"],"text":["The 1st","The 2nd","The 3rd"],"marker":{"colors":["rgba(0, 255, 255, 1.0)","rgba(250, 128, 114, 1.0)","rgba(210, 180, 140, 1.0)"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":2.0}},"aspectratio":0.75,"baseratio":0.1}];""" + |> chartGeneratedContains FunnelArea.``Styled funnelarea chart`` + ); + testCase "Funnel area styled layout" ( fun () -> + emptyLayout FunnelArea.``Styled funnelarea chart`` + ); ] ] @@ -136,6 +150,34 @@ module Indicator = let ``Indicator chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ testList "Indicator" [ + testCase "Angular gauge indicator data" ( fun () -> + """var data = [{"type":"indicator","mode":"number+delta+gauge","value":200.0,"domain":{"row":0,"column":0},"delta":{"reference":160},"gauge":{"axis":{"range":[0.0,250.0]}}}];""" + |> chartGeneratedContains Indicator.``Angular gauge indicator`` + ); + testCase "Angular gauge indicator layout" ( fun () -> + emptyLayout Indicator.``Angular gauge indicator`` + ); + testCase "Bullet gauge indicator data" ( fun () -> + """var data = [{"type":"indicator","mode":"number+delta+gauge","value":120,"domain":{"row":0,"column":1},"delta":{"reference":90},"gauge":{"axis":{"visible":false,"range":[-200.0,200.0]},"shape":"bullet"}}];""" + |> chartGeneratedContains Indicator.``Bullet gauge indicator`` + ); + testCase "Bullet gauge indicator layout" ( fun () -> + emptyLayout Indicator.``Bullet gauge indicator`` + ); + testCase "Delta indicator with reference data" ( fun () -> + """var data = [{"type":"indicator","mode":"number+delta","value":"300","domain":{"row":1,"column":0},"delta":{"reference":90.0},"gauge":{"axis":{}}}];""" + |> chartGeneratedContains Indicator.``Delta indicator with reference`` + ); + testCase "Delta indicator with reference layout" ( fun () -> + emptyLayout Indicator.``Delta indicator with reference`` + ); + testCase "Delta indicator data" ( fun () -> + """var data = [{"type":"indicator","mode":"delta","value":40.0,"domain":{"row":1,"column":1},"delta":{"reference":90.0},"gauge":{"axis":{}}}];""" + |> chartGeneratedContains Indicator.``Delta indicator`` + ); + testCase "Delta indicator layout" ( fun () -> + emptyLayout Indicator.``Delta indicator`` + ); ] ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/FinanceCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/FinanceCharts.fs deleted file mode 100644 index b12d7ed11..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/FinanceCharts.fs +++ /dev/null @@ -1,208 +0,0 @@ -module Tests.FinanceCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open System - -open TestUtils.HtmlCodegen - -let candles = - [|("2020-01-17T13:40:00", 0.68888, 0.68888, 0.68879, 0.6888); - ("2020-01-17T13:41:00", 0.68883, 0.68884, 0.68875, 0.68877); - ("2020-01-17T13:42:00", 0.68878, 0.68889, 0.68878, 0.68886); - ("2020-01-17T13:43:00", 0.68886, 0.68886, 0.68876, 0.68879); - ("2020-01-17T13:44:00", 0.68879, 0.68879, 0.68873, 0.68874); - ("2020-01-17T13:45:00", 0.68875, 0.68877, 0.68867, 0.68868); - ("2020-01-17T13:46:00", 0.68869, 0.68887, 0.68869, 0.68883); - ("2020-01-17T13:47:00", 0.68883, 0.68899, 0.68883, 0.68899); - ("2020-01-17T13:48:00", 0.68898, 0.689, 0.68885, 0.68889); - ("2020-01-17T13:49:00", 0.68889, 0.68893, 0.68881, 0.68893); - ("2020-01-17T13:50:00", 0.68891, 0.68896, 0.68886, 0.68891); - |] - |> Array.map (fun (d,o,h,l,c)->System.DateTime.Parse d, StockData.Create(o,h,l,c)) - -let ohlc1Chart = Chart.OHLC(stockTimeSeries = candles, UseDefaults = false) - -let ohlc2Chart = - Chart.OHLC(stockTimeSeries = candles, ShowXAxisRangeSlider = false, UseDefaults = false) - - -[] -let ``OHLC charts`` = - testList "FinanceCharts.OHLC charts" [ - testCase "OHLC 1 data" ( fun () -> - """var data = [{"type":"ohlc","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" - |> chartGeneratedContains ohlc1Chart - ); - testCase "OHLC 1 layout" ( fun () -> - """var layout = {"xaxis":{"rangeslider":{"yaxis":{}}}};""" - |> chartGeneratedContains ohlc1Chart - ); - testCase "OHLC 2 data" ( fun () -> - """var data = [{"type":"ohlc","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" - |> chartGeneratedContains ohlc2Chart - ); - testCase "OHLC 2 layout" ( fun () -> - """var layout = {"xaxis":{"rangeslider":{"visible":false,"yaxis":{}}}};""" - |> chartGeneratedContains ohlc2Chart - ); - ] - -let candles1Chart = Chart.Candlestick(stockTimeSeries = candles, UseDefaults = false) - -let candles2Chart = - Chart.Candlestick(stockTimeSeries = candles, ShowXAxisRangeSlider = false, UseDefaults = false) - - -[] -let ``Candlestick charts`` = - testList "FinanceCharts.Candlestick charts" [ - testCase "Candlestick 1 data" ( fun () -> - """var data = [{"type":"candlestick","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" - |> chartGeneratedContains candles1Chart - ); - testCase "Candlestick 1 layout" ( fun () -> - """var layout = {"xaxis":{"rangeslider":{"yaxis":{}}}};""" - |> chartGeneratedContains candles1Chart - ); - testCase "Candlestick 2 data" ( fun () -> - """var data = [{"type":"candlestick","x":["2020-01-17T13:40:00","2020-01-17T13:41:00","2020-01-17T13:42:00","2020-01-17T13:43:00","2020-01-17T13:44:00","2020-01-17T13:45:00","2020-01-17T13:46:00","2020-01-17T13:47:00","2020-01-17T13:48:00","2020-01-17T13:49:00","2020-01-17T13:50:00"],"close":[0.6888,0.68877,0.68886,0.68879,0.68874,0.68868,0.68883,0.68899,0.68889,0.68893,0.68891],"open":[0.68888,0.68883,0.68878,0.68886,0.68879,0.68875,0.68869,0.68883,0.68898,0.68889,0.68891],"high":[0.68888,0.68884,0.68889,0.68886,0.68879,0.68877,0.68887,0.68899,0.689,0.68893,0.68896],"low":[0.68879,0.68875,0.68878,0.68876,0.68873,0.68867,0.68869,0.68883,0.68885,0.68881,0.68886],"increasing":{"line":{}},"decreasing":{"line":{}}}];""" - |> chartGeneratedContains candles2Chart - ); - testCase "Candlestick 2 layout" ( fun () -> - """var layout = {"xaxis":{"rangeslider":{"visible":false,"yaxis":{}}}};""" - |> chartGeneratedContains candles2Chart - ); - ] - - -let funnelChart = - let y = [|"Sales person A"; "Sales person B"; "Sales person C"; "Sales person D"; "Sales person E"|] - let x = [|1200.; 909.4; 600.6; 300.; 80.|] - - // Customize the connector lines used to connect the funnel bars - let connectorLine = Line.init (Color=Color.fromString "royalblue", Dash=StyleParam.DrawingStyle.Dot, Width=3.) - let connector = FunnelConnector.init(Line=connectorLine) - - // Customize the outline of the funnel bars - let line = Line.init(Width=2.,Color=Color.fromString "3E4E88") - - Chart.Funnel (x = x, y = y,MarkerColor=Color.fromString "59D4E8", MarkerOutline=line, Connector=connector, UseDefaults = false) - |> Chart.withMarginSize(Left=100) - -[] -let ``Funnel charts`` = - testList "FinanceCharts.Funnel charts" [ - testCase "Funnel data" ( fun () -> - """var data = [{"type":"funnel","x":[1200.0,909.4,600.6,300.0,80.0],"y":["Sales person A","Sales person B","Sales person C","Sales person D","Sales person E"],"marker":{"color":"59D4E8","line":{"color":"3E4E88","width":2.0}},"connector":{"line":{"color":"royalblue","width":3.0,"dash":"dot"}}}];""" - |> chartGeneratedContains funnelChart - ); - testCase "Funnel layout" ( fun () -> - "var layout = {\"margin\":{\"l\":100}};" - |> chartGeneratedContains funnelChart - ); - ] - - - -let funnelArea = - let values = [|5; 4; 3; 2; 1|] - let text = [|"The 1st"; "The 2nd"; "The 3rd"; "The 4th"; "The 5th"|] - let line = Line.init (Color=Color.fromString "purple", Width=3.) - Chart.FunnelArea(values=values, MultiText=text, SectionOutline=line, UseDefaults = false) - - -let funnelAreaStyled = - let values = [|5; 4; 3|] - let labels = [|"The 1st"; "The 2nd"; "The 3rd"|] - - Chart.FunnelArea( - values = values, - Labels = labels, - MultiText = labels, - SectionColors = [ - Color.fromKeyword Aqua - Color.fromKeyword Salmon - Color.fromKeyword Tan - ], - SectionOutlineColor = Color.fromKeyword Black, - SectionOutlineWidth = 2., - AspectRatio = 0.75, - BaseRatio = 0.1, - UseDefaults = false - ) - - -[] -let ``Funnel area charts`` = - testList "FinanceCharts.Funnel area charts" [ - testCase "Funnel area data" ( fun () -> - """var data = [{"type":"funnelarea","values":[5,4,3,2,1],"text":["The 1st","The 2nd","The 3rd","The 4th","The 5th"],"marker":{"line":{"color":"purple","width":3.0}}}];""" - |> chartGeneratedContains funnelArea - ); - testCase "Funnel area layout" ( fun () -> - emptyLayout funnelArea - ); - testCase "Funnel area styled data" ( fun () -> - """var data = [{"type":"funnelarea","values":[5,4,3],"labels":["The 1st","The 2nd","The 3rd"],"text":["The 1st","The 2nd","The 3rd"],"marker":{"colors":["rgba(0, 255, 255, 1.0)","rgba(250, 128, 114, 1.0)","rgba(210, 180, 140, 1.0)"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":2.0}},"aspectratio":0.75,"baseratio":0.1}];""" - |> chartGeneratedContains funnelAreaStyled - ); - testCase "Funnel area styled layout" ( fun () -> - emptyLayout funnelAreaStyled - ); - ] - -let indicators = - [ - ChartDomain.Chart.Indicator( - value = 200., - mode = StyleParam.IndicatorMode.NumberDeltaGauge, - Delta = IndicatorDelta.init(Reference=160), - Range = StyleParam.Range.MinMax(0., 250.), - Domain = Domain.init(Row = 0, Column = 0), - UseDefaults = false - ) - Chart.Indicator( - value = 120, - mode = StyleParam.IndicatorMode.NumberDeltaGauge, - DeltaReference = 90, - Range = StyleParam.Range.MinMax(-200., 200.), - GaugeShape = StyleParam.IndicatorGaugeShape.Bullet, - ShowGaugeAxis = false, - Domain = Domain.init(Row = 0, Column = 1), - UseDefaults = false - ) - Chart.Indicator( - value = "300", - mode = StyleParam.IndicatorMode.NumberDelta, - DeltaReference = 90., - Domain = Domain.init(Row = 1, Column = 0), - UseDefaults = false - ) - Chart.Indicator( - value = 40., - mode = StyleParam.IndicatorMode.Delta, - DeltaReference = 90., - Domain = Domain.init(Row = 1, Column = 1), - UseDefaults = false - ) - ] - |> Chart.combine - |> Chart.withLayoutGridStyle(Rows = 2, Columns = 2) - - -[] -let ``Indicator charts`` = - testList "FinanceCharts.Indicator charts" [ - testCase "Indicator data" ( fun () -> - """var data = [{"type":"indicator","mode":"number+delta+gauge","value":200.0,"domain":{"row":0,"column":0},"delta":{"reference":160},"gauge":{"axis":{"range":[0.0,250.0]}}},{"type":"indicator","mode":"number+delta+gauge","value":120,"domain":{"row":0,"column":1},"delta":{"reference":90},"gauge":{"axis":{"visible":false,"range":[-200.0,200.0]},"shape":"bullet"}},{"type":"indicator","mode":"number+delta","value":"300","domain":{"row":1,"column":0},"delta":{"reference":90.0},"gauge":{"axis":{}}},{"type":"indicator","mode":"delta","value":40.0,"domain":{"row":1,"column":1},"delta":{"reference":90.0},"gauge":{"axis":{}}}];""" - |> chartGeneratedContains indicators - ); - testCase "Indicator layout" ( fun () -> - """var layout = {"grid":{"rows":2,"columns":2}};""" - |> chartGeneratedContains indicators - ); - ] \ No newline at end of file From 62640327a3d65ca10cff6e6c7c2908e46970773e Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 13:39:33 +0200 Subject: [PATCH 20/26] Refactor PolarCharts tests --- .../FSharpTestBase/FSharpTestBase.fsproj | 1 + .../TestCharts/ChartPolarTestCharts.fs | 62 ++++++++++ tests/CoreTests/CoreTests/CoreTests.fsproj | 2 +- .../CoreTests/HTMLCodegen/ChartPolar.fs | 87 +++++++++++++ .../CoreTests/HTMLCodegen/PolarCharts.fs | 116 ------------------ 5 files changed, 151 insertions(+), 117 deletions(-) create mode 100644 tests/Common/FSharpTestBase/TestCharts/ChartPolarTestCharts.fs create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/PolarCharts.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index 2d0ba9379..6fa495447 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -15,6 +15,7 @@ + diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartPolarTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartPolarTestCharts.fs new file mode 100644 index 000000000..e512cf18f --- /dev/null +++ b/tests/Common/FSharpTestBase/TestCharts/ChartPolarTestCharts.fs @@ -0,0 +1,62 @@ +module ChartPolarTestCharts + +open Plotly.NET +open Plotly.NET.TraceObjects +open Plotly.NET.LayoutObjects +open System + +open TestUtils.DataGeneration +open Deedle + +let internal radial = [ 1; 2; 3; 4; 5; 6; 7;] +let internal theta = [0; 45; 90; 135; 200; 320; 184;] + +module ScatterPolar = () + +module PointPolar = + + let ``Simple polar point chart`` = Chart.PointPolar(r = radial,theta = theta, UseDefaults = false) + +module LinePolar = + + let ``Simple polar line chart with line style`` = + Chart.LinePolar(r = radial,theta = theta, UseDefaults = false) + |> Chart.withLineStyle(Color=Color.fromString "purple",Dash=StyleParam.DrawingStyle.DashDot) + +module SplinePolar = + + let ``styled polar spline chart`` = + Chart.SplinePolar( + r = radial, + theta = theta, + MultiText=["one";"two";"three";"four";"five";"six";"seven"], + TextPosition=StyleParam.TextPosition.TopCenter, + ShowMarkers=true, + UseDefaults = false + ) + +module BubblePolar = () + +module BarPolar = + + let ``Styled windrose chart`` = + let r = [77.5; 72.5; 70.0; 45.0; 22.5; 42.5; 40.0; 62.5] + let r2 = [57.5; 50.0; 45.0; 35.0; 20.0; 22.5; 37.5; 55.0] + let r3 = [40.0; 30.0; 30.0; 35.0; 7.5; 7.5; 32.5; 40.0] + let r4 = [20.0; 7.5; 15.0; 22.5; 2.5; 2.5; 12.5; 22.5] + + let t = ["North"; "N-E"; "East"; "S-E"; "South"; "S-W"; "West"; "N-W"] + + [ + Chart.BarPolar (r = r , theta = t, Name="11-14 m/s" , MarkerPatternShape = StyleParam.PatternShape.Checked , UseDefaults = false) + Chart.BarPolar (r = r2, theta = t, Name="8-11 m/s" , MarkerPatternShape = StyleParam.PatternShape.DiagonalChecked, UseDefaults = false) + Chart.BarPolar (r = r3, theta = t, Name="5-8 m/s" , MarkerPatternShape = StyleParam.PatternShape.VerticalLines , UseDefaults = false) + Chart.BarPolar (r = r4, theta = t, Name="< 5 m/s" , MarkerPatternShape = StyleParam.PatternShape.HorizontalLines, UseDefaults = false) + ] + |> Chart.combine + |> Chart.withAngularAxis( + AngularAxis.init( + CategoryOrder = StyleParam.CategoryOrder.Array, + CategoryArray = (["East"; "N-E"; "North"; "N-W"; "West"; "S-W"; "South"; "S-E";]) // set the order of the categorical axis + ) + ) \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 8bd0319e9..aecdafa6f 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -13,6 +13,7 @@ + @@ -30,7 +31,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar.fs new file mode 100644 index 000000000..16eb34a5f --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartPolar.fs @@ -0,0 +1,87 @@ +module CoreTests.HTMLCodegen.ChartPolar + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +open ChartPolarTestCharts + +module ScatterPolar = + [] + let ``ScatterPolar chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartPolar" [ + testList "ScatterPolar" [ + ] + ] + +module PointPolar = + [] + let ``PointPolar chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartPolar" [ + testList "PointPolar" [ + testCase "Polar Point data" ( fun () -> + """var data = [{"type":"scatterpolar","mode":"markers","r":[1,2,3,4,5,6,7],"theta":[0,45,90,135,200,320,184],"marker":{}}];""" + |> chartGeneratedContains PointPolar.``Simple polar point chart`` + ); + testCase "Polar Point layout" ( fun () -> + emptyLayout PointPolar.``Simple polar point chart`` + ); + ] + ] + +module LinePolar = + [] + let ``LinePolar chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartPolar" [ + testList "LinePolar" [ + testCase "Polar Line data" ( fun () -> + """var data = [{"type":"scatterpolar","mode":"lines","r":[1,2,3,4,5,6,7],"theta":[0,45,90,135,200,320,184],"marker":{},"line":{"color":"purple","dash":"dashdot"}}];""" + |> chartGeneratedContains LinePolar.``Simple polar line chart with line style`` + ); + testCase "Polar Line layout" ( fun () -> + emptyLayout LinePolar.``Simple polar line chart with line style`` + ); + ] + ] + +module SplinePolar = + [] + let ``SplinePolar chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartPolar" [ + testList "SplinePolar" [ + testCase "Polar Spline data" ( fun () -> + """var data = [{"type":"scatterpolar","mode":"lines+markers+text","r":[1,2,3,4,5,6,7],"theta":[0,45,90,135,200,320,184],"text":["one","two","three","four","five","six","seven"],"textposition":"top center","marker":{},"line":{"shape":"spline"}}];""" + |> chartGeneratedContains SplinePolar.``styled polar spline chart`` + ); + testCase "Polar Spline layout" ( fun () -> + emptyLayout SplinePolar.``styled polar spline chart`` + ); + ] + ] + +module BubblePolar = + [] + let ``BubblePolar chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartPolar" [ + testList "BubblePolar" [ + ] + ] + +module BarPolar = + [] + let ``BarPolar chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartPolar" [ + testList "BarPolar" [ + testCase "Polar Bar data" ( fun () -> + """var data = [{"type":"barpolar","name":"11-14 m/s","r":[77.5,72.5,70.0,45.0,22.5,42.5,40.0,62.5],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"+"}}},{"type":"barpolar","name":"8-11 m/s","r":[57.5,50.0,45.0,35.0,20.0,22.5,37.5,55.0],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"x"}}},{"type":"barpolar","name":"5-8 m/s","r":[40.0,30.0,30.0,35.0,7.5,7.5,32.5,40.0],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"|"}}},{"type":"barpolar","name":"< 5 m/s","r":[20.0,7.5,15.0,22.5,2.5,2.5,12.5,22.5],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"-"}}}];""" + |> chartGeneratedContains BarPolar.``Styled windrose chart`` + ); + testCase "Polar Bar layout" ( fun () -> + """var layout = {"polar":{"angularaxis":{"categoryorder":"array","categoryarray":["East","N-E","North","N-W","West","S-W","South","S-E"]}}};""" + |> chartGeneratedContains BarPolar.``Styled windrose chart`` + ); + ] + ] \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/PolarCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/PolarCharts.fs deleted file mode 100644 index 8e571af3f..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/PolarCharts.fs +++ /dev/null @@ -1,116 +0,0 @@ -module Tests.PolarCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open System - -open TestUtils.HtmlCodegen - -//radial coordinates -let radial = [ 1; 2; 3; 4; 5; 6; 7;] -// angular coordinates -let theta = [0; 45; 90; 135; 200; 320; 184;] - - -let pointPolar = Chart.PointPolar(r = radial,theta = theta, UseDefaults = false) - -let linePolar = - Chart.LinePolar(r = radial,theta = theta, UseDefaults = false) - |> Chart.withLineStyle(Color=Color.fromString "purple",Dash=StyleParam.DrawingStyle.DashDot) - -let splinePolar = - Chart.SplinePolar( - r = radial, - theta = theta, - MultiText=["one";"two";"three";"four";"five";"six";"seven"], - TextPosition=StyleParam.TextPosition.TopCenter, - ShowMarkers=true, - UseDefaults = false - ) - -let barPolar = - let r = [77.5; 72.5; 70.0; 45.0; 22.5; 42.5; 40.0; 62.5] - let r2 = [57.5; 50.0; 45.0; 35.0; 20.0; 22.5; 37.5; 55.0] - let r3 = [40.0; 30.0; 30.0; 35.0; 7.5; 7.5; 32.5; 40.0] - let r4 = [20.0; 7.5; 15.0; 22.5; 2.5; 2.5; 12.5; 22.5] - - let t = ["North"; "N-E"; "East"; "S-E"; "South"; "S-W"; "West"; "N-W"] - - [ - Chart.BarPolar (r = r , theta = t, Name="11-14 m/s" , MarkerPatternShape = StyleParam.PatternShape.Checked , UseDefaults = false) - Chart.BarPolar (r = r2, theta = t, Name="8-11 m/s" , MarkerPatternShape = StyleParam.PatternShape.DiagonalChecked, UseDefaults = false) - Chart.BarPolar (r = r3, theta = t, Name="5-8 m/s" , MarkerPatternShape = StyleParam.PatternShape.VerticalLines , UseDefaults = false) - Chart.BarPolar (r = r4, theta = t, Name="< 5 m/s" , MarkerPatternShape = StyleParam.PatternShape.HorizontalLines, UseDefaults = false) - ] - |> Chart.combine - |> Chart.withAngularAxis( - AngularAxis.init( - CategoryOrder = StyleParam.CategoryOrder.Array, - CategoryArray = (["East"; "N-E"; "North"; "N-W"; "West"; "S-W"; "South"; "S-E";]) // set the order of the categorical axis - ) - ) - -[] -let ``Polar charts`` = - testList "PolarCharts.Polar charts" [ - testCase "Polar Point data" ( fun () -> - """var data = [{"type":"scatterpolar","mode":"markers","r":[1,2,3,4,5,6,7],"theta":[0,45,90,135,200,320,184],"marker":{}}];""" - |> chartGeneratedContains pointPolar - ); - testCase "Polar Point layout" ( fun () -> - emptyLayout pointPolar - ); - testCase "Polar Line data" ( fun () -> - """var data = [{"type":"scatterpolar","mode":"lines","r":[1,2,3,4,5,6,7],"theta":[0,45,90,135,200,320,184],"marker":{},"line":{"color":"purple","dash":"dashdot"}}];""" - |> chartGeneratedContains linePolar - ); - testCase "Polar Line layout" ( fun () -> - emptyLayout linePolar - ); - testCase "Polar Spline data" ( fun () -> - """var data = [{"type":"scatterpolar","mode":"lines+markers+text","r":[1,2,3,4,5,6,7],"theta":[0,45,90,135,200,320,184],"text":["one","two","three","four","five","six","seven"],"textposition":"top center","marker":{},"line":{"shape":"spline"}}];""" - |> chartGeneratedContains splinePolar - ); - testCase "Polar Spline layout" ( fun () -> - emptyLayout splinePolar - ); - testCase "Polar Bar data" ( fun () -> - """var data = [{"type":"barpolar","name":"11-14 m/s","r":[77.5,72.5,70.0,45.0,22.5,42.5,40.0,62.5],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"+"}}},{"type":"barpolar","name":"8-11 m/s","r":[57.5,50.0,45.0,35.0,20.0,22.5,37.5,55.0],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"x"}}},{"type":"barpolar","name":"5-8 m/s","r":[40.0,30.0,30.0,35.0,7.5,7.5,32.5,40.0],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"|"}}},{"type":"barpolar","name":"< 5 m/s","r":[20.0,7.5,15.0,22.5,2.5,2.5,12.5,22.5],"theta":["North","N-E","East","S-E","South","S-W","West","N-W"],"marker":{"pattern":{"shape":"-"}}}];""" - |> chartGeneratedContains barPolar - ); - testCase "Polar Bar layout" ( fun () -> - """var layout = {"polar":{"angularaxis":{"categoryorder":"array","categoryarray":["East","N-E","North","N-W","West","S-W","South","S-E"]}}};""" - |> chartGeneratedContains barPolar - ); - ] - - -//let windrose1Chart = -// let r = [77.5; 72.5; 70.0; 45.0; 22.5; 42.5; 40.0; 62.5] -// let r' = [57.5; 50.0; 45.0; 35.0; 20.0; 22.5; 37.5; 55.0] -// let r'' = [40.0; 30.0; 30.0; 35.0; 7.5; 7.5; 32.5; 40.0] -// let r''' = [20.0; 7.5; 15.0; 22.5; 2.5; 2.5; 12.5; 22.5] - -// let t = ["North"; "N-E"; "East"; "S-E"; "South"; "S-W"; "West"; "N-W"] -// [ -// Chart.WindRose (r ,t,Name="11-14 m/s") -// Chart.WindRose (r' ,t,Name="8-11 m/s") -// Chart.WindRose (r'' ,t,Name="5-8 m/s") -// Chart.WindRose (r''',t,Name="< 5 m/s") -// ] -// |> Chart.combine - -//[] -//let ``Windrose charts`` = -// testList "PolarCharts.Windrose charts" [ -// testCase "Windrose data" ( fun () -> -// "var data = [{\"type\":\"area\",\"r\":[77.5,72.5,70.0,45.0,22.5,42.5,40.0,62.5],\"t\":[\"North\",\"N-E\",\"East\",\"S-E\",\"South\",\"S-W\",\"West\",\"N-W\"],\"name\":\"11-14 m/s\",\"line\":{},\"marker\":{}},{\"type\":\"area\",\"r\":[57.5,50.0,45.0,35.0,20.0,22.5,37.5,55.0],\"t\":[\"North\",\"N-E\",\"East\",\"S-E\",\"South\",\"S-W\",\"West\",\"N-W\"],\"name\":\"8-11 m/s\",\"line\":{},\"marker\":{}},{\"type\":\"area\",\"r\":[40.0,30.0,30.0,35.0,7.5,7.5,32.5,40.0],\"t\":[\"North\",\"N-E\",\"East\",\"S-E\",\"South\",\"S-W\",\"West\",\"N-W\"],\"name\":\"5-8 m/s\",\"line\":{},\"marker\":{}},{\"type\":\"area\",\"r\":[20.0,7.5,15.0,22.5,2.5,2.5,12.5,22.5],\"t\":[\"North\",\"N-E\",\"East\",\"S-E\",\"South\",\"S-W\",\"West\",\"N-W\"],\"name\":\"< 5 m/s\",\"line\":{},\"marker\":{}}];" -// |> chartGeneratedContains windrose1Chart -// ); -// testCase "Windrose layout" ( fun () -> -// emptyLayout windrose1Chart -// ); -// ] \ No newline at end of file From 8041beb1bb9f933855fca085574c4f8288324e16 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 13:47:12 +0200 Subject: [PATCH 21/26] Refactor TernaryCharts tests --- .../FSharpTestBase/FSharpTestBase.fsproj | 1 + .../TestCharts/ChartTernaryTestCharts.fs | 40 +++++++++++++ tests/CoreTests/CoreTests/CoreTests.fsproj | 2 +- .../CoreTests/HTMLCodegen/ChartTernary.fs | 58 ++++++++++++++++++ .../CoreTests/HTMLCodegen/TernaryCharts.fs | 59 ------------------- tests/README.md | 2 +- 6 files changed, 101 insertions(+), 61 deletions(-) create mode 100644 tests/Common/FSharpTestBase/TestCharts/ChartTernaryTestCharts.fs create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/TernaryCharts.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index 6fa495447..f49f8aa1b 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -17,6 +17,7 @@ + diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartTernaryTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartTernaryTestCharts.fs new file mode 100644 index 000000000..622130e9e --- /dev/null +++ b/tests/Common/FSharpTestBase/TestCharts/ChartTernaryTestCharts.fs @@ -0,0 +1,40 @@ +module ChartTernaryTestCharts + +open Plotly.NET +open Plotly.NET.TraceObjects +open Plotly.NET.LayoutObjects +open System + +open TestUtils.DataGeneration +open Deedle + +module ScatterTernary = () + +module PointTernary = + + let ``Styled ternary point chart`` = + Chart.PointTernary(abc = [1,2,3], UseDefaults = false) + |> Chart.withAAxis(LinearAxis.init(Title = Title.init("A"), Color = Color.fromKeyword ColorKeyword.DarkOrchid)) + |> Chart.withBAxis(LinearAxis.init(Title = Title.init("B"), Color = Color.fromKeyword ColorKeyword.DarkRed)) + |> Chart.withCAxis(LinearAxis.init(Title = Title.init("C"), Color = Color.fromKeyword ColorKeyword.DarkCyan)) + +module LineTernary = + + let ``Styled ternary line chart`` = + Chart.LineTernary( + A = [10; 20; 30; 40; 50; 60; 70; 80;], + B = ([10; 20; 30; 40; 50; 60; 70; 80;] |> List.rev), + Sum = 100, + ShowMarkers = true, + LineDash = StyleParam.DrawingStyle.DashDot, + UseDefaults = false + ) + |> Chart.withTernary( + Ternary.init( + AAxis = LinearAxis.init(Color = Color.fromKeyword ColorKeyword.DarkOrchid), + BAxis = LinearAxis.init(Color = Color.fromKeyword ColorKeyword.DarkRed), + CAxis = LinearAxis.init(Color = Color.fromKeyword ColorKeyword.DarkCyan) + ) + ) + +module BubbleTernary = () \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index aecdafa6f..d1575d8f7 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -15,6 +15,7 @@ + @@ -31,7 +32,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary.fs new file mode 100644 index 000000000..03c6292e2 --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartTernary.fs @@ -0,0 +1,58 @@ +module CoreTests.HTMLCodegen.ChartTernary + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +open ChartTernaryTestCharts + +module ScatterTernary = + [] + let ``ScatterTernary chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartTernary" [ + testList "ScatterTernary" [ + ] + ] + +module PointTernary = + [] + let ``PointTernary chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartTernary" [ + testList "PointTernary" [ + testCase "Point data" ( fun () -> + """var data = [{"type":"scatterternary","mode":"markers","a":[1],"b":[2],"c":[3],"marker":{},"line":{}}];""" + |> chartGeneratedContains PointTernary.``Styled ternary point chart`` + ) + testCase "Point layout" ( fun () -> + """var layout = {"ternary":{"aaxis":{"color":"rgba(153, 50, 204, 1.0)","title":{"text":"A"}},"baxis":{"color":"rgba(139, 0, 0, 1.0)","title":{"text":"B"}},"caxis":{"color":"rgba(0, 139, 139, 1.0)","title":{"text":"C"}}}};""" + |> chartGeneratedContains PointTernary.``Styled ternary point chart`` + ) + ] + ] + +module LineTernary = + [] + let ``LineTernary chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartTernary" [ + testList "LineTernary" [ + testCase "Line data" ( fun () -> + """var data = [{"type":"scatterternary","mode":"lines+markers","a":[10,20,30,40,50,60,70,80],"b":[80,70,60,50,40,30,20,10],"marker":{},"line":{"dash":"dashdot"},"sum":100}];""" + |> chartGeneratedContains LineTernary.``Styled ternary line chart`` + ) + testCase "Line layout" ( fun () -> + """var layout = {"ternary":{"aaxis":{"color":"rgba(153, 50, 204, 1.0)"},"baxis":{"color":"rgba(139, 0, 0, 1.0)"},"caxis":{"color":"rgba(0, 139, 139, 1.0)"}}};""" + |> chartGeneratedContains LineTernary.``Styled ternary line chart`` + ) + ] + ] + +module BubbleTernary = + [] + let ``BubbleTernary chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartTernary" [ + testList "BubbleTernary" [ + ] + ] diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/TernaryCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/TernaryCharts.fs deleted file mode 100644 index 5422ac0ee..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/TernaryCharts.fs +++ /dev/null @@ -1,59 +0,0 @@ -module Tests.TernaryCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open System - -open TestUtils.HtmlCodegen - -let pointTernary = - Chart.PointTernary(abc = [1,2,3], UseDefaults = false) - |> Chart.withAAxis(LinearAxis.init(Title = Title.init("A"), Color = Color.fromKeyword ColorKeyword.DarkOrchid)) - |> Chart.withBAxis(LinearAxis.init(Title = Title.init("B"), Color = Color.fromKeyword ColorKeyword.DarkRed)) - |> Chart.withCAxis(LinearAxis.init(Title = Title.init("C"), Color = Color.fromKeyword ColorKeyword.DarkCyan)) - -let lineTernary = - Chart.LineTernary( - A = [10; 20; 30; 40; 50; 60; 70; 80;], - B = ([10; 20; 30; 40; 50; 60; 70; 80;] |> List.rev), - Sum = 100, - ShowMarkers = true, - LineDash = StyleParam.DrawingStyle.DashDot, - UseDefaults = false - ) - |> Chart.withTernary( - Ternary.init( - AAxis = LinearAxis.init(Color = Color.fromKeyword ColorKeyword.DarkOrchid), - BAxis = LinearAxis.init(Color = Color.fromKeyword ColorKeyword.DarkRed), - CAxis = LinearAxis.init(Color = Color.fromKeyword ColorKeyword.DarkCyan) - ) - ) - -[] -let ``Ternary Point charts`` = - testList "TernaryCharts.Point charts" [ - testCase "Point data" ( fun () -> - """var data = [{"type":"scatterternary","mode":"markers","a":[1],"b":[2],"c":[3],"marker":{},"line":{}}];""" - |> chartGeneratedContains pointTernary - ) - testCase "Point layout" ( fun () -> - """var layout = {"ternary":{"aaxis":{"color":"rgba(153, 50, 204, 1.0)","title":{"text":"A"}},"baxis":{"color":"rgba(139, 0, 0, 1.0)","title":{"text":"B"}},"caxis":{"color":"rgba(0, 139, 139, 1.0)","title":{"text":"C"}}}};""" - |> chartGeneratedContains pointTernary - ) - ] - -[] -let ``Ternary Line charts`` = - testList "TernaryCharts.Line charts" [ - testCase "Line data" ( fun () -> - """var data = [{"type":"scatterternary","mode":"lines+markers","a":[10,20,30,40,50,60,70,80],"b":[80,70,60,50,40,30,20,10],"marker":{},"line":{"dash":"dashdot"},"sum":100}];""" - |> chartGeneratedContains lineTernary - ) - testCase "Line layout" ( fun () -> - """var layout = {"ternary":{"aaxis":{"color":"rgba(153, 50, 204, 1.0)"},"baxis":{"color":"rgba(139, 0, 0, 1.0)"},"caxis":{"color":"rgba(0, 139, 139, 1.0)"}}};""" - |> chartGeneratedContains lineTernary - ) - ] \ No newline at end of file diff --git a/tests/README.md b/tests/README.md index 8d6f470c9..07a99f0b2 100644 --- a/tests/README.md +++ b/tests/README.md @@ -64,7 +64,7 @@ Currently, the following test projects are contained: #### CoreTests.fsproj -The largets test suirte by far that tests all things Plotly.NET, such as HTML code generation, JSON serialization, Object validity, etc. +The largets test suite by far that tests all things Plotly.NET, such as HTML code generation, JSON serialization, Object validity, etc. #### CSharpInteroperabilityTests.csproj From 1f1b4fb8fd68f17241c21d1df26bd21fc1173de3 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 14:01:40 +0200 Subject: [PATCH 22/26] Refactor CarpetCharts tests --- .../FSharpTestBase/FSharpTestBase.fsproj | 1 + .../TestCharts/ChartCarpetTestCharts.fs | 110 +++++++++++++ tests/CoreTests/CoreTests/CoreTests.fsproj | 2 +- .../CoreTests/HTMLCodegen/CarpetCharts.fs | 146 ------------------ .../CoreTests/HTMLCodegen/ChartCarpet.fs | 116 ++++++++++++++ 5 files changed, 228 insertions(+), 147 deletions(-) create mode 100644 tests/Common/FSharpTestBase/TestCharts/ChartCarpetTestCharts.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/CarpetCharts.fs create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index f49f8aa1b..0be44223b 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -18,6 +18,7 @@ + diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartCarpetTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartCarpetTestCharts.fs new file mode 100644 index 000000000..b185aad25 --- /dev/null +++ b/tests/Common/FSharpTestBase/TestCharts/ChartCarpetTestCharts.fs @@ -0,0 +1,110 @@ +module ChartCarpetTestCharts + + +open Plotly.NET +open Plotly.NET.TraceObjects +open Plotly.NET.LayoutObjects +open System + +open TestUtils.DataGeneration +open Deedle + +let internal a = [4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.] +let internal b = [1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.] +let internal y = [2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.] + +let internal carpets = + [ + Chart.Carpet(carpetId = "carpet1",A = a, B = b, Y = y, UseDefaults = false) + Chart.Carpet(carpetId = "carpet2",A = (a |> List.rev) , B = (b |> List.rev), Y = (y |> List.map (fun x -> x + 10.)), UseDefaults = false) + Chart.Carpet(carpetId = "carpet3",A = a, B = b, Y = (y |> List.map (fun x -> x + 20.)), UseDefaults = false) + Chart.Carpet(carpetId = "carpet4",A = (a |> List.rev) , B = (b |> List.rev), Y = (y |> List.map (fun x -> x + 30.)), UseDefaults = false) + Chart.Carpet(carpetId = "carpet5",A = a, B = b, Y = (y |> List.map (fun x -> x + 40.)), UseDefaults = false) + ] + +let internal aData = [4.; 5.; 5.; 6.] +let internal bData = [1.; 1.; 2.; 3.] +let internal sizes = [5; 10; 15; 20] + +let internal carpetCharts = + [ + Chart.ScatterCarpet( + a = aData,b = bData, + mode = StyleParam.Mode.Lines_Markers, + carpetAnchorId = "carpet1", + Name = "Scatter", + MultiMarkerSymbol =[ + StyleParam.MarkerSymbol.ArrowDown + StyleParam.MarkerSymbol.TriangleNW + StyleParam.MarkerSymbol.DiamondX + StyleParam.MarkerSymbol.Hexagon2 + ], + MarkerColor = Color.fromColors ([Red; Blue; Green; Yellow] |> List.map Color.fromKeyword), + UseDefaults = false + ) + Chart.PointCarpet(a = aData, b = bData, carpetAnchorId = "carpet2",Name = "Point", UseDefaults = false) + Chart.LineCarpet(a = aData, b = bData, carpetAnchorId = "carpet3",Name = "Line", UseDefaults = false) + Chart.SplineCarpet(a = aData, b = bData, carpetAnchorId = "carpet4",Name = "Spline", UseDefaults = false) + Chart.BubbleCarpet(absizes = (Seq.zip3 aData bData sizes), carpetAnchorId = "carpet5",Name = "Bubble", UseDefaults = false) + ] + +module Carpet = + + let ``Base carpet chart`` = carpets[0] + +module ScatterCarpet = + + let ``Simple carpet scatter chart`` = Chart.combine [carpets.[0]; carpetCharts.[0]] + +module PointCarpet = + + let ``Simple carpet point chart`` = Chart.combine [carpets.[1]; carpetCharts.[1]] + +module LineCarpet = + + let ``Simple carpet line chart`` = Chart.combine [carpets.[2]; carpetCharts.[2]] + +module SplineCarpet = + + let ``Simple carpet spline chart`` = Chart.combine [carpets.[3]; carpetCharts.[3]] + +module BubbleCarpet = + + let ``Simple carpet bubble chart`` = Chart.combine [carpets.[4]; carpetCharts.[4]] + +module ContourCarpet = + + let ``Styled carpet contour chart`` = + [ + Chart.Carpet( + carpetId = "contour", + A = [0.; 1.; 2.; 3.; 0.; 1.; 2.; 3.; 0.; 1.; 2.; 3.], + B = [4.; 4.; 4.; 4.; 5.; 5.; 5.; 5.; 6.; 6.; 6.; 6.], + X = [2.; 3.; 4.; 5.; 2.2; 3.1; 4.1; 5.1; 1.5; 2.5; 3.5; 4.5], + Y = [1.; 1.4; 1.6; 1.75; 2.; 2.5; 2.7; 2.75; 3.; 3.5; 3.7; 3.75], + AAxis = LinearAxis.initCarpet( + TickPrefix = "a = ", + Smoothing = 0., + MinorGridCount = 9, + AxisType = StyleParam.AxisType.Linear + ), + BAxis = LinearAxis.initCarpet( + TickPrefix = "b = ", + Smoothing = 0., + MinorGridCount = 9, + AxisType = StyleParam.AxisType.Linear + ), + UseDefaults = false, + Opacity = 0.75 + ) + Chart.ContourCarpet( + z = [1.; 1.96; 2.56; 3.0625; 4.; 5.0625; 1.; 7.5625; 9.; 12.25; 15.21; 14.0625], + carpetAnchorId = "contour", + A = [0; 1; 2; 3; 0; 1; 2; 3; 0; 1; 2; 3], + B = [4; 4; 4; 4; 5; 5; 5; 5; 6; 6; 6; 6], + UseDefaults = false, + ContourLineColor = Color.fromKeyword White, + ShowContourLabels = true + ) + ] + |> Chart.combine \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index d1575d8f7..40bde5fbf 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -16,6 +16,7 @@ + @@ -32,7 +33,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/CarpetCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/CarpetCharts.fs deleted file mode 100644 index 37ea1adc9..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/CarpetCharts.fs +++ /dev/null @@ -1,146 +0,0 @@ -module Tests.CarpetCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open System - -open TestUtils.HtmlCodegen - -let a = [4.; 4.; 4.; 4.5; 4.5; 4.5; 5.; 5.; 5.; 6.; 6.; 6.] -let b = [1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.; 1.; 2.; 3.] -let y = [2.; 3.5; 4.; 3.; 4.5; 5.; 5.5; 6.5; 7.5; 8.; 8.5; 10.] - -let carpets = - [ - Chart.Carpet(carpetId = "carpet1",A = a, B = b, Y = y, UseDefaults = false) - Chart.Carpet(carpetId = "carpet2",A = (a |> List.rev) , B = (b |> List.rev), Y = (y |> List.map (fun x -> x + 10.)), UseDefaults = false) - Chart.Carpet(carpetId = "carpet3",A = a, B = b, Y = (y |> List.map (fun x -> x + 20.)), UseDefaults = false) - Chart.Carpet(carpetId = "carpet4",A = (a |> List.rev) , B = (b |> List.rev), Y = (y |> List.map (fun x -> x + 30.)), UseDefaults = false) - Chart.Carpet(carpetId = "carpet5",A = a, B = b, Y = (y |> List.map (fun x -> x + 40.)), UseDefaults = false) - ] - -let aData = [4.; 5.; 5.; 6.] -let bData = [1.; 1.; 2.; 3.] -let sizes = [5; 10; 15; 20] - - -let carpetCharts = - [ - Chart.ScatterCarpet( - a = aData,b = bData, - mode = StyleParam.Mode.Lines_Markers, - carpetAnchorId = "carpet1", - Name = "Scatter", - MultiMarkerSymbol =[ - StyleParam.MarkerSymbol.ArrowDown - StyleParam.MarkerSymbol.TriangleNW - StyleParam.MarkerSymbol.DiamondX - StyleParam.MarkerSymbol.Hexagon2 - ], - MarkerColor = Color.fromColors ([Red; Blue; Green; Yellow] |> List.map Color.fromKeyword), - UseDefaults = false - ) - Chart.PointCarpet(a = aData, b = bData, carpetAnchorId = "carpet2",Name = "Point", UseDefaults = false) - Chart.LineCarpet(a = aData, b = bData, carpetAnchorId = "carpet3",Name = "Line", UseDefaults = false) - Chart.SplineCarpet(a = aData, b = bData, carpetAnchorId = "carpet4",Name = "Spline", UseDefaults = false) - Chart.BubbleCarpet(absizes = (Seq.zip3 aData bData sizes), carpetAnchorId = "carpet5",Name = "Bubble", UseDefaults = false) - ] - -let scatter = Chart.combine [carpets.[0]; carpetCharts.[0]] -let point = Chart.combine [carpets.[1]; carpetCharts.[1]] -let line = Chart.combine [carpets.[2]; carpetCharts.[2]] -let spline = Chart.combine [carpets.[3]; carpetCharts.[3]] -let bubble = Chart.combine [carpets.[4]; carpetCharts.[4]] - - -[] -let ``ScatterCarpet and derived Charts`` = - testList "CarpetCharts.ScatterCarpet and derived Charts" [ - testCase "ScatterCarpet data" ( fun () -> - """var data = [{"type":"carpet","y":[2.0,3.5,4.0,3.0,4.5,5.0,5.5,6.5,7.5,8.0,8.5,10.0],"a":[4.0,4.0,4.0,4.5,4.5,4.5,5.0,5.0,5.0,6.0,6.0,6.0],"b":[1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0],"carpet":"carpet1"},{"type":"scattercarpet","name":"Scatter","mode":"lines+markers","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{"color":["rgba(255, 0, 0, 1.0)","rgba(0, 0, 255, 1.0)","rgba(0, 128, 0, 1.0)","rgba(255, 255, 0, 1.0)"],"symbol":["46","12","32","15"]},"line":{},"carpet":"carpet1"}];""" - |> chartGeneratedContains scatter - ); - testCase "ScatterCarpet layout" ( fun () -> - emptyLayout scatter - ); - testCase "PointCarpet data" ( fun () -> - """var data = [{"type":"carpet","y":[12.0,13.5,14.0,13.0,14.5,15.0,15.5,16.5,17.5,18.0,18.5,20.0],"a":[6.0,6.0,6.0,5.0,5.0,5.0,4.5,4.5,4.5,4.0,4.0,4.0],"b":[3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0],"carpet":"carpet2"},{"type":"scattercarpet","name":"Point","mode":"markers","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{},"line":{},"carpet":"carpet2"}];""" - |> chartGeneratedContains point - ); - testCase "PointCarpet layout" ( fun () -> - emptyLayout point - ); - testCase "LineCarpet data" ( fun () -> - """var data = [{"type":"carpet","y":[22.0,23.5,24.0,23.0,24.5,25.0,25.5,26.5,27.5,28.0,28.5,30.0],"a":[4.0,4.0,4.0,4.5,4.5,4.5,5.0,5.0,5.0,6.0,6.0,6.0],"b":[1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0],"carpet":"carpet3"},{"type":"scattercarpet","name":"Line","mode":"lines","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{},"line":{},"carpet":"carpet3"}];""" - |> chartGeneratedContains line - ); - testCase "LineCarpet layout" ( fun () -> - emptyLayout line - ); - testCase "SplineCarpet data" ( fun () -> - """var data = [{"type":"carpet","y":[32.0,33.5,34.0,33.0,34.5,35.0,35.5,36.5,37.5,38.0,38.5,40.0],"a":[6.0,6.0,6.0,5.0,5.0,5.0,4.5,4.5,4.5,4.0,4.0,4.0],"b":[3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0],"carpet":"carpet4"},{"type":"scattercarpet","name":"Spline","mode":"lines","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{},"line":{"shape":"spline"},"carpet":"carpet4"}];""" - |> chartGeneratedContains spline - ); - testCase "SplineCarpet layout" ( fun () -> - emptyLayout spline - ); - testCase "BubbleCarpet data" ( fun () -> - """var data = [{"type":"carpet","y":[42.0,43.5,44.0,43.0,44.5,45.0,45.5,46.5,47.5,48.0,48.5,50.0],"a":[4.0,4.0,4.0,4.5,4.5,4.5,5.0,5.0,5.0,6.0,6.0,6.0],"b":[1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0],"carpet":"carpet5"},{"type":"scattercarpet","name":"Bubble","mode":"markers","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{"size":[5,10,15,20]},"line":{},"carpet":"carpet5"}];""" - |> chartGeneratedContains bubble - ); - testCase "BubbleCarpet layout" ( fun () -> - emptyLayout bubble - ); - - ] - - -let contour = - [ - Chart.Carpet( - carpetId = "contour", - A = [0.; 1.; 2.; 3.; 0.; 1.; 2.; 3.; 0.; 1.; 2.; 3.], - B = [4.; 4.; 4.; 4.; 5.; 5.; 5.; 5.; 6.; 6.; 6.; 6.], - X = [2.; 3.; 4.; 5.; 2.2; 3.1; 4.1; 5.1; 1.5; 2.5; 3.5; 4.5], - Y = [1.; 1.4; 1.6; 1.75; 2.; 2.5; 2.7; 2.75; 3.; 3.5; 3.7; 3.75], - AAxis = LinearAxis.initCarpet( - TickPrefix = "a = ", - Smoothing = 0., - MinorGridCount = 9, - AxisType = StyleParam.AxisType.Linear - ), - BAxis = LinearAxis.initCarpet( - TickPrefix = "b = ", - Smoothing = 0., - MinorGridCount = 9, - AxisType = StyleParam.AxisType.Linear - ), - UseDefaults = false, - Opacity = 0.75 - ) - Chart.ContourCarpet( - z = [1.; 1.96; 2.56; 3.0625; 4.; 5.0625; 1.; 7.5625; 9.; 12.25; 15.21; 14.0625], - carpetAnchorId = "contour", - A = [0; 1; 2; 3; 0; 1; 2; 3; 0; 1; 2; 3], - B = [4; 4; 4; 4; 5; 5; 5; 5; 6; 6; 6; 6], - UseDefaults = false, - ContourLineColor = Color.fromKeyword White, - ShowContourLabels = true - ) - ] - |> Chart.combine - -[] -let ``ContourCarpet Charts`` = - testList "CarpetCharts.ContourCarpet Charts" [ - testCase "ContourCarpet data" ( fun () -> - """var data = [{"type":"carpet","opacity":0.75,"x":[2.0,3.0,4.0,5.0,2.2,3.1,4.1,5.1,1.5,2.5,3.5,4.5],"y":[1.0,1.4,1.6,1.75,2.0,2.5,2.7,2.75,3.0,3.5,3.7,3.75],"a":[0.0,1.0,2.0,3.0,0.0,1.0,2.0,3.0,0.0,1.0,2.0,3.0],"b":[4.0,4.0,4.0,4.0,5.0,5.0,5.0,5.0,6.0,6.0,6.0,6.0],"aaxis":{"type":"linear","tickprefix":"a = ","minorgridcount":9,"smoothing":0.0},"baxis":{"type":"linear","tickprefix":"b = ","minorgridcount":9,"smoothing":0.0},"carpet":"contour"},{"type":"contourcarpet","z":[1.0,1.96,2.56,3.0625,4.0,5.0625,1.0,7.5625,9.0,12.25,15.21,14.0625],"a":[0,1,2,3,0,1,2,3,0,1,2,3],"b":[4,4,4,4,5,5,5,5,6,6,6,6],"line":{"color":"rgba(255, 255, 255, 1.0)"},"carpet":"contour","contours":{"showlabels":true}}];""" - |> chartGeneratedContains contour - ); - testCase "ScatterCarpet layout" ( fun () -> - emptyLayout contour - ); - ] \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet.fs new file mode 100644 index 000000000..0c52e7b7b --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartCarpet.fs @@ -0,0 +1,116 @@ +module CoreTests.HTMLCodegen.ChartCarpet + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +open ChartCarpetTestCharts + +module Carpet = + + [] + let ``Carpet chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartCarpet" [ + testList "Carpet" [ + ] + ] + +module ScatterCarpet = + + [] + let ``ScatterCarpet chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartCarpet" [ + testList "ScatterCarpet" [ + testCase "ScatterCarpet data" ( fun () -> + """var data = [{"type":"carpet","y":[2.0,3.5,4.0,3.0,4.5,5.0,5.5,6.5,7.5,8.0,8.5,10.0],"a":[4.0,4.0,4.0,4.5,4.5,4.5,5.0,5.0,5.0,6.0,6.0,6.0],"b":[1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0],"carpet":"carpet1"},{"type":"scattercarpet","name":"Scatter","mode":"lines+markers","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{"color":["rgba(255, 0, 0, 1.0)","rgba(0, 0, 255, 1.0)","rgba(0, 128, 0, 1.0)","rgba(255, 255, 0, 1.0)"],"symbol":["46","12","32","15"]},"line":{},"carpet":"carpet1"}];""" + |> chartGeneratedContains ScatterCarpet.``Simple carpet scatter chart`` + ); + testCase "ScatterCarpet layout" ( fun () -> + emptyLayout ScatterCarpet.``Simple carpet scatter chart`` + ); + ] + ] + +module PointCarpet = + + [] + let ``PointCarpet chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartCarpet" [ + testList "PointCarpet" [ + testCase "PointCarpet data" ( fun () -> + """var data = [{"type":"carpet","y":[12.0,13.5,14.0,13.0,14.5,15.0,15.5,16.5,17.5,18.0,18.5,20.0],"a":[6.0,6.0,6.0,5.0,5.0,5.0,4.5,4.5,4.5,4.0,4.0,4.0],"b":[3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0],"carpet":"carpet2"},{"type":"scattercarpet","name":"Point","mode":"markers","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{},"line":{},"carpet":"carpet2"}];""" + |> chartGeneratedContains PointCarpet.``Simple carpet point chart`` + ); + testCase "PointCarpet layout" ( fun () -> + emptyLayout PointCarpet.``Simple carpet point chart`` + ); + ] + ] + +module LineCarpet = + + [] + let ``LineCarpet chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartCarpet" [ + testList "LineCarpet" [ + testCase "LineCarpet data" ( fun () -> + """var data = [{"type":"carpet","y":[22.0,23.5,24.0,23.0,24.5,25.0,25.5,26.5,27.5,28.0,28.5,30.0],"a":[4.0,4.0,4.0,4.5,4.5,4.5,5.0,5.0,5.0,6.0,6.0,6.0],"b":[1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0],"carpet":"carpet3"},{"type":"scattercarpet","name":"Line","mode":"lines","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{},"line":{},"carpet":"carpet3"}];""" + |> chartGeneratedContains LineCarpet.``Simple carpet line chart`` + ); + testCase "LineCarpet layout" ( fun () -> + emptyLayout LineCarpet.``Simple carpet line chart`` + ); + ] + ] + +module SplineCarpet = + + [] + let ``SplineCarpet chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartCarpet" [ + testList "SplineCarpet" [ + testCase "SplineCarpet data" ( fun () -> + """var data = [{"type":"carpet","y":[32.0,33.5,34.0,33.0,34.5,35.0,35.5,36.5,37.5,38.0,38.5,40.0],"a":[6.0,6.0,6.0,5.0,5.0,5.0,4.5,4.5,4.5,4.0,4.0,4.0],"b":[3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0,3.0,2.0,1.0],"carpet":"carpet4"},{"type":"scattercarpet","name":"Spline","mode":"lines","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{},"line":{"shape":"spline"},"carpet":"carpet4"}];""" + |> chartGeneratedContains SplineCarpet.``Simple carpet spline chart`` + ); + testCase "SplineCarpet layout" ( fun () -> + emptyLayout SplineCarpet.``Simple carpet spline chart`` + ); + ] + ] + +module BubbleCarpet = + + [] + let ``BubbleCarpet chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartCarpet" [ + testList "BubbleCarpet" [ + testCase "BubbleCarpet data" ( fun () -> + """var data = [{"type":"carpet","y":[42.0,43.5,44.0,43.0,44.5,45.0,45.5,46.5,47.5,48.0,48.5,50.0],"a":[4.0,4.0,4.0,4.5,4.5,4.5,5.0,5.0,5.0,6.0,6.0,6.0],"b":[1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0,1.0,2.0,3.0],"carpet":"carpet5"},{"type":"scattercarpet","name":"Bubble","mode":"markers","a":[4.0,5.0,5.0,6.0],"b":[1.0,1.0,2.0,3.0],"marker":{"size":[5,10,15,20]},"line":{},"carpet":"carpet5"}];""" + |> chartGeneratedContains BubbleCarpet.``Simple carpet bubble chart`` + ); + testCase "BubbleCarpet layout" ( fun () -> + emptyLayout BubbleCarpet.``Simple carpet bubble chart`` + ); + ] + ] + +module ContourCarpet = + + [] + let ``ContourCarpet chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartCarpet" [ + testList "ContourCarpet" [ + testCase "ContourCarpet data" ( fun () -> + """var data = [{"type":"carpet","opacity":0.75,"x":[2.0,3.0,4.0,5.0,2.2,3.1,4.1,5.1,1.5,2.5,3.5,4.5],"y":[1.0,1.4,1.6,1.75,2.0,2.5,2.7,2.75,3.0,3.5,3.7,3.75],"a":[0.0,1.0,2.0,3.0,0.0,1.0,2.0,3.0,0.0,1.0,2.0,3.0],"b":[4.0,4.0,4.0,4.0,5.0,5.0,5.0,5.0,6.0,6.0,6.0,6.0],"aaxis":{"type":"linear","tickprefix":"a = ","minorgridcount":9,"smoothing":0.0},"baxis":{"type":"linear","tickprefix":"b = ","minorgridcount":9,"smoothing":0.0},"carpet":"contour"},{"type":"contourcarpet","z":[1.0,1.96,2.56,3.0625,4.0,5.0625,1.0,7.5625,9.0,12.25,15.21,14.0625],"a":[0,1,2,3,0,1,2,3,0,1,2,3],"b":[4,4,4,4,5,5,5,5,6,6,6,6],"line":{"color":"rgba(255, 255, 255, 1.0)"},"carpet":"contour","contours":{"showlabels":true}}];""" + |> chartGeneratedContains ContourCarpet.``Styled carpet contour chart`` + ); + testCase "ScatterCarpet layout" ( fun () -> + emptyLayout ContourCarpet.``Styled carpet contour chart`` + ); + ] + ] + From e08e49e16c4f3b1b30cf9944dcf599c1829d4cc3 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 14:14:25 +0200 Subject: [PATCH 23/26] Refactor CategoricalCharts tests --- .../TestCharts/ChartDomainTestCharts.fs | 213 +++++++++++- tests/CoreTests/CoreTests/CoreTests.fsproj | 1 - .../HTMLCodegen/CategoricalCharts.fs | 317 ------------------ .../CoreTests/HTMLCodegen/ChartDomain.fs | 82 ++++- 4 files changed, 283 insertions(+), 330 deletions(-) delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/CategoricalCharts.fs diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs index e9c8f826f..4cc3716fe 100644 --- a/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs +++ b/tests/Common/FSharpTestBase/TestCharts/ChartDomainTestCharts.fs @@ -1,6 +1,7 @@ module ChartDomainTestCharts open Plotly.NET +open Plotly.NET.TraceObjects module Pie = @@ -82,15 +83,175 @@ module FunnelArea = UseDefaults = false ) -module Sunburst = () +module Sunburst = -module Treemap = () + + let ``Simple sunburst chart`` = + Chart.Sunburst( + labels = ["A";"B";"C";"D";"E"], + parents = ["";"";"B";"B";""], + Values=[5.;0.;3.;2.;3.], + MultiText=["At";"Bt";"Ct";"Dt";"Et"], + UseDefaults = false + ) + + let ``Styled sunburst chart`` = + let labelsParents = [ + ("A",""), 20 + ("B",""), 1 + ("C",""), 2 + ("D",""), 3 + ("E",""), 4 + + ("AA","A"), 15 + ("AB","A"), 5 + + ("BA","B"), 1 + + ("AAA", "AA"), 10 + ("AAB", "AA"), 5 + ] + + Chart.Sunburst( + labelsparents = (labelsParents |> Seq.map fst), + Values = (labelsParents |> Seq.map snd), + BranchValues = StyleParam.BranchValues.Total, // branch values are the total of their childrens values + SectionColorScale = StyleParam.Colorscale.Viridis, + ShowSectionColorScale = true, + SectionOutlineColor = Color.fromKeyword Black, + Rotation = 45, + UseDefaults = false + ) + +module Treemap = + + + let ``Styled treemap chart`` = + let labelsParents = [ + ("A",""), 20 + ("B",""), 1 + ("C",""), 2 + ("D",""), 3 + ("E",""), 4 + + ("AA","A"), 15 + ("AB","A"), 5 + + ("BA","B"), 1 + + ("AAA", "AA"), 10 + ("AAB", "AA"), 5 + ] + + Chart.Treemap( + labelsparents = (labelsParents |> Seq.map fst), + Values = (labelsParents |> Seq.map snd), + BranchValues = StyleParam.BranchValues.Total, // branch values are the total of their childrens values + SectionColorScale = StyleParam.Colorscale.Viridis, + ShowSectionColorScale = true, + SectionOutlineColor = Color.fromKeyword Black, + Tiling = TreemapTiling.init(Packing = StyleParam.TreemapTilingPacking.SliceDice), + UseDefaults = false + ) + +module ParallelCoord = + + let ``Simple parallel coordinates chart`` = + let data = + [ + "A",[1.;4.;3.4;0.7;] + "B",[3.;1.5;1.7;2.3;] + "C",[2.;4.;3.1;5.] + "D",[4.;2.;2.;4.;] + ] + Chart.ParallelCoord(keyValues = data,LineColor=Color.fromString "blue", UseDefaults = false) + + let ``Styled parallel coordinates chart`` = + + let dims = + [ + Dimension.initParallel(Label = "1", Values = ([1;2;3;4] ), Range = StyleParam.Range.MinMax(0., 8.)) + Dimension.initParallel(Label = "2", Values = ([1;2;3;4] |> List.rev ), Range = StyleParam.Range.MinMax(0., 8.)) + Dimension.initParallel(Label = "3", Values = ([1;2;3;4] ), Range = StyleParam.Range.MinMax(0., 8.)) + Dimension.initParallel(Label = "4", Values = ([1;2;3;4] |> List.rev ), Range = StyleParam.Range.MinMax(0., 8.)) + ] + + let colors = + [1;2;3;4] + |> Color.fromColorScaleValues + + Chart.ParallelCoord( + dimensions = dims, + LineColorScale = StyleParam.Colorscale.Viridis, + LineColor = colors, + UseDefaults = false + ) + +module ParallelCategories = + + let ``Simple parallel categories chart`` = + let dims = + [ + Dimension.initParallel(Values = ["Cat1";"Cat1";"Cat1";"Cat1";"Cat2";"Cat2";"Cat3"],Label="A") + Dimension.initParallel(Values = [0;1;0;1;0;0;0],Label="B",TickText=["YES";"NO"]) + ] + + Chart.ParallelCategories( + dimensions = dims, + LineColor=Color.fromColorScaleValues [0.;1.;0.;1.;0.;0.;0.], + LineColorScale = StyleParam.Colorscale.Blackbody, + UseDefaults = false + ) + + let ``Styled parallel categories chart`` = + let dims = + [ + Dimension.initParallel(Values = ["A";"A";"A";"B";"B";"B";"C";"D"],Label="Lvl1") + Dimension.initParallel(Values = ["AA";"AA";"AB";"AB";"AB";"AB";"AB";"AB"],Label="Lvl2") + Dimension.initParallel(Values = ["AAA";"AAB";"AAC";"AAC";"AAB";"AAB";"AAA";"AAA"],Label="Lvl3") + ] -module ParralelCoord = () + Chart.ParallelCategories( + dimensions = dims, + LineColor = Color.fromColorScaleValues [0; 1; 2; 2; 1; 1; 0; 0], // These values map to the last category axis, meaning [AAA => 0; AAB = 1; AAC => 2] + LineColorScale = StyleParam.Colorscale.Viridis, + BundleColors = false, + UseDefaults = false + ) -module ParralelCategories = () +module Sankey = + + let ``Styled sankey chart`` = + Chart.Sankey( + nodeLabels = ["A1"; "A2"; "B1"; "B2"; "C1"; "C2"; "D1"], + linkedNodeIds = [ + 0,2 + 0,3 + 1,3 + 2,4 + 3,4 + 3,5 + 4,6 + 5,6 + ], + NodeOutlineColor = Color.fromKeyword Black, + NodeOutlineWidth = 1., + linkValues = [8; 4; 2; 7; 3; 2; 5; 2], + LinkColor = Color.fromColors [ + Color.fromHex "#828BFB" + Color.fromHex "#828BFB" + Color.fromHex "#F27762" + Color.fromHex "#33D6AB" + Color.fromHex "#BC82FB" + Color.fromHex "#BC82FB" + Color.fromHex "#FFB47B" + Color.fromHex "#47DCF5" + ], + LinkOutlineColor = Color.fromKeyword Black, + LinkOutlineWidth = 1., + UseDefaults = false + ) -module Sankey = () module Table = @@ -277,4 +438,44 @@ module Indicator = ) -module Icicle = () \ No newline at end of file +module Icicle = + + let ``Simple icicle chart`` = + Chart.Icicle( + labels = ["Eve"; "Cain"; "Seth"; "Enos"; "Noam"; "Abel"; "Awan"; "Enoch"; "Azura"], + parents = [""; "Eve"; "Eve"; "Seth"; "Seth"; "Eve"; "Eve"; "Awan"; "Eve"], + ShowSectionColorScale = true, + SectionColorScale = StyleParam.Colorscale.Viridis, + TilingOrientation = StyleParam.Orientation.Vertical, + TilingFlip = StyleParam.TilingFlip.Y, + PathBarEdgeShape = StyleParam.PathbarEdgeShape.BackSlash, + UseDefaults = false + ) + + let ``Styled icicle chart`` = + let labelsParents = [ + ("A",""), 20 + ("B",""), 1 + ("C",""), 2 + ("D",""), 3 + ("E",""), 4 + + ("AA","A"), 15 + ("AB","A"), 5 + + ("BA","B"), 1 + + ("AAA", "AA"), 10 + ("AAB", "AA"), 5 + ] + + Chart.Icicle( + labelsparents = (labelsParents |> Seq.map fst), + Values = (labelsParents |> Seq.map snd), + BranchValues = StyleParam.BranchValues.Total, // branch values are the total of their childrens values + SectionColorScale = StyleParam.Colorscale.Viridis, + ShowSectionColorScale = true, + SectionOutlineColor = Color.fromKeyword Black, + Tiling = IcicleTiling.init(Flip = StyleParam.TilingFlip.XY), + UseDefaults = false + ) \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 40bde5fbf..60d53717c 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -33,7 +33,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/CategoricalCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/CategoricalCharts.fs deleted file mode 100644 index 6340adb3c..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/CategoricalCharts.fs +++ /dev/null @@ -1,317 +0,0 @@ -module Tests.CategoricalCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open System - -open TestUtils.HtmlCodegen - -let parcats = - let dims = - [ - Dimension.initParallel(Values = ["Cat1";"Cat1";"Cat1";"Cat1";"Cat2";"Cat2";"Cat3"],Label="A") - Dimension.initParallel(Values = [0;1;0;1;0;0;0],Label="B",TickText=["YES";"NO"]) - ] - - Chart.ParallelCategories( - dimensions = dims, - LineColor=Color.fromColorScaleValues [0.;1.;0.;1.;0.;0.;0.], - LineColorScale = StyleParam.Colorscale.Blackbody, - UseDefaults = false - ) - - -let parcatsStyled = - let dims = - [ - Dimension.initParallel(Values = ["A";"A";"A";"B";"B";"B";"C";"D"],Label="Lvl1") - Dimension.initParallel(Values = ["AA";"AA";"AB";"AB";"AB";"AB";"AB";"AB"],Label="Lvl2") - Dimension.initParallel(Values = ["AAA";"AAB";"AAC";"AAC";"AAB";"AAB";"AAA";"AAA"],Label="Lvl3") - ] - - Chart.ParallelCategories( - dimensions = dims, - LineColor = Color.fromColorScaleValues [0; 1; 2; 2; 1; 1; 0; 0], // These values map to the last category axis, meaning [AAA => 0; AAB = 1; AAC => 2] - LineColorScale = StyleParam.Colorscale.Viridis, - BundleColors = false, - UseDefaults = false - ) - -[] -let ``Parallel categories charts`` = - testList "CategoricalCharts.Parallel categories charts" [ - testCase "Parallel categories data" ( fun () -> - """var data = [{"type":"parcats","dimensions":[{"label":"A","values":["Cat1","Cat1","Cat1","Cat1","Cat2","Cat2","Cat3"],"axis":{}},{"label":"B","values":[0,1,0,1,0,0,0],"ticktext":["YES","NO"],"axis":{}}],"line":{"color":[0.0,1.0,0.0,1.0,0.0,0.0,0.0],"colorscale":"Blackbody"}}];""" - |> chartGeneratedContains parcats - ); - testCase "Parallel categories layout" ( fun () -> - emptyLayout parcats - ); - testCase "Parallel categories styled data" ( fun () -> - """var data = [{"type":"parcats","dimensions":[{"label":"Lvl1","values":["A","A","A","B","B","B","C","D"],"axis":{}},{"label":"Lvl2","values":["AA","AA","AB","AB","AB","AB","AB","AB"],"axis":{}},{"label":"Lvl3","values":["AAA","AAB","AAC","AAC","AAB","AAB","AAA","AAA"],"axis":{}}],"line":{"color":[0,1,2,2,1,1,0,0],"colorscale":"Viridis"},"bundlecolors":false}];""" - |> chartGeneratedContains parcatsStyled - ); - testCase "Parallel categories styled layout" ( fun () -> - emptyLayout parcatsStyled - ); - ] - - -let parcoords = - let data = - [ - "A",[1.;4.;3.4;0.7;] - "B",[3.;1.5;1.7;2.3;] - "C",[2.;4.;3.1;5.] - "D",[4.;2.;2.;4.;] - ] - Chart.ParallelCoord(keyValues = data,LineColor=Color.fromString "blue", UseDefaults = false) - -let parcoordsStyled = - - let dims = - [ - Dimension.initParallel(Label = "1", Values = ([1;2;3;4] ), Range = StyleParam.Range.MinMax(0., 8.)) - Dimension.initParallel(Label = "2", Values = ([1;2;3;4] |> List.rev ), Range = StyleParam.Range.MinMax(0., 8.)) - Dimension.initParallel(Label = "3", Values = ([1;2;3;4] ), Range = StyleParam.Range.MinMax(0., 8.)) - Dimension.initParallel(Label = "4", Values = ([1;2;3;4] |> List.rev ), Range = StyleParam.Range.MinMax(0., 8.)) - ] - - let colors = - [1;2;3;4] - |> Color.fromColorScaleValues - - Chart.ParallelCoord( - dimensions = dims, - LineColorScale = StyleParam.Colorscale.Viridis, - LineColor = colors, - UseDefaults = false - ) - -[] -let ``Parallel coordinates charts`` = - testList "CategoricalCharts.Parallel coordinates charts" [ - testCase "Parallel coordinates data" ( fun () -> - """var data = [{"type":"parcoords","dimensions":[{"label":"A","values":[1.0,4.0,3.4,0.7],"axis":{}},{"label":"B","values":[3.0,1.5,1.7,2.3],"axis":{}},{"label":"C","values":[2.0,4.0,3.1,5.0],"axis":{}},{"label":"D","values":[4.0,2.0,2.0,4.0],"axis":{}}],"line":{"color":"blue"}}];""" - |> chartGeneratedContains parcoords - ); - testCase "Parallel coordinates layout" ( fun () -> - emptyLayout parcoords - ); - testCase "Parallel coordinates styled data" ( fun () -> - """var data = [{"type":"parcoords","dimensions":[{"label":"1","values":[1,2,3,4],"range":[0.0,8.0],"axis":{}},{"label":"2","values":[4,3,2,1],"range":[0.0,8.0],"axis":{}},{"label":"3","values":[1,2,3,4],"range":[0.0,8.0],"axis":{}},{"label":"4","values":[4,3,2,1],"range":[0.0,8.0],"axis":{}}],"line":{"color":[1,2,3,4],"colorscale":"Viridis"}}];""" - |> chartGeneratedContains parcoordsStyled - ); - testCase "Parallel coordinates styled layout" ( fun () -> - emptyLayout parcoordsStyled - ); - ] - - - -let styledSankey = - Chart.Sankey( - nodeLabels = ["A1"; "A2"; "B1"; "B2"; "C1"; "C2"; "D1"], - linkedNodeIds = [ - 0,2 - 0,3 - 1,3 - 2,4 - 3,4 - 3,5 - 4,6 - 5,6 - ], - NodeOutlineColor = Color.fromKeyword Black, - NodeOutlineWidth = 1., - linkValues = [8; 4; 2; 7; 3; 2; 5; 2], - LinkColor = Color.fromColors [ - Color.fromHex "#828BFB" - Color.fromHex "#828BFB" - Color.fromHex "#F27762" - Color.fromHex "#33D6AB" - Color.fromHex "#BC82FB" - Color.fromHex "#BC82FB" - Color.fromHex "#FFB47B" - Color.fromHex "#47DCF5" - ], - LinkOutlineColor = Color.fromKeyword Black, - LinkOutlineWidth = 1., - UseDefaults = false - ) - - -[] -let ``Sankey charts`` = - testList "CategoricalCharts.Sankey charts" [ - testCase "Sankey data" ( fun () -> - """var data = [{"type":"sankey","node":{"label":["A1","A2","B1","B2","C1","C2","D1"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":1.0}},"link":{"color":["rgba(130, 139, 251, 1.0)","rgba(130, 139, 251, 1.0)","rgba(242, 119, 98, 1.0)","rgba(51, 214, 171, 1.0)","rgba(188, 130, 251, 1.0)","rgba(188, 130, 251, 1.0)","rgba(255, 180, 123, 1.0)","rgba(71, 220, 245, 1.0)"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":1.0},"source":[0,0,1,2,3,3,4,5],"target":[2,3,3,4,4,5,6,6],"value":[8,4,2,7,3,2,5,2]}}];""" - |> chartGeneratedContains styledSankey - ) - testCase "Sankey layout" ( fun () -> - emptyLayout styledSankey - ) - ] - -let character = ["Eve"; "Cain"; "Seth"; "Enos"; "Noam"; "Abel"; "Awan"; "Enoch"; "Azura"] -let parent = [""; "Eve"; "Eve"; "Seth"; "Seth"; "Eve"; "Eve"; "Awan"; "Eve" ] - -let icicleChart = - Chart.Icicle( - labels = character, - parents = parent, - ShowSectionColorScale = true, - SectionColorScale = StyleParam.Colorscale.Viridis, - TilingOrientation = StyleParam.Orientation.Vertical, - TilingFlip = StyleParam.TilingFlip.Y, - PathBarEdgeShape = StyleParam.PathbarEdgeShape.BackSlash, - UseDefaults = false - ) - -let icicleStyled = - let labelsParents = [ - ("A",""), 20 - ("B",""), 1 - ("C",""), 2 - ("D",""), 3 - ("E",""), 4 - - ("AA","A"), 15 - ("AB","A"), 5 - - ("BA","B"), 1 - - ("AAA", "AA"), 10 - ("AAB", "AA"), 5 - ] - - Chart.Icicle( - labelsparents = (labelsParents |> Seq.map fst), - Values = (labelsParents |> Seq.map snd), - BranchValues = StyleParam.BranchValues.Total, // branch values are the total of their childrens values - SectionColorScale = StyleParam.Colorscale.Viridis, - ShowSectionColorScale = true, - SectionOutlineColor = Color.fromKeyword Black, - Tiling = IcicleTiling.init(Flip = StyleParam.TilingFlip.XY), - UseDefaults = false - ) - -[] -let ``Icicle charts`` = - testList "CategoricalCharts.Icicle charts" [ - testCase "Icicle data" ( fun () -> - """var data = [{"type":"icicle","parents":["","Eve","Eve","Seth","Seth","Eve","Eve","Awan","Eve"],"labels":["Eve","Cain","Seth","Enos","Noam","Abel","Awan","Enoch","Azura"],"marker":{"colorscale":"Viridis","line":{},"showscale":true},"tiling":{"flip":"y","orientation":"v"},"pathbar":{"edgeshape":"\\"}}];""" - |> chartGeneratedContains icicleChart - ) - testCase "Icicle layout" ( fun () -> - emptyLayout icicleChart - ) - testCase "Icicle styled data" ( fun () -> - """var data = [{"type":"icicle","parents":["","","","","","A","A","B","AA","AA"],"values":[20,1,2,3,4,15,5,1,10,5],"labels":["A","B","C","D","E","AA","AB","BA","AAA","AAB"],"marker":{"colorscale":"Viridis","line":{"color":"rgba(0, 0, 0, 1.0)"},"showscale":true},"branchvalues":"total","tiling":{"flip":"x+y"},"pathbar":{}}];""" - |> chartGeneratedContains icicleStyled - ) - testCase "Icicle styled layout" ( fun () -> - emptyLayout icicleStyled - ) - ] - - -let sunburstChart = - Chart.Sunburst( - labels = ["A";"B";"C";"D";"E"], - parents = ["";"";"B";"B";""], - Values=[5.;0.;3.;2.;3.], - MultiText=["At";"Bt";"Ct";"Dt";"Et"], - UseDefaults = false - ) - -let sunburstStyled = - let labelsParents = [ - ("A",""), 20 - ("B",""), 1 - ("C",""), 2 - ("D",""), 3 - ("E",""), 4 - - ("AA","A"), 15 - ("AB","A"), 5 - - ("BA","B"), 1 - - ("AAA", "AA"), 10 - ("AAB", "AA"), 5 - ] - - Chart.Sunburst( - labelsparents = (labelsParents |> Seq.map fst), - Values = (labelsParents |> Seq.map snd), - BranchValues = StyleParam.BranchValues.Total, // branch values are the total of their childrens values - SectionColorScale = StyleParam.Colorscale.Viridis, - ShowSectionColorScale = true, - SectionOutlineColor = Color.fromKeyword Black, - Rotation = 45, - UseDefaults = false - ) - -[] -let ``Sunburst charts`` = - testList "CategoricalCharts.Sunburst charts" [ - testCase "Sunburst data" ( fun () -> - """var data = [{"type":"sunburst","parents":["","","B","B",""],"values":[5.0,0.0,3.0,2.0,3.0],"labels":["A","B","C","D","E"],"text":["At","Bt","Ct","Dt","Et"],"marker":{"line":{}}}];""" - |> chartGeneratedContains sunburstChart - ); - testCase "Sunburst layout" ( fun () -> - emptyLayout sunburstChart - ); - testCase "Sunburst styled data" ( fun () -> - """var data = [{"type":"sunburst","parents":["","","","","","A","A","B","AA","AA"],"values":[20,1,2,3,4,15,5,1,10,5],"labels":["A","B","C","D","E","AA","AB","BA","AAA","AAB"],"marker":{"colorscale":"Viridis","line":{"color":"rgba(0, 0, 0, 1.0)"},"showscale":true},"branchvalues":"total","rotation":45}];""" - |> chartGeneratedContains sunburstStyled - ); - testCase "Sunburst styled layout" ( fun () -> - emptyLayout sunburstStyled - ); - ] - - -let treemapStyled = - let labelsParents = [ - ("A",""), 20 - ("B",""), 1 - ("C",""), 2 - ("D",""), 3 - ("E",""), 4 - - ("AA","A"), 15 - ("AB","A"), 5 - - ("BA","B"), 1 - - ("AAA", "AA"), 10 - ("AAB", "AA"), 5 - ] - - Chart.Treemap( - labelsparents = (labelsParents |> Seq.map fst), - Values = (labelsParents |> Seq.map snd), - BranchValues = StyleParam.BranchValues.Total, // branch values are the total of their childrens values - SectionColorScale = StyleParam.Colorscale.Viridis, - ShowSectionColorScale = true, - SectionOutlineColor = Color.fromKeyword Black, - Tiling = TreemapTiling.init(Packing = StyleParam.TreemapTilingPacking.SliceDice), - UseDefaults = false - ) - -[] -let ``Treemap charts`` = - testList "CategoricalCharts.Treemap charts" [ - testCase "Treemap styled data" ( fun () -> - """var data = [{"type":"treemap","parents":["","","","","","A","A","B","AA","AA"],"values":[20,1,2,3,4,15,5,1,10,5],"labels":["A","B","C","D","E","AA","AB","BA","AAA","AAB"],"marker":{"colorscale":"Viridis","line":{"color":"rgba(0, 0, 0, 1.0)"},"showscale":true},"branchvalues":"total","tiling":{"packing":"slice-dice"}}];""" - |> chartGeneratedContains treemapStyled - ); - testCase "Treemap styled layout" ( fun () -> - emptyLayout treemapStyled - ); - ] \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs index 200c307a6..5b44db3b3 100644 --- a/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartDomain.fs @@ -73,6 +73,20 @@ module Sunburst = let ``Sunburst chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ testList "Sunburst" [ + testCase "Sunburst data" ( fun () -> + """var data = [{"type":"sunburst","parents":["","","B","B",""],"values":[5.0,0.0,3.0,2.0,3.0],"labels":["A","B","C","D","E"],"text":["At","Bt","Ct","Dt","Et"],"marker":{"line":{}}}];""" + |> chartGeneratedContains Sunburst.``Simple sunburst chart`` + ); + testCase "Sunburst layout" ( fun () -> + emptyLayout Sunburst.``Simple sunburst chart`` + ); + testCase "Sunburst styled data" ( fun () -> + """var data = [{"type":"sunburst","parents":["","","","","","A","A","B","AA","AA"],"values":[20,1,2,3,4,15,5,1,10,5],"labels":["A","B","C","D","E","AA","AB","BA","AAA","AAB"],"marker":{"colorscale":"Viridis","line":{"color":"rgba(0, 0, 0, 1.0)"},"showscale":true},"branchvalues":"total","rotation":45}];""" + |> chartGeneratedContains Sunburst.``Styled sunburst chart`` + ); + testCase "Sunburst styled layout" ( fun () -> + emptyLayout Sunburst.``Styled sunburst chart`` + ); ] ] @@ -81,22 +95,57 @@ module Treemap = let ``Treemap chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ testList "Treemap" [ + testCase "Treemap styled data" ( fun () -> + """var data = [{"type":"treemap","parents":["","","","","","A","A","B","AA","AA"],"values":[20,1,2,3,4,15,5,1,10,5],"labels":["A","B","C","D","E","AA","AB","BA","AAA","AAB"],"marker":{"colorscale":"Viridis","line":{"color":"rgba(0, 0, 0, 1.0)"},"showscale":true},"branchvalues":"total","tiling":{"packing":"slice-dice"}}];""" + |> chartGeneratedContains Treemap.``Styled treemap chart`` + ); + testCase "Treemap styled layout" ( fun () -> + emptyLayout Treemap.``Styled treemap chart`` + ); ] ] -module ParralelCoord = +module ParallelCoord = [] - let ``ParralelCoord chart HTML codegeneration tests`` = + let ``ParallelCoord chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ - testList "ParralelCoord" [ + testList "ParallelCoord" [ + testCase "Parallel coordinates data" ( fun () -> + """var data = [{"type":"parcoords","dimensions":[{"label":"A","values":[1.0,4.0,3.4,0.7],"axis":{}},{"label":"B","values":[3.0,1.5,1.7,2.3],"axis":{}},{"label":"C","values":[2.0,4.0,3.1,5.0],"axis":{}},{"label":"D","values":[4.0,2.0,2.0,4.0],"axis":{}}],"line":{"color":"blue"}}];""" + |> chartGeneratedContains ParallelCoord.``Simple parallel coordinates chart`` + ); + testCase "Parallel coordinates layout" ( fun () -> + emptyLayout ParallelCoord.``Simple parallel coordinates chart`` + ); + testCase "Parallel coordinates styled data" ( fun () -> + """var data = [{"type":"parcoords","dimensions":[{"label":"1","values":[1,2,3,4],"range":[0.0,8.0],"axis":{}},{"label":"2","values":[4,3,2,1],"range":[0.0,8.0],"axis":{}},{"label":"3","values":[1,2,3,4],"range":[0.0,8.0],"axis":{}},{"label":"4","values":[4,3,2,1],"range":[0.0,8.0],"axis":{}}],"line":{"color":[1,2,3,4],"colorscale":"Viridis"}}];""" + |> chartGeneratedContains ParallelCoord.``Styled parallel coordinates chart`` + ); + testCase "Parallel coordinates styled layout" ( fun () -> + emptyLayout ParallelCoord.``Styled parallel coordinates chart`` + ); ] ] -module ParralelCategories = +module ParallelCategories = [] - let ``ParralelCategories chart HTML codegeneration tests`` = + let ``ParallelCategories chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ - testList "ParralelCategories" [ + testList "ParallelCategories" [ + testCase "Parallel categories data" ( fun () -> + """var data = [{"type":"parcats","dimensions":[{"label":"A","values":["Cat1","Cat1","Cat1","Cat1","Cat2","Cat2","Cat3"],"axis":{}},{"label":"B","values":[0,1,0,1,0,0,0],"ticktext":["YES","NO"],"axis":{}}],"line":{"color":[0.0,1.0,0.0,1.0,0.0,0.0,0.0],"colorscale":"Blackbody"}}];""" + |> chartGeneratedContains ParallelCategories.``Simple parallel categories chart`` + ); + testCase "Parallel categories layout" ( fun () -> + emptyLayout ParallelCategories.``Simple parallel categories chart`` + ); + testCase "Parallel categories styled data" ( fun () -> + """var data = [{"type":"parcats","dimensions":[{"label":"Lvl1","values":["A","A","A","B","B","B","C","D"],"axis":{}},{"label":"Lvl2","values":["AA","AA","AB","AB","AB","AB","AB","AB"],"axis":{}},{"label":"Lvl3","values":["AAA","AAB","AAC","AAC","AAB","AAB","AAA","AAA"],"axis":{}}],"line":{"color":[0,1,2,2,1,1,0,0],"colorscale":"Viridis"},"bundlecolors":false}];""" + |> chartGeneratedContains ParallelCategories.``Styled parallel categories chart`` + ); + testCase "Parallel categories styled layout" ( fun () -> + emptyLayout ParallelCategories.``Styled parallel categories chart`` + ); ] ] @@ -105,6 +154,13 @@ module Sankey = let ``Sankey chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ testList "Sankey" [ + testCase "Sankey data" ( fun () -> + """var data = [{"type":"sankey","node":{"label":["A1","A2","B1","B2","C1","C2","D1"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":1.0}},"link":{"color":["rgba(130, 139, 251, 1.0)","rgba(130, 139, 251, 1.0)","rgba(242, 119, 98, 1.0)","rgba(51, 214, 171, 1.0)","rgba(188, 130, 251, 1.0)","rgba(188, 130, 251, 1.0)","rgba(255, 180, 123, 1.0)","rgba(71, 220, 245, 1.0)"],"line":{"color":"rgba(0, 0, 0, 1.0)","width":1.0},"source":[0,0,1,2,3,3,4,5],"target":[2,3,3,4,4,5,6,6],"value":[8,4,2,7,3,2,5,2]}}];""" + |> chartGeneratedContains Sankey.``Styled sankey chart`` + ) + testCase "Sankey layout" ( fun () -> + emptyLayout Sankey.``Styled sankey chart`` + ) ] ] @@ -186,5 +242,19 @@ module Icicle = let ``Icicle chart HTML codegeneration tests`` = testList "HTMLCodegen.ChartDomain" [ testList "Icicle" [ + testCase "Icicle data" ( fun () -> + """var data = [{"type":"icicle","parents":["","Eve","Eve","Seth","Seth","Eve","Eve","Awan","Eve"],"labels":["Eve","Cain","Seth","Enos","Noam","Abel","Awan","Enoch","Azura"],"marker":{"colorscale":"Viridis","line":{},"showscale":true},"tiling":{"flip":"y","orientation":"v"},"pathbar":{"edgeshape":"\\"}}];""" + |> chartGeneratedContains Icicle.``Simple icicle chart`` + ) + testCase "Icicle layout" ( fun () -> + emptyLayout Icicle.``Simple icicle chart`` + ) + testCase "Icicle styled data" ( fun () -> + """var data = [{"type":"icicle","parents":["","","","","","A","A","B","AA","AA"],"values":[20,1,2,3,4,15,5,1,10,5],"labels":["A","B","C","D","E","AA","AB","BA","AAA","AAB"],"marker":{"colorscale":"Viridis","line":{"color":"rgba(0, 0, 0, 1.0)"},"showscale":true},"branchvalues":"total","tiling":{"flip":"x+y"},"pathbar":{}}];""" + |> chartGeneratedContains Icicle.``Styled icicle chart`` + ) + testCase "Icicle styled layout" ( fun () -> + emptyLayout Icicle.``Styled icicle chart`` + ) ] ] From 07b8aa40f73282b59560d754b04f21c0ce70e61d Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 14:21:44 +0200 Subject: [PATCH 24/26] Refactor SmithCharts tests --- .../FSharpTestBase/FSharpTestBase.fsproj | 1 + .../TestCharts/ChartSmithTestCharts.fs | 49 ++++++++++ tests/CoreTests/CoreTests/CoreTests.fsproj | 2 +- .../CoreTests/HTMLCodegen/ChartSmith.fs | 71 ++++++++++++++ .../CoreTests/HTMLCodegen/SmithCharts.fs | 95 ------------------- 5 files changed, 122 insertions(+), 96 deletions(-) create mode 100644 tests/Common/FSharpTestBase/TestCharts/ChartSmithTestCharts.fs create mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith.fs delete mode 100644 tests/CoreTests/CoreTests/HTMLCodegen/SmithCharts.fs diff --git a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj index 0be44223b..8a17f4544 100644 --- a/tests/Common/FSharpTestBase/FSharpTestBase.fsproj +++ b/tests/Common/FSharpTestBase/FSharpTestBase.fsproj @@ -20,6 +20,7 @@ + diff --git a/tests/Common/FSharpTestBase/TestCharts/ChartSmithTestCharts.fs b/tests/Common/FSharpTestBase/TestCharts/ChartSmithTestCharts.fs new file mode 100644 index 000000000..2cd6b9e73 --- /dev/null +++ b/tests/Common/FSharpTestBase/TestCharts/ChartSmithTestCharts.fs @@ -0,0 +1,49 @@ +module ChartSmithTestCharts + +open Plotly.NET +open Plotly.NET.TraceObjects + + +module ScatterSmith = + + let ``Simple smith scatter chart`` = + Chart.ScatterSmith( + real = [0.5; 1.; 2.; 3.], + imag = [0.5; 1.; 2.; 3.], + mode = StyleParam.Mode.Lines_Markers_Text, + MultiText = ["Pretty"; "Cool"; "Plot"; "Huh?"], + TextPosition = StyleParam.TextPosition.TopCenter, + UseDefaults = false + ) + +module PointSmith = + + let ``Simple smith point chart`` = + Chart.PointSmith( + real = [0.5; 1.; 2.; 3.], + imag = [0.5; 1.; 2.; 3.], + UseDefaults = false + ) + +module LineSmith = + + let ``Simple smith line chart`` = + Chart.LineSmith( + real = [0.5; 1.; 2.; 3.], + imag = [0.5; 1.; 2.; 3.], + LineDash = StyleParam.DrawingStyle.DashDot, + LineColor = Color.fromKeyword Purple, + UseDefaults = false + ) + +module BubbleSmith = + + let ``Simple smith bubble chart`` = + Chart.BubbleSmith( + real = [0.5; 1.; 2.; 3.], + imag = [0.5; 1.; 2.; 3.], + sizes = [10;20;30;40], + MultiText=["one";"two";"three";"four";"five";"six";"seven"], + TextPosition=StyleParam.TextPosition.TopCenter, + UseDefaults = false + ) \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index 60d53717c..cf49d7734 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -18,6 +18,7 @@ + @@ -33,7 +34,6 @@ - diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith.fs b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith.fs new file mode 100644 index 000000000..f563d376c --- /dev/null +++ b/tests/CoreTests/CoreTests/HTMLCodegen/ChartSmith.fs @@ -0,0 +1,71 @@ +module CoreTests.HTMLCodegen.ChartSmith + +open Expecto +open Plotly.NET +open Plotly.NET.LayoutObjects +open Plotly.NET.TraceObjects +open Plotly.NET.GenericChart + +open TestUtils.HtmlCodegen +open ChartSmithTestCharts + +module ScatterSmith = + [] + let ``ScatterSmith chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartSmith" [ + testList "ScatterSmith" [ + testCase "Scatter data" ( fun () -> + """var data = [{"type":"scattersmith","mode":"lines+markers+text","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"text":["Pretty","Cool","Plot","Huh?"],"textposition":"top center","marker":{},"line":{}}];""" + |> chartGeneratedContains ScatterSmith.``Simple smith scatter chart`` + ) + testCase "Scatter layout" ( fun () -> + emptyLayout ScatterSmith.``Simple smith scatter chart`` + ) + ] + ] + + +module PointSmith = + [] + let ``PointSmith chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartSmith" [ + testList "PointSmith" [ + testCase "Point data" ( fun () -> + """var data = [{"type":"scattersmith","mode":"markers","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"marker":{},"line":{}}];""" + |> chartGeneratedContains PointSmith.``Simple smith point chart`` + ) + testCase "Point layout" ( fun () -> + emptyLayout PointSmith.``Simple smith point chart`` + ) + ] + ] + +module LineSmith = + [] + let ``LineSmith chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartSmith" [ + testList "LineSmith" [ + testCase "Line data" ( fun () -> + """var data = [{"type":"scattersmith","mode":"lines","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"marker":{},"line":{"color":"rgba(128, 0, 128, 1.0)","dash":"dashdot"}}];""" + |> chartGeneratedContains LineSmith.``Simple smith line chart`` + ) + testCase "Line layout" ( fun () -> + emptyLayout LineSmith.``Simple smith line chart`` + ) + ] + ] + +module BubbleSmith = + [] + let ``BubbleSmith chart HTML codegeneration tests`` = + testList "HTMLCodegen.ChartSmith" [ + testList "BubbleSmith" [ + testCase "Bubble data" ( fun () -> + """var data = [{"type":"scattersmith","mode":"markers+text","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"text":["one","two","three","four","five","six","seven"],"textposition":"top center","marker":{"size":[10,20,30,40]},"line":{}}];""" + |> chartGeneratedContains BubbleSmith.``Simple smith bubble chart`` + ) + testCase "Bubble layout" ( fun () -> + emptyLayout BubbleSmith.``Simple smith bubble chart`` + ) + ] + ] \ No newline at end of file diff --git a/tests/CoreTests/CoreTests/HTMLCodegen/SmithCharts.fs b/tests/CoreTests/CoreTests/HTMLCodegen/SmithCharts.fs deleted file mode 100644 index 790c23dac..000000000 --- a/tests/CoreTests/CoreTests/HTMLCodegen/SmithCharts.fs +++ /dev/null @@ -1,95 +0,0 @@ -module Tests.SmithCharts - -open Expecto -open Plotly.NET -open Plotly.NET.LayoutObjects -open Plotly.NET.TraceObjects -open Plotly.NET.GenericChart -open System - -open TestUtils.HtmlCodegen - -let scatterSmithChart = - Chart.ScatterSmith( - real = [0.5; 1.; 2.; 3.], - imag = [0.5; 1.; 2.; 3.], - mode = StyleParam.Mode.Lines_Markers_Text, - MultiText = ["Pretty"; "Cool"; "Plot"; "Huh?"], - TextPosition = StyleParam.TextPosition.TopCenter, - UseDefaults = false - ) - -let pointSmithChart = - Chart.PointSmith( - real = [0.5; 1.; 2.; 3.], - imag = [0.5; 1.; 2.; 3.], - UseDefaults = false - ) - -let lineSmithChart = - Chart.LineSmith( - real = [0.5; 1.; 2.; 3.], - imag = [0.5; 1.; 2.; 3.], - LineDash = StyleParam.DrawingStyle.DashDot, - LineColor = Color.fromKeyword Purple, - UseDefaults = false - ) - -let bubbleSmithChart = - Chart.BubbleSmith( - real = [0.5; 1.; 2.; 3.], - imag = [0.5; 1.; 2.; 3.], - sizes = [10;20;30;40], - MultiText=["one";"two";"three";"four";"five";"six";"seven"], - TextPosition=StyleParam.TextPosition.TopCenter, - UseDefaults = false - ) - - -[] -let ``Smith Scatter charts`` = - testList "SmithCharts.Scatter charts" [ - testCase "Scatter data" ( fun () -> - """var data = [{"type":"scattersmith","mode":"lines+markers+text","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"text":["Pretty","Cool","Plot","Huh?"],"textposition":"top center","marker":{},"line":{}}];""" - |> chartGeneratedContains scatterSmithChart - ) - testCase "Scatter layout" ( fun () -> - emptyLayout scatterSmithChart - ) - ] - -[] -let ``Smith Point charts`` = - testList "SmithCharts.Point charts" [ - testCase "Point data" ( fun () -> - """var data = [{"type":"scattersmith","mode":"markers","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"marker":{},"line":{}}];""" - |> chartGeneratedContains pointSmithChart - ) - testCase "Point layout" ( fun () -> - emptyLayout pointSmithChart - ) - ] - -[] -let ``Smith Line charts`` = - testList "SmithCharts.Line charts" [ - testCase "Line data" ( fun () -> - """var data = [{"type":"scattersmith","mode":"lines","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"marker":{},"line":{"color":"rgba(128, 0, 128, 1.0)","dash":"dashdot"}}];""" - |> chartGeneratedContains lineSmithChart - ) - testCase "Line layout" ( fun () -> - emptyLayout lineSmithChart - ) - ] - -[] -let ``Smith Bubble charts`` = - testList "SmithCharts.Bubble charts" [ - testCase "Bubble data" ( fun () -> - """var data = [{"type":"scattersmith","mode":"markers+text","imag":[0.5,1.0,2.0,3.0],"real":[0.5,1.0,2.0,3.0],"text":["one","two","three","four","five","six","seven"],"textposition":"top center","marker":{"size":[10,20,30,40]},"line":{}}];""" - |> chartGeneratedContains bubbleSmithChart - ) - testCase "Bubble layout" ( fun () -> - emptyLayout bubbleSmithChart - ) - ] \ No newline at end of file From fb2b36406ae626b15db82bd2f449b8472731beba Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 14:43:20 +0200 Subject: [PATCH 25/26] Fix a file path in the core test project (yay for non-case sensitive paths on windows -.-) --- tests/CoreTests/CoreTests/CoreTests.fsproj | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index cf49d7734..e70e0e0c3 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -12,13 +12,13 @@ - - - - - - - + + + + + + + From e1537477737a266d27ec33a898c6910b55ec720d Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Fri, 7 Jul 2023 15:17:55 +0200 Subject: [PATCH 26/26] more path fixes --- tests/CoreTests/CoreTests/CoreTests.fsproj | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/CoreTests/CoreTests/CoreTests.fsproj b/tests/CoreTests/CoreTests/CoreTests.fsproj index e70e0e0c3..b93817b75 100644 --- a/tests/CoreTests/CoreTests/CoreTests.fsproj +++ b/tests/CoreTests/CoreTests/CoreTests.fsproj @@ -10,7 +10,7 @@ - + @@ -19,8 +19,10 @@ - - + + + + @@ -32,9 +34,6 @@ - - -