From 950fc6b2e0c8e96db431b96057e8424ba24f2817 Mon Sep 17 00:00:00 2001 From: Daniel Earwicker Date: Wed, 14 Aug 2024 15:47:24 +0100 Subject: [PATCH] 5.1.1 --- .version | 2 +- client/packages/demo-site/package.json | 8 +-- client/packages/flowerbi-dates/package.json | 2 +- .../flowerbi-react-utils/package.json | 2 +- client/packages/flowerbi-react/package.json | 4 +- client/packages/flowerbi/package.json | 2 +- docs/demo/_framework/Dapper.wasm.gz | Bin 104958 -> 104958 bytes docs/demo/_framework/FlowerBI.DemoSchema.pdb | Bin 11856 -> 11792 bytes .../_framework/FlowerBI.DemoSchema.pdb.gz | Bin 7034 -> 7020 bytes docs/demo/_framework/FlowerBI.DemoSchema.wasm | Bin 7445 -> 7445 bytes .../_framework/FlowerBI.DemoSchema.wasm.gz | Bin 2992 -> 2979 bytes docs/demo/_framework/FlowerBI.Engine.pdb | Bin 34508 -> 35148 bytes docs/demo/_framework/FlowerBI.Engine.pdb.gz | Bin 18756 -> 19147 bytes docs/demo/_framework/FlowerBI.Engine.wasm | Bin 89365 -> 90901 bytes docs/demo/_framework/FlowerBI.Engine.wasm.gz | Bin 38238 -> 38942 bytes docs/demo/_framework/FlowerBI.WasmHost.pdb | Bin 25928 -> 25992 bytes docs/demo/_framework/FlowerBI.WasmHost.pdb.gz | Bin 18765 -> 19043 bytes docs/demo/_framework/FlowerBI.WasmHost.wasm | Bin 24853 -> 24853 bytes .../demo/_framework/FlowerBI.WasmHost.wasm.gz | Bin 11167 -> 11165 bytes docs/demo/_framework/Handlebars.wasm.gz | Bin 119592 -> 119592 bytes ...Microsoft.AspNetCore.Authorization.wasm.gz | Bin 17631 -> 17631 bytes ...rosoft.AspNetCore.Components.Forms.wasm.gz | Bin 16287 -> 16287 bytes ...icrosoft.AspNetCore.Components.Web.wasm.gz | Bin 65086 -> 65086 bytes ....AspNetCore.Components.WebAssembly.wasm.gz | Bin 46086 -> 46086 bytes .../Microsoft.AspNetCore.Components.wasm.gz | Bin 129110 -> 129110 bytes .../Microsoft.AspNetCore.Metadata.wasm.gz | Bin 2410 -> 2410 bytes docs/demo/_framework/Microsoft.CSharp.wasm.gz | Bin 131193 -> 131193 bytes ...ensions.Configuration.Abstractions.wasm.gz | Bin 7793 -> 7793 bytes ...ft.Extensions.Configuration.Binder.wasm.gz | Bin 13813 -> 13813 bytes ...sions.Configuration.FileExtensions.wasm.gz | Bin 7801 -> 7801 bytes ...soft.Extensions.Configuration.Json.wasm.gz | Bin 7500 -> 7500 bytes ...Microsoft.Extensions.Configuration.wasm.gz | Bin 15095 -> 15095 bytes ...s.DependencyInjection.Abstractions.wasm.gz | Bin 20760 -> 20760 bytes ...oft.Extensions.DependencyInjection.wasm.gz | Bin 34988 -> 34988 bytes ...ensions.FileProviders.Abstractions.wasm.gz | Bin 5094 -> 5094 bytes ....Extensions.FileProviders.Physical.wasm.gz | Bin 16310 -> 16310 bytes ...soft.Extensions.FileSystemGlobbing.wasm.gz | Bin 16109 -> 16109 bytes ...ft.Extensions.Logging.Abstractions.wasm.gz | Bin 23639 -> 23639 bytes .../Microsoft.Extensions.Logging.wasm.gz | Bin 18418 -> 18418 bytes .../Microsoft.Extensions.Options.wasm.gz | Bin 23295 -> 23295 bytes .../Microsoft.Extensions.Primitives.wasm.gz | Bin 14733 -> 14733 bytes .../Microsoft.JSInterop.WebAssembly.wasm.gz | Bin 6761 -> 6761 bytes .../_framework/Microsoft.JSInterop.wasm.gz | Bin 24027 -> 24027 bytes .../Microsoft.VisualBasic.Core.wasm.gz | Bin 166935 -> 166935 bytes .../_framework/Microsoft.VisualBasic.wasm.gz | Bin 2852 -> 2852 bytes .../Microsoft.Win32.Primitives.wasm.gz | Bin 2192 -> 2192 bytes .../Microsoft.Win32.Registry.wasm.gz | Bin 8529 -> 8529 bytes .../demo/_framework/System.AppContext.wasm.gz | Bin 2086 -> 2086 bytes docs/demo/_framework/System.Buffers.wasm.gz | Bin 2090 -> 2090 bytes .../System.Collections.Concurrent.wasm.gz | Bin 32307 -> 32307 bytes .../System.Collections.Immutable.wasm.gz | Bin 95458 -> 95458 bytes .../System.Collections.NonGeneric.wasm.gz | Bin 14125 -> 14125 bytes .../System.Collections.Specialized.wasm.gz | Bin 16038 -> 16038 bytes .../_framework/System.Collections.wasm.gz | Bin 38912 -> 38912 bytes .../System.ComponentModel.Annotations.wasm.gz | Bin 35116 -> 35116 bytes ...tem.ComponentModel.DataAnnotations.wasm.gz | Bin 2565 -> 2565 bytes ...tem.ComponentModel.EventBasedAsync.wasm.gz | Bin 6778 -> 6778 bytes .../System.ComponentModel.Primitives.wasm.gz | Bin 13071 -> 13071 bytes ...ystem.ComponentModel.TypeConverter.wasm.gz | Bin 117647 -> 117647 bytes .../_framework/System.ComponentModel.wasm.gz | Bin 2546 -> 2546 bytes .../_framework/System.Configuration.wasm.gz | Bin 3093 -> 3093 bytes docs/demo/_framework/System.Console.wasm.gz | Bin 19802 -> 19802 bytes docs/demo/_framework/System.Core.wasm.gz | Bin 4529 -> 4529 bytes .../_framework/System.Data.Common.wasm.gz | Bin 376198 -> 376198 bytes .../System.Data.DataSetExtensions.wasm.gz | Bin 2055 -> 2055 bytes docs/demo/_framework/System.Data.wasm.gz | Bin 4975 -> 4975 bytes .../System.Diagnostics.Contracts.wasm.gz | Bin 2374 -> 2374 bytes .../System.Diagnostics.Debug.wasm.gz | Bin 2259 -> 2259 bytes ...ystem.Diagnostics.DiagnosticSource.wasm.gz | Bin 65129 -> 65129 bytes ...System.Diagnostics.FileVersionInfo.wasm.gz | Bin 4531 -> 4531 bytes .../System.Diagnostics.Process.wasm.gz | Bin 15498 -> 15498 bytes .../System.Diagnostics.StackTrace.wasm.gz | Bin 7323 -> 7323 bytes ...iagnostics.TextWriterTraceListener.wasm.gz | Bin 9382 -> 9382 bytes .../System.Diagnostics.Tools.wasm.gz | Bin 2161 -> 2161 bytes .../System.Diagnostics.TraceSource.wasm.gz | Bin 19512 -> 19512 bytes .../System.Diagnostics.Tracing.wasm.gz | Bin 2487 -> 2487 bytes .../System.Drawing.Primitives.wasm.gz | Bin 23205 -> 23205 bytes docs/demo/_framework/System.Drawing.wasm.gz | Bin 3833 -> 3833 bytes .../_framework/System.Dynamic.Runtime.wasm.gz | Bin 2428 -> 2428 bytes .../_framework/System.Formats.Asn1.wasm.gz | Bin 34531 -> 34531 bytes .../_framework/System.Formats.Tar.wasm.gz | Bin 9787 -> 9787 bytes .../System.Globalization.Calendars.wasm.gz | Bin 2279 -> 2279 bytes .../System.Globalization.Extensions.wasm.gz | Bin 2160 -> 2160 bytes .../_framework/System.Globalization.wasm.gz | Bin 2246 -> 2246 bytes .../System.IO.Compression.Brotli.wasm.gz | Bin 6269 -> 6269 bytes .../System.IO.Compression.FileSystem.wasm.gz | Bin 1979 -> 1979 bytes .../System.IO.Compression.ZipFile.wasm.gz | Bin 12142 -> 12142 bytes .../_framework/System.IO.Compression.wasm.gz | Bin 41947 -> 41947 bytes ...System.IO.FileSystem.AccessControl.wasm.gz | Bin 7891 -> 7891 bytes .../System.IO.FileSystem.DriveInfo.wasm.gz | Bin 5586 -> 5586 bytes .../System.IO.FileSystem.Primitives.wasm.gz | Bin 2165 -> 2165 bytes .../System.IO.FileSystem.Watcher.wasm.gz | Bin 8189 -> 8189 bytes .../_framework/System.IO.FileSystem.wasm.gz | Bin 2283 -> 2283 bytes .../System.IO.IsolatedStorage.wasm.gz | Bin 8772 -> 8772 bytes .../System.IO.MemoryMappedFiles.wasm.gz | Bin 16331 -> 16331 bytes .../_framework/System.IO.Pipelines.wasm.gz | Bin 29719 -> 29719 bytes .../System.IO.Pipes.AccessControl.wasm.gz | Bin 5290 -> 5290 bytes docs/demo/_framework/System.IO.Pipes.wasm.gz | Bin 10462 -> 10462 bytes .../System.IO.UnmanagedMemoryStream.wasm.gz | Bin 2190 -> 2190 bytes docs/demo/_framework/System.IO.wasm.gz | Bin 2241 -> 2241 bytes .../System.Linq.Expressions.wasm.gz | Bin 213336 -> 213336 bytes .../_framework/System.Linq.Parallel.wasm.gz | Bin 86886 -> 86886 bytes .../_framework/System.Linq.Queryable.wasm.gz | Bin 19915 -> 19915 bytes docs/demo/_framework/System.Linq.wasm.gz | Bin 50138 -> 50138 bytes docs/demo/_framework/System.Memory.wasm.gz | Bin 20334 -> 20334 bytes .../_framework/System.Net.Http.Json.wasm.gz | Bin 19094 -> 19094 bytes docs/demo/_framework/System.Net.Http.wasm.gz | Bin 110883 -> 110883 bytes .../System.Net.HttpListener.wasm.gz | Bin 15445 -> 15445 bytes docs/demo/_framework/System.Net.Mail.wasm.gz | Bin 41339 -> 41339 bytes .../System.Net.NameResolution.wasm.gz | Bin 5344 -> 5344 bytes .../System.Net.NetworkInformation.wasm.gz | Bin 12136 -> 12136 bytes docs/demo/_framework/System.Net.Ping.wasm.gz | Bin 6927 -> 6927 bytes .../_framework/System.Net.Primitives.wasm.gz | Bin 44975 -> 44975 bytes docs/demo/_framework/System.Net.Quic.wasm.gz | Bin 10553 -> 10553 bytes .../_framework/System.Net.Requests.wasm.gz | Bin 18133 -> 18133 bytes .../_framework/System.Net.Security.wasm.gz | Bin 31579 -> 31579 bytes .../System.Net.ServicePoint.wasm.gz | Bin 7228 -> 7228 bytes .../_framework/System.Net.Sockets.wasm.gz | Bin 22450 -> 22450 bytes .../_framework/System.Net.WebClient.wasm.gz | Bin 13333 -> 13333 bytes .../System.Net.WebHeaderCollection.wasm.gz | Bin 10633 -> 10633 bytes .../_framework/System.Net.WebProxy.wasm.gz | Bin 5601 -> 5601 bytes .../System.Net.WebSockets.Client.wasm.gz | Bin 16028 -> 16028 bytes .../_framework/System.Net.WebSockets.wasm.gz | Bin 31151 -> 31151 bytes docs/demo/_framework/System.Net.wasm.gz | Bin 2732 -> 2732 bytes .../System.Numerics.Vectors.wasm.gz | Bin 2254 -> 2254 bytes docs/demo/_framework/System.Numerics.wasm.gz | Bin 2015 -> 2015 bytes .../_framework/System.ObjectModel.wasm.gz | Bin 12594 -> 12594 bytes .../_framework/System.Private.CoreLib.wasm.gz | Bin 1393910 -> 1393910 bytes ....Private.DataContractSerialization.wasm.gz | Bin 301138 -> 301138 bytes .../_framework/System.Private.Uri.wasm.gz | Bin 41138 -> 41138 bytes .../System.Private.Xml.Linq.wasm.gz | Bin 58577 -> 58577 bytes .../_framework/System.Private.Xml.wasm.gz | Bin 1062574 -> 1062574 bytes .../System.Reflection.DispatchProxy.wasm.gz | Bin 12099 -> 12099 bytes ...ystem.Reflection.Emit.ILGeneration.wasm.gz | Bin 2265 -> 2265 bytes ...System.Reflection.Emit.Lightweight.wasm.gz | Bin 2220 -> 2220 bytes .../_framework/System.Reflection.Emit.wasm.gz | Bin 26862 -> 26862 bytes .../System.Reflection.Extensions.wasm.gz | Bin 2135 -> 2135 bytes .../System.Reflection.Metadata.wasm.gz | Bin 180456 -> 180456 bytes .../System.Reflection.Primitives.wasm.gz | Bin 2351 -> 2351 bytes .../System.Reflection.TypeExtensions.wasm.gz | Bin 5654 -> 5654 bytes .../demo/_framework/System.Reflection.wasm.gz | Bin 2439 -> 2439 bytes .../System.Resources.Reader.wasm.gz | Bin 2101 -> 2101 bytes .../System.Resources.ResourceManager.wasm.gz | Bin 2221 -> 2221 bytes .../System.Resources.Writer.wasm.gz | Bin 7608 -> 7608 bytes ...em.Runtime.CompilerServices.Unsafe.wasm.gz | Bin 2106 -> 2106 bytes ...m.Runtime.CompilerServices.VisualC.wasm.gz | Bin 3029 -> 3029 bytes .../System.Runtime.Extensions.wasm.gz | Bin 2961 -> 2961 bytes .../_framework/System.Runtime.Handles.wasm.gz | Bin 2187 -> 2187 bytes ...Runtime.InteropServices.JavaScript.wasm.gz | Bin 34070 -> 34070 bytes ...InteropServices.RuntimeInformation.wasm.gz | Bin 2141 -> 2141 bytes .../System.Runtime.InteropServices.wasm.gz | Bin 20355 -> 20355 bytes .../System.Runtime.Intrinsics.wasm.gz | Bin 2623 -> 2623 bytes .../_framework/System.Runtime.Loader.wasm.gz | Bin 2299 -> 2299 bytes .../System.Runtime.Numerics.wasm.gz | Bin 45349 -> 45349 bytes ...m.Runtime.Serialization.Formatters.wasm.gz | Bin 23879 -> 23879 bytes .../System.Runtime.Serialization.Json.wasm.gz | Bin 2236 -> 2236 bytes ...m.Runtime.Serialization.Primitives.wasm.gz | Bin 5407 -> 5407 bytes .../System.Runtime.Serialization.Xml.wasm.gz | Bin 2546 -> 2546 bytes .../System.Runtime.Serialization.wasm.gz | Bin 2478 -> 2478 bytes docs/demo/_framework/System.Runtime.wasm.gz | Bin 10442 -> 10442 bytes .../System.Security.AccessControl.wasm.gz | Bin 16248 -> 16248 bytes .../_framework/System.Security.Claims.wasm.gz | Bin 15698 -> 15698 bytes ...m.Security.Cryptography.Algorithms.wasm.gz | Bin 2691 -> 2691 bytes .../System.Security.Cryptography.Cng.wasm.gz | Bin 2454 -> 2454 bytes .../System.Security.Cryptography.Csp.wasm.gz | Bin 2306 -> 2306 bytes ...tem.Security.Cryptography.Encoding.wasm.gz | Bin 2254 -> 2254 bytes ...stem.Security.Cryptography.OpenSsl.wasm.gz | Bin 2190 -> 2190 bytes ...m.Security.Cryptography.Primitives.wasm.gz | Bin 2315 -> 2315 bytes ...rity.Cryptography.X509Certificates.wasm.gz | Bin 2647 -> 2647 bytes .../System.Security.Cryptography.wasm.gz | Bin 177051 -> 177051 bytes .../System.Security.Principal.Windows.wasm.gz | Bin 10520 -> 10520 bytes .../System.Security.Principal.wasm.gz | Bin 2147 -> 2147 bytes .../System.Security.SecureString.wasm.gz | Bin 2176 -> 2176 bytes docs/demo/_framework/System.Security.wasm.gz | Bin 2950 -> 2950 bytes .../System.ServiceModel.Web.wasm.gz | Bin 2514 -> 2514 bytes .../_framework/System.ServiceProcess.wasm.gz | Bin 2288 -> 2288 bytes .../System.Text.Encoding.CodePages.wasm.gz | Bin 514584 -> 514584 bytes .../System.Text.Encoding.Extensions.wasm.gz | Bin 2242 -> 2242 bytes .../_framework/System.Text.Encoding.wasm.gz | Bin 2216 -> 2216 bytes .../System.Text.Encodings.Web.wasm.gz | Bin 23471 -> 23471 bytes docs/demo/_framework/System.Text.Json.wasm.gz | Bin 200512 -> 200512 bytes .../System.Text.RegularExpressions.wasm.gz | Bin 149507 -> 149507 bytes .../System.Threading.Channels.wasm.gz | Bin 19231 -> 19231 bytes .../System.Threading.Overlapped.wasm.gz | Bin 2293 -> 2293 bytes .../System.Threading.Tasks.Dataflow.wasm.gz | Bin 73606 -> 73606 bytes .../System.Threading.Tasks.Extensions.wasm.gz | Bin 2282 -> 2282 bytes .../System.Threading.Tasks.Parallel.wasm.gz | Bin 21558 -> 21558 bytes .../_framework/System.Threading.Tasks.wasm.gz | Bin 2544 -> 2544 bytes .../System.Threading.Thread.wasm.gz | Bin 2321 -> 2321 bytes .../System.Threading.ThreadPool.wasm.gz | Bin 2233 -> 2233 bytes .../_framework/System.Threading.Timer.wasm.gz | Bin 2117 -> 2117 bytes docs/demo/_framework/System.Threading.wasm.gz | Bin 14262 -> 14262 bytes .../System.Transactions.Local.wasm.gz | Bin 51095 -> 51095 bytes .../_framework/System.Transactions.wasm.gz | Bin 2356 -> 2356 bytes .../demo/_framework/System.ValueTuple.wasm.gz | Bin 2162 -> 2162 bytes .../_framework/System.Web.HttpUtility.wasm.gz | Bin 8358 -> 8358 bytes docs/demo/_framework/System.Web.wasm.gz | Bin 2101 -> 2101 bytes docs/demo/_framework/System.Windows.wasm.gz | Bin 2260 -> 2260 bytes docs/demo/_framework/System.Xml.Linq.wasm.gz | Bin 2189 -> 2189 bytes .../System.Xml.ReaderWriter.wasm.gz | Bin 3998 -> 3998 bytes .../System.Xml.Serialization.wasm.gz | Bin 2219 -> 2219 bytes .../_framework/System.Xml.XDocument.wasm.gz | Bin 2379 -> 2379 bytes .../System.Xml.XPath.XDocument.wasm.gz | Bin 2469 -> 2469 bytes docs/demo/_framework/System.Xml.XPath.wasm.gz | Bin 2309 -> 2309 bytes .../_framework/System.Xml.XmlDocument.wasm.gz | Bin 2337 -> 2337 bytes .../System.Xml.XmlSerializer.wasm.gz | Bin 2833 -> 2833 bytes docs/demo/_framework/System.Xml.wasm.gz | Bin 4206 -> 4206 bytes docs/demo/_framework/System.wasm.gz | Bin 11734 -> 11734 bytes docs/demo/_framework/WindowsBase.wasm.gz | Bin 2501 -> 2501 bytes docs/demo/_framework/YamlDotNet.wasm.gz | Bin 96711 -> 96711 bytes docs/demo/_framework/blazor.boot.json | 18 +++--- docs/demo/_framework/blazor.boot.json.gz | Bin 9155 -> 9150 bytes docs/demo/_framework/blazor.webassembly.js.gz | Bin 19025 -> 19025 bytes docs/demo/_framework/dotnet.js.gz | Bin 11462 -> 11462 bytes docs/demo/_framework/dotnet.js.map.gz | Bin 18742 -> 18742 bytes ...5.js => dotnet.native.8.0.6.ygqagtplaf.js} | 0 ...z => dotnet.native.8.0.6.ygqagtplaf.js.gz} | Bin 36159 -> 36159 bytes docs/demo/_framework/dotnet.native.wasm.gz | Bin 1153373 -> 1153373 bytes ....js => dotnet.runtime.8.0.6.43lbstgbri.js} | 0 ... => dotnet.runtime.8.0.6.43lbstgbri.js.gz} | Bin 64662 -> 64662 bytes docs/demo/_framework/dotnet.runtime.js.map.gz | Bin 99751 -> 99751 bytes docs/demo/_framework/icudt_CJK.dat.gz | Bin 333110 -> 333110 bytes docs/demo/_framework/icudt_EFIGS.dat.gz | Bin 196037 -> 196037 bytes docs/demo/_framework/icudt_no_CJK.dat.gz | Bin 317618 -> 317618 bytes docs/demo/_framework/mscorlib.wasm.gz | Bin 14734 -> 14734 bytes docs/demo/_framework/netstandard.wasm.gz | Bin 25986 -> 25986 bytes docs/demo/asset-manifest.json | 6 +- docs/demo/index.html | 2 +- .../js/{main.ff6b2410.js => main.bf8e9960.js} | 6 +- ...CENSE.txt => main.bf8e9960.js.LICENSE.txt} | 0 docs/demo/static/js/main.bf8e9960.js.map | 1 + docs/demo/static/js/main.ff6b2410.js.map | 1 - .../interfaces/FillDatesOptions.html | 12 ++-- docs/typedoc/flowerbi-dates/modules.html | 16 ++--- .../interfaces/DropDownOption.html | 2 +- .../interfaces/DropDownProps.html | 2 +- .../interfaces/FlowerBIChartBox.html | 4 +- .../interfaces/FlowerBIValueBoxProps.html | 2 +- .../interfaces/LayoutProps.html | 2 +- .../typedoc/flowerbi-react-utils/modules.html | 2 +- .../interfaces/PageFilters.html | 2 +- .../interfaces/PageFiltersProp.html | 2 +- .../interfaces/PageFiltersState.html | 2 +- .../interfaces/UseQueryResult.html | 2 +- docs/typedoc/flowerbi-react/modules.html | 6 +- .../flowerbi/classes/IntegerQueryColumn.html | 34 +++++------ .../flowerbi/classes/NumericQueryColumn.html | 34 +++++------ .../typedoc/flowerbi/classes/QueryColumn.html | 30 +++++----- .../classes/QueryColumnRuntimeType.html | 2 +- .../flowerbi/classes/QueryValuesRow.html | 4 +- .../flowerbi/classes/QueryValuesTotal.html | 4 +- .../flowerbi/classes/StringQueryColumn.html | 32 +++++----- .../flowerbi/enums/QueryColumnDataType.html | 2 +- .../flowerbi/interfaces/AggregationJson.html | 2 +- .../interfaces/ExpandedQueryResult.html | 4 +- .../flowerbi/interfaces/FilterJson.html | 2 +- docs/typedoc/flowerbi/interfaces/Query.html | 12 ++-- .../flowerbi/interfaces/QueryJson.html | 20 +++---- .../flowerbi/interfaces/QueryRecordJson.html | 4 +- .../flowerbi/interfaces/QueryResultJson.html | 4 +- .../flowerbi/interfaces/QueryValues.html | 4 +- docs/typedoc/flowerbi/modules.html | 56 +++++++++--------- server/dotnet/Directory.Build.props | 2 +- 263 files changed, 181 insertions(+), 181 deletions(-) rename docs/demo/_framework/{dotnet.native.8.0.6.wz7wzmup65.js => dotnet.native.8.0.6.ygqagtplaf.js} (100%) rename docs/demo/_framework/{dotnet.native.8.0.6.wz7wzmup65.js.gz => dotnet.native.8.0.6.ygqagtplaf.js.gz} (99%) rename docs/demo/_framework/{dotnet.runtime.8.0.6.y5i1dzriyy.js => dotnet.runtime.8.0.6.43lbstgbri.js} (100%) rename docs/demo/_framework/{dotnet.runtime.8.0.6.y5i1dzriyy.js.gz => dotnet.runtime.8.0.6.43lbstgbri.js.gz} (99%) rename docs/demo/static/js/{main.ff6b2410.js => main.bf8e9960.js} (60%) rename docs/demo/static/js/{main.ff6b2410.js.LICENSE.txt => main.bf8e9960.js.LICENSE.txt} (100%) create mode 100644 docs/demo/static/js/main.bf8e9960.js.map delete mode 100644 docs/demo/static/js/main.ff6b2410.js.map diff --git a/.version b/.version index 831446cb..ac14c3df 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -5.1.0 +5.1.1 diff --git a/client/packages/demo-site/package.json b/client/packages/demo-site/package.json index b20ee47f..93b7a384 100644 --- a/client/packages/demo-site/package.json +++ b/client/packages/demo-site/package.json @@ -1,6 +1,6 @@ { "name": "demo-site", - "version": "5.0.2", + "version": "5.1.1", "private": true, "dependencies": { "@types/blazor__javascript-interop": "^3.1.2", @@ -10,9 +10,9 @@ "@types/react-dom": "^17.0.11", "@types/sql.js": "^1.4.3", "chart.js": "^3.7.0", - "flowerbi-react": "5.0.2", - "flowerbi-react-utils": "5.0.2", - "flowerbi-dates": "5.0.2", + "flowerbi-react": "5.1.1", + "flowerbi-react-utils": "5.1.1", + "flowerbi-dates": "5.1.1", "json-date-parser": "^1.0.1", "moment": "^2.29.4", "prettier": "^2.5.1", diff --git a/client/packages/flowerbi-dates/package.json b/client/packages/flowerbi-dates/package.json index 557a0c62..6addf270 100644 --- a/client/packages/flowerbi-dates/package.json +++ b/client/packages/flowerbi-dates/package.json @@ -1,6 +1,6 @@ { "name": "flowerbi-dates", - "version": "5.0.2", + "version": "5.1.1", "author": "Daniel Earwicker ", "license": "MIT", "description": "FlowerBI: ultra-minimal BI analytics query and UI tools", diff --git a/client/packages/flowerbi-react-utils/package.json b/client/packages/flowerbi-react-utils/package.json index 6e8a1d59..fb07e4f2 100644 --- a/client/packages/flowerbi-react-utils/package.json +++ b/client/packages/flowerbi-react-utils/package.json @@ -1,6 +1,6 @@ { "name": "flowerbi-react-utils", - "version": "5.0.2", + "version": "5.1.1", "author": "Daniel Earwicker ", "license": "MIT", "description": "React helpers useful in FlowerBI apps (but not actually dependent on it", diff --git a/client/packages/flowerbi-react/package.json b/client/packages/flowerbi-react/package.json index cb5f7b75..f1dad3a2 100644 --- a/client/packages/flowerbi-react/package.json +++ b/client/packages/flowerbi-react/package.json @@ -1,6 +1,6 @@ { "name": "flowerbi-react", - "version": "5.0.2", + "version": "5.1.1", "author": "Daniel Earwicker ", "license": "MIT", "description": "React helpers for FlowerBI", @@ -9,7 +9,7 @@ "dependencies": { "@types/json-stable-stringify": "^1.0.32", "@types/react": "^16.9.0", - "flowerbi": "5.0.2", + "flowerbi": "5.1.1", "json-stable-stringify": "^1.0.1" }, "devDependencies": { diff --git a/client/packages/flowerbi/package.json b/client/packages/flowerbi/package.json index a0f14f2e..ef0f1a3a 100644 --- a/client/packages/flowerbi/package.json +++ b/client/packages/flowerbi/package.json @@ -1,6 +1,6 @@ { "name": "flowerbi", - "version": "5.0.2", + "version": "5.1.1", "author": "Daniel Earwicker ", "license": "MIT", "description": "FlowerBI: ultra-minimal BI analytics query and UI tools", diff --git a/docs/demo/_framework/Dapper.wasm.gz b/docs/demo/_framework/Dapper.wasm.gz index c3f0a88441443f8d287064eb79b334c91d77270d..9667691eb7e0b81e5c5b1a6e13479cb775ab76c0 100644 GIT binary patch delta 24 ccmeyjneE?ZHZJ*Y4hAq_Zsgj^#rS0=0Aauf1^@s6 delta 24 ccmeyjneE?ZHZJ*Y4hAp~Zsgj^#rS0=0AfG~761SM diff --git a/docs/demo/_framework/FlowerBI.DemoSchema.pdb b/docs/demo/_framework/FlowerBI.DemoSchema.pdb index 0993941edc575343eae43d01fa80ce99f46fc8e7..103fc39fa71232a11d802dba844b0a2104a610bf 100644 GIT binary patch delta 6626 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 Te}SNOIWYvH%E^fPu9g1-EW1@2 delta 6733 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 diff --git a/docs/demo/_framework/FlowerBI.DemoSchema.pdb.gz b/docs/demo/_framework/FlowerBI.DemoSchema.pdb.gz index a034481b504263ff255e0b065621236a2bb9e1d5..7cbf0f425421927040a1060dc7503878b712d71a 100644 GIT binary patch literal 7020 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 K7OLYAE&u?j9IvSW literal 7034 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 diff --git a/docs/demo/_framework/FlowerBI.DemoSchema.wasm.gz b/docs/demo/_framework/FlowerBI.DemoSchema.wasm.gz index a99ef9ecc32b9674a169e3e49f486d99c230ba4e..eb2ee793caddfb02f3f85ef927f631cdf70912e9 100644 GIT binary patch literal 2979 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 Z`ZnV`(4BD|1&~oH|4)oo9aaqX; literal 2992 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 GzWE<+V@IL@ delta 19157 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 diff --git a/docs/demo/_framework/FlowerBI.Engine.pdb.gz b/docs/demo/_framework/FlowerBI.Engine.pdb.gz index 09c89d5d3dea4661f3cf5349d39dcef8a1afae1a..c5b2c674d9df3502731f4a7bd4f22a3cdd42881e 100644 GIT binary patch literal 19147 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

c|Wu`;E-6$UByQ8pc}#9rYB z5ai+)7KP*2)&Zv$Q$aWv0TBWMvu;BgFb+>XkzviSL776<97TZyd|9Hs$FYCN3LvJoCEVwbUzB zm*agws=W|g#)qbsp*iY_eo+rqQFh_Lu3+^!FA&q4VaJ5A=rwpc0Gr!R_q=zd;`{M; zIC9@C#vh);-W*a3ZTL#5DRoSdzVv9!ddIA`A1Pg##;0RrxASkJ z#P;#e3F;fuF?^RDe;p!*ue`+k?^+pC4(--7uI7KntaD7G63csf*Q`nOUb=C8eB-9x z_@<2;FI~TW%q1w4GuFm^@k?p)%Y*gfo%AisN5wK@0KbYo0!L6f2=$&Vnh z5U=Ot&;FHTvd2-v`&b?edFVYWV%}%>Nc2z;dkQ{D$ehA7viY5?H0eS>@V*p8l81um zeHw^F4+XK{FAg!IAbHL<()dAZUO;q787}_6 zyTA42e=yF@-7Nhf{9d>nJ+Q~`HuVVtD4zetuP^18PZ#8YWU2@X{_W{#>)2hk@kc*; z>3>}Fk$GEAuHF1e_AB1Fz&EGTt9mtB@V#a`SXQM|J*)QN+mIuBXJqy9BZsNI$yF$b zZ&0o39nK6TGOKcKXg~P53V)bjl}6htN!hux2kjGbfd3S;j z@bg7d{#&Bq)`?ucsE|f}{xvW$m`?>)LsthnH$H;7U;VdLkdpzCHKSLu}d$LH6@h_A@T~z|RNo`53x=m2CP8 zN!0x+Q=O}uFFEm3O8zT-%;&@PLy%-&8{Udk3a`8Hbp^g$h}jYUwxgGwoaNd;=PNFJ zsevzaTAj!@z5Yh@BVXvUdK%aQ+q9gVcS=56%~x;uZw+4NS)Kc_-dgbcuUe$Q#h1nM z+Mm0=Mp%cG5g$>uBoxSE#v(c=F#v9Eh zq~d@Z@!zGOtrymZmrmD$x?Z$3@S(lH*Wo|Q-(xr)4S3mSE$DIH*UP^+bap-1hrj*z u|5*#{cT71NcLwh)|MuVi4=u1Dh!1Zk+**dz5Wb3^*_}x_Nc1|+(EkQ;!~aA8 diff --git a/docs/demo/_framework/FlowerBI.Engine.wasm.gz b/docs/demo/_framework/FlowerBI.Engine.wasm.gz index 7d2cb7a2980ab69c5b8e13a42a341fac4c1d7f6c..b1619e3be34148201fa13f005985de07612585e2 100644 GIT binary patch literal 38942 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 F0RYgt2gLvY diff --git a/docs/demo/_framework/FlowerBI.WasmHost.pdb b/docs/demo/_framework/FlowerBI.WasmHost.pdb index 69974b9a6b9a5770ad3602d82f3ccc8fd089958f..bb5581db8820d62b8d667ff398a5bd02cf7d0767 100644 GIT binary patch delta 17254 zcmZ{M1zZ)~*7qE`I}Q@kozfuEozmSc-Ju*Bq+w`5T3VD;X+%(zkQ9)X5&=`%x|Lu08CSUs3B_%02H7Vc^*KXCt)z)3k(HVKt%%%P?7amXuuE_3ZRXT z2H4@F0CA*fz#~!=;65c9kVc6DtW%=_r_?CGGdeV&pAH3RW<&$tGNJ(UMlfL42n7%| zh5@R^C;*u$j2mDzMFBibVL$}(oM{0AN-a=;VdQxpdB(DY0XHmB01f2X(h>zsN8!MN z0ftC57DmVq^g?(5fiWIHZj5yLfBfMCuEzMliU~gO!vtaw0LrEWfUzkdP-+SZawGMb zK@1q+@aODyeg0S7%s=RR=12iaa14e`LkQ4W5CSa7gBy7WA`c1VA&WdzEWlnE87d*5 z4PK$xfL^HdU@`E zAum7ymmz=(Yyttu5*;N9KnF(Hvyn6gS{ah=VQ)p!OIWXw^Z@%bk`BUOL(={1M@ae^ zDJl#d=wqjVp#l|@^e}ATmJvM+2arUTxPYP&69UQpz%GJh6VS*Y+3H3zNQRb?JhFa> z-4IznOJ|3q-?9fF=>^7OBqrUc7>Rje1fbvmbw)C%H~@`t53)Qpp-008RLtnnAX)}V z8=A?W;Q}URJ=Zlo=-9xhSr0lMP=zehL>?66#@@d9Mz+-x!Xd)+^a zFly@DsXE(N#e5{fphKvx^}KMig_bR0j?F@rtXEi~c8*GQ-1#A5VX`%(-q(ZvZc?!V zYN&KSIlXa(!WL6t?@t;BrGfe0>0@19ESx%eStqO)8ky6X#_=43+E0aw?R9(@I?$tU zQ3Sn;nl0#xky4qk6#wiu|q{_fz#!Y2DYVL*pC@$1(% z$%5Y}8#N~~CYtqAh}!|#Bc^Ta;@B_bEq;6{^xL_p=TLic+qcWZQwmM@TjM}x3?iR$ zd?WWGzT}~YhRKlrw(TSA1ZgkII?27kDA)=+)i3@x2USZq1*UhCW*sE#6<*Ud+QbPP zJ{V7U*-wYX6V0hQn!SRdd9b`$C2()Jz8FmVz3V8|d>mI)`S`}(;M522UhA@#6)$fd z#thWayD$)23gAWZv4DLzEZ_-_CW7>TT(~ILsI;gNvb>d7rc~cYL95En@B38?(O>HO zv!b(LQ~)q(vY@plM%Fc|XS{A}Rz0i@rbXLu$`a$2MNr)p@{NlAeA3*avR1bno=dFV zO8HaeC(aJ@WrUo%s!Kcgi1pz4Wub4^&$W%??(P7RlyiARQXec@l##YHLBLv`AImyS z`8D;j5}$2gPx~ZMkLQ%2%`FTUn%*?3!P8GG)xT*ISFlOP#Z*WN*KQ^m>8w}oi=x`* zcg8ySU&c-}e~aBeU5MSxTW*htlfQQ?iyfJ`>lpuF6er)2D1_NhV>GHq^tn^i`bhvt z^!_L9{7<(WgwR4U^`|Gh5_?Zwj{BaKQen&uR@*1v>F;@tX4~BS+$S)1P-u@y4t-B4 zoLlr+Gn`PCSq$x$2KH`c>|_h+M>tUgofcDGx2j^RhP15(&F-%MUQF~#+)JjAM~cMJ z8I8tU2&Wg$FJ#UHldnwp?~5;oKfE!<_xuGhpX%d}X@ZE}5M61acj9kF){15DNGasG zr!ou0l1o3M(M0Q)nU>g1)rj6pc5U*QGGy&Jte#6%7qE>ml%e4$k=bU`Wu0SUXKMIz z#vT6Y1H&A3R271Rn>S) LzL^=U%Rq1`}SDVi4>=AH-P3A%bk1{Z8$xMbgh@GNjE zJG}GJ>!Vf#j@gycOAT)Y#4`8Ytg*iLE#KQ}-b4`be^WYk027OLh}`7jv&(#{4K}mVq(Ei54z44OFJwOxf7aw*%XmFgf*r9T9%J>B7uCMe86oSQoaQ;+7*lpn(3RxOIL(rFnJ zPk*GjzR_9Ftq{1I9me!JMbN|PvvDk`S2T;qRE@!%u&R<&9{s`|*Nsu_cPD6pzUWGQ zqBw!|HBxq9-l3Iac^S9RN9+3g=8Gw~TP`!Zr7sZyiwt(srJMbpTwXs|EP2;ajZT-V zKJ5#38L5b*Q#MAt$qtD6JpQ;XMZqi9#hl&Dtl`}}F)6=*@u9(0flV05>i)#^CQDbX zxi5Jt3s<63gP~rENp1q)fp}NN1MV!(j$7tGuIhpUzP1+Klq)=Tm^EAz*SWJLW9Uy# z<}dvWVaYIJn{p?!`hHD|VwNwfQC(O~d3|@RLtJ~q3&I?IrG(?`!(ZN8}%dJZzAeP)Y12E)IAF9=NR8_A~S}oD^vik zW8>uDYbEdL@8Rd*W94HL;_1Wd#B1mKzh}7kLNeAyhnRfM>e~pfoK^+A&dKj~n2+eA z^+relpg(usV@-reX6cYT`lqd(`@0Oj3?EdIz=`2fmqg962U`>{mSp!nvTBxUv{}Wj zI>O8H-*T!$-UW#*DHF^XBsz?7z8i8QpRRsijv6w2XC7oPl#>7*Qf@3}ZZ127zhO~z zqVEt`&!Hz-RV6}Do{6s|MEnSgEC^K&*!%wJGRfh0g!=kr3LAYVF<&0a3eH7xB8Kbz z)KdD9R}0>Q$6(b2;e{m|PFXo=tVKMAcf1}VsGgE_?Zy1)xQEDA%$n@RIT3o$a_WNu zf+jfOD_LoRSW|m=a{HPWmTUp*gWD%~U`F}Fu4SnzZ(?96o?mNLiPL`rV=`h}kVQsaCZ zXgKnMNsFUA!HadF2%lEH_T z<2#n|a>p6X5Ow8~5^~}CA=A}vZfCp2Q!W_p-G|?z#iXatqBDM)dvW%^B)&0pS**Xp zUGl-sZns(%kK1;CifAD_^SBYOGN^B`wOoEb)e5P@_Pt?g+Ue}JoHcD_fcqp!19zrv91rM+-VeJXkO)WF?>MmbS2W?3!JB8}mx6q^dh zRwRf=n;q>~6z)Jjf+pj;8*fHD5ww6a-`V_pb5m8=m1lBkJb%iOJ`!J(mTmPm}>x-pMLfiQlv? zFU5a6tsFcw%MI_UwC*UUCYoe-ZCSu@s+z&klEtiGAUCY2BkzFWB}=O_{DRL$btX?| zB+gYmMFbq5wW4nmT5VCNaoL{-M1?x1Gq;HQkj5UqroG~q&wgFYmH)fOl=IDwp6fPR zK9e(_66uD5K>3wK481so(axSt3XxNF*FC3@9Dl;^=eTR08ZMC&d7;sIwBNY`%e$pG zgT_03`_y+$o8}{O-(Eh+Co##<@NQpfvY1@1P_vs8P>)G|+ce=)2(CT4XK&w;>SIjX zWIz?v+2}TWX_!?%g&(<;q7nDK+iyDcRTJk%r1{ndnf}jQ>T%?|C3_gPXC(`fF{D18!fKm(Q6GdZn)gn@ zEL*(8H0CIh4gfxw%zMm>5j~hO@>-yzx~HCfAG|TB_;uPnA)wtkX;y{c@LIVYmo&{15T$NF^{Tf0_XCES)E zVs>gH$i8nGk^m%TR z86p;P_G>lPJ6^jr1>Px?(6h;`nR}pC$`nR$XqItND0mxw7ts>|=f}vkXe_$h#dJs0 z=p8c`V$X&`(@R${OxhM*u{@5f%nF2uP{BVDGDnkg(`nJ7h(E>iRwYqrrGX!)&SE>50IBxq@F z4hnaqcZ1?M+0dN|^j06nK4ncLV(xqA#b_I+Cv0h=@fOkUGq0;c{=Tz2EsQSKg+(ya zB4Ue^JWbh|Mfp8aJ}S-IQGaYjVE~A2}V{N(Igw zxX?w`9K^SCW=q(fq}5J+Q6KS)C1Ez3(N(@8HT+a1o`Wp(B==w(<6?WxESSr;lilH2 zPt_*&3hk2|@PJ0aBK)M_zLtpSNZvS+o&-~E`@>FzUBZaejO$R#z(Q|4|CiB~#3*=T zNBH}s7zTf>ES~qTNymkhY|S!h!^-SZ+I_kurS@b|PIyM5qg9I3BT6Rpn0qr7YnqGf zW(}O{HJoYV+dU_^_XVQq`*#+`(^MnV24q)zdB$^HiLe9x>Gvv(f~X>HyD}EYvG6|h z<#7u}4AIIqba=W{KHSj_sK|_|SSg-g(Z5K36{)_JTY4ZqdwbO<2srp86Vh;BR8u;2 z!kHGK^v#DXVn%spmwf zG&(o^xS_1fe^Wi=fmUEC&Cci-mIuvF&6ke*g&Hiz|gLq-R_`@-r?JGH)=l72FxSeHGZ43c2UCmkWm=_@%+&?5M@UcT}y~919F+M53%AlSQ zfSYgq(l{=hBo#_mGxR%~zk`Rism(@kMaclt8IO(9hX8ds!MmU5Ki9r*Esb8$WRj#J zaFc#uf6+4_e|yMQ3KRj^g8ACAXH2Y)^nzcx(r#)LVhzilcgrwb=-rbPKYse0b0m8F zH#%L^k5Tc6ZmEaTINOZJdKrGYBxq#;a7WeldF-+P5;hab6jYTEm!zN1q($+)!&S4_ zo)txNFo^$Bq0At2B03C}rEn5wHc9gfMU*jXmD!W66ZtEUnCIS94MM} zeMwn>zN#A?@nfW!w~$XK`<~t5H<@q7{af#dI*ru6ONlYPpS|=hSTc6l*MBRw3tMbi z?%YI0aB;fN?M5s%ZC!54cgMOBe(OTKNhus$qSv zm-~7peKR<2jvjr`R6RdW?sb3&2iEKR=6Ro2Dq7kMX#*@?dP}L+^Pl`yozv*0LCgdm z=O%4fC4O*1eHCVANL41z`FxU0FjKIOtWoRZik)wo{{b3T(DFC+3`HEr-FcsvLYjuj zY8=g~E#dSwPtFgZPMW{8nwTD~ zi8v0$zAyasqg~;Q%}dL1t{N)58?uO>Z?acXu}wVRJd63f(hraALxVqEpg1e?(cXC| za_Ct0{KrR^(wr#Fvprcq*Mtgnu$*CL59=8A^TM+JrNPHEY;>+?1H9{=&k79J3pd{e zg|RIioE?vyrg&IP>^hSWjD!n(loMp2I^BLN>bZx}j*aM`tjbBScXfYdpb*j! zk2SyK4?!=!hwkw?nlp?L8rye0=S7IZmkznG)>&YT?=p6cwZ_R@TAy-E^EgKy+R&jS z+@6o-&}FI)@<_94y-ouQ%f(bT-)Sxge~h9}7+eb+Tst^9E<(7I$7&&b)IO1Y`j9Pt zP*y#{uqrcb{){Tunfs7NgOw3?183e`5}o&qz=yW;>A7WL?9Hm-CFh;epB%zHWj{$A zD4moxV{q{=tCF=Zc7!xzJ0_?wy$dR2`5v~*N~knh^KZ$_-6UX7JoeCeHW-edp><2e zBo;M;m$osJ%}vbl@;CiFVh7)uPxVzH0p>Sr+H60}Sva)})h_I~lbtcH*-s)j97Ud% zkv3S}ZgY~ogf$vhT@agjkI+v0BaNFZRT_C&-vImm9Mg%LYDu^kd_wotnYIg;J888b z=kf6<<+NA?n{heF%7}2ZbfDb8=i4or={ImK*ytRX!GwpI(|-hdj}`{q;m3%>b*zg znJiQFJ=r(r7+4SRb`71TXBD2ll|=S1F&zA0{Hd|=3xQXg|0Owr#^Pl=`ulJ zYN_-?xpjH*05&H!IBELh*($?%s?_~`X{)=qSNT5~wDm$KFWnIaAG~rGvB{Mr>jc6{ zlShOiQD2Tnf<_f-7gFp58-0MAG({7YZWh&X)IAI9x9bkm_jf;QBDBq<0#Q~*(W~}Z zzEt_PH>uy}eR@$CMX_Qxl3FOp$VF?-A$KwN@lKcy_CWd>t+BPKw<`s6psZ(oYvAOE zp;d)7rPrsV`hM{U@*-D??{D7DL^>1GGm>U}A!24K(qVEQQ@~LZ)9ZUHEs<2?t;}Sg z`SH%W{JnOuNB&B+?@aqy%sq4JYFSn-^?u=Xhq1L#ep`(3f;YkoMd&!=^#os;esI&vt(uG?tVIgoRQ}S!_Aq8)ViBq-hWV9A+`ZVH|*kfy#cT}7GXfDc2jV@)!T#EC_iYsnaJj}<@tR-nezgSKCi z-5b%gOMAL$JQJt;XnD2Dqx{yK(TP$G-PZ*QMe}ifnxnER&a)^nwKGLa{ma{gB`WV} zK=wzbgIG>MxokG(S;2-Zce5+dz_c$!Y|Y%I_jB!M>8mk{CmujpfpeBsp`hoUTRx}qd)m>c(c^gJufGtB7 z`(k~dzBz=#vEL!)bYx_^MMS6D#O2_aWm5(ZlsmuaXr6R?K`Kny$hmp)-K-joMY-vy+S?diKyH` zl}@jJ9!5K+7x%cH@RFv6;8Wh~k(q>Dgw0TMZWHzG&?RH4Sk}i_)=z^XAK#K!MM%Z-hzi3%u{x_c}7DS2v*`)Jo16IHHtE zZ+@tsgz_pQskAfOI|L;%QbG@SH2S8%Gp_}nILv#Kg5A&i?y#~M;UJ%LCD+US#+S>F zLnbP^zV*6H=Uk$JFPNGBk2Uf!NQN6Uy!6rbG<`+n+nr9fkjkD~rQN9Rch_s=60}AR zE*%;XjU=M>XRutQWrkoBxVh^I(T<_*sE02zKZf$(bp6|HZ=p3(^_)^k_4(RV)25hn zDW&?xu~w1fkCe$J#Bcvhu3Ut@%s9srK@0ox6-|d&Iz=7d>=B({JKoJIk_{LAz@t1h zrm-MtJJ!y&sZX;p=jeV%mac0Snz9Usyb%vmpQXikli$y(k-f20${z31F6D6=M$+;s zV#!6(CbPNkS@K;z0*1r$V?+2yGXAgf8Arv1V=2;fW+p@|2V#4b3;g{E{-b%oWhQkZ z?F{A@N-W3r5M}4io+!;I6DoU>o2E`Nid{tP$gN3n_TK(zohJ+{Di@aDBvFtR*1sZq^-E;s7A!0zq-6}FNz_dFv+q0cC$Xv}3xOVZ|# zw+_xzR(7i8iUWE&F{CCCR}~%h)fuKK$&%xzY(ks5B{6S(ICS9me3)@YYBks=2T~;b zlQgfG#XN+gNUu(2Ygdo@y0ob-pTP@m957(vu6K#D22ShHu~sHHVcP021X$vIyezH| z3vbf%4nWXsUVUghH>}aP2`tw4gf?LQo^2(nl>|DCN{+1vFL7BBnAXQ!-@Y3>Us%e$ zh3<7kKBVL?LuNy+_^ak_Qu6@!N}~KDb^SL)-3oX&pYle_vJmzracOj4u8E2IVd|K6 z;Y=W8Kdg`JUW86OEqaoqOJ;^zeRP&=J%sqlxWdgM&i* zKoYUDUo%QRb<#?zhM-aAy8E>J`6gz$!khw!Qu=3ArFSO1VwXvgrLPR*hoz1YZ6X}0 zM5zN=eEMIGM5^~wj2aN-JPlbrm%_>ixPu?g+*-9&q8i%=4j%EW5?3(Uk*VWE9p%d2 zFd(5mVvWPzbD=a29(R5JCTLN8m3`i$b!0l2#4NB-bKab-_y{4iD~0VT%n-HS;chm( z$M&LK;V#~z%X+%emy<7iW-#ZV8RPbLh6F+VZI0 zl{G65Q-Uuvy+ybf!RlOhCbB~BxD-mw()taP4iED&I-FOp8Iga{NHNrv@#8^l58-r< zv#C=_g1;4JVI^~DmZKS!WPYdAcEEcNPej>f+qwHv=15+7BI>L2A0dtwx3&GdTXvrfv|^VTZ{#-N%Q zHlAeQ^0=#+#BcBI9aN;Hb(qiFrchN7srKpG{H|F^cb4BjX1?^5|M@Nnftq3v6&(2{ z??vq<@k23EH^$)y=??&LM;fwtW;>2@UHstmjZBK{W%_bg_biEkI@^XPEiN7vZFwy|{Do8B$A z=o(g`k$+{F&N$P+Ue@gxtfCry>jO(KnIai(M2#)x?(}fGXlldr@Cw8>MMi^j{nGKj8qgfa#a&4)Lr(!RBvZeM=-tF7Gx>sWE8K}qRdUHqcXp#C-C(x6|tnVp5n$!MV{@@W5V)4 zk112O7+7tpnZoE!t(h-+-7f9IxcQ=^ z*H<;K8!H9pcJ6KU0V_{_q#iR%QTw|Ek~W^cT@o0?t}4_Vq~k_#Ro{2@?G4Bw)3mVY za%M=zyjLXIcPn4mx-*QKGnIzRH61IH#lW0yfvDDt+RS9Vh-jTnXDT)#T-m<4+qDu3bQ=%C$HqTfuVsC4H@7<*t(N$9UznaWrX+ ztVo`!FCvm?-u36Y@7x2n4gh_h!dPang}CAjN#o*iH2ph?&k_Cp^+FdOZ@+}xd#ms; z4TJ4t9dQ{!GfSGtn`4!l^TSuY9rqPXvvk*qx6itLFKMl=l{qZFi^ldRw zV6Y>rPR2q`Ad5aFMk;(u@8_jrCY2kc%PM#pkDja_NbmID4RbBCDEGG@F)Tn`n%ne$ zrLO#;wm8i6Oy89Fvc~3tG5#ylQ*3D~`b*N^R^Ve^IAvBSqrIn{zq^BnpD&|CC?g;A zW*VP8xW}u@XD=WwXe%V-U?XZLbj!xkMqE@-P}JUDfM48R%u(3h!9n(1*1Z~A^`T6;6_#FfUghl!JZ3V<`i3r<^IoOHWi3swG z@(YXD+ldR=H@WZ!!IbWMy*vPl0bu`oT((k=xCR(9)Ops}$f4xs8R+06r^>77;pF1s zz-#a3hI}is(M2H|dO1?{or90`d9!9o!)audZUTA}+pYI7cwuk-5D*Rk!N8`hMBE$g znzqZ1tqHFO;EE7a6OWJ%nucRKODjMR1E?PMe>sTrQf-wOdUUml-lOSa=i}+?>FCF6 z=;G^d<0fb0>tgrE=1yU0Hl&q0?{dZGi-T&s;UneG69t#xJ23`?W;4cfh*?(7%KFKk zUHLhc`fayu0jK{cG;;9}yv3{Q;N;@#=M(%#=e!(Q1Jr6PRbBo$gn?q+E0OHO7P@VB zUpr49Hy7JKuuL`iNyy#rabcbLt2y!sGJaM4Xghlz4t~CVHXimi2p{`D&;hTTbwCdc zC`sZ_XnOTYF)!ZS=H%D0tzNLNpMyKEte2O(C-M!DAiqEOhqOlpkmJcJ^kOXAFtwCq ziE#maSb@)C*NdeMHlE91Ywt9gc0NBlB<81qm zr%_IgMjjW}TXYSul%#;W91ToD?R@)DM6auHOryS`gjOFlT>}Ep{i_G+6E<}~kQjtV zetguNRx@YAi^nO`qeuuhd^)GP4q_72*=@GGkJj!`D9k_U45hy|aN{;H{2Lnf8RVjz zeO+g2db&oeYraTVysOYPz~nX=g4Jav5m<%+Jqu-qjP<)(&zM4OG5wxm|2vi*jxJ9A zJ~mJ||6Cl(QtE4uLW$;YCDDk;)~r5#wKJ%o_#Y8pPq)7VXcmR<5^}(+Ke~FokY6!s zN(R5}ah3ibFq6Ee&tIrfcvUk5wM&gyqHwm?$fHQ99d@|70tuz4;3WnhSAb#^pjSU9 z&?!z=B|##dyNI`@29%Lvmear*e+z{nSo>{T>#>ts&QsaLC#J%fe~c*D_}TpN9YFLA zK{niSuC6feJW**`o_uF;1FIWcks<|ON)f@ic*Gj)#&WLh{lu{GJg3?TtG z;TJ=PTM)ClogpVz#!e|?Pe`>2Ug(Epl7ZZJDBzPZ@F8Fs0FElzdy0NBDn1^S9z1yD zyLPSK9SP9*X50m7fU{t`hFVWfvnP3#{bov-D zrdW-LonrHHlDY=CN#nr{9X-k*Kuhe4)R*u`&H7$9G1--2ifh2KG#XebO#qj2ep~~Y z>2>eop}kox7eiurR;bWb@dreJxcWkQeYMu5DcXFd6BN5XN9+$TI78ktp!uZ$(BH!Wvb8WZ-zAiz2@n#CPy8D``#0@dyI0fP^ z{ufxs$Hm>n4|JEog*#By{)U287dJVMS3j=uRQiNKr$HhFOp~ES^fzW#LF!^9Jhq?d z?`m~?ac2HK>hJtVosy@IyN#bOudJ_!z#j)NouoFPHrp87qj_$hr}+|woknP%O7dS4 z`Zhj)1Yn+=Q;>=7S*OOm`aG={`?8Php3Iv<0wA|6gE~J)K`R89;S2cqImkryMcyfg zvShH$AC1b$uO!&GxrF?4bkQ71U5mVyj^9fK=M{4{zrSA<_`wY3%Cf>wU%@sYeZhtk zDb~i9>hYhdk4w*Ase#0D6yP^md^lypcq9a{G(-{0Qc6>4)81QR+}tpKkZS~{u7vCFU%N7(bcJ_hj1U7Y_@Zx-mm-}9&k&J z170Dh{upAqQudhN^rKMdI(jD2#~;ZDa>!G|(T~2YLQEsxxQyd2Nx3o*4d3L0!69fa z&jRntZCrzxg(98$yKUU6CDd@(+IB7mm?zH)Z+sQ}8DjPU_saN3I+UI%!X$0=#CpIP zc_tk#|Eu>9Q`Y3e{-Hs%Ox%E$>&&M+=l^kB6*+0y_&M0?`FZ*v-(dXH5cy)Q6sSv_ zD+ii6sIaM4Z`?6VYCu7NY6^^SQbDynNNFeH>v^F;o?>Zx9CM23WFHuSUq{WtLT)>IS?S|FNj!;^pvng}U*Hs2{R}K1j%dDLE#acDVIEg0+tyq*r8> zQ?*gQZgyZt!JcRJnrbS>-6$rOM7uw#G+aEq|F}zld+`+-5YB9Dy`Tl9b~it*7)ABo zC>XCu2fuMM_!%Gr1CDHZk_Vc~<(_ws7>uX7#@}kDmcjQBIu9>H_9mJ?P!<&^ikO*3($f2SHK?z#@%{tmv#IqzSS zbNiXe3Z%cTb*tSdQ$aa(VXvBYw_E3relAEv&%w^$$Hnh&8hKhWcM4tH;F?dCY1|G9 zF>{8#AK$cCf|V+CaN!(y2^5#yTFmuLl$&zN(GjQ@VSCfyf(jKp@AzgbBzg38A23xH3qx6>QmNK6FghC^U8%mP*#-%e)Zw_HKdjimbMc+ zAfz4M!B&6xfTmOlkwyi5N2i5en zcX0a??x4l^T*y?_q9di5WVd2|W@;n-Qld22tj3BU^49wVxoVXe$9_xpT(iyc(PyU{ z=)-@s={h+6NooHmi%`}+f$%GOZ={_r7_>_;vj+R@jjmT7WcK|JydrY3{3C?Fb-xvI z`H?nBV?e8B?HV;=YV6> zg{MFU(`v+xYfVSwyJCN-Wly5If^+Ija5Ao}uMm@uXyqrx8Kvw~IX&Q7up_EZ!09)B)dW(7~1XOa~#Gpwkuxx#Tz5q)J!oWP;fc z@HbNOxXxh&V%CepgMl(B#phDC(n@o1IZ#TI4xam?>>b3^8$xqJTO?H|>q#wop(jxe zzR;v+G4SxUar`^`Gp{slLr7C}k9%x&!LkvbuM{d2_ezmSUd83P{8NbO`|19OXONgy z7Z#KFkH$3rzn2X8{=19&UrlL!DW||P9WK1Oaq(FCVdX0buU1Y9?20RP#y+o@Yk1n&JN(U-=JIzJAce8@uEd;4A2h4^E}HL7W5$8A+H`Os%zMkwWR(AV z{Z_0;rxr-|#lLwwEDcQ4q5adGl<}!wko+4fEp)>UC#47xT@3;{gQpM#bkZS)ho)t0 zLd{u?=!4CpH7Vv}2_Pb>Ha3s|c6hW^*LCk^HJGV(-6L0gKIIV25R@kcj_L5iF>4mq zA=Q2n5Af_I^OYJZokQ+((osUH8I9fl4&h>5$8=}_5tB21F68LcE;RVbNxdiW0yMbG z4BtL4zk*sYesm*twZ>UJSN-!Yc%Cc;rr)K7^NX{OKuqRY$=;pk&o!z_vpx`%@5h38 zy0qZhU1GR!nnf1mfk+*#_F#RBYO9hp86X{OfCR9?hoT-`_x1F5stkQ`xyq@v?>x8A zFV75BmVN&5baX)ec4;z-Gv|FOsp7#G)o4RXYy^u%T^dwiD$EE5InWpGc_^C}GEXb-yfJ_;5 zJ0XCr*2%e1f{^yBR2fc-Frhk7Lys4ZGn+F3F%#6Wy4ldeWJ)qSctu(wHLj%_^eEwL z#bjp?K*JQH4zoyFGmC!OwB~@}J-Dbx0T(azj)j;>R*$Hs_I|0QYu2|KY6Ulfc>474 zgHY^5h=w-_31R!nI)Parc__x*+o~r++$r?zwz64 zf2UzR2cG~JI|m&fPdf+Szsu-I)=nWLv#g~VT{S_jTKYxy7q?y^9>`(9qW-g7y&q!A z-ll!?RdQRc@$nGd3|8UaEKncXANjAi$M!$J-c(A*;q`H zP(ym<4Xftsr2pIfB2w#34Ykg~W2KXal^cJ?y1uiIgUvtsjX#FSbtcJL&g*vShAv-^ z&oX-J;jlHhYRCvjs|dXI|H&H}E+h0fjna^pV*Hz@{a~sQB^z{~?ugum`_rFUb$oNL z2Nb6g)6$(?#rpmUkEwGU0tox3KdVWvU*9qobeH*KKP6I23nQSCR-4L4LfGL&XLZ*d zSY78#9_fjQfi}-e=yW|LBJjW;v3V!SDKuD zL4l0Z%@uY|-O%jjYzybw?DM3?XTsZgBl|@K8Fboq6$cxl094Aj!$BIe^9~jfB zJu=fchL{l*zu1Z@6;&hTWPY)|X`lHUFCQD^8uLH)r(WM#x=!#>qr_fg&|xanrKTik zeE*mSelezpOR3FQK+d?+@IEMs#?h#!wa;r{ghhcgCUAtBn%_8N>zAmtma^29Or!V* zr-qI9&3|keIsDz(8(%c&gMg^-PQLmGRmkQz>Mx&cZf5-h2xZ#_elBkRN%yi8$R0vM zXe`rjWo}5QL^)qwnjF%2{}po4^sx5~{5ue&BVwOI=!BnPpYwd*DTMEd;S4PbJo|(G z&osK@HuwZ;5qIK8IKMxuYE{B&t+mQms|-^L_^0)rX-G-Rov}9AoagG*ZAUd%iI|T; zUQ;@4#fE_*06+l{*e43_Ee_Sg%gc7}%+dahEMx&WL|y*-mRhdy>$ zwOWbvuy}M8d}K-uzY5`f1NE{m=ice86BsgCk_vSn4NH%}5mQ>kcTTlZNb>fJ76B7B z3YlDDz(@5r>i2&%32F4N&3~_S-?^3!pk!B`LQ0*pn^q~)?H(7sMLEwu#dK`^od0z6 zW(D$RkQF`hVQ)%TUZq^_aIF|OLw`Nc)r?*a_omYIvNu16JA0FRLOCY0d+P<+W;t@7 z7YaUd=lE}u5kMVt0qJ4-bYQGDl&u*_Md_3gu=k;lY82@@iOrq!S6W|bxoCn>#{CKaw z;z#`N?=SZNM!m@6E%?iVK@tN%_8vl-f1McckiVah6c0-sgMqX#{C_=X_W!@-jX6Mn zYxX7yOD>q=wS&gqNVklWu6={3T!@04Hin!w9)^maP#x4l6Kbf?f<7k0cpw@97Fxr3 zFpv&}ufWi+zoUr%=R1o3+X3XSLI9>1;G#7HC}YD;^3S$iv#h`eHjJ=xu-L{@4}b#z zCiKG!&_CJ#hekePM`ADm7y+_Z0B8V;H!t?zDhf$t6+TMj1ZK=JcFZv>=D5kk_ALw+ z1~S?Q5a9nKt`;$1wLRDWta=Tu+w=S{4=pZ0HU|bKB260?4-K1OPyheVRkD->7p)jz G!2biHBB-eV delta 17193 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 diff --git a/docs/demo/_framework/FlowerBI.WasmHost.pdb.gz b/docs/demo/_framework/FlowerBI.WasmHost.pdb.gz index 6d0810d682d18aa1448be63919eddde59a24cc8a..b4cd3d5edb5f3dc0dddf5df9291ed5441b750c7a 100644 GIT binary patch literal 19043 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 a9g#eKQOmV&@eW;vX$$~Z6-vB_WdHy-kdg=h literal 18765 zcmV(#K;*w4iwFP!000006O?=fTvW~X_g%U}kZwikP7&$uMvz!wX;@em5D=uhOF>FR zq>%=ZP-ziS5v4;BMZlm9c=s-#Jj(O@fA4;F=FZGL-!paQ%$d1!ue^b}JOqFM;ExF9 zbQR@Ud<6Lf&MDT?0A!Y^xV$SIWG2$%Sk0IALcVU`wg-i4PA~u0&LvV*rY6*d zg!m)?x>QamM}u+~P|g_TIDvis31D6*M~rf);sAswM}~5ED0dRr$C4b}2kDvjD+FKw z2bBdr9i(&t6bHPS4{&$~7_bq{Q7KL+)Bx%_gSxIjAOHpi20)C31+ZXY04;b}z#tw5 zz(kA%2ohret0%Ak2n7akn+gkProsT$>97D?dJNzeBNouehykRqVgW_07{DE42yovR z6*q+d#ikel$3+MreGwH$U5imy0W%1oWQGA)TR;F$3k)C!b*)5Q$5Gc$sO$gwg8*!( zoH&jDi-ri8GA05LrbK|BDS&RXUem*SB!J~b5&(vBJ{L)WUX;T#BL!&9$N+n@|2uCk z^Zl#f!BxWi_q|(3!s3_y=L-GDj|^D4LI1U7q>ECg1e6ajM&w3<20{I<(ii*ESIW|-r<4AqDQ1v^E zv!NW%A921TaX18Qv)^$m)J5b-d;)b*27q62usu|c#KHDZ{o}scANSS&xUccYea$1~ z2isczNc=h4$2^EZfX7A{==i=C0JRDZnk%O%A4)C+QL-R{>R)|SJz%^!p5CY`Jr%-qO&WfS#GSJJS?ou1eqSEP%6;SEE zXN^(mj~Q)IVehj(sBjBw0gA@LxBx|iFa|IPfXl|Rm;?av#ZHtDF=N5P2Pn;1u)we^ zD$Hgsi$w^qn|Gp9I#A^;!d69X)lf>9|GD4z&O zNBP7+;UxeUA9#03mH;16vydeq0;IrEWe-QdY@uFAVE;!t%o*KGP9Yx^=SvcCt%7RX zMo*>(_XT;f0nn*)3*#oeNi4}3CwJxg%GkTgUfyjOjt^7M99OmpZ`F8>r=k_)j(?> zzD~9-Fa)L-!WPHD3F+uNd?rvY zH&wV7l0X*$cR)bh_-wt1`2h$nH9amHw~*uoU6$=(e+!y(+uClQb=I${e4c@y+n}(n zqEh@wj`O;QUU>i$ZsUxt2($5az(KK>;1l5E(^fK6KsCRdhX;=_s*p}_cWEE+hMbod z%+1EtPY#Kiux-4NFfUYglt;4*jtx!>P7l7pB8uNhp#_l(LX7vtr`TMJ6)uc+Y^bLy zOLr}wAr57|9^4Q1DnCEVd8juM?f`R#A)rW@9Si>jVghe3lr_L&;OB*exk>#q%BK&r zcZJy^QAI-CF^3)$=p2g!$|Qigo;!C)=IxGja)a?56d%Qa&k%}mfFYGpZ3Od$BV2yf zfrIVe>dVH%@{3&2$;-nP>Zgs0vPiR_AuJ#Xrv(A)U!C!*q14>%;m0>o$YYkA+g z!Q-^&PAl!0IrpaGRlKezm-(nT_mI)%hp!iQh}{xOCsd~C={yu5>z&!+Q7k4ZD0%unFL~@a97=D^#cp~l#DXD}j;uoep|4cajXT%_Iq@$Zh%E~7;i*@IKw)^zcIqxR zR42GT$8i&L7?^so=3vOv5}u!U=qe}ELsI0lxD2l)PJAK#CHHd1oKTdK8&Afqu#7$V zEDx9myGq_xWRGrE^tW#k%Sl&l4UB>cD|$zr^9(bG&iQgk;y0_by;}}LF8*laRkuH1 zeQ8R23Rho$p^{U0OQgE!3G1nK{u^W2Lf5jMFPx#EygJKgN*9?0}#P7#`^__O`Rn32mXhsx)%W74;>bX}gOwRFfET)20^`H2~V`~B&ntMEFf@u;6q zUm&+$*ywwvJXH76FnF~joZzSS9D`!$+17oyn3j_*0`3L3NAfAa?O<~5P**=MCoevI zs6QNmN^Ki1I*dG2%NMbU-E zr@rk^d(ZZFT-~cnQJti>rrcs}*Z%-ytaMPS!YBqg1vz)c*`W@A-%Jj zA+&lEMEAwE6dg&%F9e6&C5;OF-aATKfukbt6u_^>6LS^+qVhs3OG!kR=RNZ(dTjHJ z?2m5PL1b<_?U-_>);*WqXXq6it*fctboxHZrs%m4^D*(00*%D$t#!m6OI2zi1q~v8DT|i61Ft6u% zAY+zhn1bwf>j@#ZFg=nI9el`zAE%7Qc%;v;4f^<;Yf^t??dzQMk}6)VqI7oPo3K}0 zk8nkY?yi^emY)^Inc_$1dY9Ct9sJ~NIn&=eyXdgrDVUHC^|VRGBe`^gmHs@;l?H;Z zeq&mn57cViJ(@Dw@9y-LEQC)xi%;6xdj4m0Z|P-cm(bpC z6SB1h7C0y}TGh`c|bm*9z_-W-?xaH=A^}_3Z|w27~YUbJ*W2 z$!)%(`I@IM5dC^Z-oWjye`mf_@1-zG!bg-<1TQFBl~@tE4Iy^k-%K(5cxx-h)t*N` zqhU97j-`#IH73aNr&t*@$I#;2su?)@M57JbB3@}m^r%2Uy=b_&7&9~+Kc)z4xS;@R z$Bbba5i4)~7UkZb(W2)lG#B)F`EWrz`s!p^oy7PHv*&%u z7fWfKNt6a+SQj#E&JQ-qow?=r78BR>jd6p1%9|Tp-$vv!9#)Qj-d$DmID_+vjQ`3V zj~8W^lWe{^?k;wli<5JaT`55>CcQzj^WXe-Rj*%(yE!N-G5^KaOZP>I;J7>fR-Y@s z*wH$j{kU!MI_sHo%X=(?yxyvBHAIbBy1HE*U)iS4np)mgGr#UXbRAA#%)kA*_I$wl zckNCE@;gi1GTpE0qZ)3GUyTz9o8h|6GpF~xq0qv~2A?>9v9FBqO?As^E5E9HbR~8vl%! z^=YFg#NOWb^Z&+^M$6P8Pt%Y5N-)=s+|R?8XW2!qiw8}o+$Y2++g}-w4J9P>e2a5a zQ=?<~k}cX@ORUvsS)m{s(<=szHB{r0Gu!U>sZkl{j!$Qt*h%?_w6ujpa<2UdT$DP0 zZdB&#&o%?q^Mir|%E<{vS+^p$ZeWz250%8mF`XWEC3rFO6D#zo$IN3MF{kzXq;)?hGn@QLZQ6o@8(1X0 zk|h`p!AuW4xh00EakE^a^hg{P@gbH!b-7$z`V?cwc6YlgpC>bqtTqQeps~v)sG4MU z^AIs-{YkNqZ|rK7c-q=VY*M45XNj}lD_iYmmuzcq*)}cGN>xDaZNzM6gWlL2yR8w^ zX%07^T+Xi9J^r+EVT#BRXJghOk*~C36y@KIKhAe%VJlh(YZT`O5b+e|*IbM{J9*;# zsucTnvFu74Wl42zdk0tg z^<-Y-={2ALEMn1+&0JTZ=-?YzisJTu3ziT z4%2>FK4DuScHi|}o|xHHqO-78Ai9(8_v^=@1u81Mu_1nKCOCmKfXBr}^nj^B+^`#iY* zs-~uPRWHcP%^;pu!&A&h$J2i4&FIRFj{9_ZFGGfuob+8P86V#~=e$I2)cT&Cc|(Va z-t7CiH(3>Ul{`P9zLvu+H8z-D2aPnny~(h|SOpuY} zbeot_RLP2^h68h(a=Ya2W44!%zFm-eG8!glJ=Rrj^1@K7J)|c_*l*p~CC?Bgd{)4| zilN(AG0HHct)n6o3H>i6lYmKyy+L|f<%>x2#Y0Xyje_jvQrl`QWfK&M9i7`J5GzPUN+yi*U@l?r7 zEm|EKr?h*cEGJe&HLkQ+S%14wZ_(RyzPHE120EYO|3pBSd6CUcn*|byO=hcmLw%m0 zF8mCIB1f+!R$skEUFIy!<;XzUCg1~h!T1(kYW`VrEg&MDOf{AnQMH+^SQ>Tfj?UAn zmf-EnEAbaJZ{b~$dlCMzn$l}zM)qgsnX7KsnWBgUQYgOBtPuuLFGwxbrQZn|*15b% z9}OLl6(VU`O-P(_Tv6{w=6>5`8*ejU?zOQ zd(VPZ$Q&0_O@>eq^Q*2M*ThaUtk9s#S%N%NPlu%b9(f5?Mjuwg^!6p!j0H=@z;x&t zj>KeU=+HBs1SOrOC#CNmQD47yDYL~kMW#wa-r`jjIgIC|kQ!E~KBuiRe!=7P6YFeu z$aesIh?qSvKKeS2ol7T&pKlW*vi-`J0X*3O39H(-ZZ=6@!Zyy3ODc`F zE@+_Zb!n7gwX0%Y!+RNZGl!=5c?yM|j67+$lzwRDQ(~}PnomAs4W z)tH7Lak{ab$qw7sa;9@Af3tKn?(Xc(8qy!5d{;n*h zyC`i>bFY=Hl9i6djf){MPg)_iH?m@#i7Bd)4Aw*mW1fF7QO`4hiH>hOH0JTkHOZ*Lbs2t$9<8@n!^NwqxPuIU|y*Ld5*sD#=s%}(^ObnU%_;&1R) zV!M@_X6C0puq)(eH*@mGmU?)@CcjBY6T-gU?s1Tx+ReU~=fk=_ew&9Gr=6UCN|f!-+c_hRPUSq8+sKVXXarAFC`P}@UqKd zMXCn;ewJSnOhAY?bc<#!>#gbSx(upfY+2n47KSM>zzENr{(v{qvXq?Io+he7ez9-|8eI+A1|D}1pgZ(W^ ziTDz(?=L;DZTcskR9-6=#?|9DL8)`JPN&+}>1ytFu*?6Y&r@Gf-p8Gh%ifnav+pNf?QIgo^hzp^Vbzv$dD#VA zeA&q8_>@I7MUMRIPdiTO_GEX0CRY;XIq=`;U6*^!$POLZ2&MY=Xc zQ?^Dw@clVX(~$eIN_eg~J9zGO3Ao#+PLb~|CSDdEaE z1sBffPP}WH=3742l|d~x63*u`&UspKK4`)|d4YO_G!bnvHY$xx84dUrj`X;j=d@WY z+>b<>$NyxsNA4BtU%US7X*1XGgnXh8&4I!AQlDN%=5zUDuPV9NNeEnuT^tSF)OJUfZ zM!k=7_{N0LIG-AK+8f`7PRE!iM^KKhN601%Jm%trtgGpUYO4?QNeLj{W?*^b#hbSp zR?dyLBx0YKnkO>uJq*UdrEC%zRUUK$^Ypo`uXvljo{;3*CMpNVnA1#O#Uma$qRy-Z?Btp3MfHm}dnZghJ57@Vv9)1-5^ndl>D1HvErdSA zJQR{Fyu+0o?DGN&%^Z`=XTR^h6Q8o&suejow<%9YD(&HagT`2o|E>tLWwE|gAf|pk zb=}Hl)^*mhVf^v|Wo*$(zM;N&;)jpzyPuTH!0#tME^BU2^m5sKZ|(^*4CLNDSmiMp zI6@IHJ1YZkgb&P57Xf$kK>pXT&5We9a|@Qyhz7po#<$7oEao#ylRx+#PA*LjuJtAm z6Jlh6ize1@sa?*TR#LC!F!${7xzUqVw9)0hrt5v4!H z{%d+4nrTI;m@iKdZZhy>67K$7sLq`n_Eg5d0o)j8JC*R+gs>+vhYNC|Bnw{*o5JkT z!y1n?HVcY`qP!3_rRYeL?ZF0v*@w(5FXlc*EN_c!tGaC}n^WiMlt7sBs7s_|gwH*; zuzv60MpxvSd)hO<$?TL&?DMWqU3wEb{%T8G{=BO9elo$HO%rqZ(A>40j19ooc*f%X z;)2HI!EdKVS2mxwX(##2H%~cx%0gUfnx`~Wwt@6#B%dRxBkg1f@B9?x5Ey}~Moq^i z(2A;;2+loxZio?c?`NNZ2<8m~96Mq|-H@+U(xJVHlmvZ>9wg3R3h&;os~O?U`2Ky- z>m!R)Ne0$gGj(fiM_5??z zL0QUmHJBn{lIB6kC8r1do~)<$fY`7W0iacfxI~Ead#lu&2!4ULUxg}Hvzs2xD48=g z5j^0REMaE1d+*h>5h~K$>?}g+oSq~hgBXgg_qa=cb2Icg&a^ImPfGV#Q)m7B$e`N0 zA49jMrwxR8zfvT8B=1dn_6(46Gtzqb7^*;67?H#(#Hxl9bl#QB8Ed25PleclfJTf2 z7wY6IVYooHp)jp7(etcA*epTg=e>+zXT3Wgu3ZaC>zcVaRWftdkF?pmX4FrPFFbAd zM<#o%_OqA~Dq{xez}0(w?{otb_C)L28aRDF-&xDZqs@ME-%oRwjPdGvee6pub<|IpJM3E524Y?$#?F@*B9Cll+<9KWKGa@2+bF7WsbCEv}=k> z{J_KTM1AG6kss9$7=w3e5k1tflw5$#M^GUw`NH6ZG6_!>cK60US9!*)kD<-@-|!;K z^0LoO!<`=w3h9*#8JPEXJeq!&5^oXN-aJ3liY)MWHrF_j8k0wEX6&G-`MRu@JhI<9 z?)#}=di|F=$)2Tb$PA4g(M&1hy!SCkjjpjsR%LuB)KQoSrA{&*Ytsu- zMsBT98o#cO8)Q!##4b~pRf0U@3(jOe*Qj%XFiE;WS~2*moyB^}Hv(@yG9xFB3}yDZ zuY)bydsix+?X7)J${p`4!Fbry=k98dqP^Z-SVNA>uFG~k##-Ew&BavYg!|-h!?5lW zJ{=dE)#Z;fEj|Pm>kw{6#wWJ8XXj47UNSYOw#YYZ5F3ibS#9``JfxtvuFll^$USwq zaN-lYQ&S(|_>(o7IJqoLjoMNjO_nfdUXQfdJ6f$Y9(n<5!N)b%zSgRKg=WKkrf;rU z4jRma5}W3{kkInV>-tbYp-AqBoA6?aoJ(XjS>;n$@2Ts-dh!W))Kn#ksYC;(b#-r6 zhOk~dh0laBpU=oinOZZ;@bZU(t%HTKzCm(pE4A+^w4q7x1d}soisa1tIED5#Qx+#90VC_>{4YZh#(A{%C%?K zA=iIwwUYCs^N-yh{rtMcpWl>VULsui-fR5 zxp7TU!LFKfKJ|Wc#nL<{%x&Sm{5X|uV|VtEFf z9Cr2te4hEuZN1Bbr@?q0&vTZFjr-X~y8BIM{+EHI^L^Ve|xFeZ-pa=FKg#I9kX4g>V7)V1m<7etc z)AXr7)Kj;{POY9hafvMp(WA>3#G(1Ym5mbH^U4)TajLqsO77jP6Bq`MGemZi*roC= zgaq|2RO|3qX^CQZ5$>M6ZoVe^7F(x5$l3L0O8?9)X#+aO7#@=ox4qA()RNhd<0bUm zGpbId+1+YEc&$1*x@2c3iX=Vk?#E;E%4kXCg_PPQXANsJa%ioQR8En}Uq%YSJC18WZp7B+qD z?fYQ%r1%H%u{)OLZa=<;&RFJY#F?#V8GO~x7W4S7PuWPK{2bBcUsa13?iRATF4MHyExva1Abk9mzL~K~{d4QbY$HE|a@zi@Ewo0qoH{P-tXzTWT$thCZg|QFk=ZYU?p~bW>svB z;^c9;xy(}fx`E)~<{L__at@yQ)un>93~Ttumm7D#b1jQy$31P98{d0W(!8QJ{at?8 zdC#Ihk4p@GMT25*lwilV}k$*lCO7TW~_p=G#Qps-RE3dHTmvm-{6q`IV z-sj6-twb0%O@vxXy`S&>2A2Ws`EJto7~653k%AJtMGBxrW=Yd8$GrS2{}t zbAmNJu^h3Ja^I8&ma_&*-wKD&rAgq31tzQAa#i$;{;<0{)?k>-P{CM(o1-61Ij1?^ zLHkh^`E=PgJh0ti`w9=x>)&~y_p5#o{2gZu*0n1o%crv1aYbh_>dDmxXa#O7<<-PL zFFl2&dRxUsQgN{tci@irIMGcza<+!auNXHPUtZATk}f%k(=E_NYt#^NvbnC^bg1F- zB;y0yj*J{P!t^b}g59$f%eH(cT6oiUs|tT~3g2FIBXkHb@eB(0FsG4{ihs5nhnE3W zZ?{P+Xu@u3eUzM36n?tsmAO_!+a25=o6E!oEZd_3*g6qTu<1rJ$;#Xi!*o-llq~17 zPvq6v(rs?y6>}7tsvD-~Id-_xB7MITJig>dp~9XAKgfpFJ<38seXHbHS#PgRd>`$ThEL7x64H% zjLGadzl5v5*sxi%56BqYTzrx!VPG1Sd^b|$l&9LsmFM=(H3q~o8o1w-dPWneq`Ukm z+nYzbG+&a1M-qC%R>F-Q#uFPePyX#R!rmx&YzZ65RNA9gNdC2zpeqx$Q)z zJ|&N4W*CwWwzdS9ZaXT~sbRCF$e1vSAfJr=^M);@ft92f7aZ+d0fzu_%*C&gB% z`{ruzm{3M6OI%Q~i{*WqVy)KHTe{wP%TDtq{K0`Jw$UbU^Q;ms9zTp;|^i@~$VZ!|~ zcRTUlPgl-0UXxq8ey?NnM;?_zfPo(^dq#xTV6M%{1a3PbFOBsx-o>1%Y{ON3*V*uM z04>qnm9>wQIPXM)46L+?m&8Z!B&tYIP1@85B@J9CT<^Ve;?>*m2c}7s-)k+WVspo8 zKHzU`wJF!N7h8bl+1PE^+xgu+6vBq;TUr3 zwNDm_n>SM1vq!~*yUeRY?vK{vm^mzD^W8NIU1!Q+X;aZjwtR{8!Hr$ce+^$~K1))Z z`{S+Eq0fCEE9dmog)hdagiT`0;AVspm%KHR!uy&VrQcue^SKV2YsXUQ#P+UO$=jyI z5)rJn{BF~^TFa$nqO2dQbV7P;8SJVeRb3^vZ}9Cd)x;I~zpjwFaV;q(E}KW@jOBOC zRRdqY9oBm+6jMWm$zHL@Rs~NkIK9+5MplD#3GZO~K#o?&CHHx)65huhBCYDXC5f9U zo?WT6ALMrA#m8Qop9`}RUAlH#WhZsgRrmb#h`aGFgOK_8wZ-JU12YeT4+J?}M|!cH3t;0%AI9VV<1ik-7s8f*|1jQPw+;{I@pG}AV{=3z zJ-p8G^CO_XeEam?D1NqZcO)tUK3llkzr$_q1O;Js;u4}z2}wJsq=baHsHlX5y^xTk zsJN)0y^W}_Fe=?v1eH%$B*`bnEh#B1 zVs9e}6BZQ`hY8vW*oq1Y3yQ!*#qC6(P#a+Zdr5JaguNsTaD}=%ctagvfWj%j3w=(B z*B-^0*A{&C4+shZD6`nZ8_Db9yzuHaEQS0`I2cn%MMdmx?Moc#AAcHlum zUJqAqFTleUinNC#+yFUuKLrnO0I`22?^l7r6NMt&LU!UX7*t49NK#A$CMIbElN7PF zk+hW%5w{T*7qk%)hKbnOiHHmQD&{Y|pb(z`DnENCcNk!(FQ=fyqo^crq{5@EWC%J5 zD*^DLprfxOr>hGFMXdy^bo8xMPzi=g`e2IKUn$~$rAYjha==pX-){&We?#cs5JLZs z5IX*b@V~JV{s$|d%s>(9;Q>SN*}1v`07Np-B@GD11VrC4`DevK<=SQ|867-H(taIb z1W%V5*gC@8pa+PBgwF{;0RWIwq`3Pa@YU)oxtWbcI=X)$l-wOqJ#avML7})AJpL>R z|8gdQ{H{uH3UXVGco|O>>Tc%>vwfK!j$Xgt7z z0j!3dmta57rxRuf4~FhKtiQT8H!u;X5%h zM-E1UR+cK`0e1?S8|G+>Qr7e%#+~-&R zaPI|JvE(Ik%(zu@rJ|GMJIt9cA^!tEb+2EgYM`^e4{}+kwIm5UKd2I-bgwn&9f!fO zTohp*FjSMc+xn@wJMSNoKCa38ka@QNSqShN3F|-kT~+OFB<&h*xq#aL%yXZOvrWKv zpa25I>U8{QF!NR@e_G_8WSV(=&w)*(i-7w$p?b{gxI)e7y6u7$ElxgpdA`p@J3r!; z8QmkIkpF?3uA`q9YA$j;;3R9`Gy!&Ghds$Svk8xU$EaRSE1fUazjE3?GOpqZx3K}w ziSKhsfS=w5x$OB|5HfD8&?;0a?2}ks@jRA`CfvaRgdS5bzGe41u(2~LU8D*j`Rd_H zE?c)m-`e~qpM5B@Lf|2&;rbaLsB&~>n{PiN*@OZqviQ^D|D=(N#@I$cg9UgBKB;ub{iNg7r2s~vC z`;9hs^74kd%0p58%!gKC`#^3n>=l3o0(31s*J^&lqEbt8HumGgt*+yN2lH9nTp6go zg5@a4=67@DtAYi}dRCjMeq&6W+=YeyZWXueo^%k{Fn`zZ;pJ4t2-W%2SG~%Ue**Pk z4o)aBIIP^rL|Y43xhprOy;<{bsomwwVf`7Avf<`s3rDy*9Zm(Zd#f2>RoYJkEQZiE zXxuUrxuo6KD(((LdLdDhClq0KKxvk^@Ez!c0H6Dw@$Fo8(F(hdkT2(PsW^D^0cDvf zfQIK~-65mq5y}&-| zC!4pt!nyfjqxFDT0q%P6_61sJ*?J=opoP1SoqXUQ0oJs%3J=5ZQ?zF7Q~k!UWC6Eh zu=@bxpqJaAfIBHsNk+JE>fF(+EKSdNhj$D>&CSgl3AJ%O?0N0!y+yzp0*t5Qx$hCZ z(9D0-NSe6%RNxq>HryS3?*5kqEMb5B2$s`kg5u58l?CP840($)k}{dcU=2KAwoXu2 zCx6&s>thZk-v+^13U?+n6B*=^ziMMlQ!qk)fe$8WEw~-bl~2yy9gc(^tuquyXBFrK z0FzvTewOuhos@yEeq?EDEUgW#P&|M)LGRPz@o+;w4;V_sP{uy;*Cg+z zC)N$jLI9tYkvVgx1hr5|kJh6squ!QQ51W!uX;43tHrpc`2MYH}Q{-t>=lN+9bly|5#3`9-pG^0;^@MxM# zO+TOn`wgs++plum4Y-mA6kq^L8slLMO`V0FTd0zl6IhWyKvFk>nj1M6T& zRYH&%qoSFqGs&iFzWwGXcAru!3oi#OmNyNbzqDhedR=#M65?F^(jlc2)WIF@g>(1;U_Yt9(D5P_{rO zBU95Y_37hazry=(!yHO;`B(!u+tliL555bmR?S+0cE59X{CErpaJD{pK@0t6)jk6c z)8%Vm5lDFAtMS^`lWi;5rybh~O@ufBq9EDh}hw6lqfHEQuDyNgQxsF z&&cN9d!r|HckOWQ*(WM6*3Sgh`p`)Y7X{e{ouXAdcSZw(mxtUDP~YDinVP22o%clr z+mY~*l|r1KoaAm8_w_%B|57H+vV-$r-$`Y5N58GVEuVHHnIJ1T=un?2`nf~hP#XX6 zJ-~gC!Na~jFtclUPtM638!HE|MPB!~5pH|{0vC5s)PRulau+;6WH9TNffX(fD?E9^ z5h5Rx?&5#@-InSf2t(*$cix07yauz7H;u5>FnXq5lWknL3MrmF0H~l}Q#@SBDnMOf z;M9ItsYkZ{H6ZxBWu&;nttzF8yBh0}^2}1lg7+cc=&T|^2w9f6xvJEHTE5tY={R6S z9A$SY$`yg z&JtJfboCGI2K`niohx+C$3qWH5qkVs5HmR9SN^!~wQ}8DzqH0DqMG9|zisow#n6|_ z*&y77M9H8~dq(NDF+RcA#@n;U!_AyLKn@4k92bWi5KA3$Te>85Mz$(I+qBu_RN!yy zKHc~L_dSrVf-y1Q$gV&!nr5+fPBYl&H{Fq9$=QP11g%NohZF5oTg5iWfQyxs?L_uD ztyIF?Xk*Q(PscLYhgje|L-!%Er$^Fx?j41Oh;`emPD(b%LKG3GQE){2iNTCwKyZQ6 z16Q_aY4uR|6xOvO_vB;2e+?sE9`7y?z2(KT_UTfnT*Nk}&P1-m+hfrtP^7KnFU3_E zn}QxppRkhjsoK4@vloSy&pFht{)VcdrdIH!UIQc?0d+X+iJ(Wzo8XX&zeC{G(F<3N zB<|Pz$v0^B8>a*N7* zb#niO=)Rm(1Dc8W@mw`&;c@EOsv&l5%esR9M0g$Bk=3MgJz#FOPZ_-PhWgdo%&#^_ zj(vjtiQT8}ztXo3)~e7^5XZG#L@ignx|>;KQ~Wozk-Hnz9n}nW`_(f*B4E%%36Lsh z8U*ti;oM@f%r;Q0cobw>Z)Y@cfYx+!_dK9f3a`uo_1^h+4Bsp_`BblGpRehRCBi;R zsdV{p5FD27>h+LyaD7H_9y`Cz=$*o?jmXGlj(6clQMynB6lM7yR=<15w*<`S>7|YN z1elq2UBz70t?)SfqYyoB7{c#}RSt>xybfX>F196cU6oYLSDf`cFDe>$fZ4D30c~iH z-)nG|n9AjxOyn$4DZr|u=eT7;dO)iUJ6u+@H&!izZF4uj?0)-IMeSm&Wq3AX=+hBG zRV4CoC0ZTEz6`FTT-wv4uyBkNiY=}he|jo0_9yj`J(hxasRFR;c3)ZOU1#D`Z%?Wt zKh3bG^9SUQd3%c~^(TnB&QFL;zU!bA65&t2C87HK2ucg;^s6;**kpk%0|oYI2`UoR zq6nXvZ!W)cJwgq>TCNX64H@qv>OI9_Ck?Fpx<0eqN_vX+&GDp)IsG<|qc|86d_f&l z3E*V(8{2fdEE3FftI69478IeKC@}SLn`)`-2v+y^L@Z7{h}HzW#t$?y*qs$ilgmZPj8slFPju;vw)VtQzy2!pFAH`$(Zxux_y)8?h%9m47CV#LLN%h z-RIC(pj6FDjc?x<_mK}7*i;EKA9MT%0^#Fi3)6)={aU%sg~cUG$fG+B)O` zSoAc0%}&pRcA8;4(Mb_~ ztABz~*6roPhVU0ByA2{<`Q@K%z+6*Ed@3}+!x;Jp;;>f#D5+gZNdyR$6giKt(vzf7 zn$3KXua#K!c<8~@Y|9ahUQ_SI>Ezqv&o=|+Fzx|U z?Xb1f46`F4*B^be{3o?BsuAG7tfPl@?eXA3!D4Z_oN~)Rt$N3`&Z3A-;Q*y$1MW{A zUGqw%JX-+^#e3y#zShiFoqA)OE!YzNnZG_I!3Tcb0i4{9wqS`r1=?b0@LGfg)ICzV zbD64eDGm?%H+r8w(7&b*q}OgqRd773Ab%r~WUp3WVCrvrCDbT705Q~m%LnVEbtU)G zg{Scfxfym5?17Bq{{m9eJotpb?`(T_KR*Vuji@^9iqwr#C(_H^Mjh&_wC2zV;KBtJ`N78rh-szveY;C`pwnL9#MDu z2^M_%8~Vp1hn;-v6!39H#+%OPwm;MrYn|3s$x9_I{|5f0b9lPLH_&?5rYq5thFBpq z;YR8k+X(W%q2La}Uq#k8iTsXUH?4|1b6~7jx%KUZ{2Xq_*I)4cC!k)a5cK!cg+^lL z4(ocvqn0Q!;1o=Z}IjHhy8E$VS3>?Y>n_SoUl=I|302YSs5WoURo?GLBq2mSDT zkO@y^=3NQC4E3hIn(MO;9mxNS$^OQv!l9T_JwXdu#xv@iV2mvF^fVvM_m^L}{=sFR zxX{`A4KPatoca)311-{(D_7fAmvv(f`h)ndu7ML`jf0t-UF|~}`h3@j7XI>`e>h6} z58VEv#6!@K%UQIQc8Nfq!Fy~?zOAM4!N|ZQ(I23L&F5d$+XwGzz1sn|QjN6hg4#-J zbqYS{+<#yDAmsl5t3!RD2DS(%kHaA}F_^Oh%A^8mF|TfSzd}f9rlyMi7Vv-YIY|F| z=7xOlUIHtH8D*GmNHwYvEX&*C9q96BOQ856oKQ{pORrLmcfA0Dv4Bq;*B;P`Uev0< z+T`oB%a{HGrwKnI+Otm<(EATh6pe4>Yv`)p(X{{JNA-gI56mALe2`M~D>yUvzB4q; znI%*yAY*CCN@(!>1BI%p)1NEWd5Fm}m|+#C80Xl}Wcd=Dq%#a}+(Q2oy1&py{@$p* zn0_Y(Z1R59Q(aV1RsBjplsvv~XX)Z+dV z|CciQ{^c|JnE1i?Pfg4Bqo$s5c>)-(T!Rd9tm{d#0QYCF^hg6OOV zgoVi-siu6oIe?YS^5HKK!p{QD!JRj?S9+IBcJcx zL_ba`cTpni)=*AIWZ>u_oO%9}hmHr#-N5Ux>)6L%HG(XJpO}m3&z?|dh^5XkrT%&E zKUw@Gdw{862*_ov+yDFd6b{*_hKtZljL&!flZ&aSfTRKpfpoG5Pw)KVC8i-?2=X#F zRmV>(=2Wj>d^$w$**NeguY(bM{^=x0P1^sm0XM%)opf}y+0S-3ZH~6YKYFOBY z{xK?l;?V)v{zpX*pr&iZ=(+SNp4&((|8v=7jPG9L-tYB)LD2y+3C;E@dEa>aeLiEu zMif0G?P>E2;>~s`SCF!YsjEM={U_?5o66JoIM5GCI-j03+mO;x>~Q>?8!mCa`v3!O z2LBc*@QYLEH)apOnh(j*R{Q!XQ?t}LF2%cPkBfFZKR-AYybpm*=r({5s&KgzPL`x{ zDH8pgrkJ<$kA?g-=Pp&)uY>4w%^&nIUkAx1&Ktkv3MCRh4t@0Gionh2O0X-wd`RYW zn4wZlBzH=}x#R3|6n8}1ekNe-1NUL#4VIn`i_B;?Tk<+SSV;CeO0Exc@OFhF{@%QJ zHztE#1)jundwnARmfX#y_~-AFRY(rOjtG>ghHgzqsJlDt*A{sS!ZHKBsp7!b^>mzH zAzQA(#Mu#Z;4j=kXD<>y2D5oaq#BbVZ!McF(wdRPKF;zNxsDGE;fmgzIzYCndZ4XC zKB5)|%E>aF^!GjdC)4$!{z4i;y3L^{L< zto{pnAB1@4UJPbwwHqXisBWb*Z+kbN^ig1idIbM z&_MRy@7(+slrH?&TxYUPhL&*;GX%xR+Yp7Sw9jHQeD8k#jYQ41hlb5v+Ya=i{`ro5 zuB)erddx>W*sJj}j6)Ctin5dc@jO~4ZLb#nc!0#%w-XavHf*cBnsjI2{&5IR`0o=Z z?)qEL!HSu6JnbQGGgFMSan%$T0#Xie#!y#pn4!1FuWd4DY(IL%)vqixT$CoIaX*lq z>pEK#&fzxeuTjRm_G%9#%%bcy{??Av%)1$-kDKt_?Fb>bGi8Kya{aBHaid+(#$zha zoyK}VQMM+dy8f0}=i%(~Pn9aVQiC?1-z&%ou}o-ah1p%)Ony^%xXbt3RPnOXML#qz zRXIcKf!U?glnj+ljjn!kgz(5NWva;eW{@q#;|Dfc_rla_U%glw{?>PtdVhWOj|C4k zG~hk>_0`yq2KSUK&dNuWKXGl%y9PUgI?kXJ)9phqagwd8KVDVjlTBqeezHzHkMuF_d?_56vs82MK+SC2y6T>k)#zIa=Ye$?W*Vsq#FYq?vl z=g-mB$=>}Z=&*#pYSkJ+wt$|l<<&ob;Et2eTCyGDxpdv-C`=cMbUYxx_4Y1${-~%9 zrVw}(t(q!oeG^eL5Bx>`XPve<3-6cr8{0Pvw-jrzxzOFIGM1e8l>(OgDgTz;I3aV{r;C%@aIQKg7YfcQgS=R@(1>AZ@f zmD8v)gS(@|0B{2B69YJyBqZoBETdy!fbO6*kDj+VIH*H-Q=B+r6 zmK|4>AV0FQF52E_TuOkJeQXjE(!=|xKM@21B*a6K zMS$oq`y9k_OHeJe~VI3;E+0>D`INR`Tzc>)Iv*_bH!mV?{w(PoU`oF zZe4b1?cRnp>^R&f#>K=1KD(T$9vpp)pkwD5SfMn;{a{D4i%Bsua55Nif@FCZ5`pqe zxr|UrB^D_Og#W~t7({UK1eq9MG0w=6&Iqbimi-19dZ1e&z(>rZ)9f;gN{tVIjRP)-Rlt;^ z477)nNr)XBLJS6sK+pLD!zctAwv22HV0XxYgn;EY6N4a2CFm4<6%fG$3guu%2IhPN zAqF;vLLSg90Sr==|9<^rn& zeufxs23U}}b275BFmV_#c=G{EeIX{0Fe4~nz^+jNh6;lb3owxMnHUrqY(U||kjx;= zQVCQ5I>26%i9?W$jR|x~1u$s|6mmfBx?p$$#LS?B_CcrhgOAupr!#=`Sq20R1E!3i z%86@Ad5?tUIDnKYzFlDR^p)|mhsS<=z2T_XVD)PK=KWYOrMmQ6P z3iu8YDOfauECUrh2|yeKiY-uB@xcz9faDhe)cg_~s34W~-9USKwqaV#8lF1kn~n8m zDc0@^m)m<{*f$v03Yc;_78GFDJ4xZ`Vx1L*lQ@sxaVUS;u-s0hS@&XvbGhlI$ejkJ zt_k*MxWNZr;moPA=M)yK-Lo)5^6t4sI>Te&g7@LgN*WY0P+|m IH%Mgw0CW-^6951J diff --git a/docs/demo/_framework/FlowerBI.WasmHost.wasm b/docs/demo/_framework/FlowerBI.WasmHost.wasm index 2b13a19120b74dbcca09ad559c98c5057b6eb79b..3639f959b3347afd2d554ad14ca80fc0ac5eee27 100644 GIT binary patch delta 1048 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 diff --git a/docs/demo/_framework/Handlebars.wasm.gz b/docs/demo/_framework/Handlebars.wasm.gz index 1322416cc08d95bb3a397004c91e0504216cf23b..e660dd94ff579034ee05891f6b7d8b694aa49a95 100644 GIT binary patch delta 24 ccmZ3njD5v2b}spD4hAq_Zsgj^#VB_f08c6frT_o{ delta 24 ccmZ3njD5v2b}spD4hAp~Zsgj^#VB_f08gp~wg3PC diff --git a/docs/demo/_framework/Microsoft.AspNetCore.Authorization.wasm.gz b/docs/demo/_framework/Microsoft.AspNetCore.Authorization.wasm.gz index bc89dd5e4d544b8199f758611fe0219a6ea0925f..d46d83fa7d8ab86b6cc6c2e4d55f4a82878d88fe 100644 GIT binary patch delta 21 ZcmccL$#}n$kxRatg8>YfH*#Hd0RTjl1!e#M delta 21 ZcmccL$#}n$kxRatg8>YLH*#Hd0RTkg1$F=c diff --git a/docs/demo/_framework/Microsoft.AspNetCore.Components.Forms.wasm.gz b/docs/demo/_framework/Microsoft.AspNetCore.Components.Forms.wasm.gz index c87a0ea51aaa352c9519325029482778653ba3f9..11b1a538692d5f070c46e5ba33f266fcc15db55b 100644 GIT binary patch delta 19 XcmbPVKfj(!zMF#q445}^O|=IAHC_aZ delta 19 XcmbPVKfj(!zMF#q41_mwO|=IAHLe7k diff --git a/docs/demo/_framework/Microsoft.AspNetCore.Components.Web.wasm.gz b/docs/demo/_framework/Microsoft.AspNetCore.Components.Web.wasm.gz index 0e0c940d637b5f45c614dd68ced6ec645049702e..f513df75d783a1b254168fd730f83196233ec831 100644 GIT binary patch delta 21 Zcmdn@hk4&0W-j?|4hAq_-pFP04**Z<1}6Xj delta 21 Zcmdn@hk4&0W-j?|4hAp~-pFP04**a)1~&iz diff --git a/docs/demo/_framework/Microsoft.AspNetCore.Components.WebAssembly.wasm.gz b/docs/demo/_framework/Microsoft.AspNetCore.Components.WebAssembly.wasm.gz index 54a66ee3e0d67fa9d075e5110cd27963e05fc626..11657e35ec25e54673b8891a1f20e951b13665d0 100644 GIT binary patch delta 21 ZcmZpB!PNGGiA%nlg8>YfH*)>i3;;!-1_}TG delta 21 ZcmZpB!PNGGiA%nlg8>YLH*)>i3;;#&1{weW diff --git a/docs/demo/_framework/Microsoft.AspNetCore.Components.wasm.gz b/docs/demo/_framework/Microsoft.AspNetCore.Components.wasm.gz index 6ecb9d92d764856df95c0dce6a7d90add49f9cd8..09340293071ae01c519540312447bd49bce3e74e 100644 GIT binary patch delta 24 ccmccif&JPCb}spD4hAq_Zsgj^#pv?`0Aw!)=>Px# delta 24 ccmccif&JPCb}spD4hAp~Zsgj^#pv?`0A#NQ`2YX_ diff --git a/docs/demo/_framework/Microsoft.AspNetCore.Metadata.wasm.gz b/docs/demo/_framework/Microsoft.AspNetCore.Metadata.wasm.gz index 66e06d7ae117343c3f2ab72cee08c70275a36436..7814cbe2906c577cad6de48026b92833730d1ab0 100644 GIT binary patch delta 19 XcmaDQ^h$_JzMF#q445}^C2#@&Fwg_s delta 19 XcmaDQ^h$_JzMF#q41_mwC2#@&F(3o% diff --git a/docs/demo/_framework/Microsoft.CSharp.wasm.gz b/docs/demo/_framework/Microsoft.CSharp.wasm.gz index 218d1c126abeb04997a40e239ee7768ea86fb053..3ae510efa1deb360f8b922a572726c6c76d90de7 100644 GIT binary patch delta 26 ecmey_!11$zgG;`fg8>Yf8@XD!7^iYEYL8@XD!7^iYEZUy}S diff --git a/docs/demo/_framework/Microsoft.Extensions.Configuration.Abstractions.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Configuration.Abstractions.wasm.gz index 05748e56958212f4300fbaac89ba044103b41051..390b0f9e2a3e4b313c31134a3b3ffffaaff0be35 100644 GIT binary patch delta 19 Xcmexp^U;P&zMF#q445}^rON>TH-iLP delta 19 Xcmexp^U;P&zMF#q41_mwrON>TH`4@a diff --git a/docs/demo/_framework/Microsoft.Extensions.Configuration.Binder.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Configuration.Binder.wasm.gz index 6ac145f51a604ab4c6d844f80dcfb953bed8cc19..de4644ca774fcaa86f24e96229dc7311d83b0a58 100644 GIT binary patch delta 19 XcmeyG{WY6QzMF#q445}^y*32^KX3(G delta 19 XcmeyG{WY6QzMF#q41_mwy*32^KfncR diff --git a/docs/demo/_framework/Microsoft.Extensions.Configuration.FileExtensions.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Configuration.FileExtensions.wasm.gz index a31bfa3e8a95ecbde1ba411174575028ade1f7cd..395a0ba50ff805b79691d27283a03b86ef7be964 100644 GIT binary patch delta 19 Xcmexq^V5b)zMF#q445}^<;wv8II{$D delta 19 Xcmexq^V5b)zMF#q41_mw<;wv8IRgZO diff --git a/docs/demo/_framework/Microsoft.Extensions.Configuration.Json.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Configuration.Json.wasm.gz index 79bd7cd552ae4ac3b10ee080858ebca74f367d9b..1021b614960208c94255e51b8ebe1f325f0ba7c0 100644 GIT binary patch delta 19 XcmX?Ob;gQIzMF#q445}^ImrS5F~9@n delta 19 XcmX?Ob;gQIzMF#q41_mwImrS5G7tmy diff --git a/docs/demo/_framework/Microsoft.Extensions.Configuration.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Configuration.wasm.gz index dcdedc3cf452a612a39850921134962d6728cad3..724e939f0c4e56b5e509ee4fb46a698c9b8a32d9 100644 GIT binary patch delta 19 Xcmexf`n{A(zMF#q445}^y|n@WK@|mh delta 19 Xcmexf`n{A(zMF#q41_mwy|n@WL1hJs diff --git a/docs/demo/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.wasm.gz index 5a31e3ecc235ac0e1c87ca7e0c367ef8be9717d9..7e9b8706960ec9aea790b2ded623324a2dba5c5c 100644 GIT binary patch delta 21 ZcmbQSh;hauMlSho4hAq_-pIul2mm|Z1W*6~ delta 21 ZcmbQSh;hauMlSho4hAp~-pIul2mm}U1YiIF diff --git a/docs/demo/_framework/Microsoft.Extensions.DependencyInjection.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.DependencyInjection.wasm.gz index f6e6120d51260495b86f9cbe1c25d037e85b5334..abc4908ca9f500f590d9a9ab403e45c19a307ca2 100644 GIT binary patch delta 21 ZcmZ28k!j6DCNBAI4hAq_-pIA60{}hv1tS0e delta 21 ZcmZ28k!j6DCNBAI4hAp~-pIA60{}iq1v3Bu diff --git a/docs/demo/_framework/Microsoft.Extensions.FileProviders.Abstractions.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.FileProviders.Abstractions.wasm.gz index e12a2c0885f0cc99f7cc40b9c8504ffdee137d03..bed9a40f7c5fa3ae0ff4e318f29b65a672107f8b 100644 GIT binary patch delta 19 XcmaE+{!E=qzMF#q445}^-4O-=GzY=P diff --git a/docs/demo/_framework/Microsoft.Extensions.Logging.Abstractions.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Logging.Abstractions.wasm.gz index 968bc6fba176ffa51a2dc2a22953d52a17c8ea62..ab6876ab1f78dbd3d567f8e00449853fdfcd385c 100644 GIT binary patch delta 21 ZcmcbYfH*&pj2LMQb1+D-9 delta 21 Zcmey=&-kgIkxRatg8>YLH*&pj2LMRW1-<|P diff --git a/docs/demo/_framework/Microsoft.Extensions.Options.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Options.wasm.gz index db90ad8b32d0ca39d6c8895db486517452fa7c90..f65e6dbaa3dd88f06e0abc07649adbfff2cd5ab1 100644 GIT binary patch delta 21 ZcmeyrmGS>pMlSho4hAq_-pKVe3II?h1~dQw delta 21 ZcmeyrmGS>pMlSho4hAp~-pKVe3II@c21Eb= diff --git a/docs/demo/_framework/Microsoft.Extensions.Primitives.wasm.gz b/docs/demo/_framework/Microsoft.Extensions.Primitives.wasm.gz index 38ff93569592a4c05d00e3fbb5f9ad0df4458d2f..3dd2b47cfdd84db6ec36235d7885dd6883e9a592 100644 GIT binary patch delta 19 WcmeAz?k(n$@8)0t1Llof&6WT$6a+T_ delta 19 WcmeAz?k(n$@8)0t1L2Ka&6WT$WCTY5 diff --git a/docs/demo/_framework/Microsoft.JSInterop.WebAssembly.wasm.gz b/docs/demo/_framework/Microsoft.JSInterop.WebAssembly.wasm.gz index 412233abe63e0ab9eb1f61ed004156e67cbef8f9..4e7185c9e1b0a26f614b265b9cc61a333e510173 100644 GIT binary patch delta 19 XcmaE9^3sG$zMF#q445}^#Y+JIH9rI{ delta 19 XcmaE9^3sG$zMF#q41_mw#Y+JIHID>7 diff --git a/docs/demo/_framework/Microsoft.JSInterop.wasm.gz b/docs/demo/_framework/Microsoft.JSInterop.wasm.gz index cb25f0771aa5942b3ff9ebce51c0669c2ac5eb9e..4b7db12e7adae929403a1244fd4545e923a02937 100644 GIT binary patch delta 21 Zcmcb;oALH;MlSho4hAq_-pF+^763~_1=j!o delta 21 Zcmcb;oALH;MlSho4hAp~-pF+^7640=1?K<& diff --git a/docs/demo/_framework/Microsoft.VisualBasic.Core.wasm.gz b/docs/demo/_framework/Microsoft.VisualBasic.Core.wasm.gz index 42542a4b36a2f30076fd17df549984ed5f4db5f6..3f59d5422fe3fd94299ae7be1da0c1b71e5af990 100644 GIT binary patch delta 27 fcmbO}gKPQ>E-v|Q4hAq_Zscm^V%*Bb#M=V^S(62) delta 27 fcmbO}gKPQ>E-v|Q4hAp~Zscm^V%*Bb#M=V^T0;f5 diff --git a/docs/demo/_framework/Microsoft.VisualBasic.wasm.gz b/docs/demo/_framework/Microsoft.VisualBasic.wasm.gz index f8dcd631a597bc20c93ee08f70fd2288a9090f87..d69d68a9cd6db03bb22688cca63976f34e3d10d0 100644 GIT binary patch delta 19 XcmZ1?wnU6ezMF#q445}^NpS-JCiVjq delta 19 XcmZ1?wnU6ezMF#q41_mwNpS-JCq@G# diff --git a/docs/demo/_framework/Microsoft.Win32.Primitives.wasm.gz b/docs/demo/_framework/Microsoft.Win32.Primitives.wasm.gz index 07953b2721831173738f2293ed05ef6d3f8c5ddd..e74077e011ace7c63ab07e1ab2ecd513705fd1fc 100644 GIT binary patch delta 19 XcmbOrI6;t0zMF#q445}^wQ&FdBvAuP delta 19 XcmbOrI6;t0zMF#q41_mwwQ&FdB%uRa diff --git a/docs/demo/_framework/Microsoft.Win32.Registry.wasm.gz b/docs/demo/_framework/Microsoft.Win32.Registry.wasm.gz index d8f4edb49e2d20d4d1a15f65c6386c588cee1522..2adaa2b9ee7ce338f33a64ed735aa08d9025677d 100644 GIT binary patch delta 19 XcmccUbkT`RzMF#q445}^xhnzyGm-=e delta 19 XcmccUbkT`RzMF#q41_mwxhnzyGvWjp diff --git a/docs/demo/_framework/System.AppContext.wasm.gz b/docs/demo/_framework/System.AppContext.wasm.gz index f874f14189576f67114282675081454b955061ab..73426a84a70c96031ab8b449af7e2382de9266fe 100644 GIT binary patch delta 19 XcmZ1`uuOnUzMF#q445}^$#4JwCUXM| delta 19 XcmZ1`uuOnUzMF#q41_mw$#4JwCc^_8 diff --git a/docs/demo/_framework/System.Buffers.wasm.gz b/docs/demo/_framework/System.Buffers.wasm.gz index c2d0705b6e337bbf3e33ad700ebabdc335f33986..96f9b4c3a24929ddebe151a41bbb67f224798d83 100644 GIT binary patch delta 19 XcmZ1_uu6bSzMF#q445}^DR2M)Ckq1? delta 19 XcmZ1_uu6bSzMF#q41_mwDR2M)CtCw2 diff --git a/docs/demo/_framework/System.Collections.Concurrent.wasm.gz b/docs/demo/_framework/System.Collections.Concurrent.wasm.gz index bdfd99d46d29cc4d25bcdc733f05203838a52638..d38f87255e8278b21f88a89f293c2d608ee979e4 100644 GIT binary patch delta 21 Zcmdn|hjH^CMlSho4hAq_-pHj{2LMfB1%dzo delta 21 Zcmdn|hjH^CMlSho4hAp~-pHj{2LMg61(E;& diff --git a/docs/demo/_framework/System.Collections.Immutable.wasm.gz b/docs/demo/_framework/System.Collections.Immutable.wasm.gz index c2a3ef58dca8bcb558b845d8947450de5c66cf31..adbfb3a8ccb9334026f539a2d096ddafb35c3caa 100644 GIT binary patch delta 24 ccmaF#lJ(I`RxbH&4hAq_Zsgj^#dxCx0A*kX_W%F@ delta 24 ccmaF#lJ(I`RxbH&4hAp~Zsgj^#dxCx0A=6@2LJ#7 diff --git a/docs/demo/_framework/System.Collections.NonGeneric.wasm.gz b/docs/demo/_framework/System.Collections.NonGeneric.wasm.gz index 5945b48317d2d595564aa7b8d8937113394e728d..5e4d781bc576429f14e99c661244a491a6931f7a 100644 GIT binary patch delta 19 XcmZ3Rw>FPUzMF#q445}^DVqZTG$;fM delta 19 XcmZ3Rw>FPUzMF#q41_mwDVqZTGYfH*$TO4gfrM1#AES delta 21 ZcmZqJz|^pTiA%nlg8>YLH*$TO4gfsH1$+Pi diff --git a/docs/demo/_framework/System.ComponentModel.Annotations.wasm.gz b/docs/demo/_framework/System.ComponentModel.Annotations.wasm.gz index b2f4883f4b9a87f7c6e59e7a935991eabd0c4772..5f53060687865b153eefacc409c8f88da466e5b5 100644 GIT binary patch delta 21 ZcmZ28iD}IwCNBAI4hAq_-pHlY2>?AF1f~E0 delta 21 ZcmZ28iD}IwCNBAI4hAp~-pHlY2>?BA1hxPG diff --git a/docs/demo/_framework/System.ComponentModel.DataAnnotations.wasm.gz b/docs/demo/_framework/System.ComponentModel.DataAnnotations.wasm.gz index 72927e0da138af690655d9898e6e2120bb1de662..09e459f9ed6c273defe2a8fd00dfbfb9a1fd6284 100644 GIT binary patch delta 19 WcmZn_X%*p;@8)0t1Llofzc~RU76Y*W delta 19 WcmZn_X%*p;@8)0t1L2Kazc~RUW&^xvzMF#q445}^6-WU9H^l^D delta 19 Xcmexm^2>xvzMF#q41_mw6-WU9I28nO diff --git a/docs/demo/_framework/System.ComponentModel.Primitives.wasm.gz b/docs/demo/_framework/System.ComponentModel.Primitives.wasm.gz index 0f6db765a835c39987d56f315dd3017106a350d7..942dc8ba5dfb8837d8944553f168aec0004aae87 100644 GIT binary patch delta 19 WcmeBA>rdm7@8)0t1Llofti}K?paY!% delta 19 WcmeBA>rdm7@8)0t1L2Kati}K?@B^&? diff --git a/docs/demo/_framework/System.ComponentModel.TypeConverter.wasm.gz b/docs/demo/_framework/System.ComponentModel.TypeConverter.wasm.gz index 83d07b616ea231b69fc8ebb9e478c55c9140c622..cf8b6f84439b4100f030e7de7128e51b2849fa14 100644 GIT binary patch delta 24 ccmeC5&fY(rolCx(g8>Yf8@aY}F}9ut07(V~wEzGB delta 24 ccmeC5&fY(rolCx(g8>YL8@aY}F}9ut07-@g#Q*>R diff --git a/docs/demo/_framework/System.ComponentModel.wasm.gz b/docs/demo/_framework/System.ComponentModel.wasm.gz index 0b74c91654307f17d5c6aa5b6033c7cfea7d9532..c58eb6f548717449f8862e51b8caed711798839c 100644 GIT binary patch delta 19 Xcmew){7INgzMF#q445}^z2F1@Ga>|b delta 19 Xcmew){7INgzMF#q41_mwz2F1@Gjarm diff --git a/docs/demo/_framework/System.Configuration.wasm.gz b/docs/demo/_framework/System.Configuration.wasm.gz index d2c38acd032f934004f847cf80e044f7d2cd7910..9ad9a8c31b4282c6e743400395f722fe9b103634 100644 GIT binary patch delta 19 XcmbO#F;#*~zMF#q445}^aq|EGB>@8L delta 19 XcmbO#F;#*~zMF#q41_mwaq|EGB~b$W diff --git a/docs/demo/_framework/System.Console.wasm.gz b/docs/demo/_framework/System.Console.wasm.gz index a4b27105702ed20132c7da0c6e3a21651933ff15..59d3ed3f6c494bc3c197cd4966c9f466a94336e0 100644 GIT binary patch delta 21 ZcmcaLi}BVhMlSho4hAq_-pCc;3jjq$1p)v7 delta 21 ZcmcaLi}BVhMlSho4hAp~-pCc;3jjrx1rh)N diff --git a/docs/demo/_framework/System.Core.wasm.gz b/docs/demo/_framework/System.Core.wasm.gz index e749c4f00413f6772199724f443dadc50e9adf8b..2d19caea9cfd94da5ca568605d01e83706125121 100644 GIT binary patch delta 19 Xcmdm}yiu7;zMF#q445}^Ef)j;E2IP4 delta 19 Xcmdm}yiu7;zMF#q41_mwEf)j;EA#{F diff --git a/docs/demo/_framework/System.Data.Common.wasm.gz b/docs/demo/_framework/System.Data.Common.wasm.gz index 08db37f70ea25c70ba3ea43d44d779fc5d41b249..a6eb9e85958f29df1f700c3a5d4cd30a5438d843 100644 GIT binary patch delta 36 ocmZqsE!Os1j7z?og8>Yf8@XD!7+blRTDh28xmdPxvDWMb0IXaHyZ`_I delta 36 ocmZqsE!Os1j7z?og8>YL8@XD!7+blRTDh28xmdPxvDWMb0Ii$|%m4rY diff --git a/docs/demo/_framework/System.Data.DataSetExtensions.wasm.gz b/docs/demo/_framework/System.Data.DataSetExtensions.wasm.gz index 7e5036173aa52579c0da22bd30b1edca71218ee7..1ab1b7ef38709746289f9c65e25b2e000b745707 100644 GIT binary patch delta 19 WcmZn{Xcyp;@8)0t1Lloff7t;e*aNKq delta 19 WcmZn{Xcyp;@8)0t1L2Kaf7t;fC`-> diff --git a/docs/demo/_framework/System.Diagnostics.Contracts.wasm.gz b/docs/demo/_framework/System.Diagnostics.Contracts.wasm.gz index 645f1699f9a40f0e7c4a5e07690ad71b51fd6608..d4830ebbf139720444d371f79b6323b1b3ea008e 100644 GIT binary patch delta 19 XcmX>mbWDg#zMF#q445}^*>C~?D|iEN delta 19 XcmX>mbWDg#zMF#q41_mw*>C~?E64+Y diff --git a/docs/demo/_framework/System.Diagnostics.Debug.wasm.gz b/docs/demo/_framework/System.Diagnostics.Debug.wasm.gz index 687f5bc08a720b4faeef003eeacecede61f1f564..6464a70ae054028bf634251b2c181ffb165e6e55 100644 GIT binary patch delta 19 XcmcaCcv+B3zMF#q445}^o#X%jE<*$q delta 19 XcmcaCcv+B3zMF#q41_mwo#X%jE|UZ# diff --git a/docs/demo/_framework/System.Diagnostics.DiagnosticSource.wasm.gz b/docs/demo/_framework/System.Diagnostics.DiagnosticSource.wasm.gz index e23f3fd65cec8db5385dbba27c4d7272b6cd4003..bbcd86ca475c383c6096853b7cc251c3ac866382 100644 GIT binary patch delta 21 ZcmaF)hxz3nW-j?|4hAq_-pCdI4**up2B-i4 delta 21 ZcmaF)hxz3nW-j?|4hAp~-pCdI4**vk2DktK diff --git a/docs/demo/_framework/System.Diagnostics.FileVersionInfo.wasm.gz b/docs/demo/_framework/System.Diagnostics.FileVersionInfo.wasm.gz index 5058d4ac948852f1d24ea6ac1cfca8a548afcb4a..86776b25ea0e452d6d0d32727964c1bda04949cc 100644 GIT binary patch delta 19 Xcmdn2yjht`zMF#q445}^trP?REARv1 delta 19 Xcmdn2yjht`zMF#q41_mwtrP?REIrPF_i=C delta 19 Xcmew;@KJzEzMF#q41_mwrE>rPG35jN diff --git a/docs/demo/_framework/System.Diagnostics.TraceSource.wasm.gz b/docs/demo/_framework/System.Diagnostics.TraceSource.wasm.gz index bb423cde89c0d426e9a40654b6ea34df2e0908f7..395fbdee93521c589f2c7cc69d5128850141853d 100644 GIT binary patch delta 21 ZcmdlngK@_UMlSho4hAq_-pHlr0{}mW1eX8+ delta 21 ZcmdlngK@_UMlSho4hAp~-pHlr0{}nR1g8K1 diff --git a/docs/demo/_framework/System.Diagnostics.Tracing.wasm.gz b/docs/demo/_framework/System.Diagnostics.Tracing.wasm.gz index b47cf2a48114215cfaac27f27aa177aea69a500f..a035b6e2b91c49cb6edcc2f6d95bf281066f9d15 100644 GIT binary patch delta 19 Xcmdlkyj_?}zMF#q445}^t>pv&DqsV} delta 19 Xcmdlkyj_?}zMF#q41_mwt>pv&DzF39 diff --git a/docs/demo/_framework/System.Drawing.Primitives.wasm.gz b/docs/demo/_framework/System.Drawing.Primitives.wasm.gz index 8ae617f1c964b431d908ed0974aca931aff0b429..3435893232e9897227b62535a7c828dca8490485 100644 GIT binary patch delta 21 ZcmZ3wm2v4-MlSho4hAq_-pDmO3IIX81ttIh delta 21 ZcmZ3wm2v4-MlSho4hAp~-pDmO3IIY31vUTx diff --git a/docs/demo/_framework/System.Drawing.wasm.gz b/docs/demo/_framework/System.Drawing.wasm.gz index fe874e5688ea9d4aa4ff78e8323ca24c46a77e4d..3252d81ee1242060551fc72607b6aca9cffec7e4 100644 GIT binary patch delta 19 Xcmew<`%{)nzMF#q445}^z2^e}HH8GE delta 19 Xcmew<`%{)nzMF#q41_mwz2^e}HPr;P diff --git a/docs/demo/_framework/System.Dynamic.Runtime.wasm.gz b/docs/demo/_framework/System.Dynamic.Runtime.wasm.gz index 53b8c0ffcaa2dbbef569bbe862174865a9ba0bbe..1d92a48a239717cc72c5adcc9e5e0e843f2dbb48 100644 GIT binary patch delta 19 Xcmew(^hbzGzMF#q445}^6>$OpGkgRR delta 19 Xcmew(^hbzGzMF#q41_mw6>$OpGt2}c diff --git a/docs/demo/_framework/System.Formats.Asn1.wasm.gz b/docs/demo/_framework/System.Formats.Asn1.wasm.gz index 960f97aa033b70d1837cf0f41f2be74e1fc91e74..7e055c8306f99547a4707406294cda72361444cd 100644 GIT binary patch delta 21 ZcmaFd%k;RHiA%nlg8>YfH*(!<0{})b1-<|P delta 21 ZcmaFd%k;RHiA%nlg8>YLH*(!<0{}*W1eFu delta 19 Xcmew$@Iin}zMF#q41_mwrEvfNF~0-( diff --git a/docs/demo/_framework/System.Globalization.wasm.gz b/docs/demo/_framework/System.Globalization.wasm.gz index c5b5d5d5188ee605cc9093c380d17f5b58459aa6..cf2ee07a07c851b65200a9e769fd5df7329b32d3 100644 GIT binary patch delta 19 XcmX>mcubH>zMF#q445}^?co3bEL8*T delta 19 XcmX>mcubH>zMF#q41_mw?co3bETsee diff --git a/docs/demo/_framework/System.IO.Compression.Brotli.wasm.gz b/docs/demo/_framework/System.IO.Compression.Brotli.wasm.gz index ebd1a0fc1dbe3030ac6b40f4cb438d62b914272f..6f1e73c5a46820eb4b2a78a1a75bc4dd3e457e8f 100644 GIT binary patch delta 19 Xcmexs@YjG#zMF#q445}^6-xjBH?0I< delta 19 Xcmexs@YjG#zMF#q41_mw6-xjBH~j=~ diff --git a/docs/demo/_framework/System.IO.Compression.FileSystem.wasm.gz b/docs/demo/_framework/System.IO.Compression.FileSystem.wasm.gz index 2eebd59635b430a5bd87c907268db6369cd89410..54043c068234af8e6d8b0995fe485e9ba12689c5 100644 GIT binary patch delta 19 XcmdnZznh;+zMF#q445}^ZDa=kDsBVE delta 19 XcmdnZznh;+zMF#q41_mwZDa=kD!v2P diff --git a/docs/demo/_framework/System.IO.Compression.ZipFile.wasm.gz b/docs/demo/_framework/System.IO.Compression.ZipFile.wasm.gz index 8077b55d0ec9fea3a0ed9a08dcafcd5646c6752d..70d760180011d922db3863bbe67ec14dae244ff3 100644 GIT binary patch delta 19 XcmaDC_b!f0zMF#q445}^rRW0yJEjDt delta 19 XcmaDC_b!f0zMF#q41_mwrRW0yJN5*& diff --git a/docs/demo/_framework/System.IO.Compression.wasm.gz b/docs/demo/_framework/System.IO.Compression.wasm.gz index 1469c4663ffb0644feff1de6e17c202ec941dd93..a96c9054eb7944610b4212b8c68b30d0935dcf0d 100644 GIT binary patch delta 21 Zcmcb8oay#)CNBAI4hAq_-pF-vF#t_y1~&iz delta 21 Zcmcb8oay#)CNBAI4hAp~-pF-vF#t`t21ft@ diff --git a/docs/demo/_framework/System.IO.FileSystem.AccessControl.wasm.gz b/docs/demo/_framework/System.IO.FileSystem.AccessControl.wasm.gz index 2c8a6c8b68be1ddc1f818bd6d6d06e15aa549686..dfd8237912944345456760af0d2d0d30e040739c 100644 GIT binary patch delta 19 Xcmca?d)bytzMF#q445}^os&oYG1CNG delta 19 XcmaDY_*#%lzMF#q41_mwJ>&oYG9v_R diff --git a/docs/demo/_framework/System.IO.IsolatedStorage.wasm.gz b/docs/demo/_framework/System.IO.IsolatedStorage.wasm.gz index 264b94275a22b5b3e1a376253cca52d920888adb..9db43d7b22e6e98298b7eb4d3529a8b07f3abba1 100644 GIT binary patch delta 19 XcmX@&a>Rv8zMF#q445}^St$VkG3f*6 delta 19 XcmX@&a>Rv8zMF#q41_mwSt$VkGC2eH diff --git a/docs/demo/_framework/System.IO.MemoryMappedFiles.wasm.gz b/docs/demo/_framework/System.IO.MemoryMappedFiles.wasm.gz index 408b420d1d6797c2406f087372f3eaca88d3ad27..b980a90bdc17c48b4caf840b314dbdac850ffe2c 100644 GIT binary patch delta 19 XcmX?If4ZJazMF#q445}^9kd4kJLUxs delta 19 XcmX?If4ZJazMF#q41_mw9kd4kJT?U% diff --git a/docs/demo/_framework/System.IO.Pipelines.wasm.gz b/docs/demo/_framework/System.IO.Pipelines.wasm.gz index d0f628ac77fb5e4d4872e966cd60f558ab7a3b5c..fe8762fbdce5cbfa23dd0d89b40490b022c24601 100644 GIT binary patch delta 21 ZcmbRKf^qr_MlSho4hAq_-pIvU0suw#1pEL1 delta 21 ZcmbRKf^qr_MlSho4hAp~-pIvU0suxw1q=WH diff --git a/docs/demo/_framework/System.IO.Pipes.AccessControl.wasm.gz b/docs/demo/_framework/System.IO.Pipes.AccessControl.wasm.gz index 2d3cb3cca3f3a62429004d56ff88e78e5d03c7a4..49ef56b79e0c892b909a3e8de9ae84de64e03c47 100644 GIT binary patch delta 19 XcmZ3bxk{5uzMF#q445}^Ef4_!D`^AO delta 19 XcmZ3bxk{5uzMF#q41_mwEf4_!E4c&Z diff --git a/docs/demo/_framework/System.IO.Pipes.wasm.gz b/docs/demo/_framework/System.IO.Pipes.wasm.gz index e06b5e89fabac48ee994d2bfdff0bb837caa557a..46d464b2fcf960b9d658d005ab12bdc113670222 100644 GIT binary patch delta 19 XcmcZ?crTDkzMF#q445}^UC{slIE4h& delta 19 XcmcZ?crTDkzMF#q41_mwUC{slIMoE@ diff --git a/docs/demo/_framework/System.IO.UnmanagedMemoryStream.wasm.gz b/docs/demo/_framework/System.IO.UnmanagedMemoryStream.wasm.gz index 28078c0b0757d7fbb20fb7824497ca8cb11eb835..9627690aaa6fe7e119b9f114dabc11d057d83b0f 100644 GIT binary patch delta 19 WcmeAZ>=WdY@8)0t1LlofEgS$O1p`F@ delta 19 WcmeAZ>=WdY@8)0t1L2KaEgS$ORRdK3 diff --git a/docs/demo/_framework/System.IO.wasm.gz b/docs/demo/_framework/System.IO.wasm.gz index 0c08b473b322950105d3ba7d47e9deb5d9d0756b..006cca011de7f79e1a7cfc809a701190e31dd0a2 100644 GIT binary patch delta 19 XcmX>ocuocuYf8@XD!7+blRwsJB1IRXH6j0TGU delta 30 icmcc7#CxNOmrK5zg8>YL8@XD!7+blRwsJB1IRXH7YzCVE diff --git a/docs/demo/_framework/System.Linq.Parallel.wasm.gz b/docs/demo/_framework/System.Linq.Parallel.wasm.gz index 093d0d64cb5049ffb6bf98c571c67be967ecbd4c..d64496ef6a20636ea97eef7cc03a1ea79758d290 100644 GIT binary patch delta 24 ccmaF1jP=P+yDRo delta 24 ccmaF1jP=;M1& diff --git a/docs/demo/_framework/System.Linq.Queryable.wasm.gz b/docs/demo/_framework/System.Linq.Queryable.wasm.gz index 712cf4c05608d7097782196714b1277fce4ae0c0..d9bb87aed827726cec9c17c8fcf554d63465f51a 100644 GIT binary patch delta 21 ZcmX>-oALB)MlSho4hAq_-pF;(7XU;91y=w7 delta 21 ZcmX>-oALB)MlSho4hAp~-pF;(7XU<41!n*N diff --git a/docs/demo/_framework/System.Linq.wasm.gz b/docs/demo/_framework/System.Linq.wasm.gz index cf88a89e804b28153a6ad6daa327bb19f7322c6b..ed6a398268868b08278e122c63188ea864e7a349 100644 GIT binary patch delta 21 ZcmccB&U~w#nM=N#g8>YfH*#G#3;;wz1=aun delta 21 ZcmccB&U~w#nM=N#g8>YLH*#G#3;;xu1?B(% diff --git a/docs/demo/_framework/System.Memory.wasm.gz b/docs/demo/_framework/System.Memory.wasm.gz index 27947b143c6bc685196310b40aa37c37a9594c70..16664a8e60ee4e697a1b356bc738fedf68b06c01 100644 GIT binary patch delta 21 ZcmaDikMZ3+MlSho4hAq_-pG~W4**FI1xNq@ delta 21 ZcmaDikMZ3+MlSho4hAp~-pG~W4**GD1y}$8 diff --git a/docs/demo/_framework/System.Net.Http.Json.wasm.gz b/docs/demo/_framework/System.Net.Http.Json.wasm.gz index 05a7a07cf5f2dc02ca8b803fa9b7f8fde0424ccc..d0d875427f3d91f25612d9803c480dff9ee3de7e 100644 GIT binary patch delta 21 ZcmbO>m2uisMlSho4hAq_-pJMC1pqpw1gQW3 delta 21 ZcmbO>m2uisMlSho4hAp~-pJMC1pqqr1i1hJ diff --git a/docs/demo/_framework/System.Net.Http.wasm.gz b/docs/demo/_framework/System.Net.Http.wasm.gz index 544e37d50c4e2f1c169b6ecdf705312112692c90..0b14248d72b8db61481a268eae90414aa49285af 100644 GIT binary patch delta 24 ccmZ4dh;8vBHZJ*Y4hAq_Zsgj^#VENE09XhG>i_@% delta 24 ccmZ4dh;8vBHZJ*Y4hAp~Zsgj^#VENE09c3x`v3p{ diff --git a/docs/demo/_framework/System.Net.HttpListener.wasm.gz b/docs/demo/_framework/System.Net.HttpListener.wasm.gz index b0f6d99b4b71d24d42fd2d31adfd53aafdcc57e6..351ee643a5bf7b4d5a89210eeef1ac66139d1d2b 100644 GIT binary patch delta 19 XcmcawakYX=zMF#q445}^dD{R0J8=Y@ delta 19 XcmcawakYX=zMF#q41_mwdD{R0JHZ63 diff --git a/docs/demo/_framework/System.Net.Mail.wasm.gz b/docs/demo/_framework/System.Net.Mail.wasm.gz index f455794c2a300b23685f4c077a2bfc76a8ee3e5e..87295cc9d43a962a3250e87b0133b1af7300da4e 100644 GIT binary patch delta 21 Zcmex;i0StsCNBAI4hAq_-pEzB5CBlk1`7ZH delta 21 Zcmex;i0StsCNBAI4hAp~-pEzB5CBmf1{(kX diff --git a/docs/demo/_framework/System.Net.NameResolution.wasm.gz b/docs/demo/_framework/System.Net.NameResolution.wasm.gz index fc08910aff14f0f8d720f326c0b386945a22acdf..aea95d0211940b1885770d28beeb8a131ff26174 100644 GIT binary patch delta 19 XcmaE$`9PCPzMF#q445}^T@wKSGi?NS delta 19 XcmaE$`9PCPzMF#q41_mwT@wKSGra_d diff --git a/docs/demo/_framework/System.Net.NetworkInformation.wasm.gz b/docs/demo/_framework/System.Net.NetworkInformation.wasm.gz index fb9e34ef1fe0b00a4f963136dffc6dfb0a9b9543..48db9d79c6eabe0edb444b4c3f138876cda8bdf1 100644 GIT binary patch delta 19 XcmaD6_acrH2$ delta 19 XcmaD6_acr diff --git a/docs/demo/_framework/System.Net.Ping.wasm.gz b/docs/demo/_framework/System.Net.Ping.wasm.gz index cde3349375f89b7d999781aa7a8eb16b7a015af1..a7ecaf2088fcedb2bd62e3a9e63e2dced34ec6eb 100644 GIT binary patch delta 19 WcmeA->o?<)@8)0t1LloftkM7|C<7$` delta 19 WcmeA->o?<)@8)0t1L2KatkM7|cmp*6 diff --git a/docs/demo/_framework/System.Net.Primitives.wasm.gz b/docs/demo/_framework/System.Net.Primitives.wasm.gz index 068b19cc210ac3c3f683a39c72cb7abe288f8294..45fb3fbfc3b0afd7b2a2b89dc90f41a35bdccf68 100644 GIT binary patch delta 21 ZcmZ2~pK1MlCNBAI4hAq_-pI9dJpf7I1@8a= delta 21 ZcmZ2~pK1MlCNBAI4hAp~-pI9dJpf8D1^)m5 diff --git a/docs/demo/_framework/System.Net.Quic.wasm.gz b/docs/demo/_framework/System.Net.Quic.wasm.gz index ee99a71fbf100d225f210e75c6ea50dc628c66e5..8902ca9c771db1db148538c9c6ce68ab9dac1aa6 100644 GIT binary patch delta 19 XcmdlPv@?iHzMF#q445}^>1zT2GAaY< delta 19 XcmdlPv@?iHzMF#q41_mw>1zT2GI|5~ diff --git a/docs/demo/_framework/System.Net.Requests.wasm.gz b/docs/demo/_framework/System.Net.Requests.wasm.gz index bec07a6b471fded141aacc75492106d5ceacf075..97e0fa4d58a9af5271d8e395a3bbe4477de38324 100644 GIT binary patch delta 21 ZcmccG%XqbykxRatg8>YfH*%eJ0{}yi1yTS2 delta 21 ZcmccG%XqbykxRatg8>YLH*%eJ0{}zd1!4dI diff --git a/docs/demo/_framework/System.Net.Security.wasm.gz b/docs/demo/_framework/System.Net.Security.wasm.gz index 2531da67c977857b3955ed42a10555bfe378a3d7..1d274b696eaf2ba5fb59d847e2f43c6e545dded4 100644 GIT binary patch delta 21 Zcmccpjq&z3MlSho4hAq_-pCbL4FFQ;1?vC+ delta 21 Zcmccpjq&z3MlSho4hAp~-pCbL4FFR(1^WO1 diff --git a/docs/demo/_framework/System.Net.ServicePoint.wasm.gz b/docs/demo/_framework/System.Net.ServicePoint.wasm.gz index da15523e221d5ea4c4ba47a6e98855f160c5462e..47a5bddd26748fa1045043d3c221c7114160f2f6 100644 GIT binary patch delta 19 XcmdmEvB!c-zMF#q445}^8OZXPw delta 21 ZcmZ4gnQ{GRMlSho4hAp~-pIAI5&%rQ1@8a= diff --git a/docs/demo/_framework/System.Net.wasm.gz b/docs/demo/_framework/System.Net.wasm.gz index 3fc6c681af6c6d32765ff0b2d7f8f36fdbbbc7f3..0676025a9b914b809d739062132fb31e3586dbe5 100644 GIT binary patch delta 19 XcmZ1@x<-^szMF#q445}^E#d+IDFXwk delta 19 XcmZ1@x<-^szMF#q41_mwE#d+IDN_Tv diff --git a/docs/demo/_framework/System.Numerics.Vectors.wasm.gz b/docs/demo/_framework/System.Numerics.Vectors.wasm.gz index 0866810be1111787b43cd2807c316ea33005c018..89ac6d64b2ffd94c4df235352fbf0feb752801de 100644 GIT binary patch delta 19 XcmX>ncutT@zMF#q445}^9pL}~ErkRH delta 19 XcmX>ncutT@zMF#q41_mw9pL}~E!6}S diff --git a/docs/demo/_framework/System.Numerics.wasm.gz b/docs/demo/_framework/System.Numerics.wasm.gz index 6c189d1b7c59e817e9fe592b93643a5cf93582fd..3c1549c8503c56b879e52b47a414fa8ba6181ea2 100644 GIT binary patch delta 19 Xcmcc5f1jUAzMF#q445}^U1bLVFUABj delta 19 Xcmcc5f1jUAzMF#q41_mwU1bLVFct(u diff --git a/docs/demo/_framework/System.ObjectModel.wasm.gz b/docs/demo/_framework/System.ObjectModel.wasm.gz index 0d1dac0de2f67a5622c0f3250a06ec7758ef51fa..7e1231d463778a098709a5e41935fe7109987853 100644 GIT binary patch delta 19 Xcmdm#v?+;8zMF#q445}^X&3?kGe`sc delta 19 Xcmdm#v?+;8zMF#q41_mwX&3?kGnfPn diff --git a/docs/demo/_framework/System.Private.CoreLib.wasm.gz b/docs/demo/_framework/System.Private.CoreLib.wasm.gz index eb5c7b11dca7a0a62588877ed357b6e395f0b3fb..b74e48453e66bfe504428228448c9a9f61845eeb 100644 GIT binary patch delta 84 zcmW;BI~GGg06@67>K8 delta 84 zcmW;Bxe}K483L?0Gp&q&-CWc|tJ=b`yk>A!NkFX%AWRgoErBqT& XBQLr4Ev?ud24DaH delta 21 Zcmcb3lKJ9EW-j?|4hAp~-pF?vY25!xow4|Z11Y7FAhk5oN+(fz P`F4;|CYfcqS+D&CLi7)V delta 69 zcmW;ByAeP@06;;1=lRYkKo{a`P4FUZh%Zx?9vGW$dSZGa+ZnRodLX$JQc5MYG}20t QPQLABkWnU?ZccQ}qqzMF#q445}^S?U7-HADm@ delta 19 XcmX>ccQ}qqzMF#q41_mwS?U7-HIxK3 diff --git a/docs/demo/_framework/System.Reflection.Emit.ILGeneration.wasm.gz b/docs/demo/_framework/System.Reflection.Emit.ILGeneration.wasm.gz index e98c0d08920324edc71d836d356c399cc36296e6..be5cc6fd15a00f58d0b175914ef1151345257ebb 100644 GIT binary patch delta 19 Xcmca9cvFx|zMF#q445}^o#y}mFDC>h delta 19 Xcmca9cvFx|zMF#q41_mwo#y}mFLwks diff --git a/docs/demo/_framework/System.Reflection.Emit.Lightweight.wasm.gz b/docs/demo/_framework/System.Reflection.Emit.Lightweight.wasm.gz index 0cbe1f9b2723d9670314e11ea9518000298202f6..8fbeeb3a1700541acd4c3997c223a93a7748894e 100644 GIT binary patch delta 19 XcmZ1@xJHmmzMF#q445}^E#d$GD0u^) delta 19 XcmZ1@xJHmmzMF#q41_mwE#d$GD9Hn_ diff --git a/docs/demo/_framework/System.Reflection.Emit.wasm.gz b/docs/demo/_framework/System.Reflection.Emit.wasm.gz index 98352e63be9c3f380bb348ffde96075b02dc9afd..9487ed48edf9970786fe7834f80ad12a0fd92363 100644 GIT binary patch delta 21 ZcmaENk@4L{MlSho4hAq_-pKVN0{~Hn21ft@ delta 21 ZcmaENk@4L{MlSho4hAp~-pKVN0{~Ii23G(8 diff --git a/docs/demo/_framework/System.Reflection.Extensions.wasm.gz b/docs/demo/_framework/System.Reflection.Extensions.wasm.gz index f98d9e92a6838b8522f15312e5188018528038ee..4b41c362049cfef99dead51b4098e9fc087a3bf0 100644 GIT binary patch delta 19 XcmcaEa9w~)zMF#q445}^`EmdNEx7}p delta 19 XcmcaEa9w~)zMF#q41_mw`EmdNE(rs! diff --git a/docs/demo/_framework/System.Reflection.Metadata.wasm.gz b/docs/demo/_framework/System.Reflection.Metadata.wasm.gz index dfd42037f085e656e68e229e4d3073bbd3499c9e..6b70e021278243bd2168f382483f0adc90745b7a 100644 GIT binary patch delta 27 fcmaFS$o-;`n@hf%g8>Yf8@XD!7`JjU-8%pPXH*9w delta 27 fcmaFS$o-;`n@hf%g8>YL8@XD!7`JjU-8%pPXaol` diff --git a/docs/demo/_framework/System.Reflection.Primitives.wasm.gz b/docs/demo/_framework/System.Reflection.Primitives.wasm.gz index 5079311e1fa70df7396fa588e50a965386407f27..51e556f0a7560f02ebfcfd6f1872ad80e452969b 100644 GIT binary patch delta 19 XcmZ24v|flyzMF#q445}^sd54UC=LTF delta 19 XcmZ24v|flyzMF#q41_mwsd54UC|(0Q diff --git a/docs/demo/_framework/System.Reflection.TypeExtensions.wasm.gz b/docs/demo/_framework/System.Reflection.TypeExtensions.wasm.gz index 7bb9552c6a37711d1701c478ef211988d47d1906..8736558a32a623c57b9f56458485d858337891b2 100644 GIT binary patch delta 19 XcmbQHGfjs}zMF#q445}^@rVHcC)oob delta 19 XcmbQHGfjs}zMF#q41_mw@rVHcC@BLm diff --git a/docs/demo/_framework/System.Reflection.wasm.gz b/docs/demo/_framework/System.Reflection.wasm.gz index edeb99ed0bb43a6ca3b1c3a4002f161271954a60..ba6d62fa8db4d24f012f83682ae4070552df6b74 100644 GIT binary patch delta 19 WcmZn{ZWrc~@8)0t1LlofwVVJWKm#=Z delta 19 WcmZn{ZWrc~@8)0t1L2KawVVJWkOM^k diff --git a/docs/demo/_framework/System.Resources.Reader.wasm.gz b/docs/demo/_framework/System.Resources.Reader.wasm.gz index 657f02ca3fbf7dd349bbe0ce693b7d2d7e7101fd..2eef1f134820b3108bae1c3d20a350fab7b10a2a 100644 GIT binary patch delta 19 XcmdlguvLIdzMF#q445}^X>$MoD6IoH delta 19 XcmdlguvLIdzMF#q41_mwX>$MoDE$LS diff --git a/docs/demo/_framework/System.Resources.ResourceManager.wasm.gz b/docs/demo/_framework/System.Resources.ResourceManager.wasm.gz index 5c668e6770fce1b016c8ce39403ba9b56f6112eb..d10963bd62a108d1c5eef85b6aabf5818d24209d 100644 GIT binary patch delta 19 XcmZ20xK@x$zMF#q445}^E#?3KD4zqO delta 19 XcmZ20xK@x$zMF#q41_mwE#?3KDDMNZ diff --git a/docs/demo/_framework/System.Resources.Writer.wasm.gz b/docs/demo/_framework/System.Resources.Writer.wasm.gz index 835362d47801e3d3a9e554c8e5278e28f7f89ca8..7ed7092c5701039baf4526a1b8c9fcdf8f421f9d 100644 GIT binary patch delta 19 XcmdmCy~CPIzMF#q445}^t&;@+FX{v= delta 19 XcmdmCy~CPIzMF#q41_mwt&;@+FggT0 diff --git a/docs/demo/_framework/System.Runtime.CompilerServices.Unsafe.wasm.gz b/docs/demo/_framework/System.Runtime.CompilerServices.Unsafe.wasm.gz index fe0acdce5e25555ce79b9fbadbed6a4ba2d678d1..bad7cd1c375816bafe51d6a6bc21bde59a5a7f57 100644 GIT binary patch delta 19 XcmdlbuuFhTzMF#q445}^8E^mqDQg2q delta 19 XcmdlbuuFhTzMF#q41_mw8E^mqDZ2w# diff --git a/docs/demo/_framework/System.Runtime.CompilerServices.VisualC.wasm.gz b/docs/demo/_framework/System.Runtime.CompilerServices.VisualC.wasm.gz index c572542f1adbeaff82ed476b6299e032fa34e89d..73f8a6daf036be40d539f2a9c09fb2edbc4a3d79 100644 GIT binary patch delta 19 XcmcaAepQ@HzMF#q445}^o#qArFJ1&G delta 19 XcmcaAepQ@HzMF#q41_mwo#qArFRlbR diff --git a/docs/demo/_framework/System.Runtime.Extensions.wasm.gz b/docs/demo/_framework/System.Runtime.Extensions.wasm.gz index 76baac02ffdc824aecf24d35377aefe25de456de..45a307c2ca1cf2c8e779d7d1eeb03ea1a44c60ea 100644 GIT binary patch delta 19 XcmbOzK2e-YzMF#q445}^wQ~aiB}M~X delta 19 XcmbOzK2e-YzMF#q41_mwwQ~aiC6)ti diff --git a/docs/demo/_framework/System.Runtime.Handles.wasm.gz b/docs/demo/_framework/System.Runtime.Handles.wasm.gz index a7e58dedff4076fc64e8dd8f61be89de264bdf66..68fe4471799a7ed48e8b3662b6499b31a0c27a0b 100644 GIT binary patch delta 19 WcmeAc>=xvb@8)0t1LlofjT`_YlLI^e delta 19 WcmeAc>=xvb@8)0t1L2KajT`_Y;{!|p diff --git a/docs/demo/_framework/System.Runtime.InteropServices.JavaScript.wasm.gz b/docs/demo/_framework/System.Runtime.InteropServices.JavaScript.wasm.gz index bc6c0ae92c75fc7db64060a1bcf6bb7ec2f1406e..bc3c18f0fb89b078487a327256d794b3aef1115c 100644 GIT binary patch delta 21 ZcmbQ%#WbypiA%nlg8>YfH*)c`0suH{1W*6~ delta 21 ZcmbQ%#WbypiA%nlg8>YLH*)c`0suI?1YiIF diff --git a/docs/demo/_framework/System.Runtime.InteropServices.RuntimeInformation.wasm.gz b/docs/demo/_framework/System.Runtime.InteropServices.RuntimeInformation.wasm.gz index 032bc238f5ba72b357847476fa01f658a6f4b5da..5a19944faf6e518666d40122769b5121925d4103 100644 GIT binary patch delta 19 XcmcaBa94m!zMF#q445}^1#YfH*!__0{}S@1c?9u delta 21 ZcmZpk&)7VlkxRatg8>YLH*!__0{}T;1epK; diff --git a/docs/demo/_framework/System.Runtime.Intrinsics.wasm.gz b/docs/demo/_framework/System.Runtime.Intrinsics.wasm.gz index 30d9b9ce03f1ea0727c4d0892274d711ee43f4cb..4f239e660748670a155a91cf11b3741c26262bf9 100644 GIT binary patch delta 19 XcmdllvR{NtzMF#q445}^nQ{RDDzgJ% delta 19 XcmdllvR{NtzMF#q41_mwnQ{RDD+2>? diff --git a/docs/demo/_framework/System.Runtime.Loader.wasm.gz b/docs/demo/_framework/System.Runtime.Loader.wasm.gz index cffb7d59322fc70dfeea47f40f4d1a23febe478b..eebba07d8182ebb156cf8b05d79b76c79d50ae50 100644 GIT binary patch delta 19 Xcmew@_*;-mzMF#q445}^edGWDG&2N@ delta 19 Xcmew@_*;-mzMF#q41_mwedGWDG=l`3 diff --git a/docs/demo/_framework/System.Runtime.Numerics.wasm.gz b/docs/demo/_framework/System.Runtime.Numerics.wasm.gz index 2c24640e6c57ac85a2cf03aa8eff9c9ce21d778f..fbbff1b9d03fd599669556a7d6c5e5b874da6cc3 100644 GIT binary patch delta 21 ZcmZ4bh-v8~CNBAI4hAq_-pD1r5dcTG1z7+9 delta 21 ZcmZ4bh-v8~CNBAI4hAp~-pD1r5dcUB1!({P diff --git a/docs/demo/_framework/System.Runtime.Serialization.Formatters.wasm.gz b/docs/demo/_framework/System.Runtime.Serialization.Formatters.wasm.gz index 4eedc72c31116af773f9aa2ab6f2a45899049c21..583e8ca6827e5b31ae012612f66fd7599ccede9f 100644 GIT binary patch delta 21 ZcmX@Ui}Cm_MlSho4hAq_-pFMe3jjvy1sMPU delta 21 ZcmX@Ui}Cm_MlSho4hAp~-pFMe3jjwt1t|ak diff --git a/docs/demo/_framework/System.Runtime.Serialization.Json.wasm.gz b/docs/demo/_framework/System.Runtime.Serialization.Json.wasm.gz index 8c0e1ed5a805ed70fb4e96dc6cd7abf47afed3bd..2ca0fde960e2bbd21dbf932ecc0639ac45541556 100644 GIT binary patch delta 19 XcmdlZxJQsnzMF#q445}^ZQ=j`D%k_i delta 19 XcmdlZxJQsnzMF#q41_mwZQ=j`D=7ot diff --git a/docs/demo/_framework/System.Runtime.Serialization.Primitives.wasm.gz b/docs/demo/_framework/System.Runtime.Serialization.Primitives.wasm.gz index 8660afd6758319a8ee702e07fb84ae28169ca61b..c4008426ad22ab52303b19b0da7e5d647472e1d0 100644 GIT binary patch delta 19 XcmbQQHD8NMzMF#q445}^iHZUMDCz?@ delta 19 XcmbQQHD8NMzMF#q41_mwiHZUMDLMm3 diff --git a/docs/demo/_framework/System.Runtime.Serialization.Xml.wasm.gz b/docs/demo/_framework/System.Runtime.Serialization.Xml.wasm.gz index 7afa189a41799a203417fd2f8b0183a7d8064208..73592d812b75f284b39d5df436b2a4ec64935bc8 100644 GIT binary patch delta 19 Xcmew){7INgzMF#q445}^z2F1@Ga>|b delta 19 Xcmew){7INgzMF#q41_mwz2F1@Gjarm diff --git a/docs/demo/_framework/System.Runtime.Serialization.wasm.gz b/docs/demo/_framework/System.Runtime.Serialization.wasm.gz index ed0e5f5860a63c28e89401d3bbfb821c7ed7b067..a2e5ab09bdf6d9db94303a4ad49233c03040a2c6 100644 GIT binary patch delta 19 XcmZ1{yiS-)zMF#q445}^E#U+JDGCFs delta 19 XcmZ1{yiS-)zMF#q41_mwE#U+JDOv-% diff --git a/docs/demo/_framework/System.Runtime.wasm.gz b/docs/demo/_framework/System.Runtime.wasm.gz index 872208d087daf4f5092551bb04d4f94fcc72a1b8..44e8e8fea4e3249821442ad1f971a348b070195b 100644 GIT binary patch delta 19 XcmX>Vcq))fzMF#q445}^9nb&(HH`$B delta 19 XcmX>Vcq))fzMF#q41_mw9nb&(HQfZM diff --git a/docs/demo/_framework/System.Security.AccessControl.wasm.gz b/docs/demo/_framework/System.Security.AccessControl.wasm.gz index 556384631dba8e1d8094069c7099d34e608f0f23..16e9eadc8cd42968d5de41df30a3bab89a7d18b9 100644 GIT binary patch delta 19 XcmexS_oI$WzMF#q445}^<=F!OL2?BY delta 19 XcmexS_oI$WzMF#q41_mw<=F!OLBa(j diff --git a/docs/demo/_framework/System.Security.Claims.wasm.gz b/docs/demo/_framework/System.Security.Claims.wasm.gz index e3527a2f82e4a8323e195ce524810981c0114b72..c8a8cec8b86338be3f15b077df0f88cf5bdc95cf 100644 GIT binary patch delta 19 Xcmcaqb*YL=zMF#q445}^dDsE~J46JS delta 19 Xcmcaqb*YL=zMF#q41_mwdDsE~JCp>d diff --git a/docs/demo/_framework/System.Security.Cryptography.Algorithms.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.Algorithms.wasm.gz index d82a0ff5895152c30a623a1d127049ebf10e5396..9735463657dce958749216438f6bb5475654decc 100644 GIT binary patch delta 19 WcmZn`Z5HK{@8)0t1Llofm0SQK?E@|V delta 19 WcmZn`Z5HK{@8)0t1L2Kam0SQLJp(=f diff --git a/docs/demo/_framework/System.Security.Cryptography.Cng.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.Cng.wasm.gz index e7070de9d84129ee1f4d9b35be6c00d6eb51d190..36c38274d4f4e3ad4b940eeb6d522bdb36cf00ff 100644 GIT binary patch delta 19 XcmbOxJWZHOzMF#q445}^^>6|JC3*v5 delta 19 XcmbOxJWZHOzMF#q41_mw^>6|JCCUSG diff --git a/docs/demo/_framework/System.Security.Cryptography.Csp.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.Csp.wasm.gz index 83f03f7c7eb703071662ed3de866226ae8ee33a3..6461c61f9d39498e77f61691d6ece8f5bb47e289 100644 GIT binary patch delta 19 WcmZn?Y7*j-@8)0t1LlofKR5s*Ujw56 delta 19 WcmZn?Y7*j-@8)0t1L2KaKR5s*uLH9H diff --git a/docs/demo/_framework/System.Security.Cryptography.Encoding.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.Encoding.wasm.gz index 7e17d868e0de6a797f027701928fbbf1e66a060c..90a23c466b8f896527b8c14fa8065f119015e9d1 100644 GIT binary patch delta 19 XcmX>ncutT@zMF#q445}^9pL}~ErkRH delta 19 XcmX>ncutT@zMF#q41_mw9pL}~E!6}S diff --git a/docs/demo/_framework/System.Security.Cryptography.OpenSsl.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.OpenSsl.wasm.gz index 9cdf9680e5038d674c489052f4aef8564a90679e..989dd578c538f53a0764d0d6b70ad53e36c82e47 100644 GIT binary patch delta 19 WcmeAZ>=WdY@8)0t1LlofEgS$O1p`F@ delta 19 WcmeAZ>=WdY@8)0t1L2KaEgS$ORRdK3 diff --git a/docs/demo/_framework/System.Security.Cryptography.Primitives.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.Primitives.wasm.gz index 323caaa163a0cc3d8abb8fb3aad2f9b7f4a9bc94..3746f40e0659e599d59ccee3cccbdc1e7976c55c 100644 GIT binary patch delta 19 WcmeAc>K5XX@8)0t1LlofjGO=>wgSHZ delta 19 WcmeAc>K5XX@8)0t1L2KajGO=?1_I9j diff --git a/docs/demo/_framework/System.Security.Cryptography.X509Certificates.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.X509Certificates.wasm.gz index 7a8372ec26c5fc00dfc2e57fa4a946d6a3ac4570..a3db35a27bc9ef645465de28bfa090b6ba92cf37 100644 GIT binary patch delta 19 XcmcaEa$ST=zMF#q445}^`EmgOE<*#T delta 19 XcmcaEa$ST=zMF#q41_mw`EmgOE|UYe diff --git a/docs/demo/_framework/System.Security.Cryptography.wasm.gz b/docs/demo/_framework/System.Security.Cryptography.wasm.gz index bcab937804df295473dde1ecb72c463be924303f..8104ad73e890634e6057abe44b6e5405063aa7d6 100644 GIT binary patch delta 27 fcmbRJoNM-TE-v|Q4hAq_Zscm^V%*BbG;uQkYOMzN delta 27 fcmbRJoNM-TE-v|Q4hAp~Zscm^V%*BbG;uQkYh4Ej diff --git a/docs/demo/_framework/System.Security.Principal.Windows.wasm.gz b/docs/demo/_framework/System.Security.Principal.Windows.wasm.gz index 11cec9afe27e1bf971ffdc02283b6c19a4c01f2e..288ad3a927b122f6b459670b7b287521426ffdf7 100644 GIT binary patch delta 19 XcmbOcG$V*hzMF#q445}^@o548Ekpx` delta 19 XcmbOcG$V*hzMF#q41_mw@o548EtCV6 diff --git a/docs/demo/_framework/System.Security.Principal.wasm.gz b/docs/demo/_framework/System.Security.Principal.wasm.gz index 88754f0c41f0f2ef8dc4c0ad16451cd1396a3363..cda2de526bd0f412b79cd33d873b9f841d68da61 100644 GIT binary patch delta 19 XcmaDX@K}ILzMF#q445}^MREWDFM$KX delta 19 XcmaDX@K}ILzMF#q41_mwMREWDFVO?i diff --git a/docs/demo/_framework/System.Security.SecureString.wasm.gz b/docs/demo/_framework/System.Security.SecureString.wasm.gz index 836b40ac12928a0c8968d6c52f4aeba247665d0a..d250855cb1c84a9d8d3ec350d81f5c92f3f7e998 100644 GIT binary patch delta 19 WcmZn=Y!Kv<@8)0t1LlofWgGw@@dFzG delta 19 WcmZn=Y!Kv<@8)0t1L2KaWgGw^K?5rQ diff --git a/docs/demo/_framework/System.Security.wasm.gz b/docs/demo/_framework/System.Security.wasm.gz index fe85677266e5165b11eb785b997dbd401f55c103..9bd08426960107d7d11db7fc49a70b4f1844ae98 100644 GIT binary patch delta 19 WcmZn@ZxiQ|@8)0t1LlofHQWFrqyszv delta 19 WcmZn@ZxiQ|@8)0t1L2KaHQWFr^aD%) diff --git a/docs/demo/_framework/System.ServiceModel.Web.wasm.gz b/docs/demo/_framework/System.ServiceModel.Web.wasm.gz index fbe5b266eea398cced07fb498f952c219998d511..56f53caf2573e709be9510a24c20da9c9d9fa7f5 100644 GIT binary patch delta 19 Xcmca4d`Xx~zMF#q445}^o!|rjE@A{0 delta 19 Xcmca4d`Xx~zMF#q41_mwo!|rjF0uqB diff --git a/docs/demo/_framework/System.ServiceProcess.wasm.gz b/docs/demo/_framework/System.ServiceProcess.wasm.gz index 6cf85befb5a735ef9aee9a73fa0484dec7eb9068..94815078bb503e2661119f473027506637149dd6 100644 GIT binary patch delta 19 Xcmew$_(70MzMF#q445}^J>viXGLZyp delta 19 Xcmew$_(70MzMF#q41_mwJ>viXGT{V! diff --git a/docs/demo/_framework/System.Text.Encoding.CodePages.wasm.gz b/docs/demo/_framework/System.Text.Encoding.CodePages.wasm.gz index f608ea71551a4d631de2661bcee921160bf23705..e3205999d3d1248258943adfcb14b16e0e6e1e04 100644 GIT binary patch delta 42 ucmbQSMSjK>c`o^G4hAq_Zscm^Vr=DNYUN^Xc`o^G4hAp~Zscm^Vr=DNYUN^Xkcu0^-zMF#q445}^?ce|aE4>5Z delta 19 XcmX>kcu0^-zMF#q41_mw?ce|aEDZzk diff --git a/docs/demo/_framework/System.Text.Encoding.wasm.gz b/docs/demo/_framework/System.Text.Encoding.wasm.gz index 5192dd047038088295955679ce0f57596f931eb9..a4496f48004c0a42f0a8345d557ed9360458d03c 100644 GIT binary patch delta 19 XcmZ1>xI&OizMF#q445}^&Eo(7C*cE= delta 19 XcmZ1>xI&OizMF#q41_mw&Eo(7C@}-0 diff --git a/docs/demo/_framework/System.Text.Encodings.Web.wasm.gz b/docs/demo/_framework/System.Text.Encodings.Web.wasm.gz index 2977f6ff3f6a363803f3b6c05b5bd35c8da1a42d..35282056fbe74a0706c54a3ffc6d6ee0d86e42c2 100644 GIT binary patch delta 21 ZcmZ3#opJqkMlSho4hAq_-pI8y8URC~1xWw^ delta 21 ZcmZ3#opJqkMlSho4hAp~-pI8y8URD_1z7+9 diff --git a/docs/demo/_framework/System.Text.Json.wasm.gz b/docs/demo/_framework/System.Text.Json.wasm.gz index 7348d3d6a1c1ac3fe8120cd504bddb30ef76850b..a0f39ac3e349787e1f8f8546ef5fac4b1e0c78f2 100644 GIT binary patch delta 30 icmX>wkLSQV9xnNA4hAq_Zscm^Vr=DN+RDXj#t#5>p$10) delta 30 icmX>wkLSQV9xnNA4hAp~Zscm^Vr=DN+RDXj#t#5?fd*Fq diff --git a/docs/demo/_framework/System.Text.RegularExpressions.wasm.gz b/docs/demo/_framework/System.Text.RegularExpressions.wasm.gz index 8936d2d408e65cbf3405334394badee1d78df2ec..3d2d465dbac651b70a0a1eaa505c335b3fd9a698 100644 GIT binary patch delta 27 fcmZpkz}Y;3lS{svg8>Yf8@XD!7`JjU{d5NaRdWUu delta 27 fcmZpkz}Y;3lS{svg8>YL8@XD!7`JjU{d5NaRwD)^ diff --git a/docs/demo/_framework/System.Threading.Channels.wasm.gz b/docs/demo/_framework/System.Threading.Channels.wasm.gz index ef9a321c648a774a3a669c0ae777cd7b923b5146..ed7cfe95a1fd9913d9f49b62b84d1249fbf78f30 100644 GIT binary patch delta 21 ZcmbO~jdA`oMlSho4hAq_-pD2D4FEel1V;b> delta 21 ZcmbO~jdA`oMlSho4hAp~-pD2D4FEfg1Xln6 diff --git a/docs/demo/_framework/System.Threading.Overlapped.wasm.gz b/docs/demo/_framework/System.Threading.Overlapped.wasm.gz index 660e12ddd56460010d9c5ded86ca71e494c42531..53f8a8d6e2e8c86832d126ac77516fa02fdef336 100644 GIT binary patch delta 19 Xcmew=_*IZgzMF#q445}^z2*P_GfxD1 delta 19 Xcmew=_*IZgzMF#q41_mwz2*P_GoJ*C diff --git a/docs/demo/_framework/System.Threading.Tasks.Dataflow.wasm.gz b/docs/demo/_framework/System.Threading.Tasks.Dataflow.wasm.gz index fc3ffb3d63ba5f63fdde6efc14c15beb5155d9a4..455d9b8056869fef2e9c247aa4cb746f3a3b761c 100644 GIT binary patch delta 24 ccmZqM&(gM^g-gDhg8>Yf8@aY}G1kZf08H=&H~;_u delta 24 ccmZqM&(gM^g-gDhg8>YL8@aY}G1kZf08MZONB{r; diff --git a/docs/demo/_framework/System.Threading.Tasks.Extensions.wasm.gz b/docs/demo/_framework/System.Threading.Tasks.Extensions.wasm.gz index 498cab2f15dea0994c10d222b3944cc17d52aeb4..24d90345bad7bc12d549aa2500229d8663eabf09 100644 GIT binary patch delta 19 XcmaDQ_)3sVzMF#q445}^J>UQUF|7ny delta 19 XcmaDQ_)3sVzMF#q41_mwJ>UQUG5rK- diff --git a/docs/demo/_framework/System.Threading.Tasks.Parallel.wasm.gz b/docs/demo/_framework/System.Threading.Tasks.Parallel.wasm.gz index 76de5f89a1a9d0441c0675e9eda42858b5979ef7..0893e7055ef4a26df6eefbf26929968e6cae6833 100644 GIT binary patch delta 21 ZcmdnCf^pjlMlSho4hAq_-pHjB0sujd1i1hJ delta 21 ZcmdnCf^pjlMlSho4hAp~-pHjB0sukY1jzsZ diff --git a/docs/demo/_framework/System.Threading.Tasks.wasm.gz b/docs/demo/_framework/System.Threading.Tasks.wasm.gz index e1623317cefa73fc3909900adc0049b0bc74a6b5..64fcc4f46f86eaaa6242deaa279bfdd949bca50c 100644 GIT binary patch delta 19 Xcmew${6UyYzMF#q445}^J>vubGS&oe delta 19 Xcmew${6UyYzMF#q41_mwJ>vubGbRLp diff --git a/docs/demo/_framework/System.Threading.Thread.wasm.gz b/docs/demo/_framework/System.Threading.Thread.wasm.gz index 9950ee183c69f75ceba8cd63016e1e73c3f7c1a2..a6dc60e14186d48cf3984e8aa3f3cab38e8dbf2e 100644 GIT binary patch delta 19 XcmbOzG*O64zMF#q445}^v2y|dBboxy delta 19 XcmbOzG*O64zMF#q41_mwv2y|dBkBU- diff --git a/docs/demo/_framework/System.Threading.ThreadPool.wasm.gz b/docs/demo/_framework/System.Threading.ThreadPool.wasm.gz index 6c16412dadb91f08acf1c300129c6f09df2a107f..b0d3fb1123c2960e67a454fe233ba619d06cf7ae 100644 GIT binary patch delta 19 XcmdlfxKofzzMF#q445}^t>*v$DrW=6 delta 19 XcmdlfxKofzzMF#q41_mwt>*v$Dz^jH diff --git a/docs/demo/_framework/System.Threading.Timer.wasm.gz b/docs/demo/_framework/System.Threading.Timer.wasm.gz index b82dac6777555de3e06bd853c9469f97dddb1b50..57b258992b5045ae38265216c9d1fbf1fd00feb2 100644 GIT binary patch delta 19 XcmX>qa8!UxzMF#q445}^S#tmYD-8o^ delta 19 XcmX>qa8!UxzMF#q41_mwS#tmYD_sM4 diff --git a/docs/demo/_framework/System.Threading.wasm.gz b/docs/demo/_framework/System.Threading.wasm.gz index 331cd40a56d278d0af05f34f0f3081954d0569d2..c56faa957790573a132c16e73fd2f5ac160f1b7b 100644 GIT binary patch delta 19 Xcmdm%zb&6jzMF#q445}^tuY4xHlPHk delta 19 Xcmdm%zb&6jzMF#q41_mwtuY4xHt+YfH*)nJ2LL*=1t9YLH*)nJ2LL+*1u*~s diff --git a/docs/demo/_framework/System.Transactions.wasm.gz b/docs/demo/_framework/System.Transactions.wasm.gz index 2a4546c6ae3a76c4cbe1e47b69cfb801f865be02..db20087fb7a104098719a4d375d015f05eed3ce2 100644 GIT binary patch delta 19 XcmdlYv_*(ZzMF#q445}^X>kGoD9i&o delta 19 XcmdlYv_*(ZzMF#q41_mwX>kGoDI5bz diff --git a/docs/demo/_framework/System.ValueTuple.wasm.gz b/docs/demo/_framework/System.ValueTuple.wasm.gz index 156444fc89f14cd7dbd7a9dec5875df8187eb861..03baa67e9d0c2ee043da1f854a7e3fcfedc629ad 100644 GIT binary patch delta 19 Xcmew)@JWD6zMF#q445}^WpDrhF}nlr delta 19 Xcmew)@JWD6zMF#q41_mwWpDrhG7AI$ diff --git a/docs/demo/_framework/System.Web.HttpUtility.wasm.gz b/docs/demo/_framework/System.Web.HttpUtility.wasm.gz index a42ece5cadcc87642f62d3a1d6300ae7accaa68a..c765643a66a43bc265fcc22b85af3171b44fdffc 100644 GIT binary patch delta 19 XcmZ4HxXh7DzMF#q445}^%~1dVE)4_) delta 19 XcmZ4HxXh7DzMF#q41_mw%~1dVE?oo_ diff --git a/docs/demo/_framework/System.Web.wasm.gz b/docs/demo/_framework/System.Web.wasm.gz index 84ac51486f92ae35fb25a3e18a1d90a4a50361f0..e8fb28b1fbe838998023c823a374d337b8fe5217 100644 GIT binary patch delta 19 XcmdlguvLIdzMF#q445}^X>$MoD6IoH delta 19 XcmdlguvLIdzMF#q41_mwX>$MoDE$LS diff --git a/docs/demo/_framework/System.Windows.wasm.gz b/docs/demo/_framework/System.Windows.wasm.gz index 41ae037a79138d1b94fd0fa3f09ae5a7f1df7da3..81c5cb383a19c18674bb799d1261e678e763dba6 100644 GIT binary patch delta 19 Xcmca2ctwy)zMF#q445}^o#FrhE@=c8 delta 19 Xcmca2ctwy)zMF#q41_mwo#FrhF1Z9J diff --git a/docs/demo/_framework/System.Xml.Linq.wasm.gz b/docs/demo/_framework/System.Xml.Linq.wasm.gz index 5ccf6e74756bbbe004cce00fc10349a144aa0a8c..496b622e917adca59670a71b6bee94f9a37e2937 100644 GIT binary patch delta 19 WcmeAb>=opa@8)0t1Llof%^UzD-vdGb delta 19 WcmeAb>=opa@8)0t1L2Ka%^UzEF9T8l diff --git a/docs/demo/_framework/System.Xml.ReaderWriter.wasm.gz b/docs/demo/_framework/System.Xml.ReaderWriter.wasm.gz index 3a685f7a76eb7a5521cb89d985fb349095953c90..549c1f6471cbe98923fc3680477cb0746cb22848 100644 GIT binary patch delta 19 XcmbOyKTn=ZzMF#q445}^P2mRsC`bdC delta 19 XcmbOyKTn=ZzMF#q41_mwP2mRsD3}AN diff --git a/docs/demo/_framework/System.Xml.Serialization.wasm.gz b/docs/demo/_framework/System.Xml.Serialization.wasm.gz index f6bd6d2088850890c7dee0598fb2e4f7ce048ec4..f0cc85eb9f7d7b50d7172eb0ffad35bfcc1ff704 100644 GIT binary patch delta 19 XcmZ22xLS})zMF#q445}^E#v?IC{qKR delta 19 XcmZ22xLS})zMF#q41_mwE#v?ID5C?c diff --git a/docs/demo/_framework/System.Xml.XDocument.wasm.gz b/docs/demo/_framework/System.Xml.XDocument.wasm.gz index cbbc312ba523d14af663f2ad331ef5a109003858..c8be1fd1b877398f1d75f4124eb729c292fd3f40 100644 GIT binary patch delta 19 XcmX>tbXtf@zMF#q445}^IdTF3EH(pw delta 19 XcmX>tbXtf@zMF#q41_mwIdTF3EQSM* diff --git a/docs/demo/_framework/System.Xml.XPath.XDocument.wasm.gz b/docs/demo/_framework/System.Xml.XPath.XDocument.wasm.gz index 319cad3bc3f4869440f4a49cbd5e0d5bca14b888..ebd5e172ec2d459dabad44993a13e4e219845054 100644 GIT binary patch delta 19 XcmZ1~yi}M=zMF#q445}^&E^CEC$s~P delta 19 XcmZ1~yi}M=zMF#q41_mw&E^CECeJz?xzMF#q445}^ozVpVIIaZN delta 19 XcmcZ>eJz?xzMF#q41_mwozVpVIQ|6Y diff --git a/docs/demo/_framework/WindowsBase.wasm.gz b/docs/demo/_framework/WindowsBase.wasm.gz index aa29b8a4246ceb5a7912af9abeb54cad878ba24b..adc15e8d62b490a7736d15795c406a0d846a57c5 100644 GIT binary patch delta 19 XcmX>qd{mfAzMF#q445}^?dAjkEOZ0! delta 19 XcmX>qd{mfAzMF#q41_mw?dAjkEW`u< diff --git a/docs/demo/_framework/YamlDotNet.wasm.gz b/docs/demo/_framework/YamlDotNet.wasm.gz index 4656e55e8f5f1aa06a878e674f0646566cfbbb32..96a1bc3090c264fc436e86b796c89ce1c0889e1a 100644 GIT binary patch delta 24 ccmX^9nf3T*RxbH&4hAq_Zsgj^#kjW;0Ad~nzW@LL delta 24 ccmX^9nf3T*RxbH&4hAp~Zsgj^#kjW;0Aij7&j0`b diff --git a/docs/demo/_framework/blazor.boot.json b/docs/demo/_framework/blazor.boot.json index 00983b76..211a32b9 100644 --- a/docs/demo/_framework/blazor.boot.json +++ b/docs/demo/_framework/blazor.boot.json @@ -1,12 +1,12 @@ { "mainAssemblyName": "FlowerBI.WasmHost", "resources": { - "hash": "sha256-7ia463RlCcAJcBe1WekaTT8uVKlKtaeN6QcBcoHEMEo=", + "hash": "sha256-rGwA2pDfr4wE/zOercftbClCzlIDSjGkCkuWCUrNUJI=", "jsModuleNative": { - "dotnet.native.8.0.6.wz7wzmup65.js": "sha256-YU6M9+jtDVnB8/wtrgIndOstzNh778Ls8g9XnbjorSk=" + "dotnet.native.8.0.6.ygqagtplaf.js": "sha256-YU6M9+jtDVnB8/wtrgIndOstzNh778Ls8g9XnbjorSk=" }, "jsModuleRuntime": { - "dotnet.runtime.8.0.6.y5i1dzriyy.js": "sha256-+E96dgYQl8OrHQb4yNZ7QwNr3SZzLSP8lwKRzwSiMsw=" + "dotnet.runtime.8.0.6.43lbstgbri.js": "sha256-+E96dgYQl8OrHQb4yNZ7QwNr3SZzLSP8lwKRzwSiMsw=" }, "wasmNative": { "dotnet.native.wasm": "sha256-QvXWDxAxKcwrwr5J00t53OFtgShscemIYbvFu+ry5Ug=" @@ -211,14 +211,14 @@ "mscorlib.wasm": "sha256-masKveCdoRSahF99doEQk7H3YN2wHLVIE4M/Zu8OoD8=", "netstandard.wasm": "sha256-z1EJOmgVhSpTopn7Tek/0P//MKGF1I3NUD/sh4oLnwY=", "System.Private.CoreLib.wasm": "sha256-tuIWpR30u0OoEVtv4pXZ47mEpI2AmFBIyYFPnqDZZfw=", - "FlowerBI.DemoSchema.wasm": "sha256-F6Z+p+ft4t9ABgN+XBX5lrwu026iok7fKBGt2iF+DyE=", - "FlowerBI.Engine.wasm": "sha256-33zh35M0nqJ/fjW1NEeK8EE2bf8rT3o1T/lFVHEPgK4=", - "FlowerBI.WasmHost.wasm": "sha256-9OnqFvEdgCTcTihfI3J2tFOYio3O3hWhemObLo0q8hY=" + "FlowerBI.DemoSchema.wasm": "sha256-ehrNCpMhxiQ3bAMHLmLTRFiIwcIzF9NemSqw0rVmCjM=", + "FlowerBI.Engine.wasm": "sha256-EkUgCKK3iphcF7ir6daVl2unBqymh03DB0OKZhTuoC4=", + "FlowerBI.WasmHost.wasm": "sha256-6fXNvuh9ReuqlzLV3/gGizS91ciXlC+NySR0FyaJHU8=" }, "pdb": { - "FlowerBI.DemoSchema.pdb": "sha256-yd/8Ylw3sUbziiH4Bm/7XQzmn2lvSTdpCt8QHwE3p/k=", - "FlowerBI.Engine.pdb": "sha256-854zOvHw5GFqPs7o1MfUgT63JzGqToQTtuBb5m+wGu8=", - "FlowerBI.WasmHost.pdb": "sha256-gRry+4rjSjJjcITh/CbiVZLNcDyiQQK7QmWdtp9/XaQ=" + "FlowerBI.DemoSchema.pdb": "sha256-iwDJ725vqRqdkaZuR/v47KSdu90wiyfvHkAh+5qPvOg=", + "FlowerBI.Engine.pdb": "sha256-//bgqet8CUpWA3a/KpdqX0TkpReZImCTPNIEAgMzU3k=", + "FlowerBI.WasmHost.pdb": "sha256-KvnHLyt1ycvR+cMuWQzH6uOhFCkdXp3H2rELmfBQuPU=" } }, "cacheBootResources": true, diff --git a/docs/demo/_framework/blazor.boot.json.gz b/docs/demo/_framework/blazor.boot.json.gz index be5d2b30f0d474b86f686d0e0d6252b0297e0d9d..d6d4cc2b5095237e0967bf7c8f870cdf44105557 100644 GIT binary patch literal 9150 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 literal 9155 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 delta 19 XcmX>Wc`TAkzMF#q41_mw?a=`MHdzF* diff --git a/docs/demo/_framework/dotnet.js.map.gz b/docs/demo/_framework/dotnet.js.map.gz index 828120b5ba88df95725c716a29a648b02cedc5ea..39efae7229084c13e310df1b40d6a7395deea720 100644 GIT binary patch delta 21 ZcmdlsiE-N`MlSho4hAq_-pHln2>?D-1cCqn delta 21 ZcmdlsiE-N`MlSho4hAp~-pHln2>?E&1d;#% diff --git a/docs/demo/_framework/dotnet.native.8.0.6.wz7wzmup65.js b/docs/demo/_framework/dotnet.native.8.0.6.ygqagtplaf.js similarity index 100% rename from docs/demo/_framework/dotnet.native.8.0.6.wz7wzmup65.js rename to docs/demo/_framework/dotnet.native.8.0.6.ygqagtplaf.js diff --git a/docs/demo/_framework/dotnet.native.8.0.6.wz7wzmup65.js.gz b/docs/demo/_framework/dotnet.native.8.0.6.ygqagtplaf.js.gz similarity index 99% rename from docs/demo/_framework/dotnet.native.8.0.6.wz7wzmup65.js.gz rename to docs/demo/_framework/dotnet.native.8.0.6.ygqagtplaf.js.gz index 66f265188bb73c550058b5ec4c004ddbc863eb25..83c22f35cc3e00668ecdc14386662a418120d904 100644 GIT binary patch delta 21 Zcmdl#i)sHXCNBAI4hAq_-pFOz3jje?1oHp@ delta 21 Zcmdl#i)sHXCNBAI4hAp~-pFOz3jjf-1p@#8 diff --git a/docs/demo/_framework/dotnet.native.wasm.gz b/docs/demo/_framework/dotnet.native.wasm.gz index d8f58353ada94058c8c603c929ea161ff2f5e7b8..532db57c03395b07abbee4e5078ac0aedd600da4 100644 GIT binary patch delta 72 zcmW;B$q_(6002R(bKDWgMgk)8n3o8ou~ov^TqynR6!#Q&wyVv4;Y4yNBuFWh)Y3>R RoqXHNAfrq&%kr=u_X}<$5Geov delta 72 zcmW;BM-6~L002RHS$YtF8w{X`$G%X2jZ2VoULeeOV%THY*{&w}ttXO7Cb<++N+q>4 R(#p4;^fJgOlgtmxaldh-5IFz< diff --git a/docs/demo/_framework/dotnet.runtime.8.0.6.y5i1dzriyy.js b/docs/demo/_framework/dotnet.runtime.8.0.6.43lbstgbri.js similarity index 100% rename from docs/demo/_framework/dotnet.runtime.8.0.6.y5i1dzriyy.js rename to docs/demo/_framework/dotnet.runtime.8.0.6.43lbstgbri.js diff --git a/docs/demo/_framework/dotnet.runtime.8.0.6.y5i1dzriyy.js.gz b/docs/demo/_framework/dotnet.runtime.8.0.6.43lbstgbri.js.gz similarity index 99% rename from docs/demo/_framework/dotnet.runtime.8.0.6.y5i1dzriyy.js.gz rename to docs/demo/_framework/dotnet.runtime.8.0.6.43lbstgbri.js.gz index 030c919106f0fbd395f531de44a729f8be9cc38b..1142cef6b32da8eaeed38a1746bdcfef20200916 100644 GIT binary patch delta 21 ZcmbRClX==tW-j?|4hAq_-pJMS2LMVD1}6Xj delta 21 ZcmbRClX==tW-j?|4hAp~-pJMS2LMW81~&iz diff --git a/docs/demo/_framework/dotnet.runtime.js.map.gz b/docs/demo/_framework/dotnet.runtime.js.map.gz index b43f264294f941ce55914c22332bdfeab6f76fbe..cd41990cdaa4006ecdf44d5273609e2b9d33ce99 100644 GIT binary patch delta 24 ccmZ49&9=OojZ40pg8>Yf8@aY}G0trT080A>od5s; delta 24 ccmZ49&9=OojZ40pg8>YL8@aY}G0trT084uXtpET3 diff --git a/docs/demo/_framework/icudt_CJK.dat.gz b/docs/demo/_framework/icudt_CJK.dat.gz index 101cb95466d9eb03b0eb228c851c5d2676f4ee75..430a8db8d7aed3db1e8779d3bcc6c454e82f6fdd 100644 GIT binary patch delta 36 ocmdnCN@UwA5ia>|4hAq_Zscm^Vr=DNYUN^X|4hAp~Zscm^Vr=DNYUN^XYfH*!^^0suc+1oQv^ delta 21 ZcmZoV&DeCBkxRatg8>YLH*!^^0sud%1q1*9 diff --git a/docs/demo/asset-manifest.json b/docs/demo/asset-manifest.json index 21b3f20c..09a33b2a 100644 --- a/docs/demo/asset-manifest.json +++ b/docs/demo/asset-manifest.json @@ -1,13 +1,13 @@ { "files": { "main.css": "/flowerbi/demo/static/css/main.4a2b5546.css", - "main.js": "/flowerbi/demo/static/js/main.ff6b2410.js", + "main.js": "/flowerbi/demo/static/js/main.bf8e9960.js", "index.html": "/flowerbi/demo/index.html", "main.4a2b5546.css.map": "/flowerbi/demo/static/css/main.4a2b5546.css.map", - "main.ff6b2410.js.map": "/flowerbi/demo/static/js/main.ff6b2410.js.map" + "main.bf8e9960.js.map": "/flowerbi/demo/static/js/main.bf8e9960.js.map" }, "entrypoints": [ "static/css/main.4a2b5546.css", - "static/js/main.ff6b2410.js" + "static/js/main.bf8e9960.js" ] } \ No newline at end of file diff --git a/docs/demo/index.html b/docs/demo/index.html index 6613c6a7..7d99c27c 100644 --- a/docs/demo/index.html +++ b/docs/demo/index.html @@ -1 +1 @@ -FlowerBI Demo

\ No newline at end of file +FlowerBI Demo
\ No newline at end of file diff --git a/docs/demo/static/js/main.ff6b2410.js b/docs/demo/static/js/main.bf8e9960.js similarity index 60% rename from docs/demo/static/js/main.ff6b2410.js rename to docs/demo/static/js/main.bf8e9960.js index 0ea2b11a..c3d3a76f 100644 --- a/docs/demo/static/js/main.ff6b2410.js +++ b/docs/demo/static/js/main.bf8e9960.js @@ -1,3 +1,3 @@ -/*! For license information please see main.ff6b2410.js.LICENSE.txt */ -!function(){var e={162:function(e,t,n){e.exports=n(620)},718:function(e,t){"use strict";var n=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.{0,1}\d*))(?:Z|(\+|-)([\d|:]*))?$/,r=/^\/Date\((d|-|.*)\)[\/|\\]$/;t.l=function(e,t){var i=t;if("string"===typeof t){var a=n.exec(t);if(a)i=new Date(t);else if(a=r.exec(t)){var o=a[1].split(/[-+,.]/);i=new Date(o[0]?+o[0]:0-+o[1])}}return i}},901:function(e,t,n){var r="undefined"!==typeof JSON?JSON:n(128);e.exports=function(e,t){t||(t={}),"function"===typeof t&&(t={cmp:t});var n=t.space||"";"number"===typeof n&&(n=Array(n+1).join(" "));var o,s="boolean"===typeof t.cycles&&t.cycles,l=t.replacer||function(e,t){return t},u=t.cmp&&(o=t.cmp,function(e){return function(t,n){var r={key:t,value:e[t]},i={key:n,value:e[n]};return o(r,i)}}),c=[];return function e(t,o,f,h){var d=n?"\n"+new Array(h+1).join(n):"",p=n?": ":":";if(f&&f.toJSON&&"function"===typeof f.toJSON&&(f=f.toJSON()),void 0!==(f=l.call(t,o,f))){if("object"!==typeof f||null===f)return r.stringify(f);if(i(f)){for(var v=[],g=0;g="0"&&n<="9";)t+=n,s();if("."===n)for(t+=".";s()&&n>="0"&&n<="9";)t+=n;if("e"===n||"E"===n)for(t+=n,s(),"-"!==n&&"+"!==n||(t+=n,s());n>="0"&&n<="9";)t+=n,s();if(e=+t,isFinite(e))return e;o("Bad number")},u=function(){var e,t,r,i="";if('"'===n)for(;s();){if('"'===n)return s(),i;if("\\"===n)if(s(),"u"===n){for(r=0,t=0;t<4&&(e=parseInt(s(),16),isFinite(e));t+=1)r=16*r+e;i+=String.fromCharCode(r)}else{if("string"!==typeof a[n])break;i+=a[n]}else i+=n}o("Bad string")},c=function(){for(;n&&n<=" ";)s()},f=function(){var e=[];if("["===n){if(s("["),c(),"]"===n)return s("]"),e;for(;n;){if(e.push(i()),c(),"]"===n)return s("]"),e;s(","),c()}}o("Bad array")},h=function(){var e,t={};if("{"===n){if(s("{"),c(),"}"===n)return s("}"),t;for(;n;){if(e=u(),c(),s(":"),Object.hasOwnProperty.call(t,e)&&o('Duplicate key "'+e+'"'),t[e]=i(),c(),"}"===n)return s("}"),t;s(","),c()}}o("Bad object")};i=function(){switch(c(),n){case"{":return h();case"[":return f();case'"':return u();case"-":return l();default:return n>="0"&&n<="9"?l():function(){switch(n){case"t":return s("t"),s("r"),s("u"),s("e"),!0;case"f":return s("f"),s("a"),s("l"),s("s"),s("e"),!1;case"n":return s("n"),s("u"),s("l"),s("l"),null}o("Unexpected '"+n+"'")}()}},e.exports=function(e,a){var s;return r=e,t=0,n=" ",s=i(),c(),n&&o("Syntax error"),"function"===typeof a?function e(t,n){var r,i,o=t[n];if(o&&"object"===typeof o)for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(void 0!==(i=e(o,r))?o[r]=i:delete o[r]);return a.call(t,n,o)}({"":s},""):s}},294:function(e){var t,n,r,i=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,a={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function o(e){return i.lastIndex=0,i.test(e)?'"'+e.replace(i,(function(e){var t=a[e];return"string"===typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+e+'"'}function s(e,i){var a,l,u,c,f,h=t,d=i[e];switch(d&&"object"===typeof d&&"function"===typeof d.toJSON&&(d=d.toJSON(e)),"function"===typeof r&&(d=r.call(i,e,d)),typeof d){case"string":return o(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(t+=n,f=[],"[object Array]"===Object.prototype.toString.apply(d)){for(c=d.length,a=0;a>>0;for(t=0;t0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var A=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,j=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,F={},z={};function Y(e,t,n,r){var i=r;"string"===typeof r&&(i=function(){return this[r]()}),e&&(z[e]=i),t&&(z[t[0]]=function(){return I(i.apply(this,arguments),t[1],t[2])}),n&&(z[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function W(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function B(e){var t,n,r=e.match(A);for(t=0,n=r.length;t=0&&j.test(e);)e=e.replace(j,r),j.lastIndex=0,n-=1;return e}var H={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function U(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(A).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])}var $="Invalid date";function q(){return this._invalidDate}var G="%d",K=/\d{1,2}/;function X(e){return this._ordinal.replace("%d",e)}var Z={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function J(e,t,n,r){var i=this._relativeTime[n];return T(i)?i(e,t,n,r):i.replace(/%d/i,e)}function ee(e,t){var n=this._relativeTime[e>0?"future":"past"];return T(n)?n(t):n.replace(/%s/i,t)}var te={};function ne(e,t){var n=e.toLowerCase();te[n]=te[n+"s"]=te[t]=e}function re(e){return"string"===typeof e?te[e]||te[e.toLowerCase()]:void 0}function ie(e){var t,n,r={};for(n in e)s(e,n)&&(t=re(n))&&(r[t]=e[n]);return r}var ae={};function oe(e,t){ae[e]=t}function se(e){var t,n=[];for(t in e)s(e,t)&&n.push({unit:t,priority:ae[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}function le(e){return e%4===0&&e%100!==0||e%400===0}function ue(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ce(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=ue(t)),n}function fe(e,t){return function(n){return null!=n?(de(this,e,n),r.updateOffset(this,t),this):he(this,e)}}function he(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function de(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&le(e.year())&&1===e.month()&&29===e.date()?(n=ce(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Je(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function pe(e){return T(this[e=re(e)])?this[e]():this}function ve(e,t){if("object"===typeof e){var n,r=se(e=ie(e)),i=r.length;for(n=0;n68?1900:2e3)};var gt=fe("FullYear",!0);function mt(){return le(this.year())}function yt(e,t,n,r,i,a,o){var s;return e<100&&e>=0?(s=new Date(e+400,t,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,n,r,i,a,o),s}function bt(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function _t(e,t,n){var r=7+t-n;return-(7+bt(e,0,r).getUTCDay()-t)%7+r-1}function xt(e,t,n,r,i){var a,o,s=1+7*(t-1)+(7+n-r)%7+_t(e,r,i);return s<=0?o=vt(a=e-1)+s:s>vt(e)?(a=e+1,o=s-vt(e)):(a=e,o=s),{year:a,dayOfYear:o}}function kt(e,t,n){var r,i,a=_t(e.year(),t,n),o=Math.floor((e.dayOfYear()-a-1)/7)+1;return o<1?r=o+wt(i=e.year()-1,t,n):o>wt(e.year(),t,n)?(r=o-wt(e.year(),t,n),i=e.year()+1):(i=e.year(),r=o),{week:r,year:i}}function wt(e,t,n){var r=_t(e,t,n),i=_t(e+1,t,n);return(vt(e)-r+i)/7}function St(e){return kt(e,this._week.dow,this._week.doy).week}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),ne("week","w"),ne("isoWeek","W"),oe("week",5),oe("isoWeek",5),Ne("w",ke),Ne("ww",ke,ye),Ne("W",ke),Ne("WW",ke,ye),Ye(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=ce(e)}));var Ct={dow:0,doy:6};function Mt(){return this._week.dow}function Dt(){return this._week.doy}function Ot(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function Tt(e){var t=kt(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function Et(e,t){return"string"!==typeof e?e:isNaN(e)?"number"===typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}function Pt(e,t){return"string"===typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Rt(e,t){return e.slice(t,7).concat(e.slice(0,t))}Y("d",0,"do","day"),Y("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),Y("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),Y("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),ne("day","d"),ne("weekday","e"),ne("isoWeekday","E"),oe("day",11),oe("weekday",11),oe("isoWeekday",11),Ne("d",ke),Ne("e",ke),Ne("E",ke),Ne("dd",(function(e,t){return t.weekdaysMinRegex(e)})),Ne("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),Ne("dddd",(function(e,t){return t.weekdaysRegex(e)})),Ye(["dd","ddd","dddd"],(function(e,t,n,r){var i=n._locale.weekdaysParse(e,r,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e})),Ye(["d","e","E"],(function(e,t,n,r){t[r]=ce(e)}));var Lt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Nt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),It="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),At=Le,jt=Le,Ft=Le;function zt(e,t){var n=a(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Rt(n,this._week.dow):e?n[e.day()]:n}function Yt(e){return!0===e?Rt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Wt(e){return!0===e?Rt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Bt(e,t,n){var r,i,a,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=p([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Be.call(this._weekdaysParse,o))?i:null:"ddd"===t?-1!==(i=Be.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=Be.call(this._minWeekdaysParse,o))?i:null:"dddd"===t?-1!==(i=Be.call(this._weekdaysParse,o))||-1!==(i=Be.call(this._shortWeekdaysParse,o))||-1!==(i=Be.call(this._minWeekdaysParse,o))?i:null:"ddd"===t?-1!==(i=Be.call(this._shortWeekdaysParse,o))||-1!==(i=Be.call(this._weekdaysParse,o))||-1!==(i=Be.call(this._minWeekdaysParse,o))?i:null:-1!==(i=Be.call(this._minWeekdaysParse,o))||-1!==(i=Be.call(this._weekdaysParse,o))||-1!==(i=Be.call(this._shortWeekdaysParse,o))?i:null}function Vt(e,t,n){var r,i,a;if(this._weekdaysParseExact)return Bt.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=p([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}}function Qt(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=Et(e,this.localeData()),this.add(e-t,"d")):t}function Ht(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Ut(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Pt(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function $t(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=At),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function qt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=jt),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Gt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ft),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Kt(){function e(e,t){return t.length-e.length}var t,n,r,i,a,o=[],s=[],l=[],u=[];for(t=0;t<7;t++)n=p([2e3,1]).day(t),r=je(this.weekdaysMin(n,"")),i=je(this.weekdaysShort(n,"")),a=je(this.weekdays(n,"")),o.push(r),s.push(i),l.push(a),u.push(r),u.push(i),u.push(a);o.sort(e),s.sort(e),l.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Xt(){return this.hours()%12||12}function Zt(){return this.hours()||24}function Jt(e,t){Y(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function en(e,t){return t._meridiemParse}function tn(e){return"p"===(e+"").toLowerCase().charAt(0)}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,Xt),Y("k",["kk",2],0,Zt),Y("hmm",0,0,(function(){return""+Xt.apply(this)+I(this.minutes(),2)})),Y("hmmss",0,0,(function(){return""+Xt.apply(this)+I(this.minutes(),2)+I(this.seconds(),2)})),Y("Hmm",0,0,(function(){return""+this.hours()+I(this.minutes(),2)})),Y("Hmmss",0,0,(function(){return""+this.hours()+I(this.minutes(),2)+I(this.seconds(),2)})),Jt("a",!0),Jt("A",!1),ne("hour","h"),oe("hour",13),Ne("a",en),Ne("A",en),Ne("H",ke),Ne("h",ke),Ne("k",ke),Ne("HH",ke,ye),Ne("hh",ke,ye),Ne("kk",ke,ye),Ne("hmm",we),Ne("hmmss",Se),Ne("Hmm",we),Ne("Hmmss",Se),ze(["H","HH"],Ue),ze(["k","kk"],(function(e,t,n){var r=ce(e);t[Ue]=24===r?0:r})),ze(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),ze(["h","hh"],(function(e,t,n){t[Ue]=ce(e),g(n).bigHour=!0})),ze("hmm",(function(e,t,n){var r=e.length-2;t[Ue]=ce(e.substr(0,r)),t[$e]=ce(e.substr(r)),g(n).bigHour=!0})),ze("hmmss",(function(e,t,n){var r=e.length-4,i=e.length-2;t[Ue]=ce(e.substr(0,r)),t[$e]=ce(e.substr(r,2)),t[qe]=ce(e.substr(i)),g(n).bigHour=!0})),ze("Hmm",(function(e,t,n){var r=e.length-2;t[Ue]=ce(e.substr(0,r)),t[$e]=ce(e.substr(r))})),ze("Hmmss",(function(e,t,n){var r=e.length-4,i=e.length-2;t[Ue]=ce(e.substr(0,r)),t[$e]=ce(e.substr(r,2)),t[qe]=ce(e.substr(i))}));var nn=/[ap]\.?m?\.?/i,rn=fe("Hours",!0);function an(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var on,sn={calendar:L,longDateFormat:H,invalidDate:$,ordinal:G,dayOfMonthOrdinalParse:K,relativeTime:Z,months:et,monthsShort:tt,week:Ct,weekdays:Lt,weekdaysMin:It,weekdaysShort:Nt,meridiemParse:nn},ln={},un={};function cn(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(r=pn(i.slice(0,t).join("-")))return r;if(n&&n.length>=t&&cn(i,n)>=t-1)break;t--}a++}return on}function dn(e){return null!=e.match("^[^/\\\\]*$")}function pn(t){var n=null;if(void 0===ln[t]&&e&&e.exports&&dn(t))try{n=on._abbr,Object(function(){var e=new Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}()),vn(n)}catch(r){ln[t]=null}return ln[t]}function vn(e,t){var n;return e&&((n=u(t)?yn(e):gn(e,t))?on=n:"undefined"!==typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),on._abbr}function gn(e,t){if(null!==t){var n,r=sn;if(t.abbr=e,null!=ln[e])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=ln[e]._config;else if(null!=t.parentLocale)if(null!=ln[t.parentLocale])r=ln[t.parentLocale]._config;else{if(null==(n=pn(t.parentLocale)))return un[t.parentLocale]||(un[t.parentLocale]=[]),un[t.parentLocale].push({name:e,config:t}),null;r=n._config}return ln[e]=new R(P(r,t)),un[e]&&un[e].forEach((function(e){gn(e.name,e.config)})),vn(e),ln[e]}return delete ln[e],null}function mn(e,t){if(null!=t){var n,r,i=sn;null!=ln[e]&&null!=ln[e].parentLocale?ln[e].set(P(ln[e]._config,t)):(null!=(r=pn(e))&&(i=r._config),t=P(i,t),null==r&&(t.abbr=e),(n=new R(t)).parentLocale=ln[e],ln[e]=n),vn(e)}else null!=ln[e]&&(null!=ln[e].parentLocale?(ln[e]=ln[e].parentLocale,e===vn()&&vn(e)):null!=ln[e]&&delete ln[e]);return ln[e]}function yn(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return on;if(!a(e)){if(t=pn(e))return t;e=[e]}return hn(e)}function bn(){return M(ln)}function _n(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[Qe]<0||n[Qe]>11?Qe:n[He]<1||n[He]>Je(n[Ve],n[Qe])?He:n[Ue]<0||n[Ue]>24||24===n[Ue]&&(0!==n[$e]||0!==n[qe]||0!==n[Ge])?Ue:n[$e]<0||n[$e]>59?$e:n[qe]<0||n[qe]>59?qe:n[Ge]<0||n[Ge]>999?Ge:-1,g(e)._overflowDayOfYear&&(tHe)&&(t=He),g(e)._overflowWeeks&&-1===t&&(t=Ke),g(e)._overflowWeekday&&-1===t&&(t=Xe),g(e).overflow=t),e}var xn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,kn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wn=/Z|[+-]\d\d(?::?\d\d)?/,Sn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Cn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Mn=/^\/?Date\((-?\d+)/i,Dn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,On={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Tn(e){var t,n,r,i,a,o,s=e._i,l=xn.exec(s)||kn.exec(s),u=Sn.length,c=Cn.length;if(l){for(g(e).iso=!0,t=0,n=u;tvt(a)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=bt(a,0,e._dayOfYear),e._a[Qe]=n.getUTCMonth(),e._a[He]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=r[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Ue]&&0===e._a[$e]&&0===e._a[qe]&&0===e._a[Ge]&&(e._nextDay=!0,e._a[Ue]=0),e._d=(e._useUTC?bt:yt).apply(null,o),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Ue]=24),e._w&&"undefined"!==typeof e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}function Yn(e){var t,n,r,i,a,o,s,l,u;null!=(t=e._w).GG||null!=t.W||null!=t.E?(a=1,o=4,n=jn(t.GG,e._a[Ve],kt(Gn(),1,4).year),r=jn(t.W,1),((i=jn(t.E,1))<1||i>7)&&(l=!0)):(a=e._locale._week.dow,o=e._locale._week.doy,u=kt(Gn(),a,o),n=jn(t.gg,e._a[Ve],u.year),r=jn(t.w,u.week),null!=t.d?((i=t.d)<0||i>6)&&(l=!0):null!=t.e?(i=t.e+a,(t.e<0||t.e>6)&&(l=!0)):i=a),r<1||r>wt(n,a,o)?g(e)._overflowWeeks=!0:null!=l?g(e)._overflowWeekday=!0:(s=xt(n,r,i,a,o),e._a[Ve]=s.year,e._dayOfYear=s.dayOfYear)}function Wn(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],g(e).empty=!0;var t,n,i,a,o,s,l,u=""+e._i,c=u.length,f=0;for(l=(i=Q(e._f,e._locale).match(A)||[]).length,t=0;t0&&g(e).unusedInput.push(o),u=u.slice(u.indexOf(n)+n.length),f+=n.length),z[a]?(n?g(e).empty=!1:g(e).unusedTokens.push(a),We(a,n,e)):e._strict&&!n&&g(e).unusedTokens.push(a);g(e).charsLeftOver=c-f,u.length>0&&g(e).unusedInput.push(u),e._a[Ue]<=12&&!0===g(e).bigHour&&e._a[Ue]>0&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[Ue]=Bn(e._locale,e._a[Ue],e._meridiem),null!==(s=g(e).era)&&(e._a[Ve]=e._locale.erasConvertYear(s,e._a[Ve])),zn(e),_n(e)}else In(e);else Tn(e)}function Bn(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}function Vn(e){var t,n,r,i,a,o,s=!1,l=e._f.length;if(0===l)return g(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis?this:e:y()}));function Zn(e,t){var n,r;if(1===t.length&&a(t[0])&&(t=t[0]),!t.length)return Gn();for(n=t[0],r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function kr(){if(!u(this._isDSTShifted))return this._isDSTShifted;var e,t={};return x(t,this),(t=Un(t))._a?(e=t._isUTC?p(t._a):Gn(t._a),this._isDSTShifted=this.isValid()&&ur(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function wr(){return!!this.isValid()&&!this._isUTC}function Sr(){return!!this.isValid()&&this._isUTC}function Cr(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Mr=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Dr=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Or(e,t){var n,r,i,a=e,o=null;return sr(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:c(e)||!isNaN(+e)?(a={},t?a[t]=+e:a.milliseconds=+e):(o=Mr.exec(e))?(n="-"===o[1]?-1:1,a={y:0,d:ce(o[He])*n,h:ce(o[Ue])*n,m:ce(o[$e])*n,s:ce(o[qe])*n,ms:ce(lr(1e3*o[Ge]))*n}):(o=Dr.exec(e))?(n="-"===o[1]?-1:1,a={y:Tr(o[2],n),M:Tr(o[3],n),w:Tr(o[4],n),d:Tr(o[5],n),h:Tr(o[6],n),m:Tr(o[7],n),s:Tr(o[8],n)}):null==a?a={}:"object"===typeof a&&("from"in a||"to"in a)&&(i=Pr(Gn(a.from),Gn(a.to)),(a={}).ms=i.milliseconds,a.M=i.months),r=new or(a),sr(e)&&s(e,"_locale")&&(r._locale=e._locale),sr(e)&&s(e,"_isValid")&&(r._isValid=e._isValid),r}function Tr(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Er(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Pr(e,t){var n;return e.isValid()&&t.isValid()?(t=dr(t,e),e.isBefore(t)?n=Er(e,t):((n=Er(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Rr(e,t){return function(n,r){var i;return null===r||isNaN(+r)||(O(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),Lr(this,Or(n,r),e),this}}function Lr(e,t,n,i){var a=t._milliseconds,o=lr(t._days),s=lr(t._months);e.isValid()&&(i=null==i||i,s&&ut(e,he(e,"Month")+s*n),o&&de(e,"Date",he(e,"Date")+o*n),a&&e._d.setTime(e._d.valueOf()+a*n),i&&r.updateOffset(e,o||s))}Or.fn=or.prototype,Or.invalid=ar;var Nr=Rr(1,"add"),Ir=Rr(-1,"subtract");function Ar(e){return"string"===typeof e||e instanceof String}function jr(e){return w(e)||f(e)||Ar(e)||c(e)||zr(e)||Fr(e)||null===e||void 0===e}function Fr(e){var t,n,r=o(e)&&!l(e),i=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],u=a.length;for(t=0;tn.valueOf():n.valueOf()9999?V(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):T(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(n,"Z")):V(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function ei(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r,i="moment",a="";return this.isLocal()||(i=0===this.utcOffset()?"moment.utc":"moment.parseZone",a="Z"),e="["+i+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n="-MM-DD[T]HH:mm:ss.SSS",r=a+'[")]',this.format(e+t+n+r)}function ti(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=V(this,e);return this.localeData().postformat(t)}function ni(e,t){return this.isValid()&&(w(e)&&e.isValid()||Gn(e).isValid())?Or({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function ri(e){return this.from(Gn(),e)}function ii(e,t){return this.isValid()&&(w(e)&&e.isValid()||Gn(e).isValid())?Or({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function ai(e){return this.to(Gn(),e)}function oi(e){var t;return void 0===e?this._locale._abbr:(null!=(t=yn(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var si=C("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function li(){return this._locale}var ui=1e3,ci=60*ui,fi=60*ci,hi=3506328*fi;function di(e,t){return(e%t+t)%t}function pi(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-hi:new Date(e,t,n).valueOf()}function vi(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-hi:Date.UTC(e,t,n)}function gi(e){var t,n;if(void 0===(e=re(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?vi:pi,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=di(t+(this._isUTC?0:this.utcOffset()*ci),fi);break;case"minute":t=this._d.valueOf(),t-=di(t,ci);break;case"second":t=this._d.valueOf(),t-=di(t,ui)}return this._d.setTime(t),r.updateOffset(this,!0),this}function mi(e){var t,n;if(void 0===(e=re(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?vi:pi,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=fi-di(t+(this._isUTC?0:this.utcOffset()*ci),fi)-1;break;case"minute":t=this._d.valueOf(),t+=ci-di(t,ci)-1;break;case"second":t=this._d.valueOf(),t+=ui-di(t,ui)-1}return this._d.setTime(t),r.updateOffset(this,!0),this}function yi(){return this._d.valueOf()-6e4*(this._offset||0)}function bi(){return Math.floor(this.valueOf()/1e3)}function _i(){return new Date(this.valueOf())}function xi(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function ki(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function wi(){return this.isValid()?this.toISOString():null}function Si(){return m(this)}function Ci(){return d({},g(this))}function Mi(){return g(this).overflow}function Di(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Oi(e,t){var n,i,a,o=this._eras||yn("en")._eras;for(n=0,i=o.length;n=0)return l[r]}function Ei(e,t){var n=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*n}function Pi(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e(a=wt(e,r,i))&&(t=a),Xi.call(this,e,t,n,r,i))}function Xi(e,t,n,r,i){var a=xt(e,t,n,r,i),o=bt(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}function Zi(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}Y("N",0,0,"eraAbbr"),Y("NN",0,0,"eraAbbr"),Y("NNN",0,0,"eraAbbr"),Y("NNNN",0,0,"eraName"),Y("NNNNN",0,0,"eraNarrow"),Y("y",["y",1],"yo","eraYear"),Y("y",["yy",2],0,"eraYear"),Y("y",["yyy",3],0,"eraYear"),Y("y",["yyyy",4],0,"eraYear"),Ne("N",Fi),Ne("NN",Fi),Ne("NNN",Fi),Ne("NNNN",zi),Ne("NNNNN",Yi),ze(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var i=n._locale.erasParse(e,r,n._strict);i?g(n).era=i:g(n).invalidEra=e})),Ne("y",Oe),Ne("yy",Oe),Ne("yyy",Oe),Ne("yyyy",Oe),Ne("yo",Wi),ze(["y","yy","yyy","yyyy"],Ve),ze(["yo"],(function(e,t,n,r){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Ve]=n._locale.eraYearOrdinalParse(e,i):t[Ve]=parseInt(e,10)})),Y(0,["gg",2],0,(function(){return this.weekYear()%100})),Y(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Vi("gggg","weekYear"),Vi("ggggg","weekYear"),Vi("GGGG","isoWeekYear"),Vi("GGGGG","isoWeekYear"),ne("weekYear","gg"),ne("isoWeekYear","GG"),oe("weekYear",1),oe("isoWeekYear",1),Ne("G",Te),Ne("g",Te),Ne("GG",ke,ye),Ne("gg",ke,ye),Ne("GGGG",Me,_e),Ne("gggg",Me,_e),Ne("GGGGG",De,xe),Ne("ggggg",De,xe),Ye(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=ce(e)})),Ye(["gg","GG"],(function(e,t,n,i){t[i]=r.parseTwoDigitYear(e)})),Y("Q",0,"Qo","quarter"),ne("quarter","Q"),oe("quarter",7),Ne("Q",me),ze("Q",(function(e,t){t[Qe]=3*(ce(e)-1)})),Y("D",["DD",2],"Do","date"),ne("date","D"),oe("date",9),Ne("D",ke),Ne("DD",ke,ye),Ne("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),ze(["D","DD"],He),ze("Do",(function(e,t){t[He]=ce(e.match(ke)[0])}));var Ji=fe("Date",!0);function ea(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}Y("DDD",["DDDD",3],"DDDo","dayOfYear"),ne("dayOfYear","DDD"),oe("dayOfYear",4),Ne("DDD",Ce),Ne("DDDD",be),ze(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=ce(e)})),Y("m",["mm",2],0,"minute"),ne("minute","m"),oe("minute",14),Ne("m",ke),Ne("mm",ke,ye),ze(["m","mm"],$e);var ta=fe("Minutes",!1);Y("s",["ss",2],0,"second"),ne("second","s"),oe("second",15),Ne("s",ke),Ne("ss",ke,ye),ze(["s","ss"],qe);var na,ra,ia=fe("Seconds",!1);for(Y("S",0,0,(function(){return~~(this.millisecond()/100)})),Y(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),Y(0,["SSS",3],0,"millisecond"),Y(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),Y(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),Y(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),Y(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),Y(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),Y(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),ne("millisecond","ms"),oe("millisecond",16),Ne("S",Ce,me),Ne("SS",Ce,ye),Ne("SSS",Ce,be),na="SSSS";na.length<=9;na+="S")Ne(na,Oe);function aa(e,t){t[Ge]=ce(1e3*("0."+e))}for(na="S";na.length<=9;na+="S")ze(na,aa);function oa(){return this._isUTC?"UTC":""}function sa(){return this._isUTC?"Coordinated Universal Time":""}ra=fe("Milliseconds",!1),Y("z",0,0,"zoneAbbr"),Y("zz",0,0,"zoneName");var la=k.prototype;function ua(e){return Gn(1e3*e)}function ca(){return Gn.apply(null,arguments).parseZone()}function fa(e){return e}la.add=Nr,la.calendar=Br,la.clone=Vr,la.diff=Kr,la.endOf=mi,la.format=ti,la.from=ni,la.fromNow=ri,la.to=ii,la.toNow=ai,la.get=pe,la.invalidAt=Mi,la.isAfter=Qr,la.isBefore=Hr,la.isBetween=Ur,la.isSame=$r,la.isSameOrAfter=qr,la.isSameOrBefore=Gr,la.isValid=Si,la.lang=si,la.locale=oi,la.localeData=li,la.max=Xn,la.min=Kn,la.parsingFlags=Ci,la.set=ve,la.startOf=gi,la.subtract=Ir,la.toArray=xi,la.toObject=ki,la.toDate=_i,la.toISOString=Jr,la.inspect=ei,"undefined"!==typeof Symbol&&null!=Symbol.for&&(la[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),la.toJSON=wi,la.toString=Zr,la.unix=bi,la.valueOf=yi,la.creationData=Di,la.eraName=Pi,la.eraNarrow=Ri,la.eraAbbr=Li,la.eraYear=Ni,la.year=gt,la.isLeapYear=mt,la.weekYear=Qi,la.isoWeekYear=Hi,la.quarter=la.quarters=Zi,la.month=ct,la.daysInMonth=ft,la.week=la.weeks=Ot,la.isoWeek=la.isoWeeks=Tt,la.weeksInYear=qi,la.weeksInWeekYear=Gi,la.isoWeeksInYear=Ui,la.isoWeeksInISOWeekYear=$i,la.date=Ji,la.day=la.days=Qt,la.weekday=Ht,la.isoWeekday=Ut,la.dayOfYear=ea,la.hour=la.hours=rn,la.minute=la.minutes=ta,la.second=la.seconds=ia,la.millisecond=la.milliseconds=ra,la.utcOffset=vr,la.utc=mr,la.local=yr,la.parseZone=br,la.hasAlignedHourOffset=_r,la.isDST=xr,la.isLocal=wr,la.isUtcOffset=Sr,la.isUtc=Cr,la.isUTC=Cr,la.zoneAbbr=oa,la.zoneName=sa,la.dates=C("dates accessor is deprecated. Use date instead.",Ji),la.months=C("months accessor is deprecated. Use month instead",ct),la.years=C("years accessor is deprecated. Use year instead",gt),la.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",gr),la.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",kr);var ha=R.prototype;function da(e,t,n,r){var i=yn(),a=p().set(r,t);return i[n](a,e)}function pa(e,t,n){if(c(e)&&(t=e,e=void 0),e=e||"",null!=t)return da(e,t,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=da(e,r,n,"month");return i}function va(e,t,n,r){"boolean"===typeof e?(c(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,c(t)&&(n=t,t=void 0),t=t||"");var i,a=yn(),o=e?a._week.dow:0,s=[];if(null!=n)return da(t,(n+o)%7,r,"day");for(i=0;i<7;i++)s[i]=da(t,(i+o)%7,r,"day");return s}function ga(e,t){return pa(e,t,"months")}function ma(e,t){return pa(e,t,"monthsShort")}function ya(e,t,n){return va(e,t,n,"weekdays")}function ba(e,t,n){return va(e,t,n,"weekdaysShort")}function _a(e,t,n){return va(e,t,n,"weekdaysMin")}ha.calendar=N,ha.longDateFormat=U,ha.invalidDate=q,ha.ordinal=X,ha.preparse=fa,ha.postformat=fa,ha.relativeTime=J,ha.pastFuture=ee,ha.set=E,ha.eras=Oi,ha.erasParse=Ti,ha.erasConvertYear=Ei,ha.erasAbbrRegex=Ai,ha.erasNameRegex=Ii,ha.erasNarrowRegex=ji,ha.months=at,ha.monthsShort=ot,ha.monthsParse=lt,ha.monthsRegex=dt,ha.monthsShortRegex=ht,ha.week=St,ha.firstDayOfYear=Dt,ha.firstDayOfWeek=Mt,ha.weekdays=zt,ha.weekdaysMin=Wt,ha.weekdaysShort=Yt,ha.weekdaysParse=Vt,ha.weekdaysRegex=$t,ha.weekdaysShortRegex=qt,ha.weekdaysMinRegex=Gt,ha.isPM=tn,ha.meridiem=an,vn("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===ce(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=C("moment.lang is deprecated. Use moment.locale instead.",vn),r.langData=C("moment.langData is deprecated. Use moment.localeData instead.",yn);var xa=Math.abs;function ka(){var e=this._data;return this._milliseconds=xa(this._milliseconds),this._days=xa(this._days),this._months=xa(this._months),e.milliseconds=xa(e.milliseconds),e.seconds=xa(e.seconds),e.minutes=xa(e.minutes),e.hours=xa(e.hours),e.months=xa(e.months),e.years=xa(e.years),this}function wa(e,t,n,r){var i=Or(t,n);return e._milliseconds+=r*i._milliseconds,e._days+=r*i._days,e._months+=r*i._months,e._bubble()}function Sa(e,t){return wa(this,e,t,1)}function Ca(e,t){return wa(this,e,t,-1)}function Ma(e){return e<0?Math.floor(e):Math.ceil(e)}function Da(){var e,t,n,r,i,a=this._milliseconds,o=this._days,s=this._months,l=this._data;return a>=0&&o>=0&&s>=0||a<=0&&o<=0&&s<=0||(a+=864e5*Ma(Ta(s)+o),o=0,s=0),l.milliseconds=a%1e3,e=ue(a/1e3),l.seconds=e%60,t=ue(e/60),l.minutes=t%60,n=ue(t/60),l.hours=n%24,o+=ue(n/24),s+=i=ue(Oa(o)),o-=Ma(Ta(i)),r=ue(s/12),s%=12,l.days=o,l.months=s,l.years=r,this}function Oa(e){return 4800*e/146097}function Ta(e){return 146097*e/4800}function Ea(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=re(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+Oa(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Ta(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}}function Pa(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*ce(this._months/12):NaN}function Ra(e){return function(){return this.as(e)}}var La=Ra("ms"),Na=Ra("s"),Ia=Ra("m"),Aa=Ra("h"),ja=Ra("d"),Fa=Ra("w"),za=Ra("M"),Ya=Ra("Q"),Wa=Ra("y");function Ba(){return Or(this)}function Va(e){return e=re(e),this.isValid()?this[e+"s"]():NaN}function Qa(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ha=Qa("milliseconds"),Ua=Qa("seconds"),$a=Qa("minutes"),qa=Qa("hours"),Ga=Qa("days"),Ka=Qa("months"),Xa=Qa("years");function Za(){return ue(this.days()/7)}var Ja=Math.round,eo={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function to(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}function no(e,t,n,r){var i=Or(e).abs(),a=Ja(i.as("s")),o=Ja(i.as("m")),s=Ja(i.as("h")),l=Ja(i.as("d")),u=Ja(i.as("M")),c=Ja(i.as("w")),f=Ja(i.as("y")),h=a<=n.ss&&["s",a]||a0,h[4]=r,to.apply(null,h)}function ro(e){return void 0===e?Ja:"function"===typeof e&&(Ja=e,!0)}function io(e,t){return void 0!==eo[e]&&(void 0===t?eo[e]:(eo[e]=t,"s"===e&&(eo.ss=t-1),!0))}function ao(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,i=!1,a=eo;return"object"===typeof e&&(t=e,e=!1),"boolean"===typeof e&&(i=e),"object"===typeof t&&(a=Object.assign({},eo,t),null!=t.s&&null==t.ss&&(a.ss=t.s-1)),r=no(this,!i,a,n=this.localeData()),i&&(r=n.pastFuture(+this,r)),n.postformat(r)}var oo=Math.abs;function so(e){return(e>0)-(e<0)||+e}function lo(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,i,a,o,s,l=oo(this._milliseconds)/1e3,u=oo(this._days),c=oo(this._months),f=this.asSeconds();return f?(e=ue(l/60),t=ue(e/60),l%=60,e%=60,n=ue(c/12),c%=12,r=l?l.toFixed(3).replace(/\.?0+$/,""):"",i=f<0?"-":"",a=so(this._months)!==so(f)?"-":"",o=so(this._days)!==so(f)?"-":"",s=so(this._milliseconds)!==so(f)?"-":"",i+"P"+(n?a+n+"Y":"")+(c?a+c+"M":"")+(u?o+u+"D":"")+(t||e||l?"T":"")+(t?s+t+"H":"")+(e?s+e+"M":"")+(l?s+r+"S":"")):"P0D"}var uo=or.prototype;return uo.isValid=ir,uo.abs=ka,uo.add=Sa,uo.subtract=Ca,uo.as=Ea,uo.asMilliseconds=La,uo.asSeconds=Na,uo.asMinutes=Ia,uo.asHours=Aa,uo.asDays=ja,uo.asWeeks=Fa,uo.asMonths=za,uo.asQuarters=Ya,uo.asYears=Wa,uo.valueOf=Pa,uo._bubble=Da,uo.clone=Ba,uo.get=Va,uo.milliseconds=Ha,uo.seconds=Ua,uo.minutes=$a,uo.hours=qa,uo.days=Ga,uo.weeks=Za,uo.months=Ka,uo.years=Xa,uo.humanize=ao,uo.toISOString=lo,uo.toString=lo,uo.toJSON=lo,uo.locale=oi,uo.localeData=li,uo.toIsoString=C("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",lo),uo.lang=si,Y("X",0,0,"unix"),Y("x",0,0,"valueOf"),Ne("x",Te),Ne("X",Re),ze("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),ze("x",(function(e,t,n){n._d=new Date(ce(e))})),r.version="2.29.4",i(Gn),r.fn=la,r.min=Jn,r.max=er,r.now=tr,r.utc=p,r.unix=ua,r.months=ga,r.isDate=f,r.locale=vn,r.invalid=y,r.duration=Or,r.isMoment=w,r.weekdays=ya,r.parseZone=ca,r.localeData=yn,r.isDuration=sr,r.monthsShort=ma,r.weekdaysMin=_a,r.defineLocale=gn,r.updateLocale=mn,r.locales=bn,r.weekdaysShort=ba,r.normalizeUnits=re,r.relativeTimeRounding=ro,r.relativeTimeThreshold=io,r.calendarFormat=Wr,r.prototype=la,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()},832:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function i(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(i){return!1}}()?Object.assign:function(e,a){for(var o,s,l=i(e),u=1;u
;\n }\n\n const chart = {\n labels: data.records.map((r) => r.selected[barGrouping.offset]),\n datasets: aggregations.map((a, i) => ({\n data: data.records.map((r) => r.aggregated[a.offset]),\n label: a.selection.name,\n backgroundColor: dataColours[i],\n })),\n };\n\n return ;\n}\n","import { FetchProps } from \"../Reports/VisualProps\";\nimport React, { PropsWithChildren, useState } from \"react\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { CodePreview } from \"./CodePreview\";\nimport { DataPreview } from \"./DataPreview\";\nimport { useBuiltQuery } from \"./useBuiltQuery\";\nimport { BuiltQuery } from \"./builtQueryModel\";\nimport { ChartPreview } from \"./ChartPreview\";\n\nfunction PlaygroundPanel({ title, children }: PropsWithChildren<{ title: string }>) {\n return (\n
\n
{title}
\n
{children}
\n
\n );\n}\n\nexport function Playground({ fetch }: FetchProps) {\n const [builtQuery, setBuiltQuery] = useState({\n select: [\n { name: \"customer\", table: \"Customer\", column: \"CustomerName\", filters: [] },\n { name: \"assigned\", table: \"CoderAssigned\", column: \"FullName\", filters: [] },\n { name: \"bugCount\", table: \"Bug\", column: \"Id\", aggregation: \"Count\", filters: [] },\n ],\n ordering: [],\n filters: [],\n });\n\n const data = useBuiltQuery(builtQuery, fetch);\n\n function headerClicked(name: string) {\n setBuiltQuery((previous) => {\n const ordering = previous.ordering.slice();\n const index = ordering.findIndex((x) => x.name === name);\n if (index !== -1) {\n const existing = ordering[index];\n if (existing.desc) {\n ordering.splice(index, 1);\n } else {\n ordering[index] = { ...existing, desc: true };\n }\n } else {\n ordering.push({ name, desc: false });\n }\n return { ...previous, ordering };\n });\n }\n\n return (\n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport \"./App.css\";\nimport { BugReporting } from \"./Reports/BugReporting\";\nimport { FetchProps } from \"./Reports/VisualProps\";\nimport { Chart, ArcElement, CategoryScale, LinearScale, BarElement, PointElement, LineElement, Legend, LineController } from \"chart.js\";\nimport { localFetch } from \"./localFetch\";\nimport { Playground } from \"./Playground\";\n\nChart.registry.add(ArcElement, CategoryScale, LinearScale, BarElement, PointElement, LineElement, Legend, LineController);\n\nChart.defaults.font.family = \"Segoe UI, 'Helvetica', 'Arial', sans-serif\";\nif (Chart.defaults.plugins.legend && Chart.defaults.plugins.legend.labels) {\n Chart.defaults.plugins.legend.labels.usePointStyle = true;\n}\n\nChart.defaults.maintainAspectRatio = false;\n\nconst reports = {\n Playground: (f: FetchProps) => ,\n \"Bug Tracking\": (f: FetchProps) => ,\n};\n\ntype ReportName = keyof typeof reports;\n\nconst reportNames = Object.keys(reports) as ReportName[];\n\nconst defaultReport: ReportName = \"Playground\";\n\nfunction App() {\n const [reportName, setReportName] = useState(defaultReport);\n\n const report = reports[reportName];\n\n return (\n
\n
\n {reportNames.map((n) => (\n
setReportName(n)}>\n {n}\n
\n ))}\n
\n
{report({ fetch: localFetch })}
\n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["module","exports","reISO","reMsAjax","_","value","parsedValue","a","exec","Date","b","split","json","JSON","require","obj","opts","cmp","space","Array","join","f","cycles","replacer","key","node","aobj","bobj","seen","stringify","parent","level","indent","colonSeparator","toJSON","undefined","call","isArray","out","i","length","item","push","indexOf","TypeError","keys","objectKeys","sort","keyValue","splice","x","toString","Object","has","prototype","hasOwnProperty","parse","at","ch","text","escapee","n","r","t","error","m","name","message","next","c","charAt","number","string","isFinite","hex","uffff","parseInt","String","fromCharCode","white","array","object","word","source","reviver","result","walk","holder","k","v","gap","rep","escapable","meta","quote","lastIndex","test","replace","charCodeAt","slice","str","partial","mind","apply","Error","hookCallback","some","hooks","arguments","setHookCallback","callback","input","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","map","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","stack","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","test1","test2","test3","letter","err","shouldUseNative","target","symbols","aa","encodeURIComponent","ba","Set","ca","da","ea","fa","window","document","createElement","ha","ia","ja","ka","B","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","D","oa","pa","qa","ma","na","la","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","iterator","La","Na","trim","Oa","Pa","prepareStackTrace","defineProperty","Reflect","construct","displayName","Qa","tag","render","_render","Ra","$$typeof","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","children","Children","db","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","style","setProperty","substring","ub","menuitem","area","br","col","embed","hr","img","keygen","link","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","addEventListener","removeEventListener","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","child","sibling","current","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","id","bind","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","location","repeat","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","email","password","range","search","tel","url","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","href","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","start","selectionStart","end","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","instance","listener","G","$e","af","bf","random","cf","df","capture","passive","Nb","z","q","ef","ff","parentWindow","gf","hf","J","K","Q","je","char","ke","unshift","jf","kf","lf","mf","autoFocus","nf","__html","of","setTimeout","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","N","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","O","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","defaultProps","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","context","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","A","p","C","Dg","Eg","Fg","Component","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","contextType","state","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","ref","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","elementType","Vg","implementation","Wg","Xg","done","Yg","Zg","$g","ah","bh","dh","eh","documentElement","tagName","fh","gh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","R","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","subscribe","useEffect","setSnapshot","Oh","Ph","Qh","Rh","create","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","hi","ji","compare","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","getDerivedStateFromError","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","V","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","element","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","then","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","Fragment","__self","__source","jsx","jsxs","StrictMode","Profiler","Suspense","setState","forceUpdate","escape","_status","_result","default","IsSomeRendererActing","count","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","method","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","resolve","reject","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","reverse","pop","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","parseDate","detectDateType","every","fillDates","records","fill","results","latest","lower","increment","upper","monthFirst","monthLast","__exportStar","label","selectedLabel","setSelectedLabel","onChange","find","_b","react_2","title","react_1","className","FlowerBIChartBox_1","LayoutElement","dimension","sizes","otherProps","nonNullSizes","totalSize","reduce","_c","flexDirection","__assign","renderCell","def","align","column","flowerbi_1","totals","useFlowerBI","fetch","query","queryJson","jsonifyQuery","setResult","disposed","dependency","nonEmpty","expandQueryResult","select","calculations","clearedState","global","interactions","interactionKey","clearInteraction","setInteraction","setGlobal","clearGlobal","clearAll","getFilters","QueryColumnDataType","dataType","targetColumn","QueryColumn","aggregationType","filters","function","aggregation","operator","descending","_super","__extends","NumericQueryColumn","IntegerQueryColumn","mask","constant","StringQueryColumn","QueryValuesRow","rawValue","percent","QueryValuesTotal","jsonifyCalculation","calculation","first","orderBy","take","skip","comment","allowDuplicates","columnProps","getColumnPropsOnly","aggregationProps","getAggregatePropsOnly","calculationProps","keysOf","aggregations","selects","jsonifyOrdering","expandQueryRecord","calcs","aggregated","getAggregateValuesOnly","resultJson","QueryColumn_1","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__esModule","definition","nmd","paths","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_slicedToArray","_s","_e","_arr","_n","_defineProperty","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_toConsumableArray","QueryColumnRuntimeType","CalendarYearNumber","FirstDayOfQuarter","FirstDayOfMonth","DateReported","DateResolved","DateAssigned","Workflow","Resolved","WorkflowState","SourceOfError","FixedByCustomer","Category","Label","Customer","CustomerName","Coder","FullName","CoderAssigned","CoderResolved","CategoryCombination","Crashed","DataLoss","SecurityBreach","OffByOne","Slow","StackOverflow","Bug","WorkflowId","CustomerId","ReportedDate","ResolvedDate","AssignedDate","CategoryCombinationId","AssignedCoderId","ResolvedCoderId","BugSchema","dataColours","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_assertThisInitialized","ReferenceError","_getPrototypeOf","_superPropBase","_get","receiver","desc","_setPrototypeOf","_inherits","subClass","superClass","_typeof","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","Super","NewTarget","_createForOfIteratorHelper","allowArrayLike","it","normalCompletion","didErr","step","_e2","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","requestAnimFrame","throttled","thisArg","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","_alignStartEnd","uid","isNullOrUndef","isNumberFinite","Number","finiteOrDefault","valueOrDefault","toDimension","endsWith","each","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","idx","resolveObjectKey","_capitalize","defined","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","fraction","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","atEdge","elasticIn","sin","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","h1","h2","eq","hexString","isShort","lim","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","names$1","map$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","unpack","transparent","modHSL","ratio","fromObject","functionParse","rgbParse","Color","hexParse","_rgb","_valid","hslString","weight","w2","c1","c2","w1","deg","rotate","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","saturate","darken","overrides","descriptors","getScope$1","root","scope","Defaults","_descriptors","backgroundColor","borderColor","datasets","devicePixelRatio","chart","platform","getDevicePixelRatio","elements","events","font","family","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","startsWith","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","rect","borderWidth","stroke","_isPointInArea","point","margin","right","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","line","lines","strokeColor","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","cacheable","parentContext","_lookup","table","mid","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","items","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","deleteProperty","_keys","_cached","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","includes","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_subProxy","_stack","setContext","override","isScriptable","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","resolver","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","readKey","resolveFallback","getScope","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","monotoneAdjust","deltaK","mK","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointsLen","pointAfter","monotoneCompute","delta","pointBefore","valueAxis","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","styles","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","native","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","cacheKey","formatter","Intl","NumberFormat","getNumberFormat","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","segment","bounds","prevValue","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","initial","currentStep","_update","_refresh","remaining","running","draw","_active","_total","tick","_notify","charts","progress","_getAnims","acc","cur","_duration","cancel","animator","interpolators","boolean","factor","c0","valid","mix","Animation","cfg","currentValue","_fn","_easing","easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","promises","rej","resolved","animationOptions","colors","numbers","active","resize","show","animations","visible","hide","Animations","_properties","configure","animatedProps","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","update","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","otherValue","singleMode","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iScale","iAxis","axis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","initialize","linkScales","_stacked","addElements","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","getLabels","singleScale","xAxisKey","yAxisKey","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","getUserBounds","minDefined","maxDefined","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","_clip","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","_resolveAnimations","getSharedOptions","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","computeMinSampleSize","curr","_cache","$bar","visibleMetas","getAllParsedValues","getAllScaleValues","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","grid","_value_","beginAtZero","BubbleController","getPixelForDecimal","tooltip","DoughnutController","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_getRotationExtents","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","abstract","DateAdapter","timestamp","amount","members","adapters","_date","getRelativePosition$1","binarySearch","metaset","lookupMethod","_reversePixels","getRange","optimizedEvaluateItems","position","handler","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","evaluateAllVisibleItems","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","layout","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","setBoxDims","placeBoxes","userPadding","padding","autoPadding","_layers","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","addListener","DomPlatform","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","Element","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","offsetFromEdge","sample","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","PluginService","hook","_createDescriptors","plugin","_oldCache","_notifyStateChanges","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","getResolver","subPrefixes","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","debounce","resizeDelay","listen","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","init","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","getElement","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","remove","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p8","inner","lineJoin","fullCircles","drawFullCircleBorders","unregister","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","rtlHelper","hitbox","_draw","cursor","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","_args","adjustHitBoxes","afterEvent","handleEvent","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","findOrAddLabel","addedLabels","addIfString","lastIndexOf","CategoryScale","_startValue","_valueRange","_addedLabels","added","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","_maxDigits","LinearScale","handleTickRangeOptions","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","_padding","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","textSize","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","labelCount","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","common","steps","UNITS","sorter","adapter","_adapter","_parseOpts","parser","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","interpolate","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","cloneData","nextData","ChartComponent","redraw","fallbackContent","canvasRef","chartRef","renderChart","ChartJS","destroyChart","nextOptions","role","createTypedChart","registerables","Bar","Pie","ResolvedPerCustomer","pageFilters","customer","bugCount","equalTo","useQuery","FlowerBIChartBox","clicked","SourceOfErrors","sourceOfError","categories","TypesOfError","categoryBits","workflowState","distinctWorkflowStates","distinct","bugCountByStateAndCategory","flatMap","category","bit","bugCountByCategory","orderedCategories","colour","RecoverySummary","fixedByCustomer","resolvedBugCount","FlowerBITable","State","Count","percentage","dateGroupings","BugsOverTime","dateGrouping","useDropDown","countAllCauses","countHackers","ascending","datedRecords","dateLabel","hackers","allCauses","DropDown","toDateString","useDateInput","editing","setEditing","applied","setApplied","dirty","initCounter","useFilterPane","setVisible","lastYear","greaterThanOrEqualTo","lessThanOrEqualTo","toggle","FilterPane","filterPane","BugReporting","usePageFilters","Layout","Column","Row","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","allocDb","publicUrl","sitePublicUrl","initSqlJs","locateFile","SQL","setupDb","Database","getDb","makeRandomDate","setDate","formatDate","moment","pick","sourcesOfError","dateRows","startOfQuarter","startOfMonth","workflows","workflowRows","categoryCombinations","categoryCombinationsRows","bugs","workflow","reported","assigned","catComb","coderAssigned","coderResolved","bugRows","initSql","run","latestSql","latestError","querySql","sql","started","finished","blazorReady","notifyBlazorReady","localFetch","DotNet","invokeMethodAsync","jsonDateParser","stackTrace","firstValueIndex","endOfSelects","getUpdatedValue","updaterFunc","useLensOnArray","deletion","itemSetter","itemUpdater","previousList","previousItem","updatedItem","updatedList","useLensOnObject","propertySetter","propertyUpdater","previousObject","Select","Input","aggregationTypes","nonNumericAggregationTypes","aggregationsForDataType","getColumnDataType","getTypedFilterValue","dt","boolOperators","stringOrNumberOperators","intOperators","stringOperators","operatorsForDataType","getColumnsWithOffsets","usedNames","nextSelected","nextAggregated","selection","createDefaultFilter","isDeletion","FilterRow","setFilters","nested","setFilter","setTable","setColumn","setOperator","colSpan","SelectionRow","selections","setSelections","nextDefaultName","others","getDefaultName","createDefaultSelection","createDefaultWithName","setSelection","setAggregation","setName","expanded","setExpanded","toggleExpanded","realFilters","QueryBuilder","realSelections","generateFilters","typedValue","literal","aggregationMethod","filterText","filterLines","CodePreview","DataPreview","onHeaderClick","getOrderingIcon","orderings","builtFilters","useBuiltQuery","setData","jsonFromBuiltQuery","queryJsonString","ChartPreview","barGrouping","PlaygroundPanel","Playground","builtQuery","setBuiltQuery","existing","reports","reportNames","reportName","setReportName","report","hostname","ReactDOM","navigator","serviceWorker","ready","registration","catch"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/demo/static/js/main.ff6b2410.js.map b/docs/demo/static/js/main.ff6b2410.js.map deleted file mode 100644 index 9a2df5cf..00000000 --- a/docs/demo/static/js/main.ff6b2410.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.ff6b2410.js","mappings":"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","sources":["../../../node_modules/@babel/runtime/regenerator/index.js","../../../node_modules/json-date-parser/index.ts","../../../node_modules/json-stable-stringify/index.js","../../../node_modules/jsonify/index.js","../../../node_modules/jsonify/lib/parse.js","../../../node_modules/jsonify/lib/stringify.js","../../../node_modules/moment/moment.js","../../../node_modules/object-assign/index.js","../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/react-dom/index.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/regenerator-runtime/runtime.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/scheduler/index.js","../../flowerbi-dates/src/fillDates.ts","../../flowerbi-dates/src/index.ts","../../flowerbi-react-utils/src/DropDown.tsx","../../flowerbi-react-utils/src/FlowerBIChartBox.tsx","../../flowerbi-react-utils/src/FlowerBIValueBox.tsx","../../flowerbi-react-utils/src/Layouts.tsx","../../flowerbi-react-utils/src/index.ts","../../flowerbi-react/src/FlowerBITable.tsx","../../flowerbi-react/src/index.ts","../../flowerbi-react/src/useFlowerBI.ts","../../flowerbi-react/src/usePageFilters.ts","../../flowerbi/src/QueryColumn.ts","../../flowerbi/src/QueryValues.ts","../../flowerbi/src/arrayHelpers.ts","../../flowerbi/src/executeQuery.ts","../../flowerbi/src/index.ts","../../flowerbi/src/queryModel.ts","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/node module decorator","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","demoSchema.ts","Reports/dataColours.ts","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../../../node_modules/@babel/runtime/helpers/esm/get.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/esm/createSuper.js","../../../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/chart.js/dist/chunks/helpers.segment.js","../../../node_modules/chart.js/dist/chart.esm.js","../../../node_modules/react-chartjs-2/src/utils.ts","../../../node_modules/react-chartjs-2/src/chart.tsx","../../../node_modules/react-chartjs-2/src/typedCharts.tsx","Reports/ResolvedPerCustomer.tsx","Reports/SourceOfErrors.tsx","Reports/TypesOfError.tsx","Reports/RecoverySummary.tsx","Reports/BugsOverTime.tsx","FilterPane.tsx","Reports/BugReporting.tsx","../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","database.ts","localFetch.ts","Playground/lensHooks.ts","Playground/Select.tsx","Playground/Input.tsx","Playground/builtQueryModel.ts","Playground/FilterRow.tsx","Playground/SelectionRow.tsx","Playground/QueryBuilder.tsx","Playground/CodePreview.tsx","Playground/DataPreview.tsx","Playground/useBuiltQuery.ts","Playground/ChartPreview.tsx","Playground/index.tsx","App.tsx","serviceWorker.ts","index.tsx"],"sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","\nvar reISO = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.{0,1}\\d*))(?:Z|(\\+|-)([\\d|:]*))?$/;\nvar reMsAjax = /^\\/Date\\((d|-|.*)\\)[\\/|\\\\]$/;\n\nexport function jsonDateParser(_: string, value: any) {\n \n var parsedValue = value;\n if (typeof value === 'string') {\n var a = reISO.exec(value);\n if (a) {\n parsedValue = new Date(value);\n } else {\n a = reMsAjax.exec(value);\n if (a) {\n var b = a[1].split(/[-+,.]/);\n parsedValue = new Date(b[0] ? +b[0] : 0 - +b[1]);\n }\n }\n }\n \n return parsedValue;\n}\n","var json = typeof JSON !== 'undefined' ? JSON : require('jsonify');\n\nmodule.exports = function (obj, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var space = opts.space || '';\n if (typeof space === 'number') space = Array(space+1).join(' ');\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n var replacer = opts.replacer || function(key, value) { return value; };\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (parent, key, node, level) {\n var indent = space ? ('\\n' + new Array(level + 1).join(space)) : '';\n var colonSeparator = space ? ': ' : ':';\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n node = replacer.call(parent, key, node);\n\n if (node === undefined) {\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node);\n }\n if (isArray(node)) {\n var out = [];\n for (var i = 0; i < node.length; i++) {\n var item = stringify(node, i, node[i], level+1) || json.stringify(null);\n out.push(indent + space + item);\n }\n return '[' + out.join(',') + indent + ']';\n }\n else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n else seen.push(node);\n\n var keys = objectKeys(node).sort(cmp && cmp(node));\n var out = [];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node, key, node[key], level+1);\n\n if(!value) continue;\n\n var keyValue = json.stringify(key)\n + colonSeparator\n + value;\n ;\n out.push(indent + space + keyValue);\n }\n seen.splice(seen.indexOf(node), 1);\n return '{' + out.join(',') + indent + '}';\n }\n })({ '': obj }, '', obj, 0);\n};\n\nvar isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n var has = Object.prototype.hasOwnProperty || function () { return true };\n var keys = [];\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","exports.parse = require('./lib/parse');\nexports.stringify = require('./lib/stringify');\n","var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n },\n text,\n\n error = function (m) {\n // Call error when something is wrong.\n throw {\n name: 'SyntaxError',\n message: m,\n at: at,\n text: text\n };\n },\n \n next = function (c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n }\n \n // Get the next character. When there are no more characters,\n // return the empty string.\n \n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n \n number = function () {\n // Parse a number value.\n var number,\n string = '';\n \n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error(\"Bad number\");\n } else {\n return number;\n }\n },\n \n string = function () {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n \n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n } else if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error(\"Bad string\");\n },\n\n white = function () {\n\n// Skip whitespace.\n\n while (ch && ch <= ' ') {\n next();\n }\n },\n\n word = function () {\n\n// true, false, or null.\n\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error(\"Unexpected '\" + ch + \"'\");\n },\n\n value, // Place holder for the value function.\n\n array = function () {\n\n// Parse an array value.\n\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error(\"Bad array\");\n },\n\n object = function () {\n\n// Parse an object value.\n\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error(\"Bad object\");\n };\n\nvalue = function () {\n\n// Parse a JSON value. It could be an object, an array, a string, a number,\n// or a word.\n\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n};\n\n// Return the json_parse function. It will have access to all of the above\n// functions and variables.\n\nmodule.exports = function (source, reviver) {\n var result;\n \n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error(\"Syntax error\");\n }\n\n // If there is a reviver function, we recursively walk the new structure,\n // passing each name/value pair to the reviver function for possible\n // transformation, starting with a temporary root object that holds the result\n // in an empty key. If there is not a reviver function, we simply return the\n // result.\n\n return typeof reviver === 'function' ? (function walk(holder, key) {\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }({'': result}, '')) : result;\n};\n","var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\nfunction quote(string) {\n // If the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // Otherwise we must also replace the offending characters with safe escape\n // sequences.\n \n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n // Produce a string from holder[key].\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n \n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n \n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n \n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n \n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n \n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n \n case 'object':\n if (!value) return 'null';\n gap += indent;\n partial = [];\n \n // Array.isArray\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n \n // Join all of the elements together, separated with commas, and\n // wrap them in brackets.\n v = partial.length === 0 ? '[]' : gap ?\n '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n \n // If the replacer is an array, use it to select the members to be\n // stringified.\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n k = rep[i];\n if (typeof k === 'string') {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n else {\n // Otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n \n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n v = partial.length === 0 ? '{}' : gap ?\n '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n}\n\nmodule.exports = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n \n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n }\n // If the space parameter is a string, it will be used as the indent string.\n else if (typeof space === 'string') {\n indent = space;\n }\n\n // If there is a replacer, it must be a function or an array.\n // Otherwise, throw an error.\n rep = replacer;\n if (replacer && typeof replacer !== 'function'\n && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n \n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {'': value});\n};\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import moment, { Moment } from \"moment\";\n\nexport type FillDate = Date | string | number | Moment;\n\nfunction parseDate(val: FillDate) {\n // Ensure a numeric year is not interpreted as offset from 1970!\n if (typeof val === \"number\") {\n val = \"\" + val;\n }\n\n return moment(val);\n}\n\n/**\n * Three operations on dates used by {@link fillDates}.\n */\nexport type FillDateType = {\n /** Round the given date down to the nearest whole unit (e.g. start of month, quarter, year) */\n round(d: Moment): Moment;\n /** Format the given date to a string */\n format(d: Moment): string;\n /** Increment the date by the unit. The given date will already be rounded down. */\n increment(d: Moment): Moment;\n};\n\nconst days: FillDateType = {\n round(d) {\n return d.clone().startOf(\"day\");\n },\n format(d) {\n return d.format(\"ll\");\n },\n increment(d) {\n return d.clone().add(1, \"day\");\n },\n};\n\nconst months: FillDateType = {\n round(d) {\n return d.clone().startOf(\"month\");\n },\n format(d) {\n return d.format(\"MMM YYYY\");\n },\n increment(d) {\n return d.clone().add(1, \"month\");\n },\n};\n\nconst quarters: FillDateType = {\n round(d) {\n return d.clone().startOf(\"quarter\");\n },\n format(d) {\n const monthFirst = d.format(\"MMM\");\n const monthLast = d.clone().add(2, \"months\").format(\"MMM\");\n const year = d.format(\"YYYY\");\n return `${monthFirst}-${monthLast} ${year}`;\n },\n increment(d) {\n return d.clone().add(3, \"months\");\n },\n};\n\nconst years: FillDateType = {\n round(d) {\n return d.clone().startOf(\"year\");\n },\n format(d) {\n return d.format(\"YYYY\");\n },\n increment(d) {\n return d.clone().add(1, \"year\");\n },\n};\n\n/**\n * Standard built-in date types. To customise, implement the {@link FillDateType} interface.\n */\nexport const dateTypes = {\n days,\n months,\n quarters,\n years,\n} as const;\n\n/**\n * Examines a set of dates and chooses the most specific type that includes them all. If\n * all fall on Jan, 1 then `years` is chosen, and so on.\n */\nexport function detectDateType(dates: Moment[]): FillDateType {\n return !dates.every((x) => x.date() === 1)\n ? dateTypes.days\n : !dates.every((x) => x.month() % 3 === 0)\n ? dateTypes.months\n : !dates.every((x) => x.month() === 0)\n ? dateTypes.quarters\n : dateTypes.years;\n}\n\n/** Options for {@link fillDates} function. */\nexport interface FillDatesOptions {\n /** The records to base the filled list on. */\n records: T[];\n /** The operations to use for rounding, incrementing and formatting dates. */\n type?: FillDateType;\n /** Extracts a date value from a record in the input list. */\n getDate(record: T): FillDate;\n /**\n * Generate a record for a date, from the formatted {@link dateText} and\n * the input record for that date, if any.\n */\n fill(dateText: string, record: T | undefined): R;\n /**\n * The minimum date to generate. It will be rounded down by the {@link type}\n * so doesn't need to be on an exact boundary.\n */\n min?: FillDate;\n /**\n * The maximum date to generate. It will be rounded down by the {@link type}\n * so doesn't need to be on an exact boundary.\n */\n max?: FillDate;\n}\n\n/**\n * When querying for a time series chart, e.g. x-axis is _Month_ and y-axis is\n * _Total Sales_, there may be months where nothing was sold so they are\n * missing from the list of records.\n *\n * To render a proper time-series, we need these gaps to be filled in with\n * runs of fake records that give zero amounts for those months. e.g.\n *\n * ```ts\n * const filled = fillDates({\n * records: [\n * { date: '2020-04-01', totalSales: 10 },\n * { date: '2020-06-01', totalSales: 4 },\n * { date: '2020-07-01', totalSales: 9 },\n * ],\n * type: dateTypes.months,\n * getDate: rec => rec.date,\n * fill: (label, rec) => ({\n * label,\n * totalSales: 0,\n * ...rec\n * })\n * });\n * ```\n *\n * In the above example we add a `label` property to all the records, and\n * for the records that fill the gaps we set the `totalSales` property to 0.\n * For the real records, `...rec` will copy the real value of `totalSales`.\n *\n * To do this, we need to know:\n *\n * - how to round a date to the start of a unit (year, month, quarter),\n * - how to increment a date by that unit,\n * - how to format a date to a string for display.\n *\n * These operations are encapsulated by the {@link FillDateType} interface.\n * Several built-in types are provided in {@link dateTypes}, but you can\n * implement your own.\n *\n * Optionally you can also pass `min` and `max` dates, which will cause\n * extra records to be added at the start and end of the range if necessary.\n *\n * If you don't pass a `type`, a suitable type will be detected based on\n * how the input record dates fall on unit boundaries.\n */\nexport function fillDates({ records, getDate, fill, min, max, type }: FillDatesOptions) {\n records = [...records];\n records.sort((x, y) => parseDate(getDate(x)).diff(parseDate(getDate(y))));\n\n type = type ?? detectDateType(records.map((d) => parseDate(getDate(d))));\n\n const results: R[] = [];\n let latest: Moment | undefined = undefined;\n const lower = min ? type.round(parseDate(min)) : undefined;\n\n for (const record of records) {\n const d = getDate(record);\n if (!d) continue;\n\n const current = parseDate(d);\n\n for (;;) {\n latest = latest ? type.increment(latest) : lower;\n if (!latest || latest >= current) {\n break;\n }\n\n results.push(fill(type.format(latest), undefined));\n }\n\n results.push(fill(type.format(current), record));\n latest = current;\n }\n\n if (latest && max) {\n const upper = type.round(parseDate(max));\n for (;;) {\n latest = type.increment(latest);\n if (latest > upper) {\n break;\n }\n\n results.push(fill(type.format(latest), undefined));\n }\n }\n\n return results;\n}\n\n/** @deprecated */\nexport function smartDates(\n records: T[],\n min: FillDate | undefined,\n max: FillDate | undefined,\n getDate: (record: T) => FillDate,\n fill: (dateText: string, record: T | undefined) => R\n) {\n return fillDates({ records, min, max, getDate, fill });\n}\n","export * from \"./fillDates\";\n","import { useState } from \"react\";\nimport React from \"react\";\n\nexport interface DropDownOption {\n label: string;\n value: T;\n}\n\nexport function useDropDown(options: DropDownOption[]) {\n const [selectedLabel, setSelectedLabel] = useState(options[0].label);\n return {\n options: options.map(x => x.label),\n value: selectedLabel,\n onChange(e: React.ChangeEvent) {\n setSelectedLabel(e.target.value);\n },\n get selected() {\n return options.find(x => x.label === selectedLabel)?.value ??\n options[0].value;\n }\n }\n}\n\nexport interface DropDownProps {\n options: string[],\n value: string,\n onChange(e: React.ChangeEvent): void;\n}\n\nexport function DropDown({options, value, onChange}: DropDownProps) {\n return (\n \n );\n}\n","import React, { ReactNode } from \"react\";\n\nexport interface FlowerBIChartBox extends React.HTMLAttributes {\n id?: string;\n title?: string; \n children?: ReactNode | ReactNode[];\n state?: string;\n} \n\nexport function FlowerBIChartBox({id, title, children, state}: FlowerBIChartBox) {\n return (\n
\n
{title}
\n
\n {state === \"init\" ? (\n
Loading...
\n ) : (\n <>{children}\n )}\n
\n
\n );\n}\n","import React from \"react\";\nimport { FlowerBIChartBox } from \"./FlowerBIChartBox\";\n\nexport interface FlowerBIValueBoxProps {\n id?: string;\n value?: string|number;\n title?: string;\n label?: string; \n}\n\nexport function FlowerBIValueBox({ id, value, title, label }: FlowerBIValueBoxProps) { \n return (\n \n
\n
{value}
\n
{label}
\n
\n
\n );\n}\n","import React from \"react\";\n\ninterface LayoutElementCoreProps extends React.HTMLAttributes {\n sizes?: number[];\n children: React.ReactNode | React.ReactNode[];\n}\n\ninterface LayoutElementProps extends LayoutElementCoreProps {\n type: \"row\" | \"column\";\n dimension: \"width\" | \"height\";\n}\n\nfunction LayoutElement({ children, type, dimension, sizes, ...otherProps }: LayoutElementProps) {\n const nonNullSizes = sizes ?? [];\n const totalSize = React.Children.map(children, ((_, i) => nonNullSizes[i] ?? 1))?.reduce((l, r) => l + r, 0) ?? 0; \n const unit = totalSize ? 100 / totalSize : 0;\n\n return (\n
\n {React.Children.map(children, ((child, i) => (\n
\n {child}\n
\n )))}\n
\n );\n}\n\nexport const Row = (props: LayoutElementCoreProps) => ;\nexport const Column = (props: LayoutElementCoreProps) => ;\n\nexport interface LayoutProps extends React.HTMLAttributes {\n children: React.ReactNode | React.ReactNode[];\n}\n\nexport function Layout({ children, ...otherProps }: LayoutProps) {\n return
{children}
;\n}\n","export * from \"./DropDown\";\nexport * from \"./Layouts\";\nexport * from \"./FlowerBIChartBox\";\nexport * from \"./FlowerBIValueBox\";\n","import React from \"react\";\nimport { QueryValues, QueryValuesRow, QueryValuesTotal, ExpandedQueryResult, QuerySelect, QueryCalculations } from \"flowerbi\";\n\nexport type ColumnDefinition = string | [string, \"left\" | \"right\"];\n\nfunction renderCell(key: string, def: ColumnDefinition) {\n const value = typeof def === \"string\" ? def : def[0];\n const align = typeof def === \"string\" ? \"left\" : def[1];\n\n return (\n \n {value}\n \n );\n}\n\nexport type FlowerBITableProps> = {\n data: ExpandedQueryResult;\n columns: {\n [label: string]: (record: QueryValues) => ColumnDefinition;\n };\n};\n\nexport function FlowerBITable>({ data, columns }: FlowerBITableProps) {\n return (\n \n \n \n {Object.keys(columns).map((column) => (\n \n ))}\n \n \n \n {data.records.map((record, i) => (\n \n {Object.keys(columns).map((column) => renderCell(column, columns[column](new QueryValuesRow(record, data.totals))))}\n \n ))}\n \n {data.totals && (\n \n {Object.keys(columns).map((column) => renderCell(column, columns[column](new QueryValuesTotal(data.totals!))))}\n \n )}\n
{column}
\n );\n}\n","export * from \"./FlowerBITable\";\nexport * from \"./usePageFilters\";\nexport * from \"./useFlowerBI\";\n","import { useState, useEffect } from \"react\";\nimport { Query, QueryFetch, jsonifyQuery, QueryResultJson, QuerySelect, expandQueryResult, ExpandedQueryResult, QueryCalculations } from \"flowerbi\";\nimport stableStringify from \"json-stable-stringify\";\n\nexport type UseQueryState = \"init\" | \"ready\" | \"refresh\" | \"error\";\n\nexport interface UseQueryResult> extends ExpandedQueryResult {\n /**\n * The state of the query operation:\n *\n * - `init` - no result has been downloaded yet\n * - `ready` - result has been downloaded\n * - `refresh` - a new result is being downloaded\n * - `error` - most recent query attempt failed\n */\n state: UseQueryState;\n}\n\n/**\n * Defines another query on which our query depends - for example a\n * first query may return the top 10 vendors, and a subsequent query\n * may then use an `in` filter to get details about those 10 vendors.\n */\nexport type QueryDependency = {\n /**\n * The result of the query we depend on\n */\n dependency: UseQueryResult>;\n /**\n * If true (default is false) then if the dependency query produces\n * an empty result, our query should also produce an empty result,\n * so there is no need to execute it.\n */\n nonEmpty?: boolean;\n};\n\n/**\n * A custom React hook that evaluates to the result of a\n * [Query](../flowerbi/interfaces/query.html), making it easy to perform a\n * query from within a component.\n *\n * The returned object has a strongly-typed `records` array, and optionally\n * a `totals` object. It has a `state` of type {@link UseQueryState} that\n * can be used to show a loading indicator.\n *\n * @param fetch The fetch function to use.\n * @param query The [Query](../flowerbi/interfaces/query.html) specification.\n * @param dependencies Optionally, a list of one or more other queries whose\n * results are used to build this query, so we wait for them before executing,\n * and optionally short-circuit to an empty result if the dependency is empty.\n */\nexport function useFlowerBI>(\n fetch: QueryFetch,\n query: Query,\n dependencies?: QueryDependency[]\n): UseQueryResult {\n const queryJson = jsonifyQuery(query);\n\n const [state, setState] = useState(\"init\");\n const [result, setResult] = useState({ records: [] });\n\n useEffect(() => {\n let disposed = false; // discard stale results\n\n if (dependencies?.length) {\n // if any not ready, neither are we\n if (dependencies.some((x) => x.dependency.state !== \"ready\")) {\n if (state !== \"init\") {\n setState(\"refresh\");\n }\n return;\n }\n\n // if any with option nonEmpty produced empty result, so do we\n if (dependencies.filter((x) => !!x.nonEmpty).some((x) => !x.dependency.records.length)) {\n setState(\"ready\");\n setResult({ records: [] });\n return;\n }\n }\n\n if (state !== \"init\") {\n setState(\"refresh\");\n }\n\n fetch(queryJson).then(\n (x) => {\n if (!disposed) {\n setState(\"ready\");\n setResult(x);\n }\n },\n () => {\n if (!disposed) {\n setState(\"error\");\n }\n }\n );\n\n return () => {\n disposed = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fetch, stableStringify(queryJson)]);\n\n return { ...expandQueryResult(query.select, result, query.calculations), state };\n}\n\n/**\n * Alias of useFlowerBI for backward compatibility.\n */\nexport const useQuery = useFlowerBI;\n","import { useState } from \"react\";\nimport { FilterJson } from \"flowerbi\";\nimport stableStringify from \"json-stable-stringify\";\n\nexport interface PageFiltersState {\n readonly global: FilterJson[];\n readonly interactions: FilterJson[];\n readonly interactionKey: string;\n}\n\nexport interface PageFilters extends PageFiltersState {\n setInteraction(key: string, filters: FilterJson[]): void;\n setGlobal(filters: FilterJson[]): void;\n clearInteraction(): void;\n clearGlobal(): void;\n clearAll(): void;\n getFilters(key: string): FilterJson[];\n}\n\nconst clearedState: PageFiltersState = {\n global: [],\n interactions: [],\n interactionKey: \"\",\n};\n\nexport function usePageFilters(): PageFilters {\n const [state, set] = useState(clearedState);\n function setInteraction(interactionKey: string, interactions: FilterJson[]) {\n console.log(interactionKey, state.interactionKey, state.interactionKey === interactionKey,\n interactions, state.interactions,\n stableStringify(state.interactions), stableStringify(interactions),\n stableStringify(state.interactions) === stableStringify(interactions));\n\n if (state.interactionKey === interactionKey &&\n stableStringify(state.interactions) === stableStringify(interactions)) {\n clearInteraction();\n } else {\n set({ ...state, interactionKey, interactions });\n }\n }\n function setGlobal(global: FilterJson[]) {\n set({ ...state, global });\n }\n function clearInteraction() {\n set({ ...state, interactionKey: \"\", interactions: [] });\n }\n function clearGlobal() {\n set({ ...state, global: [] });\n }\n function clearAll() {\n set(clearedState);\n }\n function getFilters(key: string) {\n const result = state.global;\n return key !== state.interactionKey ? result.concat(state.interactions) : result;\n }\n return { ...state, setInteraction, setGlobal, clearInteraction, clearGlobal, clearAll, getFilters };\n}\n\nexport interface PageFiltersProp {\n pageFilters: PageFilters;\n}\n","import { FilterValue, AggregationType, FilterJson, AggregationJson, FilterOperator, OrderingJson } from \"./QueryJson\";\n\n/**\n * A column from the schema, with a name and a data type. A whole schema of\n * such declared columns can be auto-generated using the CLI.\n */\n\nexport enum QueryColumnDataType {\n None = \"None\",\n Bool = \"Bool\",\n Byte = \"Byte\",\n Short = \"Short\",\n Int = \"Int\",\n Long = \"Long\",\n Float = \"Float\",\n Double = \"Double\",\n Decimal = \"Decimal\",\n String = \"String\",\n DateTime = \"DateTime\",\n}\n\nexport class QueryColumnRuntimeType {\n constructor(public readonly dataType: QueryColumnDataType, public readonly targetColumn: string) {}\n}\n\nexport class QueryColumn {\n /**\n * @param name The name, of the form `table.column`.\n */\n constructor(public readonly name: string, public readonly type: QueryColumnRuntimeType) {}\n\n protected aggregation(aggregationType: AggregationType, filters?: FilterJson[]): AggregationJson {\n return {\n column: this.name,\n function: aggregationType,\n filters,\n };\n }\n\n /**\n * Aggregates the column by counting values.\n * @param filters Optional filters to apply.\n */\n count(filters?: FilterJson[]) {\n return this.aggregation(\"Count\", filters);\n }\n\n /**\n * Aggregates the column by counting distinct values.\n * @param filters Optional filters to apply.\n */\n countDistinct(filters?: FilterJson[]) {\n return this.aggregation(\"CountDistinct\", filters);\n }\n\n /**\n * Aggregates the column by selecting the minimum value.\n * @param filters Optional filters to apply.\n */\n min(filters?: FilterJson[]) {\n return this.aggregation(\"Min\", filters);\n }\n\n /**\n * Aggregates the column by selecting the maximum value.\n * @param filters Optional filters to apply.\n */\n max(filters?: FilterJson[]) {\n return this.aggregation(\"Max\", filters);\n }\n\n protected filter(operator: FilterOperator, value: T): FilterJson {\n return {\n column: this.name,\n operator,\n value,\n };\n }\n\n /**\n * Sorts by the column in ascending order.\n */\n ascending(): OrderingJson {\n return { column: this.name, descending: false };\n }\n\n /**\n * Sorts by the column in descending order.\n */\n descending(): OrderingJson {\n return { column: this.name, descending: true };\n }\n\n /**\n * Produces a filter that requires this column to be equal to some value.\n */\n equalTo(value: T) {\n return this.filter(\"=\", value);\n }\n\n /**\n * Produces a filter that requires this column to be not equal to some value.\n */\n notEqualTo(value: T) {\n return this.filter(\"<>\", value);\n }\n\n /**\n * Produces a filter that requires this column to be greater than to some\n * value.\n */\n greaterThan(value: T) {\n return this.filter(\">\", value);\n }\n\n /**\n * Produces a filter that requires this column to be less than to some value.\n */\n lessThan(value: T) {\n return this.filter(\"<\", value);\n }\n\n /**\n * Produces a filter that requires this column to be greater than or equal to\n * some value.\n */\n greaterThanOrEqualTo(value: T) {\n return this.filter(\">=\", value);\n }\n\n /**\n * Produces a filter that requires this column to be less than or equal to\n * some value.\n */\n lessThanOrEqualTo(value: T) {\n return this.filter(\"<=\", value);\n }\n\n /**\n * Produces a filter that requires this column's value to appear in the list.\n * Only supported for number or string columns.\n */\n in(value: T extends number | string ? T[] : never): FilterJson {\n return {\n column: this.name,\n operator: \"IN\",\n value,\n };\n }\n\n /**\n * Produces a filter that requires this column's value to not appear in the list.\n * Only supported for number or string columns.\n */\n notIn(value: T extends number | string ? T[] : never): FilterJson {\n return {\n column: this.name,\n operator: \"NOT IN\",\n value,\n };\n }\n}\n\nexport class NumericQueryColumn extends QueryColumn {\n /**\n * @param name The name, of the form `table.column`.\n */\n constructor(name: string, type: QueryColumnRuntimeType) {\n super(name, type);\n }\n\n /**\n * Aggregates the column by summing values.\n * @param filters Optional filters to apply.\n */\n sum(filters?: FilterJson[]) {\n return this.aggregation(\"Sum\", filters);\n }\n\n /**\n * Aggregates the column by averaging values.\n * @param filters Optional filters to apply.\n */\n avg(filters?: FilterJson[]) {\n return this.aggregation(\"Avg\", filters);\n }\n}\n\nexport class IntegerQueryColumn extends NumericQueryColumn {\n /**\n * @param name The name, of the form `table.column`.\n */\n constructor(name: string, type: QueryColumnRuntimeType) {\n super(name, type);\n }\n\n bitsIn(mask: number, value: NonNullable[]): FilterJson {\n return {\n column: this.name,\n operator: \"BITS IN\",\n constant: mask,\n value,\n };\n }\n}\n\nexport class StringQueryColumn extends QueryColumn {\n /**\n * @param name The name, of the form `table.column`.\n */\n constructor(name: string, type: QueryColumnRuntimeType) {\n super(name, type);\n }\n\n /**\n * Produces a filter that requires this column to match a LIKE expression.\n */\n like(value: T) {\n return this.filter(\"LIKE\", value);\n }\n}\n","import {\n QuerySelect,\n ExpandedQueryRecord,\n AggregateValuesOnly,\n AggregatePropsOnly,\n ExpandedQueryRecordWithOptionalColumns,\n QueryCalculations,\n CalculationValues,\n} from \"./queryModel\";\n\n/**\n * An abstract interface representing either a row from a dataset or\n * the {@link ExpandedQueryResult.totals} row, so that generic code can\n * format either of them in a consistent way.\n */\nexport interface QueryValues> {\n /**\n * The plain values of columns, which may be `undefined` if this\n * refers to the {@link ExpandedQueryResult.totals} record.\n */\n values: ExpandedQueryRecordWithOptionalColumns;\n percentage>(key: K): number;\n}\n\nexport class QueryValuesRow> implements QueryValues {\n constructor(public readonly values: ExpandedQueryRecord, public readonly totals: (AggregateValuesOnly & CalculationValues) | undefined) {}\n\n percentage>(key: K) {\n if (!this.totals) return 0;\n\n const rawValue = this.values[key];\n const total = this.totals[key] ?? 0;\n const percent = total === 0 ? 0 : (rawValue / total) * 100;\n return Math.round(percent * 100) / 100;\n }\n}\n\nexport class QueryValuesTotal> implements QueryValues {\n public readonly values: ExpandedQueryRecordWithOptionalColumns;\n\n constructor(totals: AggregateValuesOnly & CalculationValues) {\n this.values = totals as ExpandedQueryRecordWithOptionalColumns;\n }\n\n percentage() {\n return 100;\n }\n}\n","/**\n * Returns the distinct (unique) values from an array. The comparison\n * method is very simplistic: all values are converted to strings\n * before comparison.\n * @param arr\n */\nexport function distinct(arr: T[]) {\n const map: { [key: string]: T } = {};\n\n for (const item of arr) {\n map[`${item}`] = item;\n }\n\n return Object.values(map);\n}\n\n/**\n * Returns the names of properties (i.e. the keys) in an object, statically\n * typed so each has the string literal type of one of the properties. This\n * is not always correct, because the type will include properties inherited\n * from the prototype, where as the values returned at runtime will never\n * include inherited properties. But it's a useful approximation in situations\n * where prototype inheritance can be ignored.\n *\n * @param obj The object to obtain keys from.\n */\nexport function keysOf(obj: T) {\n return Object.keys(obj) as (keyof T)[];\n}\n","import {\n Query,\n QuerySelect,\n ExpandedQueryRecord,\n AggregateValuesOnly,\n getAggregatePropsOnly,\n getColumnPropsOnly,\n Calculation,\n AggregatePropsOnly,\n QueryCalculations,\n Ordering,\n CalculationValues,\n} from \"./queryModel\";\nimport { QueryJson, AggregationJson, CalculationJson, OrderingJson } from \"./QueryJson\";\nimport { QueryColumn } from \"./QueryColumn\";\nimport { keysOf } from \"./arrayHelpers\";\n\n/**\n * The allowed data types for plain columns.\n */\nexport type QuerySelectValue = number | string | Date | boolean;\n\n/**\n * The JSON format of a record returned from the API when executing a query.\n */\nexport interface QueryRecordJson {\n /**\n * The plain column values.\n */\n selected: QuerySelectValue[];\n /**\n * The aggregated column values.\n */\n aggregated: number[];\n}\n\n/**\n * The JSON format of the whole payload returned from the API when\n * executing a query.\n */\nexport interface QueryResultJson {\n /**\n * The records of the query result.\n */\n records: QueryRecordJson[];\n\n /**\n * Optional extra record, only available if {@link QueryJson.totals}\n * was specified as `true` in the query, containing the aggregation\n * totals.\n */\n totals?: QueryRecordJson;\n}\n\n/**\n * The function you need to implement to pass {@link QueryJson} payloads to\n * your API and get them executed. This will typically be a wrapper around\n * the `fetch` browser API, or something more high-level, and can make use\n * of whatever authentication method you prefer.\n */\nexport type QueryFetch = (queryJson: QueryJson) => Promise;\n\nfunction jsonifyCalculation(calculation: Calculation, props: AggregatePropsOnly[]): CalculationJson {\n if (typeof calculation === \"string\") {\n const aggregation = props.indexOf(calculation);\n if (aggregation === -1) {\n throw new Error(`Not a valid aggregation name: ${calculation}`);\n }\n return { aggregation };\n }\n if (typeof calculation === \"number\") {\n return {\n value: calculation,\n };\n }\n if (calculation instanceof Array) {\n return {\n first: jsonifyCalculation(calculation[0], props),\n operator: calculation[1],\n second: jsonifyCalculation(calculation[2], props),\n };\n }\n throw new Error(\"Invalid calculation\");\n}\n\nfunction jsonifyOrdering>(\n ordering: OrderingJson | Ordering,\n selects: string[],\n values: string[],\n calculations: string[]\n): OrderingJson {\n if (\"select\" in ordering) {\n let index = selects.indexOf(ordering.select as string);\n if (index !== -1) {\n return {\n type: \"Select\",\n index,\n descending: ordering.descending,\n };\n }\n index = values.indexOf(ordering.select as string);\n if (index !== -1) {\n return {\n type: \"Value\",\n index,\n descending: ordering.descending,\n };\n }\n throw new Error(`Invalid ordering select key: ${String(ordering.select)}`);\n }\n if (\"calculation\" in ordering) {\n let index = calculations.indexOf(ordering.calculation as string);\n if (index !== -1) {\n return {\n type: \"Calculation\",\n index,\n descending: ordering.descending,\n };\n }\n throw new Error(`Invalid ordering calculation key: ${String(ordering.calculation)}`);\n }\n return ordering;\n}\n\n/**\n * Converts a statically-typed {@link Query} into the {@link QueryJson}\n * format, ready to be sent to your API.\n * @param query\n */\nexport function jsonifyQuery>(query: Query): QueryJson {\n const { select, filters, calculations, orderBy, totals, take, skip, comment, allowDuplicates } = query;\n\n const columnProps = getColumnPropsOnly(select);\n const aggregationProps = getAggregatePropsOnly(select);\n const calculationProps = calculations ? keysOf(calculations) : [];\n\n return {\n select: columnProps.map((key) => (select[key] as QueryColumn).name),\n aggregations: aggregationProps.map((key) => select[key] as AggregationJson),\n calculations: calculations ? calculationProps.map((key) => jsonifyCalculation(calculations[key] as Calculation, aggregationProps)) : undefined,\n filters: filters ?? [],\n orderBy: orderBy?.map((o) => jsonifyOrdering(o, columnProps as string[], aggregationProps as string[], calculationProps as string[])) ?? [],\n totals: totals ?? false,\n skip: skip ?? 0,\n take: take ?? 100,\n comment,\n allowDuplicates,\n };\n}\n\n/**\n * Converts the `QueryRecordJson` for a single record into a strongly-typed record\n * with named properties, using the {@link Query.select} from the query to perform\n * the necessary mapping.\n * @param select The {@link Query.select} property from the query.\n * @param record The record returned from your API.\n */\nexport function expandQueryRecord>(\n select: S,\n record: QueryRecordJson,\n calcs?: C\n): ExpandedQueryRecord {\n const result: any = {};\n\n let n = 0;\n for (const key of getAggregatePropsOnly(select)) {\n result[key] = record.aggregated[n++];\n }\n\n const calculationProps = calcs ? keysOf(calcs) : [];\n for (const key of calculationProps) {\n result[key] = record.aggregated[n++];\n }\n\n n = 0;\n for (const key of getColumnPropsOnly(select)) {\n result[key] = record.selected[n++];\n }\n\n return result;\n}\n\n/**\n * Converts the `QueryRecordJson` from the `totals` record into a strongly-typed\n * record named properties for the aggregated values only, using the\n * {@link Query.select} from the query to perform the necessary mapping.\n *\n * @param select The {@link Query.select} property from the query.\n * @param record The {@link QueryResultJson.totals} record returned from your API.\n */\nexport function getAggregateValuesOnly>(\n select: S,\n record: QueryRecordJson,\n calcs?: C\n): AggregateValuesOnly & CalculationValues {\n const result: any = {};\n\n let n = 0;\n for (const key of getAggregatePropsOnly(select)) {\n result[key] = record.aggregated[n++];\n }\n\n const calculationProps = calcs ? keysOf(calcs) : [];\n for (const key of calculationProps) {\n result[key] = record.aggregated[n++];\n }\n\n return result;\n}\n\n/**\n * The statically-typed result of a {@link Query}.\n */\nexport interface ExpandedQueryResult> {\n /**\n * The set of records returned, each having named properties\n * corresponding to the plain and aggregated columns selected\n * in the query.\n */\n records: ExpandedQueryRecord[];\n /**\n * Optional extra record, only available if {@link QueryJson.totals}\n * was specified as `true` in the query, containing the aggregation\n * totals.\n */\n totals?: AggregateValuesOnly & CalculationValues;\n}\n\n/**\n * Converts the payload returned from the API into the statically-typed\n * form appropriate for the query.\n * @param select The {@link Query.select} property from the query.\n * @param result The response payload from the API call.\n */\nexport function expandQueryResult>(\n select: S,\n result: QueryResultJson,\n calcs?: C\n): ExpandedQueryResult {\n return {\n records: result.records.map((r) => expandQueryRecord(select, r, calcs)),\n totals: result.totals && getAggregateValuesOnly(select, result.totals, calcs),\n };\n}\n\n/**\n * The complete statically typed query mechanism.\n *\n * @param fetch Your API for performing FlowerBI queries in the JSON format\n * @param query The query in statically-typed form\n * @returns The query results in statically-typed form\n */\nexport async function executeQuery>(fetch: QueryFetch, query: Query) {\n const queryJson = jsonifyQuery(query);\n const resultJson = await fetch(queryJson);\n return expandQueryResult(query.select, resultJson, query.calculations);\n}\n","export * from \"./arrayHelpers\";\nexport * from \"./executeQuery\";\nexport * from \"./QueryColumn\";\nexport * from \"./QueryJson\";\nexport * from \"./queryModel\"\nexport * from \"./QueryValues\";\n","import { keysOf } from \"./arrayHelpers\";\nimport { QueryColumn } from \"./QueryColumn\";\nimport { AggregationJson, FilterJson, OrderingJson } from \"./QueryJson\";\n\n/**\n * Defines the kinds of member that can appear in the `select` object of a query.\n * Queries can select plain columns, or aggregation functions on columns.\n */\nexport type SelectMember = QueryColumn | AggregationJson;\n\n/**\n * The `select` object of a query has named properties of type {@link SelectMember}.\n */\nexport type QuerySelect = Record;\n\n/**\n * Extracts the data type from a column. So `QueryColumnType>` is `boolean`.\n */\nexport type QueryColumnType = T extends QueryColumn ? C : never;\n\n/**\n * Defines the shape of a record returned from a query, based on its `select` object.\n * Each selected property appears as a property in the record with the same name. For\n * plain columns the data type depends on the column definition, but for aggregations\n * and calculations the data type is always `number`.\n */\nexport type ExpandedQueryRecord> = {\n [P in keyof S]: S[P] extends QueryColumn ? QueryColumnType : number;\n} & {\n [P in keyof C]: number;\n};\n\n/**\n * Similar to {@link ExpandedQueryRecord} but the plain columns are optional, so they\n * may be `undefined`. Aggregations/calculations are not optional.\n */\nexport type ExpandedQueryRecordWithOptionalColumns> = {\n [P in keyof S]: S[P] extends QueryColumn ? QueryColumnType | undefined : number;\n} & {\n [P in keyof C]: number;\n};\n\n/**\n * A helper type used in the definition of {@link AggregatePropsOnly}.\n */\nexport type AggregatePropsOnlyHelper = {\n [K in keyof T]: T[K] extends QueryColumn ? never : K;\n};\n\n/**\n * The names of properties from a `select` object that refer to aggregated values.\n * Compare with {@link ColumnPropsOnly}.\n */\nexport type AggregatePropsOnly = AggregatePropsOnlyHelper[keyof AggregatePropsOnlyHelper];\n\n/**\n * Returns the names of properties in a query that refer to aggregated columns.\n * The result is an array of strings, but type-constrained to string literal types:\n *\n * ```ts\n * getAggregatePropsOnly({\n * customer: Customer.Name,\n * spend: Invoice.Amount.sum()\n * }) // [\"spend\"]\n * ```\n *\n * @param select the `select` object from a query\n */\nexport function getAggregatePropsOnly(select: T) {\n const keys = keysOf(select).filter((x) => !(select[x] instanceof QueryColumn));\n return keys as AggregatePropsOnly[];\n}\n\n/**\n * An object that contains a subset of the the named properties from a query's\n * `select` object, those that refer to aggregated values (hence all are of\n * type `number`.)\n */\nexport type AggregateValuesOnly = {\n [K in AggregatePropsOnly]: number;\n};\n\nexport type CalculationValues> = {\n [K in keyof C]: number;\n};\n\n/**\n * A helper type used in the definition of {@link ColumnPropsOnly}.\n */\nexport type ColumnPropsOnlyHelper = {\n [K in keyof T]: T[K] extends QueryColumn ? K : never;\n};\n\n/**\n * The names of properties from a `select` object that refer to plain columns.\n * Compare with {@link AggregatePropsOnly}.\n */\nexport type ColumnPropsOnly = ColumnPropsOnlyHelper[keyof ColumnPropsOnlyHelper];\n\n/**\n * Returns the names of properties in a query that refer to plain columns. The\n * result is an array of strings, but type-constrained to string literal types:\n *\n * ```ts\n * getColumnPropsOnly({\n * customer: Customer.Name,\n * spend: Invoice.Amount.sum()\n * }) // [\"customer\"]\n * ```\n *\n * @param select the `select` object from a query\n */\nexport function getColumnPropsOnly(select: T) {\n const keys = keysOf(select).filter((x) => select[x] instanceof QueryColumn);\n return keys as ColumnPropsOnly[];\n}\n\n/**\n * Returns the plain column objects referred to in a query, ignoring\n * aggregated columns.\n * @param select the `select` object from a query\n */\nexport function getColumnsOnly(select: QuerySelect) {\n return keysOf(select)\n .map((k) => select[k])\n .filter((x) => x instanceof QueryColumn)\n .map((x) => x as QueryColumn);\n}\n\nexport type Calculation = number | AggregatePropsOnly | [Calculation, \"+\" | \"-\" | \"*\" | \"/\" | \"??\", Calculation];\n\n/**\n * The `select` object of a query has named properties of type {@link SelectMember}.\n */\nexport type QueryCalculations = Record>;\n\nexport type Ordering> = { descending?: boolean } & (\n | {\n select: keyof S;\n }\n | {\n calculation: keyof C;\n }\n);\n\n/**\n * Strongly-typed query definition: use {@link jsonifyQuery} to convert to the JSON format\n * and {@link expandQueryResult} to generate corresponding output records.\n */\nexport interface Query> {\n select: S;\n filters?: FilterJson[];\n calculations?: C;\n /**\n * Ordering criteria to apply.\n */\n orderBy?: (OrderingJson | Ordering)[];\n /**\n * Specifies whether to return a `totals` property containing the\n * aggregation values across the whole dataset, e.g. if the `select`\n * object is:\n *\n * ```ts\n * {\n * customer: Customer.Name,\n * spend: Invoice.Amount.sum()\n * }\n * ```\n *\n * the returned `records` will have properties `customer` and `spend`,\n * one per customer. Specify `totals: true` to also get a `totals` object\n * with only a `spend` property, containing the total spend across all\n * customers.\n */\n totals?: boolean;\n /**\n * Number of result records to skip before the first record returned.\n */\n skip?: number;\n /**\n * Number of result records to return.\n */\n take?: number;\n /**\n * A string to insert in a comment at the start of the generated SQL.\n *\n * This will be aggressively processed to remove the danger of injection\n * attacks, so anything other than alpha, numeric, new line or CR\n * characters will be replaced with space.\n */\n comment?: string;\n /**\n * Only applicable if the query specifies only ordinary columns, no\n * aggregations. If true, no GROUP BY clause is added to the SQL, so if\n * multiple results have the same values they will appear repeatedly in\n * the output. This can greatly reduce the work required by the SQL\n * engine, and so should be specified if duplicate rows are tolerable or\n * are known to be impossible.\n */\n allowDuplicates?: boolean;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import { IntegerQueryColumn, QueryColumn, QueryColumnDataType, QueryColumnRuntimeType, StringQueryColumn } from \"flowerbi\";\n\n// Important: this file is auto-generated by flowerbi.\n\nexport const Date = {\n Id: new QueryColumn(\"Date.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n CalendarYearNumber: new IntegerQueryColumn(\"Date.CalendarYearNumber\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Short,\n \"\"\n )\n), \n FirstDayOfQuarter: new QueryColumn(\"Date.FirstDayOfQuarter\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n FirstDayOfMonth: new QueryColumn(\"Date.FirstDayOfMonth\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n};\n\nexport const DateReported = {\n Id: new QueryColumn(\"DateReported.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n CalendarYearNumber: new IntegerQueryColumn(\"DateReported.CalendarYearNumber\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Short,\n \"\"\n )\n), \n FirstDayOfQuarter: new QueryColumn(\"DateReported.FirstDayOfQuarter\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n FirstDayOfMonth: new QueryColumn(\"DateReported.FirstDayOfMonth\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n};\n\nexport const DateResolved = {\n Id: new QueryColumn(\"DateResolved.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n CalendarYearNumber: new IntegerQueryColumn(\"DateResolved.CalendarYearNumber\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Short,\n \"\"\n )\n), \n FirstDayOfQuarter: new QueryColumn(\"DateResolved.FirstDayOfQuarter\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n FirstDayOfMonth: new QueryColumn(\"DateResolved.FirstDayOfMonth\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n};\n\nexport const DateAssigned = {\n Id: new QueryColumn(\"DateAssigned.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n CalendarYearNumber: new IntegerQueryColumn(\"DateAssigned.CalendarYearNumber\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Short,\n \"\"\n )\n), \n FirstDayOfQuarter: new QueryColumn(\"DateAssigned.FirstDayOfQuarter\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n FirstDayOfMonth: new QueryColumn(\"DateAssigned.FirstDayOfMonth\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"\"\n )\n), \n};\n\nexport const Workflow = {\n Id: new IntegerQueryColumn(\"Workflow.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n Resolved: new QueryColumn(\"Workflow.Resolved\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n WorkflowState: new StringQueryColumn(\"Workflow.WorkflowState\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.String,\n \"\"\n )\n), \n SourceOfError: new StringQueryColumn(\"Workflow.SourceOfError\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.String,\n \"\"\n )\n), \n FixedByCustomer: new QueryColumn(\"Workflow.FixedByCustomer\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n};\n\nexport const Category = {\n Id: new IntegerQueryColumn(\"Category.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n Label: new StringQueryColumn(\"Category.Label\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.String,\n \"\"\n )\n), \n};\n\nexport const Customer = {\n Id: new IntegerQueryColumn(\"Customer.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n CustomerName: new StringQueryColumn(\"Customer.CustomerName\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.String,\n \"\"\n )\n), \n};\n\nexport const Coder = {\n Id: new IntegerQueryColumn(\"Coder.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n FullName: new StringQueryColumn(\"Coder.FullName\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.String,\n \"\"\n )\n), \n};\n\nexport const CoderAssigned = {\n Id: new IntegerQueryColumn(\"CoderAssigned.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n FullName: new StringQueryColumn(\"CoderAssigned.FullName\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.String,\n \"\"\n )\n), \n};\n\nexport const CoderResolved = {\n Id: new IntegerQueryColumn(\"CoderResolved.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n FullName: new StringQueryColumn(\"CoderResolved.FullName\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.String,\n \"\"\n )\n), \n};\n\nexport const CategoryCombination = {\n Id: new IntegerQueryColumn(\"CategoryCombination.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n Crashed: new QueryColumn(\"CategoryCombination.Crashed\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n DataLoss: new QueryColumn(\"CategoryCombination.DataLoss\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n SecurityBreach: new QueryColumn(\"CategoryCombination.SecurityBreach\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n OffByOne: new QueryColumn(\"CategoryCombination.OffByOne\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n Slow: new QueryColumn(\"CategoryCombination.Slow\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n StackOverflow: new QueryColumn(\"CategoryCombination.StackOverflow\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Bool,\n \"\"\n )\n), \n};\n\nexport const Bug = {\n Id: new IntegerQueryColumn(\"Bug.Id\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"\"\n )\n), \n WorkflowId: new IntegerQueryColumn(\"Bug.WorkflowId\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"Workflow.Id\"\n )\n), \n CustomerId: new IntegerQueryColumn(\"Bug.CustomerId\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"Customer.Id\"\n )\n), \n ReportedDate: new QueryColumn(\"Bug.ReportedDate\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"DateReported.Id\"\n )\n), \n ResolvedDate: new QueryColumn(\"Bug.ResolvedDate\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"DateResolved.Id\"\n )\n), \n AssignedDate: new QueryColumn(\"Bug.AssignedDate\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.DateTime,\n \"DateAssigned.Id\"\n )\n), \n CategoryCombinationId: new IntegerQueryColumn(\"Bug.CategoryCombinationId\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"CategoryCombination.Id\"\n )\n), \n AssignedCoderId: new IntegerQueryColumn(\"Bug.AssignedCoderId\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"CoderAssigned.Id\"\n )\n), \n ResolvedCoderId: new IntegerQueryColumn(\"Bug.ResolvedCoderId\",\n new QueryColumnRuntimeType(\n QueryColumnDataType.Int,\n \"CoderResolved.Id\"\n )\n), \n};\n\nexport const BugSchema = {\n Date,\n DateReported,\n DateResolved,\n DateAssigned,\n Workflow,\n Category,\n Customer,\n Coder,\n CoderAssigned,\n CoderResolved,\n CategoryCombination,\n Bug,\n};\n","export const dataColours = [\"#722E85\", \"#CD65D9\", \"#3ED4B0\", \"#F54E7B\", \"#FF7676\", \"#FAD57A\", \"#313345\", \"#b4b2bc\"];\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as getRelativePosition$1, z as _isPointInArea, A as _rlookupByKey, B as getAngleFromPoint, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as _isDomSupported, L as log10, M as _factorize, N as finiteOrDefault, O as callback, Q as _addGrace, R as toDegrees, S as _measureText, U as _int16Range, V as _alignPixel, W as clipArea, X as renderText, Y as unclipArea, Z as toFont, $ as _toLeftRightCenter, a0 as _alignStartEnd, a1 as overrides, a2 as merge, a3 as _capitalize, a4 as descriptors, a5 as isFunction, a6 as _attachContext, a7 as _createResolver, a8 as _descriptors, a9 as mergeIf, aa as uid, ab as debounce, ac as retinaScale, ad as clearCanvas, ae as setsEqual, af as _elementsEqual, ag as _isClickEvent, ah as _isBetween, ai as _readValueToProps, aj as _updateBezierControlPoints, ak as _computeSegments, al as _boundSegments, am as _steppedInterpolation, an as _bezierInterpolation, ao as _pointInLine, ap as _steppedLineTo, aq as _bezierCurveTo, ar as drawPoint, as as addRoundedRectPath, at as toTRBL, au as toTRBLCorners, av as _boundSegment, aw as _normalizeAngle, ax as getRtlAdapter, ay as overrideTextDirection, az as _textX, aA as restoreTextDirection, aB as noop, aC as distanceBetweenPoints, aD as _setMinAndMaxByKey, aE as niceNum, aF as almostWhole, aG as almostEquals, aH as _decimalPlaces, aI as _longestText, aJ as _filterBetween, aK as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const dataset = this.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const dataset = this.getDataset();\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return getRelativePosition$1(e, chart);\n}\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n ({index, data} = metasets[i]);\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);\n}\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n if (options.intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition)\n : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition) :\n getNearestItems(chart, position, axis, false, useFinalPosition);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n x(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition$1(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n if (isHorizontal) {\n x = pixel;\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.7.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (meta.type !== 'line') {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n let target = null;\n let horizontal;\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n return null;\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\nfunction getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return createBoundaryLine(boundary, line);\n}\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _clip(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = findSegmentEnd(start, end, points);\n const bounds = getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nfunction _fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n _fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n _clip(ctx, target, area.bottom);\n }\n _fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nvar plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: plugin_filler,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef(ref: ForwardedRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n chart.options = { ...nextOptions };\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset[] = [];\n\n currentData.datasets = nextDatasets.map(nextDataset => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n dataset => dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset };\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n });\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, TypedChartComponent } from './types';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n ...props\n }: ChartProps,\n ref: ForwardedRef>\n) {\n type TypedChartJS = ChartJS;\n\n const canvasRef = useRef(null);\n const chartRef = useRef();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options,\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update();\n }\n }, [redraw, options, data.labels, data.datasets]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n \n {fallbackContent}\n \n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as TypedChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types';\nimport { Chart } from './chart';\n\nfunction createTypedChart(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef, Omit, 'type'>>(\n (props, ref) => \n ) as TypedChartComponent;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","import React, { useRef } from \"react\";\nimport { useQuery } from \"flowerbi-react\";\nimport { FlowerBIChartBox } from \"flowerbi-react-utils\";\nimport { Customer, Bug, Workflow } from \"../demoSchema\";\nimport { dataColours } from \"./dataColours\";\nimport { Pie } from \"react-chartjs-2\";\nimport { Chart as ChartJS } from \"chart.js\";\nimport { VisualProps } from \"./VisualProps\";\n\nexport function ResolvedPerCustomer({ pageFilters, fetch }: VisualProps) {\n\n const id = \"ResolvedPerCustomer\";\n\n const query = {\n select: {\n customer: Customer.CustomerName,\n bugCount: Bug.Id.count()\n },\n filters: [\n Workflow.Resolved.equalTo(true),\n ...pageFilters.getFilters(id)\n ],\n };\n\n const ref = useRef>(null);\n const result = useQuery(fetch, query);\n \n return (\n \n x.customer),\n datasets: [{\n label: \"Count\",\n backgroundColor: dataColours,\n data: result.records.map(x => x.bugCount)\n }]\n }}\n />\n \n );\n}\n","import React, { useRef } from \"react\";\nimport { useQuery } from \"flowerbi-react\";\nimport { FlowerBIChartBox } from \"flowerbi-react-utils\";\nimport { Bug, Workflow } from \"../demoSchema\";\nimport { dataColours } from \"./dataColours\";\nimport { Pie } from \"react-chartjs-2\";\nimport { Chart as ChartJS } from \"chart.js\";\nimport { VisualProps } from \"./VisualProps\";\n\nconst id = \"SourceOfErrors\";\n\nexport function SourceOfErrors({ pageFilters, fetch }: VisualProps) {\n\n const query = {\n select: {\n sourceOfError: Workflow.SourceOfError,\n bugCount: Bug.Id.count()\n },\n filters: [\n Workflow.Resolved.equalTo(true),\n ...pageFilters.getFilters(id)\n ],\n comment: id\n };\n\n const result = useQuery(fetch, query);\n\n const ref = useRef>(null);\n \n return (\n \n x.sourceOfError),\n datasets: [{\n label: \"Count\",\n backgroundColor: dataColours,\n data: result.records.map(x => x.bugCount)\n }]\n }}\n />\n \n );\n}\n","import React, { useRef } from \"react\";\nimport { QueryColumn, distinct, keysOf } from \"flowerbi\";\nimport { useQuery } from \"flowerbi-react\";\nimport { FlowerBIChartBox } from \"flowerbi-react-utils\";\nimport { Bug, Workflow, CategoryCombination } from \"../demoSchema\";\nimport { dataColours } from \"./dataColours\";\nimport { Bar } from \"react-chartjs-2\";\nimport { Chart as ChartJS } from \"chart.js\";\nimport { VisualProps } from \"./VisualProps\";\n\nconst categoriesRaw = {\n \"Crashed\": CategoryCombination.Crashed,\n \"Data loss\": CategoryCombination.DataLoss,\n \"Security breach\": CategoryCombination.SecurityBreach,\n \"Off by one\": CategoryCombination.OffByOne,\n \"Slow\": CategoryCombination.Slow,\n \"Stack overflow\": CategoryCombination.StackOverflow,\n};\n\ntype CategoryLabel = keyof typeof categoriesRaw;\n\nconst categories: Record> = categoriesRaw;\n\nexport function TypesOfError({ pageFilters, fetch }: VisualProps) {\n\n const id = \"TypesOfError\";\n\n // In the query we ask for the bits describing the categories applicable to each bug\n const query = {\n select: {\n categoryBits: Bug.CategoryCombinationId, \n workflowState: Workflow.WorkflowState,\n bugCount: Bug.Id.count()\n },\n filters: [\n Workflow.Resolved.equalTo(true),\n ...pageFilters.getFilters(id)\n ]\n };\n\n const data = useQuery(fetch, query);\n\n const chart = useRef>(null);\n\n const distinctWorkflowStates = distinct(data.records.map(r => r.workflowState));\n\n // Convert the bit combinations into category labels\n const bugCountByStateAndCategory = distinctWorkflowStates.flatMap(workflowState =>\n keysOf(categories).map((category, bit) => ({\n workflowState,\n category,\n bugCount: data.records\n .filter(r => r.workflowState === workflowState && r.categoryBits & (1 << bit))\n .map(r => r.bugCount)\n .reduce((l, r) => l + r, 0)\n })));\n\n // Sum up the categories (full height of each bar)\n const bugCountByCategory = keysOf(categories).map(category => ({\n category,\n bugCount: bugCountByStateAndCategory\n .filter(r => r.category === category)\n .map(r => r.bugCount)\n .reduce((l, r) => l + r, 0)\n }));\n\n // Sort by bugCount descending so tallest bar is first\n bugCountByCategory.sort((x, y) => y.bugCount - x.bugCount);\n\n // Omit empty categories\n const orderedCategories = bugCountByCategory.filter(c => c.bugCount > 0).map(c => c.category);\n\n return (\n \n ({\n label: workflowState,\n data: orderedCategories.map(category =>\n bugCountByStateAndCategory.find(r => r.workflowState === workflowState && \n r.category === category)?.bugCount ?? 0),\n backgroundColor: dataColours[colour]\n }))\n }}\n />\n \n )\n}\n","import React from \"react\";\nimport { FlowerBITable, useFlowerBI } from \"flowerbi-react\";\nimport { FlowerBIChartBox } from \"flowerbi-react-utils\";\nimport { Bug, Workflow } from \"../demoSchema\";\nimport { VisualProps } from \"./VisualProps\";\n\nexport interface RecoverySummaryProps extends VisualProps {\n fixedByCustomer: boolean;\n title: string;\n}\n\nexport function RecoverySummary({ pageFilters, fixedByCustomer, title, fetch }: RecoverySummaryProps) {\n const data = useFlowerBI(fetch, {\n select: {\n state: Workflow.WorkflowState,\n bugCount: Bug.Id.count(),\n resolvedBugCount: Bug.Id.count([Workflow.Resolved.equalTo(true)]),\n },\n filters: [Workflow.FixedByCustomer.equalTo(fixedByCustomer), ...pageFilters.getFilters(\"\")],\n totals: true,\n });\n\n return (\n \n d.values.state ?? \"Total\",\n Count: (d) => [`${d.values.bugCount}`, \"right\"],\n \"% of Count\": (d) => [`${d.percentage(\"resolvedBugCount\")}%`, \"right\"],\n }}\n />\n \n );\n}\n","import React, { useRef } from \"react\";\nimport { QueryColumn } from \"flowerbi\";\nimport { useFlowerBI, useQuery } from \"flowerbi-react\";\nimport { fillDates } from \"flowerbi-dates\";\nimport { useDropDown, DropDown, FlowerBIChartBox } from \"flowerbi-react-utils\";\nimport { Bug, Workflow, DateReported } from \"../demoSchema\";\nimport { dataColours } from \"./dataColours\";\nimport { Chart as ChartJS, ChartDataset, ChartOptions, ChartData } from \"chart.js\";\nimport { VisualProps } from \"./VisualProps\";\nimport { Chart } from \"react-chartjs-2\";\n\nconst dateGroupings = [\n { label: \"Month\", value: DateReported.FirstDayOfMonth },\n { label: \"Quarter\", value: DateReported.FirstDayOfQuarter },\n { label: \"Year\", value: DateReported.CalendarYearNumber },\n];\n\nexport function BugsOverTime({ pageFilters, fetch }: VisualProps) {\n const id = \"BugsOverTime\";\n\n const dateGrouping = useDropDown>(dateGroupings);\n\n const result = useQuery(fetch, {\n select: {\n period: dateGrouping.selected,\n countAllCauses: Bug.Id.count(),\n countHackers: Bug.Id.count([Workflow.SourceOfError.equalTo(\"Hackers\")]),\n },\n filters: [Workflow.Resolved.equalTo(true), ...pageFilters.getFilters(id)],\n orderBy: [dateGrouping.selected.ascending()],\n });\n\n const datedRecords = fillDates({\n records: result.records,\n min: 2017,\n max: \"2021-12-31\",\n getDate: (r) => r.period,\n fill: (dateLabel, record) => ({\n dateLabel,\n countAllCauses: 0,\n countHackers: 0,\n ...record,\n }),\n });\n\n const ref = useRef>(null);\n\n const hackers: ChartDataset = {\n type: \"line\",\n data: datedRecords.map((r) => r.countHackers ?? 0),\n label: \"Hackers\",\n backgroundColor: \"transparent\",\n // lineTension: 0,\n borderColor: dataColours[1],\n };\n\n const allCauses: ChartDataset = {\n data: datedRecords.map((r) => r.countAllCauses),\n label: \"All Causes\",\n backgroundColor: dataColours[0],\n };\n\n const data: ChartData = {\n labels: datedRecords.map((x) => x.dateLabel),\n datasets: [hackers, allCauses],\n };\n\n const options: ChartOptions = {\n onClick(evt, elements, chart) {\n console.log(\"clicked\", { evt, elements, chart });\n if (elements[0]) {\n const clicked = result.records[elements[0].index].period;\n pageFilters.setInteraction(id, [dateGrouping.selected.equalTo(clicked)]);\n }\n },\n scales: {\n y: { beginAtZero: true },\n },\n };\n\n return (\n \n
\n
\n \n
\n
\n By \n \n
\n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { DateReported } from \"./demoSchema\";\nimport { PageFilters } from \"flowerbi-react\";\n\nfunction lastYear() {\n const d = new Date();\n d.setFullYear(d.getFullYear() - 5);\n return d;\n}\n\nfunction toDateString(d: Date) {\n return d.toISOString().substr(0, 10);\n}\n\nfunction useDateInput(init: Date) {\n const [editing, setEditing] = useState(toDateString(init));\n const [applied, setApplied] = useState(toDateString(init));\n\n function apply() {\n setApplied(editing);\n }\n\n function onChange(event: React.ChangeEvent) {\n setEditing(event.target.value);\n }\n\n return {\n editing,\n applied,\n dirty: editing !== applied,\n onChange,\n apply \n };\n}\n\nlet initCounter = 0;\n\nexport function useFilterPane(pageFilters: PageFilters) {\n const [visible, setVisible] = useState(false);\n const from = useDateInput(lastYear());\n const to = useDateInput(new Date()); \n const dates = [from, to];\n\n function toggle() {\n setVisible(!visible);\n }\n\n function apply() {\n dates.forEach(d => d.apply());\n pageFilters.setGlobal([\n DateReported.Id.greaterThanOrEqualTo(new Date(from.editing)),\n DateReported.Id.lessThanOrEqualTo(new Date(to.editing))\n ]);\n }\n\n const [init] = useState(++initCounter);\n if (init === initCounter) {\n apply();\n }\n\n const title = `Entered date from ${from.applied} to ${to.applied}`;\n\n const dirty = dates.some(d => d.dirty);\n\n return { visible, toggle, from, to, dirty, title, apply };\n}\n\nexport interface FilterPaneProps {\n filterPane: ReturnType; \n}\n\nexport function FilterPane({ filterPane: { visible, from, to, apply, dirty } }: FilterPaneProps) {\n return (\n
\n
From
\n \n
To
\n \n
Update
\n
\n )\n}\n","import React from \"react\";\nimport { Layout, Column, Row } from \"flowerbi-react-utils\";\nimport { FetchProps } from \"./VisualProps\";\nimport { ResolvedPerCustomer } from \"./ResolvedPerCustomer\";\nimport { SourceOfErrors } from \"./SourceOfErrors\";\nimport { TypesOfError } from \"./TypesOfError\";\nimport { RecoverySummary } from \"./RecoverySummary\";\nimport { BugsOverTime } from \"./BugsOverTime\";\nimport { FilterPane, useFilterPane } from \"../FilterPane\";\nimport { usePageFilters } from \"flowerbi-react\";\n\nexport function BugReporting({ fetch }: FetchProps) {\n const pageFilters = usePageFilters();\n const filterPane = useFilterPane(pageFilters);\n const props = { fetch, pageFilters };\n\n return (\n <>\n
\n
{filterPane.title}
\n
\n Filters\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n );\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import moment from \"moment\";\n\nasync function allocDb() {\n const publicUrl = (window as any).sitePublicUrl;\n\n const SQL = await window.initSqlJs({\n locateFile(f: string) {\n return `${publicUrl}/${f}`;\n }\n });\n\n const db = new SQL.Database();\n setupDb(db);\n return db;\n}\n\nlet db: ReturnType | undefined;\n\ntype Await = T extends {\n then(onfulfilled?: (value: infer U) => unknown): unknown;\n} ? U : T;\n\nexport type Database = NonNullable>;\n\nexport function getDb(): Promise {\n if (!db) {\n db = allocDb();\n }\n return db;\n}\n\nfunction makeRandomDate() {\n const d = new Date(2018, 0, 1);\n d.setDate(d.getDate() + Math.floor(Math.random() * 800));\n return d;\n}\n\nfunction formatDate(d: Date) {\n return moment(d).format(\"YYYY-MM-DD\");\n}\n\nfunction startOfQuarter(d: Date) {\n const m = Math.floor(d.getMonth() / 3) * 3;\n return formatDate(new Date(d.getFullYear(), m, 1));\n}\n\nfunction startOfMonth(d: Date) { \n return formatDate(new Date(d.getFullYear(), d.getMonth(), 1));\n}\n\nfunction pick(count: number, base: number) {\n return Math.min(count - 1, Math.floor(Math.random() * count)) + base; \n}\n\nfunction setupDb(db: Database) {\n\n const workflowStates = [\n \"Ignored\",\n \"Prioritised\",\n \"Assigned\",\n \"Fixed\",\n \"AsDesigned\"\n ];\n\n const sourcesOfError = [\n \"Design flaw\",\n \"Hackers\",\n \"Honest mistake\"\n ];\n\n const dates: Date[] = [];\n for (let n = 0; n < 50; n++) {\n dates.push(makeRandomDate());\n }\n\n const dateRows = dates.map(x => `\n ('${formatDate(x)}', ${x.getFullYear()}, '${startOfQuarter(x)}', '${startOfMonth(x)}')`).join(\",\");\n\n const workflows: string[] = [];\n\n for (const workflowState of workflowStates) {\n for (const sourceOfError of sourcesOfError) {\n for (const resolved of [0, 1]) {\n for (const fixedByCustomer of [0, 1]) {\n workflows.push(`\n (${workflows.length + 1}, ${resolved}, '${workflowState}', '${sourceOfError}', ${fixedByCustomer})`);\n }\n }\n }\n }\n\n const workflowRows = workflows.join(\",\");\n\n const categoryCombinations: string[] = [];\n\n for (const a of [0, 1]) {\n for (const b of [0, 1]) {\n for (const c of [0, 1]) {\n for (const d of [0, 1]) {\n for (const e of [0, 1]) {\n for (const f of [0, 1]) {\n categoryCombinations.push(`\n (${categoryCombinations.length}, ${a}, ${b}, ${c}, ${d}, ${e}, ${f})`);\n }\n }\n }\n }\n }\n }\n\n const categoryCombinationsRows = categoryCombinations.join(\",\");\n\n const bugs: string[] = [];\n\n for (var n = 0; n < 100; n++) {\n const workflow = pick(workflows.length, 1);\n const customer = pick(6, 1);\n const reported = formatDate(dates[pick(dates.length, 0)]);\n const resolved = formatDate(dates[pick(dates.length, 0)]);\n const assigned = formatDate(dates[pick(dates.length, 0)]);\n const catComb = pick(categoryCombinations.length, 1);\n const coderAssigned = pick(6, 1);\n const coderResolved = pick(6, 1);\n\n bugs.push(`\n (${n + 1}, ${workflow}, ${customer}, '${reported}', '${resolved}', '${assigned}', ${catComb}, ${coderAssigned}, ${coderResolved})`);\n }\n\n const bugRows = bugs.join(\",\");\n\n const initSql = `\n create table \\`main\\`.\\`Date\\` (\n Id date,\n CalendarYearNumber smallint,\n FirstDayOfQuarter date,\n FirstDayOfMonth date\n );\n\n insert into \\`main\\`.\\`Date\\` values ${dateRows};\n\n create table \\`main\\`.\\`Workflow\\` (\n Id int,\n Resolved bit,\n WorkflowState varchar(30),\n SourceOfError varchar(30),\n FixedByCustomer bit\n );\n\n insert into \\`main\\`.\\`Workflow\\` values ${workflowRows};\n\n create table \\`main\\`.\\`Category\\` (\n Id int,\n Label varchar(30)\n );\n\n insert into \\`main\\`.\\`Category\\` values\n (1, 'Crashed'),\n (2, 'Data Loss'),\n (3, 'Security Breach'),\n (4, 'Off By One'),\n (5, 'Slow'),\n (6, 'StackOverflow');\n\n create table \\`main\\`.\\`Coder\\` (\n Id int,\n FullName varchar(30)\n );\n \n insert into \\`main\\`.\\`Coder\\` values\n (1, 'Sam'),\n (2, 'Alex'),\n (3, 'Drew'),\n (4, 'Taylor'),\n (5, 'Parker'),\n (6, 'Austin');\n\n create table \\`main\\`.\\`Customer\\` (\n Id int,\n CustomerName varchar(30)\n );\n \n insert into \\`main\\`.\\`Customer\\` values\n (1, 'Pies LLC'),\n (2, 'Buns, Inc.'),\n (3, 'Hats-R-Us'),\n (4, 'Silence'),\n (5, 'Egypt'),\n (6, 'Affordability');\n\n create table \\`main\\`.\\`CategoryCombination\\` (\n Id int,\n StackOverflow bit,\n Slow bit,\n OffByOne bit,\n SecurityBreach bit,\n DataLoss bit,\n Crashed bit\n );\n\n insert into \\`main\\`.\\`CategoryCombination\\` values ${categoryCombinationsRows};\n\n create table \\`main\\`.\\`Bug\\` (\n Id int,\n WorkflowId int,\n CustomerId int,\n ReportedDate date,\n ResolvedDate date,\n AssignedDate date,\n CategoryCombinationId int,\n AssignedCoderId int,\n ResolvedCoderId int\n );\n\n insert into \\`main\\`.\\`Bug\\` values ${bugRows};\n `;\n\n db.run(initSql);\n}\n","import { jsonDateParser } from \"json-date-parser\";\nimport { getDb } from \"./database\";\nimport { QueryResultJson, QuerySelectValue, QueryJson } from \"flowerbi\";\n\nexport let latestSql = \"\";\nexport let latestError = \"\";\n\nasync function querySql(sql: string) {\n latestSql = sql;\n\n const db = await getDb();\n\n const started = new Date();\n const result = JSON.stringify(db.exec(sql));\n const finished = new Date();\n console.log(`SQL query took ${finished.getTime() - started.getTime()} ms`);\n if (sql.includes(\"allbugs\")) {\n console.log(sql);\n }\n\n return result;\n}\n\n(window as any).querySql = querySql;\n\nconst blazorReady = new Promise((done) => ((window as any).notifyBlazorReady = done));\n\nexport async function localFetch(queryJson: QueryJson): Promise {\n await blazorReady;\n\n const started = new Date();\n const json = (await DotNet.invokeMethodAsync(\"FlowerBI.WasmHost\", \"Query\", JSON.stringify(queryJson))) as string;\n const finished = new Date();\n console.log(queryJson.comment, `Blazor + SQL query took ${finished.getTime() - started.getTime()} ms`, queryJson);\n\n const parsed = JSON.parse(json, jsonDateParser);\n\n if (parsed.stackTrace) {\n console.error(parsed);\n latestError = json;\n return { records: [] };\n }\n\n if (!parsed[0]) {\n console.error(parsed);\n latestError = json;\n return { records: [] };\n }\n\n latestError = \"\";\n\n const columns = parsed[0].columns;\n const values = parsed[0].values as QuerySelectValue[][];\n const firstValueIndex = columns.indexOf(\"Value0\");\n const endOfSelects = firstValueIndex === -1 ? columns.length : firstValueIndex;\n\n const result: QueryResultJson = {\n records: values.map((x) => ({\n selected: x.slice(0, endOfSelects),\n aggregated: x.slice(endOfSelects) as number[],\n })),\n };\n\n if (parsed[1]) {\n result.totals = {\n selected: [],\n aggregated: parsed[1].values,\n };\n }\n\n return result;\n}\n","import { useCallback } from \"react\";\n\nexport type UpdaterFunc = T | ((previous: T) => T);\nexport type SetterFunc = (updater: UpdaterFunc) => void;\n\nexport function getUpdatedValue(current: T, updaterFunc: UpdaterFunc) {\n if (typeof updaterFunc === \"function\") {\n const u = updaterFunc as unknown as (previous: T) => T;\n return u(current);\n }\n return updaterFunc;\n}\n\nexport function useLensOnArray(current: I[], setter: SetterFunc, index: number, create: () => I, deletion: (from: I, to: I) => boolean) {\n if (index >= current.length) {\n throw new Error(\"useLensOnArray: index is greater than array length\");\n }\n\n const itemSetter = useCallback(\n (itemUpdater: UpdaterFunc) => {\n setter((previousList: I[]) => {\n const previousItem = previousList[index] ?? create();\n const updatedItem = getUpdatedValue(previousItem, itemUpdater);\n const updatedList = previousList.slice();\n\n if (deletion(previousItem, updatedItem)) {\n updatedList.splice(index, 1);\n } else {\n updatedList[index] = updatedItem;\n }\n\n return updatedList;\n });\n },\n [setter, create, deletion, index]\n );\n\n return [current[index] ?? create(), itemSetter] as const;\n}\n\nexport function useLensOnObject(current: O, setter: SetterFunc, key: P) {\n const propertySetter = useCallback(\n (propertyUpdater: UpdaterFunc) => {\n setter((previousObject: O) => {\n return {\n ...previousObject,\n [key]: getUpdatedValue(previousObject[key], propertyUpdater),\n };\n });\n },\n [setter, key]\n );\n return [current[key], propertySetter] as const;\n}\n","import React from \"react\";\n\nexport interface SelectProps {\n options: T[];\n value: T | undefined;\n onChange(v: T | undefined): void;\n}\n\nexport function Select({ options, value, onChange }: SelectProps) {\n return (\n \n );\n}\n","import React from \"react\";\n\nexport interface InputProps {\n value: string;\n onChange(v: string): void;\n}\n\nexport function Input({ value, onChange }: InputProps) {\n return onChange(e.target.value)} />;\n}\n","import { AggregationType, FilterOperator, QueryColumnDataType } from \"flowerbi\";\nimport { BugSchema } from \"../demoSchema\";\n\nexport type TableName = keyof typeof BugSchema;\n\nexport interface BuiltFilter {\n operator?: FilterOperator;\n table?: TableName;\n column?: string;\n value: string;\n}\n\nexport interface BuiltSelection {\n name: string;\n table?: TableName;\n column?: string;\n aggregation?: AggregationType;\n filters: BuiltFilter[];\n}\n\nexport interface BuiltOrdering {\n name: string;\n desc: boolean;\n}\n\nexport interface BuiltQuery {\n select: BuiltSelection[];\n ordering: BuiltOrdering[];\n filters: BuiltFilter[];\n}\n\nexport const aggregationTypes: AggregationType[] = [\"Count\", \"CountDistinct\", \"Sum\", \"Avg\", \"Min\", \"Max\"];\n\nconst nonNumericAggregationTypes: AggregationType[] = [\"Count\", \"CountDistinct\", \"Min\", \"Max\"];\n\nexport const aggregationsForDataType: Record = {\n [QueryColumnDataType.Bool]: nonNumericAggregationTypes,\n [QueryColumnDataType.Byte]: aggregationTypes,\n [QueryColumnDataType.DateTime]: nonNumericAggregationTypes,\n [QueryColumnDataType.Decimal]: aggregationTypes,\n [QueryColumnDataType.Double]: aggregationTypes,\n [QueryColumnDataType.Float]: aggregationTypes,\n [QueryColumnDataType.Int]: aggregationTypes,\n [QueryColumnDataType.Long]: aggregationTypes,\n [QueryColumnDataType.Short]: aggregationTypes,\n [QueryColumnDataType.String]: nonNumericAggregationTypes,\n [QueryColumnDataType.None]: [],\n};\n\nexport function getColumnDataType(table: TableName | undefined, column: string | undefined): QueryColumnDataType {\n if (!table || !column) return QueryColumnDataType.None;\n const x = BugSchema[table];\n const y = x[column as keyof typeof x];\n return y?.type.dataType ?? QueryColumnDataType.None;\n}\n\nexport function getTypedFilterValue(dataType: QueryColumnDataType, value: string) {\n if (dataType === QueryColumnDataType.None) {\n return undefined;\n }\n\n const numeric = parseFloat(value);\n if (dataType === QueryColumnDataType.Bool) {\n const lower = value.toLowerCase();\n if (numeric === 1 || lower === \"true\") {\n return true;\n }\n if (numeric === 0 || lower === \"false\") {\n return false;\n }\n return undefined;\n }\n if (dataType === QueryColumnDataType.DateTime) {\n try {\n const dt = new Date(value);\n return isNaN(dt.getTime()) ? undefined : dt;\n } catch (x) {\n return undefined;\n }\n }\n if (dataType === QueryColumnDataType.String) {\n return value;\n }\n return isNaN(numeric) ? undefined : numeric;\n}\n\nexport const operators: FilterOperator[] = [\"=\", \"<>\", \">\", \"<\", \">=\", \"<=\", \"IN\", \"NOT IN\", \"BITS IN\", \"LIKE\"];\n\nconst boolOperators: FilterOperator[] = [\"=\"];\nconst generalOperators: FilterOperator[] = boolOperators.concat([\"<>\", \">\", \"<\", \">=\", \"<=\"]);\nconst stringOrNumberOperators: FilterOperator[] = generalOperators.concat([\"IN\", \"NOT IN\"]);\nconst intOperators: FilterOperator[] = stringOrNumberOperators.concat(\"BITS IN\");\nconst stringOperators: FilterOperator[] = stringOrNumberOperators.concat(\"LIKE\");\n\nexport const operatorsForDataType: Record = {\n [QueryColumnDataType.Bool]: boolOperators,\n [QueryColumnDataType.Byte]: intOperators,\n [QueryColumnDataType.DateTime]: stringOrNumberOperators,\n [QueryColumnDataType.Decimal]: stringOrNumberOperators,\n [QueryColumnDataType.Double]: stringOrNumberOperators,\n [QueryColumnDataType.Float]: stringOrNumberOperators,\n [QueryColumnDataType.Int]: intOperators,\n [QueryColumnDataType.Long]: intOperators,\n [QueryColumnDataType.Short]: intOperators,\n [QueryColumnDataType.String]: stringOperators,\n [QueryColumnDataType.None]: [],\n};\n\nexport function getColumnsWithOffsets(query: BuiltQuery) {\n const columns = query.select.filter((x) => x.name.trim() && x.table && x.column);\n const result: { selection: BuiltSelection; offset: number }[] = [];\n const usedNames: { [name: string]: boolean } = {};\n\n let nextSelected = 0,\n nextAggregated = 0;\n for (const selection of columns) {\n if (usedNames[selection.name]) {\n continue;\n }\n usedNames[selection.name] = true;\n if (selection.aggregation) {\n result.push({ selection, offset: nextAggregated++ });\n } else {\n result.push({ selection, offset: nextSelected++ });\n }\n }\n return result;\n}\n","import React from \"react\";\nimport { BugSchema } from \"../demoSchema\";\nimport { keysOf } from \"flowerbi\";\nimport { Select } from \"./Select\";\nimport { Input } from \"./Input\";\nimport { SetterFunc, useLensOnArray, useLensOnObject } from \"./lensHooks\";\nimport { BuiltFilter, getColumnDataType, operatorsForDataType } from \"./builtQueryModel\";\n\nfunction createDefaultFilter() {\n return { value: \"\", operator: \"=\" } as BuiltFilter;\n}\n\nfunction isDeletion(from: BuiltFilter, to: BuiltFilter) {\n return !!((from.table && !to.table) || (from.operator && !to.operator));\n}\n\nexport interface FilterRowProps {\n filters: BuiltFilter[];\n setFilters: SetterFunc;\n index: number;\n nested: boolean;\n}\n\nexport function FilterRow({ filters, setFilters, index, nested }: FilterRowProps) {\n const [filter, setFilter] = useLensOnArray(filters, setFilters, index, createDefaultFilter, isDeletion);\n\n const [table, setTable] = useLensOnObject(filter, setFilter, \"table\");\n const [column, setColumn] = useLensOnObject(filter, setFilter, \"column\");\n const [operator, setOperator] = useLensOnObject(filter, setFilter, \"operator\");\n const [value, setValue] = useLensOnObject(filter, setFilter, \"value\");\n\n return (\n \n {nested && }\n \n \n \n \n \n \n \n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { BugSchema } from \"../demoSchema\";\nimport { keysOf } from \"flowerbi\";\nimport { Select } from \"./Select\";\nimport { Input } from \"./Input\";\nimport { SetterFunc, useLensOnArray, useLensOnObject } from \"./lensHooks\";\nimport { BuiltSelection, aggregationsForDataType, getColumnDataType } from \"./builtQueryModel\";\nimport { FilterRow } from \"./FilterRow\";\n\nfunction getDefaultName(others: BuiltSelection[]) {\n for (let n = 1; n < 100; n++) {\n const name = `col${n}`;\n if (!others.find((x) => x.name.trim() === name)) {\n return name;\n }\n }\n return \"\";\n}\n\nfunction isDeletion(from: BuiltSelection, to: BuiltSelection) {\n return !!((from.table && !to.table) || (from.name && !to.name));\n}\n\nfunction createDefaultWithName(name: string): BuiltSelection {\n return { name, filters: [] };\n}\n\nexport function SelectionRow({\n selections,\n setSelections,\n index,\n}: {\n selections: BuiltSelection[];\n setSelections: SetterFunc;\n index: number;\n}) {\n const nextDefaultName = useMemo(() => getDefaultName(selections), [selections]);\n\n const createDefaultSelection = useCallback(() => createDefaultWithName(nextDefaultName), [nextDefaultName]);\n\n const [selection, setSelection] = useLensOnArray(selections, setSelections, index, createDefaultSelection, isDeletion);\n\n const [table, setTable] = useLensOnObject(selection, setSelection, \"table\");\n const [column, setColumn] = useLensOnObject(selection, setSelection, \"column\");\n const [aggregation, setAggregation] = useLensOnObject(selection, setSelection, \"aggregation\");\n const [name, setName] = useLensOnObject(selection, setSelection, \"name\");\n\n const [expanded, setExpanded] = useState(false);\n const toggleExpanded = useCallback(() => setExpanded((p) => !p), [setExpanded]);\n\n const [realFilters, setFilters] = useLensOnObject(selection, setSelection, \"filters\");\n const filters = realFilters.concat({ value: \"\" });\n\n return (\n <>\n \n \n {!!aggregation && (expanded ? \"🔽\" : \"▶️\")}\n \n \n \n \n \n \n \n \n {expanded && aggregation && (\n <>\n \n \n Extra filters for {name}\n \n\n {filters.map((_, index) => (\n \n ))}\n \n \n \n \n )}\n \n );\n}\n","import React from \"react\";\nimport { SetterFunc, useLensOnObject } from \"./lensHooks\";\nimport { BuiltQuery } from \"./builtQueryModel\";\nimport { SelectionRow } from \"./SelectionRow\";\nimport { FilterRow } from \"./FilterRow\";\n\nexport interface QueryBuilderProps {\n value: BuiltQuery;\n onChange: SetterFunc;\n}\n\nexport function QueryBuilder({ value, onChange }: QueryBuilderProps) {\n const [realSelections, setSelections] = useLensOnObject(value, onChange, \"select\");\n const selections = realSelections.concat({ name: \"\", filters: [] });\n\n const [realFilters, setFilters] = useLensOnObject(value, onChange, \"filters\");\n const filters = realFilters.concat({ value: \"\" });\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {selections.map((_, index) => (\n \n ))}\n \n \n \n \n \n \n \n {filters.map((_, index) => (\n \n ))}\n \n
TableColumnOperatorName/Value
General filters
\n );\n}\n","import React from \"react\";\nimport { AggregationType } from \"flowerbi\";\nimport { BuiltFilter, BuiltQuery, getColumnDataType, getTypedFilterValue } from \"./builtQueryModel\";\n\nfunction generateFilters(lines: string[], indent: string, filters: BuiltFilter[]) {\n for (const f of filters) {\n if (f.operator && f.value) {\n const dataType = getColumnDataType(f.table, f.column);\n const typedValue = getTypedFilterValue(dataType, f.value);\n if (typedValue !== undefined) {\n const literal = JSON.stringify(typedValue);\n lines.push(`${indent}{ column: ${f.table}.${f.column}, operator: \"${f.operator}\", value: ${literal} },`);\n }\n }\n }\n}\n\nfunction aggregationMethod(aggregation: AggregationType | undefined, filters: BuiltFilter[]) {\n if (!aggregation) {\n return \"\";\n }\n\n var filterText = \"\";\n if (filters.length) {\n const filterLines: string[] = [\"[\"];\n generateFilters(filterLines, \" \", filters);\n filterLines.push(\" ]\");\n filterText = filterLines.join(\"\\n\");\n }\n\n return `.${aggregation[0].toLocaleLowerCase()}${aggregation.substring(1)}(${filterText})`;\n}\n\nexport interface CodePreviewProps {\n query: BuiltQuery;\n sql: string;\n}\n\nexport function CodePreview({ query, sql }: CodePreviewProps) {\n const lines = [];\n lines.push(\"const data = useFlowerBI(fetch, {\");\n lines.push(\" select: {\");\n for (const s of query.select) {\n if (s.name.trim() && s.table && s.column) {\n lines.push(` ${s.name.trim()}: ${s.table}.${s.column}${aggregationMethod(s.aggregation, s.filters)},`);\n }\n }\n lines.push(\" }\");\n\n if (query.filters.length) {\n lines.push(\" filters: [\");\n generateFilters(lines, \" \", query.filters);\n lines.push(\" ],\");\n }\n\n if (query.ordering.length) {\n lines.push(\" orderBy: [\");\n for (const o of query.ordering) {\n lines.push(` { select: ${o.name} }, descending: ${o.desc} },`);\n }\n lines.push(\" ],\");\n }\n\n lines.push(\"});\");\n lines.push(\"\");\n lines.push(\"/* generated SQL:\");\n lines.push(sql.trim());\n lines.push(\"*/\");\n\n return
{lines.join(\"\\n\")}
;\n}\n","import React from \"react\";\nimport { QueryResultJson } from \"flowerbi\";\nimport { BuiltOrdering, BuiltQuery, getColumnsWithOffsets } from \"./builtQueryModel\";\n\nexport interface DataPreviewProps {\n query: BuiltQuery;\n data: QueryResultJson;\n onHeaderClick(name: string): void;\n}\n\nexport function DataPreview({ query, data, onHeaderClick }: DataPreviewProps) {\n const columns = getColumnsWithOffsets(query);\n\n return (\n \n \n \n {columns.map((x) => (\n \n ))}\n \n \n \n {data.records.map((record, index) => (\n \n {columns.map((x) => (\n \n ))}\n \n ))}\n \n
onHeaderClick(x.selection.name)}>\n {x.selection.name}\n {getOrderingIcon(query.ordering, x.selection.name)}\n
{x.selection.aggregation ? record.aggregated[x.offset] : record.selected[x.offset]}
\n );\n}\n\nfunction getOrderingIcon(orderings: BuiltOrdering[], name: string) {\n const ordering = orderings.find((x) => x.name === name);\n return !ordering ? \"\\u00A0\" : ordering.desc ? \"⬆️\" : \"⬇️\";\n}\n","import { useEffect, useState } from \"react\";\nimport { FilterJson, FilterOperator, OrderingJson, QueryFetch, QueryJson, QueryResultJson } from \"flowerbi\";\nimport { latestError, latestSql } from \"../localFetch\";\nimport { BuiltFilter, BuiltQuery, getColumnDataType, getColumnsWithOffsets, getTypedFilterValue } from \"./builtQueryModel\";\n\nexport interface DataPreviewProps {\n query: BuiltQuery;\n fetch: QueryFetch;\n}\n\nfunction generateFilters(builtFilters: BuiltFilter[]) {\n const filters: FilterJson[] = [];\n\n for (const f of builtFilters) {\n const dataType = getColumnDataType(f.table, f.column);\n const value = getTypedFilterValue(dataType, f.value);\n if (value !== undefined) {\n console.log(value);\n filters.push({\n column: `${f.table}.${f.column}`,\n operator: f.operator as FilterOperator,\n value,\n });\n }\n }\n return filters;\n}\n\nfunction jsonFromBuiltQuery(query: BuiltQuery): QueryJson {\n const columns = getColumnsWithOffsets(query);\n\n const orderBy: OrderingJson[] = [];\n\n for (const o of query.ordering) {\n const c = columns.find((c) => c.selection.name === o.name);\n if (c) {\n orderBy.push({\n type: c.selection.aggregation ? \"Value\" : \"Select\",\n index: c.offset,\n descending: o.desc,\n });\n }\n }\n\n return {\n select: columns.filter((x) => !x.selection.aggregation).map((x) => `${x.selection.table}.${x.selection.column}`),\n aggregations: columns\n .filter((x) => x.selection.aggregation)\n .map((x) => ({\n column: `${x.selection.table}.${x.selection.column}`,\n function: x.selection.aggregation!,\n filters: generateFilters(x.selection.filters),\n })),\n filters: generateFilters(query.filters),\n orderBy,\n };\n}\n\nexport function useBuiltQuery(query: BuiltQuery, fetch: QueryFetch) {\n const [data, setData] = useState({ records: [] });\n\n const queryJson = jsonFromBuiltQuery(query);\n const queryJsonString = JSON.stringify(queryJson);\n\n useEffect(() => {\n const q: QueryJson = JSON.parse(queryJsonString);\n if (q.aggregations.length + (q.select?.length ?? 0) === 0) {\n setData({ records: [] });\n } else {\n fetch(q).then(setData);\n }\n }, [fetch, queryJsonString]);\n\n return { ...data, sql: latestSql, error: latestError };\n}\n","import React from \"react\";\nimport { QueryResultJson } from \"flowerbi\";\nimport { BuiltQuery, getColumnsWithOffsets } from \"./builtQueryModel\";\nimport { Chart } from \"react-chartjs-2\";\nimport { dataColours } from \"../Reports/dataColours\";\n\nexport interface ChartPreviewProps {\n query: BuiltQuery;\n data: QueryResultJson;\n error: string;\n}\n\nexport function ChartPreview({ query, data, error }: ChartPreviewProps) {\n if (error) {\n try {\n const parsed = JSON.parse(error);\n if (parsed.message && parsed.stackTrace) {\n return (\n
\n
{parsed.message}
\n
{parsed.stackTrace}
\n
\n );\n }\n } catch (x) {}\n return
{error}
;\n }\n\n const columns = getColumnsWithOffsets(query);\n\n const barGrouping = columns.find((x) => !x.selection.aggregation);\n const aggregations = columns.filter((x) => !!x.selection.aggregation);\n\n if (!barGrouping || !aggregations.length) {\n return
;\n }\n\n const chart = {\n labels: data.records.map((r) => r.selected[barGrouping.offset]),\n datasets: aggregations.map((a, i) => ({\n data: data.records.map((r) => r.aggregated[a.offset]),\n label: a.selection.name,\n backgroundColor: dataColours[i],\n })),\n };\n\n return ;\n}\n","import { FetchProps } from \"../Reports/VisualProps\";\nimport React, { PropsWithChildren, useState } from \"react\";\nimport { QueryBuilder } from \"./QueryBuilder\";\nimport { CodePreview } from \"./CodePreview\";\nimport { DataPreview } from \"./DataPreview\";\nimport { useBuiltQuery } from \"./useBuiltQuery\";\nimport { BuiltQuery } from \"./builtQueryModel\";\nimport { ChartPreview } from \"./ChartPreview\";\n\nfunction PlaygroundPanel({ title, children }: PropsWithChildren<{ title: string }>) {\n return (\n
\n
{title}
\n
{children}
\n
\n );\n}\n\nexport function Playground({ fetch }: FetchProps) {\n const [builtQuery, setBuiltQuery] = useState({\n select: [\n { name: \"customer\", table: \"Customer\", column: \"CustomerName\", filters: [] },\n { name: \"assigned\", table: \"CoderAssigned\", column: \"FullName\", filters: [] },\n { name: \"bugCount\", table: \"Bug\", column: \"Id\", aggregation: \"Count\", filters: [] },\n ],\n ordering: [],\n filters: [],\n });\n\n const data = useBuiltQuery(builtQuery, fetch);\n\n function headerClicked(name: string) {\n setBuiltQuery((previous) => {\n const ordering = previous.ordering.slice();\n const index = ordering.findIndex((x) => x.name === name);\n if (index !== -1) {\n const existing = ordering[index];\n if (existing.desc) {\n ordering.splice(index, 1);\n } else {\n ordering[index] = { ...existing, desc: true };\n }\n } else {\n ordering.push({ name, desc: false });\n }\n return { ...previous, ordering };\n });\n }\n\n return (\n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport \"./App.css\";\nimport { BugReporting } from \"./Reports/BugReporting\";\nimport { FetchProps } from \"./Reports/VisualProps\";\nimport { Chart, ArcElement, CategoryScale, LinearScale, BarElement, PointElement, LineElement, Legend, LineController } from \"chart.js\";\nimport { localFetch } from \"./localFetch\";\nimport { Playground } from \"./Playground\";\n\nChart.registry.add(ArcElement, CategoryScale, LinearScale, BarElement, PointElement, LineElement, Legend, LineController);\n\nChart.defaults.font.family = \"Segoe UI, 'Helvetica', 'Arial', sans-serif\";\nif (Chart.defaults.plugins.legend && Chart.defaults.plugins.legend.labels) {\n Chart.defaults.plugins.legend.labels.usePointStyle = true;\n}\n\nChart.defaults.maintainAspectRatio = false;\n\nconst reports = {\n Playground: (f: FetchProps) => ,\n \"Bug Tracking\": (f: FetchProps) => ,\n};\n\ntype ReportName = keyof typeof reports;\n\nconst reportNames = Object.keys(reports) as ReportName[];\n\nconst defaultReport: ReportName = \"Playground\";\n\nfunction App() {\n const [reportName, setReportName] = useState(defaultReport);\n\n const report = reports[reportName];\n\n return (\n
\n
\n {reportNames.map((n) => (\n
setReportName(n)}>\n {n}\n
\n ))}\n
\n
{report({ fetch: localFetch })}
\n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["module","exports","reISO","reMsAjax","_","value","parsedValue","a","exec","Date","b","split","json","JSON","require","obj","opts","cmp","space","Array","join","f","cycles","replacer","key","node","aobj","bobj","seen","stringify","parent","level","indent","colonSeparator","toJSON","undefined","call","isArray","out","i","length","item","push","indexOf","TypeError","keys","objectKeys","sort","keyValue","splice","x","toString","Object","has","prototype","hasOwnProperty","parse","at","ch","text","escapee","n","r","t","error","m","name","message","next","c","charAt","number","string","isFinite","hex","uffff","parseInt","String","fromCharCode","white","array","object","word","source","reviver","result","walk","holder","k","v","gap","rep","escapable","meta","quote","lastIndex","test","replace","charCodeAt","slice","str","partial","mind","apply","Error","hookCallback","some","hooks","arguments","setHookCallback","callback","input","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","map","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","stack","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","test1","test2","test3","letter","err","shouldUseNative","target","symbols","aa","encodeURIComponent","ba","Set","ca","da","ea","fa","window","document","createElement","ha","ia","ja","ka","B","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","D","oa","pa","qa","ma","na","la","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","iterator","La","Na","trim","Oa","Pa","prepareStackTrace","defineProperty","Reflect","construct","displayName","Qa","tag","render","_render","Ra","$$typeof","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","children","Children","db","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","style","setProperty","substring","ub","menuitem","area","br","col","embed","hr","img","keygen","link","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","addEventListener","removeEventListener","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","child","sibling","current","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","id","bind","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","location","repeat","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","email","password","range","search","tel","url","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","href","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","start","selectionStart","end","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","instance","listener","G","$e","af","bf","random","cf","df","capture","passive","Nb","z","q","ef","ff","parentWindow","gf","hf","J","K","Q","je","char","ke","unshift","jf","kf","lf","mf","autoFocus","nf","__html","of","setTimeout","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","N","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","O","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","defaultProps","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","context","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","A","p","C","Dg","Eg","Fg","Component","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","contextType","state","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","ref","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","elementType","Vg","implementation","Wg","Xg","done","Yg","Zg","$g","ah","bh","dh","eh","documentElement","tagName","fh","gh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","R","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","subscribe","useEffect","setSnapshot","Oh","Ph","Qh","Rh","create","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","hi","ji","compare","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","getDerivedStateFromError","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","V","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","element","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","then","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","Fragment","__self","__source","jsx","jsxs","StrictMode","Profiler","Suspense","setState","forceUpdate","escape","_status","_result","default","IsSomeRendererActing","count","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","method","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","resolve","reject","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","reverse","pop","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","parseDate","detectDateType","every","fillDates","records","fill","results","latest","lower","increment","upper","monthFirst","monthLast","__exportStar","label","selectedLabel","setSelectedLabel","onChange","find","_b","react_2","title","react_1","className","FlowerBIChartBox_1","LayoutElement","dimension","sizes","otherProps","nonNullSizes","totalSize","reduce","_c","flexDirection","__assign","renderCell","def","align","column","flowerbi_1","totals","useFlowerBI","fetch","query","queryJson","jsonifyQuery","setResult","disposed","dependency","nonEmpty","expandQueryResult","select","calculations","clearedState","global","interactions","interactionKey","clearInteraction","setInteraction","setGlobal","clearGlobal","clearAll","getFilters","QueryColumnDataType","dataType","targetColumn","QueryColumn","aggregationType","filters","function","aggregation","operator","descending","_super","__extends","NumericQueryColumn","IntegerQueryColumn","mask","constant","StringQueryColumn","QueryValuesRow","rawValue","percent","QueryValuesTotal","jsonifyCalculation","calculation","first","orderBy","take","skip","comment","allowDuplicates","columnProps","getColumnPropsOnly","aggregationProps","getAggregatePropsOnly","calculationProps","keysOf","aggregations","selects","jsonifyOrdering","expandQueryRecord","calcs","aggregated","getAggregateValuesOnly","resultJson","QueryColumn_1","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__esModule","definition","nmd","paths","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_slicedToArray","_s","_e","_arr","_n","_defineProperty","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_toConsumableArray","QueryColumnRuntimeType","CalendarYearNumber","FirstDayOfQuarter","FirstDayOfMonth","DateReported","DateResolved","DateAssigned","Workflow","Resolved","WorkflowState","SourceOfError","FixedByCustomer","Category","Label","Customer","CustomerName","Coder","FullName","CoderAssigned","CoderResolved","CategoryCombination","Crashed","DataLoss","SecurityBreach","OffByOne","Slow","StackOverflow","Bug","WorkflowId","CustomerId","ReportedDate","ResolvedDate","AssignedDate","CategoryCombinationId","AssignedCoderId","ResolvedCoderId","BugSchema","dataColours","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_assertThisInitialized","ReferenceError","_getPrototypeOf","_superPropBase","_get","receiver","desc","_setPrototypeOf","_inherits","subClass","superClass","_typeof","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","Super","NewTarget","_createForOfIteratorHelper","allowArrayLike","it","normalCompletion","didErr","step","_e2","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","requestAnimFrame","throttled","thisArg","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","_alignStartEnd","uid","isNullOrUndef","isNumberFinite","Number","finiteOrDefault","valueOrDefault","toDimension","endsWith","each","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","idx","resolveObjectKey","_capitalize","defined","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","fraction","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","atEdge","elasticIn","sin","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","h1","h2","eq","hexString","isShort","lim","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","names$1","map$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","unpack","transparent","modHSL","ratio","fromObject","functionParse","rgbParse","Color","hexParse","_rgb","_valid","hslString","weight","w2","c1","c2","w1","deg","rotate","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","saturate","darken","overrides","descriptors","getScope$1","root","scope","Defaults","_descriptors","backgroundColor","borderColor","datasets","devicePixelRatio","chart","platform","getDevicePixelRatio","elements","events","font","family","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","startsWith","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","rect","borderWidth","stroke","_isPointInArea","point","margin","right","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","line","lines","strokeColor","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","cacheable","parentContext","_lookup","table","mid","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","items","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","deleteProperty","_keys","_cached","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","includes","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_subProxy","_stack","setContext","override","isScriptable","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","resolver","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","readKey","resolveFallback","getScope","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","monotoneAdjust","deltaK","mK","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointsLen","pointAfter","monotoneCompute","delta","pointBefore","valueAxis","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","styles","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","native","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","cacheKey","formatter","Intl","NumberFormat","getNumberFormat","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","segment","bounds","prevValue","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","initial","currentStep","_update","_refresh","remaining","running","draw","_active","_total","tick","_notify","charts","progress","_getAnims","acc","cur","_duration","cancel","animator","interpolators","boolean","factor","c0","valid","mix","Animation","cfg","currentValue","_fn","_easing","easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","promises","rej","resolved","animationOptions","colors","numbers","active","resize","show","animations","visible","hide","Animations","_properties","configure","animatedProps","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","update","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","otherValue","singleMode","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iScale","iAxis","axis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","initialize","linkScales","_stacked","addElements","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","getLabels","singleScale","xAxisKey","yAxisKey","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","getUserBounds","minDefined","maxDefined","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","_clip","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","_resolveAnimations","getSharedOptions","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","computeMinSampleSize","curr","_cache","$bar","visibleMetas","getAllParsedValues","getAllScaleValues","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","grid","_value_","beginAtZero","BubbleController","getPixelForDecimal","tooltip","DoughnutController","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_getRotationExtents","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","abstract","DateAdapter","timestamp","amount","members","adapters","_date","getRelativePosition$1","binarySearch","metaset","lookupMethod","_reversePixels","getRange","optimizedEvaluateItems","position","handler","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","evaluateAllVisibleItems","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","layout","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","setBoxDims","placeBoxes","userPadding","padding","autoPadding","_layers","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","addListener","DomPlatform","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","Element","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","offsetFromEdge","sample","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","PluginService","hook","_createDescriptors","plugin","_oldCache","_notifyStateChanges","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","getResolver","subPrefixes","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","debounce","resizeDelay","listen","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","init","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","getElement","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","remove","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p8","inner","lineJoin","fullCircles","drawFullCircleBorders","unregister","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","rtlHelper","hitbox","_draw","cursor","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","_args","adjustHitBoxes","afterEvent","handleEvent","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","findOrAddLabel","addedLabels","addIfString","lastIndexOf","CategoryScale","_startValue","_valueRange","_addedLabels","added","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","_maxDigits","LinearScale","handleTickRangeOptions","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","_padding","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","textSize","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","labelCount","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","common","steps","UNITS","sorter","adapter","_adapter","_parseOpts","parser","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","interpolate","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","cloneData","nextData","ChartComponent","redraw","fallbackContent","canvasRef","chartRef","renderChart","ChartJS","destroyChart","nextOptions","role","createTypedChart","registerables","Bar","Pie","ResolvedPerCustomer","pageFilters","customer","bugCount","equalTo","useQuery","FlowerBIChartBox","clicked","SourceOfErrors","sourceOfError","categories","TypesOfError","categoryBits","workflowState","distinctWorkflowStates","distinct","bugCountByStateAndCategory","flatMap","category","bit","bugCountByCategory","orderedCategories","colour","RecoverySummary","fixedByCustomer","resolvedBugCount","FlowerBITable","State","Count","percentage","dateGroupings","BugsOverTime","dateGrouping","useDropDown","countAllCauses","countHackers","ascending","datedRecords","dateLabel","hackers","allCauses","DropDown","toDateString","useDateInput","editing","setEditing","applied","setApplied","dirty","initCounter","useFilterPane","setVisible","lastYear","greaterThanOrEqualTo","lessThanOrEqualTo","toggle","FilterPane","filterPane","BugReporting","usePageFilters","Layout","Column","Row","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","allocDb","publicUrl","sitePublicUrl","initSqlJs","locateFile","SQL","setupDb","Database","getDb","makeRandomDate","setDate","formatDate","moment","pick","sourcesOfError","dateRows","startOfQuarter","startOfMonth","workflows","workflowRows","categoryCombinations","categoryCombinationsRows","bugs","workflow","reported","assigned","catComb","coderAssigned","coderResolved","bugRows","initSql","run","latestSql","latestError","querySql","sql","started","finished","blazorReady","notifyBlazorReady","localFetch","DotNet","invokeMethodAsync","jsonDateParser","stackTrace","firstValueIndex","endOfSelects","getUpdatedValue","updaterFunc","useLensOnArray","deletion","itemSetter","itemUpdater","previousList","previousItem","updatedItem","updatedList","useLensOnObject","propertySetter","propertyUpdater","previousObject","Select","Input","aggregationTypes","nonNumericAggregationTypes","aggregationsForDataType","getColumnDataType","getTypedFilterValue","dt","boolOperators","stringOrNumberOperators","intOperators","stringOperators","operatorsForDataType","getColumnsWithOffsets","usedNames","nextSelected","nextAggregated","selection","createDefaultFilter","isDeletion","FilterRow","setFilters","nested","setFilter","setTable","setColumn","setOperator","colSpan","SelectionRow","selections","setSelections","nextDefaultName","others","getDefaultName","createDefaultSelection","createDefaultWithName","setSelection","setAggregation","setName","expanded","setExpanded","toggleExpanded","realFilters","QueryBuilder","realSelections","generateFilters","typedValue","literal","aggregationMethod","filterText","filterLines","CodePreview","DataPreview","onHeaderClick","getOrderingIcon","orderings","builtFilters","useBuiltQuery","setData","jsonFromBuiltQuery","queryJsonString","ChartPreview","barGrouping","PlaygroundPanel","Playground","builtQuery","setBuiltQuery","existing","reports","reportNames","reportName","setReportName","report","hostname","ReactDOM","navigator","serviceWorker","ready","registration","catch"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/typedoc/flowerbi-dates/interfaces/FillDatesOptions.html b/docs/typedoc/flowerbi-dates/interfaces/FillDatesOptions.html index df7f4a21..403aeb39 100644 --- a/docs/typedoc/flowerbi-dates/interfaces/FillDatesOptions.html +++ b/docs/typedoc/flowerbi-dates/interfaces/FillDatesOptions.html @@ -1,18 +1,18 @@ FillDatesOptions | flowerbi-dates

Interface FillDatesOptions<T, R>

Options for fillDates function.

-

Type parameters

  • T

  • R

Hierarchy

  • FillDatesOptions

Index

Properties

max?: FillDate
+

Type parameters

  • T

  • R

Hierarchy

  • FillDatesOptions

Index

Properties

max?: FillDate

The maximum date to generate. It will be rounded down by the type so doesn't need to be on an exact boundary.

-
min?: FillDate
+
min?: FillDate

The minimum date to generate. It will be rounded down by the type so doesn't need to be on an exact boundary.

-
records: T[]
+
records: T[]

The records to base the filled list on.

-
+

The operations to use for rounding, incrementing and formatting dates.

-

Methods

  • fill(dateText: string, record: undefined | T): R

Methods

  • fill(dateText: string, record: undefined | T): R
  • Generate a record for a date, from the formatted {@link dateText} and the input record for that date, if any.

    -

    Parameters

    • dateText: string
    • record: undefined | T

    Returns R

  • +

    Parameters

    • dateText: string
    • record: undefined | T

    Returns R

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi-dates/modules.html b/docs/typedoc/flowerbi-dates/modules.html index ce67fe99..691bf76e 100644 --- a/docs/typedoc/flowerbi-dates/modules.html +++ b/docs/typedoc/flowerbi-dates/modules.html @@ -1,17 +1,17 @@ -flowerbi-dates
Options
All
  • Public
  • Public/Protected
  • All
Menu

flowerbi-dates

Index

Type aliases

FillDate: Date | string | number | Moment
FillDateType: { format: any; increment: any; round: any }
+flowerbi-dates
Options
All
  • Public
  • Public/Protected
  • All
Menu

flowerbi-dates

Index

Type aliases

FillDate: Date | string | number | Moment
FillDateType: { format: any; increment: any; round: any }

Three operations on dates used by fillDates.

-

Type declaration

  • format:function
    • format(d: Moment): string
    • +

      Type declaration

      • format:function
        • format(d: Moment): string
        • Format the given date to a string

          -

          Parameters

          • d: Moment

          Returns string

      • increment:function
        • increment(d: Moment): Moment
      • increment:function
        • increment(d: Moment): Moment
        • Increment the date by the unit. The given date will already be rounded down.

          -

          Parameters

          • d: Moment

          Returns Moment

      • round:function
        • round(d: Moment): Moment
      • round:function
        • round(d: Moment): Moment
        • Round the given date down to the nearest whole unit (e.g. start of month, quarter, year)

          -

          Parameters

          • d: Moment

          Returns Moment

Variables

dateTypes: { days: FillDateType; months: FillDateType; quarters: FillDateType; years: FillDateType } = ...
+

Parameters

  • d: Moment

Returns Moment

Variables

dateTypes: { days: FillDateType; months: FillDateType; quarters: FillDateType; years: FillDateType } = ...

Standard built-in date types. To customise, implement the FillDateType interface.

-

Type declaration

Functions

Functions

  • Examines a set of dates and chooses the most specific type that includes them all. If all fall on Jan, 1 then years is chosen, and so on.

    -

    Parameters

    • dates: Moment[]

    Returns FillDateType

  • When querying for a time series chart, e.g. x-axis is Month and y-axis is Total Sales, there may be months where nothing was sold so they are missing from the list of records.

    @@ -35,4 +35,4 @@ extra records to be added at the start and end of the range if necessary.

    If you don't pass a type, a suitable type will be detected based on how the input record dates fall on unit boundaries.

    -

    Type parameters

    • T

    • R

    Parameters

    Returns R[]

  • smartDates<T, R>(records: T[], min: undefined | FillDate, max: undefined | FillDate, getDate: (record: T) => FillDate, fill: (dateText: string, record: undefined | T) => R): R[]
  • deprecated

    Type parameters

    • T

    • R

    Parameters

    • records: T[]
    • min: undefined | FillDate
    • max: undefined | FillDate
    • getDate: (record: T) => FillDate
    • fill: (dateText: string, record: undefined | T) => R
        • (dateText: string, record: undefined | T): R
        • Parameters

          • dateText: string
          • record: undefined | T

          Returns R

    Returns R[]

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +
itemID?: string
itemProp?: string
itemRef?: string
itemScope?: boolean
itemType?: string
lang?: string
onAbort?: ReactEventHandler<HTMLDivElement>
onAbortCapture?: ReactEventHandler<HTMLDivElement>
onAnimationEnd?: AnimationEventHandler<HTMLDivElement>
onAnimationEndCapture?: AnimationEventHandler<HTMLDivElement>
onAnimationIteration?: AnimationEventHandler<HTMLDivElement>
onAnimationIterationCapture?: AnimationEventHandler<HTMLDivElement>
onAnimationStart?: AnimationEventHandler<HTMLDivElement>
onAnimationStartCapture?: AnimationEventHandler<HTMLDivElement>
onAuxClick?: MouseEventHandler<HTMLDivElement>
onAuxClickCapture?: MouseEventHandler<HTMLDivElement>
onBeforeInput?: FormEventHandler<HTMLDivElement>
onBeforeInputCapture?: FormEventHandler<HTMLDivElement>
onBlur?: FocusEventHandler<HTMLDivElement>
onBlurCapture?: FocusEventHandler<HTMLDivElement>
onCanPlay?: ReactEventHandler<HTMLDivElement>
onCanPlayCapture?: ReactEventHandler<HTMLDivElement>
onCanPlayThrough?: ReactEventHandler<HTMLDivElement>
onCanPlayThroughCapture?: ReactEventHandler<HTMLDivElement>
onChange?: FormEventHandler<HTMLDivElement>
onChangeCapture?: FormEventHandler<HTMLDivElement>
onClick?: MouseEventHandler<HTMLDivElement>
onClickCapture?: MouseEventHandler<HTMLDivElement>
onCompositionEnd?: CompositionEventHandler<HTMLDivElement>
onCompositionEndCapture?: CompositionEventHandler<HTMLDivElement>
onCompositionStart?: CompositionEventHandler<HTMLDivElement>
onCompositionStartCapture?: CompositionEventHandler<HTMLDivElement>
onCompositionUpdate?: CompositionEventHandler<HTMLDivElement>
onCompositionUpdateCapture?: CompositionEventHandler<HTMLDivElement>
onContextMenu?: MouseEventHandler<HTMLDivElement>
onContextMenuCapture?: MouseEventHandler<HTMLDivElement>
onCopy?: ClipboardEventHandler<HTMLDivElement>
onCopyCapture?: ClipboardEventHandler<HTMLDivElement>
onCut?: ClipboardEventHandler<HTMLDivElement>
onCutCapture?: ClipboardEventHandler<HTMLDivElement>
onDoubleClick?: MouseEventHandler<HTMLDivElement>
onDoubleClickCapture?: MouseEventHandler<HTMLDivElement>
onDrag?: DragEventHandler<HTMLDivElement>
onDragCapture?: DragEventHandler<HTMLDivElement>
onDragEnd?: DragEventHandler<HTMLDivElement>
onDragEndCapture?: DragEventHandler<HTMLDivElement>
onDragEnter?: DragEventHandler<HTMLDivElement>
onDragEnterCapture?: DragEventHandler<HTMLDivElement>
onDragExit?: DragEventHandler<HTMLDivElement>
onDragExitCapture?: DragEventHandler<HTMLDivElement>
onDragLeave?: DragEventHandler<HTMLDivElement>
onDragLeaveCapture?: DragEventHandler<HTMLDivElement>
onDragOver?: DragEventHandler<HTMLDivElement>
onDragOverCapture?: DragEventHandler<HTMLDivElement>
onDragStart?: DragEventHandler<HTMLDivElement>
onDragStartCapture?: DragEventHandler<HTMLDivElement>
onDrop?: DragEventHandler<HTMLDivElement>
onDropCapture?: DragEventHandler<HTMLDivElement>
onDurationChange?: ReactEventHandler<HTMLDivElement>
onDurationChangeCapture?: ReactEventHandler<HTMLDivElement>
onEmptied?: ReactEventHandler<HTMLDivElement>
onEmptiedCapture?: ReactEventHandler<HTMLDivElement>
onEncrypted?: ReactEventHandler<HTMLDivElement>
onEncryptedCapture?: ReactEventHandler<HTMLDivElement>
onEnded?: ReactEventHandler<HTMLDivElement>
onEndedCapture?: ReactEventHandler<HTMLDivElement>
onError?: ReactEventHandler<HTMLDivElement>
onErrorCapture?: ReactEventHandler<HTMLDivElement>
onFocus?: FocusEventHandler<HTMLDivElement>
onFocusCapture?: FocusEventHandler<HTMLDivElement>
onGotPointerCapture?: PointerEventHandler<HTMLDivElement>
onGotPointerCaptureCapture?: PointerEventHandler<HTMLDivElement>
onInput?: FormEventHandler<HTMLDivElement>
onInputCapture?: FormEventHandler<HTMLDivElement>
onInvalid?: FormEventHandler<HTMLDivElement>
onInvalidCapture?: FormEventHandler<HTMLDivElement>
onKeyDown?: KeyboardEventHandler<HTMLDivElement>
onKeyDownCapture?: KeyboardEventHandler<HTMLDivElement>
onKeyPress?: KeyboardEventHandler<HTMLDivElement>
onKeyPressCapture?: KeyboardEventHandler<HTMLDivElement>
onKeyUp?: KeyboardEventHandler<HTMLDivElement>
onKeyUpCapture?: KeyboardEventHandler<HTMLDivElement>
onLoad?: ReactEventHandler<HTMLDivElement>
onLoadCapture?: ReactEventHandler<HTMLDivElement>
onLoadStart?: ReactEventHandler<HTMLDivElement>
onLoadStartCapture?: ReactEventHandler<HTMLDivElement>
onLoadedData?: ReactEventHandler<HTMLDivElement>
onLoadedDataCapture?: ReactEventHandler<HTMLDivElement>
onLoadedMetadata?: ReactEventHandler<HTMLDivElement>
onLoadedMetadataCapture?: ReactEventHandler<HTMLDivElement>
onLostPointerCapture?: PointerEventHandler<HTMLDivElement>
onLostPointerCaptureCapture?: PointerEventHandler<HTMLDivElement>
onMouseDown?: MouseEventHandler<HTMLDivElement>
onMouseDownCapture?: MouseEventHandler<HTMLDivElement>
onMouseEnter?: MouseEventHandler<HTMLDivElement>
onMouseLeave?: MouseEventHandler<HTMLDivElement>
onMouseMove?: MouseEventHandler<HTMLDivElement>
onMouseMoveCapture?: MouseEventHandler<HTMLDivElement>
onMouseOut?: MouseEventHandler<HTMLDivElement>
onMouseOutCapture?: MouseEventHandler<HTMLDivElement>
onMouseOver?: MouseEventHandler<HTMLDivElement>
onMouseOverCapture?: MouseEventHandler<HTMLDivElement>
onMouseUp?: MouseEventHandler<HTMLDivElement>
onMouseUpCapture?: MouseEventHandler<HTMLDivElement>
onPaste?: ClipboardEventHandler<HTMLDivElement>
onPasteCapture?: ClipboardEventHandler<HTMLDivElement>
onPause?: ReactEventHandler<HTMLDivElement>
onPauseCapture?: ReactEventHandler<HTMLDivElement>
onPlay?: ReactEventHandler<HTMLDivElement>
onPlayCapture?: ReactEventHandler<HTMLDivElement>
onPlaying?: ReactEventHandler<HTMLDivElement>
onPlayingCapture?: ReactEventHandler<HTMLDivElement>
onPointerCancel?: PointerEventHandler<HTMLDivElement>
onPointerCancelCapture?: PointerEventHandler<HTMLDivElement>
onPointerDown?: PointerEventHandler<HTMLDivElement>
onPointerDownCapture?: PointerEventHandler<HTMLDivElement>
onPointerEnter?: PointerEventHandler<HTMLDivElement>
onPointerEnterCapture?: PointerEventHandler<HTMLDivElement>
onPointerLeave?: PointerEventHandler<HTMLDivElement>
onPointerLeaveCapture?: PointerEventHandler<HTMLDivElement>
onPointerMove?: PointerEventHandler<HTMLDivElement>
onPointerMoveCapture?: PointerEventHandler<HTMLDivElement>
onPointerOut?: PointerEventHandler<HTMLDivElement>
onPointerOutCapture?: PointerEventHandler<HTMLDivElement>
onPointerOver?: PointerEventHandler<HTMLDivElement>
onPointerOverCapture?: PointerEventHandler<HTMLDivElement>
onPointerUp?: PointerEventHandler<HTMLDivElement>
onPointerUpCapture?: PointerEventHandler<HTMLDivElement>
onProgress?: ReactEventHandler<HTMLDivElement>
onProgressCapture?: ReactEventHandler<HTMLDivElement>
onRateChange?: ReactEventHandler<HTMLDivElement>
onRateChangeCapture?: ReactEventHandler<HTMLDivElement>
onReset?: FormEventHandler<HTMLDivElement>
onResetCapture?: FormEventHandler<HTMLDivElement>
onScroll?: UIEventHandler<HTMLDivElement>
onScrollCapture?: UIEventHandler<HTMLDivElement>
onSeeked?: ReactEventHandler<HTMLDivElement>
onSeekedCapture?: ReactEventHandler<HTMLDivElement>
onSeeking?: ReactEventHandler<HTMLDivElement>
onSeekingCapture?: ReactEventHandler<HTMLDivElement>
onSelect?: ReactEventHandler<HTMLDivElement>
onSelectCapture?: ReactEventHandler<HTMLDivElement>
onStalled?: ReactEventHandler<HTMLDivElement>
onStalledCapture?: ReactEventHandler<HTMLDivElement>
onSubmit?: FormEventHandler<HTMLDivElement>
onSubmitCapture?: FormEventHandler<HTMLDivElement>
onSuspend?: ReactEventHandler<HTMLDivElement>
onSuspendCapture?: ReactEventHandler<HTMLDivElement>
onTimeUpdate?: ReactEventHandler<HTMLDivElement>
onTimeUpdateCapture?: ReactEventHandler<HTMLDivElement>
onTouchCancel?: TouchEventHandler<HTMLDivElement>
onTouchCancelCapture?: TouchEventHandler<HTMLDivElement>
onTouchEnd?: TouchEventHandler<HTMLDivElement>
onTouchEndCapture?: TouchEventHandler<HTMLDivElement>
onTouchMove?: TouchEventHandler<HTMLDivElement>
onTouchMoveCapture?: TouchEventHandler<HTMLDivElement>
onTouchStart?: TouchEventHandler<HTMLDivElement>
onTouchStartCapture?: TouchEventHandler<HTMLDivElement>
onTransitionEnd?: TransitionEventHandler<HTMLDivElement>
onTransitionEndCapture?: TransitionEventHandler<HTMLDivElement>
onVolumeChange?: ReactEventHandler<HTMLDivElement>
onVolumeChangeCapture?: ReactEventHandler<HTMLDivElement>
onWaiting?: ReactEventHandler<HTMLDivElement>
onWaitingCapture?: ReactEventHandler<HTMLDivElement>
onWheel?: WheelEventHandler<HTMLDivElement>
onWheelCapture?: WheelEventHandler<HTMLDivElement>
placeholder?: string
prefix?: string
property?: string
radioGroup?: string
resource?: string
results?: number
role?: AriaRole
security?: string
slot?: string
spellCheck?: Booleanish
state?: string
style?: CSSProperties
suppressContentEditableWarning?: boolean
suppressHydrationWarning?: boolean
tabIndex?: number
title?: string
translate?: "yes" | "no"
typeof?: string
unselectable?: "on" | "off"
vocab?: string

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi-react-utils/interfaces/FlowerBIValueBoxProps.html b/docs/typedoc/flowerbi-react-utils/interfaces/FlowerBIValueBoxProps.html index 14718cb9..f38a49cc 100644 --- a/docs/typedoc/flowerbi-react-utils/interfaces/FlowerBIValueBoxProps.html +++ b/docs/typedoc/flowerbi-react-utils/interfaces/FlowerBIValueBoxProps.html @@ -1 +1 @@ -FlowerBIValueBoxProps | flowerbi-react-utils
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface FlowerBIValueBoxProps

Hierarchy

  • FlowerBIValueBoxProps

Index

Properties

id?: string
label?: string
title?: string
value?: string | number

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +FlowerBIValueBoxProps | flowerbi-react-utils
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface FlowerBIValueBoxProps

Hierarchy

  • FlowerBIValueBoxProps

Index

Properties

id?: string
label?: string
title?: string
value?: string | number

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi-react-utils/interfaces/LayoutProps.html b/docs/typedoc/flowerbi-react-utils/interfaces/LayoutProps.html index e7880a31..5a6cd687 100644 --- a/docs/typedoc/flowerbi-react-utils/interfaces/LayoutProps.html +++ b/docs/typedoc/flowerbi-react-utils/interfaces/LayoutProps.html @@ -124,7 +124,7 @@
see

aria-valuetext.

aria-valuetext?: string

Defines the human readable text alternative of aria-valuenow for a range widget.

-
autoCapitalize?: string
autoCorrect?: string
autoSave?: string
children: ReactNode | ReactNode[]
className?: string
color?: string
contentEditable?: Booleanish | "inherit"
contextMenu?: string
dangerouslySetInnerHTML?: { __html: string }

Type declaration

  • __html: string
datatype?: string
defaultChecked?: boolean
defaultValue?: string | number | readonly string[]
dir?: string
draggable?: Booleanish
hidden?: boolean
id?: string
inlist?: any
inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal"
+
autoCapitalize?: string
autoCorrect?: string
autoSave?: string
children: ReactNode | ReactNode[]
className?: string
color?: string
contentEditable?: Booleanish | "inherit"
contextMenu?: string
dangerouslySetInnerHTML?: { __html: string }

Type declaration

  • __html: string
datatype?: string
defaultChecked?: boolean
defaultValue?: string | number | readonly string[]
dir?: string
draggable?: Booleanish
hidden?: boolean
id?: string
inlist?: any
inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal"

Hints at the type of data that might be entered by the user while editing the element or its contents

see

https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute

is?: string
diff --git a/docs/typedoc/flowerbi-react-utils/modules.html b/docs/typedoc/flowerbi-react-utils/modules.html index a6a96f1f..42ca6b82 100644 --- a/docs/typedoc/flowerbi-react-utils/modules.html +++ b/docs/typedoc/flowerbi-react-utils/modules.html @@ -1 +1 @@ -flowerbi-react-utils
Options
All
  • Public
  • Public/Protected
  • All
Menu

flowerbi-react-utils

Index

Functions

  • Column(props: LayoutElementCoreProps): Element
  • Row(props: LayoutElementCoreProps): Element
  • useDropDown<T>(options: DropDownOption<T>[]): { options: string[]; value: string; get selected(): T; onChange: any }

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +flowerbi-react-utils
Options
All
  • Public
  • Public/Protected
  • All
Menu

flowerbi-react-utils

Index

Functions

  • Column(props: LayoutElementCoreProps): Element
  • Row(props: LayoutElementCoreProps): Element
  • useDropDown<T>(options: DropDownOption<T>[]): { options: string[]; value: string; get selected(): T; onChange: any }

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi-react/interfaces/PageFilters.html b/docs/typedoc/flowerbi-react/interfaces/PageFilters.html index 987e0682..088b9e9b 100644 --- a/docs/typedoc/flowerbi-react/interfaces/PageFilters.html +++ b/docs/typedoc/flowerbi-react/interfaces/PageFilters.html @@ -1 +1 @@ -PageFilters | flowerbi-react
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PageFilters

Hierarchy

Index

Properties

global: FilterJson[]
interactionKey: string
interactions: FilterJson[]

Methods

  • clearAll(): void
  • clearGlobal(): void
  • clearInteraction(): void
  • getFilters(key: string): FilterJson[]
  • setGlobal(filters: FilterJson[]): void
  • setInteraction(key: string, filters: FilterJson[]): void

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +PageFilters | flowerbi-react
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PageFilters

Hierarchy

Index

Properties

global: FilterJson[]
interactionKey: string
interactions: FilterJson[]

Methods

  • clearAll(): void
  • clearGlobal(): void
  • clearInteraction(): void
  • getFilters(key: string): FilterJson[]
  • setGlobal(filters: FilterJson[]): void
  • setInteraction(key: string, filters: FilterJson[]): void

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi-react/interfaces/PageFiltersProp.html b/docs/typedoc/flowerbi-react/interfaces/PageFiltersProp.html index 66526439..b79f45f8 100644 --- a/docs/typedoc/flowerbi-react/interfaces/PageFiltersProp.html +++ b/docs/typedoc/flowerbi-react/interfaces/PageFiltersProp.html @@ -1 +1 @@ -PageFiltersProp | flowerbi-react
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PageFiltersProp

Hierarchy

  • PageFiltersProp

Index

Properties

Properties

pageFilters: PageFilters

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +PageFiltersProp | flowerbi-react
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PageFiltersProp

Hierarchy

  • PageFiltersProp

Index

Properties

Properties

pageFilters: PageFilters

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi-react/interfaces/PageFiltersState.html b/docs/typedoc/flowerbi-react/interfaces/PageFiltersState.html index 45a7eaf2..c7b3dcac 100644 --- a/docs/typedoc/flowerbi-react/interfaces/PageFiltersState.html +++ b/docs/typedoc/flowerbi-react/interfaces/PageFiltersState.html @@ -1 +1 @@ -PageFiltersState | flowerbi-react
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PageFiltersState

Hierarchy

Index

Properties

global: FilterJson[]
interactionKey: string
interactions: FilterJson[]

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +PageFiltersState | flowerbi-react
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PageFiltersState

Hierarchy

Index

Properties

global: FilterJson[]
interactionKey: string
interactions: FilterJson[]

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi-react/interfaces/UseQueryResult.html b/docs/typedoc/flowerbi-react/interfaces/UseQueryResult.html index eda6cef0..ad6f5dc3 100644 --- a/docs/typedoc/flowerbi-react/interfaces/UseQueryResult.html +++ b/docs/typedoc/flowerbi-react/interfaces/UseQueryResult.html @@ -2,7 +2,7 @@

The set of records returned, each having named properties corresponding to the plain and aggregated columns selected in the query.

-
+

The state of the query operation:

UseQueryState: "init" | "ready" | "refresh" | "error"

Functions

UseQueryState: "init" | "ready" | "refresh" | "error"

Functions

  • A custom React hook that evaluates to the result of a Query, making it easy to perform a query from within a component.

    @@ -23,6 +23,6 @@

    Optionally, a list of one or more other queries whose results are used to build this query, so we wait for them before executing, and optionally short-circuit to an empty result if the dependency is empty.

    -

Returns UseQueryResult<S, C>

Returns UseQueryResult<S, C>

Legend

  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/classes/IntegerQueryColumn.html b/docs/typedoc/flowerbi/classes/IntegerQueryColumn.html index 1b1fa455..3981902d 100644 --- a/docs/typedoc/flowerbi/classes/IntegerQueryColumn.html +++ b/docs/typedoc/flowerbi/classes/IntegerQueryColumn.html @@ -1,51 +1,51 @@ -IntegerQueryColumn | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class IntegerQueryColumn<T>

Type parameters

  • T: number | null = number

Hierarchy

Index

Constructors

Properties

name: string

Methods

  • bitsIn(mask: number, value: NonNullable<T>[]): FilterJson

Returns AggregationJson

  • bitsIn(mask: number, value: NonNullable<T>[]): FilterJson

Returns AggregationJson

Returns AggregationJson

  • in(value: T extends string | number ? T[] : never): FilterJson
  • in(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to appear in the list. Only supported for number or string columns.

    -

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

Returns AggregationJson

Returns AggregationJson

  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to not appear in the list. Only supported for number or string columns.

    -

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

Returns AggregationJson

Returns AggregationJson

  • in(value: T extends string | number ? T[] : never): FilterJson
  • in(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to appear in the list. Only supported for number or string columns.

    -

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

Returns AggregationJson

Returns AggregationJson

  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to not appear in the list. Only supported for number or string columns.

    -

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

Returns AggregationJson

  • Produces a filter that requires this column to be equal to some value.

    -

    Parameters

    • value: T

    Returns FilterJson

  • Produces a filter that requires this column to be greater than to some value.

    -

    Parameters

    • value: T

    Returns FilterJson

  • Produces a filter that requires this column to be greater than or equal to some value.

    -

    Parameters

    • value: T

    Returns FilterJson

  • in(value: T extends string | number ? T[] : never): FilterJson
  • in(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to appear in the list. Only supported for number or string columns.

    -

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

  • Produces a filter that requires this column to be less than to some value.

    -

    Parameters

    • value: T

    Returns FilterJson

  • Produces a filter that requires this column to be less than or equal to some value.

    -

    Parameters

    • value: T

    Returns FilterJson

Returns AggregationJson

Returns AggregationJson

  • Produces a filter that requires this column to be not equal to some value.

    -

    Parameters

    • value: T

    Returns FilterJson

  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to not appear in the list. Only supported for number or string columns.

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/classes/QueryColumnRuntimeType.html b/docs/typedoc/flowerbi/classes/QueryColumnRuntimeType.html index fd692952..edfd09bd 100644 --- a/docs/typedoc/flowerbi/classes/QueryColumnRuntimeType.html +++ b/docs/typedoc/flowerbi/classes/QueryColumnRuntimeType.html @@ -1 +1 @@ -QueryColumnRuntimeType | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class QueryColumnRuntimeType

Hierarchy

  • QueryColumnRuntimeType

Index

Constructors

Properties

Constructors

Properties

targetColumn: string

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +QueryColumnRuntimeType | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class QueryColumnRuntimeType

Hierarchy

  • QueryColumnRuntimeType

Index

Constructors

Properties

Constructors

Properties

targetColumn: string

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/classes/QueryValuesRow.html b/docs/typedoc/flowerbi/classes/QueryValuesRow.html index f11cff33..5a105075 100644 --- a/docs/typedoc/flowerbi/classes/QueryValuesRow.html +++ b/docs/typedoc/flowerbi/classes/QueryValuesRow.html @@ -1,4 +1,4 @@ -QueryValuesRow | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class QueryValuesRow<S, C>

Type parameters

Hierarchy

  • QueryValuesRow

Implements

Index

Constructors

Properties

Methods

Constructors

Properties

totals: undefined | (AggregateValuesOnly<S> & CalculationValues<C>)
values: ExpandedQueryRecord<S, C>
+QueryValuesRow | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class QueryValuesRow<S, C>

Type parameters

Hierarchy

  • QueryValuesRow

Implements

Index

Constructors

Properties

Methods

Constructors

Properties

totals: undefined | (AggregateValuesOnly<S> & CalculationValues<C>)
values: ExpandedQueryRecord<S, C>

The plain values of columns, which may be undefined if this refers to the ExpandedQueryResult.totals record.

-

Methods

  • percentage<K>(key: K): number

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Methods

  • percentage<K>(key: K): number

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/classes/QueryValuesTotal.html b/docs/typedoc/flowerbi/classes/QueryValuesTotal.html index 7f9f7223..10b7ef1d 100644 --- a/docs/typedoc/flowerbi/classes/QueryValuesTotal.html +++ b/docs/typedoc/flowerbi/classes/QueryValuesTotal.html @@ -1,4 +1,4 @@ -QueryValuesTotal | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class QueryValuesTotal<S, C>

Type parameters

Hierarchy

  • QueryValuesTotal

Implements

Index

Constructors

Properties

Methods

Constructors

Properties

+QueryValuesTotal | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class QueryValuesTotal<S, C>

Type parameters

Hierarchy

  • QueryValuesTotal

Implements

Index

Constructors

Properties

Methods

Constructors

Properties

The plain values of columns, which may be undefined if this refers to the ExpandedQueryResult.totals record.

-

Methods

  • percentage(): number

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Methods

  • percentage(): number

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/classes/StringQueryColumn.html b/docs/typedoc/flowerbi/classes/StringQueryColumn.html index d3dd7cc5..06ed9c4a 100644 --- a/docs/typedoc/flowerbi/classes/StringQueryColumn.html +++ b/docs/typedoc/flowerbi/classes/StringQueryColumn.html @@ -1,46 +1,46 @@ -StringQueryColumn | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class StringQueryColumn<T>

Type parameters

  • T: string | null = string

Hierarchy

Index

Constructors

Properties

name: string

Methods

Returns AggregationJson

Returns AggregationJson

  • in(value: T extends string | number ? T[] : never): FilterJson
  • in(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to appear in the list. Only supported for number or string columns.

    -

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

Returns AggregationJson

Returns AggregationJson

  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • notIn(value: T extends string | number ? T[] : never): FilterJson
  • Produces a filter that requires this column's value to not appear in the list. Only supported for number or string columns.

    Parameters

    • value: T extends string | number ? T[] : never

    Returns FilterJson

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/enums/QueryColumnDataType.html b/docs/typedoc/flowerbi/enums/QueryColumnDataType.html index 8dd5a9d5..ea69fd59 100644 --- a/docs/typedoc/flowerbi/enums/QueryColumnDataType.html +++ b/docs/typedoc/flowerbi/enums/QueryColumnDataType.html @@ -1,4 +1,4 @@ QueryColumnDataType | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Enumeration QueryColumnDataType

A column from the schema, with a name and a data type. A whole schema of such declared columns can be auto-generated using the CLI.

-

Index

Enumeration members

Bool = "Bool"
Byte = "Byte"
DateTime = "DateTime"
Decimal = "Decimal"
Double = "Double"
Float = "Float"
Int = "Int"
Long = "Long"
None = "None"
Short = "Short"
String = "String"

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Index

Enumeration members

Bool = "Bool"
Byte = "Byte"
DateTime = "DateTime"
Decimal = "Decimal"
Double = "Double"
Float = "Float"
Int = "Int"
Long = "Long"
None = "None"
Short = "Short"
String = "String"

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/interfaces/AggregationJson.html b/docs/typedoc/flowerbi/interfaces/AggregationJson.html index c2279272..470c9adf 100644 --- a/docs/typedoc/flowerbi/interfaces/AggregationJson.html +++ b/docs/typedoc/flowerbi/interfaces/AggregationJson.html @@ -3,4 +3,4 @@ a function applied to it. Filters can optionally be supplied to limit the set of rows included in the aggregation. The column is specified by a string of the form table.column.

-

Hierarchy

  • AggregationJson

Index

Properties

column: string
filters?: FilterJson[]
function: AggregationType

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Hierarchy

  • AggregationJson

Index

Properties

column: string
filters?: FilterJson[]
function: AggregationType

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/interfaces/ExpandedQueryResult.html b/docs/typedoc/flowerbi/interfaces/ExpandedQueryResult.html index e88d52af..643d216e 100644 --- a/docs/typedoc/flowerbi/interfaces/ExpandedQueryResult.html +++ b/docs/typedoc/flowerbi/interfaces/ExpandedQueryResult.html @@ -1,10 +1,10 @@ ExpandedQueryResult | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface ExpandedQueryResult<S, C>

The statically-typed result of a Query.

-

Type parameters

Hierarchy

  • ExpandedQueryResult

Index

Properties

Properties

records: ExpandedQueryRecord<S, C>[]
+

Type parameters

Hierarchy

  • ExpandedQueryResult

Index

Properties

Properties

records: ExpandedQueryRecord<S, C>[]

The set of records returned, each having named properties corresponding to the plain and aggregated columns selected in the query.

-
+

Optional extra record, only available if QueryJson.totals was specified as true in the query, containing the aggregation totals.

diff --git a/docs/typedoc/flowerbi/interfaces/FilterJson.html b/docs/typedoc/flowerbi/interfaces/FilterJson.html index da59c043..161d6e04 100644 --- a/docs/typedoc/flowerbi/interfaces/FilterJson.html +++ b/docs/typedoc/flowerbi/interfaces/FilterJson.html @@ -1,4 +1,4 @@ FilterJson | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface FilterJson

Specifies a filter criterion. The column is specified by a string of the form table.column.

-

Hierarchy

  • FilterJson

Index

Properties

column: string
constant?: unknown
operator: FilterOperator
value: unknown

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Hierarchy

  • FilterJson

Index

Properties

column: string
constant?: unknown
operator: FilterOperator
value: unknown

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/interfaces/Query.html b/docs/typedoc/flowerbi/interfaces/Query.html index 38024aec..9d424cb2 100644 --- a/docs/typedoc/flowerbi/interfaces/Query.html +++ b/docs/typedoc/flowerbi/interfaces/Query.html @@ -1,25 +1,25 @@ Query | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface Query<S, C>

Strongly-typed query definition: use jsonifyQuery to convert to the JSON format and expandQueryResult to generate corresponding output records.

-

Type parameters

Hierarchy

  • Query

Index

Properties

allowDuplicates?: boolean
+

Type parameters

Hierarchy

  • Query

Index

Properties

allowDuplicates?: boolean

Only applicable if the query specifies only ordinary columns, no aggregations. If true, no GROUP BY clause is added to the SQL, so if multiple results have the same values they will appear repeatedly in the output. This can greatly reduce the work required by the SQL engine, and so should be specified if duplicate rows are tolerable or are known to be impossible.

-
calculations?: C
comment?: string
+
calculations?: C
comment?: string

A string to insert in a comment at the start of the generated SQL.

This will be aggressively processed to remove the danger of injection attacks, so anything other than alpha, numeric, new line or CR characters will be replaced with space.

-
filters?: FilterJson[]
orderBy?: (OrderingJson | Ordering<S, C>)[]
+
filters?: FilterJson[]
orderBy?: (OrderingJson | Ordering<S, C>)[]

Ordering criteria to apply.

-
select: S
skip?: number
+
select: S
skip?: number

Number of result records to skip before the first record returned.

-
take?: number
+
take?: number

Number of result records to return.

-
totals?: boolean
+
totals?: boolean

Specifies whether to return a totals property containing the aggregation values across the whole dataset, e.g. if the select object is:

diff --git a/docs/typedoc/flowerbi/interfaces/QueryJson.html b/docs/typedoc/flowerbi/interfaces/QueryJson.html index be08a760..3428d9f0 100644 --- a/docs/typedoc/flowerbi/interfaces/QueryJson.html +++ b/docs/typedoc/flowerbi/interfaces/QueryJson.html @@ -1,23 +1,23 @@ QueryJson | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface QueryJson

Specifies an entire query.

-

Hierarchy

  • QueryJson

Index

Properties

aggregations: AggregationJson[]
+

Hierarchy

  • QueryJson

Index

Properties

aggregations: AggregationJson[]

The aggregated values to fetch.

-
allowDuplicates?: boolean
+
allowDuplicates?: boolean
calculations?: CalculationJson[]
+
calculations?: CalculationJson[]

The calculations to perform.

-
comment?: string
+
comment?: string
filters?: FilterJson[]
+
filters?: FilterJson[]

Filters to apply. They are always combined with AND.

-
orderBy?: OrderingJson[]
+
orderBy?: OrderingJson[]

Ordering criteria to apply.

-
select?: string[]
+
select?: string[]

The plain columns to fetch, each specified by a string of the form table.column.

-
skip?: number
+
skip?: number

See Query.skip.

-
take?: number
+
take?: number

See Query.take.

-
totals?: boolean
+
totals?: boolean

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/interfaces/QueryRecordJson.html b/docs/typedoc/flowerbi/interfaces/QueryRecordJson.html index d04db36f..145f8732 100644 --- a/docs/typedoc/flowerbi/interfaces/QueryRecordJson.html +++ b/docs/typedoc/flowerbi/interfaces/QueryRecordJson.html @@ -1,7 +1,7 @@ QueryRecordJson | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface QueryRecordJson

The JSON format of a record returned from the API when executing a query.

-

Hierarchy

  • QueryRecordJson

Index

Properties

aggregated: number[]
+

Hierarchy

  • QueryRecordJson

Index

Properties

aggregated: number[]

The aggregated column values.

-
selected: QuerySelectValue[]
+
selected: QuerySelectValue[]

The plain column values.

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/interfaces/QueryResultJson.html b/docs/typedoc/flowerbi/interfaces/QueryResultJson.html index fe1df18e..235144da 100644 --- a/docs/typedoc/flowerbi/interfaces/QueryResultJson.html +++ b/docs/typedoc/flowerbi/interfaces/QueryResultJson.html @@ -1,9 +1,9 @@ QueryResultJson | flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface QueryResultJson

The JSON format of the whole payload returned from the API when executing a query.

-

Hierarchy

  • QueryResultJson

Index

Properties

Properties

records: QueryRecordJson[]
+

Hierarchy

  • QueryResultJson

Index

Properties

Properties

records: QueryRecordJson[]

The records of the query result.

-
+

Optional extra record, only available if QueryJson.totals was specified as true in the query, containing the aggregation totals.

diff --git a/docs/typedoc/flowerbi/interfaces/QueryValues.html b/docs/typedoc/flowerbi/interfaces/QueryValues.html index efefeda5..132d795f 100644 --- a/docs/typedoc/flowerbi/interfaces/QueryValues.html +++ b/docs/typedoc/flowerbi/interfaces/QueryValues.html @@ -2,7 +2,7 @@

An abstract interface representing either a row from a dataset or the ExpandedQueryResult.totals row, so that generic code can format either of them in a consistent way.

-

Type parameters

Hierarchy

  • QueryValues

Implemented by

Index

Properties

Methods

Properties

+

Type parameters

Hierarchy

  • QueryValues

Implemented by

Index

Properties

Methods

Properties

The plain values of columns, which may be undefined if this refers to the ExpandedQueryResult.totals record.

-

Methods

  • percentage<K>(key: K): number
  • Type parameters

    • K: string | number | symbol

    Parameters

    • key: K

    Returns number

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Methods

  • percentage<K>(key: K): number
  • Type parameters

    • K: string | number | symbol

    Parameters

    • key: K

    Returns number

Legend

  • Constructor
  • Property
  • Method
  • Inherited property
  • Inherited method
  • Property
  • Protected method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/typedoc/flowerbi/modules.html b/docs/typedoc/flowerbi/modules.html index e4060a9a..bc52f16d 100644 --- a/docs/typedoc/flowerbi/modules.html +++ b/docs/typedoc/flowerbi/modules.html @@ -1,70 +1,70 @@ -flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

flowerbi

Index

Type aliases

AggregatePropsOnly<T>: AggregatePropsOnlyHelper<T>[keyof AggregatePropsOnlyHelper<T>]
+flowerbi
Options
All
  • Public
  • Public/Protected
  • All
Menu

flowerbi

Index

Type aliases

AggregatePropsOnly<T>: AggregatePropsOnlyHelper<T>[keyof AggregatePropsOnlyHelper<T>]

The names of properties from a select object that refer to aggregated values. Compare with ColumnPropsOnly.

-

Type parameters

AggregatePropsOnlyHelper<T>: { [ K in keyof T]: T[K] extends QueryColumn<any> ? never : K }
+

Type parameters

AggregatePropsOnlyHelper<T>: { [ K in keyof T]: T[K] extends QueryColumn<any> ? never : K }

A helper type used in the definition of AggregatePropsOnly.

-

Type parameters

AggregateValuesOnly<T>: { [ K in AggregatePropsOnly<T>]: number }
+

Type parameters

AggregateValuesOnly<T>: { [ K in AggregatePropsOnly<T>]: number }

An object that contains a subset of the the named properties from a query's select object, those that refer to aggregated values (hence all are of type number.)

-

Type parameters

AggregationType: "Count" | "Sum" | "Avg" | "Min" | "Max" | "CountDistinct"
+

Type parameters

AggregationType: "Count" | "Sum" | "Avg" | "Min" | "Max" | "CountDistinct"

The allowed aggregation function names.

-
Calculation<S>: number | AggregatePropsOnly<S> | [Calculation<S>, "+" | "-" | "*" | "/" | "??", Calculation<S>]

Type parameters

CalculationJson: { value: number } | { aggregation: number } | { first: CalculationJson; operator: "+" | "-" | "*" | "/" | "??"; second: CalculationJson }
+
Calculation<S>: number | AggregatePropsOnly<S> | [Calculation<S>, "+" | "-" | "*" | "/" | "??", Calculation<S>]

Type parameters

CalculationJson: { value: number } | { aggregation: number } | { first: CalculationJson; operator: "+" | "-" | "*" | "/" | "??"; second: CalculationJson }

Specifies an expression for calculating a derived value based on the values of aggregations, specified by zero-based position.

-
CalculationValues<C>: { [ K in keyof C]: number }

Type parameters

ColumnPropsOnly<T>: ColumnPropsOnlyHelper<T>[keyof ColumnPropsOnlyHelper<T>]
+
CalculationValues<C>: { [ K in keyof C]: number }

Type parameters

ColumnPropsOnly<T>: ColumnPropsOnlyHelper<T>[keyof ColumnPropsOnlyHelper<T>]

The names of properties from a select object that refer to plain columns. Compare with AggregatePropsOnly.

-

Type parameters

ColumnPropsOnlyHelper<T>: { [ K in keyof T]: T[K] extends QueryColumn<any> ? K : never }
+

Type parameters

ColumnPropsOnlyHelper<T>: { [ K in keyof T]: T[K] extends QueryColumn<any> ? K : never }

A helper type used in the definition of ColumnPropsOnly.

-

Type parameters

ExpandedQueryRecord<S, C>: { [ P in keyof S]: S[P] extends QueryColumn<any> ? QueryColumnType<S[P]> : number } & { [ P in keyof C]: number }
+

Type parameters

ExpandedQueryRecord<S, C>: { [ P in keyof S]: S[P] extends QueryColumn<any> ? QueryColumnType<S[P]> : number } & { [ P in keyof C]: number }

Defines the shape of a record returned from a query, based on its select object. Each selected property appears as a property in the record with the same name. For plain columns the data type depends on the column definition, but for aggregations and calculations the data type is always number.

-

Type parameters

ExpandedQueryRecordWithOptionalColumns<S, C>: { [ P in keyof S]: S[P] extends QueryColumn<any> ? QueryColumnType<S[P]> | undefined : number } & { [ P in keyof C]: number }
+

Type parameters

ExpandedQueryRecordWithOptionalColumns<S, C>: { [ P in keyof S]: S[P] extends QueryColumn<any> ? QueryColumnType<S[P]> | undefined : number } & { [ P in keyof C]: number }

Similar to ExpandedQueryRecord but the plain columns are optional, so they may be undefined. Aggregations/calculations are not optional.

-

Type parameters

FilterOperator: "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS IN" | "LIKE"
+

Type parameters

FilterOperator: "=" | "<>" | ">" | "<" | ">=" | "<=" | "IN" | "NOT IN" | "BITS IN" | "LIKE"

The allowed filter comparison operators.

-
FilterValue: string | number | boolean | Date | unknown | string[] | number[]
+
FilterValue: string | number | boolean | Date | unknown | string[] | number[]

The allowed value types for a filter.

-
Ordering<S, C>: { descending?: boolean } & ({ select: keyof S } | { calculation: keyof C })

Type parameters

OrderingJson: { descending?: boolean } & ({ column: string } | { index: number; type: "Select" | "Value" | "Calculation" })
+
Ordering<S, C>: { descending?: boolean } & ({ select: keyof S } | { calculation: keyof C })

Type parameters

OrderingJson: { descending?: boolean } & ({ column: string } | { index: number; type: "Select" | "Value" | "Calculation" })

Specifies an ordering criteria: which column to sort by, and optionally whether it is descending (the default is ascending). The column can be specified by a string of the form table.column, though this can only target one of the columns specified in select. More flexibly, specify a type of column (the type 'Value' refers to aggregations) and its zero-based position.

-
QueryCalculations<S>: Record<string, Calculation<S>>
+
QueryCalculations<S>: Record<string, Calculation<S>>

The select object of a query has named properties of type SelectMember.

-

Type parameters

QueryColumnType<T>: T extends QueryColumn<infer C> ? C : never
+

Type parameters

QueryColumnType<T>: T extends QueryColumn<infer C> ? C : never

Extracts the data type from a column. So QueryColumnType<QueryColumn<boolean>> is boolean.

-

Type parameters

  • T

QueryFetch: (queryJson: QueryJson) => Promise<QueryResultJson>

Type declaration

QueryFetch: (queryJson: QueryJson) => Promise<QueryResultJson>

Type declaration

    • The function you need to implement to pass QueryJson payloads to your API and get them executed. This will typically be a wrapper around the fetch browser API, or something more high-level, and can make use of whatever authentication method you prefer.

      -

      Parameters

      Returns Promise<QueryResultJson>

QuerySelect: Record<string, SelectMember>
+

Parameters

Returns Promise<QueryResultJson>

QuerySelect: Record<string, SelectMember>

The select object of a query has named properties of type SelectMember.

-
QuerySelectValue: number | string | Date | boolean
+
QuerySelectValue: number | string | Date | boolean

The allowed data types for plain columns.

-
SelectMember: QueryColumn<any> | AggregationJson
+
SelectMember: QueryColumn<any> | AggregationJson

Defines the kinds of member that can appear in the select object of a query. Queries can select plain columns, or aggregation functions on columns.

-

Functions

  • distinct<T>(arr: T[]): T[]

Functions

  • distinct<T>(arr: T[]): T[]
  • Returns the distinct (unique) values from an array. The comparison method is very simplistic: all values are converted to strings before comparison.

    Type parameters

    • T

    Parameters

    • arr: T[]
      -

    Returns T[]

Returns T[]

  • Converts the QueryRecordJson for a single record into a strongly-typed record with named properties, using the Query.select from the query to perform the necessary mapping.

    @@ -72,21 +72,21 @@

    The Query.select property from the query.

  • record: QueryRecordJson

    The record returned from your API.

    -
  • Optional calcs: C

Returns ExpandedQueryRecord<S, C>

Returns ExpandedQueryRecord<S, C>

Returns ExpandedQueryResult<S, C>

  • Returns the names of properties in a query that refer to aggregated columns. The result is an array of strings, but type-constrained to string literal types:

    getAggregatePropsOnly({
    customer: Customer.Name,
    spend: Invoice.Amount.sum()
    }) // ["spend"]

    Type parameters

    Parameters

    • select: T

      the select object from a query

      -

    Returns AggregatePropsOnly<T>[]

Returns AggregatePropsOnly<T>[]

Returns AggregateValuesOnly<S> & CalculationValues<C>

Returns AggregateValuesOnly<S> & CalculationValues<C>

  • Returns the names of properties in a query that refer to plain columns. The result is an array of strings, but type-constrained to string literal types:

    getColumnPropsOnly({
    customer: Customer.Name,
    spend: Invoice.Amount.sum()
    }) // ["customer"]

    Type parameters

    Parameters

    • select: T

      the select object from a query

      -

    Returns ColumnPropsOnly<T>[]

Returns ColumnPropsOnly<T>[]

  • Returns the plain column objects referred to in a query, ignoring aggregated columns.

    Parameters

    Returns QueryColumn<any>[]

Returns QueryColumn<any>[]

  • keysOf<T>(obj: T): keyof T[]

Returns QueryJson

  • keysOf<T>(obj: T): keyof T[]
  • Returns the names of properties (i.e. the keys) in an object, statically typed so each has the string literal type of one of the properties. This is not always correct, because the type will include properties inherited diff --git a/server/dotnet/Directory.Build.props b/server/dotnet/Directory.Build.props index e7e8c69c..2a6209f3 100644 --- a/server/dotnet/Directory.Build.props +++ b/server/dotnet/Directory.Build.props @@ -1,6 +1,6 @@ - 5.0.2 + 5.1.1 Daniel Earwicker ./nupkg MIT