From ad7c03c504bb2ef26f0209ebe6291ba6fcc51bef Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Thu, 15 Aug 2024 19:53:54 +0200 Subject: [PATCH 01/22] fix(Lucene.Core): upgrade to new version of Kentico, webpage events which are listened to by Lucene changed from archive to unpublish --- Directory.Packages.props | 14 +- examples/DancingGoat/packages.lock.json | 418 +++++++++--------- .../packages.lock.json | 372 ++++++++-------- .../Indexing/DefaultLuceneTaskLogger.cs | 2 +- .../LuceneSearchModule.cs | 4 +- .../packages.lock.json | 104 +++-- .../packages.lock.json | 376 ++++++++-------- .../packages.lock.json | 387 ++++++++-------- 8 files changed, 844 insertions(+), 833 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 7786388..b9ecee7 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,13 +6,13 @@ true - - - - - - - + + + + + + + diff --git a/examples/DancingGoat/packages.lock.json b/examples/DancingGoat/packages.lock.json index 1678913..8d196b2 100644 --- a/examples/DancingGoat/packages.lock.json +++ b/examples/DancingGoat/packages.lock.json @@ -4,53 +4,53 @@ "net6.0": { "Kentico.Xperience.Admin": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "0PZqIlNEjpE5GHPtTMHzd5KkO428oRJlYEDx2YmLLYkm+UDMsRIwaS91UtmZTP5FYlDzv7yq0zgB4hqbcdsZTA==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "XaJ9roaXsCFj/PK/feFao403h9NjCT4gbqhJs6vbPDfUBfRLtxgszQRraiF5Rb4Cft5VmtqMfGO7rW5a9w+k5w==", "dependencies": { "Kentico.Aira.Client": "1.0.25", - "Kentico.Xperience.WebApp": "[29.0.0]", - "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.29", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29" + "Kentico.Xperience.WebApp": "[29.3.3]", + "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.32", + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32" } }, "Kentico.Xperience.AzureStorage": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "oss8WcxBjJpkg8WiaOmAUUViNp++9GgpNQixnAvYtwbHG96nGobMiakkwecYOcnHe9cj4KggkbS1d6LyXpVFpw==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "XI4MhO7DqF40H9tXNhjAvdrmb/yxKGsqLJckht3mSzeMJ2+wqo23I/mcb7yH0TksXcAHkxAOgxHjUe+QZN6jgg==", "dependencies": { - "Azure.Storage.Blobs": "12.19.1", - "Azure.Storage.Queues": "12.17.1", - "Kentico.Xperience.Core": "29.0.0", + "Azure.Storage.Blobs": "12.21.0", + "Azure.Storage.Queues": "12.19.0", + "Kentico.Xperience.Core": "29.3.3", "Newtonsoft.Json": "13.0.3" } }, "Kentico.Xperience.ImageProcessing": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "aXsCEfvnEpPQQn3wQGwC51f6WT3O5NZzcjReTBSmCCYraHPF87aoqSz+VKS1MI8Pj9u4i1Vt1bRcCC/zrlYJYQ==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "n+XvyfsbQejrQyp1uf/savWOtpcs1/myECqiaPaPNHwg+Kge1yb7mSQq6Knj9gdfITd60K87YlkmGnZd7iN3+Q==", "dependencies": { - "Kentico.Xperience.Core": "29.0.0", + "Kentico.Xperience.Core": "29.3.3", "SkiaSharp": "2.88.8", "SkiaSharp.NativeAssets.Linux.NoDependencies": "2.88.8" } }, "Kentico.Xperience.WebApp": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "LXTK6WPoEThc+K2cSGa3GbKg1Zute0tjELazK6JURnGEF7xdoRiVE8ty6WeWFxmK6Cd+FwId10Q49C6SXlLL2A==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "hqX3bOd1Q030GU4TnsYN8lVDrM3OEOJPCBXX3MwFogC/sHzFueMTvC2VKE0xOH1vnBCOvW9CxxQHyAk/xk8lXw==", "dependencies": { "CommandLineParser": "2.9.1", - "HotChocolate.AspNetCore": "13.9.0", - "HotChocolate.Data": "13.9.0", - "HtmlSanitizer": "8.0.843", - "Kentico.Xperience.Core": "[29.0.0]", + "HotChocolate.AspNetCore": "13.9.7", + "HotChocolate.Data": "13.9.7", + "HtmlSanitizer": "8.0.865", + "Kentico.Xperience.Core": "[29.3.3]", "Microsoft.Extensions.Caching.Memory": "6.0.1", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29", - "Microsoft.Extensions.Localization": "6.0.29" + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32", + "Microsoft.Extensions.Localization": "6.0.32" } }, "SonarAnalyzer.CSharp": { @@ -78,10 +78,11 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.41.0", + "contentHash": "7OO8rPCVSvXj2IQET3NkRf8hU2ZDCCvCIUhlrE089qkLNpNfWufJnBwHRKLAOWF3bhKBGJS/9hPBgjJ8kupUIg==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.ClientModel": "1.0.0", "System.Diagnostics.DiagnosticSource": "6.0.1", "System.Memory.Data": "1.0.2", "System.Numerics.Vectors": "4.5.0", @@ -92,12 +93,12 @@ }, "Azure.Identity": { "type": "Transitive", - "resolved": "1.10.3", - "contentHash": "l1Xm2MWOF2Mzcwuarlw8kWQXLZk3UeB55aQXVyjj23aBfDwOZ3gu5GP2kJ6KlmZeZv2TCzw7x4L3V36iNr3gww==", + "resolved": "1.11.3", + "contentHash": "4EsGMAr+oog5UqHs46qwA7S/lJiwpXjPBY3t9tQBmJ8nsgmT/LLnrc32eiTlfOdfKxUz4fxBD2YjSnVZacu97w==", "dependencies": { - "Azure.Core": "1.35.0", - "Microsoft.Identity.Client": "4.56.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.56.0", + "Azure.Core": "1.38.0", + "Microsoft.Identity.Client": "4.60.3", + "Microsoft.Identity.Client.Extensions.Msal": "4.60.3", "System.Memory": "4.5.4", "System.Security.Cryptography.ProtectedData": "4.7.0", "System.Text.Json": "4.7.2", @@ -106,44 +107,44 @@ }, "Azure.Storage.Blobs": { "type": "Transitive", - "resolved": "12.19.1", - "contentHash": "x43hWFJ4sPQ23TD4piCwT+KlQpZT8pNDAzqj6yUCqh+WJ2qcQa17e1gh6ZOeT2QNFQTTDSuR56fm2bIV7i11/w==", + "resolved": "12.21.0", + "contentHash": "W1aSEH11crU3CscfuICUPXScTO9nKwSof3YFsdxmbdi+P+JARYzntkGJuZ685gvmyUse7isBNncNlVEjB5LT0g==", "dependencies": { - "Azure.Storage.Common": "12.18.1", + "Azure.Storage.Common": "12.20.0", "System.Text.Json": "4.7.2" } }, "Azure.Storage.Common": { "type": "Transitive", - "resolved": "12.18.1", - "contentHash": "ohCslqP9yDKIn+DVjBEOBuieB1QwsUCz+BwHYNaJ3lcIsTSiI4Evnq81HcKe8CqM8qvdModbipVQKpnxpbdWqA==", + "resolved": "12.20.0", + "contentHash": "C0uTY4E1NSGiNf/dlLMQ/d85a2CDazEg4YYtNJOYnLSb8ZXJ5RBPHYGW7a46kN5Xn5Bc9BKMvs8fME285TfEpw==", "dependencies": { - "Azure.Core": "1.36.0", + "Azure.Core": "1.41.0", "System.IO.Hashing": "6.0.0" } }, "Azure.Storage.Queues": { "type": "Transitive", - "resolved": "12.17.1", - "contentHash": "ziN15iQ4+h0zf9EbKzFd5Zj3LiDH21qIrCknkXhpqwftPfIvlftvdyXbKQLi9+sh8dwT6PFPi/wq4oLsKNGfcQ==", + "resolved": "12.19.0", + "contentHash": "+EXqf4aTyshZDpi/DBgffEX0CJMbvs9fHTZX4EMPBPc4WHyXCNs2oKelJes1pdHLRwTUVJ3jGdK1kU/IB5lJJw==", "dependencies": { - "Azure.Storage.Common": "12.18.1", + "Azure.Storage.Common": "12.20.0", "System.Memory.Data": "1.0.2", "System.Text.Json": "4.7.2" } }, "BananaCakePop.Middleware": { "type": "Transitive", - "resolved": "13.0.0", - "contentHash": "6Zj/vfmnCXLjBG7WNdtOgZZ5ZDR3Sy1FQSshZUonIYs3OdzozmsFmqPXMd9XJ0QE9aAildgVGq/lDLpLrMI4Yw==", + "resolved": "16.0.1", + "contentHash": "i/LDG7Lw2ln1WM7GaMyNDWHExtN15/O/xgcX8lhBK6FZFPBnlq6FJW4GuS3vs0UpLB1TvX2tcOenMlXjcMZq0g==", "dependencies": { - "Yarp.ReverseProxy": "2.0.1" + "Yarp.ReverseProxy": "2.1.0" } }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.3.0", - "contentHash": "IaVIiYxZLaBulveGDRUx/pBoW/Rc8QeXGF5u2E8xL8RWhVKCgfmtX9NUyGRbnSqnbFQU2zyP3MkXIdH+jUuQBw==" + "resolved": "2.4.0", + "contentHash": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==" }, "CommandLineParser": { "type": "Transitive", @@ -152,8 +153,8 @@ }, "GreenDonut": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "T8ZYTsm0S48hi89d2symCvUEJoBkg5F+rfU+HFtkEOc7WLZsIBDStnfF3c890Vxjmx/P1tFpY5StDNTM+C6fIw==", + "resolved": "13.9.7", + "contentHash": "Hr+zOsca8uLgG3x0UogBxyUDu6DSHzbAsEFlEF/GlQGqDIzXUHNx80yMaaXZ11h0cyuANqBz2aw2pGneupQWbQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "6.0.0", "System.Diagnostics.DiagnosticSource": "6.0.0", @@ -162,170 +163,170 @@ }, "HotChocolate": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "aGBAW6d9Oj1MfmKJF482yYdJ8G87yJ0rVFxU9l7lA1dg1xjc5XALLQO9jCPz4GCpQLetuAhHdkZ713imJ6WCPw==", + "resolved": "13.9.7", + "contentHash": "eMTrfh3A+CxMnb84Pz2zzQz3zuQXlihbM9f4u1JW8gDKlcARGh9qQr1qxheLQa4Co7RG3O7gl8DiNYyJ781DhQ==", "dependencies": { - "HotChocolate.Authorization": "13.9.0", - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0", - "HotChocolate.Types.Mutations": "13.9.0", - "HotChocolate.Types.OffsetPagination": "13.9.0", - "HotChocolate.Validation": "13.9.0" + "HotChocolate.Authorization": "13.9.7", + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7", + "HotChocolate.Types.Mutations": "13.9.7", + "HotChocolate.Types.OffsetPagination": "13.9.7", + "HotChocolate.Validation": "13.9.7" } }, "HotChocolate.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "mb3IPL8V4NRL2FUefZP20fSwIMOnE7uCMLiM4d5Y5cjljYaMUVzUJnvdW9C1tUfbodP49Llk9WnBCR6S9fr8mQ==", + "resolved": "13.9.7", + "contentHash": "zZGGxtSH7H2Ft7UYlUbwbPycThld0dnMbpwTjjF667HL4nTXe56egdUd4RurojZQwlY/ybvjFGjbzS6gMZ6xNw==", "dependencies": { - "HotChocolate.Language": "13.9.0", + "HotChocolate.Language": "13.9.7", "Microsoft.Bcl.AsyncInterfaces": "6.0.0", "System.Collections.Immutable": "6.0.0" } }, "HotChocolate.AspNetCore": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "RnxUdKEYOmsjzNPss473CYOug/9GIt8qlS9j8HxtZrW5TASM/9S7pDb7FthcDj4ag/D7wAwme3YxsqxH+iw5Bg==", + "resolved": "13.9.7", + "contentHash": "UHNGeGmrVVMaQ+b3sJJWLwc84DZLgXWRYGkI4BBcGWqQllbuMM/2dJ/4Z6lGOUo267SLnH+JxPBn+eE7HlSDYQ==", "dependencies": { - "BananaCakePop.Middleware": "13.0.0", - "HotChocolate": "13.9.0", - "HotChocolate.Subscriptions.InMemory": "13.9.0", - "HotChocolate.Transport.Sockets": "13.9.0", - "HotChocolate.Types.Scalars.Upload": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0" + "BananaCakePop.Middleware": "16.0.1", + "HotChocolate": "13.9.7", + "HotChocolate.Subscriptions.InMemory": "13.9.7", + "HotChocolate.Transport.Sockets": "13.9.7", + "HotChocolate.Types.Scalars.Upload": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7" } }, "HotChocolate.Authorization": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6CPA39zObNuMUmkmQ6J3zqmalukhjCiJS/klSEDPpwTtrn9HS/3edsh/7oiKzmUh6PNVKGed0lwkSdDP+DGZDQ==", + "resolved": "13.9.7", + "contentHash": "CrAFhKQbK2L+nLe7TLjdf0iw6mLYSF/0niuDdOXB9YuIzuJ89Getrm2xWrSJwaJELWu1ksXpuOm1whPXD4/Cxw==", "dependencies": { - "HotChocolate.Execution": "13.9.0" + "HotChocolate.Execution": "13.9.7" } }, "HotChocolate.Data": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "eZI9pIipsJsqdacj55krmxx24cUTCearQ/q9wT4aa6vQ/5GwuwWJ0ZIqdcp1qPjd+BsmJixrQBbi6/OgnFXIGw==", + "resolved": "13.9.7", + "contentHash": "LDBHbB8Ix2v3kFK6GHORa7ZD5NAV0tuWzBZ2HATdqT91KKFzOkJkCcb59JYlj1sILEJ6KzLueWsCgO+NmBZVMw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7" } }, "HotChocolate.Execution": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "zO1aG5qx5lzbZu/iKR56g+zeOgCCCa5pICwxijd1qEap+7J5q0YsME9RByw8wYPH+tNsXCvDcKaeAEcashB4cg==", + "resolved": "13.9.7", + "contentHash": "y0C5ODS84VnR18ZmwqIPLvv6U/Fd2EA4inqg4gYs1nrMdKqHnCNP9i14+Ud8tREXZw/O+Jsvfw9+OylwW05Xww==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0", - "HotChocolate.Validation": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7", + "HotChocolate.Validation": "13.9.7", "Microsoft.Extensions.DependencyInjection": "6.0.0", "System.Threading.Channels": "6.0.0" } }, "HotChocolate.Execution.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "flySLPDyTtM4051tI3mh5Ue0fGrKFDuW3w0ebWmW2qjfuF4jgQzd3pK3ZxfkxAfpxQXyPaVn/Q7fae+fYQxeCg==", + "resolved": "13.9.7", + "contentHash": "JyVN6xsxWGJdeU1RwJWsHnhYakU8z7Q003r3c/M1FwokqAYspQPDzP4QuBvmz8nPyCxSdR42eNvqVGYKZj/h1Q==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" } }, "HotChocolate.Fetching": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "pIw7VlEABejQGLRnJGnO7iPdT40AHklf0psJp5zNXrq0IX+Vq7hRRqON73nubZv5Ofhh8fV3kugqYFKvzcptoA==", + "resolved": "13.9.7", + "contentHash": "I+Ek6pdicNtZvXyvr2dCejPWn+q13gDmUzuK5L+iUP5IGfod/02Vj408hBHPIapweCYixreI0h5VDHwJm2fx2A==", "dependencies": { - "GreenDonut": "13.9.0", - "HotChocolate.Types": "13.9.0" + "GreenDonut": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Language": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "M8q0XHQm8Gtab+wKgYXfVPxScjdDE+INify5yaj6g1ZDkV3sLIeX+muu1WebrNO3DgmuAi6o3aW770Ucw7k/dw==", + "resolved": "13.9.7", + "contentHash": "rWH01lP72YQmLP0tw1RtabanCXbRZ58x/frAQtPttyMViCx6N4aGEFAS8716ANwFM/ek6Kv7fYpxj3A0N1943A==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0", - "HotChocolate.Language.Utf8": "13.9.0", - "HotChocolate.Language.Visitors": "13.9.0", - "HotChocolate.Language.Web": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7", + "HotChocolate.Language.Utf8": "13.9.7", + "HotChocolate.Language.Visitors": "13.9.7", + "HotChocolate.Language.Web": "13.9.7" } }, "HotChocolate.Language.SyntaxTree": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "+vwrQ0qOiKn/yUBHn53030hQmqj45C1g0WI8sip50CPnkgs3bAPnDInUvrR3IiHbRn5spAonO4tFPtMDdJrEMA==", + "resolved": "13.9.7", + "contentHash": "iiTGVnjh+Q07L3GQ1gQrrbQWXh/sj6vJrvlwSLRbdIR2PZ53d9xXTeWjfiqgSfl+qZwWUyyCCCcWrJwYQokpyQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "6.0.0" } }, "HotChocolate.Language.Utf8": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "IEWNYGvtwejf7+j+Xci25FaYets2UD8wkfzQ5dUCW47c1rnTAyuRdTiO8T8x6LYuZ7+SLg7UTBYgjv4ybwAUgA==", + "resolved": "13.9.7", + "contentHash": "rGSf31r6WjOi4LAaF4HFKYPV+/nT7aqsvOZ5CO/UCJEM0vDeuda++NYdkLVETyUHeWc30niwIKOVSlN9XJNVuQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Visitors": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "j6mPBkfVo2fopWYLoczXCoog4PJ+KwbHItSgHfPfI1kDBcNcy9XY4oxth3Uau1uBbfHYIFjnuVc+FrGb1f9KAQ==", + "resolved": "13.9.7", + "contentHash": "3MxWSJdbbVh1LJDef7l6oPCBFHomMxPJSot/OBS11xEeeQnChrrVDFwPWnlffmyDX4Dccugbs0eKwJEXaxCpzQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Web": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "GI5ufbNVEoKygSC09owVnCvw1Ma2KzOtm1l6uen3wKshAdOKB4gmSVCjzf71pNL2Nt6cL4IHa70ClqjECmu9qg==", + "resolved": "13.9.7", + "contentHash": "FJxfPz4ESaRZj8fWgV1lPCrdAysiEGktJgkYHH4w/MioVLULdjckYocnQnCaWx2km0r0fojNGbm2k1TlqYL/7A==", "dependencies": { - "HotChocolate.Language.Utf8": "13.9.0" + "HotChocolate.Language.Utf8": "13.9.7" } }, "HotChocolate.Subscriptions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "P3ason65NwSzkB2W9myV/pRIm4IMIWXH3RPCtpHVKx22Xw3hRJRJhjLBQZ5LCk5v3+7kKhXNBTbFNpbMyvez3Q==", + "resolved": "13.9.7", + "contentHash": "19WDXKE2bN5Pd35ebzS/zqOKSb/thnBRWCFKqLLxVvjrRaZcdj+Amc92fqTJi4XGis/6AoMf6JZovbQjWeHvoA==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0" + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7" } }, "HotChocolate.Subscriptions.InMemory": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "rj5U1Cd2QsjNnSNNdlSopYLtXh0kTZ1NlA1B3v02YFtj4Zu9le6QkGsl3oUljUUq46vSkkrT9ISj+e5wTCcw/Q==", + "resolved": "13.9.7", + "contentHash": "vvv8QjqPSURHTjRNyM2AuOvJI9vRBCnB8mYe3lUrGo2coBYakGb+21MX0UjreqR9kaR+611p5OM4+snASSN4Fw==", "dependencies": { - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Subscriptions": "13.9.0", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Subscriptions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" } }, "HotChocolate.Transport.Sockets": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "4hPlhS2bgqT/tYCZfPtbGtPAaedULKgTbFKkTsjigrDhJcVxBA36Gr3yGM6S3NEw2JdIgiwugYV1log9zXkEjA==", + "resolved": "13.9.7", + "contentHash": "MiyrvorBadNSJYiXdH+O0aEX1MM6BTMGRYBICcMw/Gfv1oJurMa9qXAcqwVa6fwlRZPL+UqU6PlFLjIILhPLLA==", "dependencies": { "System.IO.Pipelines": "6.0.0" } }, "HotChocolate.Types": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "VGPZePNC4sBlz/iY4x90zIRxW62MWzWNcl2yjLS3JcW+0W8KuKxh99dFLxL0WY/+Eoe8PUecmoob+FrVEvPzpg==", + "resolved": "13.9.7", + "contentHash": "zauZ28u0cjwDo02YlsF290HKvGfKIuXCljGoGRypl1vsjlX/MOcDTUiDY5/VEnVVz6QZWZyg66C/kO862QuXPQ==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Types.Shared": "13.9.0", - "HotChocolate.Utilities": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Types.Shared": "13.9.7", + "HotChocolate.Utilities": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", "Microsoft.Extensions.ObjectPool": "6.0.0", "System.ComponentModel.Annotations": "5.0.0", @@ -334,74 +335,74 @@ }, "HotChocolate.Types.CursorPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2+w6tLrdjo+d/aIKyoNW1L/OH/p+FACMwGWHk1P4MwAspqaF7zjy71qTeNks+8QbRwG8uMleey/0sbr8sWpC6w==", + "resolved": "13.9.7", + "contentHash": "c1qshoAFs1h3L5hd8sSkdXTRdZPdTaolDLftmX5HX46TJvRW3diHWH7vDvfytlsxggMamHauwT4sTShYsvQGqw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Mutations": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "NX1zLkb7t19Om5RYubmkA6yRCtBbca454rqSGKSVBYjDrsiA6+4ZDvmS9Kjbw8F+cPm3VqShenrIIgfW8bzCXQ==", + "resolved": "13.9.7", + "contentHash": "89CAbrdiZziEajLzBItunpn+Fd09iqVYKHEPlRsWY55L2wNrzcoblW5Pe2p3c22w8ewmzSSEc8TupBYlez+2Ug==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.OffsetPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "LIAaSVRS6FJCssP+s4ooLajhQ1/QfES78twX4OgZFJ9/UZMxXlU3K/IWeB2aXcJNkehfIZLgoiROnouB7ATepw==", + "resolved": "13.9.7", + "contentHash": "9kxPAU748x9/wmNPzLrHqYOMOkjbTP7DPMfMmOiUGjetI2Lm6RenUVZVODU8n92luk2Ng4Fc5GgJd7a28yqJ9w==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Scalars.Upload": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "hisB6PGGgsekz3a8YJwKgvbZHED98eph9+TMPg5A500tyvrZS00fbdpjRcN+rcTKAxhJ5evzHB2Fo1m62Dyo4w==", + "resolved": "13.9.7", + "contentHash": "afuOJKMvL8f64UZmvn2mt66db9rvdWkZUDt5vBsGErAxSJst8yCO56hiaYgjkAYg2Itp9yiqtJIc/UjI22x34A==", "dependencies": { - "HotChocolate.Types": "13.9.0" + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Shared": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2lhdbXU/GltPQWO9r8qePZSzDo9ryFs8Wv0aF7aQgEq3dLvwer6OpvnZhIYmGua6bXXebA1PzBAEaaxPpLx3Wg==", + "resolved": "13.9.7", + "contentHash": "OXuZNxvpFX/clo3jYgogoAg8dp+NIphIhKffs6S6tuyJsl4/sqoo19cwNhEyF0K9cxKJYJj+oYw+hbl5XOHpRQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Utilities": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6zqwjROYxtuzAYjh31JnYKgM/MySRWEq4DHO64oSPFRJQ8NDgg7EvUU771yLt/6T7kUh+S6k25hVnmUipFtEnQ==" + "resolved": "13.9.7", + "contentHash": "Mh8K5kZZ0zRs5zXVlZDc3WqPU8I70lVSRTdhrM+4eWRZHceZ3OLgebQww2uGmAFcStzHD6b7XmQPuVxw0HRVCg==" }, "HotChocolate.Utilities.DependencyInjection": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "o1ijY8Rk0IUAo8QZYhfQ8s4/3z78JS9tyXGHzA963gkzTSJPehD4960CAmWlyC19FdE1i2KiTnYLhNOwNoL6+A==", + "resolved": "13.9.7", + "contentHash": "XlTIkwAzVshTj4p+XR7YCrGl/bwM0izwoUmKCvc1mdoIBtORbWQNixrnLQsCldhlnqP1G+CzXO2g0wNv+g8wBA==", "dependencies": { "Microsoft.Extensions.DependencyInjection": "6.0.0" } }, "HotChocolate.Validation": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "gC7/YfOcOOmT+zV/V45CubYhK3lZI7+SmNYLGXQ1ko4cwjVRh3PzSJMAaKw3naWDcbjXbEyWwdYc0dLuoVBNEA==", + "resolved": "13.9.7", + "contentHash": "vB7wUZl6kdo97v+oi0DTXXoif4kJ+6/CAJ8zQ8WakWiyJDxYe76v0NkGgViTrVFUDUlffVa7Yl6jGv49b2TPhQ==", "dependencies": { - "HotChocolate.Types": "13.9.0", + "HotChocolate.Types": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", "Microsoft.Extensions.Options": "6.0.0" } }, "HtmlSanitizer": { "type": "Transitive", - "resolved": "8.0.843", - "contentHash": "XfmHK4rFz9PPN0gcv7J7pc+MRpcni1mrnO04mwA+9/1zIHLgdOvLJeDwWnX5a+up4tioPvGreB+p+KljLJ32wg==", + "resolved": "8.0.865", + "contentHash": "jzgltCjgTMbTLVfeHYU3ocxJrqRDVdkXYYGTOKVBnpQffaRB/4Hr0R6jKxBBH8UudQSgACp8j3lsD46weyeDJg==", "dependencies": { "AngleSharp": "[0.17.1]", "AngleSharp.Css": "[0.17.0]", @@ -452,16 +453,17 @@ }, "MailKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "EaXHODUdIV5oPdWvBJGazwaEpKt1LI/H/S//EEozANYCsfOSKHntX+Skk2kW616lSQp+fkRTmSjk0CYxEuOyEA==", + "resolved": "4.7.1.1", + "contentHash": "Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==", "dependencies": { - "MimeKit": "4.5.0" + "MimeKit": "4.7.1", + "System.Formats.Asn1": "8.0.1" } }, "Microsoft.AspNetCore.SpaServices.Extensions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "2LeomoSAHbVBEffWwZS4cFLAQsPw2UK4gfNcajssV/cMM5/i61d8LwAdTcGHVmgF5e0zOz/25B06fk3iymD4VA==", + "resolved": "6.0.32", + "contentHash": "XQ7QY8Kpo31H/pVNmNuTfa/HSsGfpIA82QHHiq3J1SU3EBEDSEcdOSJRI7ODm4GmGZY/n/fWM9Blpcbf5rhfPg==", "dependencies": { "Microsoft.Extensions.FileProviders.Physical": "6.0.0" } @@ -471,14 +473,22 @@ "resolved": "6.0.0", "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" }, + "Microsoft.Bcl.TimeProvider": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "f5Kr5JepAbiGo7uDmhgvMqhntwxqXNn6/IpTBSSI4cuHhgnJGrLxFRhMjVpRkLPp6zJXO0/G0l3j9p9zSJxa+w==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0" + } + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "5.2.0", - "contentHash": "3alfyqRN3ELRtdvU1dGtLBRNQqprr3TJ0WrUJfMISPwg1nPUN2P3Lelah68IKWuV27Ceb7ig95hWNHFTSXfxMg==", + "resolved": "5.2.1", + "contentHash": "ojg2XWmih4ubPPtrhRqqXk0SM6wC2ZSTkNNEAlYBhMo4IsRHjLazFc0abzcZCNfw1JyWcqY7vGutWTv8ZaFD9g==", "dependencies": { - "Azure.Identity": "1.10.3", + "Azure.Identity": "1.11.3", "Microsoft.Data.SqlClient.SNI.runtime": "5.2.0", - "Microsoft.Identity.Client": "4.56.0", + "Microsoft.Identity.Client": "4.60.3", "Microsoft.IdentityModel.JsonWebTokens": "6.35.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.35.0", "Microsoft.SqlServer.Server": "1.0.0", @@ -560,8 +570,8 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "ih7lIqCUXsG4+CNNcPs67TBOe3Yd/HMdBBVP3BhvdZkJEUilhvUK69FB7ZPsiZKel08GkOh2qFXqZsWWPa/lPQ==", + "resolved": "6.0.32", + "contentHash": "zedFFk86/lHx3xePklSc5Fo4N3kWqEMSLnYbnsGc1loca/f5T0g85XGSgizPvdqZyAGtDlh1jHKk94aF0FiSpg==", "dependencies": { "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0" } @@ -604,19 +614,19 @@ }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "cZ5Tx6NtTZFzk+PWW2icApat7agQiMIFIsohsmHmz/scKRfAI/5XTa9lpZMwKowQBZm+ap0RwAJmQ2/5xoL+VQ==", + "resolved": "6.0.32", + "contentHash": "oT9/Odho4th/5aY+HztJMfRhAVR+6rZ9FqYYjRrRFDU2e6C+pBCQLSujQIjdAjuHlsUu4pNmHXoaaiaE/82pow==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization.Abstractions": "6.0.29", + "Microsoft.Extensions.Localization.Abstractions": "6.0.32", "Microsoft.Extensions.Logging.Abstractions": "6.0.4", "Microsoft.Extensions.Options": "6.0.0" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "4HVhh+V/7H2VMgFI8EP1kLgLpeRqm1kQOlXjHk4MHCVD5/pgWOTTbLEz9pdXymQQf/eRg1vNK8tG2MZstBHhlw==" + "resolved": "6.0.32", + "contentHash": "ZG8q0/GHhkfXa4ciGp23ax6bJBjFBMYldw8vDg3JIzBp7vYMg5+hGSmNzFMtZThyAr9ktvEQAJS7TUpEEpDT0A==" }, "Microsoft.Extensions.Logging": { "type": "Transitive", @@ -671,19 +681,19 @@ }, "Microsoft.Identity.Client": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "rr4zbidvHy9r4NvOAs5hdd964Ao2A0pAeFBJKR95u1CJAVzbd1p6tPTXUZ+5ld0cfThiVSGvz6UHwY6JjraTpA==", + "resolved": "4.60.3", + "contentHash": "jve1RzmSpBhGlqMzPva6VfRbLMLZZc1Q8WRVZf8+iEruQkBgDTJPq8OeTehcY4GGYG1j6UB1xVofVE+n4BLDdw==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.22.0" + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" } }, "Microsoft.Identity.Client.Extensions.Msal": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==", + "resolved": "4.60.3", + "contentHash": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==", "dependencies": { - "Microsoft.Identity.Client": "4.56.0", - "System.IO.FileSystem.AccessControl": "5.0.0", + "Microsoft.Identity.Client": "4.60.3", "System.Security.Cryptography.ProtectedData": "4.5.0" } }, @@ -746,10 +756,11 @@ }, "MimeKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "OYn8b8b66J4mgtDzoImepiUtdkJOAVGoTj/ghzJ+az4wVixA5L5Z8GmgFhRvQ1btAIwZh/d9zvZLCALndQdz5w==", + "resolved": "4.7.1", + "contentHash": "Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==", "dependencies": { - "BouncyCastle.Cryptography": "2.3.0", + "BouncyCastle.Cryptography": "2.4.0", + "System.Formats.Asn1": "8.0.1", "System.Security.Cryptography.Pkcs": "8.0.0" } }, @@ -795,6 +806,15 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "I3CVkvxeqFYjIVEP59DnjbeoGNfo/+SZrCLpRz2v/g0gpCHaEMPtWSY0s9k/7jR1rAsLNg2z2u1JRB76tPjnIw==", + "dependencies": { + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, "System.CodeDom": { "type": "Transitive", "resolved": "8.0.0", @@ -840,8 +860,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", @@ -852,15 +872,6 @@ "Microsoft.IdentityModel.Tokens": "7.3.1" } }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", - "dependencies": { - "System.Security.AccessControl": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.IO.Hashing": { "type": "Transitive", "resolved": "7.0.0", @@ -930,11 +941,6 @@ "System.Windows.Extensions": "6.0.0" } }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" - }, "System.Text.Encoding.CodePages": { "type": "Transitive", "resolved": "6.0.0", @@ -980,30 +986,32 @@ }, "Yarp.ReverseProxy": { "type": "Transitive", - "resolved": "2.0.1", - "contentHash": "op7vBwONPFeR1PYxeLw+RLqSodODDX8RWd0OinLGMVIq6yi1q9mv1j56ImuyZgiAToksiC0Dc7jbRUZ9I+jvFA==", + "resolved": "2.1.0", + "contentHash": "VgRuCBxmh5ND4VuFhvIN3AAeoxFhYkS2hNINk6AVCrOVTlpk7OwdrTXi8NHACfqfhDL+/oYCZrF9RxN+yiYnEg==", "dependencies": { + "Microsoft.Bcl.TimeProvider": "8.0.0", + "System.Collections.Immutable": "8.0.0", "System.IO.Hashing": "7.0.0" } }, "kentico.xperience.lucene": { "type": "Project", "dependencies": { - "Kentico.Xperience.Lucene.Admin": "[5.0.0-prerelease-1, )", - "Kentico.Xperience.Lucene.Core": "[5.0.0-prerelease-1, )" + "Kentico.Xperience.Lucene.Admin": "[8.0.0, )", + "Kentico.Xperience.Lucene.Core": "[8.0.0, )" } }, "kentico.xperience.lucene.admin": { "type": "Project", "dependencies": { - "Kentico.Xperience.Admin": "[29.0.0, )", - "Kentico.Xperience.Lucene.Core": "[5.0.0-prerelease-1, )" + "Kentico.Xperience.Admin": "[29.3.3, )", + "Kentico.Xperience.Lucene.Core": "[8.0.0, )" } }, "kentico.xperience.lucene.core": { "type": "Project", "dependencies": { - "Kentico.Xperience.Core": "[29.0.0, )", + "Kentico.Xperience.Core": "[29.3.3, )", "Lucene.Net": "[4.8.0-beta00016, )", "Lucene.Net.Analysis.Common": "[4.8.0-beta00016, )", "Lucene.Net.Facet": "[4.8.0-beta00016, )" @@ -1011,20 +1019,20 @@ }, "Kentico.Xperience.Core": { "type": "CentralTransitive", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "jG0gkDLE4H7ZNEdxdyZEzPxoAMlfx24oVdPeRa8RCUriOhBtleNREInbR9kYoMWwo456EaUaf3RPngArmZdy1g==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "Vr704hfDI9V737qULMy8nSEjz3xuyXxlLcUSxiMDf7c2fBKAySRn4YjYiLd6qp+6HnSm129nBuavyxWOsvzARg==", "dependencies": { "AngleSharp": "0.17.1", - "MailKit": "4.5.0", - "Microsoft.Data.SqlClient": "5.2.0", + "MailKit": "4.7.1.1", + "Microsoft.Data.SqlClient": "5.2.1", "Microsoft.Extensions.Caching.Memory": "6.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Configuration.Binder": "6.0.0", "Microsoft.Extensions.DependencyInjection": "6.0.1", "Microsoft.Extensions.FileProviders.Physical": "6.0.0", "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization": "6.0.29", + "Microsoft.Extensions.Localization": "6.0.32", "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0", "Mono.Cecil": "0.11.5", "Newtonsoft.Json": "13.0.3", diff --git a/src/Kentico.Xperience.Lucene.Admin/packages.lock.json b/src/Kentico.Xperience.Lucene.Admin/packages.lock.json index b99106b..fa0d8e2 100644 --- a/src/Kentico.Xperience.Lucene.Admin/packages.lock.json +++ b/src/Kentico.Xperience.Lucene.Admin/packages.lock.json @@ -4,14 +4,14 @@ "net6.0": { "Kentico.Xperience.Admin": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "0PZqIlNEjpE5GHPtTMHzd5KkO428oRJlYEDx2YmLLYkm+UDMsRIwaS91UtmZTP5FYlDzv7yq0zgB4hqbcdsZTA==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "XaJ9roaXsCFj/PK/feFao403h9NjCT4gbqhJs6vbPDfUBfRLtxgszQRraiF5Rb4Cft5VmtqMfGO7rW5a9w+k5w==", "dependencies": { "Kentico.Aira.Client": "1.0.25", - "Kentico.Xperience.WebApp": "[29.0.0]", - "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.29", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29" + "Kentico.Xperience.WebApp": "[29.3.3]", + "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.32", + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32" } }, "SonarAnalyzer.CSharp": { @@ -39,10 +39,11 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.35.0", - "contentHash": "hENcx03Jyuqv05F4RBEPbxz29UrM3Nbhnr6Wl6NQpoU9BCIbL3XLentrxDCTrH54NLS11Exxi/o8MYgT/cnKFA==", + "resolved": "1.38.0", + "contentHash": "IuEgCoVA0ef7E4pQtpC3+TkPbzaoQfa77HlfJDmfuaJUCVJmn7fT0izamZiryW5sYUFKizsftIxMkXKbgIcPMQ==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.ClientModel": "1.0.0", "System.Diagnostics.DiagnosticSource": "6.0.1", "System.Memory.Data": "1.0.2", "System.Numerics.Vectors": "4.5.0", @@ -53,12 +54,12 @@ }, "Azure.Identity": { "type": "Transitive", - "resolved": "1.10.3", - "contentHash": "l1Xm2MWOF2Mzcwuarlw8kWQXLZk3UeB55aQXVyjj23aBfDwOZ3gu5GP2kJ6KlmZeZv2TCzw7x4L3V36iNr3gww==", + "resolved": "1.11.3", + "contentHash": "4EsGMAr+oog5UqHs46qwA7S/lJiwpXjPBY3t9tQBmJ8nsgmT/LLnrc32eiTlfOdfKxUz4fxBD2YjSnVZacu97w==", "dependencies": { - "Azure.Core": "1.35.0", - "Microsoft.Identity.Client": "4.56.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.56.0", + "Azure.Core": "1.38.0", + "Microsoft.Identity.Client": "4.60.3", + "Microsoft.Identity.Client.Extensions.Msal": "4.60.3", "System.Memory": "4.5.4", "System.Security.Cryptography.ProtectedData": "4.7.0", "System.Text.Json": "4.7.2", @@ -67,16 +68,16 @@ }, "BananaCakePop.Middleware": { "type": "Transitive", - "resolved": "13.0.0", - "contentHash": "6Zj/vfmnCXLjBG7WNdtOgZZ5ZDR3Sy1FQSshZUonIYs3OdzozmsFmqPXMd9XJ0QE9aAildgVGq/lDLpLrMI4Yw==", + "resolved": "16.0.1", + "contentHash": "i/LDG7Lw2ln1WM7GaMyNDWHExtN15/O/xgcX8lhBK6FZFPBnlq6FJW4GuS3vs0UpLB1TvX2tcOenMlXjcMZq0g==", "dependencies": { - "Yarp.ReverseProxy": "2.0.1" + "Yarp.ReverseProxy": "2.1.0" } }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.3.0", - "contentHash": "IaVIiYxZLaBulveGDRUx/pBoW/Rc8QeXGF5u2E8xL8RWhVKCgfmtX9NUyGRbnSqnbFQU2zyP3MkXIdH+jUuQBw==" + "resolved": "2.4.0", + "contentHash": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==" }, "CommandLineParser": { "type": "Transitive", @@ -85,8 +86,8 @@ }, "GreenDonut": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "T8ZYTsm0S48hi89d2symCvUEJoBkg5F+rfU+HFtkEOc7WLZsIBDStnfF3c890Vxjmx/P1tFpY5StDNTM+C6fIw==", + "resolved": "13.9.7", + "contentHash": "Hr+zOsca8uLgG3x0UogBxyUDu6DSHzbAsEFlEF/GlQGqDIzXUHNx80yMaaXZ11h0cyuANqBz2aw2pGneupQWbQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "6.0.0", "System.Diagnostics.DiagnosticSource": "6.0.0", @@ -95,170 +96,170 @@ }, "HotChocolate": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "aGBAW6d9Oj1MfmKJF482yYdJ8G87yJ0rVFxU9l7lA1dg1xjc5XALLQO9jCPz4GCpQLetuAhHdkZ713imJ6WCPw==", + "resolved": "13.9.7", + "contentHash": "eMTrfh3A+CxMnb84Pz2zzQz3zuQXlihbM9f4u1JW8gDKlcARGh9qQr1qxheLQa4Co7RG3O7gl8DiNYyJ781DhQ==", "dependencies": { - "HotChocolate.Authorization": "13.9.0", - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0", - "HotChocolate.Types.Mutations": "13.9.0", - "HotChocolate.Types.OffsetPagination": "13.9.0", - "HotChocolate.Validation": "13.9.0" + "HotChocolate.Authorization": "13.9.7", + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7", + "HotChocolate.Types.Mutations": "13.9.7", + "HotChocolate.Types.OffsetPagination": "13.9.7", + "HotChocolate.Validation": "13.9.7" } }, "HotChocolate.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "mb3IPL8V4NRL2FUefZP20fSwIMOnE7uCMLiM4d5Y5cjljYaMUVzUJnvdW9C1tUfbodP49Llk9WnBCR6S9fr8mQ==", + "resolved": "13.9.7", + "contentHash": "zZGGxtSH7H2Ft7UYlUbwbPycThld0dnMbpwTjjF667HL4nTXe56egdUd4RurojZQwlY/ybvjFGjbzS6gMZ6xNw==", "dependencies": { - "HotChocolate.Language": "13.9.0", + "HotChocolate.Language": "13.9.7", "Microsoft.Bcl.AsyncInterfaces": "6.0.0", "System.Collections.Immutable": "6.0.0" } }, "HotChocolate.AspNetCore": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "RnxUdKEYOmsjzNPss473CYOug/9GIt8qlS9j8HxtZrW5TASM/9S7pDb7FthcDj4ag/D7wAwme3YxsqxH+iw5Bg==", + "resolved": "13.9.7", + "contentHash": "UHNGeGmrVVMaQ+b3sJJWLwc84DZLgXWRYGkI4BBcGWqQllbuMM/2dJ/4Z6lGOUo267SLnH+JxPBn+eE7HlSDYQ==", "dependencies": { - "BananaCakePop.Middleware": "13.0.0", - "HotChocolate": "13.9.0", - "HotChocolate.Subscriptions.InMemory": "13.9.0", - "HotChocolate.Transport.Sockets": "13.9.0", - "HotChocolate.Types.Scalars.Upload": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0" + "BananaCakePop.Middleware": "16.0.1", + "HotChocolate": "13.9.7", + "HotChocolate.Subscriptions.InMemory": "13.9.7", + "HotChocolate.Transport.Sockets": "13.9.7", + "HotChocolate.Types.Scalars.Upload": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7" } }, "HotChocolate.Authorization": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6CPA39zObNuMUmkmQ6J3zqmalukhjCiJS/klSEDPpwTtrn9HS/3edsh/7oiKzmUh6PNVKGed0lwkSdDP+DGZDQ==", + "resolved": "13.9.7", + "contentHash": "CrAFhKQbK2L+nLe7TLjdf0iw6mLYSF/0niuDdOXB9YuIzuJ89Getrm2xWrSJwaJELWu1ksXpuOm1whPXD4/Cxw==", "dependencies": { - "HotChocolate.Execution": "13.9.0" + "HotChocolate.Execution": "13.9.7" } }, "HotChocolate.Data": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "eZI9pIipsJsqdacj55krmxx24cUTCearQ/q9wT4aa6vQ/5GwuwWJ0ZIqdcp1qPjd+BsmJixrQBbi6/OgnFXIGw==", + "resolved": "13.9.7", + "contentHash": "LDBHbB8Ix2v3kFK6GHORa7ZD5NAV0tuWzBZ2HATdqT91KKFzOkJkCcb59JYlj1sILEJ6KzLueWsCgO+NmBZVMw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7" } }, "HotChocolate.Execution": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "zO1aG5qx5lzbZu/iKR56g+zeOgCCCa5pICwxijd1qEap+7J5q0YsME9RByw8wYPH+tNsXCvDcKaeAEcashB4cg==", + "resolved": "13.9.7", + "contentHash": "y0C5ODS84VnR18ZmwqIPLvv6U/Fd2EA4inqg4gYs1nrMdKqHnCNP9i14+Ud8tREXZw/O+Jsvfw9+OylwW05Xww==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0", - "HotChocolate.Validation": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7", + "HotChocolate.Validation": "13.9.7", "Microsoft.Extensions.DependencyInjection": "6.0.0", "System.Threading.Channels": "6.0.0" } }, "HotChocolate.Execution.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "flySLPDyTtM4051tI3mh5Ue0fGrKFDuW3w0ebWmW2qjfuF4jgQzd3pK3ZxfkxAfpxQXyPaVn/Q7fae+fYQxeCg==", + "resolved": "13.9.7", + "contentHash": "JyVN6xsxWGJdeU1RwJWsHnhYakU8z7Q003r3c/M1FwokqAYspQPDzP4QuBvmz8nPyCxSdR42eNvqVGYKZj/h1Q==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" } }, "HotChocolate.Fetching": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "pIw7VlEABejQGLRnJGnO7iPdT40AHklf0psJp5zNXrq0IX+Vq7hRRqON73nubZv5Ofhh8fV3kugqYFKvzcptoA==", + "resolved": "13.9.7", + "contentHash": "I+Ek6pdicNtZvXyvr2dCejPWn+q13gDmUzuK5L+iUP5IGfod/02Vj408hBHPIapweCYixreI0h5VDHwJm2fx2A==", "dependencies": { - "GreenDonut": "13.9.0", - "HotChocolate.Types": "13.9.0" + "GreenDonut": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Language": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "M8q0XHQm8Gtab+wKgYXfVPxScjdDE+INify5yaj6g1ZDkV3sLIeX+muu1WebrNO3DgmuAi6o3aW770Ucw7k/dw==", + "resolved": "13.9.7", + "contentHash": "rWH01lP72YQmLP0tw1RtabanCXbRZ58x/frAQtPttyMViCx6N4aGEFAS8716ANwFM/ek6Kv7fYpxj3A0N1943A==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0", - "HotChocolate.Language.Utf8": "13.9.0", - "HotChocolate.Language.Visitors": "13.9.0", - "HotChocolate.Language.Web": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7", + "HotChocolate.Language.Utf8": "13.9.7", + "HotChocolate.Language.Visitors": "13.9.7", + "HotChocolate.Language.Web": "13.9.7" } }, "HotChocolate.Language.SyntaxTree": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "+vwrQ0qOiKn/yUBHn53030hQmqj45C1g0WI8sip50CPnkgs3bAPnDInUvrR3IiHbRn5spAonO4tFPtMDdJrEMA==", + "resolved": "13.9.7", + "contentHash": "iiTGVnjh+Q07L3GQ1gQrrbQWXh/sj6vJrvlwSLRbdIR2PZ53d9xXTeWjfiqgSfl+qZwWUyyCCCcWrJwYQokpyQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "6.0.0" } }, "HotChocolate.Language.Utf8": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "IEWNYGvtwejf7+j+Xci25FaYets2UD8wkfzQ5dUCW47c1rnTAyuRdTiO8T8x6LYuZ7+SLg7UTBYgjv4ybwAUgA==", + "resolved": "13.9.7", + "contentHash": "rGSf31r6WjOi4LAaF4HFKYPV+/nT7aqsvOZ5CO/UCJEM0vDeuda++NYdkLVETyUHeWc30niwIKOVSlN9XJNVuQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Visitors": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "j6mPBkfVo2fopWYLoczXCoog4PJ+KwbHItSgHfPfI1kDBcNcy9XY4oxth3Uau1uBbfHYIFjnuVc+FrGb1f9KAQ==", + "resolved": "13.9.7", + "contentHash": "3MxWSJdbbVh1LJDef7l6oPCBFHomMxPJSot/OBS11xEeeQnChrrVDFwPWnlffmyDX4Dccugbs0eKwJEXaxCpzQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Web": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "GI5ufbNVEoKygSC09owVnCvw1Ma2KzOtm1l6uen3wKshAdOKB4gmSVCjzf71pNL2Nt6cL4IHa70ClqjECmu9qg==", + "resolved": "13.9.7", + "contentHash": "FJxfPz4ESaRZj8fWgV1lPCrdAysiEGktJgkYHH4w/MioVLULdjckYocnQnCaWx2km0r0fojNGbm2k1TlqYL/7A==", "dependencies": { - "HotChocolate.Language.Utf8": "13.9.0" + "HotChocolate.Language.Utf8": "13.9.7" } }, "HotChocolate.Subscriptions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "P3ason65NwSzkB2W9myV/pRIm4IMIWXH3RPCtpHVKx22Xw3hRJRJhjLBQZ5LCk5v3+7kKhXNBTbFNpbMyvez3Q==", + "resolved": "13.9.7", + "contentHash": "19WDXKE2bN5Pd35ebzS/zqOKSb/thnBRWCFKqLLxVvjrRaZcdj+Amc92fqTJi4XGis/6AoMf6JZovbQjWeHvoA==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0" + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7" } }, "HotChocolate.Subscriptions.InMemory": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "rj5U1Cd2QsjNnSNNdlSopYLtXh0kTZ1NlA1B3v02YFtj4Zu9le6QkGsl3oUljUUq46vSkkrT9ISj+e5wTCcw/Q==", + "resolved": "13.9.7", + "contentHash": "vvv8QjqPSURHTjRNyM2AuOvJI9vRBCnB8mYe3lUrGo2coBYakGb+21MX0UjreqR9kaR+611p5OM4+snASSN4Fw==", "dependencies": { - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Subscriptions": "13.9.0", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Subscriptions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" } }, "HotChocolate.Transport.Sockets": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "4hPlhS2bgqT/tYCZfPtbGtPAaedULKgTbFKkTsjigrDhJcVxBA36Gr3yGM6S3NEw2JdIgiwugYV1log9zXkEjA==", + "resolved": "13.9.7", + "contentHash": "MiyrvorBadNSJYiXdH+O0aEX1MM6BTMGRYBICcMw/Gfv1oJurMa9qXAcqwVa6fwlRZPL+UqU6PlFLjIILhPLLA==", "dependencies": { "System.IO.Pipelines": "6.0.0" } }, "HotChocolate.Types": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "VGPZePNC4sBlz/iY4x90zIRxW62MWzWNcl2yjLS3JcW+0W8KuKxh99dFLxL0WY/+Eoe8PUecmoob+FrVEvPzpg==", + "resolved": "13.9.7", + "contentHash": "zauZ28u0cjwDo02YlsF290HKvGfKIuXCljGoGRypl1vsjlX/MOcDTUiDY5/VEnVVz6QZWZyg66C/kO862QuXPQ==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Types.Shared": "13.9.0", - "HotChocolate.Utilities": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Types.Shared": "13.9.7", + "HotChocolate.Utilities": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", "Microsoft.Extensions.ObjectPool": "6.0.0", "System.ComponentModel.Annotations": "5.0.0", @@ -267,74 +268,74 @@ }, "HotChocolate.Types.CursorPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2+w6tLrdjo+d/aIKyoNW1L/OH/p+FACMwGWHk1P4MwAspqaF7zjy71qTeNks+8QbRwG8uMleey/0sbr8sWpC6w==", + "resolved": "13.9.7", + "contentHash": "c1qshoAFs1h3L5hd8sSkdXTRdZPdTaolDLftmX5HX46TJvRW3diHWH7vDvfytlsxggMamHauwT4sTShYsvQGqw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Mutations": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "NX1zLkb7t19Om5RYubmkA6yRCtBbca454rqSGKSVBYjDrsiA6+4ZDvmS9Kjbw8F+cPm3VqShenrIIgfW8bzCXQ==", + "resolved": "13.9.7", + "contentHash": "89CAbrdiZziEajLzBItunpn+Fd09iqVYKHEPlRsWY55L2wNrzcoblW5Pe2p3c22w8ewmzSSEc8TupBYlez+2Ug==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.OffsetPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "LIAaSVRS6FJCssP+s4ooLajhQ1/QfES78twX4OgZFJ9/UZMxXlU3K/IWeB2aXcJNkehfIZLgoiROnouB7ATepw==", + "resolved": "13.9.7", + "contentHash": "9kxPAU748x9/wmNPzLrHqYOMOkjbTP7DPMfMmOiUGjetI2Lm6RenUVZVODU8n92luk2Ng4Fc5GgJd7a28yqJ9w==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Scalars.Upload": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "hisB6PGGgsekz3a8YJwKgvbZHED98eph9+TMPg5A500tyvrZS00fbdpjRcN+rcTKAxhJ5evzHB2Fo1m62Dyo4w==", + "resolved": "13.9.7", + "contentHash": "afuOJKMvL8f64UZmvn2mt66db9rvdWkZUDt5vBsGErAxSJst8yCO56hiaYgjkAYg2Itp9yiqtJIc/UjI22x34A==", "dependencies": { - "HotChocolate.Types": "13.9.0" + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Shared": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2lhdbXU/GltPQWO9r8qePZSzDo9ryFs8Wv0aF7aQgEq3dLvwer6OpvnZhIYmGua6bXXebA1PzBAEaaxPpLx3Wg==", + "resolved": "13.9.7", + "contentHash": "OXuZNxvpFX/clo3jYgogoAg8dp+NIphIhKffs6S6tuyJsl4/sqoo19cwNhEyF0K9cxKJYJj+oYw+hbl5XOHpRQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Utilities": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6zqwjROYxtuzAYjh31JnYKgM/MySRWEq4DHO64oSPFRJQ8NDgg7EvUU771yLt/6T7kUh+S6k25hVnmUipFtEnQ==" + "resolved": "13.9.7", + "contentHash": "Mh8K5kZZ0zRs5zXVlZDc3WqPU8I70lVSRTdhrM+4eWRZHceZ3OLgebQww2uGmAFcStzHD6b7XmQPuVxw0HRVCg==" }, "HotChocolate.Utilities.DependencyInjection": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "o1ijY8Rk0IUAo8QZYhfQ8s4/3z78JS9tyXGHzA963gkzTSJPehD4960CAmWlyC19FdE1i2KiTnYLhNOwNoL6+A==", + "resolved": "13.9.7", + "contentHash": "XlTIkwAzVshTj4p+XR7YCrGl/bwM0izwoUmKCvc1mdoIBtORbWQNixrnLQsCldhlnqP1G+CzXO2g0wNv+g8wBA==", "dependencies": { "Microsoft.Extensions.DependencyInjection": "6.0.0" } }, "HotChocolate.Validation": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "gC7/YfOcOOmT+zV/V45CubYhK3lZI7+SmNYLGXQ1ko4cwjVRh3PzSJMAaKw3naWDcbjXbEyWwdYc0dLuoVBNEA==", + "resolved": "13.9.7", + "contentHash": "vB7wUZl6kdo97v+oi0DTXXoif4kJ+6/CAJ8zQ8WakWiyJDxYe76v0NkGgViTrVFUDUlffVa7Yl6jGv49b2TPhQ==", "dependencies": { - "HotChocolate.Types": "13.9.0", + "HotChocolate.Types": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", "Microsoft.Extensions.Options": "6.0.0" } }, "HtmlSanitizer": { "type": "Transitive", - "resolved": "8.0.843", - "contentHash": "XfmHK4rFz9PPN0gcv7J7pc+MRpcni1mrnO04mwA+9/1zIHLgdOvLJeDwWnX5a+up4tioPvGreB+p+KljLJ32wg==", + "resolved": "8.0.865", + "contentHash": "jzgltCjgTMbTLVfeHYU3ocxJrqRDVdkXYYGTOKVBnpQffaRB/4Hr0R6jKxBBH8UudQSgACp8j3lsD46weyeDJg==", "dependencies": { "AngleSharp": "[0.17.1]", "AngleSharp.Css": "[0.17.0]", @@ -385,16 +386,17 @@ }, "MailKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "EaXHODUdIV5oPdWvBJGazwaEpKt1LI/H/S//EEozANYCsfOSKHntX+Skk2kW616lSQp+fkRTmSjk0CYxEuOyEA==", + "resolved": "4.7.1.1", + "contentHash": "Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==", "dependencies": { - "MimeKit": "4.5.0" + "MimeKit": "4.7.1", + "System.Formats.Asn1": "8.0.1" } }, "Microsoft.AspNetCore.SpaServices.Extensions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "2LeomoSAHbVBEffWwZS4cFLAQsPw2UK4gfNcajssV/cMM5/i61d8LwAdTcGHVmgF5e0zOz/25B06fk3iymD4VA==", + "resolved": "6.0.32", + "contentHash": "XQ7QY8Kpo31H/pVNmNuTfa/HSsGfpIA82QHHiq3J1SU3EBEDSEcdOSJRI7ODm4GmGZY/n/fWM9Blpcbf5rhfPg==", "dependencies": { "Microsoft.Extensions.FileProviders.Physical": "6.0.0" } @@ -404,14 +406,22 @@ "resolved": "6.0.0", "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" }, + "Microsoft.Bcl.TimeProvider": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "f5Kr5JepAbiGo7uDmhgvMqhntwxqXNn6/IpTBSSI4cuHhgnJGrLxFRhMjVpRkLPp6zJXO0/G0l3j9p9zSJxa+w==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0" + } + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "5.2.0", - "contentHash": "3alfyqRN3ELRtdvU1dGtLBRNQqprr3TJ0WrUJfMISPwg1nPUN2P3Lelah68IKWuV27Ceb7ig95hWNHFTSXfxMg==", + "resolved": "5.2.1", + "contentHash": "ojg2XWmih4ubPPtrhRqqXk0SM6wC2ZSTkNNEAlYBhMo4IsRHjLazFc0abzcZCNfw1JyWcqY7vGutWTv8ZaFD9g==", "dependencies": { - "Azure.Identity": "1.10.3", + "Azure.Identity": "1.11.3", "Microsoft.Data.SqlClient.SNI.runtime": "5.2.0", - "Microsoft.Identity.Client": "4.56.0", + "Microsoft.Identity.Client": "4.60.3", "Microsoft.IdentityModel.JsonWebTokens": "6.35.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.35.0", "Microsoft.SqlServer.Server": "1.0.0", @@ -493,8 +503,8 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "ih7lIqCUXsG4+CNNcPs67TBOe3Yd/HMdBBVP3BhvdZkJEUilhvUK69FB7ZPsiZKel08GkOh2qFXqZsWWPa/lPQ==", + "resolved": "6.0.32", + "contentHash": "zedFFk86/lHx3xePklSc5Fo4N3kWqEMSLnYbnsGc1loca/f5T0g85XGSgizPvdqZyAGtDlh1jHKk94aF0FiSpg==", "dependencies": { "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0" } @@ -537,19 +547,19 @@ }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "cZ5Tx6NtTZFzk+PWW2icApat7agQiMIFIsohsmHmz/scKRfAI/5XTa9lpZMwKowQBZm+ap0RwAJmQ2/5xoL+VQ==", + "resolved": "6.0.32", + "contentHash": "oT9/Odho4th/5aY+HztJMfRhAVR+6rZ9FqYYjRrRFDU2e6C+pBCQLSujQIjdAjuHlsUu4pNmHXoaaiaE/82pow==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization.Abstractions": "6.0.29", + "Microsoft.Extensions.Localization.Abstractions": "6.0.32", "Microsoft.Extensions.Logging.Abstractions": "6.0.4", "Microsoft.Extensions.Options": "6.0.0" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "4HVhh+V/7H2VMgFI8EP1kLgLpeRqm1kQOlXjHk4MHCVD5/pgWOTTbLEz9pdXymQQf/eRg1vNK8tG2MZstBHhlw==" + "resolved": "6.0.32", + "contentHash": "ZG8q0/GHhkfXa4ciGp23ax6bJBjFBMYldw8vDg3JIzBp7vYMg5+hGSmNzFMtZThyAr9ktvEQAJS7TUpEEpDT0A==" }, "Microsoft.Extensions.Logging": { "type": "Transitive", @@ -604,19 +614,19 @@ }, "Microsoft.Identity.Client": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "rr4zbidvHy9r4NvOAs5hdd964Ao2A0pAeFBJKR95u1CJAVzbd1p6tPTXUZ+5ld0cfThiVSGvz6UHwY6JjraTpA==", + "resolved": "4.60.3", + "contentHash": "jve1RzmSpBhGlqMzPva6VfRbLMLZZc1Q8WRVZf8+iEruQkBgDTJPq8OeTehcY4GGYG1j6UB1xVofVE+n4BLDdw==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.22.0" + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" } }, "Microsoft.Identity.Client.Extensions.Msal": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==", + "resolved": "4.60.3", + "contentHash": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==", "dependencies": { - "Microsoft.Identity.Client": "4.56.0", - "System.IO.FileSystem.AccessControl": "5.0.0", + "Microsoft.Identity.Client": "4.60.3", "System.Security.Cryptography.ProtectedData": "4.5.0" } }, @@ -679,10 +689,11 @@ }, "MimeKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "OYn8b8b66J4mgtDzoImepiUtdkJOAVGoTj/ghzJ+az4wVixA5L5Z8GmgFhRvQ1btAIwZh/d9zvZLCALndQdz5w==", + "resolved": "4.7.1", + "contentHash": "Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==", "dependencies": { - "BouncyCastle.Cryptography": "2.3.0", + "BouncyCastle.Cryptography": "2.4.0", + "System.Formats.Asn1": "8.0.1", "System.Security.Cryptography.Pkcs": "8.0.0" } }, @@ -701,6 +712,15 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "I3CVkvxeqFYjIVEP59DnjbeoGNfo/+SZrCLpRz2v/g0gpCHaEMPtWSY0s9k/7jR1rAsLNg2z2u1JRB76tPjnIw==", + "dependencies": { + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, "System.CodeDom": { "type": "Transitive", "resolved": "8.0.0", @@ -746,8 +766,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", @@ -758,15 +778,6 @@ "Microsoft.IdentityModel.Tokens": "7.3.1" } }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", - "dependencies": { - "System.Security.AccessControl": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.IO.Hashing": { "type": "Transitive", "resolved": "7.0.0", @@ -836,11 +847,6 @@ "System.Windows.Extensions": "6.0.0" } }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" - }, "System.Text.Encoding.CodePages": { "type": "Transitive", "resolved": "6.0.0", @@ -886,16 +892,18 @@ }, "Yarp.ReverseProxy": { "type": "Transitive", - "resolved": "2.0.1", - "contentHash": "op7vBwONPFeR1PYxeLw+RLqSodODDX8RWd0OinLGMVIq6yi1q9mv1j56ImuyZgiAToksiC0Dc7jbRUZ9I+jvFA==", + "resolved": "2.1.0", + "contentHash": "VgRuCBxmh5ND4VuFhvIN3AAeoxFhYkS2hNINk6AVCrOVTlpk7OwdrTXi8NHACfqfhDL+/oYCZrF9RxN+yiYnEg==", "dependencies": { + "Microsoft.Bcl.TimeProvider": "8.0.0", + "System.Collections.Immutable": "8.0.0", "System.IO.Hashing": "7.0.0" } }, "kentico.xperience.lucene.core": { "type": "Project", "dependencies": { - "Kentico.Xperience.Core": "[29.0.0, )", + "Kentico.Xperience.Core": "[29.3.3, )", "Lucene.Net": "[4.8.0-beta00016, )", "Lucene.Net.Analysis.Common": "[4.8.0-beta00016, )", "Lucene.Net.Facet": "[4.8.0-beta00016, )" @@ -903,20 +911,20 @@ }, "Kentico.Xperience.Core": { "type": "CentralTransitive", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "jG0gkDLE4H7ZNEdxdyZEzPxoAMlfx24oVdPeRa8RCUriOhBtleNREInbR9kYoMWwo456EaUaf3RPngArmZdy1g==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "Vr704hfDI9V737qULMy8nSEjz3xuyXxlLcUSxiMDf7c2fBKAySRn4YjYiLd6qp+6HnSm129nBuavyxWOsvzARg==", "dependencies": { "AngleSharp": "0.17.1", - "MailKit": "4.5.0", - "Microsoft.Data.SqlClient": "5.2.0", + "MailKit": "4.7.1.1", + "Microsoft.Data.SqlClient": "5.2.1", "Microsoft.Extensions.Caching.Memory": "6.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Configuration.Binder": "6.0.0", "Microsoft.Extensions.DependencyInjection": "6.0.1", "Microsoft.Extensions.FileProviders.Physical": "6.0.0", "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization": "6.0.29", + "Microsoft.Extensions.Localization": "6.0.32", "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0", "Mono.Cecil": "0.11.5", "Newtonsoft.Json": "13.0.3", @@ -925,18 +933,18 @@ }, "Kentico.Xperience.WebApp": { "type": "CentralTransitive", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "LXTK6WPoEThc+K2cSGa3GbKg1Zute0tjELazK6JURnGEF7xdoRiVE8ty6WeWFxmK6Cd+FwId10Q49C6SXlLL2A==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "hqX3bOd1Q030GU4TnsYN8lVDrM3OEOJPCBXX3MwFogC/sHzFueMTvC2VKE0xOH1vnBCOvW9CxxQHyAk/xk8lXw==", "dependencies": { "CommandLineParser": "2.9.1", - "HotChocolate.AspNetCore": "13.9.0", - "HotChocolate.Data": "13.9.0", - "HtmlSanitizer": "8.0.843", - "Kentico.Xperience.Core": "[29.0.0]", + "HotChocolate.AspNetCore": "13.9.7", + "HotChocolate.Data": "13.9.7", + "HtmlSanitizer": "8.0.865", + "Kentico.Xperience.Core": "[29.3.3]", "Microsoft.Extensions.Caching.Memory": "6.0.1", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29", - "Microsoft.Extensions.Localization": "6.0.29" + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32", + "Microsoft.Extensions.Localization": "6.0.32" } }, "Lucene.Net": { diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneTaskLogger.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneTaskLogger.cs index 047dab3..56427ec 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneTaskLogger.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneTaskLogger.cs @@ -133,7 +133,7 @@ private static LuceneTaskType GetTaskType(string eventName) } if (eventName.Equals(WebPageEvents.Delete.Name, StringComparison.OrdinalIgnoreCase) || - eventName.Equals(WebPageEvents.Archive.Name, StringComparison.OrdinalIgnoreCase)) + eventName.Equals(WebPageEvents.Unpublish.Name, StringComparison.OrdinalIgnoreCase)) { return LuceneTaskType.DELETE; } diff --git a/src/Kentico.Xperience.Lucene.Core/LuceneSearchModule.cs b/src/Kentico.Xperience.Lucene.Core/LuceneSearchModule.cs index 7720966..5bd3af9 100644 --- a/src/Kentico.Xperience.Lucene.Core/LuceneSearchModule.cs +++ b/src/Kentico.Xperience.Lucene.Core/LuceneSearchModule.cs @@ -63,10 +63,10 @@ protected override void OnInit(ModuleInitParameters parameters) WebPageEvents.Publish.Execute += HandleEvent; WebPageEvents.Delete.Execute += HandleEvent; - WebPageEvents.Archive.Execute += HandleEvent; + WebPageEvents.Unpublish.Execute += HandleEvent; ContentItemEvents.Publish.Execute += HandleContentItemEvent; ContentItemEvents.Delete.Execute += HandleContentItemEvent; - ContentItemEvents.Archive.Execute += HandleContentItemEvent; + ContentItemEvents.Unpublish.Execute += HandleContentItemEvent; RequestEvents.RunEndRequestTasks.Execute += (sender, eventArgs) => LuceneQueueWorker.Current.EnsureRunningThread(); } diff --git a/src/Kentico.Xperience.Lucene.Core/packages.lock.json b/src/Kentico.Xperience.Lucene.Core/packages.lock.json index 8eaecac..7f8c422 100644 --- a/src/Kentico.Xperience.Lucene.Core/packages.lock.json +++ b/src/Kentico.Xperience.Lucene.Core/packages.lock.json @@ -4,20 +4,20 @@ "net6.0": { "Kentico.Xperience.Core": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "jG0gkDLE4H7ZNEdxdyZEzPxoAMlfx24oVdPeRa8RCUriOhBtleNREInbR9kYoMWwo456EaUaf3RPngArmZdy1g==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "Vr704hfDI9V737qULMy8nSEjz3xuyXxlLcUSxiMDf7c2fBKAySRn4YjYiLd6qp+6HnSm129nBuavyxWOsvzARg==", "dependencies": { "AngleSharp": "0.17.1", - "MailKit": "4.5.0", - "Microsoft.Data.SqlClient": "5.2.0", + "MailKit": "4.7.1.1", + "Microsoft.Data.SqlClient": "5.2.1", "Microsoft.Extensions.Caching.Memory": "6.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Configuration.Binder": "6.0.0", "Microsoft.Extensions.DependencyInjection": "6.0.1", "Microsoft.Extensions.FileProviders.Physical": "6.0.0", "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization": "6.0.29", + "Microsoft.Extensions.Localization": "6.0.32", "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0", "Mono.Cecil": "0.11.5", "Newtonsoft.Json": "13.0.3", @@ -70,10 +70,11 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.35.0", - "contentHash": "hENcx03Jyuqv05F4RBEPbxz29UrM3Nbhnr6Wl6NQpoU9BCIbL3XLentrxDCTrH54NLS11Exxi/o8MYgT/cnKFA==", + "resolved": "1.38.0", + "contentHash": "IuEgCoVA0ef7E4pQtpC3+TkPbzaoQfa77HlfJDmfuaJUCVJmn7fT0izamZiryW5sYUFKizsftIxMkXKbgIcPMQ==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.ClientModel": "1.0.0", "System.Diagnostics.DiagnosticSource": "6.0.1", "System.Memory.Data": "1.0.2", "System.Numerics.Vectors": "4.5.0", @@ -84,12 +85,12 @@ }, "Azure.Identity": { "type": "Transitive", - "resolved": "1.10.3", - "contentHash": "l1Xm2MWOF2Mzcwuarlw8kWQXLZk3UeB55aQXVyjj23aBfDwOZ3gu5GP2kJ6KlmZeZv2TCzw7x4L3V36iNr3gww==", + "resolved": "1.11.3", + "contentHash": "4EsGMAr+oog5UqHs46qwA7S/lJiwpXjPBY3t9tQBmJ8nsgmT/LLnrc32eiTlfOdfKxUz4fxBD2YjSnVZacu97w==", "dependencies": { - "Azure.Core": "1.35.0", - "Microsoft.Identity.Client": "4.56.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.56.0", + "Azure.Core": "1.38.0", + "Microsoft.Identity.Client": "4.60.3", + "Microsoft.Identity.Client.Extensions.Msal": "4.60.3", "System.Memory": "4.5.4", "System.Security.Cryptography.ProtectedData": "4.7.0", "System.Text.Json": "4.7.2", @@ -98,8 +99,8 @@ }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.3.0", - "contentHash": "IaVIiYxZLaBulveGDRUx/pBoW/Rc8QeXGF5u2E8xL8RWhVKCgfmtX9NUyGRbnSqnbFQU2zyP3MkXIdH+jUuQBw==" + "resolved": "2.4.0", + "contentHash": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==" }, "J2N": { "type": "Transitive", @@ -133,10 +134,11 @@ }, "MailKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "EaXHODUdIV5oPdWvBJGazwaEpKt1LI/H/S//EEozANYCsfOSKHntX+Skk2kW616lSQp+fkRTmSjk0CYxEuOyEA==", + "resolved": "4.7.1.1", + "contentHash": "Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==", "dependencies": { - "MimeKit": "4.5.0" + "MimeKit": "4.7.1", + "System.Formats.Asn1": "8.0.1" } }, "Microsoft.Bcl.AsyncInterfaces": { @@ -151,12 +153,12 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "5.2.0", - "contentHash": "3alfyqRN3ELRtdvU1dGtLBRNQqprr3TJ0WrUJfMISPwg1nPUN2P3Lelah68IKWuV27Ceb7ig95hWNHFTSXfxMg==", + "resolved": "5.2.1", + "contentHash": "ojg2XWmih4ubPPtrhRqqXk0SM6wC2ZSTkNNEAlYBhMo4IsRHjLazFc0abzcZCNfw1JyWcqY7vGutWTv8ZaFD9g==", "dependencies": { - "Azure.Identity": "1.10.3", + "Azure.Identity": "1.11.3", "Microsoft.Data.SqlClient.SNI.runtime": "5.2.0", - "Microsoft.Identity.Client": "4.56.0", + "Microsoft.Identity.Client": "4.60.3", "Microsoft.IdentityModel.JsonWebTokens": "6.35.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.35.0", "Microsoft.SqlServer.Server": "1.0.0", @@ -263,19 +265,19 @@ }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "cZ5Tx6NtTZFzk+PWW2icApat7agQiMIFIsohsmHmz/scKRfAI/5XTa9lpZMwKowQBZm+ap0RwAJmQ2/5xoL+VQ==", + "resolved": "6.0.32", + "contentHash": "oT9/Odho4th/5aY+HztJMfRhAVR+6rZ9FqYYjRrRFDU2e6C+pBCQLSujQIjdAjuHlsUu4pNmHXoaaiaE/82pow==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization.Abstractions": "6.0.29", + "Microsoft.Extensions.Localization.Abstractions": "6.0.32", "Microsoft.Extensions.Logging.Abstractions": "6.0.4", "Microsoft.Extensions.Options": "6.0.0" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "4HVhh+V/7H2VMgFI8EP1kLgLpeRqm1kQOlXjHk4MHCVD5/pgWOTTbLEz9pdXymQQf/eRg1vNK8tG2MZstBHhlw==" + "resolved": "6.0.32", + "contentHash": "ZG8q0/GHhkfXa4ciGp23ax6bJBjFBMYldw8vDg3JIzBp7vYMg5+hGSmNzFMtZThyAr9ktvEQAJS7TUpEEpDT0A==" }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", @@ -313,19 +315,19 @@ }, "Microsoft.Identity.Client": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "rr4zbidvHy9r4NvOAs5hdd964Ao2A0pAeFBJKR95u1CJAVzbd1p6tPTXUZ+5ld0cfThiVSGvz6UHwY6JjraTpA==", + "resolved": "4.60.3", + "contentHash": "jve1RzmSpBhGlqMzPva6VfRbLMLZZc1Q8WRVZf8+iEruQkBgDTJPq8OeTehcY4GGYG1j6UB1xVofVE+n4BLDdw==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.22.0" + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" } }, "Microsoft.Identity.Client.Extensions.Msal": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==", + "resolved": "4.60.3", + "contentHash": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==", "dependencies": { - "Microsoft.Identity.Client": "4.56.0", - "System.IO.FileSystem.AccessControl": "5.0.0", + "Microsoft.Identity.Client": "4.60.3", "System.Security.Cryptography.ProtectedData": "4.5.0" } }, @@ -403,10 +405,11 @@ }, "MimeKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "OYn8b8b66J4mgtDzoImepiUtdkJOAVGoTj/ghzJ+az4wVixA5L5Z8GmgFhRvQ1btAIwZh/d9zvZLCALndQdz5w==", + "resolved": "4.7.1", + "contentHash": "Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==", "dependencies": { - "BouncyCastle.Cryptography": "2.3.0", + "BouncyCastle.Cryptography": "2.4.0", + "System.Formats.Asn1": "8.0.1", "System.Security.Cryptography.Pkcs": "8.0.0" } }, @@ -425,6 +428,15 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "I3CVkvxeqFYjIVEP59DnjbeoGNfo/+SZrCLpRz2v/g0gpCHaEMPtWSY0s9k/7jR1rAsLNg2z2u1JRB76tPjnIw==", + "dependencies": { + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, "System.CodeDom": { "type": "Transitive", "resolved": "8.0.0", @@ -457,8 +469,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", @@ -469,15 +481,6 @@ "Microsoft.IdentityModel.Tokens": "6.35.0" } }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", - "dependencies": { - "System.Security.AccessControl": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.Memory": { "type": "Transitive", "resolved": "4.5.4", @@ -551,11 +554,6 @@ "System.Windows.Extensions": "6.0.0" } }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" - }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", diff --git a/src/Kentico.Xperience.Lucene/packages.lock.json b/src/Kentico.Xperience.Lucene/packages.lock.json index 15d4544..470466e 100644 --- a/src/Kentico.Xperience.Lucene/packages.lock.json +++ b/src/Kentico.Xperience.Lucene/packages.lock.json @@ -27,10 +27,11 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.35.0", - "contentHash": "hENcx03Jyuqv05F4RBEPbxz29UrM3Nbhnr6Wl6NQpoU9BCIbL3XLentrxDCTrH54NLS11Exxi/o8MYgT/cnKFA==", + "resolved": "1.38.0", + "contentHash": "IuEgCoVA0ef7E4pQtpC3+TkPbzaoQfa77HlfJDmfuaJUCVJmn7fT0izamZiryW5sYUFKizsftIxMkXKbgIcPMQ==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.ClientModel": "1.0.0", "System.Diagnostics.DiagnosticSource": "6.0.1", "System.Memory.Data": "1.0.2", "System.Numerics.Vectors": "4.5.0", @@ -41,12 +42,12 @@ }, "Azure.Identity": { "type": "Transitive", - "resolved": "1.10.3", - "contentHash": "l1Xm2MWOF2Mzcwuarlw8kWQXLZk3UeB55aQXVyjj23aBfDwOZ3gu5GP2kJ6KlmZeZv2TCzw7x4L3V36iNr3gww==", + "resolved": "1.11.3", + "contentHash": "4EsGMAr+oog5UqHs46qwA7S/lJiwpXjPBY3t9tQBmJ8nsgmT/LLnrc32eiTlfOdfKxUz4fxBD2YjSnVZacu97w==", "dependencies": { - "Azure.Core": "1.35.0", - "Microsoft.Identity.Client": "4.56.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.56.0", + "Azure.Core": "1.38.0", + "Microsoft.Identity.Client": "4.60.3", + "Microsoft.Identity.Client.Extensions.Msal": "4.60.3", "System.Memory": "4.5.4", "System.Security.Cryptography.ProtectedData": "4.7.0", "System.Text.Json": "4.7.2", @@ -55,16 +56,16 @@ }, "BananaCakePop.Middleware": { "type": "Transitive", - "resolved": "13.0.0", - "contentHash": "6Zj/vfmnCXLjBG7WNdtOgZZ5ZDR3Sy1FQSshZUonIYs3OdzozmsFmqPXMd9XJ0QE9aAildgVGq/lDLpLrMI4Yw==", + "resolved": "16.0.1", + "contentHash": "i/LDG7Lw2ln1WM7GaMyNDWHExtN15/O/xgcX8lhBK6FZFPBnlq6FJW4GuS3vs0UpLB1TvX2tcOenMlXjcMZq0g==", "dependencies": { - "Yarp.ReverseProxy": "2.0.1" + "Yarp.ReverseProxy": "2.1.0" } }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.3.0", - "contentHash": "IaVIiYxZLaBulveGDRUx/pBoW/Rc8QeXGF5u2E8xL8RWhVKCgfmtX9NUyGRbnSqnbFQU2zyP3MkXIdH+jUuQBw==" + "resolved": "2.4.0", + "contentHash": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==" }, "CommandLineParser": { "type": "Transitive", @@ -73,8 +74,8 @@ }, "GreenDonut": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "T8ZYTsm0S48hi89d2symCvUEJoBkg5F+rfU+HFtkEOc7WLZsIBDStnfF3c890Vxjmx/P1tFpY5StDNTM+C6fIw==", + "resolved": "13.9.7", + "contentHash": "Hr+zOsca8uLgG3x0UogBxyUDu6DSHzbAsEFlEF/GlQGqDIzXUHNx80yMaaXZ11h0cyuANqBz2aw2pGneupQWbQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "6.0.0", "System.Diagnostics.DiagnosticSource": "6.0.0", @@ -83,170 +84,170 @@ }, "HotChocolate": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "aGBAW6d9Oj1MfmKJF482yYdJ8G87yJ0rVFxU9l7lA1dg1xjc5XALLQO9jCPz4GCpQLetuAhHdkZ713imJ6WCPw==", + "resolved": "13.9.7", + "contentHash": "eMTrfh3A+CxMnb84Pz2zzQz3zuQXlihbM9f4u1JW8gDKlcARGh9qQr1qxheLQa4Co7RG3O7gl8DiNYyJ781DhQ==", "dependencies": { - "HotChocolate.Authorization": "13.9.0", - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0", - "HotChocolate.Types.Mutations": "13.9.0", - "HotChocolate.Types.OffsetPagination": "13.9.0", - "HotChocolate.Validation": "13.9.0" + "HotChocolate.Authorization": "13.9.7", + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7", + "HotChocolate.Types.Mutations": "13.9.7", + "HotChocolate.Types.OffsetPagination": "13.9.7", + "HotChocolate.Validation": "13.9.7" } }, "HotChocolate.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "mb3IPL8V4NRL2FUefZP20fSwIMOnE7uCMLiM4d5Y5cjljYaMUVzUJnvdW9C1tUfbodP49Llk9WnBCR6S9fr8mQ==", + "resolved": "13.9.7", + "contentHash": "zZGGxtSH7H2Ft7UYlUbwbPycThld0dnMbpwTjjF667HL4nTXe56egdUd4RurojZQwlY/ybvjFGjbzS6gMZ6xNw==", "dependencies": { - "HotChocolate.Language": "13.9.0", + "HotChocolate.Language": "13.9.7", "Microsoft.Bcl.AsyncInterfaces": "6.0.0", "System.Collections.Immutable": "6.0.0" } }, "HotChocolate.AspNetCore": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "RnxUdKEYOmsjzNPss473CYOug/9GIt8qlS9j8HxtZrW5TASM/9S7pDb7FthcDj4ag/D7wAwme3YxsqxH+iw5Bg==", + "resolved": "13.9.7", + "contentHash": "UHNGeGmrVVMaQ+b3sJJWLwc84DZLgXWRYGkI4BBcGWqQllbuMM/2dJ/4Z6lGOUo267SLnH+JxPBn+eE7HlSDYQ==", "dependencies": { - "BananaCakePop.Middleware": "13.0.0", - "HotChocolate": "13.9.0", - "HotChocolate.Subscriptions.InMemory": "13.9.0", - "HotChocolate.Transport.Sockets": "13.9.0", - "HotChocolate.Types.Scalars.Upload": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0" + "BananaCakePop.Middleware": "16.0.1", + "HotChocolate": "13.9.7", + "HotChocolate.Subscriptions.InMemory": "13.9.7", + "HotChocolate.Transport.Sockets": "13.9.7", + "HotChocolate.Types.Scalars.Upload": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7" } }, "HotChocolate.Authorization": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6CPA39zObNuMUmkmQ6J3zqmalukhjCiJS/klSEDPpwTtrn9HS/3edsh/7oiKzmUh6PNVKGed0lwkSdDP+DGZDQ==", + "resolved": "13.9.7", + "contentHash": "CrAFhKQbK2L+nLe7TLjdf0iw6mLYSF/0niuDdOXB9YuIzuJ89Getrm2xWrSJwaJELWu1ksXpuOm1whPXD4/Cxw==", "dependencies": { - "HotChocolate.Execution": "13.9.0" + "HotChocolate.Execution": "13.9.7" } }, "HotChocolate.Data": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "eZI9pIipsJsqdacj55krmxx24cUTCearQ/q9wT4aa6vQ/5GwuwWJ0ZIqdcp1qPjd+BsmJixrQBbi6/OgnFXIGw==", + "resolved": "13.9.7", + "contentHash": "LDBHbB8Ix2v3kFK6GHORa7ZD5NAV0tuWzBZ2HATdqT91KKFzOkJkCcb59JYlj1sILEJ6KzLueWsCgO+NmBZVMw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7" } }, "HotChocolate.Execution": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "zO1aG5qx5lzbZu/iKR56g+zeOgCCCa5pICwxijd1qEap+7J5q0YsME9RByw8wYPH+tNsXCvDcKaeAEcashB4cg==", + "resolved": "13.9.7", + "contentHash": "y0C5ODS84VnR18ZmwqIPLvv6U/Fd2EA4inqg4gYs1nrMdKqHnCNP9i14+Ud8tREXZw/O+Jsvfw9+OylwW05Xww==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0", - "HotChocolate.Validation": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7", + "HotChocolate.Validation": "13.9.7", "Microsoft.Extensions.DependencyInjection": "6.0.0", "System.Threading.Channels": "6.0.0" } }, "HotChocolate.Execution.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "flySLPDyTtM4051tI3mh5Ue0fGrKFDuW3w0ebWmW2qjfuF4jgQzd3pK3ZxfkxAfpxQXyPaVn/Q7fae+fYQxeCg==", + "resolved": "13.9.7", + "contentHash": "JyVN6xsxWGJdeU1RwJWsHnhYakU8z7Q003r3c/M1FwokqAYspQPDzP4QuBvmz8nPyCxSdR42eNvqVGYKZj/h1Q==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" } }, "HotChocolate.Fetching": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "pIw7VlEABejQGLRnJGnO7iPdT40AHklf0psJp5zNXrq0IX+Vq7hRRqON73nubZv5Ofhh8fV3kugqYFKvzcptoA==", + "resolved": "13.9.7", + "contentHash": "I+Ek6pdicNtZvXyvr2dCejPWn+q13gDmUzuK5L+iUP5IGfod/02Vj408hBHPIapweCYixreI0h5VDHwJm2fx2A==", "dependencies": { - "GreenDonut": "13.9.0", - "HotChocolate.Types": "13.9.0" + "GreenDonut": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Language": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "M8q0XHQm8Gtab+wKgYXfVPxScjdDE+INify5yaj6g1ZDkV3sLIeX+muu1WebrNO3DgmuAi6o3aW770Ucw7k/dw==", + "resolved": "13.9.7", + "contentHash": "rWH01lP72YQmLP0tw1RtabanCXbRZ58x/frAQtPttyMViCx6N4aGEFAS8716ANwFM/ek6Kv7fYpxj3A0N1943A==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0", - "HotChocolate.Language.Utf8": "13.9.0", - "HotChocolate.Language.Visitors": "13.9.0", - "HotChocolate.Language.Web": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7", + "HotChocolate.Language.Utf8": "13.9.7", + "HotChocolate.Language.Visitors": "13.9.7", + "HotChocolate.Language.Web": "13.9.7" } }, "HotChocolate.Language.SyntaxTree": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "+vwrQ0qOiKn/yUBHn53030hQmqj45C1g0WI8sip50CPnkgs3bAPnDInUvrR3IiHbRn5spAonO4tFPtMDdJrEMA==", + "resolved": "13.9.7", + "contentHash": "iiTGVnjh+Q07L3GQ1gQrrbQWXh/sj6vJrvlwSLRbdIR2PZ53d9xXTeWjfiqgSfl+qZwWUyyCCCcWrJwYQokpyQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "6.0.0" } }, "HotChocolate.Language.Utf8": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "IEWNYGvtwejf7+j+Xci25FaYets2UD8wkfzQ5dUCW47c1rnTAyuRdTiO8T8x6LYuZ7+SLg7UTBYgjv4ybwAUgA==", + "resolved": "13.9.7", + "contentHash": "rGSf31r6WjOi4LAaF4HFKYPV+/nT7aqsvOZ5CO/UCJEM0vDeuda++NYdkLVETyUHeWc30niwIKOVSlN9XJNVuQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Visitors": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "j6mPBkfVo2fopWYLoczXCoog4PJ+KwbHItSgHfPfI1kDBcNcy9XY4oxth3Uau1uBbfHYIFjnuVc+FrGb1f9KAQ==", + "resolved": "13.9.7", + "contentHash": "3MxWSJdbbVh1LJDef7l6oPCBFHomMxPJSot/OBS11xEeeQnChrrVDFwPWnlffmyDX4Dccugbs0eKwJEXaxCpzQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Web": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "GI5ufbNVEoKygSC09owVnCvw1Ma2KzOtm1l6uen3wKshAdOKB4gmSVCjzf71pNL2Nt6cL4IHa70ClqjECmu9qg==", + "resolved": "13.9.7", + "contentHash": "FJxfPz4ESaRZj8fWgV1lPCrdAysiEGktJgkYHH4w/MioVLULdjckYocnQnCaWx2km0r0fojNGbm2k1TlqYL/7A==", "dependencies": { - "HotChocolate.Language.Utf8": "13.9.0" + "HotChocolate.Language.Utf8": "13.9.7" } }, "HotChocolate.Subscriptions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "P3ason65NwSzkB2W9myV/pRIm4IMIWXH3RPCtpHVKx22Xw3hRJRJhjLBQZ5LCk5v3+7kKhXNBTbFNpbMyvez3Q==", + "resolved": "13.9.7", + "contentHash": "19WDXKE2bN5Pd35ebzS/zqOKSb/thnBRWCFKqLLxVvjrRaZcdj+Amc92fqTJi4XGis/6AoMf6JZovbQjWeHvoA==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0" + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7" } }, "HotChocolate.Subscriptions.InMemory": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "rj5U1Cd2QsjNnSNNdlSopYLtXh0kTZ1NlA1B3v02YFtj4Zu9le6QkGsl3oUljUUq46vSkkrT9ISj+e5wTCcw/Q==", + "resolved": "13.9.7", + "contentHash": "vvv8QjqPSURHTjRNyM2AuOvJI9vRBCnB8mYe3lUrGo2coBYakGb+21MX0UjreqR9kaR+611p5OM4+snASSN4Fw==", "dependencies": { - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Subscriptions": "13.9.0", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Subscriptions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" } }, "HotChocolate.Transport.Sockets": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "4hPlhS2bgqT/tYCZfPtbGtPAaedULKgTbFKkTsjigrDhJcVxBA36Gr3yGM6S3NEw2JdIgiwugYV1log9zXkEjA==", + "resolved": "13.9.7", + "contentHash": "MiyrvorBadNSJYiXdH+O0aEX1MM6BTMGRYBICcMw/Gfv1oJurMa9qXAcqwVa6fwlRZPL+UqU6PlFLjIILhPLLA==", "dependencies": { "System.IO.Pipelines": "6.0.0" } }, "HotChocolate.Types": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "VGPZePNC4sBlz/iY4x90zIRxW62MWzWNcl2yjLS3JcW+0W8KuKxh99dFLxL0WY/+Eoe8PUecmoob+FrVEvPzpg==", + "resolved": "13.9.7", + "contentHash": "zauZ28u0cjwDo02YlsF290HKvGfKIuXCljGoGRypl1vsjlX/MOcDTUiDY5/VEnVVz6QZWZyg66C/kO862QuXPQ==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Types.Shared": "13.9.0", - "HotChocolate.Utilities": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Types.Shared": "13.9.7", + "HotChocolate.Utilities": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", "Microsoft.Extensions.ObjectPool": "6.0.0", "System.ComponentModel.Annotations": "5.0.0", @@ -255,74 +256,74 @@ }, "HotChocolate.Types.CursorPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2+w6tLrdjo+d/aIKyoNW1L/OH/p+FACMwGWHk1P4MwAspqaF7zjy71qTeNks+8QbRwG8uMleey/0sbr8sWpC6w==", + "resolved": "13.9.7", + "contentHash": "c1qshoAFs1h3L5hd8sSkdXTRdZPdTaolDLftmX5HX46TJvRW3diHWH7vDvfytlsxggMamHauwT4sTShYsvQGqw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Mutations": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "NX1zLkb7t19Om5RYubmkA6yRCtBbca454rqSGKSVBYjDrsiA6+4ZDvmS9Kjbw8F+cPm3VqShenrIIgfW8bzCXQ==", + "resolved": "13.9.7", + "contentHash": "89CAbrdiZziEajLzBItunpn+Fd09iqVYKHEPlRsWY55L2wNrzcoblW5Pe2p3c22w8ewmzSSEc8TupBYlez+2Ug==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.OffsetPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "LIAaSVRS6FJCssP+s4ooLajhQ1/QfES78twX4OgZFJ9/UZMxXlU3K/IWeB2aXcJNkehfIZLgoiROnouB7ATepw==", + "resolved": "13.9.7", + "contentHash": "9kxPAU748x9/wmNPzLrHqYOMOkjbTP7DPMfMmOiUGjetI2Lm6RenUVZVODU8n92luk2Ng4Fc5GgJd7a28yqJ9w==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Scalars.Upload": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "hisB6PGGgsekz3a8YJwKgvbZHED98eph9+TMPg5A500tyvrZS00fbdpjRcN+rcTKAxhJ5evzHB2Fo1m62Dyo4w==", + "resolved": "13.9.7", + "contentHash": "afuOJKMvL8f64UZmvn2mt66db9rvdWkZUDt5vBsGErAxSJst8yCO56hiaYgjkAYg2Itp9yiqtJIc/UjI22x34A==", "dependencies": { - "HotChocolate.Types": "13.9.0" + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Shared": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2lhdbXU/GltPQWO9r8qePZSzDo9ryFs8Wv0aF7aQgEq3dLvwer6OpvnZhIYmGua6bXXebA1PzBAEaaxPpLx3Wg==", + "resolved": "13.9.7", + "contentHash": "OXuZNxvpFX/clo3jYgogoAg8dp+NIphIhKffs6S6tuyJsl4/sqoo19cwNhEyF0K9cxKJYJj+oYw+hbl5XOHpRQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Utilities": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6zqwjROYxtuzAYjh31JnYKgM/MySRWEq4DHO64oSPFRJQ8NDgg7EvUU771yLt/6T7kUh+S6k25hVnmUipFtEnQ==" + "resolved": "13.9.7", + "contentHash": "Mh8K5kZZ0zRs5zXVlZDc3WqPU8I70lVSRTdhrM+4eWRZHceZ3OLgebQww2uGmAFcStzHD6b7XmQPuVxw0HRVCg==" }, "HotChocolate.Utilities.DependencyInjection": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "o1ijY8Rk0IUAo8QZYhfQ8s4/3z78JS9tyXGHzA963gkzTSJPehD4960CAmWlyC19FdE1i2KiTnYLhNOwNoL6+A==", + "resolved": "13.9.7", + "contentHash": "XlTIkwAzVshTj4p+XR7YCrGl/bwM0izwoUmKCvc1mdoIBtORbWQNixrnLQsCldhlnqP1G+CzXO2g0wNv+g8wBA==", "dependencies": { "Microsoft.Extensions.DependencyInjection": "6.0.0" } }, "HotChocolate.Validation": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "gC7/YfOcOOmT+zV/V45CubYhK3lZI7+SmNYLGXQ1ko4cwjVRh3PzSJMAaKw3naWDcbjXbEyWwdYc0dLuoVBNEA==", + "resolved": "13.9.7", + "contentHash": "vB7wUZl6kdo97v+oi0DTXXoif4kJ+6/CAJ8zQ8WakWiyJDxYe76v0NkGgViTrVFUDUlffVa7Yl6jGv49b2TPhQ==", "dependencies": { - "HotChocolate.Types": "13.9.0", + "HotChocolate.Types": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", "Microsoft.Extensions.Options": "6.0.0" } }, "HtmlSanitizer": { "type": "Transitive", - "resolved": "8.0.843", - "contentHash": "XfmHK4rFz9PPN0gcv7J7pc+MRpcni1mrnO04mwA+9/1zIHLgdOvLJeDwWnX5a+up4tioPvGreB+p+KljLJ32wg==", + "resolved": "8.0.865", + "contentHash": "jzgltCjgTMbTLVfeHYU3ocxJrqRDVdkXYYGTOKVBnpQffaRB/4Hr0R6jKxBBH8UudQSgACp8j3lsD46weyeDJg==", "dependencies": { "AngleSharp": "[0.17.1]", "AngleSharp.Css": "[0.17.0]", @@ -373,16 +374,17 @@ }, "MailKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "EaXHODUdIV5oPdWvBJGazwaEpKt1LI/H/S//EEozANYCsfOSKHntX+Skk2kW616lSQp+fkRTmSjk0CYxEuOyEA==", + "resolved": "4.7.1.1", + "contentHash": "Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==", "dependencies": { - "MimeKit": "4.5.0" + "MimeKit": "4.7.1", + "System.Formats.Asn1": "8.0.1" } }, "Microsoft.AspNetCore.SpaServices.Extensions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "2LeomoSAHbVBEffWwZS4cFLAQsPw2UK4gfNcajssV/cMM5/i61d8LwAdTcGHVmgF5e0zOz/25B06fk3iymD4VA==", + "resolved": "6.0.32", + "contentHash": "XQ7QY8Kpo31H/pVNmNuTfa/HSsGfpIA82QHHiq3J1SU3EBEDSEcdOSJRI7ODm4GmGZY/n/fWM9Blpcbf5rhfPg==", "dependencies": { "Microsoft.Extensions.FileProviders.Physical": "6.0.0" } @@ -392,14 +394,22 @@ "resolved": "6.0.0", "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" }, + "Microsoft.Bcl.TimeProvider": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "f5Kr5JepAbiGo7uDmhgvMqhntwxqXNn6/IpTBSSI4cuHhgnJGrLxFRhMjVpRkLPp6zJXO0/G0l3j9p9zSJxa+w==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0" + } + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "5.2.0", - "contentHash": "3alfyqRN3ELRtdvU1dGtLBRNQqprr3TJ0WrUJfMISPwg1nPUN2P3Lelah68IKWuV27Ceb7ig95hWNHFTSXfxMg==", + "resolved": "5.2.1", + "contentHash": "ojg2XWmih4ubPPtrhRqqXk0SM6wC2ZSTkNNEAlYBhMo4IsRHjLazFc0abzcZCNfw1JyWcqY7vGutWTv8ZaFD9g==", "dependencies": { - "Azure.Identity": "1.10.3", + "Azure.Identity": "1.11.3", "Microsoft.Data.SqlClient.SNI.runtime": "5.2.0", - "Microsoft.Identity.Client": "4.56.0", + "Microsoft.Identity.Client": "4.60.3", "Microsoft.IdentityModel.JsonWebTokens": "6.35.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.35.0", "Microsoft.SqlServer.Server": "1.0.0", @@ -481,8 +491,8 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "ih7lIqCUXsG4+CNNcPs67TBOe3Yd/HMdBBVP3BhvdZkJEUilhvUK69FB7ZPsiZKel08GkOh2qFXqZsWWPa/lPQ==", + "resolved": "6.0.32", + "contentHash": "zedFFk86/lHx3xePklSc5Fo4N3kWqEMSLnYbnsGc1loca/f5T0g85XGSgizPvdqZyAGtDlh1jHKk94aF0FiSpg==", "dependencies": { "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0" } @@ -525,19 +535,19 @@ }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "cZ5Tx6NtTZFzk+PWW2icApat7agQiMIFIsohsmHmz/scKRfAI/5XTa9lpZMwKowQBZm+ap0RwAJmQ2/5xoL+VQ==", + "resolved": "6.0.32", + "contentHash": "oT9/Odho4th/5aY+HztJMfRhAVR+6rZ9FqYYjRrRFDU2e6C+pBCQLSujQIjdAjuHlsUu4pNmHXoaaiaE/82pow==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization.Abstractions": "6.0.29", + "Microsoft.Extensions.Localization.Abstractions": "6.0.32", "Microsoft.Extensions.Logging.Abstractions": "6.0.4", "Microsoft.Extensions.Options": "6.0.0" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "4HVhh+V/7H2VMgFI8EP1kLgLpeRqm1kQOlXjHk4MHCVD5/pgWOTTbLEz9pdXymQQf/eRg1vNK8tG2MZstBHhlw==" + "resolved": "6.0.32", + "contentHash": "ZG8q0/GHhkfXa4ciGp23ax6bJBjFBMYldw8vDg3JIzBp7vYMg5+hGSmNzFMtZThyAr9ktvEQAJS7TUpEEpDT0A==" }, "Microsoft.Extensions.Logging": { "type": "Transitive", @@ -592,19 +602,19 @@ }, "Microsoft.Identity.Client": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "rr4zbidvHy9r4NvOAs5hdd964Ao2A0pAeFBJKR95u1CJAVzbd1p6tPTXUZ+5ld0cfThiVSGvz6UHwY6JjraTpA==", + "resolved": "4.60.3", + "contentHash": "jve1RzmSpBhGlqMzPva6VfRbLMLZZc1Q8WRVZf8+iEruQkBgDTJPq8OeTehcY4GGYG1j6UB1xVofVE+n4BLDdw==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.22.0" + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" } }, "Microsoft.Identity.Client.Extensions.Msal": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==", + "resolved": "4.60.3", + "contentHash": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==", "dependencies": { - "Microsoft.Identity.Client": "4.56.0", - "System.IO.FileSystem.AccessControl": "5.0.0", + "Microsoft.Identity.Client": "4.60.3", "System.Security.Cryptography.ProtectedData": "4.5.0" } }, @@ -667,10 +677,11 @@ }, "MimeKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "OYn8b8b66J4mgtDzoImepiUtdkJOAVGoTj/ghzJ+az4wVixA5L5Z8GmgFhRvQ1btAIwZh/d9zvZLCALndQdz5w==", + "resolved": "4.7.1", + "contentHash": "Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==", "dependencies": { - "BouncyCastle.Cryptography": "2.3.0", + "BouncyCastle.Cryptography": "2.4.0", + "System.Formats.Asn1": "8.0.1", "System.Security.Cryptography.Pkcs": "8.0.0" } }, @@ -689,6 +700,15 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "I3CVkvxeqFYjIVEP59DnjbeoGNfo/+SZrCLpRz2v/g0gpCHaEMPtWSY0s9k/7jR1rAsLNg2z2u1JRB76tPjnIw==", + "dependencies": { + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, "System.CodeDom": { "type": "Transitive", "resolved": "8.0.0", @@ -734,8 +754,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", @@ -746,15 +766,6 @@ "Microsoft.IdentityModel.Tokens": "7.3.1" } }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", - "dependencies": { - "System.Security.AccessControl": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.IO.Hashing": { "type": "Transitive", "resolved": "7.0.0", @@ -824,11 +835,6 @@ "System.Windows.Extensions": "6.0.0" } }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" - }, "System.Text.Encoding.CodePages": { "type": "Transitive", "resolved": "6.0.0", @@ -874,23 +880,25 @@ }, "Yarp.ReverseProxy": { "type": "Transitive", - "resolved": "2.0.1", - "contentHash": "op7vBwONPFeR1PYxeLw+RLqSodODDX8RWd0OinLGMVIq6yi1q9mv1j56ImuyZgiAToksiC0Dc7jbRUZ9I+jvFA==", + "resolved": "2.1.0", + "contentHash": "VgRuCBxmh5ND4VuFhvIN3AAeoxFhYkS2hNINk6AVCrOVTlpk7OwdrTXi8NHACfqfhDL+/oYCZrF9RxN+yiYnEg==", "dependencies": { + "Microsoft.Bcl.TimeProvider": "8.0.0", + "System.Collections.Immutable": "8.0.0", "System.IO.Hashing": "7.0.0" } }, "kentico.xperience.lucene.admin": { "type": "Project", "dependencies": { - "Kentico.Xperience.Admin": "[29.0.0, )", - "Kentico.Xperience.Lucene.Core": "[5.0.0-prerelease-1, )" + "Kentico.Xperience.Admin": "[29.3.3, )", + "Kentico.Xperience.Lucene.Core": "[8.0.0, )" } }, "kentico.xperience.lucene.core": { "type": "Project", "dependencies": { - "Kentico.Xperience.Core": "[29.0.0, )", + "Kentico.Xperience.Core": "[29.3.3, )", "Lucene.Net": "[4.8.0-beta00016, )", "Lucene.Net.Analysis.Common": "[4.8.0-beta00016, )", "Lucene.Net.Facet": "[4.8.0-beta00016, )" @@ -898,32 +906,32 @@ }, "Kentico.Xperience.Admin": { "type": "CentralTransitive", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "0PZqIlNEjpE5GHPtTMHzd5KkO428oRJlYEDx2YmLLYkm+UDMsRIwaS91UtmZTP5FYlDzv7yq0zgB4hqbcdsZTA==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "XaJ9roaXsCFj/PK/feFao403h9NjCT4gbqhJs6vbPDfUBfRLtxgszQRraiF5Rb4Cft5VmtqMfGO7rW5a9w+k5w==", "dependencies": { "Kentico.Aira.Client": "1.0.25", - "Kentico.Xperience.WebApp": "[29.0.0]", - "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.29", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29" + "Kentico.Xperience.WebApp": "[29.3.3]", + "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.32", + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32" } }, "Kentico.Xperience.Core": { "type": "CentralTransitive", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "jG0gkDLE4H7ZNEdxdyZEzPxoAMlfx24oVdPeRa8RCUriOhBtleNREInbR9kYoMWwo456EaUaf3RPngArmZdy1g==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "Vr704hfDI9V737qULMy8nSEjz3xuyXxlLcUSxiMDf7c2fBKAySRn4YjYiLd6qp+6HnSm129nBuavyxWOsvzARg==", "dependencies": { "AngleSharp": "0.17.1", - "MailKit": "4.5.0", - "Microsoft.Data.SqlClient": "5.2.0", + "MailKit": "4.7.1.1", + "Microsoft.Data.SqlClient": "5.2.1", "Microsoft.Extensions.Caching.Memory": "6.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Configuration.Binder": "6.0.0", "Microsoft.Extensions.DependencyInjection": "6.0.1", "Microsoft.Extensions.FileProviders.Physical": "6.0.0", "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization": "6.0.29", + "Microsoft.Extensions.Localization": "6.0.32", "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0", "Mono.Cecil": "0.11.5", "Newtonsoft.Json": "13.0.3", @@ -932,18 +940,18 @@ }, "Kentico.Xperience.WebApp": { "type": "CentralTransitive", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "LXTK6WPoEThc+K2cSGa3GbKg1Zute0tjELazK6JURnGEF7xdoRiVE8ty6WeWFxmK6Cd+FwId10Q49C6SXlLL2A==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "hqX3bOd1Q030GU4TnsYN8lVDrM3OEOJPCBXX3MwFogC/sHzFueMTvC2VKE0xOH1vnBCOvW9CxxQHyAk/xk8lXw==", "dependencies": { "CommandLineParser": "2.9.1", - "HotChocolate.AspNetCore": "13.9.0", - "HotChocolate.Data": "13.9.0", - "HtmlSanitizer": "8.0.843", - "Kentico.Xperience.Core": "[29.0.0]", + "HotChocolate.AspNetCore": "13.9.7", + "HotChocolate.Data": "13.9.7", + "HtmlSanitizer": "8.0.865", + "Kentico.Xperience.Core": "[29.3.3]", "Microsoft.Extensions.Caching.Memory": "6.0.1", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29", - "Microsoft.Extensions.Localization": "6.0.29" + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32", + "Microsoft.Extensions.Localization": "6.0.32" } }, "Lucene.Net": { diff --git a/tests/Kentico.Xperience.Lucene.Tests/packages.lock.json b/tests/Kentico.Xperience.Lucene.Tests/packages.lock.json index 8f15674..e459b8e 100644 --- a/tests/Kentico.Xperience.Lucene.Tests/packages.lock.json +++ b/tests/Kentico.Xperience.Lucene.Tests/packages.lock.json @@ -29,23 +29,23 @@ }, "Kentico.Xperience.Admin": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "0PZqIlNEjpE5GHPtTMHzd5KkO428oRJlYEDx2YmLLYkm+UDMsRIwaS91UtmZTP5FYlDzv7yq0zgB4hqbcdsZTA==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "XaJ9roaXsCFj/PK/feFao403h9NjCT4gbqhJs6vbPDfUBfRLtxgszQRraiF5Rb4Cft5VmtqMfGO7rW5a9w+k5w==", "dependencies": { "Kentico.Aira.Client": "1.0.25", - "Kentico.Xperience.WebApp": "[29.0.0]", - "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.29", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29" + "Kentico.Xperience.WebApp": "[29.3.3]", + "Microsoft.AspNetCore.SpaServices.Extensions": "6.0.32", + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32" } }, "Kentico.Xperience.Core.Tests": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "HvfqYoJIpdBki6IggsFvwgd5tnz7bs8nMbaui11cEKd0m+Zbnz8QKPL53GOwaYDKIHGuJPaPMrMRa+gIYcY97A==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "qIC6/Djrk3EhDkSkMKZyg73EP7431W23EKYEMSvakatUgXqDih+K/vK2Ut/vV8tmW0LqDrq5AZQNdbgsPryQ8A==", "dependencies": { - "Kentico.Xperience.Core": "[29.0.0]", + "Kentico.Xperience.Core": "[29.3.3]", "NUnit": "3.14.0", "Newtonsoft.Json": "13.0.3", "System.Configuration.ConfigurationManager": "8.0.0" @@ -53,18 +53,18 @@ }, "Kentico.Xperience.WebApp": { "type": "Direct", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "LXTK6WPoEThc+K2cSGa3GbKg1Zute0tjELazK6JURnGEF7xdoRiVE8ty6WeWFxmK6Cd+FwId10Q49C6SXlLL2A==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "hqX3bOd1Q030GU4TnsYN8lVDrM3OEOJPCBXX3MwFogC/sHzFueMTvC2VKE0xOH1vnBCOvW9CxxQHyAk/xk8lXw==", "dependencies": { "CommandLineParser": "2.9.1", - "HotChocolate.AspNetCore": "13.9.0", - "HotChocolate.Data": "13.9.0", - "HtmlSanitizer": "8.0.843", - "Kentico.Xperience.Core": "[29.0.0]", + "HotChocolate.AspNetCore": "13.9.7", + "HotChocolate.Data": "13.9.7", + "HtmlSanitizer": "8.0.865", + "Kentico.Xperience.Core": "[29.3.3]", "Microsoft.Extensions.Caching.Memory": "6.0.1", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.29", - "Microsoft.Extensions.Localization": "6.0.29" + "Microsoft.Extensions.FileProviders.Embedded": "6.0.32", + "Microsoft.Extensions.Localization": "6.0.32" } }, "Microsoft.NET.Test.Sdk": { @@ -129,10 +129,11 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.35.0", - "contentHash": "hENcx03Jyuqv05F4RBEPbxz29UrM3Nbhnr6Wl6NQpoU9BCIbL3XLentrxDCTrH54NLS11Exxi/o8MYgT/cnKFA==", + "resolved": "1.38.0", + "contentHash": "IuEgCoVA0ef7E4pQtpC3+TkPbzaoQfa77HlfJDmfuaJUCVJmn7fT0izamZiryW5sYUFKizsftIxMkXKbgIcPMQ==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.ClientModel": "1.0.0", "System.Diagnostics.DiagnosticSource": "6.0.1", "System.Memory.Data": "1.0.2", "System.Numerics.Vectors": "4.5.0", @@ -143,12 +144,12 @@ }, "Azure.Identity": { "type": "Transitive", - "resolved": "1.10.3", - "contentHash": "l1Xm2MWOF2Mzcwuarlw8kWQXLZk3UeB55aQXVyjj23aBfDwOZ3gu5GP2kJ6KlmZeZv2TCzw7x4L3V36iNr3gww==", + "resolved": "1.11.3", + "contentHash": "4EsGMAr+oog5UqHs46qwA7S/lJiwpXjPBY3t9tQBmJ8nsgmT/LLnrc32eiTlfOdfKxUz4fxBD2YjSnVZacu97w==", "dependencies": { - "Azure.Core": "1.35.0", - "Microsoft.Identity.Client": "4.56.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.56.0", + "Azure.Core": "1.38.0", + "Microsoft.Identity.Client": "4.60.3", + "Microsoft.Identity.Client.Extensions.Msal": "4.60.3", "System.Memory": "4.5.4", "System.Security.Cryptography.ProtectedData": "4.7.0", "System.Text.Json": "4.7.2", @@ -157,16 +158,16 @@ }, "BananaCakePop.Middleware": { "type": "Transitive", - "resolved": "13.0.0", - "contentHash": "6Zj/vfmnCXLjBG7WNdtOgZZ5ZDR3Sy1FQSshZUonIYs3OdzozmsFmqPXMd9XJ0QE9aAildgVGq/lDLpLrMI4Yw==", + "resolved": "16.0.1", + "contentHash": "i/LDG7Lw2ln1WM7GaMyNDWHExtN15/O/xgcX8lhBK6FZFPBnlq6FJW4GuS3vs0UpLB1TvX2tcOenMlXjcMZq0g==", "dependencies": { - "Yarp.ReverseProxy": "2.0.1" + "Yarp.ReverseProxy": "2.1.0" } }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.3.0", - "contentHash": "IaVIiYxZLaBulveGDRUx/pBoW/Rc8QeXGF5u2E8xL8RWhVKCgfmtX9NUyGRbnSqnbFQU2zyP3MkXIdH+jUuQBw==" + "resolved": "2.4.0", + "contentHash": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==" }, "Castle.Core": { "type": "Transitive", @@ -191,8 +192,8 @@ }, "GreenDonut": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "T8ZYTsm0S48hi89d2symCvUEJoBkg5F+rfU+HFtkEOc7WLZsIBDStnfF3c890Vxjmx/P1tFpY5StDNTM+C6fIw==", + "resolved": "13.9.7", + "contentHash": "Hr+zOsca8uLgG3x0UogBxyUDu6DSHzbAsEFlEF/GlQGqDIzXUHNx80yMaaXZ11h0cyuANqBz2aw2pGneupQWbQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "8.0.0", "System.Diagnostics.DiagnosticSource": "8.0.0", @@ -201,169 +202,169 @@ }, "HotChocolate": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "aGBAW6d9Oj1MfmKJF482yYdJ8G87yJ0rVFxU9l7lA1dg1xjc5XALLQO9jCPz4GCpQLetuAhHdkZ713imJ6WCPw==", + "resolved": "13.9.7", + "contentHash": "eMTrfh3A+CxMnb84Pz2zzQz3zuQXlihbM9f4u1JW8gDKlcARGh9qQr1qxheLQa4Co7RG3O7gl8DiNYyJ781DhQ==", "dependencies": { - "HotChocolate.Authorization": "13.9.0", - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0", - "HotChocolate.Types.Mutations": "13.9.0", - "HotChocolate.Types.OffsetPagination": "13.9.0", - "HotChocolate.Validation": "13.9.0" + "HotChocolate.Authorization": "13.9.7", + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7", + "HotChocolate.Types.Mutations": "13.9.7", + "HotChocolate.Types.OffsetPagination": "13.9.7", + "HotChocolate.Validation": "13.9.7" } }, "HotChocolate.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "mb3IPL8V4NRL2FUefZP20fSwIMOnE7uCMLiM4d5Y5cjljYaMUVzUJnvdW9C1tUfbodP49Llk9WnBCR6S9fr8mQ==", + "resolved": "13.9.7", + "contentHash": "zZGGxtSH7H2Ft7UYlUbwbPycThld0dnMbpwTjjF667HL4nTXe56egdUd4RurojZQwlY/ybvjFGjbzS6gMZ6xNw==", "dependencies": { - "HotChocolate.Language": "13.9.0", + "HotChocolate.Language": "13.9.7", "System.Collections.Immutable": "8.0.0" } }, "HotChocolate.AspNetCore": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "RnxUdKEYOmsjzNPss473CYOug/9GIt8qlS9j8HxtZrW5TASM/9S7pDb7FthcDj4ag/D7wAwme3YxsqxH+iw5Bg==", + "resolved": "13.9.7", + "contentHash": "UHNGeGmrVVMaQ+b3sJJWLwc84DZLgXWRYGkI4BBcGWqQllbuMM/2dJ/4Z6lGOUo267SLnH+JxPBn+eE7HlSDYQ==", "dependencies": { - "BananaCakePop.Middleware": "13.0.0", - "HotChocolate": "13.9.0", - "HotChocolate.Subscriptions.InMemory": "13.9.0", - "HotChocolate.Transport.Sockets": "13.9.0", - "HotChocolate.Types.Scalars.Upload": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0" + "BananaCakePop.Middleware": "16.0.1", + "HotChocolate": "13.9.7", + "HotChocolate.Subscriptions.InMemory": "13.9.7", + "HotChocolate.Transport.Sockets": "13.9.7", + "HotChocolate.Types.Scalars.Upload": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7" } }, "HotChocolate.Authorization": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6CPA39zObNuMUmkmQ6J3zqmalukhjCiJS/klSEDPpwTtrn9HS/3edsh/7oiKzmUh6PNVKGed0lwkSdDP+DGZDQ==", + "resolved": "13.9.7", + "contentHash": "CrAFhKQbK2L+nLe7TLjdf0iw6mLYSF/0niuDdOXB9YuIzuJ89Getrm2xWrSJwaJELWu1ksXpuOm1whPXD4/Cxw==", "dependencies": { - "HotChocolate.Execution": "13.9.0" + "HotChocolate.Execution": "13.9.7" } }, "HotChocolate.Data": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "eZI9pIipsJsqdacj55krmxx24cUTCearQ/q9wT4aa6vQ/5GwuwWJ0ZIqdcp1qPjd+BsmJixrQBbi6/OgnFXIGw==", + "resolved": "13.9.7", + "contentHash": "LDBHbB8Ix2v3kFK6GHORa7ZD5NAV0tuWzBZ2HATdqT91KKFzOkJkCcb59JYlj1sILEJ6KzLueWsCgO+NmBZVMw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types.CursorPagination": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types.CursorPagination": "13.9.7" } }, "HotChocolate.Execution": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "zO1aG5qx5lzbZu/iKR56g+zeOgCCCa5pICwxijd1qEap+7J5q0YsME9RByw8wYPH+tNsXCvDcKaeAEcashB4cg==", + "resolved": "13.9.7", + "contentHash": "y0C5ODS84VnR18ZmwqIPLvv6U/Fd2EA4inqg4gYs1nrMdKqHnCNP9i14+Ud8tREXZw/O+Jsvfw9+OylwW05Xww==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Fetching": "13.9.0", - "HotChocolate.Types": "13.9.0", - "HotChocolate.Utilities.DependencyInjection": "13.9.0", - "HotChocolate.Validation": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Fetching": "13.9.7", + "HotChocolate.Types": "13.9.7", + "HotChocolate.Utilities.DependencyInjection": "13.9.7", + "HotChocolate.Validation": "13.9.7", "Microsoft.Extensions.DependencyInjection": "8.0.0", "System.Threading.Channels": "8.0.0" } }, "HotChocolate.Execution.Abstractions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "flySLPDyTtM4051tI3mh5Ue0fGrKFDuW3w0ebWmW2qjfuF4jgQzd3pK3ZxfkxAfpxQXyPaVn/Q7fae+fYQxeCg==", + "resolved": "13.9.7", + "contentHash": "JyVN6xsxWGJdeU1RwJWsHnhYakU8z7Q003r3c/M1FwokqAYspQPDzP4QuBvmz8nPyCxSdR42eNvqVGYKZj/h1Q==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" } }, "HotChocolate.Fetching": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "pIw7VlEABejQGLRnJGnO7iPdT40AHklf0psJp5zNXrq0IX+Vq7hRRqON73nubZv5Ofhh8fV3kugqYFKvzcptoA==", + "resolved": "13.9.7", + "contentHash": "I+Ek6pdicNtZvXyvr2dCejPWn+q13gDmUzuK5L+iUP5IGfod/02Vj408hBHPIapweCYixreI0h5VDHwJm2fx2A==", "dependencies": { - "GreenDonut": "13.9.0", - "HotChocolate.Types": "13.9.0" + "GreenDonut": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Language": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "M8q0XHQm8Gtab+wKgYXfVPxScjdDE+INify5yaj6g1ZDkV3sLIeX+muu1WebrNO3DgmuAi6o3aW770Ucw7k/dw==", + "resolved": "13.9.7", + "contentHash": "rWH01lP72YQmLP0tw1RtabanCXbRZ58x/frAQtPttyMViCx6N4aGEFAS8716ANwFM/ek6Kv7fYpxj3A0N1943A==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0", - "HotChocolate.Language.Utf8": "13.9.0", - "HotChocolate.Language.Visitors": "13.9.0", - "HotChocolate.Language.Web": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7", + "HotChocolate.Language.Utf8": "13.9.7", + "HotChocolate.Language.Visitors": "13.9.7", + "HotChocolate.Language.Web": "13.9.7" } }, "HotChocolate.Language.SyntaxTree": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "+vwrQ0qOiKn/yUBHn53030hQmqj45C1g0WI8sip50CPnkgs3bAPnDInUvrR3IiHbRn5spAonO4tFPtMDdJrEMA==", + "resolved": "13.9.7", + "contentHash": "iiTGVnjh+Q07L3GQ1gQrrbQWXh/sj6vJrvlwSLRbdIR2PZ53d9xXTeWjfiqgSfl+qZwWUyyCCCcWrJwYQokpyQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "8.0.0" } }, "HotChocolate.Language.Utf8": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "IEWNYGvtwejf7+j+Xci25FaYets2UD8wkfzQ5dUCW47c1rnTAyuRdTiO8T8x6LYuZ7+SLg7UTBYgjv4ybwAUgA==", + "resolved": "13.9.7", + "contentHash": "rGSf31r6WjOi4LAaF4HFKYPV+/nT7aqsvOZ5CO/UCJEM0vDeuda++NYdkLVETyUHeWc30niwIKOVSlN9XJNVuQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Visitors": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "j6mPBkfVo2fopWYLoczXCoog4PJ+KwbHItSgHfPfI1kDBcNcy9XY4oxth3Uau1uBbfHYIFjnuVc+FrGb1f9KAQ==", + "resolved": "13.9.7", + "contentHash": "3MxWSJdbbVh1LJDef7l6oPCBFHomMxPJSot/OBS11xEeeQnChrrVDFwPWnlffmyDX4Dccugbs0eKwJEXaxCpzQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Language.Web": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "GI5ufbNVEoKygSC09owVnCvw1Ma2KzOtm1l6uen3wKshAdOKB4gmSVCjzf71pNL2Nt6cL4IHa70ClqjECmu9qg==", + "resolved": "13.9.7", + "contentHash": "FJxfPz4ESaRZj8fWgV1lPCrdAysiEGktJgkYHH4w/MioVLULdjckYocnQnCaWx2km0r0fojNGbm2k1TlqYL/7A==", "dependencies": { - "HotChocolate.Language.Utf8": "13.9.0" + "HotChocolate.Language.Utf8": "13.9.7" } }, "HotChocolate.Subscriptions": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "P3ason65NwSzkB2W9myV/pRIm4IMIWXH3RPCtpHVKx22Xw3hRJRJhjLBQZ5LCk5v3+7kKhXNBTbFNpbMyvez3Q==", + "resolved": "13.9.7", + "contentHash": "19WDXKE2bN5Pd35ebzS/zqOKSb/thnBRWCFKqLLxVvjrRaZcdj+Amc92fqTJi4XGis/6AoMf6JZovbQjWeHvoA==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Execution.Abstractions": "13.9.0" + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Execution.Abstractions": "13.9.7" } }, "HotChocolate.Subscriptions.InMemory": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "rj5U1Cd2QsjNnSNNdlSopYLtXh0kTZ1NlA1B3v02YFtj4Zu9le6QkGsl3oUljUUq46vSkkrT9ISj+e5wTCcw/Q==", + "resolved": "13.9.7", + "contentHash": "vvv8QjqPSURHTjRNyM2AuOvJI9vRBCnB8mYe3lUrGo2coBYakGb+21MX0UjreqR9kaR+611p5OM4+snASSN4Fw==", "dependencies": { - "HotChocolate.Execution.Abstractions": "13.9.0", - "HotChocolate.Subscriptions": "13.9.0", + "HotChocolate.Execution.Abstractions": "13.9.7", + "HotChocolate.Subscriptions": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" } }, "HotChocolate.Transport.Sockets": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "4hPlhS2bgqT/tYCZfPtbGtPAaedULKgTbFKkTsjigrDhJcVxBA36Gr3yGM6S3NEw2JdIgiwugYV1log9zXkEjA==", + "resolved": "13.9.7", + "contentHash": "MiyrvorBadNSJYiXdH+O0aEX1MM6BTMGRYBICcMw/Gfv1oJurMa9qXAcqwVa6fwlRZPL+UqU6PlFLjIILhPLLA==", "dependencies": { "System.IO.Pipelines": "8.0.0" } }, "HotChocolate.Types": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "VGPZePNC4sBlz/iY4x90zIRxW62MWzWNcl2yjLS3JcW+0W8KuKxh99dFLxL0WY/+Eoe8PUecmoob+FrVEvPzpg==", + "resolved": "13.9.7", + "contentHash": "zauZ28u0cjwDo02YlsF290HKvGfKIuXCljGoGRypl1vsjlX/MOcDTUiDY5/VEnVVz6QZWZyg66C/kO862QuXPQ==", "dependencies": { - "HotChocolate.Abstractions": "13.9.0", - "HotChocolate.Types.Shared": "13.9.0", - "HotChocolate.Utilities": "13.9.0", + "HotChocolate.Abstractions": "13.9.7", + "HotChocolate.Types.Shared": "13.9.7", + "HotChocolate.Utilities": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", "Microsoft.Extensions.ObjectPool": "8.0.0", "System.ComponentModel.Annotations": "5.0.0", @@ -372,74 +373,74 @@ }, "HotChocolate.Types.CursorPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2+w6tLrdjo+d/aIKyoNW1L/OH/p+FACMwGWHk1P4MwAspqaF7zjy71qTeNks+8QbRwG8uMleey/0sbr8sWpC6w==", + "resolved": "13.9.7", + "contentHash": "c1qshoAFs1h3L5hd8sSkdXTRdZPdTaolDLftmX5HX46TJvRW3diHWH7vDvfytlsxggMamHauwT4sTShYsvQGqw==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Mutations": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "NX1zLkb7t19Om5RYubmkA6yRCtBbca454rqSGKSVBYjDrsiA6+4ZDvmS9Kjbw8F+cPm3VqShenrIIgfW8bzCXQ==", + "resolved": "13.9.7", + "contentHash": "89CAbrdiZziEajLzBItunpn+Fd09iqVYKHEPlRsWY55L2wNrzcoblW5Pe2p3c22w8ewmzSSEc8TupBYlez+2Ug==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.OffsetPagination": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "LIAaSVRS6FJCssP+s4ooLajhQ1/QfES78twX4OgZFJ9/UZMxXlU3K/IWeB2aXcJNkehfIZLgoiROnouB7ATepw==", + "resolved": "13.9.7", + "contentHash": "9kxPAU748x9/wmNPzLrHqYOMOkjbTP7DPMfMmOiUGjetI2Lm6RenUVZVODU8n92luk2Ng4Fc5GgJd7a28yqJ9w==", "dependencies": { - "HotChocolate.Execution": "13.9.0", - "HotChocolate.Types": "13.9.0" + "HotChocolate.Execution": "13.9.7", + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Scalars.Upload": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "hisB6PGGgsekz3a8YJwKgvbZHED98eph9+TMPg5A500tyvrZS00fbdpjRcN+rcTKAxhJ5evzHB2Fo1m62Dyo4w==", + "resolved": "13.9.7", + "contentHash": "afuOJKMvL8f64UZmvn2mt66db9rvdWkZUDt5vBsGErAxSJst8yCO56hiaYgjkAYg2Itp9yiqtJIc/UjI22x34A==", "dependencies": { - "HotChocolate.Types": "13.9.0" + "HotChocolate.Types": "13.9.7" } }, "HotChocolate.Types.Shared": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "2lhdbXU/GltPQWO9r8qePZSzDo9ryFs8Wv0aF7aQgEq3dLvwer6OpvnZhIYmGua6bXXebA1PzBAEaaxPpLx3Wg==", + "resolved": "13.9.7", + "contentHash": "OXuZNxvpFX/clo3jYgogoAg8dp+NIphIhKffs6S6tuyJsl4/sqoo19cwNhEyF0K9cxKJYJj+oYw+hbl5XOHpRQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.9.0" + "HotChocolate.Language.SyntaxTree": "13.9.7" } }, "HotChocolate.Utilities": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "6zqwjROYxtuzAYjh31JnYKgM/MySRWEq4DHO64oSPFRJQ8NDgg7EvUU771yLt/6T7kUh+S6k25hVnmUipFtEnQ==" + "resolved": "13.9.7", + "contentHash": "Mh8K5kZZ0zRs5zXVlZDc3WqPU8I70lVSRTdhrM+4eWRZHceZ3OLgebQww2uGmAFcStzHD6b7XmQPuVxw0HRVCg==" }, "HotChocolate.Utilities.DependencyInjection": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "o1ijY8Rk0IUAo8QZYhfQ8s4/3z78JS9tyXGHzA963gkzTSJPehD4960CAmWlyC19FdE1i2KiTnYLhNOwNoL6+A==", + "resolved": "13.9.7", + "contentHash": "XlTIkwAzVshTj4p+XR7YCrGl/bwM0izwoUmKCvc1mdoIBtORbWQNixrnLQsCldhlnqP1G+CzXO2g0wNv+g8wBA==", "dependencies": { "Microsoft.Extensions.DependencyInjection": "8.0.0" } }, "HotChocolate.Validation": { "type": "Transitive", - "resolved": "13.9.0", - "contentHash": "gC7/YfOcOOmT+zV/V45CubYhK3lZI7+SmNYLGXQ1ko4cwjVRh3PzSJMAaKw3naWDcbjXbEyWwdYc0dLuoVBNEA==", + "resolved": "13.9.7", + "contentHash": "vB7wUZl6kdo97v+oi0DTXXoif4kJ+6/CAJ8zQ8WakWiyJDxYe76v0NkGgViTrVFUDUlffVa7Yl6jGv49b2TPhQ==", "dependencies": { - "HotChocolate.Types": "13.9.0", + "HotChocolate.Types": "13.9.7", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", "Microsoft.Extensions.Options": "8.0.0" } }, "HtmlSanitizer": { "type": "Transitive", - "resolved": "8.0.843", - "contentHash": "XfmHK4rFz9PPN0gcv7J7pc+MRpcni1mrnO04mwA+9/1zIHLgdOvLJeDwWnX5a+up4tioPvGreB+p+KljLJ32wg==", + "resolved": "8.0.865", + "contentHash": "jzgltCjgTMbTLVfeHYU3ocxJrqRDVdkXYYGTOKVBnpQffaRB/4Hr0R6jKxBBH8UudQSgACp8j3lsD46weyeDJg==", "dependencies": { "AngleSharp": "[0.17.1]", "AngleSharp.Css": "[0.17.0]", @@ -490,16 +491,17 @@ }, "MailKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "EaXHODUdIV5oPdWvBJGazwaEpKt1LI/H/S//EEozANYCsfOSKHntX+Skk2kW616lSQp+fkRTmSjk0CYxEuOyEA==", + "resolved": "4.7.1.1", + "contentHash": "Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==", "dependencies": { - "MimeKit": "4.5.0" + "MimeKit": "4.7.1", + "System.Formats.Asn1": "8.0.1" } }, "Microsoft.AspNetCore.SpaServices.Extensions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "2LeomoSAHbVBEffWwZS4cFLAQsPw2UK4gfNcajssV/cMM5/i61d8LwAdTcGHVmgF5e0zOz/25B06fk3iymD4VA==", + "resolved": "6.0.32", + "contentHash": "XQ7QY8Kpo31H/pVNmNuTfa/HSsGfpIA82QHHiq3J1SU3EBEDSEcdOSJRI7ODm4GmGZY/n/fWM9Blpcbf5rhfPg==", "dependencies": { "Microsoft.Extensions.FileProviders.Physical": "6.0.0" } @@ -516,12 +518,12 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "5.2.0", - "contentHash": "3alfyqRN3ELRtdvU1dGtLBRNQqprr3TJ0WrUJfMISPwg1nPUN2P3Lelah68IKWuV27Ceb7ig95hWNHFTSXfxMg==", + "resolved": "5.2.1", + "contentHash": "ojg2XWmih4ubPPtrhRqqXk0SM6wC2ZSTkNNEAlYBhMo4IsRHjLazFc0abzcZCNfw1JyWcqY7vGutWTv8ZaFD9g==", "dependencies": { - "Azure.Identity": "1.10.3", + "Azure.Identity": "1.11.3", "Microsoft.Data.SqlClient.SNI.runtime": "5.2.0", - "Microsoft.Identity.Client": "4.56.0", + "Microsoft.Identity.Client": "4.60.3", "Microsoft.IdentityModel.JsonWebTokens": "6.35.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.35.0", "Microsoft.SqlServer.Server": "1.0.0", @@ -602,8 +604,8 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "ih7lIqCUXsG4+CNNcPs67TBOe3Yd/HMdBBVP3BhvdZkJEUilhvUK69FB7ZPsiZKel08GkOh2qFXqZsWWPa/lPQ==", + "resolved": "6.0.32", + "contentHash": "zedFFk86/lHx3xePklSc5Fo4N3kWqEMSLnYbnsGc1loca/f5T0g85XGSgizPvdqZyAGtDlh1jHKk94aF0FiSpg==", "dependencies": { "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0" } @@ -646,19 +648,19 @@ }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "cZ5Tx6NtTZFzk+PWW2icApat7agQiMIFIsohsmHmz/scKRfAI/5XTa9lpZMwKowQBZm+ap0RwAJmQ2/5xoL+VQ==", + "resolved": "6.0.32", + "contentHash": "oT9/Odho4th/5aY+HztJMfRhAVR+6rZ9FqYYjRrRFDU2e6C+pBCQLSujQIjdAjuHlsUu4pNmHXoaaiaE/82pow==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization.Abstractions": "6.0.29", + "Microsoft.Extensions.Localization.Abstractions": "6.0.32", "Microsoft.Extensions.Logging.Abstractions": "6.0.4", "Microsoft.Extensions.Options": "6.0.0" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "6.0.29", - "contentHash": "4HVhh+V/7H2VMgFI8EP1kLgLpeRqm1kQOlXjHk4MHCVD5/pgWOTTbLEz9pdXymQQf/eRg1vNK8tG2MZstBHhlw==" + "resolved": "6.0.32", + "contentHash": "ZG8q0/GHhkfXa4ciGp23ax6bJBjFBMYldw8vDg3JIzBp7vYMg5+hGSmNzFMtZThyAr9ktvEQAJS7TUpEEpDT0A==" }, "Microsoft.Extensions.Logging": { "type": "Transitive", @@ -710,19 +712,19 @@ }, "Microsoft.Identity.Client": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "rr4zbidvHy9r4NvOAs5hdd964Ao2A0pAeFBJKR95u1CJAVzbd1p6tPTXUZ+5ld0cfThiVSGvz6UHwY6JjraTpA==", + "resolved": "4.60.3", + "contentHash": "jve1RzmSpBhGlqMzPva6VfRbLMLZZc1Q8WRVZf8+iEruQkBgDTJPq8OeTehcY4GGYG1j6UB1xVofVE+n4BLDdw==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.22.0" + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" } }, "Microsoft.Identity.Client.Extensions.Msal": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==", + "resolved": "4.60.3", + "contentHash": "X1Cz14/RbmlLshusE5u2zfG+5ul6ttgou19BZe5Mdw1qm6fgOI9/imBB2TIsx2UD7nkgd2+MCSzhbukZf7udeg==", "dependencies": { - "Microsoft.Identity.Client": "4.56.0", - "System.IO.FileSystem.AccessControl": "5.0.0", + "Microsoft.Identity.Client": "4.60.3", "System.Security.Cryptography.ProtectedData": "4.5.0" } }, @@ -775,8 +777,8 @@ }, "Microsoft.NETCore.Platforms": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==" + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" }, "Microsoft.NETCore.Targets": { "type": "Transitive", @@ -818,10 +820,11 @@ }, "MimeKit": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "OYn8b8b66J4mgtDzoImepiUtdkJOAVGoTj/ghzJ+az4wVixA5L5Z8GmgFhRvQ1btAIwZh/d9zvZLCALndQdz5w==", + "resolved": "4.7.1", + "contentHash": "Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==", "dependencies": { - "BouncyCastle.Cryptography": "2.3.0", + "BouncyCastle.Cryptography": "2.4.0", + "System.Formats.Asn1": "8.0.1", "System.Security.Cryptography.Pkcs": "8.0.0" } }, @@ -1011,6 +1014,15 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "I3CVkvxeqFYjIVEP59DnjbeoGNfo/+SZrCLpRz2v/g0gpCHaEMPtWSY0s9k/7jR1rAsLNg2z2u1JRB76tPjnIw==", + "dependencies": { + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, "System.CodeDom": { "type": "Transitive", "resolved": "8.0.0", @@ -1116,8 +1128,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.Globalization": { "type": "Transitive", @@ -1227,15 +1239,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", - "dependencies": { - "System.Security.AccessControl": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.IO.FileSystem.Primitives": { "type": "Transitive", "resolved": "4.3.0", @@ -1550,15 +1553,6 @@ "System.Runtime.Extensions": "4.3.0" } }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.Security.Cryptography.Algorithms": { "type": "Transitive", "resolved": "4.3.0", @@ -1716,11 +1710,6 @@ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" } }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" - }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", @@ -1853,8 +1842,8 @@ }, "Yarp.ReverseProxy": { "type": "Transitive", - "resolved": "2.0.1", - "contentHash": "op7vBwONPFeR1PYxeLw+RLqSodODDX8RWd0OinLGMVIq6yi1q9mv1j56ImuyZgiAToksiC0Dc7jbRUZ9I+jvFA==", + "resolved": "2.1.0", + "contentHash": "VgRuCBxmh5ND4VuFhvIN3AAeoxFhYkS2hNINk6AVCrOVTlpk7OwdrTXi8NHACfqfhDL+/oYCZrF9RxN+yiYnEg==", "dependencies": { "System.IO.Hashing": "7.0.0" } @@ -1862,14 +1851,14 @@ "kentico.xperience.lucene.admin": { "type": "Project", "dependencies": { - "Kentico.Xperience.Admin": "[29.0.0, )", - "Kentico.Xperience.Lucene.Core": "[6.1.0, )" + "Kentico.Xperience.Admin": "[29.3.3, )", + "Kentico.Xperience.Lucene.Core": "[8.0.0, )" } }, "kentico.xperience.lucene.core": { "type": "Project", "dependencies": { - "Kentico.Xperience.Core": "[29.0.0, )", + "Kentico.Xperience.Core": "[29.3.3, )", "Lucene.Net": "[4.8.0-beta00016, )", "Lucene.Net.Analysis.Common": "[4.8.0-beta00016, )", "Lucene.Net.Facet": "[4.8.0-beta00016, )" @@ -1877,20 +1866,20 @@ }, "Kentico.Xperience.Core": { "type": "CentralTransitive", - "requested": "[29.0.0, )", - "resolved": "29.0.0", - "contentHash": "jG0gkDLE4H7ZNEdxdyZEzPxoAMlfx24oVdPeRa8RCUriOhBtleNREInbR9kYoMWwo456EaUaf3RPngArmZdy1g==", + "requested": "[29.3.3, )", + "resolved": "29.3.3", + "contentHash": "Vr704hfDI9V737qULMy8nSEjz3xuyXxlLcUSxiMDf7c2fBKAySRn4YjYiLd6qp+6HnSm129nBuavyxWOsvzARg==", "dependencies": { "AngleSharp": "0.17.1", - "MailKit": "4.5.0", - "Microsoft.Data.SqlClient": "5.2.0", + "MailKit": "4.7.1.1", + "Microsoft.Data.SqlClient": "5.2.1", "Microsoft.Extensions.Caching.Memory": "6.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Configuration.Binder": "6.0.0", "Microsoft.Extensions.DependencyInjection": "6.0.1", "Microsoft.Extensions.FileProviders.Physical": "6.0.0", "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization": "6.0.29", + "Microsoft.Extensions.Localization": "6.0.32", "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0", "Mono.Cecil": "0.11.5", "Newtonsoft.Json": "13.0.3", From e7a0a0c6829dde65526b8ad147ad9234f89f17de Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Fri, 16 Aug 2024 21:11:19 +0200 Subject: [PATCH 02/22] feat(Lucene.Core): Mapping reusable items --- .../LuceneConfigurationModel.cs | 141 +-- .../ReusableContentOptionsProvider.cs | 68 ++ .../Indexing/DefaultLuceneClient.cs | 741 ++++++++------- ...efaultLuceneConfigurationStorageService.cs | 881 ++++++++++-------- .../Indexing/LuceneIndex.cs | 174 ++-- .../Indexing/LuceneIndexModel.cs | 101 +- ...ceneReusableContentTypeItemInfoProvider.cs | 11 + ...leContentTypeItemInfoProvider.generated.cs | 10 + ...neReusableContentTypeItemInfo.generated.cs | 134 +++ ...leContentTypeItemInfoProvider.generated.cs | 18 + .../LuceneModuleInstaller.cs | 729 ++++++++------- 11 files changed, 1718 insertions(+), 1290 deletions(-) create mode 100644 src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs create mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs create mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs create mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs create mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs diff --git a/src/Kentico.Xperience.Lucene.Admin/LuceneConfigurationModel.cs b/src/Kentico.Xperience.Lucene.Admin/LuceneConfigurationModel.cs index 3fa43e5..c2d9546 100644 --- a/src/Kentico.Xperience.Lucene.Admin/LuceneConfigurationModel.cs +++ b/src/Kentico.Xperience.Lucene.Admin/LuceneConfigurationModel.cs @@ -1,68 +1,73 @@ -using System.ComponentModel.DataAnnotations; - -using Kentico.Xperience.Admin.Base.FormAnnotations; -using Kentico.Xperience.Admin.Base.Forms; -using Kentico.Xperience.Lucene.Admin.Providers; -using Kentico.Xperience.Lucene.Core.Indexing; - -namespace Kentico.Xperience.Lucene.Admin; - -public class LuceneConfigurationModel -{ - public int Id { get; set; } - - [TextInputComponent( - Label = "Index Name", - ExplanationText = "Changing this value on an existing index without changing application code will cause the search experience to stop working.", - Order = 1)] - [Required] - [MinLength(1)] - public string IndexName { get; set; } = ""; - - [GeneralSelectorComponent(dataProviderType: typeof(LanguageOptionsProvider), Label = "Indexed Languages", Order = 2)] - public IEnumerable LanguageNames { get; set; } = Enumerable.Empty(); - - [DropDownComponent(Label = "Channel Name", DataProviderType = typeof(ChannelOptionsProvider), Order = 3)] - public string ChannelName { get; set; } = ""; - - [DropDownComponent(Label = "Indexing Strategy", DataProviderType = typeof(IndexingStrategyOptionsProvider), Order = 4)] - public string StrategyName { get; set; } = ""; - - [DropDownComponent(Label = "Lucene Analyzer", DataProviderType = typeof(AnalyzerOptionsProvider), Order = 5)] - public string AnalyzerName { get; set; } = ""; - - [TextInputComponent(Label = "Rebuild Hook")] - public string RebuildHook { get; set; } = ""; - - [LuceneIndexConfigurationComponent(Label = "Included Paths")] - public IEnumerable Paths { get; set; } = Enumerable.Empty(); - - public LuceneConfigurationModel() { } - - public LuceneConfigurationModel( - LuceneIndexModel luceneModel - ) - { - Id = luceneModel.Id; - IndexName = luceneModel.IndexName; - LanguageNames = luceneModel.LanguageNames; - ChannelName = luceneModel.ChannelName; - StrategyName = luceneModel.StrategyName; - AnalyzerName = luceneModel.AnalyzerName; - RebuildHook = luceneModel.RebuildHook; - Paths = luceneModel.Paths; - } - - public LuceneIndexModel ToLuceneModel() => - new() - { - Id = Id, - IndexName = IndexName, - LanguageNames = LanguageNames, - ChannelName = ChannelName, - AnalyzerName = AnalyzerName, - StrategyName = StrategyName, - RebuildHook = RebuildHook, - Paths = Paths - }; -} +using System.ComponentModel.DataAnnotations; + +using Kentico.Xperience.Admin.Base.FormAnnotations; +using Kentico.Xperience.Admin.Base.Forms; +using Kentico.Xperience.Lucene.Admin.Providers; +using Kentico.Xperience.Lucene.Core.Indexing; + +namespace Kentico.Xperience.Lucene.Admin; + +public class LuceneConfigurationModel +{ + public int Id { get; set; } + + [TextInputComponent( + Label = "Index Name", + ExplanationText = "Changing this value on an existing index without changing application code will cause the search experience to stop working.", + Order = 1)] + [Required] + [MinLength(1)] + public string IndexName { get; set; } = ""; + + [LuceneIndexConfigurationComponent(Label = "Included Paths", Order = 2)] + public IEnumerable Paths { get; set; } = Enumerable.Empty(); + + [GeneralSelectorComponent(dataProviderType: typeof(ReusableContentOptionsProvider), Label = "Included Reusable Content Types", Order = 3)] + public IEnumerable ReusableContentTypeNames { get; set; } = Enumerable.Empty(); + + [GeneralSelectorComponent(dataProviderType: typeof(LanguageOptionsProvider), Label = "Indexed Languages", Order = 4)] + public IEnumerable LanguageNames { get; set; } = Enumerable.Empty(); + + [DropDownComponent(Label = "Channel Name", DataProviderType = typeof(ChannelOptionsProvider), Order = 5)] + public string ChannelName { get; set; } = ""; + + [DropDownComponent(Label = "Indexing Strategy", DataProviderType = typeof(IndexingStrategyOptionsProvider), Order = 6)] + public string StrategyName { get; set; } = ""; + + [DropDownComponent(Label = "Lucene Analyzer", DataProviderType = typeof(AnalyzerOptionsProvider), Order = 7)] + public string AnalyzerName { get; set; } = ""; + + [TextInputComponent(Label = "Rebuild Hook", Order = 8)] + public string RebuildHook { get; set; } = ""; + + public LuceneConfigurationModel() { } + + public LuceneConfigurationModel( + LuceneIndexModel luceneModel + ) + { + Id = luceneModel.Id; + IndexName = luceneModel.IndexName; + LanguageNames = luceneModel.LanguageNames; + ChannelName = luceneModel.ChannelName; + StrategyName = luceneModel.StrategyName; + AnalyzerName = luceneModel.AnalyzerName; + RebuildHook = luceneModel.RebuildHook; + Paths = luceneModel.Paths; + ReusableContentTypeNames = luceneModel.ReusableContentTypeNames; + } + + public LuceneIndexModel ToLuceneModel() => + new() + { + Id = Id, + IndexName = IndexName, + LanguageNames = LanguageNames, + ChannelName = ChannelName, + AnalyzerName = AnalyzerName, + StrategyName = StrategyName, + RebuildHook = RebuildHook, + Paths = Paths, + ReusableContentTypeNames = ReusableContentTypeNames + }; +} diff --git a/src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs b/src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs new file mode 100644 index 0000000..ca0e9d5 --- /dev/null +++ b/src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs @@ -0,0 +1,68 @@ +using CMS.DataEngine; + +using Kentico.Xperience.Admin.Base.FormAnnotations; +using Kentico.Xperience.Admin.Base.Forms; + +namespace Kentico.Xperience.Lucene.Admin.Providers; +internal class ReusableContentOptionsProvider : IGeneralSelectorDataProvider +{ + public async Task> GetItemsAsync(string searchTerm, int pageIndex, CancellationToken cancellationToken) + { + // Prepares a query for retrieving objects + var itemQuery = DataClassInfoProvider.ProviderObject + .Get() + .WhereEquals(nameof(DataClassInfo.ClassContentTypeType), "Reusable"); + // If a search term is entered, only loads data whose first name starts with the term + if (!string.IsNullOrEmpty(searchTerm)) + { + itemQuery.WhereStartsWith(nameof(DataClassInfo.ClassDisplayName), searchTerm); + } + + // Ensures paging of items + itemQuery.Page(pageIndex, 20); + + // Retrieves the users and converts them into ObjectSelectorListItem options + var items = (await itemQuery.GetEnumerableTypedResultAsync()).Select(x => new ObjectSelectorListItem() + { + Value = x.ClassName, + Text = x.ClassDisplayName, + IsValid = true + }); + + return new PagedSelectListItems() + { + NextPageAvailable = itemQuery.NextPageAvailable, + Items = items + }; + } + + // Returns ObjectSelectorListItem options for all item values that are currently selected + public async Task>> GetSelectedItemsAsync(IEnumerable selectedValues, CancellationToken cancellationToken) + { + var itemQuery = DataClassInfoProvider.ProviderObject + .Get() + .WhereEquals(nameof(DataClassInfo.ClassContentTypeType), "Reusable"); + + var items = (await itemQuery.GetEnumerableTypedResultAsync()).Select(x => new ObjectSelectorListItem() + { + Value = x.ClassName, + Text = x.ClassDisplayName, + IsValid = true + }); + + var selectedItems = new List>(); + if (selectedValues is not null) + { + foreach (string? value in selectedValues) + { + var item = items.FirstOrDefault(x => x.Value == value); + + if (item != default) + { + selectedItems.Add(item); + } + } + } + return selectedItems; + } +} diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs index 11e5b80..e8b982b 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs @@ -1,349 +1,392 @@ -using CMS.ContentEngine; -using CMS.Core; -using CMS.DataEngine; -using CMS.Helpers; -using CMS.Helpers.Caching.Abstractions; -using CMS.Websites; - -using Kentico.Xperience.Lucene.Core.Search; - -using Lucene.Net.Documents; -using Lucene.Net.Index; -using Lucene.Net.Search; - -using Microsoft.Extensions.DependencyInjection; - -namespace Kentico.Xperience.Lucene.Core.Indexing; - -/// -/// Default implementation of . -/// -internal class DefaultLuceneClient : ILuceneClient -{ - private readonly ILuceneIndexService luceneIndexService; - private readonly ILuceneSearchService luceneSearchService; - private readonly IContentQueryExecutor executor; - private readonly IServiceProvider serviceProvider; - private readonly IInfoProvider languageProvider; - private readonly IInfoProvider channelProvider; - private readonly IConversionService conversionService; - private readonly IProgressiveCache cache; - private readonly IEventLogService log; - private readonly ICacheAccessor cacheAccessor; - private readonly ILuceneIndexManager indexManager; - - internal const string CACHEKEY_STATISTICS = "Lucene|ListIndices"; - - public DefaultLuceneClient( - ICacheAccessor cacheAccessor, - ILuceneIndexService luceneIndexService, - ILuceneSearchService luceneSearchService, - IContentQueryExecutor executor, - IServiceProvider serviceProvider, - IInfoProvider languageProvider, - IInfoProvider channelProvider, - IConversionService conversionService, - IProgressiveCache cache, - IEventLogService log, - ILuceneIndexManager indexManager - ) - { - this.cacheAccessor = cacheAccessor; - this.luceneIndexService = luceneIndexService; - this.luceneSearchService = luceneSearchService; - this.executor = executor; - this.serviceProvider = serviceProvider; - this.languageProvider = languageProvider; - this.channelProvider = channelProvider; - this.conversionService = conversionService; - this.cache = cache; - this.log = log; - this.indexManager = indexManager; - this.indexManager = indexManager; - } - - /// - public Task DeleteRecords(IEnumerable itemGuids, string indexName) - { - if (string.IsNullOrEmpty(indexName)) - { - throw new ArgumentNullException(nameof(indexName)); - } - - if (itemGuids == null || !itemGuids.Any()) - { - return Task.FromResult(0); - } - - return DeleteRecordsInternal(itemGuids, indexName); - } - - - /// - public Task> GetStatistics(CancellationToken cancellationToken) - { - var stats = indexManager.GetAllIndices().Select(i => - { - var statistics = luceneSearchService.UseSearcher(i, s => new LuceneIndexStatisticsModel() - { - Name = i.IndexName, - Entries = s.IndexReader.NumDocs - }); - - var dir = new DirectoryInfo(i.StorageContext.GetPublishedIndex().Path); - statistics.UpdatedAt = dir.LastWriteTime; - return statistics; - }).ToList(); - - return Task.FromResult>(stats); - } - - /// - public Task Rebuild(string indexName, CancellationToken? cancellationToken) - { - if (string.IsNullOrEmpty(indexName)) - { - throw new ArgumentNullException(nameof(indexName)); - } - - var luceneIndex = indexManager.GetRequiredIndex(indexName); - return RebuildInternal(luceneIndex, cancellationToken); - } - - - /// - public Task UpsertRecords(IEnumerable documents, string indexName, CancellationToken cancellationToken) - { - if (string.IsNullOrEmpty(indexName)) - { - throw new ArgumentNullException(nameof(indexName)); - } - - if (documents == null || !documents.Any()) - { - return Task.FromResult(0); - } - - return UpsertRecordsInternal(documents, indexName); - } - - private Task DeleteRecordsInternal(IEnumerable itemGuids, string indexName) - { - var index = indexManager.GetIndex(indexName); - if (index != null) - { - luceneIndexService.UseWriter(index, (writer) => - { - var booleanQuery = new BooleanQuery(); - foreach (string guid in itemGuids) - { - var termQuery = new TermQuery(new Term(nameof(IIndexEventItemModel.ItemGuid), guid)); - booleanQuery.Add(termQuery, Occur.SHOULD); // Match any of the object IDs - } - writer.DeleteDocuments(booleanQuery); - return "OK"; - }, index.StorageContext.GetLastGeneration(true)); - } - return Task.FromResult(0); - } - - private async Task RebuildInternal(LuceneIndex luceneIndex, CancellationToken? cancellationToken) - { - // Clear statistics cache so listing displays updated data after rebuild - cacheAccessor.Remove(CACHEKEY_STATISTICS); - - luceneIndexService.ResetIndex(luceneIndex); - - var indexedItems = new List(); - foreach (var includedPathAttribute in luceneIndex.IncludedPaths) - { - var pathMatch = - includedPathAttribute.AliasPath.EndsWith("/%", StringComparison.OrdinalIgnoreCase) - ? PathMatch.Children(includedPathAttribute.AliasPath[..^2]) - : PathMatch.Single(includedPathAttribute.AliasPath); - - foreach (string language in luceneIndex.LanguageNames) - { - var queryBuilder = new ContentItemQueryBuilder(); - - if (includedPathAttribute.ContentTypes != null && includedPathAttribute.ContentTypes.Count > 0) - { - foreach (var contentType in includedPathAttribute.ContentTypes) - { - queryBuilder.ForContentType(contentType.ContentTypeName, config => config.ForWebsite(luceneIndex.WebSiteChannelName, includeUrlPath: true, pathMatch: pathMatch)); - } - } - queryBuilder.InLanguage(language); - - var webpages = await executor.GetWebPageResult(queryBuilder, container => container, cancellationToken: cancellationToken ?? default); - - foreach (var page in webpages) - { - var item = await MapToEventItem(page); - indexedItems.Add(item); - } - } - } - - log.LogInformation( - "Kentico.Xperience.Lucene", - "INDEX_REBUILD", - $"Rebuilding index [{luceneIndex.IndexName}]. {indexedItems.Count} web page items queued for re-indexing" - ); - - indexedItems.ForEach(item => LuceneQueueWorker.EnqueueLuceneQueueItem(new LuceneQueueItem(item, LuceneTaskType.PUBLISH_INDEX, luceneIndex.IndexName))); - } - - private async Task MapToEventItem(IWebPageContentQueryDataContainer content) - { - var languages = await GetAllLanguages(); - - string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? ""; - - var websiteChannels = await GetAllWebsiteChannels(); - - string channelName = websiteChannels.FirstOrDefault(c => c.WebsiteChannelID == content.WebPageItemWebsiteChannelID).ChannelName ?? ""; - - var item = new IndexEventWebPageItemModel( - content.WebPageItemID, - content.WebPageItemGUID, - languageName, - content.ContentTypeName, - content.WebPageItemName, - content.ContentItemIsSecured, - content.ContentItemContentTypeID, - content.ContentItemCommonDataContentLanguageID, - channelName, - content.WebPageItemTreePath, - content.WebPageItemOrder); - - return item; - } - - private Task UpsertRecordsInternal(IEnumerable documents, string indexName) - { - var index = indexManager.GetIndex(indexName); - if (index != null) - { - var strategy = serviceProvider.GetRequiredStrategy(index); - // indexing facet requires separate index for toxonomy - if (strategy.FacetsConfigFactory() is { } facetsConfig) - { - int result = luceneIndexService.UseIndexAndTaxonomyWriter(index, (writer, taxonomyWriter) => - { - int count = 0; - foreach (var document in documents) - { - // for now all changes are creates, update to be done later - // delete old document, there is no upsert nor update in Lucene - - string? id = document.Get(nameof(IIndexEventItemModel.ItemGuid)); - string? language = document.Get(nameof(IIndexEventItemModel.LanguageName)); - if (id is not null && language is not null) - { - // for now all changes are creates, update to be done later - // delete old document, there is no upsert nor update in Lucene - var multiTermQuery = new BooleanQuery - { - { new TermQuery(new Term(nameof(IIndexEventItemModel.ItemGuid), id)), Occur.MUST }, - { new TermQuery(new Term(nameof(IIndexEventItemModel.LanguageName), language)), Occur.MUST } - }; - - writer.DeleteDocuments(multiTermQuery); - } - - // add new one -#pragma warning disable S2589 // Boolean expressions should not be gratuitous - if (document is not null) - { - writer.AddDocument(facetsConfig.Build(taxonomyWriter, document)); - count++; - } -#pragma warning restore S2589 // Boolean expressions should not be gratuitous -#pragma warning disable S2583 // Conditionally executed code should be reachable - if (count % 1000 == 0) - { - taxonomyWriter.Commit(); - } -#pragma warning restore S2583 // Conditionally executed code should be reachable - } - taxonomyWriter.Commit(); - - return count; - }, index.StorageContext.GetLastGeneration(true)); - - return Task.FromResult(result); - } - else // no facets, only index writer opened - { - int result = luceneIndexService.UseWriter(index, (writer) => - { - int count = 0; - foreach (var document in documents) - { - string? id = document.Get(nameof(IIndexEventItemModel.ItemGuid)); - string? language = document.Get(nameof(IIndexEventItemModel.LanguageName)); - if (id is not null && language is not null) - { - // for now all changes are creates, update to be done later - // delete old document, there is no upsert nor update in Lucene - var multiTermQuery = new BooleanQuery - { - { new TermQuery(new Term(nameof(IIndexEventItemModel.ItemGuid), id)), Occur.MUST }, - { new TermQuery(new Term(nameof(IIndexEventItemModel.LanguageName), language)), Occur.MUST } - }; - - writer.DeleteDocuments(multiTermQuery); - } - // add new one -#pragma warning disable S2589 // Boolean expressions should not be gratuitous - if (document is not null) - { - writer.AddDocument(document); - count++; - } -#pragma warning restore S2589 // Boolean expressions should not be gratuitous - } - return count; - }, index.StorageContext.GetLastGeneration(true)); - - return Task.FromResult(result); - } - } - return Task.FromResult(0); - } - - private Task> GetAllLanguages() => - cache.LoadAsync(async cs => - { - var results = await languageProvider.Get().GetEnumerableTypedResultAsync(); - - cs.GetCacheDependency = () => CacheHelper.GetCacheDependency($"{ContentLanguageInfo.OBJECT_TYPE}|all"); - - return results; - }, new CacheSettings(5, nameof(DefaultLuceneClient), nameof(GetAllLanguages))); - - private Task> GetAllWebsiteChannels() => - cache.LoadAsync(async cs => - { - - var results = await channelProvider.Get() - .Source(s => s.Join(nameof(ChannelInfo.ChannelID), nameof(WebsiteChannelInfo.WebsiteChannelChannelID))) - .Columns(nameof(WebsiteChannelInfo.WebsiteChannelID), nameof(ChannelInfo.ChannelName)) - .GetDataContainerResultAsync(); - - cs.GetCacheDependency = () => CacheHelper.GetCacheDependency(new[] { $"{ChannelInfo.OBJECT_TYPE}|all", $"{WebsiteChannelInfo.OBJECT_TYPE}|all" }); - - var items = new List<(int WebsiteChannelID, string ChannelName)>(); - - foreach (var item in results) - { - if (item.TryGetValue(nameof(WebsiteChannelInfo.WebsiteChannelID), out object channelID) && item.TryGetValue(nameof(ChannelInfo.ChannelName), out object channelName)) - { - items.Add(new(conversionService.GetInteger(channelID, 0), conversionService.GetString(channelName, ""))); - } - } - - return items.AsEnumerable(); - }, new CacheSettings(5, nameof(DefaultLuceneClient), nameof(GetAllWebsiteChannels))); -} +using CMS.ContentEngine; +using CMS.Core; +using CMS.DataEngine; +using CMS.Helpers; +using CMS.Helpers.Caching.Abstractions; +using CMS.Websites; + +using Kentico.Xperience.Lucene.Core.Search; + +using Lucene.Net.Documents; +using Lucene.Net.Index; +using Lucene.Net.Search; + +using Microsoft.Extensions.DependencyInjection; + +namespace Kentico.Xperience.Lucene.Core.Indexing; + +/// +/// Default implementation of . +/// +internal class DefaultLuceneClient : ILuceneClient +{ + private readonly ILuceneIndexService luceneIndexService; + private readonly ILuceneSearchService luceneSearchService; + private readonly IContentQueryExecutor executor; + private readonly IServiceProvider serviceProvider; + private readonly IInfoProvider languageProvider; + private readonly IInfoProvider channelProvider; + private readonly IConversionService conversionService; + private readonly IProgressiveCache cache; + private readonly IEventLogService log; + private readonly ICacheAccessor cacheAccessor; + private readonly ILuceneIndexManager indexManager; + + internal const string CACHEKEY_STATISTICS = "Lucene|ListIndices"; + + public DefaultLuceneClient( + ICacheAccessor cacheAccessor, + ILuceneIndexService luceneIndexService, + ILuceneSearchService luceneSearchService, + IContentQueryExecutor executor, + IServiceProvider serviceProvider, + IInfoProvider languageProvider, + IInfoProvider channelProvider, + IConversionService conversionService, + IProgressiveCache cache, + IEventLogService log, + ILuceneIndexManager indexManager + ) + { + this.cacheAccessor = cacheAccessor; + this.luceneIndexService = luceneIndexService; + this.luceneSearchService = luceneSearchService; + this.executor = executor; + this.serviceProvider = serviceProvider; + this.languageProvider = languageProvider; + this.channelProvider = channelProvider; + this.conversionService = conversionService; + this.cache = cache; + this.log = log; + this.indexManager = indexManager; + this.indexManager = indexManager; + } + + /// + public Task DeleteRecords(IEnumerable itemGuids, string indexName) + { + if (string.IsNullOrEmpty(indexName)) + { + throw new ArgumentNullException(nameof(indexName)); + } + + if (itemGuids == null || !itemGuids.Any()) + { + return Task.FromResult(0); + } + + return DeleteRecordsInternal(itemGuids, indexName); + } + + + /// + public Task> GetStatistics(CancellationToken cancellationToken) + { + var stats = indexManager.GetAllIndices().Select(i => + { + var statistics = luceneSearchService.UseSearcher(i, s => new LuceneIndexStatisticsModel() + { + Name = i.IndexName, + Entries = s.IndexReader.NumDocs + }); + + var dir = new DirectoryInfo(i.StorageContext.GetPublishedIndex().Path); + statistics.UpdatedAt = dir.LastWriteTime; + return statistics; + }).ToList(); + + return Task.FromResult>(stats); + } + + /// + public Task Rebuild(string indexName, CancellationToken? cancellationToken) + { + if (string.IsNullOrEmpty(indexName)) + { + throw new ArgumentNullException(nameof(indexName)); + } + + var luceneIndex = indexManager.GetRequiredIndex(indexName); + return RebuildInternal(luceneIndex, cancellationToken); + } + + + /// + public Task UpsertRecords(IEnumerable documents, string indexName, CancellationToken cancellationToken) + { + if (string.IsNullOrEmpty(indexName)) + { + throw new ArgumentNullException(nameof(indexName)); + } + + if (documents == null || !documents.Any()) + { + return Task.FromResult(0); + } + + return UpsertRecordsInternal(documents, indexName); + } + + private Task DeleteRecordsInternal(IEnumerable itemGuids, string indexName) + { + var index = indexManager.GetIndex(indexName); + if (index != null) + { + luceneIndexService.UseWriter(index, (writer) => + { + var booleanQuery = new BooleanQuery(); + foreach (string guid in itemGuids) + { + var termQuery = new TermQuery(new Term(nameof(IIndexEventItemModel.ItemGuid), guid)); + booleanQuery.Add(termQuery, Occur.SHOULD); // Match any of the object IDs + } + writer.DeleteDocuments(booleanQuery); + return "OK"; + }, index.StorageContext.GetLastGeneration(true)); + } + return Task.FromResult(0); + } + + private async Task RebuildInternal(LuceneIndex luceneIndex, CancellationToken? cancellationToken) + { + // Clear statistics cache so listing displays updated data after rebuild + cacheAccessor.Remove(CACHEKEY_STATISTICS); + + luceneIndexService.ResetIndex(luceneIndex); + + var indexedItems = new List(); + foreach (var includedPathAttribute in luceneIndex.IncludedPaths) + { + var pathMatch = + includedPathAttribute.AliasPath.EndsWith("/%", StringComparison.OrdinalIgnoreCase) + ? PathMatch.Children(includedPathAttribute.AliasPath[..^2]) + : PathMatch.Single(includedPathAttribute.AliasPath); + + foreach (string language in luceneIndex.LanguageNames) + { + var queryBuilder = new ContentItemQueryBuilder(); + + if (includedPathAttribute.ContentTypes != null && includedPathAttribute.ContentTypes.Count > 0) + { + foreach (var contentType in includedPathAttribute.ContentTypes) + { + queryBuilder.ForContentType(contentType.ContentTypeName, config => config.ForWebsite(luceneIndex.WebSiteChannelName, includeUrlPath: true, pathMatch: pathMatch)); + } + } + queryBuilder.InLanguage(language); + + var webpages = await executor.GetWebPageResult(queryBuilder, container => container, cancellationToken: cancellationToken ?? default); + + foreach (var page in webpages) + { + var item = await MapToEventItem(page); + indexedItems.Add(item); + } + } + } + + foreach (string language in luceneIndex.LanguageNames) + { + var queryBuilder = new ContentItemQueryBuilder(); + + if (luceneIndex.IncludedReusableContentTypes != null && luceneIndex.IncludedReusableContentTypes.Count > 0) + { + foreach (string reusableContentType in luceneIndex.IncludedReusableContentTypes) + { + queryBuilder.ForContentType(reusableContentType); + } + } + queryBuilder.InLanguage(language); + + var reusableItems = await executor.GetResult(queryBuilder, result => result, cancellationToken: cancellationToken ?? default); + + foreach (var reusableItem in reusableItems) + { + var item = await MapToEventReusableItem(reusableItem); + indexedItems.Add(item); + } + } + + log.LogInformation( + "Kentico.Xperience.Lucene", + "INDEX_REBUILD", + $"Rebuilding index [{luceneIndex.IndexName}]. {indexedItems.Count} web page items queued for re-indexing" + ); + + indexedItems.ForEach(item => LuceneQueueWorker.EnqueueLuceneQueueItem(new LuceneQueueItem(item, LuceneTaskType.PUBLISH_INDEX, luceneIndex.IndexName))); + } + + private async Task MapToEventItem(IWebPageContentQueryDataContainer content) + { + var languages = await GetAllLanguages(); + + string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? ""; + + var websiteChannels = await GetAllWebsiteChannels(); + + string channelName = websiteChannels.FirstOrDefault(c => c.WebsiteChannelID == content.WebPageItemWebsiteChannelID).ChannelName ?? ""; + + var item = new IndexEventWebPageItemModel( + content.WebPageItemID, + content.WebPageItemGUID, + languageName, + content.ContentTypeName, + content.WebPageItemName, + content.ContentItemIsSecured, + content.ContentItemContentTypeID, + content.ContentItemCommonDataContentLanguageID, + channelName, + content.WebPageItemTreePath, + content.WebPageItemOrder); + + return item; + } + + private async Task MapToEventReusableItem(IContentQueryDataContainer content) + { + var languages = await GetAllLanguages(); + + string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? ""; + + var websiteChannels = await GetAllWebsiteChannels(); + + var item = new IndexEventReusableItemModel( + content.ContentItemID, + content.ContentItemGUID, + languageName, + content.ContentTypeName, + content.ContentItemName, + content.ContentItemIsSecured, + content.ContentItemContentTypeID, + content.ContentItemCommonDataContentLanguageID); + + return item; + } + + private Task UpsertRecordsInternal(IEnumerable documents, string indexName) + { + var index = indexManager.GetIndex(indexName); + if (index != null) + { + var strategy = serviceProvider.GetRequiredStrategy(index); + // indexing facet requires separate index for toxonomy + if (strategy.FacetsConfigFactory() is { } facetsConfig) + { + int result = luceneIndexService.UseIndexAndTaxonomyWriter(index, (writer, taxonomyWriter) => + { + int count = 0; + foreach (var document in documents) + { + // for now all changes are creates, update to be done later + // delete old document, there is no upsert nor update in Lucene + + string? id = document.Get(nameof(IIndexEventItemModel.ItemGuid)); + string? language = document.Get(nameof(IIndexEventItemModel.LanguageName)); + if (id is not null && language is not null) + { + // for now all changes are creates, update to be done later + // delete old document, there is no upsert nor update in Lucene + var multiTermQuery = new BooleanQuery + { + { new TermQuery(new Term(nameof(IIndexEventItemModel.ItemGuid), id)), Occur.MUST }, + { new TermQuery(new Term(nameof(IIndexEventItemModel.LanguageName), language)), Occur.MUST } + }; + + writer.DeleteDocuments(multiTermQuery); + } + + // add new one +#pragma warning disable S2589 // Boolean expressions should not be gratuitous + if (document is not null) + { + writer.AddDocument(facetsConfig.Build(taxonomyWriter, document)); + count++; + } +#pragma warning restore S2589 // Boolean expressions should not be gratuitous +#pragma warning disable S2583 // Conditionally executed code should be reachable + if (count % 1000 == 0) + { + taxonomyWriter.Commit(); + } +#pragma warning restore S2583 // Conditionally executed code should be reachable + } + taxonomyWriter.Commit(); + + return count; + }, index.StorageContext.GetLastGeneration(true)); + + return Task.FromResult(result); + } + else // no facets, only index writer opened + { + int result = luceneIndexService.UseWriter(index, (writer) => + { + int count = 0; + foreach (var document in documents) + { + string? id = document.Get(nameof(IIndexEventItemModel.ItemGuid)); + string? language = document.Get(nameof(IIndexEventItemModel.LanguageName)); + if (id is not null && language is not null) + { + // for now all changes are creates, update to be done later + // delete old document, there is no upsert nor update in Lucene + var multiTermQuery = new BooleanQuery + { + { new TermQuery(new Term(nameof(IIndexEventItemModel.ItemGuid), id)), Occur.MUST }, + { new TermQuery(new Term(nameof(IIndexEventItemModel.LanguageName), language)), Occur.MUST } + }; + + writer.DeleteDocuments(multiTermQuery); + } + // add new one +#pragma warning disable S2589 // Boolean expressions should not be gratuitous + if (document is not null) + { + writer.AddDocument(document); + count++; + } +#pragma warning restore S2589 // Boolean expressions should not be gratuitous + } + return count; + }, index.StorageContext.GetLastGeneration(true)); + + return Task.FromResult(result); + } + } + return Task.FromResult(0); + } + + private Task> GetAllLanguages() => + cache.LoadAsync(async cs => + { + var results = await languageProvider.Get().GetEnumerableTypedResultAsync(); + + cs.GetCacheDependency = () => CacheHelper.GetCacheDependency($"{ContentLanguageInfo.OBJECT_TYPE}|all"); + + return results; + }, new CacheSettings(5, nameof(DefaultLuceneClient), nameof(GetAllLanguages))); + + private Task> GetAllWebsiteChannels() => + cache.LoadAsync(async cs => + { + + var results = await channelProvider.Get() + .Source(s => s.Join(nameof(ChannelInfo.ChannelID), nameof(WebsiteChannelInfo.WebsiteChannelChannelID))) + .Columns(nameof(WebsiteChannelInfo.WebsiteChannelID), nameof(ChannelInfo.ChannelName)) + .GetDataContainerResultAsync(); + + cs.GetCacheDependency = () => CacheHelper.GetCacheDependency(new[] { $"{ChannelInfo.OBJECT_TYPE}|all", $"{WebsiteChannelInfo.OBJECT_TYPE}|all" }); + + var items = new List<(int WebsiteChannelID, string ChannelName)>(); + + foreach (var item in results) + { + if (item.TryGetValue(nameof(WebsiteChannelInfo.WebsiteChannelID), out object channelID) && item.TryGetValue(nameof(ChannelInfo.ChannelName), out object channelName)) + { + items.Add(new(conversionService.GetInteger(channelID, 0), conversionService.GetString(channelName, ""))); + } + } + + return items.AsEnumerable(); + }, new CacheSettings(5, nameof(DefaultLuceneClient), nameof(GetAllWebsiteChannels))); +} diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs index 5fd6b5f..f41ed80 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs @@ -1,407 +1,474 @@ -using System.Text; - -using CMS.Base; -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core.Indexing; - -internal class DefaultLuceneConfigurationStorageService : ILuceneConfigurationStorageService -{ - private readonly ILuceneIndexItemInfoProvider indexProvider; - private readonly ILuceneIncludedPathItemInfoProvider pathProvider; - private readonly ILuceneContentTypeItemInfoProvider contentTypeProvider; - private readonly ILuceneIndexLanguageItemInfoProvider languageProvider; - - public DefaultLuceneConfigurationStorageService( - ILuceneIndexItemInfoProvider indexProvider, - ILuceneIncludedPathItemInfoProvider pathProvider, - ILuceneContentTypeItemInfoProvider contentTypeProvider, - ILuceneIndexLanguageItemInfoProvider languageProvider - ) - { - this.indexProvider = indexProvider; - this.pathProvider = pathProvider; - this.contentTypeProvider = contentTypeProvider; - this.languageProvider = languageProvider; - } - - public bool TryCreateIndex(LuceneIndexModel configuration) - { - var existingIndex = indexProvider.Get() - .WhereEquals(nameof(LuceneIndexItemInfo.LuceneIndexItemIndexName), configuration.IndexName) - .TopN(1) - .FirstOrDefault(); - - if (existingIndex is not null) - { - return false; - } - - var newInfo = new LuceneIndexItemInfo() - { - LuceneIndexItemIndexName = configuration.IndexName ?? "", - LuceneIndexItemChannelName = configuration.ChannelName ?? "", - LuceneIndexItemStrategyName = configuration.StrategyName ?? "", - LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? "", - LuceneIndexItemRebuildHook = configuration.RebuildHook ?? "" - }; - - indexProvider.Set(newInfo); - - configuration.Id = newInfo.LuceneIndexItemId; - - if (configuration.LanguageNames is not null) - { - foreach (string? language in configuration.LanguageNames) - { - var languageInfo = new LuceneIndexLanguageItemInfo() - { - LuceneIndexLanguageItemName = language, - LuceneIndexLanguageItemIndexItemId = newInfo.LuceneIndexItemId - }; - - languageInfo.Insert(); - } - } - - if (configuration.Paths is not null) - { - foreach (var path in configuration.Paths) - { - var pathInfo = new LuceneIncludedPathItemInfo() - { - LuceneIncludedPathItemAliasPath = path.AliasPath, - LuceneIncludedPathItemIndexItemId = newInfo.LuceneIndexItemId - }; - pathProvider.Set(pathInfo); - - if (path.ContentTypes is not null) - { - foreach (var contentType in path.ContentTypes) - { - var contentInfo = new LuceneContentTypeItemInfo() - { - LuceneContentTypeItemContentTypeName = contentType.ContentTypeName, - LuceneContentTypeItemIncludedPathItemId = pathInfo.LuceneIncludedPathItemId, - LuceneContentTypeItemIndexItemId = newInfo.LuceneIndexItemId - }; - contentInfo.Insert(); - } - } - } - } - - return true; - } - - - public async Task GetIndexDataOrNullAsync(int indexId) - { - var indexInfo = indexProvider.Get().WithID(indexId).FirstOrDefault(); - if (indexInfo == default) - { - return default; - } - - var paths = pathProvider.Get().WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); - - var contentTypes = await GetLuceneContentTypesAsync(); - - var languages = languageProvider.Get().WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); - - return new LuceneIndexModel(indexInfo, languages, paths, contentTypes); - } - - - public async Task GetIndexDataOrNullAsync(string indexName) - { - var indexInfo = indexProvider.Get().WhereEquals(nameof(LuceneIndexItemInfo.LuceneIndexItemIndexName), indexName).FirstOrDefault(); - if (indexInfo == default) - { - return default; - } - - var paths = pathProvider.Get().WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); - - var contentTypes = await GetLuceneContentTypesAsync(); - - var languages = languageProvider.Get().WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); - - return new LuceneIndexModel(indexInfo, languages, paths, contentTypes); - } - - - public List GetExistingIndexNames() => indexProvider.Get().Select(x => x.LuceneIndexItemIndexName).ToList(); - - - public List GetIndexIds() => indexProvider.Get().Select(x => x.LuceneIndexItemId).ToList(); - - - public async Task> GetAllIndexDataAsync() - { - var indexInfos = indexProvider.Get().GetEnumerableTypedResult().ToList(); - if (indexInfos.Count == 0) - { - return []; - } - - var paths = pathProvider.Get().ToList(); - - var contentTypes = await GetLuceneContentTypesAsync(); - - var languages = languageProvider.Get().ToList(); - - return indexInfos.Select(index => new LuceneIndexModel(index, languages, paths, contentTypes)); - } - - - public async Task TryEditIndexAsync(LuceneIndexModel configuration) - { - configuration.IndexName = RemoveWhitespacesUsingStringBuilder(configuration.IndexName ?? ""); - - var indexInfo = indexProvider.Get() - .WhereEquals(nameof(LuceneIndexItemInfo.LuceneIndexItemId), configuration.Id) - .TopN(1) - .FirstOrDefault(); - - if (indexInfo is null) - { - return false; - } - - indexInfo.LuceneIndexItemRebuildHook = configuration.RebuildHook ?? ""; - indexInfo.LuceneIndexItemStrategyName = configuration.StrategyName ?? ""; - indexInfo.LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? ""; - indexInfo.LuceneIndexItemChannelName = configuration.ChannelName ?? ""; - indexInfo.LuceneIndexItemIndexName = configuration.IndexName ?? ""; - - indexProvider.Set(indexInfo); - - RemoveUnusedIndexLanguages(configuration); - await SetNewIndexLanguagesAsync(configuration, indexInfo); - - await RemoveUnusedIndexPathsAsync(configuration); - var existingPaths = await GetExistingIndexPathsAsync(configuration); - SetNewIndexPaths(configuration, existingPaths, indexInfo); - UpdateEditedIndexPaths(configuration, existingPaths); - - var existingContentTypes = await GetExistingIndexContentTypesAsync(configuration); - RemoveUnusedIndexContentTypesFromEditedPaths(existingContentTypes, configuration); - SetNewIndexContentTypes(configuration, indexInfo, existingPaths, existingContentTypes); - - return true; - } - - - public bool TryDeleteIndex(int id) - { - indexProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexItemInfo.LuceneIndexItemId)} = {id}")); - pathProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId)} = {id}")); - languageProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId)} = {id}")); - contentTypeProvider.BulkDelete(new WhereCondition($"{nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIndexItemId)} = {id}")); - - return true; - } - - - public bool TryDeleteIndex(LuceneIndexModel configuration) - { - indexProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexItemInfo.LuceneIndexItemId)} = {configuration.Id}")); - pathProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId)} = {configuration.Id}")); - languageProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId)} = {configuration.Id}")); - contentTypeProvider.BulkDelete(new WhereCondition($"{nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIndexItemId)} = {configuration.Id}")); - - return true; - } - - - private async Task> GetLuceneContentTypesAsync() - => await contentTypeProvider - .Get().Source(x => - x.InnerJoin( - nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName), - nameof(DataClassInfo.ClassName)) - ) - .Columns(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName), - nameof(DataClassInfo.ClassDisplayName), - nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId)) - .GetEnumerableTypedResultAsync(x => - { - var dataContainer = new DataRecordContainer(x); - return new LuceneIndexContentType( - (string)dataContainer[nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName)], - (string)dataContainer[nameof(DataClassInfo.ClassDisplayName)], - (int)dataContainer[nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId)]); - }); - - - private void RemoveUnusedIndexLanguages(LuceneIndexModel configuration) - { - var removeLanguagesQuery = languageProvider - .Get() - .WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), configuration.Id) - .WhereNotIn(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemName), configuration.LanguageNames.ToArray()); - - languageProvider.BulkDelete(new WhereCondition(removeLanguagesQuery)); - } - - - private async Task> GetNewLanguagesOnIndexAsync(LuceneIndexModel configuration) - { - var existingLanguages = await languageProvider - .Get() - .WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), configuration.Id) - .GetEnumerableTypedResultAsync(); - - return configuration.LanguageNames.Where(x => !existingLanguages.Any(y => y.LuceneIndexLanguageItemName == x)); - } - - - private async Task SetNewIndexLanguagesAsync(LuceneIndexModel configuration, LuceneIndexItemInfo indexInfo) - { - var newLanguages = await GetNewLanguagesOnIndexAsync(configuration); - - foreach (string? language in newLanguages) - { - var languageInfo = new LuceneIndexLanguageItemInfo() - { - LuceneIndexLanguageItemName = language, - LuceneIndexLanguageItemIndexItemId = indexInfo.LuceneIndexItemId, - }; - - languageProvider.Set(languageInfo); - } - } - - - private async Task RemoveUnusedIndexPathsAsync(LuceneIndexModel configuration) - { - var removePathsQuery = pathProvider - .Get() - .WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), configuration.Id) - .WhereNotIn(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemId), configuration.Paths.Select(x => x.Identifier ?? 0).ToArray()); - - var removedPaths = await removePathsQuery.GetEnumerableTypedResultAsync(); - - pathProvider.BulkDelete(removePathsQuery); - - RemoveUnusedIndexContentTypes(removedPaths); - } - - - private async Task> GetExistingIndexPathsAsync(LuceneIndexModel configuration) - => await pathProvider - .Get() - .WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), configuration.Id) - .GetEnumerableTypedResultAsync(); - - - private void SetNewIndexPaths(LuceneIndexModel configuration, IEnumerable existingPaths, LuceneIndexItemInfo indexInfo) - { - var newPaths = configuration.Paths.Where(x => !existingPaths.Any(y => y.LuceneIncludedPathItemId == x.Identifier)); - - foreach (var path in newPaths) - { - var pathInfo = new LuceneIncludedPathItemInfo() - { - LuceneIncludedPathItemAliasPath = path.AliasPath, - LuceneIncludedPathItemIndexItemId = indexInfo.LuceneIndexItemId, - }; - pathProvider.Set(pathInfo); - - if (path.ContentTypes != null) - { - foreach (var contentType in path.ContentTypes) - { - var contentInfo = new LuceneContentTypeItemInfo() - { - LuceneContentTypeItemContentTypeName = contentType.ContentTypeName ?? "", - LuceneContentTypeItemIncludedPathItemId = pathInfo.LuceneIncludedPathItemId, - LuceneContentTypeItemIndexItemId = indexInfo.LuceneIndexItemId, - }; - contentInfo.Insert(); - } - } - } - } - - - private void RemoveUnusedIndexContentTypes(IEnumerable removedPaths) - { - var removeContentTypesQuery = contentTypeProvider - .Get() - .WhereIn(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId), removedPaths.Select(x => x.LuceneIncludedPathItemId).ToArray()); - - contentTypeProvider.BulkDelete(removeContentTypesQuery); - } - - - private async Task> GetExistingIndexContentTypesAsync(LuceneIndexModel configuration) - => await contentTypeProvider - .Get() - .WhereIn(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId), configuration.Paths.Select(x => x.Identifier ?? 0).ToArray()) - .GetEnumerableTypedResultAsync(); - - - private void RemoveUnusedIndexContentTypesFromEditedPaths(IEnumerable allExistingContentTypes, LuceneIndexModel configuration) - { - int[] removedContentTypeIdsFromEditedPaths = allExistingContentTypes - .Where(x => !configuration.Paths - .Any(y => y.ContentTypes - .Exists(z => x.LuceneContentTypeItemIncludedPathItemId == y.Identifier && x.LuceneContentTypeItemContentTypeName == z.ContentTypeName)) - ) - .Select(x => x.LuceneContentTypeItemId) - .ToArray(); - - contentTypeProvider.BulkDelete(contentTypeProvider.Get().WhereIn(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemId), removedContentTypeIdsFromEditedPaths)); - } - - - private void UpdateEditedIndexPaths(LuceneIndexModel configuration, IEnumerable existingPaths) - { - foreach (var path in existingPaths) - { - path.LuceneIncludedPathItemAliasPath = configuration.Paths.Single(x => x.Identifier == path.LuceneIncludedPathItemId).AliasPath; - path.Update(); - } - } - - - private void SetNewIndexContentTypes(LuceneIndexModel configuration, LuceneIndexItemInfo indexInfo, IEnumerable existingPaths, IEnumerable existingContentTypes) - { - foreach (var path in existingPaths) - { - foreach (var contentType in configuration.Paths - .Single(x => x.Identifier == path.LuceneIncludedPathItemId) - .ContentTypes - .Where(x => !existingContentTypes - .Any(y => y.LuceneContentTypeItemContentTypeName == x.ContentTypeName && y.LuceneContentTypeItemIncludedPathItemId == path.LuceneIncludedPathItemId) - ) - ) - { - var contentInfo = new LuceneContentTypeItemInfo() - { - LuceneContentTypeItemContentTypeName = contentType.ContentTypeName ?? "", - LuceneContentTypeItemIncludedPathItemId = path.LuceneIncludedPathItemId, - LuceneContentTypeItemIndexItemId = indexInfo.LuceneIndexItemId, - }; - contentInfo.Insert(); - } - } - } - - - private static string RemoveWhitespacesUsingStringBuilder(string source) - { - var builder = new StringBuilder(source.Length); - for (int i = 0; i < source.Length; i++) - { - char c = source[i]; - if (!char.IsWhiteSpace(c)) - { - builder.Append(c); - } - } - return source.Length == builder.Length ? source : builder.ToString(); - } -} +using System.Text; + +using CMS.Base; +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core.Indexing; + +internal class DefaultLuceneConfigurationStorageService : ILuceneConfigurationStorageService +{ + private readonly ILuceneIndexItemInfoProvider indexProvider; + private readonly ILuceneIncludedPathItemInfoProvider pathProvider; + private readonly ILuceneContentTypeItemInfoProvider contentTypeProvider; + private readonly ILuceneReusableContentTypeItemInfoProvider reusableContentTypeProvider; + private readonly ILuceneIndexLanguageItemInfoProvider languageProvider; + + public DefaultLuceneConfigurationStorageService( + ILuceneIndexItemInfoProvider indexProvider, + ILuceneIncludedPathItemInfoProvider pathProvider, + ILuceneContentTypeItemInfoProvider contentTypeProvider, + ILuceneReusableContentTypeItemInfoProvider reusableContentTypeProvider, + ILuceneIndexLanguageItemInfoProvider languageProvider + ) + { + this.indexProvider = indexProvider; + this.pathProvider = pathProvider; + this.contentTypeProvider = contentTypeProvider; + this.languageProvider = languageProvider; + this.reusableContentTypeProvider = reusableContentTypeProvider; + } + + public bool TryCreateIndex(LuceneIndexModel configuration) + { + var existingIndex = indexProvider.Get() + .WhereEquals(nameof(LuceneIndexItemInfo.LuceneIndexItemIndexName), configuration.IndexName) + .TopN(1) + .FirstOrDefault(); + + if (existingIndex is not null) + { + return false; + } + + var newInfo = new LuceneIndexItemInfo() + { + LuceneIndexItemIndexName = configuration.IndexName ?? "", + LuceneIndexItemChannelName = configuration.ChannelName ?? "", + LuceneIndexItemStrategyName = configuration.StrategyName ?? "", + LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? "", + LuceneIndexItemRebuildHook = configuration.RebuildHook ?? "" + }; + + indexProvider.Set(newInfo); + + configuration.Id = newInfo.LuceneIndexItemId; + + if (configuration.LanguageNames is not null) + { + foreach (string? language in configuration.LanguageNames) + { + var languageInfo = new LuceneIndexLanguageItemInfo() + { + LuceneIndexLanguageItemName = language, + LuceneIndexLanguageItemIndexItemId = newInfo.LuceneIndexItemId + }; + + languageInfo.Insert(); + } + } + + if (configuration.Paths is not null) + { + foreach (var path in configuration.Paths) + { + var pathInfo = new LuceneIncludedPathItemInfo() + { + LuceneIncludedPathItemAliasPath = path.AliasPath, + LuceneIncludedPathItemIndexItemId = newInfo.LuceneIndexItemId + }; + pathProvider.Set(pathInfo); + + if (path.ContentTypes is not null) + { + foreach (var contentType in path.ContentTypes) + { + var contentInfo = new LuceneContentTypeItemInfo() + { + LuceneContentTypeItemContentTypeName = contentType.ContentTypeName, + LuceneContentTypeItemIncludedPathItemId = pathInfo.LuceneIncludedPathItemId, + LuceneContentTypeItemIndexItemId = newInfo.LuceneIndexItemId + }; + contentInfo.Insert(); + } + } + } + } + + if (configuration.ReusableContentTypeNames is not null) + { + foreach (string? reusableContentTypeName in configuration.ReusableContentTypeNames) + { + var reusableContentTypeItemInfo = new LuceneReusableContentTypeItemInfo() + { + LuceneReusableContentTypeItemContentTypeName = reusableContentTypeName, + LuceneReusableContentTypeItemIndexItemId = newInfo.LuceneIndexItemId + }; + + reusableContentTypeItemInfo.Insert(); + } + } + + return true; + } + + + public async Task GetIndexDataOrNullAsync(int indexId) + { + var indexInfo = indexProvider.Get().WithID(indexId).FirstOrDefault(); + if (indexInfo == default) + { + return default; + } + + var paths = pathProvider.Get().WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); + + var webPageContentTypes = await GetLuceneWebPageContentTypesAsync(); + + var languages = languageProvider.Get().WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); + + var reusableContentTypes = reusableContentTypeProvider.Get().WhereEquals(nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); + + return new LuceneIndexModel(indexInfo, languages, paths, webPageContentTypes, reusableContentTypes); + } + + + public async Task GetIndexDataOrNullAsync(string indexName) + { + var indexInfo = indexProvider.Get().WhereEquals(nameof(LuceneIndexItemInfo.LuceneIndexItemIndexName), indexName).FirstOrDefault(); + if (indexInfo == default) + { + return default; + } + + var paths = pathProvider.Get().WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); + + var webPageContentTypes = await GetLuceneWebPageContentTypesAsync(); + + var languages = languageProvider.Get().WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); + + var reusableContentTypes = reusableContentTypeProvider.Get().WhereEquals(nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemIndexItemId), indexInfo.LuceneIndexItemId).GetEnumerableTypedResult(); + + return new LuceneIndexModel(indexInfo, languages, paths, webPageContentTypes, reusableContentTypes); + } + + + public List GetExistingIndexNames() => indexProvider.Get().Select(x => x.LuceneIndexItemIndexName).ToList(); + + + public List GetIndexIds() => indexProvider.Get().Select(x => x.LuceneIndexItemId).ToList(); + + + public async Task> GetAllIndexDataAsync() + { + var indexInfos = indexProvider.Get().GetEnumerableTypedResult().ToList(); + if (indexInfos.Count == 0) + { + return []; + } + + var paths = pathProvider.Get().ToList(); + + var webPageContentTypes = await GetLuceneWebPageContentTypesAsync(); + + var languages = languageProvider.Get().ToList(); + + var reusableContentTypes = reusableContentTypeProvider.Get().ToList(); + + return indexInfos.Select(index => new LuceneIndexModel(index, languages, paths, webPageContentTypes, reusableContentTypes)); + } + + + public async Task TryEditIndexAsync(LuceneIndexModel configuration) + { + configuration.IndexName = RemoveWhitespacesUsingStringBuilder(configuration.IndexName ?? ""); + + var indexInfo = indexProvider.Get() + .WhereEquals(nameof(LuceneIndexItemInfo.LuceneIndexItemId), configuration.Id) + .TopN(1) + .FirstOrDefault(); + + if (indexInfo is null) + { + return false; + } + + indexInfo.LuceneIndexItemRebuildHook = configuration.RebuildHook ?? ""; + indexInfo.LuceneIndexItemStrategyName = configuration.StrategyName ?? ""; + indexInfo.LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? ""; + indexInfo.LuceneIndexItemChannelName = configuration.ChannelName ?? ""; + indexInfo.LuceneIndexItemIndexName = configuration.IndexName ?? ""; + + indexProvider.Set(indexInfo); + + RemoveUnusedIndexLanguages(configuration); + await SetNewIndexLanguagesAsync(configuration, indexInfo); + + RemoveUnusedReusableContentTypes(configuration); + await SetNewIndexReusableContentTypeItemsAsync(configuration, indexInfo); + + await RemoveUnusedIndexPathsAsync(configuration); + var existingPaths = await GetExistingIndexPathsAsync(configuration); + SetNewIndexPaths(configuration, existingPaths, indexInfo); + UpdateEditedIndexPaths(configuration, existingPaths); + + var existingContentTypes = await GetExistingIndexContentTypesAsync(configuration); + RemoveUnusedIndexContentTypesFromEditedPaths(existingContentTypes, configuration); + SetNewIndexContentTypes(configuration, indexInfo, existingPaths, existingContentTypes); + + return true; + } + + + public bool TryDeleteIndex(int id) + { + indexProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexItemInfo.LuceneIndexItemId)} = {id}")); + pathProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId)} = {id}")); + languageProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId)} = {id}")); + contentTypeProvider.BulkDelete(new WhereCondition($"{nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIndexItemId)} = {id}")); + reusableContentTypeProvider.BulkDelete(new WhereCondition($"{nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemIndexItemId)} = {id}")); + + return true; + } + + + public bool TryDeleteIndex(LuceneIndexModel configuration) + { + indexProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexItemInfo.LuceneIndexItemId)} = {configuration.Id}")); + pathProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId)} = {configuration.Id}")); + languageProvider.BulkDelete(new WhereCondition($"{nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId)} = {configuration.Id}")); + contentTypeProvider.BulkDelete(new WhereCondition($"{nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIndexItemId)} = {configuration.Id}")); + reusableContentTypeProvider.BulkDelete(new WhereCondition($"{nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemIndexItemId)} = {configuration.Id}")); + + return true; + } + + + private async Task> GetLuceneWebPageContentTypesAsync() + => await contentTypeProvider + .Get().Source(x => + x.InnerJoin( + nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName), + nameof(DataClassInfo.ClassName)) + ) + .Columns(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName), + nameof(DataClassInfo.ClassDisplayName), + nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId)) + .GetEnumerableTypedResultAsync(x => + { + var dataContainer = new DataRecordContainer(x); + return new LuceneIndexContentType( + (string)dataContainer[nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName)], + (string)dataContainer[nameof(DataClassInfo.ClassDisplayName)], + (int)dataContainer[nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId)]); + }); + + + private void RemoveUnusedIndexLanguages(LuceneIndexModel configuration) + { + var removeLanguagesQuery = languageProvider + .Get() + .WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), configuration.Id) + .WhereNotIn(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemName), configuration.LanguageNames.ToArray()); + + languageProvider.BulkDelete(new WhereCondition(removeLanguagesQuery)); + } + + + private void RemoveUnusedReusableContentTypes(LuceneIndexModel configuration) + { + var removeReusableContentTypesQuery = reusableContentTypeProvider + .Get() + .WhereEquals(nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemIndexItemId), configuration.Id) + .WhereNotIn(nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemContentTypeName), configuration.ReusableContentTypeNames.ToArray()); + + reusableContentTypeProvider.BulkDelete(new WhereCondition(removeReusableContentTypesQuery)); + } + + + private async Task> GetNewLanguagesOnIndexAsync(LuceneIndexModel configuration) + { + var existingLanguages = await languageProvider + .Get() + .WhereEquals(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), configuration.Id) + .GetEnumerableTypedResultAsync(); + + return configuration.LanguageNames.Where(x => !existingLanguages.Any(y => y.LuceneIndexLanguageItemName == x)); + } + + + private async Task> GetNewReusableContentTypesOnIndexAsync(LuceneIndexModel configuration) + { + var existingReusableContentTypes = await reusableContentTypeProvider + .Get() + .WhereEquals(nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemIndexItemId), configuration.Id) + .GetEnumerableTypedResultAsync(); + + return configuration.ReusableContentTypeNames.Where(x => !existingReusableContentTypes.Any(y => y.LuceneReusableContentTypeItemContentTypeName == x)); + } + + + private async Task SetNewIndexLanguagesAsync(LuceneIndexModel configuration, LuceneIndexItemInfo indexInfo) + { + var newLanguages = await GetNewLanguagesOnIndexAsync(configuration); + + foreach (string? language in newLanguages) + { + var languageInfo = new LuceneIndexLanguageItemInfo() + { + LuceneIndexLanguageItemName = language, + LuceneIndexLanguageItemIndexItemId = indexInfo.LuceneIndexItemId, + }; + + languageProvider.Set(languageInfo); + } + } + + + private async Task SetNewIndexReusableContentTypeItemsAsync(LuceneIndexModel configuration, LuceneIndexItemInfo indexInfo) + { + var newReusableContentTypes = await GetNewReusableContentTypesOnIndexAsync(configuration); + + foreach (string? reusableContentType in newReusableContentTypes) + { + var reusableContentTypeInfo = new LuceneReusableContentTypeItemInfo() + { + LuceneReusableContentTypeItemContentTypeName = reusableContentType, + LuceneReusableContentTypeItemIndexItemId = indexInfo.LuceneIndexItemId, + }; + + reusableContentTypeProvider.Set(reusableContentTypeInfo); + } + } + + + private async Task RemoveUnusedIndexPathsAsync(LuceneIndexModel configuration) + { + var removePathsQuery = pathProvider + .Get() + .WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), configuration.Id) + .WhereNotIn(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemId), configuration.Paths.Select(x => x.Identifier ?? 0).ToArray()); + + var removedPaths = await removePathsQuery.GetEnumerableTypedResultAsync(); + + pathProvider.BulkDelete(removePathsQuery); + + RemoveUnusedIndexContentTypes(removedPaths); + } + + + private async Task> GetExistingIndexPathsAsync(LuceneIndexModel configuration) + => await pathProvider + .Get() + .WhereEquals(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), configuration.Id) + .GetEnumerableTypedResultAsync(); + + + private void SetNewIndexPaths(LuceneIndexModel configuration, IEnumerable existingPaths, LuceneIndexItemInfo indexInfo) + { + var newPaths = configuration.Paths.Where(x => !existingPaths.Any(y => y.LuceneIncludedPathItemId == x.Identifier)); + + foreach (var path in newPaths) + { + var pathInfo = new LuceneIncludedPathItemInfo() + { + LuceneIncludedPathItemAliasPath = path.AliasPath, + LuceneIncludedPathItemIndexItemId = indexInfo.LuceneIndexItemId, + }; + pathProvider.Set(pathInfo); + + if (path.ContentTypes != null) + { + foreach (var contentType in path.ContentTypes) + { + var contentInfo = new LuceneContentTypeItemInfo() + { + LuceneContentTypeItemContentTypeName = contentType.ContentTypeName ?? "", + LuceneContentTypeItemIncludedPathItemId = pathInfo.LuceneIncludedPathItemId, + LuceneContentTypeItemIndexItemId = indexInfo.LuceneIndexItemId, + }; + contentInfo.Insert(); + } + } + } + } + + + private void RemoveUnusedIndexContentTypes(IEnumerable removedPaths) + { + var removeContentTypesQuery = contentTypeProvider + .Get() + .WhereIn(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId), removedPaths.Select(x => x.LuceneIncludedPathItemId).ToArray()); + + contentTypeProvider.BulkDelete(removeContentTypesQuery); + } + + + private async Task> GetExistingIndexContentTypesAsync(LuceneIndexModel configuration) + => await contentTypeProvider + .Get() + .WhereIn(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId), configuration.Paths.Select(x => x.Identifier ?? 0).ToArray()) + .GetEnumerableTypedResultAsync(); + + + private void RemoveUnusedIndexContentTypesFromEditedPaths(IEnumerable allExistingContentTypes, LuceneIndexModel configuration) + { + int[] removedContentTypeIdsFromEditedPaths = allExistingContentTypes + .Where(x => !configuration.Paths + .Any(y => y.ContentTypes + .Exists(z => x.LuceneContentTypeItemIncludedPathItemId == y.Identifier && x.LuceneContentTypeItemContentTypeName == z.ContentTypeName)) + ) + .Select(x => x.LuceneContentTypeItemId) + .ToArray(); + + contentTypeProvider.BulkDelete(contentTypeProvider.Get().WhereIn(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemId), removedContentTypeIdsFromEditedPaths)); + } + + + private void UpdateEditedIndexPaths(LuceneIndexModel configuration, IEnumerable existingPaths) + { + foreach (var path in existingPaths) + { + path.LuceneIncludedPathItemAliasPath = configuration.Paths.Single(x => x.Identifier == path.LuceneIncludedPathItemId).AliasPath; + path.Update(); + } + } + + + private void SetNewIndexContentTypes(LuceneIndexModel configuration, LuceneIndexItemInfo indexInfo, IEnumerable existingPaths, IEnumerable existingContentTypes) + { + foreach (var path in existingPaths) + { + foreach (var contentType in configuration.Paths + .Single(x => x.Identifier == path.LuceneIncludedPathItemId) + .ContentTypes + .Where(x => !existingContentTypes + .Any(y => y.LuceneContentTypeItemContentTypeName == x.ContentTypeName && y.LuceneContentTypeItemIncludedPathItemId == path.LuceneIncludedPathItemId) + ) + ) + { + var contentInfo = new LuceneContentTypeItemInfo() + { + LuceneContentTypeItemContentTypeName = contentType.ContentTypeName ?? "", + LuceneContentTypeItemIncludedPathItemId = path.LuceneIncludedPathItemId, + LuceneContentTypeItemIndexItemId = indexInfo.LuceneIndexItemId, + }; + contentInfo.Insert(); + } + } + } + + + private static string RemoveWhitespacesUsingStringBuilder(string source) + { + var builder = new StringBuilder(source.Length); + for (int i = 0; i < source.Length; i++) + { + char c = source[i]; + if (!char.IsWhiteSpace(c)) + { + builder.Append(c); + } + } + return source.Length == builder.Length ? source : builder.ToString(); + } +} diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndex.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndex.cs index 1c6734f..a4e5615 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndex.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndex.cs @@ -1,84 +1,90 @@ -using Lucene.Net.Analysis; -using Lucene.Net.Analysis.Standard; -using Lucene.Net.Util; - -namespace Kentico.Xperience.Lucene.Core.Indexing; - -/// -/// Represents the configuration of an Lucene index. -/// -public sealed class LuceneIndex -{ - /// - /// An arbitrary ID used to identify the Lucene index in the admin UI. - /// - public int Identifier { get; set; } - - /// - /// The code name of the Lucene index. - /// - public string IndexName { get; } - - /// - /// The Name of the WebSiteChannel. - /// - public string WebSiteChannelName { get; } - - /// - /// The Language used on the WebSite on the Channel which is indexed. - /// - public List LanguageNames { get; } - - /// - /// Lucene Analyzer used for indexing. - /// - public Analyzer LuceneAnalyzer { get; } - - /// - /// The type of the class which extends . - /// - public Type LuceneIndexingStrategyType { get; } - - /// - /// Index storage context, employs picked storage strategy - /// - public IndexStorageContext StorageContext { get; } - - internal IEnumerable IncludedPaths { get; set; } - - internal LuceneIndex(LuceneIndexModel indexConfiguration, Dictionary strategies, Dictionary analyzers, LuceneVersion matchVersion) - { - Identifier = indexConfiguration.Id; - IndexName = indexConfiguration.IndexName; - WebSiteChannelName = indexConfiguration.ChannelName; - LanguageNames = indexConfiguration.LanguageNames.ToList(); - IncludedPaths = indexConfiguration.Paths; - - var strategy = typeof(DefaultLuceneIndexingStrategy); - - if (strategies.ContainsKey(indexConfiguration.StrategyName)) - { - strategy = strategies[indexConfiguration.StrategyName]; - } - - var analyzerType = typeof(StandardAnalyzer); - - if (analyzers.ContainsKey(indexConfiguration.AnalyzerName)) - { - analyzerType = analyzers[indexConfiguration.AnalyzerName]; - } - - var constructorParameters = analyzerType.GetConstructors().Select(x => new - { - Constructor = x, - Parameters = x.GetParameters() - }); - var constructor = constructorParameters.First(x => x.Parameters.Length == 1 && x.Parameters.Single().ParameterType == typeof(LuceneVersion)).Constructor; - LuceneAnalyzer = (Analyzer)constructor.Invoke([matchVersion]); - - LuceneIndexingStrategyType = strategy; - - string indexStoragePath = Path.Combine(Environment.CurrentDirectory, "App_Data", "LuceneSearch", indexConfiguration.IndexName); - StorageContext = new IndexStorageContext(new GenerationStorageStrategy(), indexStoragePath, new IndexRetentionPolicy(4)); - } -} +using Lucene.Net.Analysis; +using Lucene.Net.Analysis.Standard; +using Lucene.Net.Util; + +namespace Kentico.Xperience.Lucene.Core.Indexing; + +/// +/// Represents the configuration of an Lucene index. +/// +public sealed class LuceneIndex +{ + /// + /// An arbitrary ID used to identify the Lucene index in the admin UI. + /// + public int Identifier { get; set; } + + /// + /// The code name of the Lucene index. + /// + public string IndexName { get; } + + /// + /// The Name of the WebSiteChannel. + /// + public string WebSiteChannelName { get; } + + /// + /// The Language used on the WebSite on the Channel which is indexed. + /// + public List LanguageNames { get; } + + /// + /// A list of reusable content types that will be indexed. + /// + public List IncludedReusableContentTypes { get; } + + /// + /// Lucene Analyzer used for indexing. + /// + public Analyzer LuceneAnalyzer { get; } + + /// + /// The type of the class which extends . + /// + public Type LuceneIndexingStrategyType { get; } + + /// + /// Index storage context, employs picked storage strategy + /// + public IndexStorageContext StorageContext { get; } + + internal IEnumerable IncludedPaths { get; set; } + + internal LuceneIndex(LuceneIndexModel indexConfiguration, Dictionary strategies, Dictionary analyzers, LuceneVersion matchVersion) + { + Identifier = indexConfiguration.Id; + IndexName = indexConfiguration.IndexName; + WebSiteChannelName = indexConfiguration.ChannelName; + LanguageNames = indexConfiguration.LanguageNames.ToList(); + IncludedReusableContentTypes = indexConfiguration.ReusableContentTypeNames.ToList(); + IncludedPaths = indexConfiguration.Paths; + + var strategy = typeof(DefaultLuceneIndexingStrategy); + + if (strategies.ContainsKey(indexConfiguration.StrategyName)) + { + strategy = strategies[indexConfiguration.StrategyName]; + } + + var analyzerType = typeof(StandardAnalyzer); + + if (analyzers.ContainsKey(indexConfiguration.AnalyzerName)) + { + analyzerType = analyzers[indexConfiguration.AnalyzerName]; + } + + var constructorParameters = analyzerType.GetConstructors().Select(x => new + { + Constructor = x, + Parameters = x.GetParameters() + }); + var constructor = constructorParameters.First(x => x.Parameters.Length == 1 && x.Parameters.Single().ParameterType == typeof(LuceneVersion)).Constructor; + LuceneAnalyzer = (Analyzer)constructor.Invoke([matchVersion]); + + LuceneIndexingStrategyType = strategy; + + string indexStoragePath = Path.Combine(Environment.CurrentDirectory, "App_Data", "LuceneSearch", indexConfiguration.IndexName); + StorageContext = new IndexStorageContext(new GenerationStorageStrategy(), indexStoragePath, new IndexRetentionPolicy(4)); + } +} diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndexModel.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndexModel.cs index 3915b35..c3fcdd5 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndexModel.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/LuceneIndexModel.cs @@ -1,47 +1,54 @@ -namespace Kentico.Xperience.Lucene.Core.Indexing; - -public class LuceneIndexModel -{ - public int Id { get; set; } - - public string IndexName { get; set; } = ""; - - public IEnumerable LanguageNames { get; set; } = Enumerable.Empty(); - - public string ChannelName { get; set; } = ""; - - public string StrategyName { get; set; } = ""; - - public string AnalyzerName { get; set; } = ""; - - public string RebuildHook { get; set; } = ""; - - public IEnumerable Paths { get; set; } = Enumerable.Empty(); - - public LuceneIndexModel() { } - - public LuceneIndexModel( - LuceneIndexItemInfo index, - IEnumerable indexLanguages, - IEnumerable indexPaths, - IEnumerable contentTypes - ) - { - Id = index.LuceneIndexItemId; - IndexName = index.LuceneIndexItemIndexName; - ChannelName = index.LuceneIndexItemChannelName; - RebuildHook = index.LuceneIndexItemRebuildHook; - StrategyName = index.LuceneIndexItemStrategyName; - AnalyzerName = index.LuceneIndexItemAnalyzerName; - LanguageNames = indexLanguages - .Where(l => l.LuceneIndexLanguageItemIndexItemId == index.LuceneIndexItemId) - .Select(l => l.LuceneIndexLanguageItemName) - .ToList(); - Paths = indexPaths - .Where(p => p.LuceneIncludedPathItemIndexItemId == index.LuceneIndexItemId) - .Select(p => new LuceneIndexIncludedPath(p, - contentTypes.Where(x => x.LucenePathItemId == p.LuceneIncludedPathItemId)) - ) - .ToList(); - } -} +namespace Kentico.Xperience.Lucene.Core.Indexing; + +public class LuceneIndexModel +{ + public int Id { get; set; } + + public string IndexName { get; set; } = ""; + + public IEnumerable LanguageNames { get; set; } = Enumerable.Empty(); + + public string ChannelName { get; set; } = ""; + + public string StrategyName { get; set; } = ""; + + public string AnalyzerName { get; set; } = ""; + + public string RebuildHook { get; set; } = ""; + + public IEnumerable Paths { get; set; } = Enumerable.Empty(); + + public IEnumerable ReusableContentTypeNames { get; set; } = Enumerable.Empty(); + + public LuceneIndexModel() { } + + public LuceneIndexModel( + LuceneIndexItemInfo index, + IEnumerable indexLanguages, + IEnumerable indexPaths, + IEnumerable contentTypes, + IEnumerable reusableContentTypes + ) + { + Id = index.LuceneIndexItemId; + IndexName = index.LuceneIndexItemIndexName; + ChannelName = index.LuceneIndexItemChannelName; + RebuildHook = index.LuceneIndexItemRebuildHook; + StrategyName = index.LuceneIndexItemStrategyName; + AnalyzerName = index.LuceneIndexItemAnalyzerName; + LanguageNames = indexLanguages + .Where(l => l.LuceneIndexLanguageItemIndexItemId == index.LuceneIndexItemId) + .Select(l => l.LuceneIndexLanguageItemName) + .ToList(); + ReusableContentTypeNames = reusableContentTypes + .Where(c => c.LuceneReusableContentTypeItemIndexItemId == index.LuceneIndexItemId) + .Select(c => c.LuceneReusableContentTypeItemContentTypeName) + .ToList(); + Paths = indexPaths + .Where(p => p.LuceneIncludedPathItemIndexItemId == index.LuceneIndexItemId) + .Select(p => new LuceneIndexIncludedPath(p, + contentTypes.Where(x => x.LucenePathItemId == p.LuceneIncludedPathItemId)) + ) + .ToList(); + } +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs new file mode 100644 index 0000000..f51ad1e --- /dev/null +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs @@ -0,0 +1,11 @@ +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Declares members for management. +/// +public partial interface ILuceneReusableContentTypeItemInfoProvider +{ + void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs new file mode 100644 index 0000000..6f491ca --- /dev/null +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs @@ -0,0 +1,10 @@ +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Declares members for management. +/// +public partial interface ILuceneReusableContentTypeItemInfoProvider : IInfoProvider, IInfoByIdProvider, IInfoByNameProvider +{ +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs new file mode 100644 index 0000000..58ca754 --- /dev/null +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs @@ -0,0 +1,134 @@ +using System.Data; +using System.Runtime.Serialization; + +using CMS; +using CMS.DataEngine; +using CMS.Helpers; + +using Kentico.Xperience.Lucene.Core; + + +[assembly: RegisterObjectType(typeof(LuceneReusableContentTypeItemInfo), LuceneReusableContentTypeItemInfo.OBJECT_TYPE)] + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Data container class for . +/// +[Serializable] +public partial class LuceneReusableContentTypeItemInfo : AbstractInfo +{ + /// + /// Object type. + /// + public const string OBJECT_TYPE = "kenticolucene.lucenereusablecontenttypeitem"; + + + /// + /// Type information. + /// + public static readonly ObjectTypeInfo TYPEINFO = new(typeof(LuceneReusableContentTypeItemInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneReusableContentTypeItem", nameof(LuceneReusableContentTypeItemId), null, nameof(LuceneReusableContentTypeItemGuid), null, null, null, null, null) + { + TouchCacheDependencies = true, + DependsOn = new List() + { + new(nameof(LuceneReusableContentTypeItemIndexItemId), LuceneIndexItemInfo.OBJECT_TYPE, ObjectDependencyEnum.Required), + }, + ContinuousIntegrationSettings = + { + Enabled = true + } + }; + + + /// + /// Lucene reusable content type item id. + /// + [DatabaseField] + public virtual int LuceneReusableContentTypeItemId + { + get => ValidationHelper.GetInteger(GetValue(nameof(LuceneReusableContentTypeItemId)), 0); + set => SetValue(nameof(LuceneReusableContentTypeItemId), value); + } + + + /// + /// Lucene reusable content type item guid. + /// + [DatabaseField] + public virtual Guid LuceneReusableContentTypeItemGuid + { + get => ValidationHelper.GetGuid(GetValue(nameof(LuceneReusableContentTypeItemGuid)), default); + set => SetValue(nameof(LuceneReusableContentTypeItemGuid), value); + } + + + /// + /// Reusable content type name. + /// + [DatabaseField] + public virtual string LuceneReusableContentTypeItemContentTypeName + { + get => ValidationHelper.GetString(GetValue(nameof(LuceneReusableContentTypeItemContentTypeName)), String.Empty); + set => SetValue(nameof(LuceneReusableContentTypeItemContentTypeName), value); + } + + + /// + /// Lucene index item id. + /// + [DatabaseField] + public virtual int LuceneReusableContentTypeItemIndexItemId + { + get => ValidationHelper.GetInteger(GetValue(nameof(LuceneReusableContentTypeItemIndexItemId)), 0); + set => SetValue(nameof(LuceneReusableContentTypeItemIndexItemId), value); + } + + + /// + /// Deletes the object using appropriate provider. + /// + protected override void DeleteObject() + { + Provider.Delete(this); + } + + + /// + /// Updates the object using appropriate provider. + /// + protected override void SetObject() + { + Provider.Set(this); + } + + + /// + /// Constructor for de-serialization. + /// + /// Serialization info. + /// Streaming context. + protected LuceneReusableContentTypeItemInfo(SerializationInfo info, StreamingContext context) + : base(info, context) + { + } + + + /// + /// Creates an empty instance of the class. + /// + public LuceneReusableContentTypeItemInfo() + : base(TYPEINFO) + { + } + + + /// + /// Creates a new instances of the class from the given . + /// + /// DataRow with the object data. + public LuceneReusableContentTypeItemInfo(DataRow dr) + : base(TYPEINFO, dr) + { + } +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs new file mode 100644 index 0000000..3300f0d --- /dev/null +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs @@ -0,0 +1,18 @@ +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Class providing management. +/// +[ProviderInterface(typeof(ILuceneReusableContentTypeItemInfoProvider))] +public partial class LuceneReusableContentTypeItemInfoProvider : AbstractInfoProvider, ILuceneReusableContentTypeItemInfoProvider +{ + /// + /// Initializes a new instance of the class. + /// + public LuceneReusableContentTypeItemInfoProvider() + : base(LuceneReusableContentTypeItemInfo.TYPEINFO) + { + } +} diff --git a/src/Kentico.Xperience.Lucene.Core/LuceneModuleInstaller.cs b/src/Kentico.Xperience.Lucene.Core/LuceneModuleInstaller.cs index 16af4d7..15be7d7 100644 --- a/src/Kentico.Xperience.Lucene.Core/LuceneModuleInstaller.cs +++ b/src/Kentico.Xperience.Lucene.Core/LuceneModuleInstaller.cs @@ -1,335 +1,394 @@ -using CMS.DataEngine; -using CMS.FormEngine; -using CMS.Modules; - -namespace Kentico.Xperience.Lucene.Core; - -public class LuceneModuleInstaller(IInfoProvider resourceProvider) -{ - private readonly IInfoProvider resourceProvider = resourceProvider; - - public void Install() - { - var resource = resourceProvider.Get("CMS.Integration.Lucene") - // Handle v4.0.0 resource name manually until migrations are enabled - ?? resourceProvider.Get("Kentico.Xperience.Lucene") - ?? new ResourceInfo(); - - InitializeResource(resource); - InstallLuceneItemInfo(resource); - InstallLuceneLanguageInfo(resource); - InstallLuceneIndexPathItemInfo(resource); - InstallLuceneContentTypeItemInfo(resource); - } - - public ResourceInfo InitializeResource(ResourceInfo resource) - { - resource.ResourceDisplayName = "Kentico Integration - Lucene"; - - // Prefix ResourceName with "CMS" to prevent C# class generation - // Classes are already available through the library itself - resource.ResourceName = "CMS.Integration.Lucene"; - resource.ResourceDescription = "Kentico Lucene custom data"; - resource.ResourceIsInDevelopment = false; - if (resource.HasChanged) - { - resourceProvider.Set(resource); - } - - return resource; - } - - public void InstallLuceneItemInfo(ResourceInfo resource) - { - var info = DataClassInfoProvider.GetDataClassInfo(LuceneIndexItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneIndexItemInfo.OBJECT_TYPE); - - info.ClassName = LuceneIndexItemInfo.TYPEINFO.ObjectClassName; - info.ClassTableName = LuceneIndexItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); - info.ClassDisplayName = "Lucene Index Item"; - info.ClassType = ClassType.OTHER; - info.ClassResourceID = resource.ResourceID; - - var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneIndexItemInfo.LuceneIndexItemId)); - - var formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexItemInfo.LuceneIndexItemGuid), - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "guid", - Enabled = true, - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexItemInfo.LuceneIndexItemIndexName), - AllowEmpty = false, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexItemInfo.LuceneIndexItemChannelName), - AllowEmpty = false, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexItemInfo.LuceneIndexItemStrategyName), - AllowEmpty = false, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexItemInfo.LuceneIndexItemAnalyzerName), - AllowEmpty = false, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexItemInfo.LuceneIndexItemRebuildHook), - AllowEmpty = true, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true - }; - formInfo.AddFormItem(formItem); - - SetFormDefinition(info, formInfo); - - if (info.HasChanged) - { - DataClassInfoProvider.SetDataClassInfo(info); - } - } - - public void InstallLuceneIndexPathItemInfo(ResourceInfo resource) - { - var info = DataClassInfoProvider.GetDataClassInfo(LuceneIncludedPathItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneIncludedPathItemInfo.OBJECT_TYPE); - - info.ClassName = LuceneIncludedPathItemInfo.TYPEINFO.ObjectClassName; - info.ClassTableName = LuceneIncludedPathItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); - info.ClassDisplayName = "Lucene Path Item"; - info.ClassType = ClassType.OTHER; - info.ClassResourceID = resource.ResourceID; - - var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemId)); - - var formItem = new FormFieldInfo - { - Name = nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemGuid), - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "guid", - Enabled = true, - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemAliasPath), - AllowEmpty = false, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true, - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "integer", - ReferenceToObjectType = LuceneIndexItemInfo.OBJECT_TYPE, - ReferenceType = ObjectDependencyEnum.Required - }; - - formInfo.AddFormItem(formItem); - - SetFormDefinition(info, formInfo); - - if (info.HasChanged) - { - DataClassInfoProvider.SetDataClassInfo(info); - } - } - - public void InstallLuceneLanguageInfo(ResourceInfo resource) - { - var info = DataClassInfoProvider.GetDataClassInfo(LuceneIndexLanguageItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneIndexLanguageItemInfo.OBJECT_TYPE); - - info.ClassName = LuceneIndexLanguageItemInfo.TYPEINFO.ObjectClassName; - info.ClassTableName = LuceneIndexLanguageItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); - info.ClassDisplayName = "Lucene Indexed Language Item"; - info.ClassType = ClassType.OTHER; - info.ClassResourceID = resource.ResourceID; - - var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemID)); - - var formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemName), - AllowEmpty = false, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true, - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemGuid), - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "guid", - Enabled = true - }; - - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "integer", - ReferenceToObjectType = LuceneIndexItemInfo.OBJECT_TYPE, - ReferenceType = ObjectDependencyEnum.Required, - }; - - formInfo.AddFormItem(formItem); - - SetFormDefinition(info, formInfo); - - if (info.HasChanged) - { - DataClassInfoProvider.SetDataClassInfo(info); - } - } - - public void InstallLuceneContentTypeItemInfo(ResourceInfo resource) - { - var info = DataClassInfoProvider.GetDataClassInfo(LuceneContentTypeItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneContentTypeItemInfo.OBJECT_TYPE); - - info.ClassName = LuceneContentTypeItemInfo.TYPEINFO.ObjectClassName; - info.ClassTableName = LuceneContentTypeItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); - info.ClassDisplayName = "Lucene Type Item"; - info.ClassType = ClassType.OTHER; - info.ClassResourceID = resource.ResourceID; - - var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemId)); - - var formItem = new FormFieldInfo - { - Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName), - AllowEmpty = false, - Visible = true, - Precision = 0, - Size = 100, - DataType = "text", - Enabled = true, - IsUnique = false - }; - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId), - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "integer", - ReferenceToObjectType = LuceneIncludedPathItemInfo.OBJECT_TYPE, - ReferenceType = ObjectDependencyEnum.Required, - }; - - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemGuid), - Enabled = true, - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "guid", - }; - - formInfo.AddFormItem(formItem); - - formItem = new FormFieldInfo - { - Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIndexItemId), - AllowEmpty = false, - Visible = true, - Precision = 0, - DataType = "integer", - ReferenceToObjectType = LuceneIndexItemInfo.OBJECT_TYPE, - ReferenceType = ObjectDependencyEnum.Required - }; - - formInfo.AddFormItem(formItem); - - SetFormDefinition(info, formInfo); - - if (info.HasChanged) - { - DataClassInfoProvider.SetDataClassInfo(info); - } - } - - /// - /// Ensure that the form is upserted with any existing form - /// - /// - /// - private static void SetFormDefinition(DataClassInfo info, FormInfo form) - { - if (info.ClassID > 0) - { - var existingForm = new FormInfo(info.ClassFormDefinition); - existingForm.CombineWithForm(form, new()); - info.ClassFormDefinition = existingForm.GetXmlDefinition(); - } - else - { - info.ClassFormDefinition = form.GetXmlDefinition(); - } - } -} +using CMS.DataEngine; +using CMS.FormEngine; +using CMS.Modules; + +namespace Kentico.Xperience.Lucene.Core; + +public class LuceneModuleInstaller(IInfoProvider resourceProvider) +{ + private readonly IInfoProvider resourceProvider = resourceProvider; + + public void Install() + { + var resource = resourceProvider.Get("CMS.Integration.Lucene") + // Handle v4.0.0 resource name manually until migrations are enabled + ?? resourceProvider.Get("Kentico.Xperience.Lucene") + ?? new ResourceInfo(); + + InitializeResource(resource); + InstallLuceneItemInfo(resource); + InstallLuceneLanguageInfo(resource); + InstallLuceneIndexPathItemInfo(resource); + InstallLuceneContentTypeItemInfo(resource); + InstallLuceneReusableContentTypeItemInfo(resource); + } + + public ResourceInfo InitializeResource(ResourceInfo resource) + { + resource.ResourceDisplayName = "Kentico Integration - Lucene"; + + // Prefix ResourceName with "CMS" to prevent C# class generation + // Classes are already available through the library itself + resource.ResourceName = "CMS.Integration.Lucene"; + resource.ResourceDescription = "Kentico Lucene custom data"; + resource.ResourceIsInDevelopment = false; + if (resource.HasChanged) + { + resourceProvider.Set(resource); + } + + return resource; + } + + public void InstallLuceneItemInfo(ResourceInfo resource) + { + var info = DataClassInfoProvider.GetDataClassInfo(LuceneIndexItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneIndexItemInfo.OBJECT_TYPE); + + info.ClassName = LuceneIndexItemInfo.TYPEINFO.ObjectClassName; + info.ClassTableName = LuceneIndexItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); + info.ClassDisplayName = "Lucene Index Item"; + info.ClassType = ClassType.OTHER; + info.ClassResourceID = resource.ResourceID; + + var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneIndexItemInfo.LuceneIndexItemId)); + + var formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexItemInfo.LuceneIndexItemGuid), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "guid", + Enabled = true, + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexItemInfo.LuceneIndexItemIndexName), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexItemInfo.LuceneIndexItemChannelName), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexItemInfo.LuceneIndexItemStrategyName), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexItemInfo.LuceneIndexItemAnalyzerName), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexItemInfo.LuceneIndexItemRebuildHook), + AllowEmpty = true, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true + }; + formInfo.AddFormItem(formItem); + + SetFormDefinition(info, formInfo); + + if (info.HasChanged) + { + DataClassInfoProvider.SetDataClassInfo(info); + } + } + + public void InstallLuceneIndexPathItemInfo(ResourceInfo resource) + { + var info = DataClassInfoProvider.GetDataClassInfo(LuceneIncludedPathItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneIncludedPathItemInfo.OBJECT_TYPE); + + info.ClassName = LuceneIncludedPathItemInfo.TYPEINFO.ObjectClassName; + info.ClassTableName = LuceneIncludedPathItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); + info.ClassDisplayName = "Lucene Path Item"; + info.ClassType = ClassType.OTHER; + info.ClassResourceID = resource.ResourceID; + + var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemId)); + + var formItem = new FormFieldInfo + { + Name = nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemGuid), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "guid", + Enabled = true, + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemAliasPath), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true, + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIncludedPathItemInfo.LuceneIncludedPathItemIndexItemId), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "integer", + ReferenceToObjectType = LuceneIndexItemInfo.OBJECT_TYPE, + ReferenceType = ObjectDependencyEnum.Required + }; + + formInfo.AddFormItem(formItem); + + SetFormDefinition(info, formInfo); + + if (info.HasChanged) + { + DataClassInfoProvider.SetDataClassInfo(info); + } + } + + public void InstallLuceneLanguageInfo(ResourceInfo resource) + { + var info = DataClassInfoProvider.GetDataClassInfo(LuceneIndexLanguageItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneIndexLanguageItemInfo.OBJECT_TYPE); + + info.ClassName = LuceneIndexLanguageItemInfo.TYPEINFO.ObjectClassName; + info.ClassTableName = LuceneIndexLanguageItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); + info.ClassDisplayName = "Lucene Indexed Language Item"; + info.ClassType = ClassType.OTHER; + info.ClassResourceID = resource.ResourceID; + + var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemID)); + + var formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemName), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true, + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemGuid), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "guid", + Enabled = true + }; + + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneIndexLanguageItemInfo.LuceneIndexLanguageItemIndexItemId), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "integer", + ReferenceToObjectType = LuceneIndexItemInfo.OBJECT_TYPE, + ReferenceType = ObjectDependencyEnum.Required, + }; + + formInfo.AddFormItem(formItem); + + SetFormDefinition(info, formInfo); + + if (info.HasChanged) + { + DataClassInfoProvider.SetDataClassInfo(info); + } + } + + public void InstallLuceneReusableContentTypeItemInfo(ResourceInfo resource) + { + var info = DataClassInfoProvider.GetDataClassInfo(LuceneReusableContentTypeItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneReusableContentTypeItemInfo.OBJECT_TYPE); + + info.ClassName = LuceneReusableContentTypeItemInfo.TYPEINFO.ObjectClassName; + info.ClassTableName = LuceneReusableContentTypeItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); + info.ClassDisplayName = "Lucene Reusable Content Type Item"; + info.ClassType = ClassType.OTHER; + info.ClassResourceID = resource.ResourceID; + + var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemId)); + + var formItem = new FormFieldInfo + { + Name = nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemContentTypeName), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true, + IsUnique = false + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemGuid), + Enabled = true, + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "guid", + }; + + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneReusableContentTypeItemInfo.LuceneReusableContentTypeItemIndexItemId), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "integer", + ReferenceToObjectType = LuceneIndexItemInfo.OBJECT_TYPE, + ReferenceType = ObjectDependencyEnum.Required + }; + + formInfo.AddFormItem(formItem); + + SetFormDefinition(info, formInfo); + + if (info.HasChanged) + { + DataClassInfoProvider.SetDataClassInfo(info); + } + } + + public void InstallLuceneContentTypeItemInfo(ResourceInfo resource) + { + var info = DataClassInfoProvider.GetDataClassInfo(LuceneContentTypeItemInfo.OBJECT_TYPE) ?? DataClassInfo.New(LuceneContentTypeItemInfo.OBJECT_TYPE); + + info.ClassName = LuceneContentTypeItemInfo.TYPEINFO.ObjectClassName; + info.ClassTableName = LuceneContentTypeItemInfo.TYPEINFO.ObjectClassName.Replace(".", "_"); + info.ClassDisplayName = "Lucene Type Item"; + info.ClassType = ClassType.OTHER; + info.ClassResourceID = resource.ResourceID; + + var formInfo = FormHelper.GetBasicFormDefinition(nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemId)); + + var formItem = new FormFieldInfo + { + Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemContentTypeName), + AllowEmpty = false, + Visible = true, + Precision = 0, + Size = 100, + DataType = "text", + Enabled = true, + IsUnique = false + }; + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIncludedPathItemId), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "integer", + ReferenceToObjectType = LuceneIncludedPathItemInfo.OBJECT_TYPE, + ReferenceType = ObjectDependencyEnum.Required, + }; + + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemGuid), + Enabled = true, + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "guid", + }; + + formInfo.AddFormItem(formItem); + + formItem = new FormFieldInfo + { + Name = nameof(LuceneContentTypeItemInfo.LuceneContentTypeItemIndexItemId), + AllowEmpty = false, + Visible = true, + Precision = 0, + DataType = "integer", + ReferenceToObjectType = LuceneIndexItemInfo.OBJECT_TYPE, + ReferenceType = ObjectDependencyEnum.Required + }; + + formInfo.AddFormItem(formItem); + + SetFormDefinition(info, formInfo); + + if (info.HasChanged) + { + DataClassInfoProvider.SetDataClassInfo(info); + } + } + + /// + /// Ensure that the form is upserted with any existing form + /// + /// + /// + private static void SetFormDefinition(DataClassInfo info, FormInfo form) + { + if (info.ClassID > 0) + { + var existingForm = new FormInfo(info.ClassFormDefinition); + existingForm.CombineWithForm(form, new()); + info.ClassFormDefinition = existingForm.GetXmlDefinition(); + } + else + { + info.ClassFormDefinition = form.GetXmlDefinition(); + } + } +} From ff88d5fefdf541d6e5283b6ece201464eededfb5 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Sun, 18 Aug 2024 10:44:49 +0200 Subject: [PATCH 03/22] feat(docs): add reusable content types --- docs/Managing-Indexes.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/Managing-Indexes.md b/docs/Managing-Indexes.md index 3a7aba3..287048d 100644 --- a/docs/Managing-Indexes.md +++ b/docs/Managing-Indexes.md @@ -12,19 +12,22 @@ Create a new index or select and index to edit by clicking the index row or the Fill out the search index form, populating the fields with your custom values. -![Administration search index list](/images/xperience-administration-search-index-edit-form.jpg) +![Administration search index edit form](/images/xperience-administration-search-index-edit-form.jpg) -- Rebuild Hook - for validating a request rebuild of the search index from an external source (ex: API request) -- Indexed Languages - the index will only include content in the selected languages -- Channel Name - the index will only be triggered by web page item creation or modication in the selected website channel +- Index Name - the name of the displayed index. +- Included Reusable Content Types - these are the reusable content types that will be processed by your custom indexing strategy. +If no option is selected, no items will be processed. +- Indexed Languages - the index will only include content in the selected languages. +- Channel Name - the index will only be triggered by web page item creation or modication in the selected website channel. - Indexing Strategy - the indexing strategy specified in code during dependency registration of a custom indexing strategies. - - If you want the default strategy to appear here, register it explicitly in `IServiceCollection.AddKenticoLucene()` method + - If you want the default strategy to appear here, register it explicitly in `IServiceCollection.AddKenticoLucene()` method. - Lucene Analyzer - the Lucene analyzer which indexes use to analyze text. +- Rebuild Hook - for validating a request rebuild of the search index from an external source (ex: API request). Now, configure the web page paths and content types that the search index depends on by clicking the Add New Path button or clicking an existing path in the table at the top of the index configuration form. -![Administration search index list](/images/xperience-administration-search-index-edit-form-paths-edit.jpg) +![Administration search index edit paths form](/images/xperience-administration-search-index-edit-form-paths-edit.jpg) - Included Path - can be an exact relative path of a web page item, (ex: `/path/to/my/page`), or a wildcard path (ex: `/parent-path/%`) - To determine a web page path, select the web page in the website channel page tree, then view the "Current URL" in the Content tab of the web page. The path will be the relative path excluding the domain From f90559b339c04f6b390ae5b431632e6c4b1ac35f Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Sun, 18 Aug 2024 10:48:39 +0200 Subject: [PATCH 04/22] fix(Lucene.Admin): wrong placeholder in content type selection --- .../src/templates/LuceneIndexConfigurationFormComponent.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Kentico.Xperience.Lucene.Admin/Client/src/templates/LuceneIndexConfigurationFormComponent.tsx b/src/Kentico.Xperience.Lucene.Admin/Client/src/templates/LuceneIndexConfigurationFormComponent.tsx index 22d1a8a..a19698c 100644 --- a/src/Kentico.Xperience.Lucene.Admin/Client/src/templates/LuceneIndexConfigurationFormComponent.tsx +++ b/src/Kentico.Xperience.Lucene.Admin/Client/src/templates/LuceneIndexConfigurationFormComponent.tsx @@ -421,7 +421,6 @@ export const LuceneIndexConfigurationFormComponent = ( defaultValue={contentTypesValue} options={options} onChange={selectContentTypes} - placeholder="Select a tag type" styles={customStyle} hideSelectedOptions={false} components={{ MultiValueRemove, ClearIndicator, Option }} From 729ec2c5dc578a8068c19806d14e9874f35b9d08 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Sun, 18 Aug 2024 10:52:09 +0200 Subject: [PATCH 05/22] fix(Lucene.Admin): reusable content provider comment --- .../Providers/ReusableContentOptionsProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs b/src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs index ca0e9d5..7c8172a 100644 --- a/src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs +++ b/src/Kentico.Xperience.Lucene.Admin/Providers/ReusableContentOptionsProvider.cs @@ -21,7 +21,7 @@ public async Task> GetItemsAsync(string searchTerm, // Ensures paging of items itemQuery.Page(pageIndex, 20); - // Retrieves the users and converts them into ObjectSelectorListItem options + // Retrieves the reusable content types and converts them into ObjectSelectorListItem options var items = (await itemQuery.GetEnumerableTypedResultAsync()).Select(x => new ObjectSelectorListItem() { Value = x.ClassName, From 8c9390c3194721fd679e8c4a0ac0c4804cc3e450 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Sun, 18 Aug 2024 11:14:03 +0200 Subject: [PATCH 06/22] feat(docs): reusable content types images --- ...tion-search-index-edit-form-paths-edit.jpg | Bin 129175 -> 144552 bytes ...-administration-search-index-edit-form.jpg | Bin 141254 -> 134461 bytes .../LuceneIndexConfigurationFormComponent.tsx | 1 + .../Indexing/DefaultLuceneClient.cs | 2 -- 4 files changed, 1 insertion(+), 2 deletions(-) diff --git a/images/xperience-administration-search-index-edit-form-paths-edit.jpg b/images/xperience-administration-search-index-edit-form-paths-edit.jpg index 79cd3253d7a512b2bf0b8df1b3d3796342c32b0b..415bb8651faea2991db063853d20cacb3327354c 100644 GIT binary patch literal 144552 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 EUpmSRv;Y7A literal 129175 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 z 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%0A1EjJ)Z|iDj3rBoHb?d5 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 literal 141254 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 MapToEventReusableItem(IContentQ string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? ""; - var websiteChannels = await GetAllWebsiteChannels(); - var item = new IndexEventReusableItemModel( content.ContentItemID, content.ContentItemGUID, From 483b408fb5726b9f4ba8718ec15c244481db5265 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 19 Aug 2024 14:03:05 +0200 Subject: [PATCH 07/22] feat(Lucene.Core): indexing reusable content example strategy --- .../Search/AdvancedSearchIndexingStrategy.cs | 2 +- .../DancingGoatSearchStartupExtensions.cs | 1 + .../ReusableContentItemsIndexingStrategy.cs | 110 ++++++++++++++++++ 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs diff --git a/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs b/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs index ee716a9..63741ab 100644 --- a/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs +++ b/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs @@ -15,7 +15,7 @@ namespace DancingGoat.Search; public class AdvancedSearchIndexingStrategy : DefaultLuceneIndexingStrategy { - public static string SORTABLE_TITLE_FIELD_NAME = "SortableTitle"; + public const string SORTABLE_TITLE_FIELD_NAME = "SortableTitle"; private readonly IWebPageQueryResultMapper webPageMapper; private readonly IContentQueryExecutor queryExecutor; diff --git a/examples/DancingGoat/Search/DancingGoatSearchStartupExtensions.cs b/examples/DancingGoat/Search/DancingGoatSearchStartupExtensions.cs index 0e26467..53d411d 100644 --- a/examples/DancingGoat/Search/DancingGoatSearchStartupExtensions.cs +++ b/examples/DancingGoat/Search/DancingGoatSearchStartupExtensions.cs @@ -12,6 +12,7 @@ public static IServiceCollection AddKenticoDancingGoatLuceneServices(this IServi { builder.RegisterStrategy("DancingGoatExampleStrategy"); builder.RegisterStrategy("DancingGoatMinimalExampleStrategy"); + builder.RegisterStrategy(nameof(ReusableContentItemsIndexingStrategy)); builder.RegisterAnalyzer("Czech analyzer"); }); diff --git a/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs b/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs new file mode 100644 index 0000000..06a4786 --- /dev/null +++ b/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs @@ -0,0 +1,110 @@ +using CMS.ContentEngine; +using CMS.Websites; + +using DancingGoat.Models; +using DancingGoat.Search.Services; + +using Kentico.Xperience.Lucene.Core; +using Kentico.Xperience.Lucene.Core.Indexing; + +using Lucene.Net.Documents; +using Lucene.Net.Facet; + +namespace DancingGoat.Search; + +public class ReusableContentItemsIndexingStrategy : DefaultLuceneIndexingStrategy +{ + public static string SORTABLE_TITLE_FIELD_NAME = "SortableTitle"; + + private readonly IWebPageQueryResultMapper webPageMapper; + private readonly IContentQueryExecutor queryExecutor; + private readonly IWebPageUrlRetriever urlRetriever; + private readonly WebScraperHtmlSanitizer htmlSanitizer; + private readonly WebCrawlerService webCrawler; + + public const string FACET_DIMENSION = "ContentType"; + public const string INDEXED_WEBSITECHANNEL_NAME = "DancingGoatPages"; + public const string CRAWLER_CONTENT_FIELD_NAME = "Content"; + + public ReusableContentItemsIndexingStrategy( + IWebPageQueryResultMapper webPageMapper, + IContentQueryExecutor queryExecutor, + IWebPageUrlRetriever urlRetriever, + WebScraperHtmlSanitizer htmlSanitizer, + WebCrawlerService webCrawler + ) + { + this.urlRetriever = urlRetriever; + this.webPageMapper = webPageMapper; + this.queryExecutor = queryExecutor; + this.htmlSanitizer = htmlSanitizer; + this.webCrawler = webCrawler; + } + + public override async Task MapToLuceneDocumentOrNull(IIndexEventItemModel item) + { + var document = new Document(); + + string sortableTitle = ""; + string title = ""; + string content = ""; + + // IIndexEventItemModel could be a reusable content item or a web page item, so we use + // pattern matching to get access to the web page item specific type and fields + if (item is IndexEventReusableItemModel indexedItem) + { + var query = new ContentItemQueryBuilder() + .ForContentType(HomePage.CONTENT_TYPE_NAME, + config => + config + .WithLinkedItems(4) + + // Because the changedItem is a reusable content item, we don't have a website channel name to use here + // so we use a hardcoded channel name. + .ForWebsite(INDEXED_WEBSITECHANNEL_NAME) + + // Retrieves all ArticlePages that link to the Article through the ArticlePage.ArticlePageArticle field + .Linking(nameof(HomePage.HomePageBanner), new[] { indexedItem.ItemID })) + .InLanguage(indexedItem.LanguageName); + + var associatedWebPageItem = (await queryExecutor.GetWebPageResult(query, webPageMapper.Map)).First(); + string url = string.Empty; + try + { + url = (await urlRetriever.Retrieve(associatedWebPageItem.SystemFields.WebPageItemTreePath, + INDEXED_WEBSITECHANNEL_NAME, indexedItem.LanguageName)).RelativePath; + } + catch (Exception) + { + // Retrieve can throw an exception when processing a page update LuceneQueueItem + // and the page was deleted before the update task has processed. In this case, return no item. + return null; + } + + sortableTitle = title = associatedWebPageItem!.HomePageBanner.First().BannerText; + string rawContent = await webCrawler.CrawlWebPage(associatedWebPageItem!); + content = htmlSanitizer.SanitizeHtmlDocument(rawContent); + + //If the indexed item is a reusable content item, we need to set the url manually. + document.Add(new StringField(BaseDocumentProperties.URL, url, Field.Store.YES)); + document.Add(new TextField(nameof(DancingGoatSearchResultModel.Title), title, Field.Store.YES)); + document.Add(new StringField(SORTABLE_TITLE_FIELD_NAME, sortableTitle, Field.Store.YES)); + document.Add(new TextField(CRAWLER_CONTENT_FIELD_NAME, content, Field.Store.NO)); + + return document; + } + else + { + return null; + } + } + + public override FacetsConfig FacetsConfigFactory() + { + var facetConfig = new FacetsConfig(); + + facetConfig.SetMultiValued(FACET_DIMENSION, true); + + return facetConfig; + } +} From 9f72ae1c9b23cdd353f2359a99f258de31a51fec Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 19 Aug 2024 14:13:58 +0200 Subject: [PATCH 08/22] feat(docs): indexing reusable content --- docs/Custom-index-strategy.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Custom-index-strategy.md b/docs/Custom-index-strategy.md index b9b0727..ea957da 100644 --- a/docs/Custom-index-strategy.md +++ b/docs/Custom-index-strategy.md @@ -83,6 +83,7 @@ public static class BaseDocumentProperties public const string ID = "ID"; public const string CONTENT_TYPE_NAME = "ContentTypeName"; // ... + // This field is only added to the document if the indexed item is a web page. public const string URL = "Url"; } ``` From c1b46e4f296cf21983718627a4c9b11102bb86ab Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 19 Aug 2024 14:54:04 +0200 Subject: [PATCH 09/22] fix(docs): remove invalid images --- ...tion-search-index-edit-form-paths-edit.jpg | Bin 144552 -> 0 bytes ...-administration-search-index-edit-form.jpg | Bin 134461 -> 0 bytes .../Indexing/IIndexEventItemModel.cs | 304 +++++++++--------- 3 files changed, 152 insertions(+), 152 deletions(-) delete mode 100644 images/xperience-administration-search-index-edit-form-paths-edit.jpg delete mode 100644 images/xperience-administration-search-index-edit-form.jpg diff --git a/images/xperience-administration-search-index-edit-form-paths-edit.jpg b/images/xperience-administration-search-index-edit-form-paths-edit.jpg deleted file mode 100644 index 415bb8651faea2991db063853d20cacb3327354c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144552 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 EUpmSRv;Y7A diff --git a/images/xperience-administration-search-index-edit-form.jpg b/images/xperience-administration-search-index-edit-form.jpg deleted file mode 100644 index 79e294b26018a68aa8c90391963851eea20f4eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134461 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%0A1EjJ)Z|iDj3rBoHb?d5 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 diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/IIndexEventItemModel.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/IIndexEventItemModel.cs index 5837dae..7ddf82d 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/IIndexEventItemModel.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/IIndexEventItemModel.cs @@ -1,152 +1,152 @@ -using CMS.ContentEngine; -using CMS.Websites; - -namespace Kentico.Xperience.Lucene.Core.Indexing; - -/// -/// Abstraction of different types of events generated from content modifications -/// -public interface IIndexEventItemModel -{ - /// - /// The identifier of the item - /// - int ItemID { get; set; } - Guid ItemGuid { get; set; } - string LanguageName { get; set; } - string ContentTypeName { get; set; } - string Name { get; set; } - bool IsSecured { get; set; } - int ContentTypeID { get; set; } - int ContentLanguageID { get; set; } -} - -/// -/// Represents a modification to a web page -/// -public class IndexEventWebPageItemModel : IIndexEventItemModel -{ - /// - /// The - /// - public int ItemID { get; set; } - /// - /// The - /// - public Guid ItemGuid { get; set; } - public string LanguageName { get; set; } = string.Empty; - public string ContentTypeName { get; set; } = string.Empty; - /// - /// The - /// - public string Name { get; set; } = string.Empty; - public bool IsSecured { get; set; } - public int ContentTypeID { get; set; } - public int ContentLanguageID { get; set; } - - public string WebsiteChannelName { get; set; } = string.Empty; - public string WebPageItemTreePath { get; set; } = string.Empty; - public int? ParentID { get; set; } - public int Order { get; set; } - public IndexEventWebPageItemModel() { } - public IndexEventWebPageItemModel( - int itemID, - Guid itemGuid, - string languageName, - string contentTypeName, - string name, - bool isSecured, - int contentTypeID, - int contentLanguageID, - string websiteChannelName, - string webPageItemTreePath, - int parentID, - int order - ) - { - ItemID = itemID; - ItemGuid = itemGuid; - LanguageName = languageName; - ContentTypeName = contentTypeName; - WebsiteChannelName = websiteChannelName; - WebPageItemTreePath = webPageItemTreePath; - ParentID = parentID; - Order = order; - Name = name; - IsSecured = isSecured; - ContentTypeID = contentTypeID; - ContentLanguageID = contentLanguageID; - } - - public IndexEventWebPageItemModel( - int itemID, - Guid itemGuid, - string languageName, - string contentTypeName, - string name, - bool isSecured, - int contentTypeID, - int contentLanguageID, - string websiteChannelName, - string webPageItemTreePath, - int order - ) - { - ItemID = itemID; - ItemGuid = itemGuid; - LanguageName = languageName; - ContentTypeName = contentTypeName; - WebsiteChannelName = websiteChannelName; - WebPageItemTreePath = webPageItemTreePath; - Order = order; - Name = name; - IsSecured = isSecured; - ContentTypeID = contentTypeID; - ContentLanguageID = contentLanguageID; - } -} - -/// -/// Represents a modification to a reusable content item -/// -public class IndexEventReusableItemModel : IIndexEventItemModel -{ - /// - /// The - /// - public int ItemID { get; set; } - /// - /// The - /// - public Guid ItemGuid { get; set; } - public string LanguageName { get; set; } = string.Empty; - public string ContentTypeName { get; set; } = string.Empty; - /// - /// The - /// - public string Name { get; set; } = string.Empty; - public bool IsSecured { get; set; } - public int ContentTypeID { get; set; } - public int ContentLanguageID { get; set; } - public IndexEventReusableItemModel() { } - public IndexEventReusableItemModel( - int itemID, - Guid itemGuid, - string languageName, - string contentTypeName, - string name, - bool isSecured, - int contentTypeID, - int contentLanguageID - ) - { - ItemID = itemID; - ItemGuid = itemGuid; - LanguageName = languageName; - ContentTypeName = contentTypeName; - Name = name; - IsSecured = isSecured; - ContentTypeID = contentTypeID; - ContentLanguageID = contentLanguageID; - } -} +using CMS.ContentEngine; +using CMS.Websites; + +namespace Kentico.Xperience.Lucene.Core.Indexing; + +/// +/// Abstraction of different types of events generated from content modifications +/// +public interface IIndexEventItemModel +{ + /// + /// The identifier of the item + /// + int ItemID { get; set; } + Guid ItemGuid { get; set; } + string LanguageName { get; set; } + string ContentTypeName { get; set; } + string Name { get; set; } + bool IsSecured { get; set; } + int ContentTypeID { get; set; } + int ContentLanguageID { get; set; } +} + +/// +/// Represents a modification to a web page +/// +public class IndexEventWebPageItemModel : IIndexEventItemModel +{ + /// + /// The + /// + public int ItemID { get; set; } + /// + /// The + /// + public Guid ItemGuid { get; set; } + public string LanguageName { get; set; } = string.Empty; + public string ContentTypeName { get; set; } = string.Empty; + /// + /// The + /// + public string Name { get; set; } = string.Empty; + public bool IsSecured { get; set; } + public int ContentTypeID { get; set; } + public int ContentLanguageID { get; set; } + + public string WebsiteChannelName { get; set; } = string.Empty; + public string WebPageItemTreePath { get; set; } = string.Empty; + public int? ParentID { get; set; } + public int Order { get; set; } + public IndexEventWebPageItemModel() { } + public IndexEventWebPageItemModel( + int itemID, + Guid itemGuid, + string languageName, + string contentTypeName, + string name, + bool isSecured, + int contentTypeID, + int contentLanguageID, + string websiteChannelName, + string webPageItemTreePath, + int parentID, + int order + ) + { + ItemID = itemID; + ItemGuid = itemGuid; + LanguageName = languageName; + ContentTypeName = contentTypeName; + WebsiteChannelName = websiteChannelName; + WebPageItemTreePath = webPageItemTreePath; + ParentID = parentID; + Order = order; + Name = name; + IsSecured = isSecured; + ContentTypeID = contentTypeID; + ContentLanguageID = contentLanguageID; + } + + public IndexEventWebPageItemModel( + int itemID, + Guid itemGuid, + string languageName, + string contentTypeName, + string name, + bool isSecured, + int contentTypeID, + int contentLanguageID, + string websiteChannelName, + string webPageItemTreePath, + int order + ) + { + ItemID = itemID; + ItemGuid = itemGuid; + LanguageName = languageName; + ContentTypeName = contentTypeName; + WebsiteChannelName = websiteChannelName; + WebPageItemTreePath = webPageItemTreePath; + Order = order; + Name = name; + IsSecured = isSecured; + ContentTypeID = contentTypeID; + ContentLanguageID = contentLanguageID; + } +} + +/// +/// Represents a modification to a reusable content item +/// +public class IndexEventReusableItemModel : IIndexEventItemModel +{ + /// + /// The + /// + public int ItemID { get; set; } + /// + /// The + /// + public Guid ItemGuid { get; set; } + public string LanguageName { get; set; } = string.Empty; + public string ContentTypeName { get; set; } = string.Empty; + /// + /// The + /// + public string Name { get; set; } = string.Empty; + public bool IsSecured { get; set; } + public int ContentTypeID { get; set; } + public int ContentLanguageID { get; set; } + public IndexEventReusableItemModel() { } + public IndexEventReusableItemModel( + int itemID, + Guid itemGuid, + string languageName, + string contentTypeName, + string name, + bool isSecured, + int contentTypeID, + int contentLanguageID + ) + { + ItemID = itemID; + ItemGuid = itemGuid; + LanguageName = languageName; + ContentTypeName = contentTypeName; + Name = name; + IsSecured = isSecured; + ContentTypeID = contentTypeID; + ContentLanguageID = contentLanguageID; + } +} From 6843ac24efe10e91103355ccd3e2aa4f0e632e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Boris=20Kapust=C3=ADk?= <82807109+bkapustik@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:02:07 +0200 Subject: [PATCH 10/22] Add files via upload --- ...ation-search-index-edit-form-paths-edit.jpg | Bin 0 -> 144553 bytes ...e-administration-search-index-edit-form.jpg | Bin 0 -> 134496 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/xperience-administration-search-index-edit-form-paths-edit.jpg create mode 100644 images/xperience-administration-search-index-edit-form.jpg diff --git a/images/xperience-administration-search-index-edit-form-paths-edit.jpg b/images/xperience-administration-search-index-edit-form-paths-edit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ee97134e03c8b8421126761a682a5cbadfd6570 GIT binary patch literal 144553 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

-/// Declares members for management. -/// -public partial interface ILuceneContentTypeItemInfoProvider -{ - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Declares members for management. +/// +public partial interface ILuceneContentTypeItemInfoProvider +{ + /// + /// Bulk deletes objects based on the given condition. + /// + /// Where condition for the objects which should be deleted. + /// Configuration settings. + void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs index 46187f1..3c09342 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs @@ -27,7 +27,7 @@ public partial class LuceneContentTypeItemInfo : AbstractInfo /// Type information. /// - public static readonly ObjectTypeInfo TYPEINFO = new(typeof(LuceneContentTypeItemInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneContentTypeItem", nameof(LuceneContentTypeItemId), null, nameof(LuceneContentTypeItemGuid), null, null, null, null, null) + public static readonly ObjectTypeInfo TYPEINFO = new(typeof(IInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneContentTypeItem", nameof(LuceneContentTypeItemId), null, nameof(LuceneContentTypeItemGuid), null, null, null, null, null) { TouchCacheDependencies = true, DependsOn = new List() diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfoProvider.generated.cs deleted file mode 100644 index 7434d99..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfoProvider.generated.cs +++ /dev/null @@ -1,18 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Class providing management. -/// -[ProviderInterface(typeof(ILuceneContentTypeItemInfoProvider))] -public partial class LuceneContentTypeItemInfoProvider : AbstractInfoProvider, ILuceneContentTypeItemInfoProvider -{ - /// - /// Initializes a new instance of the class. - /// - public LuceneContentTypeItemInfoProvider() - : base(LuceneContentTypeItemInfo.TYPEINFO) - { - } -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs index fa055df..bb11e2e 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs @@ -1,8 +1,16 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -public partial interface ILuceneIncludedPathItemInfoProvider -{ - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Declares members for management. +/// +public partial interface ILuceneIncludedPathItemInfoProvider +{ + /// + /// Bulk deletes objects based on the given condition. + /// + /// Where condition for the objects which should be deleted. + /// Configuration settings. + void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs index d272bc5..78acf64 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs @@ -26,7 +26,7 @@ public partial class LuceneIncludedPathItemInfo : AbstractInfo /// Type information. /// - public static readonly ObjectTypeInfo TYPEINFO = new(typeof(LuceneIncludedPathItemInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneIncludedPathItem", nameof(LuceneIncludedPathItemId), null, nameof(LuceneIncludedPathItemGuid), null, null, null, null, null) + public static readonly ObjectTypeInfo TYPEINFO = new(typeof(IInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneIncludedPathItem", nameof(LuceneIncludedPathItemId), null, nameof(LuceneIncludedPathItemGuid), null, null, null, null, null) { TouchCacheDependencies = true, DependsOn = new List() diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfoProvider.generated.cs deleted file mode 100644 index dc1615a..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfoProvider.generated.cs +++ /dev/null @@ -1,18 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Class providing management. -/// -[ProviderInterface(typeof(ILuceneIncludedPathItemInfoProvider))] -public partial class LuceneIncludedPathItemInfoProvider : AbstractInfoProvider, ILuceneIncludedPathItemInfoProvider -{ - /// - /// Initializes a new instance of the class. - /// - public LuceneIncludedPathItemInfoProvider() - : base(LuceneIncludedPathItemInfo.TYPEINFO) - { - } -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs index 94194c5..d75c962 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs @@ -1,8 +1,16 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -public partial interface ILuceneIndexItemInfoProvider -{ - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Declares members for management. +/// +public partial interface ILuceneIndexItemInfoProvider +{ + /// + /// Bulk deletes objects based on the given condition. + /// + /// Where condition for the objects which should be deleted. + /// Configuration settings. + void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs index 758a901..bbcc090 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs @@ -26,7 +26,7 @@ public partial class LuceneIndexItemInfo : AbstractInfo /// Type information. /// - public static readonly ObjectTypeInfo TYPEINFO = new(typeof(LuceneIndexItemInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneIndexItem", nameof(LuceneIndexItemId), null, nameof(LuceneIndexItemGuid), nameof(LuceneIndexItemIndexName), null, null, null, null) + public static readonly ObjectTypeInfo TYPEINFO = new(typeof(IInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneIndexItem", nameof(LuceneIndexItemId), null, nameof(LuceneIndexItemGuid), nameof(LuceneIndexItemIndexName), null, null, null, null) { TouchCacheDependencies = true, ContinuousIntegrationSettings = diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfoProvider.generated.cs deleted file mode 100644 index 96f8fe8..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfoProvider.generated.cs +++ /dev/null @@ -1,18 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Class providing management. -/// -[ProviderInterface(typeof(ILuceneIndexItemInfoProvider))] -public partial class LuceneIndexItemInfoProvider : AbstractInfoProvider, ILuceneIndexItemInfoProvider -{ - /// - /// Initializes a new instance of the class. - /// - public LuceneIndexItemInfoProvider() - : base(LuceneIndexItemInfo.TYPEINFO) - { - } -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs index 4714da7..d49abd6 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs @@ -1,11 +1,16 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneIndexLanguageItemInfoProvider -{ - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} +using CMS.DataEngine; + +namespace Kentico.Xperience.Lucene.Core; + +/// +/// Declares members for management. +/// +public partial interface ILuceneIndexLanguageItemInfoProvider +{ + /// + /// Bulk deletes objects based on the given condition. + /// + /// Where condition for the objects which should be deleted. + /// Configuration settings. + void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); +} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs index 131835f..8dcef69 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs @@ -26,7 +26,7 @@ public partial class LuceneIndexLanguageItemInfo : AbstractInfo /// Type information. /// - public static readonly ObjectTypeInfo TYPEINFO = new(typeof(LuceneIndexedLanguageInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneIndexLanguageItem", nameof(LuceneIndexLanguageItemID), null, nameof(LuceneIndexLanguageItemGuid), null, null, null, null, null) + public static readonly ObjectTypeInfo TYPEINFO = new(typeof(IInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneIndexLanguageItem", nameof(LuceneIndexLanguageItemID), null, nameof(LuceneIndexLanguageItemGuid), null, null, null, null, null) { TouchCacheDependencies = true, DependsOn = new List() diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfoProvider.generated.cs deleted file mode 100644 index 2492aae..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfoProvider.generated.cs +++ /dev/null @@ -1,18 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Class providing management. -/// -[ProviderInterface(typeof(ILuceneIndexLanguageItemInfoProvider))] -public partial class LuceneIndexedLanguageInfoProvider : AbstractInfoProvider, ILuceneIndexLanguageItemInfoProvider -{ - /// - /// Initializes a new instance of the class. - /// - public LuceneIndexedLanguageInfoProvider() - : base(LuceneIndexLanguageItemInfo.TYPEINFO) - { - } -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs index f51ad1e..70a77ed 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs @@ -7,5 +7,10 @@ namespace Kentico.Xperience.Lucene.Core; /// public partial interface ILuceneReusableContentTypeItemInfoProvider { + /// + /// Bulk deletes objects based on the given condition. + /// + /// Where condition for the objects which should be deleted. + /// Configuration settings. void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); } diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs index 58ca754..d5d5967 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs @@ -27,7 +27,7 @@ public partial class LuceneReusableContentTypeItemInfo : AbstractInfo /// Type information. /// - public static readonly ObjectTypeInfo TYPEINFO = new(typeof(LuceneReusableContentTypeItemInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneReusableContentTypeItem", nameof(LuceneReusableContentTypeItemId), null, nameof(LuceneReusableContentTypeItemGuid), null, null, null, null, null) + public static readonly ObjectTypeInfo TYPEINFO = new(typeof(IInfoProvider), OBJECT_TYPE, "KenticoLucene.LuceneReusableContentTypeItem", nameof(LuceneReusableContentTypeItemId), null, nameof(LuceneReusableContentTypeItemGuid), null, null, null, null, null) { TouchCacheDependencies = true, DependsOn = new List() diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs deleted file mode 100644 index 3300f0d..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs +++ /dev/null @@ -1,18 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Class providing management. -/// -[ProviderInterface(typeof(ILuceneReusableContentTypeItemInfoProvider))] -public partial class LuceneReusableContentTypeItemInfoProvider : AbstractInfoProvider, ILuceneReusableContentTypeItemInfoProvider -{ - /// - /// Initializes a new instance of the class. - /// - public LuceneReusableContentTypeItemInfoProvider() - : base(LuceneReusableContentTypeItemInfo.TYPEINFO) - { - } -} From 9e16fb33f02bb31aea70e353eb0110d50f855c3b Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:12:10 +0200 Subject: [PATCH 19/22] refactor(Lucene.Core): use iinfoproviders --- ...efaultLuceneConfigurationStorageService.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs index e833124..f2363c2 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs @@ -7,18 +7,18 @@ namespace Kentico.Xperience.Lucene.Core.Indexing; internal class DefaultLuceneConfigurationStorageService : ILuceneConfigurationStorageService { - private readonly ILuceneIndexItemInfoProvider indexProvider; - private readonly ILuceneIncludedPathItemInfoProvider pathProvider; - private readonly ILuceneContentTypeItemInfoProvider contentTypeProvider; - private readonly ILuceneReusableContentTypeItemInfoProvider reusableContentTypeProvider; - private readonly ILuceneIndexLanguageItemInfoProvider languageProvider; + private readonly IInfoProvider indexProvider; + private readonly IInfoProvider pathProvider; + private readonly IInfoProvider contentTypeProvider; + private readonly IInfoProvider reusableContentTypeProvider; + private readonly IInfoProvider languageProvider; public DefaultLuceneConfigurationStorageService( - ILuceneIndexItemInfoProvider indexProvider, - ILuceneIncludedPathItemInfoProvider pathProvider, - ILuceneContentTypeItemInfoProvider contentTypeProvider, - ILuceneReusableContentTypeItemInfoProvider reusableContentTypeProvider, - ILuceneIndexLanguageItemInfoProvider languageProvider + IInfoProvider indexProvider, + IInfoProvider pathProvider, + IInfoProvider contentTypeProvider, + IInfoProvider reusableContentTypeProvider, + IInfoProvider languageProvider ) { this.indexProvider = indexProvider; From 7a2554c965298272ae1b2e1c380c53529a4f403e Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:26:17 +0200 Subject: [PATCH 20/22] refactor(docs): change "" to string.Empty --- docs/Custom-index-strategy.md | 12 ++++++------ docs/Scraping-web-page-content.md | 10 +++++----- docs/Search-index-querying.md | 8 ++++---- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/Custom-index-strategy.md b/docs/Custom-index-strategy.md index ea957da..ecf5ce9 100644 --- a/docs/Custom-index-strategy.md +++ b/docs/Custom-index-strategy.md @@ -31,8 +31,8 @@ public class ExampleSearchIndexingStrategy : DefaultLuceneIndexingStrategy { var document = new Document(); - string sortableTitle = ""; - string title = ""; + string sortableTitle = string.Empty; + string title = string.Empty; // IIndexEventItemModel could be a reusable content item or a web page item, so we use // pattern matching to get access to the web page item specific type and fields @@ -60,7 +60,7 @@ public class ExampleSearchIndexingStrategy : DefaultLuceneIndexingStrategy var article = page.ArticlePageArticle.FirstOrDefault(); - sortableTitle = title = article?.ArticleTitle ?? ""; + sortableTitle = title = article?.ArticleTitle ?? string.Empty; } document.Add(new TextField(nameof(GlobalSearchResultModel.Title), title, Field.Store.YES)); @@ -136,9 +136,9 @@ public class ExampleSearchIndexingStrategy : DefaultLuceneIndexingStrategy { var document = new Document(); - string sortableTitle = ""; - string title = ""; - string contentType = ""; + string sortableTitle = string.Empty; + string title = string.Empty; + string contentType = string.Empty; if (item is IndexEventWebPageItemModel webpageItem && string.Equals(indexedModel.ContentTypeName, ArticlePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnorecase)) diff --git a/docs/Scraping-web-page-content.md b/docs/Scraping-web-page-content.md index bf131c1..d29dd20 100644 --- a/docs/Scraping-web-page-content.md +++ b/docs/Scraping-web-page-content.md @@ -57,7 +57,7 @@ public class WebCrawlerService ex, $"Tree Path: {page.SystemFields.WebPageItemTreePath}"); } - return ""; + return string.Empty; } public async Task CrawlPage(string url) @@ -75,7 +75,7 @@ public class WebCrawlerService ex, $"Url: {url}"); } - return ""; + return string.Empty; } } ``` @@ -136,8 +136,8 @@ public class WebScraperHtmlSanitizer textContent = HTMLHelper.RegexHtmlToTextWhiteSpace.Replace(textContent, " "); textContent = textContent.Trim(); - string title = doc.Head?.QuerySelector("title")?.TextContent ?? ""; - string description = doc.Head?.QuerySelector("meta[name='description']")?.GetAttribute("content") ?? ""; + string title = doc.Head?.QuerySelector("title")?.TextContent ?? string.Empty; + string description = doc.Head?.QuerySelector("meta[name='description']")?.GetAttribute("content") ?? string.Empty; return string.Join( " ", @@ -190,7 +190,7 @@ public override async Task MapToLuceneDocumentOrNull(IIndexEventItemM // Setup same as examples in Usage-Guide.md // ... - string content = ""; + string content = string.Empty; if (item is IndexEventWebPageItemModel webpageItem && string.Equals(indexedModel.ContentTypeName, ArticlePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnorecase)) diff --git a/docs/Search-index-querying.md b/docs/Search-index-querying.md index 52b7dac..1751a4a 100644 --- a/docs/Search-index-querying.md +++ b/docs/Search-index-querying.md @@ -11,9 +11,9 @@ To index all existing content, rebuild the index in Xperience's Administration w ```csharp public class GlobalSearchResultModel { - public string Title { get; set; } = ""; - public string ContentType { get; set; } = ""; - public string Url { get; set; } = ""; + public string Title { get; set; } = string.Empty; + public string ContentType { get; set; } = string.Empty; + public string Url { get; set; } = string.Empty; public static List PossibleFacets { get; set; } = new List { @@ -105,7 +105,7 @@ public class SearchService return new LuceneSearchResultModel { - Query = searchText ?? "", + Query = searchText ?? string.Empty, Page = page, PageSize = pageSize, TotalPages = topDocs.TotalHits <= 0 ? 0 : ((topDocs.TotalHits - 1) / pageSize) + 1, From 055dcce3e9738b46f385b99cf5e170189c12ecd9 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:52:16 +0200 Subject: [PATCH 21/22] refactor(Lucene.Core): remove redundand info provider definitions --- .../ILuceneContentTypeItemInfoProvider.cs | 16 ---------------- ...uceneContentTypeItemInfoProvider.generated.cs | 10 ---------- .../LuceneContentTypeItemInfo.generated.cs | 2 +- .../ILuceneIncludedPathItemInfoProvider.cs | 16 ---------------- ...ceneIncludedPathItemInfoProvider.generated.cs | 10 ---------- .../LuceneIncludedPathItemInfo.generated.cs | 2 +- .../ILuceneIndexItemInfoProvider.cs | 16 ---------------- .../ILuceneIndexItemInfoProvider.generated.cs | 10 ---------- .../LuceneIndexItemInfo.generated.cs | 2 +- .../ILuceneIndexLanguageItemInfoProvider.cs | 16 ---------------- ...eneIndexLanguageItemInfoProvider.generated.cs | 10 ---------- .../LuceneIndexLanguageItemInfo.generated.cs | 2 +- ...ILuceneReusableContentTypeItemInfoProvider.cs | 16 ---------------- ...sableContentTypeItemInfoProvider.generated.cs | 10 ---------- ...uceneReusableContentTypeItemInfo.generated.cs | 2 +- 15 files changed, 5 insertions(+), 135 deletions(-) delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs deleted file mode 100644 index 7ec1986..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs +++ /dev/null @@ -1,16 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneContentTypeItemInfoProvider -{ - /// - /// Bulk deletes objects based on the given condition. - /// - /// Where condition for the objects which should be deleted. - /// Configuration settings. - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.generated.cs deleted file mode 100644 index 9f1cc31..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.generated.cs +++ /dev/null @@ -1,10 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneContentTypeItemInfoProvider : IInfoProvider, IInfoByIdProvider, IInfoByNameProvider -{ -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs index 3c09342..f7abc92 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfo.generated.cs @@ -16,7 +16,7 @@ namespace Kentico.Xperience.Lucene.Core; /// Data container class for . /// [Serializable] -public partial class LuceneContentTypeItemInfo : AbstractInfo +public partial class LuceneContentTypeItemInfo : AbstractInfo> { /// /// Object type. diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs deleted file mode 100644 index bb11e2e..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.cs +++ /dev/null @@ -1,16 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneIncludedPathItemInfoProvider -{ - /// - /// Bulk deletes objects based on the given condition. - /// - /// Where condition for the objects which should be deleted. - /// Configuration settings. - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.generated.cs deleted file mode 100644 index a8539f4..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/ILuceneIncludedPathItemInfoProvider.generated.cs +++ /dev/null @@ -1,10 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneIncludedPathItemInfoProvider : IInfoProvider, IInfoByIdProvider -{ -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs index 78acf64..54009c3 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfo.generated.cs @@ -15,7 +15,7 @@ namespace Kentico.Xperience.Lucene.Core; /// Data container class for . /// [Serializable] -public partial class LuceneIncludedPathItemInfo : AbstractInfo +public partial class LuceneIncludedPathItemInfo : AbstractInfo> { /// /// Object type. diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs deleted file mode 100644 index d75c962..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.cs +++ /dev/null @@ -1,16 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneIndexItemInfoProvider -{ - /// - /// Bulk deletes objects based on the given condition. - /// - /// Where condition for the objects which should be deleted. - /// Configuration settings. - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.generated.cs deleted file mode 100644 index 3981b8f..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/ILuceneIndexItemInfoProvider.generated.cs +++ /dev/null @@ -1,10 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneIndexItemInfoProvider : IInfoProvider, IInfoByIdProvider, IInfoByNameProvider -{ -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs index bbcc090..5197793 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfo.generated.cs @@ -15,7 +15,7 @@ namespace Kentico.Xperience.Lucene.Core; /// Data container class for . /// [Serializable] -public partial class LuceneIndexItemInfo : AbstractInfo +public partial class LuceneIndexItemInfo : AbstractInfo> { /// /// Object type. diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs deleted file mode 100644 index d49abd6..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.cs +++ /dev/null @@ -1,16 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneIndexLanguageItemInfoProvider -{ - /// - /// Bulk deletes objects based on the given condition. - /// - /// Where condition for the objects which should be deleted. - /// Configuration settings. - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.generated.cs deleted file mode 100644 index d8d7639..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/ILuceneIndexLanguageItemInfoProvider.generated.cs +++ /dev/null @@ -1,10 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneIndexLanguageItemInfoProvider : IInfoProvider, IInfoByIdProvider -{ -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs index 8dcef69..bc11777 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfo.generated.cs @@ -15,7 +15,7 @@ namespace Kentico.Xperience.Lucene.Core; /// Data container class for . /// [Serializable] -public partial class LuceneIndexLanguageItemInfo : AbstractInfo +public partial class LuceneIndexLanguageItemInfo : AbstractInfo> { /// /// Object type. diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs deleted file mode 100644 index 70a77ed..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.cs +++ /dev/null @@ -1,16 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneReusableContentTypeItemInfoProvider -{ - /// - /// Bulk deletes objects based on the given condition. - /// - /// Where condition for the objects which should be deleted. - /// Configuration settings. - void BulkDelete(IWhereCondition where, BulkDeleteSettings? settings = null); -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs deleted file mode 100644 index 6f491ca..0000000 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/ILuceneReusableContentTypeItemInfoProvider.generated.cs +++ /dev/null @@ -1,10 +0,0 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -/// -/// Declares members for management. -/// -public partial interface ILuceneReusableContentTypeItemInfoProvider : IInfoProvider, IInfoByIdProvider, IInfoByNameProvider -{ -} diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs index d5d5967..f5705ba 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfo.generated.cs @@ -16,7 +16,7 @@ namespace Kentico.Xperience.Lucene.Core; /// Data container class for . /// [Serializable] -public partial class LuceneReusableContentTypeItemInfo : AbstractInfo +public partial class LuceneReusableContentTypeItemInfo : AbstractInfo> { /// /// Object type. From dd9edb315d82f41adfe7dd2d17ca91032c4f1905 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:59:21 +0200 Subject: [PATCH 22/22] refactor(DancingGoat): conditional blocks --- .../Search/AdvancedSearchIndexingStrategy.cs | 78 +++++++++---------- .../Search/Services/SimpleSearchService.cs | 2 +- .../Services/WebScraperHtmlSanitizer.cs | 4 +- .../Search/SimpleSearchIndexingStrategy.cs | 39 +++++----- 4 files changed, 59 insertions(+), 64 deletions(-) diff --git a/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs b/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs index 325699c..b492749 100644 --- a/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs +++ b/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs @@ -49,54 +49,52 @@ WebCrawlerService webCrawler // IIndexEventItemModel could be a reusable content item or a web page item, so we use // pattern matching to get access to the web page item specific type and fields - if (item is IndexEventWebPageItemModel indexedPage) + if (item is not IndexEventWebPageItemModel indexedPage) { - if (string.Equals(item.ContentTypeName, ArticlePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + return null; + } + + if (string.Equals(item.ContentTypeName, ArticlePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + { + // The implementation of GetPage() is below + var page = await GetPage( + indexedPage.ItemGuid, + indexedPage.WebsiteChannelName, + indexedPage.LanguageName, + ArticlePage.CONTENT_TYPE_NAME); + + if (page is null) { - // The implementation of GetPage() is below - var page = await GetPage( - indexedPage.ItemGuid, - indexedPage.WebsiteChannelName, - indexedPage.LanguageName, - ArticlePage.CONTENT_TYPE_NAME); - - if (page is null) - { - return null; - } - - sortableTitle = title = page?.ArticleTitle ?? string.Empty; - - string rawContent = await webCrawler.CrawlWebPage(page!); - content = htmlSanitizer.SanitizeHtmlDocument(rawContent); + return null; } - else if (string.Equals(item.ContentTypeName, HomePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + + sortableTitle = title = page?.ArticleTitle ?? string.Empty; + + string rawContent = await webCrawler.CrawlWebPage(page!); + content = htmlSanitizer.SanitizeHtmlDocument(rawContent); + } + else if (string.Equals(item.ContentTypeName, HomePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + { + var page = await GetPage( + indexedPage.ItemGuid, + indexedPage.WebsiteChannelName, + indexedPage.LanguageName, + HomePage.CONTENT_TYPE_NAME); + + if (page is null) { - var page = await GetPage( - indexedPage.ItemGuid, - indexedPage.WebsiteChannelName, - indexedPage.LanguageName, - HomePage.CONTENT_TYPE_NAME); - - if (page is null) - { - return null; - } - - if (page.HomePageBanner.IsNullOrEmpty()) - { - return null; - } - - sortableTitle = title = page!.HomePageBanner.First().BannerText; - - string rawContent = await webCrawler.CrawlWebPage(page!); - content = htmlSanitizer.SanitizeHtmlDocument(rawContent); + return null; } - else + + if (page.HomePageBanner.IsNullOrEmpty()) { return null; } + + sortableTitle = title = page!.HomePageBanner.First().BannerText; + + string rawContent = await webCrawler.CrawlWebPage(page!); + content = htmlSanitizer.SanitizeHtmlDocument(rawContent); } else { diff --git a/examples/DancingGoat/Search/Services/SimpleSearchService.cs b/examples/DancingGoat/Search/Services/SimpleSearchService.cs index a1da20c..cc3aeef 100644 --- a/examples/DancingGoat/Search/Services/SimpleSearchService.cs +++ b/examples/DancingGoat/Search/Services/SimpleSearchService.cs @@ -47,7 +47,7 @@ public LuceneSearchResultModel GlobalSearch( return new LuceneSearchResultModel { - Query = searchText ?? "", + Query = searchText ?? string.Empty, Page = page, PageSize = pageSize, TotalPages = topDocs.TotalHits <= 0 ? 0 : ((topDocs.TotalHits - 1) / pageSize) + 1, diff --git a/examples/DancingGoat/Search/Services/WebScraperHtmlSanitizer.cs b/examples/DancingGoat/Search/Services/WebScraperHtmlSanitizer.cs index da935d6..473e19e 100644 --- a/examples/DancingGoat/Search/Services/WebScraperHtmlSanitizer.cs +++ b/examples/DancingGoat/Search/Services/WebScraperHtmlSanitizer.cs @@ -53,8 +53,8 @@ public virtual string SanitizeHtmlDocument(string htmlContent) textContent = HTMLHelper.RegexHtmlToTextWhiteSpace.Replace(textContent, " "); textContent = textContent.Trim(); - string title = doc.Head?.QuerySelector("title")?.TextContent ?? ""; - string description = doc.Head?.QuerySelector("meta[name='description']")?.GetAttribute("content") ?? ""; + string title = doc.Head?.QuerySelector("title")?.TextContent ?? string.Empty; + string description = doc.Head?.QuerySelector("meta[name='description']")?.GetAttribute("content") ?? string.Empty; return string.Join( " ", diff --git a/examples/DancingGoat/Search/SimpleSearchIndexingStrategy.cs b/examples/DancingGoat/Search/SimpleSearchIndexingStrategy.cs index 7f367e8..592068d 100644 --- a/examples/DancingGoat/Search/SimpleSearchIndexingStrategy.cs +++ b/examples/DancingGoat/Search/SimpleSearchIndexingStrategy.cs @@ -29,36 +29,33 @@ IContentQueryExecutor queryExecutor { var document = new Document(); - string title = ""; + string title = string.Empty; // IIndexEventItemModel could be a reusable content item or a web page item, so we use // pattern matching to get access to the web page item specific type and fields - if (item is IndexEventWebPageItemModel indexedPage) + if (item is not IndexEventWebPageItemModel indexedPage) { - if (string.Equals(item.ContentTypeName, HomePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + return null; + } + if (string.Equals(item.ContentTypeName, HomePage.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + { + var page = await GetPage( + indexedPage.ItemGuid, + indexedPage.WebsiteChannelName, + indexedPage.LanguageName, + HomePage.CONTENT_TYPE_NAME); + + if (page is null) { - var page = await GetPage( - indexedPage.ItemGuid, - indexedPage.WebsiteChannelName, - indexedPage.LanguageName, - HomePage.CONTENT_TYPE_NAME); - - if (page is null) - { - return null; - } - - if (page.HomePageBanner.IsNullOrEmpty()) - { - return null; - } - - title = page!.HomePageBanner.First().BannerHeaderText; + return null; } - else + + if (page.HomePageBanner.IsNullOrEmpty()) { return null; } + + title = page!.HomePageBanner.First().BannerHeaderText; } else {

WnSm0L_ODou1lq zLgb<(K9r28Wp0&cR}gZ$yrI^kM7{MRuS*Y<_`{pC7l#gyClG$lU1~y@hK=p4_pAmT z?e|VT-x~>Wb>-{bI)3)&-4yf5ig%?yf!N+CJLa3Mc9;!658w#3#&oonUL4Sump_J8 zjyxRRWr(k&0lCuv;*xK>?B5MRRTB>F3)}y$$j^NOXlnkP2k4J%ioW~HzgGbN+Mx35 zDH(vkzwz|^0lxPoDd+nMqtfj`{>dG6dnP}-&Tg;C?ZEk=NAC6(1W2_0umaxR%>RI2 zx4$?$|B1QucHsQ~3!MMUj*>6Iv@1a8{;d-2$|G^G?oQejp0}h&LcamNkilR>&}~R2 z@S~*8`wii&9FPPYz(Y)LRb_>P5c!e$Yes+(A$-CdwT9jd>CyWm*NFWO#&`Y-TiWqy G;J*O#m<+)H literal 0 HcmV?d00001 diff --git a/images/xperience-administration-search-index-edit-form.jpg b/images/xperience-administration-search-index-edit-form.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d99127a5a575ce488c0c14d9da35f9493a0c7fb9 GIT binary patch literal 134496 zcmeEvc_36@|Npf_+N4M-RI(*hMAp$_OR{BOrp3Ob&AyD3C2I(!GP3WIt&mBGsO*H0 zElZKzV2t0n_m0x%dA`f<_wVoNnfaJ|?z!i@xAT6#&+EKrp4Bg_-=OX16qFSpDk>`I z68Imq+6NiPJ6oAUkg6(l7=oaU&;}YRXao2}1>WaqXpq0~XGmi^`We2^V1j7DAMkNo zg~pCQpW%KGm2Vsb<%X_yL1!RpDk}Iz`A4&X2L4A!OG~qXo{pX#es5&h%&>9erj7LU zo3?J+w0R5oN6)a0aqE_C@Mm}s_;L6t@Y=GGek0uD|L))FTZm~RjTh}V8mfa3H4_yL z6V+-Z#0euCvHtk~F&9;Y|hnJ84u;>Xf@skpgXU@ti zC@LwR)4HgwqpPQHaMjez+``hz`qpg+M<-_&*Sq(8eEt0I2ZTpFjEstY^f)FyAu%aA zB{ePmWnO+kVbQDC#qTOAtKL`Fe5h?|ZfR|6|I*Rf*FP{g^nG|_bZlyRW_E6Vfw;H? z^F;;Gplto->>qqF0luh#4ru9NzNo03z?+7NcEf>VbURLI&|ki>^WgD28<|gsJ>+a(p$Y)y$Tsb zkY-n*ADRQCfmJ9=2~*E?X(I} z31y8G$Ck)@-XsQ+H;W9oJ(GW;JelHSYbR3a$ltN zTEc~jZfIySXIM!|DN(g&lIh{u(5jdoEj{}S%j-9_nJY`T<8YRvooLxY(dX(By?Q!g z&Q?EXKR?ZvB^nRSxTn>yO5J!{4ei^i*Xk>a<+GosbQ|`3=~2i#CB2P9BFy)Uz_yJC zvvfNZlryqIKXS9~8sIj+OPWnwg=F|~_2<-Pn!L{-0@6~svkHv?NojFMTdzWMgr!!V z$Rx4MWQ8kXG(ELr55iSBjh3aka%cHn=Aqx9O>SwBp zh7@CEaOWCUp?k8uWH%!+U<>z-6CoNIU1ImGgp(I!2!~IdoCmbFCappn9SEfP*Q9n5 zA9zY~?Wsk*TM6RzoP#j?enkj7!o)LKFgxwv2_#is(t$z>KV%-f03g$)Vg+9Z>`Lw_ zBDD-f^7by=;`pt_oK3|q4;2$$sGEXS+G-8^F=!JmzYS+XUdeY4kyJFo6guv6aCa^{zAl0HZ z0VTmAkzEr>#-dIU7`m4-as+w%6Z^$+hgHZ!7}gUoI5S{tq0(+TIh1bXB?<)upnF6* z`+_7IBZot$`K71Ek>Pgr&h-31`hoER|7E-iWUZ<5Vy7`nt?ANC)|es6NGF|nzToO? zay|hmyMs}~U(!%ka4voo(gl*swBguG{#Z2gJSPJ&*x%i{kWc-S?j%8~8 zhg|XvSkQqvZRp)vJpp!oJMT5|Uc1C8U?tM}$X5ROt2R=~KZo?y#B)v#W?=w}Mii1g?e;m{4!0yMUJy>Qo0 zL4&e+7a2VXB?yFjcoO=>{ySvnI9x0r=Wqag^#J_{K6z37zVRf`u!9< z8qJ#U;BkR*1^k%>zM?DwpgnlC-0?$$Q}3*)y4N&|M^}gWQP8zsTClRH`f%YSk~b(ixSSYrm_!Yy_J0m%T_IdCFUXDyQie zk+1OCjdaf{vP4Kbk9<+l&(>_}#^cPC{vnA+qdWofp(whI|Dj zxFS{*d$v3mnGwl7e_d@iyUi4y>Dabx8{cy6@ZdwQS0=9MOtj(!dunUDmyF1dCb66M zVHgMUq-7*7ltkwlJuMxR&UFfv($Kki)2VSfi#=SXxf~CXSeMz{6^LPdtB}7zwC|iM zr^)2g=-54_r9P%MN!%^AySaJU=_;be5@$lWiRH_jBdZWK#>|+eisRtaLE(^6-9x&r z*MhI<=#^F0y^7*`_V#%0b;rSbY!cRUSr{@Cwj;WK6$(x!Moj7~ja66eksR~nXjZSv zVBhsYJTdIG`6{HyCh+{N2Tu`AH0uKYMq{Zc^=c`{XKC-0a}jqN8Va zzeQU8*oW!e{GZ=S?s&WN730pG-tRs?Os!?|_D(ZzRqHmf{_N<}6-_EB*1@uL%<1iG zKI-FqC9U9sd8n<pi@IYui=)^$XPcl5ERRO|uMfN|BjGj^Z=%C*2WNn9(vWDv6r%7`TQgjBVc804yu#6h<3v+HUhkbPS}{b2N8 zg_e3(ta~Tfy8BeH8LQBUoq^)b!?v~>@-Fq`r#$TKCzsxLX_OkWvtDeo&2-Q=z~#Mf z3qMC2R{D6a22o+qRKjS+fNie{J+ZqF?_WIF=^2rFqN?)7iAwqL!2qcdoilqsU7L7r z5sV!YW;5ISAj0o-x0$;~7P;{Tk?_uSUo-LUTS4be>7`Z3_j%*apV7rzTTAC3RN1`x zTEjDQrP#T4lfUkgf>l2IeJqZ#QISaAS(joc62VeZljzHr zvTw)s?ROG49=awxpGcI-ao2uwCPJlww6p&SJEmU5DrTjn)Aqsn^0T^8(UYe{+h!E~ zj1E%2)0#=sc$C`xruWAZIi~xfod+)G$5L6fR$p)D-tw~j5fz15{aeLV+N8Cu*e9OF zk2x`zrGE}d%AMEW7=68hT5MAL&EaCtmfkH`t=1#a{o-DoGiUYj8eTT@v3B0?MED=O ze|*24TCY%S;HmD%PAAgN`u_N_jH?;$r;VKy+p_azRP@W-1_R~=o=NPdxfK4+YIrfL zHA=0}@M*~|og-DL&Lw1qfhqC#oSQ`%>5AQt<>gM=d!NA5k1jnGZ#Vy;D}G&(S*xD2 zL(XgGZWksK+mbvw83E(Hj?Hc!_0x{n9>VcP(erk<@sVUV@}5P5`dee;Qu9&7Tbb5- z1d~!K8ELzXogWmB9<9hWD2;ipX!%v{`HWDzj#l1DGp^Kwsici7AW>SD*R!Z7{*LEK z+Z{P^+sb~wWKy`I$Y~QxuCT|oGf zIm|sCY-GJ~lEL0OjQN?P*OYGz=V2p4{em^&Ew*E`F;T5w*rz>Od=FjkhA++`?V8J6 zABy|t_I|l`;Mn&QU!mZli7sERy{|>{zZ>TWms=4>hZ`OhwiQe9l3iCJ6N^S>U8yOo zQgJ((!#YYwY=M<^;n>FUv#h7vl+2GvzrL3uMQe9|GgL`?Qt_lhXH(p(!lvhx5Nzet$fQR=qR-q)!6ox za47eBOTP}gxh#9h&Apob!b&cAU;VddQhH@mx_-0z1%eFH3Ngm>Ip)RQ`uVcgZ|yl( z?)&js%|}1_Es7^TJ3IBMRjO?unG&N<#72KB0oynCGp$?%)@En#@4f0TG?KeIS(f=; zIuA;HJA!FqJy60F0JeudgcsP*QY!I#wmJ*t^O7F1K9`e;-eYa^W8cO!4M)Z=S3PZb zL~4z=tnwxJzHbFVK`$QH*#o8uZ@(&Ujl>tn z#@cij^}4uJM;n`F)w5zuUzZ7BBJv45Q6;i=VitwYfdjgC-8uWe+}>(fRmRpd_rrhd zM+3W_G+Nf1l`LOsaz*G5@8ZAk?U?`9RfyreEg`?X!VO20azBxH_uK8suhEz*s`>?8 z8dqk(ZufxLiq9(4@!2B-Y&9)Izx3)6TL;wc8zjXhC63zn|Dqf1VQJuJng zO{L-%9`=28hGtFIe&yW0|8wGMTS^O4LR7c@I2%{kCb2_&KXUso$BfMV`f{}&ci&wY zchx1EsQgP>_1i0wRC;gq0r1TJ7NMLg{5v`~W+yx_I&!?^$f3T$=`Xn<85iG-{}Nqc z#Rx2RO1j!)hiCq})>xD=_yV?;VT$=Bqt*Ec`^jpRyB$3(Kx zwfl!=#PWjcB5A|Is!zDq4OHKm<8F`Xeeb#R6?QXqXJe>tk^N6Eaq4SFSE1MM+dh*# znn!Gg@xGWB3nBE?!JO4S$6IHgd{SUPJvK45f#me^^o2*ZaZ#*+YI(s)!{2$B4=~XU zAAI$Rp3IOn#YJXP6;NxF)_6X)^_%hWcD2c+`rG09V|Dha9X*RqH{?^^PF5XwDSxS{ z=jd^fYgeBQcMZ7;p6FF5@U)YCQZkxXtUBGBV~-zfH;HPs4ow0XmoZVGUjaYxCYw|3n=LO`dmf9cM?XD+`EG>y9( zZ_O{Zb(*f;()^~<#P<4~SH2IkJ>`#hY6abinHKh4h4Siy<%r#>#E|y#7=^T{3!=Lm zV@}L2TsL?Lc6w$Xo0aW1OYNcxJmMjBvX(KP4ODdRtNDAhejP2T*E+>?^Uwcba9mjZMoF)T+&`;H$nBlFc|B}*=tyu2e zZoNaF#6QJ79FjG+d8zHI%I0)9swrG0PNo}cEfKIgOwO{&@Z zM=uo?B!B9ECN^AQn^&!rP=%q+z7==9o|w(u!Og!{D3 zU+b|kTk6fO(=ySUDew@sS#(;SEm8}#V@%Gk?^Nk)E9iTsW{@|v;5{*G$I>LDKxV($ zsbWZnD}GtSX>0cK=GwtfPjuSGn_S?k+v)r}ZjlmY3s%{o`nO&c5m_Nu>HaM$$Bp_&0?j`C6r^>Upd-h@&PuR13 zwesX_Ntn9r*fe_dL#k!;ytvM$rQolH4|1N(du=`v#y%ozD`~f_+HxAp4x*8SwDJJX z$3V@mU3;?I=Tl))|Bt$i$Qe_8E$vsaHl_kYX<^qVGi%QU32YGbQYEmE-{W`43c8hc-0PpflmMcnlV z(P`{r8C%!qUY@Ll48q$bab@D-H)FSDx1X}2lh1}p2TKTrrNJgWYCqjAFjk$zA7Hm} z)oK&bnolK$xq9S z?x$PJpwTk=u(G`)3mlu8W>=(6x7$W3&k0`r>D0DxW_+vQYZbku<>QYJGB_qH_NdT) zS+rlKbJyGxS?_*#A2 z9ZO9dGN1i5)3}JuYZGf*V6e;v8;3hN-9uBibLS(Obpy-zO6!Bnlm8JOO9#! zY;|vXwC&?y)wOB<0|ETiwD)NDTTwIYksHETs&)F2nbiVGynS7qRK)gvdVguN`S-ca zBq^T9%wb9C3e%;bI2W7kkkTuvx}C8C;{6Nby^{;yc>VIfPx+=<#Su$13-XKAHmIeK zj`z#6?o`~i;ib{b4@0GoobLBv!fNxpMBbBoF)wq1aF&dmq!aBVev8X#DR(a<7Zqxf z&bF0qzQI=L@~|YsbI~if!mle|LUp`rx*6wYh~{j_S4Ix`FPSSNz>QCeO_KPeunNJSktwihMR4JYHbA zSMzmIR8O5z`=wUF;kzqr_nH+7NB6$_&iye+N2im<+PQh2b4oY>XB#N&kF}lbvUDty zY%W!|`yQp`FlgxPI-|N@_@UOPW%>sPvoEc-d?%X8(PZA?wggOmNpWW{Mwvn>d=j| zW&)Quv{{eT(ly-k*1IVZ)AVvB!*gFv6jQHr`@3SH6kLK(ndlo8y@Eo5cTL4GTjISB zuQjgLiA=`{?E7Y3CXXfZ;H%WAoEfXZGH>qFz0cXNd#`|VBUUkIjP*em(Ut9ls>yVx zp_z)ZY(r2?%#p(JL1?~4M*-SYkbo;cStjhP_`b)O;9n}9<*e^e!nvFKO-I(1ZB6o1~ zX67Bd5q5r81j9GhXzel_N$yn$V1$ofhlMAk@_dI^X$pv6N00pL? zfT~7C4Zvn`bLj{sm~p%kMFRgizf&f=!l*3@B%^4hIu(E=(U%-OimajFp9FwjJQk05OIEW&m2t-Ce^7 z0md3fgMh?x2pIc{f)u0l$T6&kZU4q_)zK~}+PwZVM0s`{LQX+s_ajYzp{6hlP6ePJ zKomt(e~|{@Ucfy1oH|0F7s5J3QNh2=@oz*!gB}t9&>cWPC@_nn_b`+R6st~+BAf_# z2_GB)iNWAE3WKj9;Q*`zY6XBRK<1|asd6Y#z78b^;4&X&E`YNF8$%_Eo+_-(1yIsI z5d3tyNIs_P8hphvd{Drgsx0e82Ux#DU0#0D*!1z268H9=r9CE9bzo$G%>N#k#-ImB zLyIu&p4do@$BLC@?0Hi-KjGPDr&(UTXcZjHe|_I?hvLCVGt#Mp1YRos57C~WVr-Qla`(TPlviY-iE+CNO`Zc!9VVQ7lxw!StM-JLL9d|`$26Qg=X!x=4-MJ?Q$Cq`80~$mIfSJ6vJ0(my-u!;DN}Afn|MUYLzORGn zbmh=ZNoqQIkD-2H;vwui4|{d1tfVQO(7pQt-BeHQIrei)qf#$%&XvBL^NUm;{;jGe zyNY51xg(?NK_hld^U33WuIF-cXYJ=BPYq|e)1DN*FL1N(M_bUP*Ad|n*Unv=F8i$O z!5-Q^=KQSuq}dVkotq_EJU_kPc1$BEjdwT5D2_bK*}KGXbrqr|tUUPT$>4lp<~_%u zg7D@_lY{rp*jpX83xD5y;6-;uO}VmG!$AxB{T`Q*H4BU-a;Z%1VME>Z2jzX_-7DjB z_MZsTnAlel{>Sutu4)~B4-$95aDzjo;mZrIFJM#2K2BHx&i^DXmVdW9^3he%_v#O> zWB5t1uyhtG7Pj^oI?zArsBmK+T!jt_aBBJi9}dpi@6+XZ^tt)Di5cfCBskROF5!Hv zSg)AvO=z~vIrd~=+iSM|E>+T%h*c;cRqcJS8`j4vdGXd(OQKzr(KrOD%!KQcS2PhQieT^X&WBy#GflG-8H}hIkbNB&P z)|!K>&yHS&JOS7J;9TM#4c|}I)a%5TrjS`p{=vfE*N^E1WDEkP@kC?Szj#=86=J$C z2qq2C^5ZYk9M@9{NE2xt$>9T(bo`UF-wj~(_m9A&>Bg7h$*ku8AZ_h>8Iks5dM=qO z0n<35aWP8T7%JX%R|shV0zjgDj%&2Ra>D$53DefbmjiU`)3rt$Ldw51z_jThv|alL zZH|9k|Dmn(FWS~!h1>>WLuqqb6BJCF8qxTlyY=gz0ly&yPd{V8Akm8_?VP zPX_*O7zPX&#Fs{sS$+Q^_@CD>1J(i4Sfa_EKMW-L4Vb(+z&TQEK{0r^*WRk|BPP3B zHnYcd70--ayt5SZZI-rD1y0q{aQ&aOs>(G-6GB)dj-5@qh<6{vf6kxHuoq+vZ3gjL zzgAZ?$kzHa9LzytMMR^f))f;Be2C)+$Ng4rIPid*>q-F7Dgih(lLx_xa?Ff}s|3y= zy&#@{$r#XsOG-9}CK2mP05)xL^8^E|Z$dv)QY<8YOuK>B9Q>7*;D;&au^@)%?`Iy9yGcLY!pRP?MJXoZsKP_j@^ z)qy0Xa(_}QIGJ2`Nlo=X)Dpl+E+t$0*F+Df91I6f29^rEJwd8+P(Jq~#<5oW0IC-N zbqQ!9icYU+~RTLLUd)G9d*V9~a|ZhEBlMO0pj@HHa+<@?m$R$qL)<%Q8O*s+ z@<+m;#=IFwGal?Ckhm&-Kcz0%P6|-V6JBJd`iOf6Pp6Jds(S$)j<*9D^(Z`-;sWlR z8u|weh|s7puMMCo!0!2NSIJC`E4@t-WTsY_SVipp7;G1mUS1Mm;PyD@WT^0hP4e<_ za2K8+0Qyev*S<_hLT;$uUWLGP{2M3_$8Edh?0_plhU{%BzF|uMRf=hAca!OX{x(jp zLbu6S;Gp~1v54?T%YdkWw_84pQh;_FTZNpE%32^#zy)yr%`1;lHNaAZC7=XL0A>M@ z4MOxi7hK7buG-pNia7R5gaVzR1m^&8{+FYJs9f=oVK+-3oF?Q?YN7P_cxY%ZNv$3Fb~(=0mAZ z7CBt6!~~8N5bG6i7ULU$dB2!JCk2Nh*JR8JkeJ-2SDbKy3zj0#-+Fhn5e;czb%PhI zM6mj(K@ftsOJGZgM#BH8WDW_J|7Pc1jjXA)Qo8k#XDv!lTq|0Qw?0l$1D^mdoV9JZ z`hK)n4t@}(5%v;DKm*}X46?`ZjisHTzUz~<+Il;CO_EIR^ z1Mm0Y?I`-%h)4(s3E5gQ&NKlG0IYg&(+dg1zz-vl3W?nR%PKy~GwWle9HKVxg$E>V zf$4!}*E}i)DI`-{E8_zp|8MN#ANzW=sILl04X_Aro?+Hds{cYGP{?I%lJ(svkrMb} z!0BIb3M%euWJomiKtEGT=1`P{k`W+e(}B1GFC;{fe}%udNYnb;`_V`P-1$H1*-nw2 z!9GTY|9{xr|FdQeu(lqE@LHG5!0`%{2W3zYppc{q%mefW--M$W@b zfbaLZmE--5I|3#(sZhdxuWvY9A>zM;u4`0PNWRy)FYm~ir=AxZb|5x}09dU<7!I7B zy)PzD)C!#CR|mVx^mQZ|Pjwj?(G^GHN?!<>UY=kMm;zrv@E#_A9P7gMneuamNK2*T zR|<2mTOWMa^LIPP%*(f+VdpW*5yi<{-5x5lNhEwCzLUf>H;LFbP$D2pw}y+n8NV#b zxtI!K(7g#zcvaH^>K8WDt;DF2T7dI@=LBNdp!MtPZPrB<_29b=(TnVyW8ZC7A-Pt} zBm*vNZWx8;bZZjGo5Pk*;1^TDDCkhFE$+Z|d*{1T5eqWqFDH`DHRz0)GwiWuQcGS8 zay|UyVbBg&Xq$58VN>TNo0!|C(ND39JGJ~~loVr~UGEEJ?*P$bR2W%m>0ideua;it*EfPZ1T3}vAPWMEWgX1e^oR~=LfsKi z4agw_AS1+SAev~wM-M44dS3L>KqP}IOs#G@{sC;bAm&jtk2ws%w#1JZ6cw)i94bkQ zi+cMH)gzvBT?_!%Ap8LY7Pqc4dYY7m5w3l(8F5p4H$vgZrICA_f{ID9=J*?Zg2{4;^XErK|t0iI!XQwp4L@euLJG zi&bESfzSw6FTAmWIi-;UI)^t%j{z?UfCDH2-Cw~nfH{JG!A=3r;#BJwtI!pJ?tjp| z5Is12S-~9sE8g*V;v=CIR6a138>lJj!w)BM!}>^J+Jt^3R(flK4adRIs?O}_=lY%9Ka>xI zIp}LL>pYeCaDCA9*r68^(h+j(1e9LXH-T^rXFi%hjL0fL+y=aJLdA5E#<)-j2Va+Q z0{T9HQU&E}m@9Z6F;`xnv9(3i*HYpqcF!cGIMsP@RW2UMkjT?o{kQbHqHRCsItAY?RA>T zk3H{`_+uxgr_E#B{ABbWzf@joJ+wP9*k%kvJXHM_LrreL8G3A$AjtN98S zXtBR2w#-Tns@!4K)*99K+<1_Q>8r9yN6v_C{oXBN9NGp8m!7=r`CuD87}|ToIo0+FJ^7SYSNT_eBekD zU&b%{ZGL;r<_;ge*z)8Wla7W{q`Y$$_Za?cvu@`q^oXxO)CTK_D>qt&On>X4CT)oEzOUXfJpc7W$-Q#j*v*Hhj9z>?5Rf!( zl^ogGUe}m6cHI44EQVo=@u3#;?1+L@h_1cg1AJ+V)(0^4><1q5dhnS7?O0jehN}pj#hMT%8`$E58mQ!%)v4hjL{6R7kY|SA zx2A?Xtq(V|I+cRuC$_lD^30FpPQ{2QSn=`k#Rt$aYsgb?ItOyT@BqH;8lc^Bx2Abi zgeYVl9xeKidJ|v#9Uo>5IRAa1&n~q#+mY1)f0O zJK#ie-J3Q}Lk?~5vZT8s2Z_?iffppYX#>X&D16Y--`~?03e}LcK z{~QWZ=VRUkjRGFxsX_1!#_uCZEXxv4oT%UN)ws&$h69UF<}ODOtO@pO?Tvlg4c`SH zc`3Gyh50G9GZgkk7f)^kB?!^W%FZe(%??|&Od5nm*>$$sE4SwB5BM&hFZGwq%zexi zF7hz^?BS7G9fg6D`)P(STgXkatVH~>fpb^?S;AJ&1MW(b%*8UHKC|rRz2)Mpgbv-p zCS$QA^TKf6&Z|8$ayi1`sU~#6UtG?J5llI|#LGd^AH83x>bFo1E7_w&r&~7tD&5u< zXG$lBJ{I=uZm^$-QQ_x~?cgpfD){<2F+U(omN-dk+TIFGmUaX@oKlfWl1lh$?dtue z`*V_8s@=8Z-KE_XJlP;Bu@qp{<+jz3I9Z(378s}Lu6nLo9=M{cDlWIcblgH??Du@|nJz|s5{@FRQ zyT_Jr{`t!L@+Cb}P8PHXR-5*Q9yY=`KdM)Ye&dWINf72kgKNOS#;vFOOl^uSFpI~q z#VY3P6N1k00Z zfMqg~5VuUff8!(mMAJubO}6=*o4dZ&D9_Tf&9U2*S6=0lcMI2=C*5Q`{ch196lP z>>Xhk`F!(k#FgFyo|Xo7r)#d1(j)PcAnZ$lxAjImE$r;>0q?&3p@uvJe0rnY1|BOb z5xEM{hp!XkEZ2NC>|SYM=e?y7%uloFd{dLT*On&m3_4FD@U{HFql3tD88}xE22igK z#|Ak%EB;%`a!?#_p-6~8!UP;hfR|tYrUo65252kP0A6c<_<#c!g}j=~qeUNs;b94& zqSm z&B!_Cb5FBgQA@s9D_2X{XBlHv%mY347dFK=KiiU8TV{HPL+zNxX|_%G_M6s=Xk2S|H8iw8gpUkwFN^9P zRTd~I3+XA=zul|dHPPNsJ?=31^hH7FC&*kQ& zeLHh=7cPiqg6}Wj{g(Xh&t~oFtv1<)*Kgk+@?do*#S=Lzub z_c>%rVLlEaj70(vdP_p7Y+N)5OnG8^wpEL?QZ)IgYlg%)Ob-lToYWED*mltE#0~;AhnAa5uxo zF0PK}nT!1mj_8|(MdGUS@%voPapgbUH*}|Z_Xl=+Z<5nnhH?IRGV0I7Oz_5q{Q}u8V%Qymv34ct0RVgonN&-@As9CuLY%0;e?*mr~}^pViKXPh15+l{jZSS^JPA^9_74 z=5WhKez280nK&ilAwSM$($ky=v zZpwZh!6=~JphT<+{iZH}R6yv~q&lV?fI=2%z)z%-N0GfyfG%#)02fIRH!}g?Q0NYy z>KG6U*h9i6Pzd${gHiuxBADVobD>*%app}3N`)Sz1E+-)oxuqrf+O)C1Dh52;Fy9z zs8dtHbD?c0ZVmJRH?0Rm07Bmn12XH7pw#VNnp6N)uLjA?8uG62dz^>RmGCH-yB!hC zzYs+$p??-F^s2c{+XaQk7n9uwG{s9Oygc^ss6lHc5#7e+@Km!DRU*aUn0=yYV2?OUO zh_FHOeG*Kyb_%{X;26MLfGGk5!3!oD#(BUCI);cHfx*Eg;2c;o{1X8%umt~Df#x01 zgoqjfzz;v@Z~zef4+3aF%WjlrK*<_wpkxuQ zT}3faG?#^!20whCQW)@u0GQDAivb4e;S+LrA{fGfz#5T*ksTVi8j%@>r_grb1i&b3 zcL3Um99qK|3mB0WoKC0%XbwG9r$TPQx&U|Aj5mRDlNuI!ViyntY$~X2c=Sr`jlfHm?s#g0*f5Hep85G zlxz3)1HJ%zK%Gd}+qX63H6Ed+1^#={3y(aA!n81s37gIuSPg?(l=Xyo8*ONvH$|5d z0ty2H;EhL&o-lR@jP(48Dr6d#b`8ZmM$4NR+x4V?#{F(*!j=sH z{bbxGHOi!A0TMKw`~1Mr_!*+62VfCq#*rCe28T9l%u@#bf(#5+2pHKCm4pu>2~N0& zdBk|&xN$Jju$S@(^Y0N+@z^7B0j(Z{`aa`GN?(e2JhCXWqkS#bW=C(cbTqIv-Jhk<8DZ080tQ3aSNP4-J! z>sN$_>%BHudm!%36wbO4xn3vO!mS$f1<0=_A&pjp*9m`<;{XQqZ0Lgrhiecv0O$+W z=fntX7blOcv#Aq3U|3ePtr1aBNiE;}OoR(~yI4C*I+4qb#yLfcBz{0%FR;QT zgs(fmo;<Ag*!s+rb6E@C7Hd7b2PThEmNjr(t`wGxZd@a50WOmze@Sly zF&7S3VR*?gZ!VaJE!dR>v8~v^D&!In2oLZaCF~cXaOO28-~p<~r9)+4We&l9(F9qM zIj3QQ+G}RYDN?=T2#YA^4BXr@le^Xm{U1#HnHi0vh)N1jPA zY>zo%!v}%yfaOFD{^lr9_zVM_G{Krsgd4hQX6`tb#Xm3+PH#_y*|QsTA#_o=8D$2` zs>_Ar+8TTR`-YoE);MrvY7iSPfLqFFFuQMVoSj}bQgPxVG3Q;H4UMruc2($OF7{(% z{3k^(S{r{UkY~Q=1x_D8c=%IH1&*xYkbve2;1B{%A^t0nA3b_P0|N-)=*a*GE>s)3 z?9?jYVGPKuoKrl(gfcz+$Iwx|V!y8>5Pe$n`b3^l_mVfPLeKZ4UXxc1-oqE4e|!z1 z{LkM%a4jMW+eU_dQ~Tm?X-j(?n5pi{GlLTNI}IQmxZ*B9DeE^SP`)S1uU|#VokgPAw?A1J$WRF0PBX-H%N_+Elj(5{YB?)1%d30KW+hjxDTQ4kw_G2t%xl0AWU zOJ?cKjr|WeV>t^jZ&#shKcYUmsA~q@1lgA2@}%E9yb7qF3sYu4<8N*>=BAziGK*{#SpAvXIc01;lwirtkNgSaMbL3!8g7m`OB zR?pDNadW?potX2rpA+`dquJyd4q+iFDX*FrN-DIQ^u!c%-F1lceZs+Ydx#0jOw=~p-%Z=onE9o~g-*NQHsVcs1`=JHnBBDMnYUo^>PH)fh&)1&Aj$}i;q_YKi zlUkPZ!FHqOQe&Gw`6=zfyqxp4b2w(h(Ord6I=T#-3=EB2I7hYeB$#}IH`893@S}dC z^-XxZM7Wv|tmQ0Q_wKmfN}#H$Hrf!$+9kG8HboL30W01B0H;atj zUd+WTTv=z~yp!r1ku=AyP@UcnC0!H6FI5~G^+|bC8S~$XcP5_z)M{`3a<}GQ<2}9l zeu|S9;sy6(I>51-o{^dvkCx5j_~LM-x(Ny2%lKFHnbw>|=5My8C6DbYgYsTY%I5ZW z_*r=B}y zp1X~Z_I^R+uFNbywW8#U>y0n7O1YRKY58lUo=6mj{#2c8*PiMm2H4R}jxmkdXDRNm z(VhBIU9WA8JvSRpKsI#)!SXwt_9q>HO4PWGDLlX|Y)6 zG%=Gf8{M96pf}aMnY>B2-;Kav@FT{rVyjTSYDC2zwV>?tvPY~2{m!@W9!+i)v*hU0 z*AFsHXW{&DhP~j6I|i)7dn2(J;*?F_UT109w&JLwRHAER+!XVzA53367>YjJO7X8a zb?tl4rEr%ZwTbC~L%V+|{`8m}bhcOq&`K{c3IHe=vpyW}_yT5nYhGAl;a#W4C4-Jv z2~u4r&A9>yef1qFiMkOgHx(*h`EmrygdHIa>zZ`YRCSc z`u7jzer~!xAB|;v^Mg>bpwK>3Hul~zTA&>Zez-t+fiP`XS|U;!A0Tji{b3bAH2yjV z`~T^B%O0@PhY=3}nmDirjVHWRJ@?+mWsg}%zgTdPrl=;Qu&v$bc&xM8{<}5%+c8tv z{$%{5-@6ZK*i#-J+^sD-yTrtfF$fjxP18G~el}Cv>Da{2)Ho55!)cf6M>+G~``9Ip zwVNC*AP_B9d@nCwnldUZd=URp>3-ChL}I~%W12@JMEKucO7zlf8^2AOZEn|2F)#6L zlQ+IKuQ-|GpP66c7Hrsm`^G3Zob&1=DNeCu)I8~!5vX#_5`BDA`h$vWLq>^p>R!wy zGLS#QYg*+{tIZ0|L~Y_qQ@hM&B%YwDZ)DDV~lAmBFYIB%u<(15*c>Q_AVyr(VJ-_E8$XywCY4OJXBMJ)Nzj%3nYr!*; znMZr5j~h=!Tx`!_-aLL~hS9}Y@yeG)b=(%Kdm3-4y+km5@$S;Sj`i=Ggv~?Ciz_lb zHWus$KX6-dW`uK=ajKonWB`)ZgY6FT&~?IO!xH@p4aouEt~z<3I57V|-Totx|5(U> z*1~_B!+*Txf8xS_0_A^Fg8!d#q(%-|{s+WrqCXr<_3c>+<};kpP+6J5{$G{08uTdoYzMeElusXFgf?m?eEZf2BA#BL6|{ zE6cC0X&ioB2ff7kvU&Ub?iUCMnlHceJoswaydbf%NNk};FUY#k_FQ7+Hrn)BO?jg& zwi|L6a}VlibP^erO?=@fA;)q36_B}DKxPub+$n|uR{!0g*y*j$(B z&FT1q0{8Zori2a)d^hC}nlK7+$WSR!X_{#FJhxyUUov{tN+n9jIKs0~wSsLINm!dRPDi3@D_<*jw7v_^-1eiB z{w-rL$Bs$g$84ojF*13q zvnpw}jJgT@+{5J~u7!AkF?Rxjk{E?hSM7mb2L_B$x_7g zCb)M}>CR0yZfOPn*#m?rqnLXUdh*#FWq20CGsk59!KSKC1|7Yp(Hyp^%WSq*y?OQT zOIA(~Tr6#qcI9sVc{{mb9M{L=cEV>BDiTU6_WjOGh>`MBmFWxmAR7KlE>23R)X2fR zU13PTLA8WX)+zXgB}Y49`NPGC3kHIciA_4wx`gC6TZMBXud7WacXX6@?F(z3wAJZ$({WV-(TFByYlvr@{ z5KeHx?}%5f`TSA1j-d5vR>Nn(f;26SWeOmhg8;H~_A49Pg#O*`H%0Bn#V<_&?9t-7 zmv<`Nvsp4wWrm%xVi(@LesU#yZ1{6^`%m@Z5rL8%%+y>pNdWvJizM&;p~c(J&V3z` ze3~-RnWx0jq$?Bg@pz@$LiYAasvNmEMpj}PV?gPxWmT&()<*Jv=ZJDiBiY^2I$@%L zg2%5qoh%7CF|&0jaoAE*fs6lX>@Dw;ql9a!x8x>u{p{ZR#S!mT?bPr6YOThTa3i_n zbCgrK{$s(?5}Ra;X9E^WUDoN7X3HgS?E6E1HutFo$@1s575GdYl1vIt_@XEq*6*RF zAWS1!)2MW0;^2-nGx{BL6Ouc&cnYmVx$hjXKm0YL!)0TrncQ0Y>lA|N#a0s;a`l^W@tC{;ju4?^fj4=n@|!d*#F z*?Yg|y!(9T+~0Ta@9sau|-~|5jj^n1m><)=I+nD{<-R7fauq*8QHz0 zPAx7b+u42Nl2HfQRX(KnnOVN*{WgcLNmRDrnjua)7zLbQ-Tfu%?5m#T+xuaebI_@w z{&fgT&xE3F!uQLoDcaJl-4m=5)>Sy?9%*&?W5t48h6mN*Y zX_pK2rmH^CRmdK1izx|&`MSi`7wA40s}b4~cup_y;ua%rn#(H@f&LwKg!YKVW#s$< z&#sTv5w0bx+lV0mG=dtOwd`;y_jTWReZuS z$Zy7NCw1?7=D@|!J?~;&p2h`peBwCt%vv9u(eDkwu1TL+y?p)d8UPilJ!a_`>himd2iUKajNKy>-NMP5OO<9POF4M zSUm5__?@u}(UkC&U$HnK{D>0Pa+;oU+)0iS`gMFs34pmvJ=Ub&TsQbb3>x*eryC{I zXCpp|nz-bGMw{!8Rd8=O1y*J-FWj>Rl22R|_xZSnDR23MGfoxM8Zc9nXHE*x(g71! zAx_V1)jeA>L^4B6^vjtY{txbXXwrT>mJfsO!Sxsq1p5=Wd$bc4F}fl+3x9@mhBPXG6_E^IJ6M=JVf5+<{=*e_2ZZE0lQz< z^7*INt%8*@r1aUM7Q7>uxVQu~W?9$V?njut&JXLqS3AZALoZrACw`74v2>u;A(v6r z26)z3_&hL4ZqV)l8LD6gARygf2ua-2j9QUJ;B`T$%o?!R4#WHP{XiuAQY+r6vP1u5 zLEAtU!FY{xF4fYRa5Akr{J@>5GpD?6!jO%e!@Nf%OzC?=CA^si+fIf@HxY?G(TdyOSrDBsy-XrC4GZd$oj7KK4GS`ssCjY0q*& zTfZkxwCxN%weaw6?yF(TLnixvh(vxLW82o;f$8WZ2Dv_4EOLQ1V4|W54~_j}#;nWc!M6@{xgM8%NosfGDMsv8+;-mfTgGQ2Z!^O)*D~G?Xy>aRB{R#?I=iMl?*4}CpI)+s z={iSf?JFL6Cc}JKc+H*|4*#3lFa7U!t59YSm;qkSifQ94lKOTZ2DecST_>t?)G1x{8RTNRNy9^{gu+@5y7Bs;>8H)8Lr!yGV3`KizS&#pLb zeMP9r$!s0#IuSeKRN|`FaPxmst4$O{?{j{DZS*0^nZ%DjEh$+W{g7CfthYPPP z*j;;uEm>Y{LZU@7pLWHj6#@@L5s}gLd1etQCvUW6=?vIH{?DoG_L>zogh`^adv!Ya zdlYleIDY#2ygB#N-ZQEDc5X9yeQNDa%;1Vqfkv&lS(E0azA~o{j@hR>g84`?{JTByZg%GHsFBpZ>Wj(8`wr~o7saunkU$mM@l~! z^4GAd(#%{j?TvjzpIn$3eUT3GB>L|_s>notxFYd~t;(s{!U)YiTGmEMF$iG-^|5ZJR+|RWV zPdZDqTzm*0ce(V)*>P^q+MymaoE);yh6=VB|^XT6A*xSny(88x^cPWP1FUmJU&MERo9o4|8AX9$6!3~L`Q z7G-A4H>;pmlf946LbHnvvi3<*Am2KbSqwloaLfKRk^~+tH%pSuY zgL+UKJ)xu)Dk21HVWiYKgwg^x_ztOsx`aS4Jkbx6wsn^ty-R$P@LJ3Kem^-y3 zs}W7wH3Ca>HYzG=mlnoOER?b8OXSb#l}YQ)i1UrMB;@XIw6q{*-Y*FHrf&48OyS}2 zy^_aSiHxDuK3H^1)zA%WNG!6eH0(r9W$$nhy7EMBFmq6GfU?<yWur@A0wTVuXA4l&kUHknaZ(;K*)K zoZ0rlgthfrqW$EWORoSQAx*ql`{@azWnsLetQsEVaoD!jQMwP@yC^T^E^f<~(XG(2 zdc`uS-s$zm{Cq;Vv~0NJ^WN7P^=N@Ai6?JwjQIF!T1~SOw%}6+JN=i6COL#5-<6YK ztmog!o@f&qLuh-T^@McAT5|=n5J$NmefG+oJ~+Qjte)C^Qgdyjppd)t8YWe1sJW>9 z+!HAzv^oOpa$qx4X$ydY=&lLE0HPe>rGF4RJsLc~0cA7o=y}esq+qkHU z8DjVP_{`0M+~L>l!<{Is3iP1Ccp)^1>&0Sg;)Kt~UNa2(iK3B{Wk65Ws{N|CdrVpm z<_)JybB$--%jr<-09-w@igKH+{tU*gkWge{!JhH%e(ZMThe&)1w9ciqor?=aWGvE0 z&Fu&kA0r-JmLM!Sh_e(KIvva|E^bS_I`~5OPU>?j!@YBjJI~tMhH0EaJV*71KlNRW zerY(T>4_a6LO*=DM>peV!5wNBN^g;1uIX_D0b>_c6#ss6f9+}K@(?3+aK%qet+wEV zYFyrmJ_azs^W>!X&1BSIAUqHxSAs%2!BMNHdnu0tYk7E{$I&^@SK0MiW%j~@1rL#< zK}va_JlZV>a*HGqFjJN9!_~R-JuWVsJ)Om5jEnYOhkQ!Ku*u4pv*U_j19~RqlHsuv zTz66QB3Af7m*;z~G`|tZ8mQ*oO+%Bv#XzZ91vz_UKsGIJLCt_*-s#l4bjU!UZK(Og zycRrV#nc(3V#2B#aO$Bvl^6SVwdK_9sb|0$u-(!BE|C+L7Wsx{K}W~!p?!ss*O+=s z)xiXdW{;IgkVBWWD{?4OVPNs;1N$h(Pi@BoyXu5-?~vOEb$gVV3Up!oS~ovB#&E<; zi#qb{8`ryqDEOFcZBesqMr==85jM!NyL>;mIJgw}Z=;jDwYel+f!8%dB8_m>T%RLI zpVJ-t__m>no2NsAO&q7e6tiMSGCDEbI!e@0 zUjB6L)U}rBx`{Lk7Z$HYm9O}bbx40iVMjo`wuFBvT~R3Dp?PsgTYOJleERIo<-sALTta*5n$5~mNpPtx z)_%%9$w3qc!$0poEYw-{bkF2!--nO4?~KRCB5vg67sFn9OtUbF(4TZq*>+~|L~Yco zvv5|h2%MWOc1nbaDh@<@=pQb$qBHN{f zL=+zjX7k^1gm!P@e0Nn(q0uwz2t~QiAK#WkueM-Ql-_h3Zi#IR0>+ z?9sJP>yUd$7JPDRRUt0=171O=kP)WyT?bq*;q|h5AAO}L$4BWZ%Xg1kfwy*U!=Lhb zNgvp~IyR*}=tR%v49y4rSSu`UQn9%GJuG@>xnMco_4p3N$LbSH!yaE>C4`N-tNb{` z@?yVUcOHGw$JBAc>tS6}6!tI*8MPYT7Ag}#S|%x{5UrMbEa-iJ|LA*^jKg%SD$5U? zwL(H#cwf29m+(qdW{$4>?dKP+KbBcM^)la(>GH^Jh>f%wVTXg8UJKm1AMS?33Get| z8O6x%H_-f$H$N}OUq(ezBHp#lqfa$N%G4q9Rgmj)(9~|eq}c_7f$&6v>4eut`!n(t`XQL zZZ;A=$nwbW21~EX^5dYT5oQhU(YSbA-ipOC{0ruW&Xb<06k%}9#$_F%466UmSxrR_ z`oa65WhJ!gxmdWra4}$i#|S-qyj^<=U=?%7s4`QuxniXq~d>2;+Eo)y^?2u(UGf zO|;mE+AKe2Y|S;obkEg~i@L4`p(|M^znG} zZDyxDRs37)g(cqp;89Sp-D6HWd)rf!1M$JN75XV5er~8Nil%vBj{8$}ycw#C^F&EO zK0J2z|5C!#;rS8?OoxI*2>)`fSPfinJ)kELfM@(x z7+OL1c(5bCz{UE8r&{aG^!vOJo|mIihL72WCPTkHO4_0#mw_aeqZp(e2WzAilgqKB z#yg~r%%U7`8Fh<`4J~IaERNXOM3plXNKDmzk~{TaTmJRZ*^G|~ajmL3D3Ge^WeyQO z4>Oq8j}&WK8N->a1uV@1>xxBu8dkyDao#VD$lB2;rlt0E6<<)a(4q9zwUUw6OO)Lz zKYz=E*L2BtouTDG*L*Gs{Ve%Z=|?o(v`}{RUf6jB&-Ao9(%6msB7Z04tB5S&?os&* z@vpy*XV_)YRHNI}JqrgryOo6_*CF*iIn^$@Gp&Shcnr$+!vbn*nZV-^F<@0)Vo=H6 zkOFf&TxWh=_-^qf>y)(K+WJHGYA$|UYlm+s9E2r3+ijO>Ua1g)!1E&f#AfM~6VWKQ zv6h&Qh#Ls`s2Net_XsoY?K9~H*Iz3g6ZKF%-)H6^m3}Zc)8&IaFVj#hE~iv0KQ^{- z7G8!)n&U#i`y)6-I#Xja+>2S$Fy$g|9jbNOc&+v;?rQG)tSwuo&VC};ZH8g{ao$?` znkjMNE|yvOwkeB6E_$MLkaAv&fI#X@dP06~A-3YR0LqlWaEY}cPxz>bafr;fh6jpm zQ^*v)c)le0$|W;YAh5}oQ%dv9x|4*w;uq}Uh#EoW;55L16#}b1ac2{#Wc_2|N9n8b#TJh5&6=5wQgM15uDkrS!RKF7$ZHFJ$$`__|>6D7T<9cUu1JMD1u zffs5wexPdP*Tx0yOVCfV1`zb5@={TJ0IM%=>mr7pc&@l`PSX1U`;@Y@PD6o(^<&#Z z5e5wSoN zLx06L4hj<)Q>r-6w>jUC7`;jnx}I;8=+ZTQ^A8=FS%H3>#g3^nw78NfH+YFl5mEpSVY3VJ~eP%<*NFRcIZ`>r1bdv!W` z#UrG)E;C*Xe-LVa5$0mfLD#Z;;~IYWUAoCwN9{iI$^|2OvXg7pp<&GXPZY{!8L$)#zxu6TSG@RH z%`yIaLm|D-KN|`-`WK_hz;*${jE8?IWo?0Hkq-CN$C!rOA*_;gdmC|xy^Us1=IfKj zCj@VC_~aOwF=bztHfL81DQ${LK4T_USVUYRfO4h9xGKGhZ`o9Vi^-0B+mC)%k3 zqys}^dDM~iV(|eCtuE3teR29?M{9$gLd6r+$A<#yK2~xcc-6PvuU*bebr!SNXFf_n z0jzA=_?AYkFx_g+kf#AJk^hM-k(&-k)U*HeaR19mXPjWDk?-`}Sa$y|UAw*VrXJ#d=I*{l|xkv|rLRDh~0n$oM@g z(pzY-3vioa(y*2o?VC4S1KR>GBywI;O47OiQ~v)9oMsz& zj6qf zinW8uV&#ouw>ivu8z0a6!g!9=ZFDYjCct9ALbe}oQ}1-hE|+7(H|vd8oR%GT=*uBD zEtDY~Ej6g&k%FBV8Z_}aI;ZJ2rzU=wy>ED&1xI_SbIK&l_3QOh9|8yYgsz3u(dMFM z@kkN8@I3-sBQ~NeRHxHZ)8eTz!#8tQ+H&+Tg1hh9!84P)=oUiGZF`|2e;eEQ45Si4 z9U!5hTT@+G@lX2p_*j^zx24CNSBW)_=x-g1+68S%)XS{_2@CZsp4W*z4=~5}Uukj0$7=Awj z$PpC6LCBLix$d62cipdNpfk_`ZVIM#$OiVdm`t!K*z^#ASA>pxQu_(;i}L~eiu6S6 zI;0xJ^0dLruEEDJ>kuw*Ayn;~TX6UrO#>n~Y7tmL1z^~390B2NWE>#WX%-9tnR9?8u_R!7{UVbJ|1zi9_cbwsskcyG%gg{m6qQ^ePxQ}jkh?w2><$nn{sahmiQ4o!phW&I7(3YJpa1{x z-eNO;%wOsIkKW^+NPbM^!Yd<)s}z1#A%1@bymf83vc&8Lx}O2W-+&0lAE5$=hpxM5`U!9L8)|j7zE>`~}nG5^wm#BSn>;8&~`2-y}`-^0<9{YvL|ACO=;qA{ z1M)1BdFTJadkidmKzk&r5`ESoUCqB6RQ-g2!Gbk{IuED7e&Z!TL7~!6fh;K>VhU#Q zKuuBy2PXzE1B#Z)w2WA?Bs4YOStjzrsmvp=Ln+uOlG4>o9*Q5P=}sg@)P^Maac#yn zDmOK3Bc>%orRt|NZ^CAM1oz}TJ3q&@IV)Tw@sUe(-Gb2h|DoKPW*y+qKk&^Pmj&vl;=^)Z3 zYjaPldt^woGt}MaU^D-11-LAo%eqNw~r3 z-Yma1`IhTF-p?}sO(OTW{}p3&kKC8oF#TTm0IJ?)pk*D>xfDzAXDyHZ;-8J=oX?%6X}GGW1-BDN}ZLJwP10_ysn-u_ngy|YMk&U4El+pZOEdUxz5TETvR~yhCngbyW#Tt01(P*BgL(T!h|I_89Ej5m+MKJ* zwg=`(%zz;)tka}4a(=SPHibI8X6H-PutDBx9?1AKJ_8b#o#KnhIdjH#7Ed%-rd<$M z;B0pSg_seQ>ySrq(OZwFN$^v(x)BO@s{xH4kN1FyGpXf^x5BkGFU>OPqVG6pRk6$Z zxD4(=?$vR4F(;rBVGXz9&Jc6(9vQpPxb3;lRW(J(1BNX{!2Q+}F~Idw`h-(zUWG8N zxm}@iK;?NebbDIc$Hr3?vKr3V2GJi|WRe8cVXNIFW$2Y?_4rsbfKdV^)|m|ZFv&(S z&JBUkX^i&mUQ3gv8A857C%RiW%g2?cb%Cl37FIHAnWY({I`VdzXuc;43M1c8r`2ln z?(SNA=LCP=7+H7D$nK@P|AE&lsuy`;u{heF9iMMW#TO&#T)gKd7VvH$?k7sUghiAWUzv z-@d2eY9-`N(#E$ zdNO=aevsM~c5+H|ItUvsZsWn;KlO!;%t!L%1tWSxfzqY8jXH=IetiXUNfCkTYt zOD3NT2GsD)*#SCp;l=A_@Qv*)nRyiSr^(pBt~q$~U&uBpOQu0-NWgWVa65jYf>67u zNba)w5SgO4l%E5_0Z70X(4mZ2CPOr+B=Qy)1HNzFV57(d^0-lk5d2AbIft31AHaAT zun{@>Efl7sd-Tr{w7S^Ow!ioJsytSIUrw2reE0CTorCTvYPz4C3^IC$D1BF_vOsIg z5E30UFk9ZsU#Z1P62=bQaS&>rwe?{W=i>%<7OQB=i=JeOXx#X0X>#M-v1GgxE&~gF zrIPY^EhnMd^y!r_qZFmIUUP}ZuUyg10&DZ>TL!3X}eqj2za+^3kr^A`5avk?{F+zl&C7RDFW^b}SugO;Vy|ug4 zF9^^+*2y(smKIKOXeWwW4a)2os!%J(g|@`D9fP&|>~=2SDOEP`W~ST*prZ9(8ns|jL;YvCfKdUBm*V_$d{z!Xb; zX9k`MLA&EX6Udh73!H6RHsqKhXaM$pdUFWwJw1?bvS0!DH@1-RS3=0dY$6I!VC?Cx zKvYe`gA=e9u*`JHGSoa*-Vgz^x+}dlCo!W@>k+6v@U6j_o-&0maFO!|*FK{t5^B%y z+w6dLlhyr#Y%D+%+J&f_#27W*3w-0O)>kO6=AXUSRCE4YTfolC$?EJsXCuGEbP~xBEkfG9NAG} zgs-{DJiWCm7V#VrbDcz{=t{J7N1mp&Gc+S=esq4zfK-q6NXPp;pUVYp$4bpu25962 zUcYC1wiV$=SjgM;1nM&LK7Rb**;?U_ITiHOOxlwVJeVxRf}(SOcpxF7vtGNenwfPf zdJswHu>7Tzt^n(YcxBtmtBxH;VS{TD&9{vM52S6eXpe61+Up*dpl>gz+#Aux&~P1aA}_ba3Z-nuRFd9X`i+-4%}HRC+O$aU2pP8{*8OuHxK@}05@YL z)AEaFZR_SF!PQ66{_1Kvbr~HQVg3A4EN5i8qb9EN#<(?RXO3d)^~{%`UemG8Z62oW znwn3VXZH|kkj$F5+7(r8g-j+&+UHmFP)@fR9?G0m{!(qJFaKi+E+w-n$Q*75lxSBd z?(!V#)WD$bm`zYIbFemo)9r9{RnN2}))u4w@ae1xI0TN6n5uT4sf0vb8ybD!8UcJ}Q-m9B`#src6YQs_>FK*yStQDc!7+gilwSbLu>m=*gk50@k z*Ies+R|7>Ap&GOdG7;Xzm(pNQ+b8h%t8aEnJHE#k#O4)+4_JK2%+2<9xSY^?Fv3Rk zr4-Ydd|u;GwMBjM*eOvKEy^-#tt0JYMd}bC#<+vHty!3>AnD1yjkOY380DO8>>^X9 z@3&Hx%Po{8l+5UaE#x-8^dzp@8@CL9`c?i6rFURv8X`MPyCP7LMbh*VP|izS+puI!e%z+;vP46(LpY zzfE*hrevPB_4dXRN%kcxC?=(~7S6krJLJnmA?od9O~F_`K(Il}m90N_+JVTDbx5YJ z%G~z!h`}A&GqzsbZD`HyZz_DO^6HOiYV(LbGzgJxOGiCGy*iIX*sMbiepl$v>Bxq; zY|bdT2%s$E$a70rM~Uj8_qxtkQQ6hVqu-^O|U4nc66V zzZ-Zld2-ev+|FMHFkKN90r&{@4)K%4!eg*-UT?v%%;zIc7P7ONQSC$i49#1clE3hV z9ld4jc<`me{q5_JXYfpFUbh*STb9@Zkd@T?+IFO^{-a3%8FSoT!v+qW8 zWNY~u$Bbl8Pws$4SL&E0wT2$cw#!7+oD(ZmQJvB13j3nGpyZUd;G74SHTd>R$SB7w zJ5I1sj6TXd0pkUBH$b*GOqbun0_M$s(_W#NDirznWv_IBRl5w>5CHg3^Oqvh8)C>u zwo-PIEd;jrG)!tBin$V0R@wok1ld@D-1im%rIOxczu7B7p&O75jAn{i0;CUT3i)NL zke`7<78|xo^TxZkR09SWD!^O;5NN0}X?{TlSmak}b08415JM=t7J&ROW(vi2ie&3YooDMD7gY?X)-^S*Cn{6~d%{8#| z_-U@R0UM68DWMoIKfhhrNlTtrG-Ts_3q^%dG}snZgC+su%@6u!h3S28sfptw#6JaZBSNuhzmsdUw|@7IV85j%Z~ou` zK4^Jw);SHt7CGLen*M!pgxxiSM_`bFSCY6jbRF_4E!!a5Az2wC*==EHxySY{g4LRoITwCA@C+T$Gh%vjlyGHJllXtpq+q|( zziZ+o#@YNXvMRWr3-zg7zeB0iL~zPF;DEw=q&qcfWaHcY`XV)Pc z4=D|@frI*YgW*d!-yu>9eC!vYsv8YJ<6}jjKmZxSY<3=T74U` zub{@nlcP>o9-~Zwx0}pH6j7eb)QWC{h>E);IIG9g`nS`d5X-bT#XjrOb5X5yYH}EDji;%;CjW@!+&y> z3PZp7ohndsznH{n2%O`;xFb$3w*iKCP`Y|EXwwC*-*l6UY>-Li0;;VM2rp?1nUiWj zvHjwZH@V`*dz|mUGV1sEU0DVom4A*De?FC3&ptrRIFJD_V)7iofxW3iKb!RO5?8^j zCyNfFVxj8F;)dWBg;SYg(Xx4fErWj1>Xkl9rIpnt`X>_QgW$b5RgApAWoJrXSkJ&4 z6MjxAG2=}rlBp=})Bvfm-;iHMg<0rWD|wcZrD5hHwXbkT&?FqpRx&%(T^C5sOFyy9 zP_ZyBM=y*~yQ<8)8N@7=UH#y~Jb>|Z14c8Uab@9WS8J(sK>Og0QNIWUNPc%^o{EHi z8TAVZTj(Yte!gb_!}c4*ebv9k$xVK-lmf(@3Iwo}`zIPQC0hVVgRs&~l>8#L2DPa-)Pd`_16uw!(=)ApGvp^7 zL7SQWFyhZ-fWADy{9-x>&mR~?tb0$>0&2K9}sEk|R5xu)$7BKTQAl71m@*o_zmf zU@#jLP*%N7pG$UAsge1Gp0eEhriStr)hGVOG=RQMb}$QjyKt@ z%PJV+h1fs>9Uy_*T~&$K)*)_L(xNdAW%He7@a;=h`+vOtT4M$O=nyPclYZ;aj(L_2 zi}y>A0_pkfPTJ6YqvsMO+sw|*&&&iGNVK3r#y&i+&2Xq&(>c_Ec~FXLUY#eKpBqOs zcwhn_cuc=4i6NGv2)znK`O0;OCIJM@b*@94QhI<%U|RuQqz7qf%E1*R8LlNQF(5Yv zD`N0(YawJiUaK04y)KLwn0*HAkGFs7?`{&Wj~A{!e~0T~(4~?B-QdE!ZTw1BXOdT* zAAEC~&sUP>#TkXJ&rVvkqX+GHY4ip%9z72K0W_LvXSno3O_p5t*m!;EOg*qIzwfK& zJ$SCR@YRaK;XfsBLWCxoqp=904-QNZ;kBKcOkrZOo%C+}|8pF99wB$S5(K1i@eTr&g6vx7A`$P|ktY~881@a^rd%x?- zF&D#1mcQ0T3nW#7qtAXYWp>!EU2LdotdKpD-!7a}Ks>kaZ4`Y6JR6mLB=5zjlW`7# zHwtk`@^sP6h5fAG<@_%cU=E<}>zNFK8pT>e{0Ig!w6H%%1-t%-0YQ0z2({c6fyFkf zte)=|>JJ1z2pn7)xg0>hdUekck(9l&&!VxaCDsGc)7zmH(Tqg7jJYc%E`x_}R!BbX z#y=bn8JV>ykyM?(f74d<*yX}UceNwmUSkTpRrJQz$GRCk*)YSRnl)mr+Hex1yIq-m zcoA-sz9tlFIlh=vK43y*rU9E4rU7hUj93xyc)~T?rIiyVSWAy9l?X1*#bggE1{me+ z5_tGYs=(~{{3ErjW7)7AVIq^$7xqq{V)}TztyK=qAo2j+KB9StRuorZ^DzsFRT6(k zZb_cM_K|>xdTQ8=e1W>-507BaR}&droXrN5kh>k+sudmkG1E}iUbIg450B0p9+(Ox zo7Tz`b$1FCxkdH9)*LH)mYkf)uqP_ED*6+`xAfeXfl7SvoJym<0sTav-icDb0gdMA z`mFKu9^qfZ3c`&dfz-a8&rT0>zj$fCG54FCAa8WT$#K{59Jq3D;W=iN@AbFP3)gzn zW~3ZT*MeKxBi&I%CeZ=Gj!4`qqI~kzmXb_uw6Mq0C6|=6+S(>1BMTh-JnkUNt}vrq z#pC>pkzMNYa5O9Kdj|eeKVt7BCkJ*7oGkLp$+*vCSs5BnTRal$QIaSKA2a;m>>+`j zGP*f>=e^V;SQQZp;(CMHfv|T-(5wDz%hpV-x4P@rs|BXaCi-~E!Ga|#7Ka!sc5@vqPch6c)A0CVgy3+9-JF+@ zkkB4qAD@Us<41?*LvSm0cOR{2M3vYqX62=zPC1$OB4I%X#b!EH*7T6$Mt0fuW(Ia4 zs#7HdFhR;y9BNhR&7SV_ade6OUb9y8@rUaXQb$vog>=D^d*so*K^41tywcnv&nq_u@wi*qt1sf6Qg$w4fDyGKPu`deRnhX zARBHG8BlCbIO~wS2P_c>x^mh}V_`P0(O(V)>RT3B(FxqG%zH9TYA6tn&fgkTb#-+# z|C4@exLV|@4#|FAp>6KYBb5-&+ygh2lTPySq;?7h700I+{lI80X2>&Xy?4I*zni)L z3H&Y5sUTiO0ocOGT#zk|p~Kx|5;}jN1wJ{ATD+X|;R3m)_aPGXYzerNOvr9;@=+V` z-B8ZV+r65ctw0@)bx3h|IcXQ`oZVIZt9n6-zM1bBkg2y*=s&2-;doGCMM{dunb;RQ z7Kz$u#hOFF<@@3C8P@r z-pfPHReOSaev|s!TP>Ny&L_SS>_4M(<;hN=w}B2#bKD(sR~~UAG14Lxrw-CR?LY}C zLWzNgp9;;!w5^G{O%Mb!Cnt!Yq^} z5Th&ObpiS4e=gc z8T0+g8Rr4 zunu{QSUZF1T&zTx6O}5FD~E0Z;ds0bX-RN}SFJ;4n?M3V;xOgt(n)Kix+)ligZN8< z=noL6ln1i%fiUF^@dNXV)4Hw)K>X9wjT&}^P60O!uX*#OUH2upN^3Zh+T+-k%j=^@ zq34@Gw&Vz0!SRrD?0thrE`HtNAal#Vzu#3anJdd2wXg!>Ao>}>ZU7Bwipe51CWHOb zXf)VTse;%@Q-W*?IPndKlePfWe)v7zZhq+0Dw0St1KZebz`nObWKH}7;~#$fBOm|F zmw)ufKf3Urwc($&^8b3+D@y0LFYNcX6vp>>3~A3g#7G>NOANw;!;dPt{gdLpUi5vP zl6pIfGji(-)lcHYb_f2dr-|j!Y~!*=nr0JQZPWJ6^Aq;ut8@#Rc$HTli`FpO=E6^) z!FysCMhE(#3oXUM;L3mF zE7>!!rxum%B|$q{ZPsL2LuO|Bj$M7kgJKCxb+U`Oz{nClSEQdQMUe{xktE>A&&NQuGz3;Z2hCpSnf76*Aas&=${5phltm|Qqs0KFlk?*aW z=ABuVxTih3ur9m`&$lGQ4A&OVvOulb6no+&CJ+?>Vhx-X7e3v7S+oO6wrzvt6`;UfjW73L812M=|wFB zqRZ{ejHpn_+zT`MJ~&>dlm`L0Y%AQZ&;;QF_noM0*dUQF z4+`wNF1%0&PK*qQVN*<6;7K{XgD}a>fDMYBasb<>5Ha{)o;XR<5{c2IEnKAAhu#{D zg_5?SRz$n_kX(Odommj6x^7@`p_prqV=&J{eA`N(5|T;J!MpeCH23+~?@2eCUh;K8 z`A>eK&G@2pwLK8t=N{V75=021H}QCS67|jo+@|brG>j<@9f+=K+;7TtAkCG_`D#{1 z&Ya*P11R$I^r01J(BK=zS@{vOhz0uTXB#f$Y@Ox#`aq{Xz=u)VmSSD4};U z1}3sDb}$8#WSBy$b)lcho|T?D$?}Tfel}cTFsH%+WGuQ175kp#K!rg>{1W%Jhe5-tE6H#iQ z$muX0QKaa4QJzT5M5eilCEDrmIl;?OW zU|*fp?hO?A+3S{I_2S>4yz2 z@9Yu@DVaNX|N6Aq`-OfN>o|4zzGb9rWwCm96=HSf`iyKhIqocu23_#@wx@n}inyh5 zZ%FN0u`mCvv80pJc9^~yjW&hav(w|?o<|yLCvaVsSZ!3EzYi+UA0kIfPikU-D@s3) z>Wa$p82wp%eh$vrjqu^h)p93F*%Inm2m1WLRW+CT0z%dVtEi$`V$nYL`&Y$jA#Mb4 znT+iV(iC}!5wU}WVa#c);i{mg(befL;Nn+~Gtg7yb{x;IPVv~&ma1~)qJ)fpi9p%7 zx;NgDxzzp%sMoO)THCwto8I)c+!4){S#VsZ=lr4+-iqpvL+x9F?{~Ir6*TM|E5h$F z6#9VNp6A0lC(ncw?y3o0c4yyp%z|{AVXq07xYOd~@e6|zw_Ydh{8kjKdjHB5*Dz-6 z*b8{SpHAqD)FopO)?S}#9@@u;4SiKCf|MEaOnb@dms0et^MHU#pm3=5@w!Yi6T!gb zIU2olGKUHuC(kX6*xf0bn6=MzVHJ$b35Od+p0ki<3UVmW?vud42tB-M*}CSlEsf0} z@ztr$=R&Sr4iR_Si-qU*lr4i}mKc1uO{A`Bu0P>+%RWe9w#awsGknJKM{47hJ{~bH zp~XE~%e3J_OH~whdJZ)?>-NtwnM&lM-5Y!crOu|!L^bq_cuYumXx|UyIaU7T>b1<* zUsRa~4X_h}H!BV3q~+or$_HOeuJ&Te7qCNer8(HHjI1WHK|>RGmP=R(4(4 z-R(O{baD6A5Vopr28=n#!w%(DDMLs$bF@sf=iU6g=1#@T*6d03=|dtHPK5c0`8UkW zi}14T-of8m-SRbfH-a7tpX!M&%t128BkSvpqw3?34j=oOcZ@?_*CBnR(N2SXIg;7w zv4tfo(O}X4qE*UY1G zmBcdP7F)|(1c8Y(rx?XPDp{7;WC1e)|Gi{%#iCm}I@uTDoJ_p<%=%?aMESWj4>Rkt zO{JMc(e|o<YH?ovzS!G0uK}D%xG^f17)EVAe%?MA!L(IA8X){FS1d4E&5ed#ur!yBbvwDvNuFMB8$r zcX4vrh%s<`Trg@voT9mta-T>WVk^?1t@S4%Tnp?YW~$<@E@KzYM-n{06iL{|Uf{D4 zi$2>a{&)*SG6b=LpC}?GT{I_3T4LBVDA4?-4Cqye$-*1W9SQM=)Qg8#kzP?-pVA^4 zmq$Y{$)-O-G@Oe~AosBGIU-I;x$fzTM~4o!&9PlOVTTR^ z$}qF-AamKV-Y^@z6g^kTgcKUBZ+oiuqXzz%rsfh$NrXs|(~R!hb2G4dZHHA0=<3Lw z%8K%(_e3x&*fEA{vaQ7}oS$s~<*n{58M^J`?>F0%Imk*E2&gk)8 zJLqXagvBktp|ZgOwv@=L&1ttAb9Fv^h5H5C`9U*`7aIEsDpaL{&mCFU+5KX9Zu#V} zybQ+HRo6RQj^&X-J$GqJ;;C@x?&NooLDvPQTBI5}M1!B90wf64%3RV?Vmz#M|DFeHTNn4TsrSNH*$(`w+O4Pf;9N zlJ44+k(Cpmg*US19(gv#=k@lr7*giQ^0;wKL&+)F$92!!6MI)Dsn+=pZ~BQB_P;cLYv(&W@qnZQbQMILfseVNRf&k{ii+dRG#4%%T1l>C$BS` z@h?&(J_|sj>?7A>xB*%rz@XEOWVk}qh;ud%&^z#x2>M5HhO%y(8!)4Ep{T{Nnf)>u z3(JdpZPfRrdvp2&Z3}0iMj(*86%~m;O7^=oXy#eQOi?%#bVWDu}g0008 zRAXV*RNa<13qa;AGd_meej%KCS^H9xUzL*m@-Z{(b+E(kt3U~h& zwOpOp+AU=W2O)Lp+)K?18I09l%Clj3`0LyBH-9i3TcC^epC8!N zHM8&K(}RI3zI`n>2e!Dw*Hs=3l*Me9m1!w0V|R0kSBJD~{gl$|y!-JoI}0-e`{Gq= z?4rVmcgktOlnaLp`hvyS?yG26s(Dfw;7qk?*{S2m#_P5(X3}V&T&XMD=Xv7jd_)o( zJsi;hG+SRTSc z%%Ah@eTZe&)qBkodeS0ZvCU67ZrTemFv|ex?%yvAnn&@VUV+O{uIB}oG=kaSY!hZh zC*~Y?kD{XAZti5LNIxDIERmj>>EtHNb&Da!FI{&pv~&WC2~*a=?Qf5UgjP{4DFn5l z3KxDV0Qfor2YYhn=PvAK*O)CTU#yP^9{H~0`Yj;9n9tC7@)fgfqK(fTJEVCVqM&WWDlB$J3AXuJ|)qLUdXzf_TyrIpz>-2xlZC{3Z$gY!gILm#*Vn zYQr91l$S^>AefCf8+mlR%QJ>IT2wV0Hg>4WYa>F(6$sJQI#0?m#~1v!BV;sIP_vc& ztHhO5jrcJ^F;xGh)JY*Rh9mLD$33vcx=w3#n>0CUb<`VEIx?2vw{XfRl7ikE?W3KZ zLa;lb(@&5y9n;x{T%-e`%`b(coKoQ1R~m%u5{MAzD^EQ+=gb~+2_-yHUwu#688?fH zaptBuO<@cbI$j-4IY##D&p8g<(1XuBx4ll2XamFhQ!)Fbm9$lK~eckomUD^6G>-7DKKE?sh(u`WjoxS>cURc6} zNVuYbO;LllT*yY}sF^N_X5>>+Y=YNJ0g3Pn=@ zMM!gyWrhmI&PU>(3+k>#t`eqQ2{E;E+}j!Qg(XXfHH5p89KG_VY(Y*&?LZs2yhxdc z-1B~-o2`LTq(BahLC5XWe@ zGbr}tTFASF$FK&eEEDJC(r*yUYc4VD4HryUqXb01aGib1=NMaqfDFA>l2bYoIpGb# z2TZg^6*#8^w#6y(ROdvoZgXKlBZdU$3iSh0Tv0(Y!@)HIE^XHeln?Kf1n~ej$94!@ z(``zJb$Ed;9mA_(M${V{gXZ(PK0Msp)zMSX7yYrc;dF-b))*v)xIO&5oX|@mtW*JE z!BRjUARLpnc%VP9qUbk1G$d{8@TvX-9bZW`D7eA=y4Gx4qKj{s(e--E0}_FFA&aI) zIhqSZuJ)S(*plXu_*7MBuUdM$YvYGM6X|^(r_{-F$6^HR1ftomJm{)2uNDI*)FE@? zAZLfiM!l)nCESC)yb>`Ah-ywjOsPFdZuaHmqB9T7^@n0y>(A8>WTZ@KiG3Pdezs_H zhUKl4W|`BXSXS^>7zN=y6%N0`6$=N6L`Z--qckk+hfA{D#BCd!Fn-ErV&iPppEm@s zvEs^>7~E2B@pFPEAe)VY-2RYJ#f@-eJMjH>aXTocR!}GiXi~rElqhvIQlBo_y-A=V zU!Pc?dZFe#M#_yUNAkn`aYkP^wZNwRZV6qLb){9BQ2`PU+V}{By8+@LT9>p^9_e_K|!L`%8h+G=M6ZMH(6w&HJhqZ5-H&giS*gs zoQp&$YKk;*k_yyN1ZVg85>{VwbB8Myw`@4m6+nS)9p~%PVrxR;)mk8>$Y<8%wg^Q* zw?bzSyG%f!(c~YHC9J=4_QY9Fzhg)%DdWQiR%qEV&6iSQnVjrh#++a%+>~-Vhh|7} z2$x>qklxcY?_2S*8yXL18M!vAYMvE*Oty5i{PMxb9nKLtb0Jx()pTl@f-$E!2*+kR z<;>Fs$*QT)0=5&d8jW(QRN%7-{;7^QkEc^fkgJe#q0Gl;^>~V_;{&@R{~}rI-T!%@ z-}t$FqQ4G9U;zQ)n?Ei7dHT^+mJo$NTB-VB^TgWT*smk;A1{{2{w1+_Td)D)f*AH} z29-aTEqp)bxK*zcO1qgUH!|~5N@g$PHp|hMm@h?HrHf2A+9GG+4pbgkB`DU1u0UFc zX-{e$3*=mBQmd;@!D4qcHF>EQ?tBzt_Y)GIRMfll_)Oyg18%{^BcidXzB(%|CEc;w zi@i{pwZsJ4%QZKkFKG?ph2`pf#G;ZXurCXow&X3EOr#u`;oyOQ&1BnVZk1WeYUxd{Fu>?QVH_vQ_b-?Cx zma;vu-3)r}v6ut^u5nF>!$fa|!`@G$l>X^)GDf5xlO|WF9Q9#UT*Ih$ks>Ot~NK?ThNYv{fBnQCr!oc)~QhMm6iO#W}>a z11F3lMR(e8uO8&=y&asY21bDG=B703)J0-pyV#6FNP z%W6|Z-l^<5A}*q6Me#IS)PvTudMn&3?BizPwMY@FVn-80+ic(`#uFnm{(BZG7lWqs zVi$zBrE%Z;5yEqib20oTF2HcIh`vD>qoJnclba;NK`cR+C{4}$2g*r4HMx`(W66@D z%~8EMtpx45$T0;s+3RO3KdooNGNP_Z`PHS|+@##DUEgJ$;$deVeT?hZCKH;<5Y0rXb%)3A(&{A%l&{Q@rC)X#3=9-9Xx9KCK?kvI2h8Q-PfB-FXzpJKZZy2goKlSH4wllf<_3V>E z)z_aM{ef}syW?fJkOAC0){~euLtGCP-zGKcN547;0A`Emn%S%C{2|oiQ2d>03AYVd z7w{x!;bdV{+S=*a@|uAa)NzMS-rTOf6}?~Aup72qMe1!vuz>9)Sz(gRFX!_MC=P02 zcTBuShFwtrfSM!X{CRb2TL+d;IoKoGjB=(M9imC)qjF^$V5;}y5}*o4yi1DLGbYuEk!Gafn0U9lx$~8A!X8g8pi^zA1GH-ld`;e*Oz_D9gz!k zVd4%@5+*Q>ynK=^IDAlMiEzu{dbdMG!lPt%4W9C6qVNSySp%nNb=!x=c|y1V6=h#2 zcmeIRXZBsog0PDxJOdgMAAyV_%Sz?c{R96)9!!e=B$*Aq`&sDjh}|R|igKFNG6ZwM zuaoVo$j&;P02pPG53KS@Lo3ypb<2&j?8EJ&wT7WG0iN<{`9k(`l9l(YON2p7-g|Bo zi{c0;ezzrH2BitdCDO|o@lTWrC-)$el5L|_2+guVWXNt#V_QqV=RMCJtIFr~Gp5ld}M zk~7>!-*AEgp>l zqCK?6F6ml!brO~7f?&uCCW|LI9@~kywJLZ5dTiIX>>}5zS3Wi9o^E;)(6R0<{W;&P zKb_nR=1?>t2RF%yPa7_S{RB=6p3K*BRTFOD>vSYJqCwHcgJy9^XmcT$9%_ypN+ zC#io(@C$Jo+?Ea`=4K#DmMY)t5S%1%xS>Kn7wpJ4s@Jas^QZQYQ7>RtrCde6>lf5U z=A<^u_u^~MzFR^-hrEoXXDbGa4d)>y@17k_KEeIohBq``O0w&l9pgO1zWj1KwN`bR|lw+RZZ|KD!FYU_6`rWdHj+# zzbz=&$}jPOBobO8?3Eh)8 zx~v{KhWC9Y1i8U3Gw$2IYH33nndqq?2eeh|geodH?7c6BCW|@Qxy%VE!%>aJJEwI$ z7n|Aq_ktx!tBjW}iCH^qzR4PWt7l}i#Dxw(_WGfth7%QC?q0ilc{)19yhE!-!2+)V z#p7Lkf;tgRZ3tWBu9zi|gf!$vVE{p4*y=I>Yf^!>K`7E>UkYwor0lbPvUqC(X&ySue{^sU?Y!Smg@PaW5iB9x@;o&$i-VI`7=Hn^Xwe? zRAs$(oQKb&hv{kt)O!UrZ&kBa+=E?b?;EhZvu4S=0$kDD1p>Y|0Io|wH&x}*RA{?f zThd#YCZ!r$fO7@d7vlgB6hUP_7>H_9Vm~kK*;CD_&l%t=)C2)EO z>jnC0Ej=;!wuhh67iUEt%RAWB+9*|Rmav@ute-!t?_OR2cF@(R8F}*If zs+vt^`&Y>d@|s2mqC`%`S4Yj&rPjEZB@!&WzU?Mr#xs#0@0Nl{m9?I2XPoOLz}SR; z{XAqSsg^AhI^TFF+hV-L&rx+q-8G2DoA$f0$#%*WRxbI@hKpD2p7m&8XARl}vK#~t zI-IL3po69d1-nhlCu^#1O6=JT%fiQaThh-qcP6lf<;vkNrv_wyMEWEbs_)(ZH^Q)m zC0wXHZ8AwNR{dLMW=zp@_nUm-#po%}=eSewKd>k-0;kFFLUrP3wFS$yO$D>U@DoE8 zit`gM@rUfZAASt6K70-6)2v?5)Ae@ndsLN)LZfT)Pmlw^9q*7 z)Ia~dkTyh;k3R05%inGT7*qR@-v1q98jf*@3r8MAIDcCKK#36A4YFGJ`BGismXDN9 zOLTPzbL%=Qj`{reao3UP7gDAeem6Qhy~~n2%$PhEQ>!~s!y9(xv#X*Dsuq3ekb108 zm6MRbaqXdNUwTbx_kfD+@qSeMQN3svs{4zxDpIJ;SRQjK_fzq@u7!hnWACzJ8dihx zb((aRxT$UcK0*RMdJZRFw4RpDM5>l@r_S@z;e(G&njTa54qUxAolf&N3VHA({}TS% zwZWk7mY!Wt$Noy}D9U9`IU_kTaqPBYtCtP&)u4EZIR3FVuD-nx65t$2{I@>A%#KrHyI*-H>ym|*$|8>jm`!6nnW>$!9uk#DlWK~v(xY`Ea6_f0yN`veMh$I;iU0{ zj~e(FxX$EFMvej3mSOFfhnMRWxahg8u>7O zQqE}Y{5L*B6(+9$oX4%tOl#A4?bhbbCOFDX4*?tv?3q)Xev+XvA}&Fve=w{$EYHyt zeYZ4zFl1CrmC$%#H8kkg|7W{$(D8-zLqjqMW@rBmSqxdUpI@}tH4Q7xuI~O)Vp8tQ z4f}6ZE_uY5f@Xz@xi}e}kTHcmnnuQ`hC`vF?@LR(7B7cwyezA{&(uNRgORQ1Pzv*d z_@*JGJbpzS(k+@xN#l0oE;AkqZs`jX9P7}i2#`%pu-H|Ko2SxGPu&2($6>%hT7gCE zT#TbQ#4ysI@dJl^BhCcSS}$11D{0l4Zwdk6xv;O`c>rfa6Zb~a?`Hn%x7HMhGXDOm z{YCt}68{lSzgOb-O8nj@e(#vS&yM|5fm|awa(<*0>|9OKd7^w4euK34wuEu1TBa^q z9^Mniw&hb>jgDV9aL_NQ{n8`-5PQK>2Zj($ijJU-<3QEPSq-#Ngn=rRmHZCz^)^s- zn=XNAiKfWI^vf{BRC2H&u2#-ZcqlXN(BLbI>lU0!c`bn2Y<~lG641&2>xbR{h4*`R@TczUPn^!Lr(Y7W`afrRGru?h zy@$yY|7n`H@wZnCc>j`}V2$Ovr2uw9aJWu&k$Pg#dnmMN@oMK|x^+##`VWT40l6l^ z=>>kdIjTetvvjvt+>VWtpjdW0pL(dlPMu(iA=sy8UPLpGU47IxR)sY-_u}WZ!%7YB z*yh-_fL=xdmIAzMoBE0$4B6|tRCc&(U(kslAaP}b>r9IEF7L73#=fhmuUfNB{Sskz zX++S_r!C`IU?CPWjslg=Mb#gmWBIR=g~yWpJSKEbFXH4!Ls6$xh!LM&X2)|qyc{oB zBY|xY_~YtPcrIkX&*iRhQ9XZ;QFKNkE*semYB@d2U&$qf(k?f*%@uI~JeA`z7vuW& z#J0L9niD!9IuoNzZI=8bx5(K6?{DQOhbDRLk9gG(4{xQ~CsQ9#gIgNN&l{Vrj=Bd(9UPbgu z8>kpq`?@DKh#Aj7vWhF(y`SGwzMM?wAP&H$sEB)U+O@I$M7Lt$1RZvjX&QBV#+@z6 zcxAZTd)JqC%4}RUjx44<6c)WH)-CMasdQWYV|D1-B#5bnGfkTPuuCiQINEURoa02w z^!2lJ$ZOn;I7gc0(FSeB;s>T?s>OTT3K(A_U+52pi<))2f|IiL1$T3Wloqa=_LsXI zZtOG1tM=7l-k|Y#Wl6H-`>9?|=agBL`*uoBnXmZf^y+qQijl-hVCNNZjDxO9puTm+ zE1QqX$2?z6&x!bKI#dL8uiqYr{JDt7#fsC1Nf><_sPfCRVshbbf_gTbY65N23fnSY zcC6JzM`(Slp8$d>M`eBybQcjGKM90Qga51Zgr*0^pC5kwSQ$OHe2%YsT8kMmrrOnI zLhE0PxbxAkHM4{O__E?)oe9WYO*Pa zrd^Ba6t86Fz1;krJEjYj<8fEj5_oU2q!qp`{md}?^Cvt3+pKcI)?4JLW?LII|m#Imedj_vuAJsf|s$h;c1a>;fDlF7DB>O_vpfkjxs>%gnrT{WX zurscHD-(-4;?mNQpgodTwJtOEy<@LlZ6+`pAI2V5$}4%_@^HvLCu>UB zE2Xm6y8xOI;6?PJYXa0`w$l&XA4H?P#qeZbZL&uocB?G#5pI4NLAnnHjF}a15?xxoOIRd zgpd|iFCfIn3UIzYZbN}Wu+=M(k#}X|C>7ghz^N(@0b*iV*c9cGDNOhVlAGpEPAYlV z#8(+o07auyye@!}O3gIfSJ^{8JfYCBRTKP|sB?<+bBoL7-o2s&93+(J=u+TM`^H*#ivwGgfc$&v02|bR%bRX}G zqw1PDr?g^nDG?IlZZxj^TP`#indn0-Vq%UxL5*j>kKOs2yf^)*s|DFDDf&uN95yY)#e9i91ZV|oO=QQ)h z4|WN}+ZyS=$ni-wc=_4-D&q$}t;cPLhuqu(A=*hmbzE7qSdPaMljN^9?HTrTI$-yZ z+rA&?_ht&6cEQWnfl(!jgrK(t0+1zun4t$WpZXCUnsi~rcOcHS483jW%#!;tJ~cBd(TYtHuK>YeB!n8IrZfk@KDS#C!%>xJuu)C=Of zRVvv_wxe-{nXjgV8x6!-Q)jmN5{X;-!kl|2Xxw)En=^H;}enY2A*NrWt{_WdRb22ymeLk zeqtJ3)blaMJ2zLle3;;JVpknQx{qX-Ps#4dbs%3Q*UG`*QlK!!vo6^LGmY`MGA*VN zBrN<6SG!4HZJ1A*{l(8u4iu6`=to>8EWpilk%SgyC9-N+CIN1lU{q1zTmJ^qG^-F2 z9pa4_P;=y6?tXUbz|31~%yq{SK2kb!PS*6QD{deeRkCF;Qse9EJ2Ib7#@ZaSG~koW zt;N-yR+*n3N|tiI_%-TopK0!HhzAu0=Ro|~oh8?dVb`3J{ZJJ;()I_PN>$}HyRXsm zeh^&ROb)%T&TPLJRehP#WCTpo(MHWBtTd~=qFSd(H>MqjrrnCc$0J`}l%JbuK2cQW zVtb1VwvI-%gTpJDzh)h*;hD^t!phO8{}&3*1Yw@aoR}9gN#bJ zvtga1S_-WaVuqs|uG=`5NAX8Cw3RQy-m&S{O1Pn|N62 z`aq^RL{7D!qwgcLZ}YjUk_kgq71X6Pc7j&?){2&FzmtSOxzpznU3IkJF6GV`?oF2s2UjB`E<^{iq*r- zA83-LVCxS9XWJ3SM&(1}d3!VhB7C^GL?VU`jXo1Rs4Qo=EJGz;Y~00Sw^r~t{TQp- z&d^NM;4+`rnh}V1}@p) zwNnG!c&h}nrCd=q&(EIBwH0E_VLam zm$Xp#t+>+)nHTG`$t(?;WTr+mkJaF245!AC_M`M$(v-2if&eUrJLhF#`!H~zAR`OAL;@Vo^r7=HUfU1W_yqy47X$eI#P1(K1azFc6*Av6@AGtV%Am=K^O1Me^SDT0Km2B<+UAkquCCSVh( z`58ko97U{E{?%=K9y|%zJ7W1K(88_+=DmsKzc29j3jU74-#5wcZRYnz{re>OeHQ;t z7XD92x6t(Spq*E=BlQ63JIUehU`C(>o9FwF7+YB!2oXGW?jWoV&`q6fq$8A6v%!tj06tHu#Da9^VYf$au7Kr% zoZ0LvUXcjdUhWqiVJy$G;_A@xJC*&k*E1`{4wWS{r&4Ksn~5AGqbCSgz~mWBXBYoN z>wy+lX5Jfd()qEo;Ekb8>goQD6;YeA%E+N%qLuLLH$uMZ3P%ek)W}I9{H=Q$i zbdEP)!sJ@r;9JBg3~vdheS}yoHjO+Qga;p2v?E__n;;@-f=Ti#?+X+!Q<9BHN%`5| zG+Zme&R1e&XJIQxTgN+?(obc)ITSQwOOcxFjjVuBM0(;%Mqw#ybC%VV7fGJZhVsw5 zJ~qP5A6`+pU_JZ2iCUrOF=OTLVZ<%lzcPs-olgX8Qy`cfF+KB;+V||tWCvw^n<`m+n@*E?HJY0kITj%{%(C$&uCq9 zH6fB_jhp%~v(lNkYEPfx+R*?bJ(rJ&O&R}Sa3zE{-6kQzx8Vw(`sf0%083o?-g#cJ z5~8^1HeRW}y8>Wvg4Jt2x*~J$SLkDsS#0%6p_>4HtlP?Xx^V6$t8A zK2PZ_S@L&_0#ERj4Wb?qHx;0KviKW<6)7hD*Y)Ogl` zYFg}5CMh8LbLaPe>3@Fx(nf|f^|DcxCAVh7GM5wtQig&??f6>1+22o4l?z@|e~why}(shRvy1T;8kN(TNR^ovH#$~JGo_d4RmbOURbDgEClE=R`D(Pg?PE(t!yMk=pof7un2p`5_z)YYmZo#0m1+5RHAhfwS5JzIwP`!5784GOf2 zG9UoRkEIW@qa3q=7z(zoMSfIkd{fQ`)^rO6vzcl3+rzQSALcmKAy8eOF7)c)ec>4P8;9g< zA{T3~Q^nx&q_NbAYg`TWXX;ZwSKj~T=!@Hh8~NhBbQzATDMs4rU3nYIq&P_UHx@)o zwsIAbGO|)bZEUAQf@X2gf=tr!`tGHwSjcd8VH^c$VGXC}ZGwGaI z3_ugY0Pqy9OvG9sgRj03%fGYK2S#aLb$8<7|2L`T|1LMl2rdi~$}i7IuP^rmkR+Qn zw<$B3i#((C$$1S0FgJr*m!z%gmV7kz0pjrmzfi+*THf;5;DO=4^zrr~wyHoctJw41 z6;+_R69CPfV)zF{7V#FbnGYxukn&?T1P%Tvka?O6ZN@+Q z?i6(T>zr)$T!iTjwAF1sS*$=#Kw9pz&U)$lj}_Z9MFdWm1sx*sCzF#?Ct~T znf0)hS_42Hx|U)?ngW2l6@$VQ?BY*lpq$O z-wRj8+QLtImF68Cg&2J#bB_M5-TQH*!BK-%-}1%=~z_972@8~$VY6O z0i21wFPEpRty^vQ;>V!=phb7j$`~}%q{elq7)GEeCv3e2O5{Yq-C_%P`Z9=US^zu6 z?OuTFxH&;+F_tP+OZcg>y|+N45OJC!s8d^o`9NC9*uoBcKQO1k$#{P6-O&c)KW;F* z&}O>39=XdZ@!-{@Xk*Tk%q8htKrtlf*?xuSm0 zj{giIRxFe9hm#_6rm>WAFs#XNsN_+X96oW+G9cyT# zZ+nJk2;;G%tFCouOs4(EUa6MbOJIw_c3`pmJBwTbu|%SqY{Kr+mLhPAEzz_|+byFK zy_4zL4wJpii@wY*eja;BHwW*W!WZ?AxleFBbGTHLD{$txJ9H_IA_f3grwsQZh+Yt8 z%2j-i4i7By8=+$6d(b0OyF8y53!C{hg~F#bGrGLCXQG3IaAO3Lha@c>9rA-=S-l)k z$Jx78d!{M$@!VUh_^em9Ip6il&Emw%O}%k-70QJdrW7aKx2{z8KYpH{*Iv_pVcpZD zE~qE1c-aq%XmCO}`Plqm;1Y5BK-x-dqigB{IQy)<9PoTLVx}$|u_gmYLvpr2KriMw zUD>SUiBW?**Ylo~blyswSKC(<(AGLm@jIV%ZMwdEC_^K2kaN0f$3EzQki^WnI`dBE zSK~Y8qz~}k9h;15qmgbuU#D{9(}daUTMuX7#}vFZOs9>Gp@fT9dbJ?7%fxku|328V zGXY4qR1goWscB4rtP)2PcM($~schBQ-(IdR-%v7{fEAp0I~S93KRSm{fox*p02)`WRl+V~3o`k$ z1k$b!-i97&L^s0&Tdv^WRx|KqF`_|HnfDt^ycUGg40LmtfSg#`!tM@LWY@*C%ttMY zyYRoy7tb2I_s~MUW?Dzm{l2U%W7-tvo5)1PTriE1L|<1StA*9-W9y|-di9MyM9#!K zCklz>?RbFk^*0JoXYx26s~ruQja3kEf3RD0X@!26cJXRL(&#B~v%=zPJ{|GN=SZs8 zN=h8rfm|J#5;NdrX{1rdSK|x=|F_Ez5$}UM*b7cVe3jXk37&=n$|GrruXYgHY4G~L zb+^V)z@(twt;PYHf%46dq~0jFoXhc=D$bHUWTA1-3s~tCZ_4o!?tW^+7~i1G7otfes?*F& z<8pL*L!^yT8AJf?IiScwm4j_J0?P4mr0v_3Au{8naM5`{s3S}l?LZ$4$QyrqSAt_i zZD1(p$!F}yi>fsa<*#4&-Z8FT6l+D;>*mAdDQ~6-p}wY-*(HwjQ(9oduWmA8xwZ9` zAL_Y|T*~?M^39y1efis>_$vt=NgUQKzL*^NEph^k5dd7Gw^U0}YW4;>mHp#fT$(2y z^52O%oAs^g@ypPc&t8PD7^oi_(j|+80^2ONV=|9xzJnXW#-~R3nJsIqa(ZT-(#>h3 zlb%#vm?~Kj3<_JtOk5s>->>(1W0P^!y!+CDEltm}m)N<_J#3gxe8mL0juXz6%`fZU%nAo|RGTU`cEmT#p_Jx!xOS*}0_}j|KfW?U*(YTLr zZ3@)ut)^_5_ro@<$bjT|s~-%3Bh85Mb2SCOrniXRyWs!$GbhhT+W-zvr3=8TH|emS z=`FYy$Y^i;%w6C8=fw8`kmV`?39StcpkJZXc7D!pf2O|=xqqd`x^e4qfKBy({s)8p zV9@+OGF(YOv}ZrVH8urwiU#&`WV3oeQRW|>#qNKhF`aGQO`lISV#;08nhD~VsB+z0 zwX;-=V_CdOKX^M`AvKi$E4nfO-$Drz`YbO|$%KVFhABwOD-e(&3B~mji zV2G_rN}Zb@%Sg9Kw2Wq=A@}*~u31U4yI18uY@MrZYqC5)SbMqz?_90?J}_%B1^x_b z)_EPz66L_h$ER**wRl*D`jq;R-bpB9Bce)f7EuZThv`0=3hOPV!42ez;o&hYp1r|D z+p!q*yGyB0rmis>PXUGhK}{M>cu^oah6|2+$wp3)Z2UZYL}>5S;JaDqLaktNAlD^ugukxGj{8e<%mpEt32&+d~d9xRiSL&3pE(7y1S*J#`sJ-LxN}8q@2C&(X^uG z=#!8f5NQqx2p>h+mjc6*P+&r_pML(!iW+{MdKAhzqh&@-M^4vITRmvf7R?Xx6A1)i zs)x+_y9@o0iS!F(%ls+iaSLZWHaic>gIeE7mP6y%JUraLwa&e4x4*_8l4 zv;I@|=n)o7`T&fCc;YCYy+382%8Y^Tf75=K-WjimNN5plX&2rbNVhyiX3d%r<{Vpn zOY2RYY#5+(s7+XK=~$dsn3{#6Gu*CDnc2N4*DZVK=RT8@Be=f+y0YC?A5( z!nia`vC^B>UE`r%5;bIIm=uUVXL3=hD0zY)iuH}%{(Jfp#PatPf=PPkv@ za#c71dEX6`g8_T-CUG=NlvQ9@w6rUD%`)L{aZtBd>l?3cnD4uEa>fZ}*8D2fYsX;2 zC#|>!EV!P~imX64_wvJUhqZ8x$&-DzTB6sxbG1{3utb4-+7#mJFQ%v3IxEz7ZZOHD zO=18MJ(1Y)Pf_ON?HHNYtDHhZ47*+ zjeOk8uNQHut{N1l3&PgM_Og;}Jozy`Wn8ZW644P-Rm~ou*E{{7Z;9NQB7lSvzgFIe zrCdy{InDnm{QF%y1X-%QRjGq+7=Q+L z?@fb`!rm8N7qbNXoR$Iz*j++>?(`nVEo*WSz2B_B|tp5wZ+3*1;J6dyI2Vr_Oo4=lQ?Bzu)sbzsKvP zjC-#8y081%ulMKud4E{5BsE`|22}UA2p%fienaI6{T{B|cpHHja9HZ09&F2^+Y9fP z^^Boy+zOCuVMYvhNR>wIwaD$m904&wYcro4Uo4fUzBK(ObI^g|hcRN(O|Cvs1xr1U zZ?@zfxB4T0gK^l~w=aOW&GCKa) zX|I*myO5KM7-5O7Kp%pB0}7b)s=&R-MZR{&7kJZ$<=p6?m&_8<#;P^(2`oLw$^*pN zu3weMDQjP$+xZ~M8W5~`PP73a6DGhvKoJ21`G{MFA0BflybMLAB|f~J1}`ggSOObA#_yzSOO^~e4q+u5-`DtuV2 z?Ii_Z1EGK?0}o(HCVU1DWh=77+Aac~42=0O;>e~k^k3)sm}<+Drm5CiIhL{u*k3OI zrg6@6GQ0m!*4iPh?SL%rO3ykdQk!ZH?c`wqe@~2(VSats30wgIj~-w;6G3n%SDDw^ovWvA+NN2MIK!9BhWgFk);Blk;TJ4q1*z zGy97gO65W_bR!?ilN&jSj!SbHbUlz4T%Kp-vX%D2%!9(SL}+?nY-(GNWqy z0^|N>q+xzn=Ciw+uRiA-Fi-B>9arW1;#mx+{?eBM7Rs&$zII4rN9wHtbPSBJ5;Q!V z=AOI8^5Lv~PbmE8vL3!>aYeHj7O4?$TtKsQYmO%i#M!!obn7%hw%(C;T$=C z;r-F=2l1b*wx>eprfC-+R1^;MNaI_ER^557l*X^%C(zURvS?R@bLq3>HbKyy@aB)v zO4lww+xAJ+AWCB+emCdL@;CtcP=5e7U0BNF)G#Jw3eE$DgGs%a0Pr_sB*6aMh#`VF zFdLOcc`nlH$U2A*w?ULWbzSS8@Esc+W#(6p{+mQR`|lXdZCmp?DCIHGavMK!%`UVX zU>~({sEA(1jtzKE3AE8L;1@$4$!)M=(FJ4ibGL!oK zBSs1!s7CSbAaeta-j5F^g%_`b^Z`Gcrkj8$Igb{QzoYvFvU1->h#1R)l+9=`SNU5i zB}ujwc*an9g`w1a-<{lJYstq}FBa?R1H1W~MScTckECF+PMmqsuVRia^F=?+)MjDh z_a*S)5IJ6=1aR=YDVG9c9_SPfVRtVDE4Ybz_E(eYEPj~?Z>}u# z%VJ3Ob6GLk2j=d^#@g@9o^5-iH2VcMm|O}()MCpWS3FFNu*yJ&l`DXQ7J6soWfw6; zNX;GtQO=pSz_{pV_Shu?}pk4dPOQ{%d z#f5wncUaci0DwHATF4x)lCUV^vFX$yFsqkos};VnA;(L?)7kQ^>9P|sObBxIl*)j? zESd>Q>rzb+uma1lv`X{zSq&A$4I}VV=!L;ffliEaUXp?*_m_-?z#C4v7v+_w=dvm*;im8-GTLagt z{?B_$xiaeLlC;+X7RC{pvRVkjS~BXvJnV44du7KZ7^6o*m1q3B7&Y!0+!4bgVx4*K z0#5JT-ni>>Ny!oWDfr}cKUq?5V%VEWy(>X#)wr)?06D_*xU{G_>H<(_VO~cFhYlA) z+@r3|I`S5mhZ&U1=A7f{E#OpT=#Yw^c;ztdM)xHI>6Q5aTLz{hx2Mn(>Z88lo1f-t zIOXzxt>>Pkf0FMo&|776w4$Mo_nq|+r2wYfW*5K|B>x8`N;hhbvKmll`xA_F z6vGa6HAyE?R&c6a=)}KRIez0;(QGU&z7zvg7w@%B)z6BQ{ldVXmkux#Kc7EC3;S3` z31+dktK)ae(IGvF8XnF*FL``pX<*G&WA%!gh$7$JDJxJpv!D}d4W~Gr-?It$(s3eE ztL#;=d&HI^5%fN~mCbL{#wq$@*?j_pRbufo1CKw{&GB0E5Ts0RAu z$9}Zt!QL-x>gTnFRY|8PIFyhN1&3k)a43%F`zAJ%!`kEkaEsO+M(pRoH&RfjWFoL` z?UX^09DL<+L;?Z4>?Q?(Ev_X3YyLac7bdZY>Np+ z!M1{W)d=Q>6`)!-0@;fS*nB9o^wCQC14EIa2HV;fiHpX`*B z<-ocgiN;GZ@}98Z65H_TcSen63Q>t&r1|HYdwp8!hMbD^P|+dk<~|3&h<@OEQGmWp zT*w!+K_8R-Gnu$5jk5F0`r39c<_+ZNvwTIkR3}x~vCX2VJBy$E&ucbAsTdA#s2Hd9|SUt}V^v+oCXz)4iWkE;@ zC4^OfAT!{jf=CyfWFiC$T@~S2^`hv5qT{q`-EtzSCnK>ww|#H!oqN=?_PU%ugLI~i zq?)IU6%*&u6$ws6E9{%oO}He}e7kg2rzq@t;E_j?QUw=1bT1relBfmyE1v36Jn@BC z{h?AEj|p}-(w5QYaI=dfE0cFrC0X#GO4~r6#~qpIIT{+?;fLHT*n}x&=&;uI@d1vG za`V*Qlhz5Pnj|0IcFZ+MLwL#Fw-bD<(_*;VUT8E@{ZL3|U9A$EiCNRsFf42ql{wZh zk~3nwuy9=YY{7I}JI2LvNzrPJzr7x(Gw4Q)0yH;rCKB3hbA1vapSYv$FYfOzr<1>{ z?#?IE_K~2@!B_OWa)CZZDbMr(xwmp(F}@|VV7_cL5w>r9iTzQ6Zig!em(1cZPJy@Q zpo{vDCv8tJNM|Q;Bt$*2gp(v?Ng4|xFrpgx8~?B-f9>)r;|l7vYF1V+;1AK!ac z>>FL{?wd1jS>+?<>JX3TlVnQ?i;0!=vFDPiSB_Sog7+93RDIABDt%f2!ATsld+nj& zz~Ov&uM^U`j@@_#I1inK0*u0Ead|U#{ni-K5&d|hH{GA$kk6AZKPh8c@*^iNuf6g* z0Jwgb?x}u-;WB`WOAXGX57gi8ahsTteqC-I_$FERIM3%f*~jNUT$%&elK@Lo1d9nf z0=TbV&`r`VElkoWg5oD+JyqFKdMdisr!jS3xwjc1ygI>z581`vD$h2g z(Zbk^ASc_HNzw_vK2a|e4ZSOFbpU-b#=Yjmv*&8njypKTM$>UcUawFlDrnSW9CO9$ z1iZ`e6O!RN242(Nkw0uBn+Y%M?uUo1gRH@`KcPh3?=>1%{=4}I#(jAEc z2d|IR};F%9{2K5>8?nd17AL|f)Xy{O*z50CuhQ@O(MJUJxt( zsE0iu=0?5EA)8%eXlB09;kQVAhMf^Lfd(3WaatBlBTH*=HO!FBCB1&5r>@A<(GqWC zxVLU4`o_4|g;gVW+3F<|K7=KKv!{~dO*ty&D1J1J9|cj`J85&$SJ`bsZP!f?+B3uc zAzsR>T2-jGb|l@_B8|Q;qwT|;cjlW6gxW^pGK6ztmLC;G??qx}llVuq-}`y+(35Kt z15;}zlc9zLi^xKH<=j5yBkdOC?ih|mA@iP?evOh_#yO#fbX2yleV7fLl%DA=9)cq9n!Oa)`H5+1zjIvGT8^9y z(r>Ge(D7dhc~i1yM7`GBeQ8mpt!HSYz#l(~sfID&2D^s43i9T09G^N|ftU(K`r3vX zciKgE14N`7iq>XdxwfgyHMI0j)|wWkgbt+=FJzQ=F37ob+rwYBm!Gli793av6gSca zb~A<2j?VF+~tl2@=ghd`e>GTj7(vFvt>889s>aO39VQJ;1LB zv}PFJUcvU%=*c9;A^M9Wyq#=z0YRcYHC^TJKEWN-8j@w;zU#eDR$hWITy1iS06@<{ zMZF8^3tZBfkp>Xe@+d86sGkO>e#HLb#EWK#m@{mTbGL8PtM?~rErL2T@KOHhm7V2h z7)e*p%0yu!WUsY->tcr%J}`q7HgI*GJYw;gN#K;=^&7{Q{qJk}!7P)nR>6wImL8&p zjvnqHfP zwKhC`*AIgdP_q45B&MG4X<;7$F8}{n73F^lC+-;2io_Ig=Q|Bcuo|L?`92&ZIpS@5 zF%ks(uBf(CdYh*!=P9v@Qni?B$GwM_WC~kc9i-CrR#(OVm*&^K*fh5NOVNp-FgMUA-h;G|)pPDb*N8A| z6z2t}p&54f@F95ZWRhLe{jm?z5J;Oiwz#-3j{Rs&yFtI9!3QSkVyjTV-A%xN?=w*j zKSpL!CxHh|cN4*NK1{?@gKKU)2Rz8fke=IH9Qj(TGHu+Pca=o8i#(3>?#Ri|V6Wa2 z#|!cGHooC=iWv8tB$uihWzv=B;*X`DZ=YW*dwelL-y!eQ_BX?gcOww$4F?{?D9Ode z4#T%wqnJoM*+f{4pTmRaRv?r8MH~setZ&cP`B&Xv<;s6WeYrj#0`T1tnaodBMD4E#Fyl_``2;HCsk+0 zR=p;s>#zryFoizYW&id?M$+C-i@E+{E%9C`S%<-aCM8amhex>Ch`1pxJ)T(d!DG`d z^smoe)@766HJeURe$U;3ES5tLmj44gaw{dMH_hq4Gb93*;!UgY4^Z$95&_r)TYrn2vhspcCyrS zQ#$VQL(>q&-NnS9G(*v9-MX?Y)c*nz{(Mpb`< z@Nn5IohafJo-B3Eh#g1zuQu;L)hChxVH`q}t@#Y{BrqGtN9sFToZ+B85X_}BDh8UXJSU-A4&yxzBDWwR#b+ znCvRHFw}+UH*_qTxbLqzvX*uk#LSW$&F7o_^z@FH8-?8Q)WhtKXB#jupqK;r4eM+$ zK{pZIynVh@m*EY@=Z{>%tN(KAzrh@&o)ex^S%jN7G(a~6xFLYMk;1X<1?fvL#!CZu z*pIA2Dm8=#@B#gm8={}+b$9Kh3*6V|Wb2)Uk6y_vS36vd^;WMA;MS5D0*;?TJ`QOT z9C5B1j40pTEc}=UAS+fwBKAxyyXIf^j-N%p@0EFwU6AP{UB$+G<4z-wb!uaTL04LY zzwnuzfwx&CVLecbr3#k2g#huE!SpLq;dU6_aU1Nzc@jM~YLDq8`{RU_>*ef~S-0#D zopr@6G!}P@zmopes_Hn}r&8AA5yyO6lsQSTfOKxHLVni}ijEjFe6ee40q0!Z%^o;s z6X@{#bMFPt_M*3dzxa#eqRK~)>7Enz@LbwknJ|m`+=E&`>SQCuuMc44&=?QgWBoXQ zD^~1S-3RBC2(s)h5L-Z0gljyLNw_b1vm&O~A^z)t6yI05^B*3w>&;^--3D2e$^I(s+nQ7i6`%iTs@DspGW)T9(|c-)srt@=6s^mUhJm0 zy};><(MO^7pD$jtIxG(~*)9g6GZqCL!*x3g5HLoJd$kfbe`MW^awXWTaGO`}$m4S( z83$th<(NYrp17UCbRfoQ)I{rBhaFy%6dq&Ky9_S@+}RIDPe0agsRY8z`91bJgRc*8 zRk)x9NRy=BsB9m4TNbOS$krt~ZHS&2x*0Yo+Wq!?Z4E zT*H$f%f`HxCGBuAT>hB5Vry}Sk^Fg9hsy%sX#TwC2OfXBdU%yPLfO43m~@C{NHN{5 z6&`}1g-p@ss5p3mUqLdvl8i3gL7pg&pC~-vVRSK9z#y-q z?f)$ui2uB<#lE{6GlJm8@&8A3K~G4Daf6CRg%N&)7yfR-c?Ehx#TT@xxWWeStkai5 zY<>j-Xwr;xwLD{)z|VgkV~FBj%UK7RuY-s-?{Gb0pQGT=C()2|%jvhb46nJ*7$Ry#IFQH%t<&=ni#cgAl3cuaxZAP=_Qa_iGCk)sJ5yKJ z7yFU?8N7omJZ{Qa&hyH>c|b#JA4wh`*h3N2Ko}Z8n$E;)oMU6K_i!G29oaJ$*Zzek z_6~1CefPENDpw>&O}k!vto;7Ha;>lY5?w}_kI~mAFMy7VXD;Wd#k?7S56^_69WwLX z+xxUzT@-BX?KC3*;jolmHeF>q=}xaTlv(3Lc~s%_F=qNll6Sq10<|&kUddBGgko|p z<+@$P6C6W26EP*_pY>U^;YH*DpLa$(U{S?|Yh9!>7S9bdZw+0wVu&s(XNhhR zu!kObny4h3?f!uWYGFx)lj#ty!;Z`oOX!}5-vHf+{U#C4*V+b+Rho}4@D%3VX=TLG z6bBuSW_}-owz-;>_-vA(vGIJbKrW@Yh`?9)3_0$`1K_qgk6h&{Zuj`92=N{ z!9O&GXMI#h6uQr0{z==DE2aZHEidSkbR9&f_5&^6@7oA_zV!uwIlzeJo`{bR5 zP7&y9xD_Miyshd6_>8Zd-c>F$b4cC7?vAW7LsO&ExA%S5j4rw1MEgQ@rVr^2v<=J@ zntGM=EjYq&dtA>e%UV*6leh@@WiUTI2VjL1yzqbPKN=b8EEDw$M;4g6r~v1W=5p$1 z5cLbS4T#lfV`idyS-b-6*l^ZRqgk#!wz2)v0yamCbL~`@9DsbgAv^e=+9KU1og*|M zt6TOqWE&|&* zN5MCL%|f33dx0h+6^0jHN5@6j+Mhpwg`;Jf2OJYIRcDWNnmt^@6q%@t(h048;zCqK z*(CLG;V57zK#+xn112v&a|fJY=$$E_j2A)xbow*#wHsV3@v!n#o8rkE?%)rV2k@8> z2f?eBgSQL`Ik1niMidfqP-zbSu z%{lK07J&yhD*4w6y}0a$Qkjg$p-oa`u8wKxBjTAaCuGjrPidc4H}{*FDnOo0mkhGg zk&%_)Infa2&^?J9Tb3f5f4+3Q#D$DfaWVawUL5r^&*%Dl3p(KgJF3P4pLaHy(3Lnl zd}ZH?!jzjB)S+MwLSGjGVe8_HCc#g6TogS7m-dIQx_Bv=GEN}76B4_I$4ix)OLmo6 zL*wmp4d36sdNlp3GAERFMqW5ZWmH!3)m{~~C!f@XxEu=d^Sj`#_Vb#L=iTCyr8^*f z5L`j9=C5q!U%Ah&QA6+uMG5>`*SFMzxQe(CRgSJnT1>e;+`ON>GqwM zy!avP^vX`zUckEr4{3Ox9oDsMCuut8 z+v4k)4y^VGynYD(%=#$i3=L>^^ToLW2mM|Yi3V0WTsS^LoPvV?WpiqFgKZpX#@Ure zW=$p%5fu@$Ht@BGG>mP#hFn!)V5r!w=+W&mdz)A-u3TW|eGrc2=`$OG2TqAj&qz1S zyd4t;LgS&g?- zlKds*FnORY@i>y`cpXp9EKtlIm%3_*NbbtaMI+Kx1eu?$U5tcGpRgBhb zsOo_CC60b+xg($ye)y)NjQZeptWvcaxif!A>!3SLH9*iQMr079>JwPpUcZdpxiXNv z&DUX0^Xm!R{*RdkhSx*=VvP5T+_GD{FSIOGWhjC&jYBWnCZ1*dc>w-O#Lr98>SK9d zn))E$OWi^?48g^>;wadyAwfH_q-%^lc_ijoda;c_z;U*?YjqqWq8wrASw4M=be%rO z?NT@nPPFw|`y6^hc$heBlK}3O{L;^n9O&SMk~m`D0D_G5BcPIMIgZdi5`5Wi{FPBb z6JV2<=4r~DXpa45PW{!HU{aA0jd?%kt~aSCYr-37FTvk|(Mqj8`|NC)79UFlla{9w zRPfv0!HkQ{s&|H1!^sS5nIxv+5rq9I1FKc@`vIYg;UeM2sW;>J%2nsgOvTmA@8)yh z?q0a-CbPS}%v*N09S{kv4CpO`6byI*5iVArY^(r3x=8#ohZ(E-mm8Q3W9V$|k0uDj z+LYF2=oiPR?|dX5t@fbp;XUEfgBe_TFM`i+%NKs7TszxvS5w-By0ZMo`F1h${-b16 zYuwKS!kj0w)Z%P=wjPBJ5S5G2X_ovFDT1_%pcM1pGWM3 z4aYImzc0eWSM>c{Mc{h}l;^~r#!X8lJ%jCxZ|u|NnYl26x}wHf5Q`P6Nv0VR3UENo zFxhsW6_2vKZc$qLh|j@|Hl(7rzxTS%IZMku&trBuXwv|SCDmX|M2O!YhDg6y8lQuxgB>JDZF4(aE0Z{WRj}R@56|n~S<^zT3{`cow%+7MP zHL>vy#RYi`KJ=p%;5KZ*HmBp457*ZldN+#E?kSy4wh>sdA0*EO>|Jb{c+24XOf*7? zZ5?!oyqDNwM65O&X539ItM=h~7pxMiT;i{f|B8Mc$L{h(okP{re&jV;wULw4Kk|gT zX_)Ej>zD|6`YdxGaI_ui>rZC@%g@vLQRf>>U!xVlkl7FQChpz`+c% zfL#T4B&kGO#ibg?opt@)nhw3J-skSB0&dkmbJSkxToUGD#?6g7&fJ5+Vh}2tnw^j` zpTio{Bc{+-p8y*jKdc6&iv(;u{^awDQtk4lsjt^TKwP@}_q|istQ4)jIHMve9sBK3 zGM53p3W+cTk6$9D+7r%WlRH=<#a0eZgY*&aW_CRjWxnnCDsiN;ouE=i^SF2jdGcmG zhd2E%`hq&YQ0_z=ZI1S|tb>l~kkVpsl{ifD(0CEHdt4&sp4;k(1nLuK6J{!jdH(Pl zBRfse!(=HG!6iEXWrt+{IoAUSn#N_f@Mp`(i{5R|qJ)XAt7nMS*vLZ1=frk}`yEyH zRsEzH_dtv^Z&_uT7>16#o>jDVDA2=BNEeCs(7sX9N+_0}*#UswKM5=H{LC|alfLVc z@cuS|xbnwmSW=?ht}Inn7_SIxB+qGhyDr4WuJ(1^S^SWX9y3K_rNml znJ^J3!7sD~=Pj5r5|v#%KX8&wEKB1x!h_$r%$j}itv@(=xehAc#NfH8L4ZXt8Ffpi za*x{&i&>BBwK%`DMjHAg9E}L*VLF;u+~8y7#BcnSjkZL)H{#M`Jp+Y*Qoq8*eJh2i zF_d>o;=v^SIZTT^dBmaRdO;Q=K4}qLPSngMs;sosuuGuJ!LYoq#R;R-S`36ukG5Kgt6%qDoT=^w*!1Gati#QI33iH5}@lxGWWG>PK3-2J*vEa^1Y!#o z_hkA#w$J`-=<~j+W9UlBkSpQhrP6voUc7aR!VxnKC(b2j?-#cX&JV8TT8HeXNvL*y z02q6JZt!0uFZCOjmjTzA_s9{lXY}dg9WI%LdOiudq^=fOV%zFj_o_*3PcZ4iV831! zeM1yGD#XD-qG$$TIPS!_uOVw!{1JJrvqj-ND@c{yI$hU8bMwjX>9O8>1{5@EHJo1M zr(`e59)HO?l&V|Nl`pMx_YK|KN2*TNIlKdnZN+=b9=I(?{4B!x>wr&Nm2QKK*!h@7 zq>P_ZJtOA02v&acGY4%AAC*_egK5=PRI)(G*9Z@VB)3F;dSs1VvQS+!QC^dzmi`C`L2S|j2CI+O+j~e zIh?XhZ)`OGbWE4d!n>X;^_My5S0bL{xbFah4|`Y@29F6 z$hkIn*E&eua4iD`7tCDFAR9;VbipiU4v16(r(9~?c z>?%421usX>AzR)d{p4;OJl19wDNP%ezUTQ}(4h%HmgCPNvcJrAkB(ZH|5LHrf4`XB zMi|gvriU%%+bwC{zY|Q}>VsRVqg$$@|JPMVw4fX$HD)f(hT21J>6nTj0_4~iN zd)B4!5$y=~N6~X8C3w&H?s<)O`T2PxDxpqN@ld_^yBC}6pJL69gXj*cy{+6w0w|0D z?J!0n5G9?FkQxA-%fZIMH72kyv4Qu6eIE;Z#|@32eQ+=<3LD{1b(wf|u4KJPSi1QM3HShh3d$rp&gUna2e~2Gz zP&7?K-gUJ6Zzgk#`5~~;5303Yp{<)bsDBaVh?nU{J&R2yAyp2K7og(+^0)x9M4{vC z*!Z>i$DY!^K!0u+{>8;VAfYXFTjfK4r>wgTh|uzfv@lgom`aq&yW&gbg8p-lQYz^a zfCVW)9su}l5Y8#2^9|zp%k-tq_*I+IBxHcRydhUY4R+=EcZgmsu>rddBJr8B%QFu# zPOXEAU{$yFy^uwd)>6$^1)M5n?B$l0pR6`Kgti=*;3(qr)Za5Dxj;nX(O_mHEJ` z*gT}CDn;#@E@-z(_X}x1MjNS#3v~$;Ip1T)PT0I*M+;BI7_cpwe>~ZwamCJM6qy`1 zJPu7Cz<9qrize&O_6#6B#q`3~ih4TkplnmO*_xaw!Y@=-EQYU+-!2Za&T}xS&5GaV z#JPJ)bNOQ=;hNP>HVWwHCL4yQz-?;|bA8W3pvqFe~f z9vl=y?4DDC9ZS)O%p9q}_D+=*XmnS@+0VHfeuxyt8VKi80LDmOV1gj=3Pt!&#xJ zD>!K}JLVYH%2JEZ=$4N+N^t7ooErw&Q`J{SpBvEaikjz0%7tV@s#bEoq7m5-zm`8r zay-cw-1Jag!P_d@Sgq#~MvmBlH znxv5Qj=3tc#_~hoY`8BlvF-Z~0fk=C6zUiHj)ukR*%e-yZekX{E|{Rw^LZVVQ@EgM z`TXT%*H#Dtk1kcQK{!>*QgxjOF4k$K)ajx;qxVmNi{6uZq1PqlEimF9djc>D$w zcn5lY)U*&h)n&CR)$5+vT&-<4sQ}gSTO5$_Z?HQy)R8x($JdwCi0$y1Nm#QyS*P`~ z8*%7*iSfMtLNUs@qoD6;eG(1|gDRzk3Gdl+EY0_S^S?9Y6pK+dmA(sDhkg&Mcq4gR z6h$+g>Px7pIL---e73!n5?w}Suj7zO{AG<4mm{=`(6aDy4Psfzph z>|d$h{)QIP{kC-n;w&Aacpm@$L-~UmYAXSV)=njyUGG$FAOeEBxt<>|v*M67({<1V z=?B?Sk2f~^sKJ?K7BMoMf=RV=0Gel4!j9$djilEOaL-+gC`2ZWBJq)7(yYT^D2^pY zW4k(eR@MG)I@)rv-qYyti_>^Gj>F1Hw!smLJ7m-L(PsuN`YqliYHciXbSSt;441O# zdpebiq~3i;-o|kVMgKj~2a)F;wW{)cf<4J*u{eID(I!F7(hcf*H;0Ke;?u1_2LD&& zPQA+g-7ZPsgWu0KKU_j<4rJatQuMCV{H>kGaA0R<`IXD69!@9GW#?mdPs^4=@qGp; zLMAFyULt>dMf}Yocxv)RwoOE~VSit+q@a#qU{_o3=ht4hRd-#vR&bw0Tl%g%a$>ax z${sO}Usw#4pMx-TD0H@c?f`M@$-Zh^cPda=)~n={hd^T2YR_tB196r_D$pE;nJ{9>_q`^0;eCXN|!!xX2t2Z2WIa*^12QtmzHm{tp z9O~tAL#wMzT54}KMKe23ea)=$S#gVtxfbE@a!;Co(D8T09i96wg0z*FmUz~1fic#`HrjnVQ}z{7?$Tr^zZp76)Whk1M62JPIh?7;w^viC~l zeEkV4CV0kvI^R*MK|_{5~ z;b&TWiubgMF;*CO<6!nKtYfN&oteZEC6GO{9|8@y{GrCNC})4I+Ro^(@8t>vA!P#C z4^tz9ERzb+vrP2NPU-CP5N$XXcl5e@FB_}myIq%_JutBv#PrGxD-jMEW_BYo5LFZG z-m5QDGt?b9U$%+Ij!GJ7@XM`b9qs=T;p?0tN6+IYGl_4hHDLv)M%bQO{j<+HG&p^( zRwcYu8__@d;F!RBvmUnh;}?tFmc857jLPiC?nV+&apYyw=}QVrvqz#9lkj%d(8Pem zpcgg_;e7&c`oAv~_Xy!6M&5tg87=x&G%8L{S-6pwh8J6qzN$;KY#*+E(^m~2kPVRz zZj%uVcQ5>MrFiBHQ&k(??aw)nxXuX=)ql*ZjwQz8Y3dB8pShkvG@ZIZxM1?Vc(EOA zV`_#dL?AkKheq5p-Z}H%YkaR(Ld$&qS!}Bzx#fQ0#NpDev5=zWa_tm;t^Ha~+>Z&p zihY7_W)CvTmqs0lWc^&S)jrT4)B-bTbcxJ2G?`2`!p(!Hv?nE6Mt%PvS_WU3VI$aTs5Jj_8#3=C~SY zi1CEHe0FEC<_h86yP_RX4(R+H=Mz2H>B`B;C9(UMx5AL|KEm5I$0adWh4W$mc@c{L z(IOnLNmc}rb3~|O6n91Ljd7Y9mhsGS9Q0VIctO8G%r3L~Cqo>zvGM#n1bm?)LiHv) z+kAwGU>!UVO1&r_Y}C47Z8)%4wX!Q^VB%DlG3$QSo_9^43j`+Y6@Pqem8{`XD8LwJ zQ7sgH+i$FPKvr(&MU$!NshsTRg{O9Dt8Yh&)cLTGYbtq&uwgqf=W7I-hw>h>!5Tt= zw+Jd}(zNA5OxySLSzJ(;VT;A-?}ns`F8et2f2c_GJuSg{Uj7uJuj*_bScoK`^YuH+ zO_wJbk|s*^{qo_y3RxS9@9tGjSjWhL1MM%C0rLP?_`g}xxoMLBzBtwZ^(`U zvAGyj2Z#>_pY)Y}%J1W6%oe95S^vt>+fobt8!pn8LfOAhq3mB!eYX1GRv-M054WWj zx}_Gnr538Sax7&R5X|gv2zy(DWNVQ8j~gV?>!7s2LFXyyK3y#`So^D&ixx91jVPp9 zN|64B5*}bp!KfFv5I)^&K)feUDVog>?ns>9b8JT<(F(s-&X{Ga;qC5f57kS;olSY( zwhXh51?^HEGgo^qEO-UPevP;i*)x1V<#r0G_dVy@)EXCKoc!`;maXhpr8-s3?>di9n z%7q`fm1wq;+rv-BhWW-rnRYGZVHA3-dVrI_5;UJI4l&kU2bq+$UyQ!oa~Ne+*qLaK ze0TNRX*bIU??WE*vsqq|bVEV_Ej>s3rAbHC-hhe$OLEi9I>=#W$!4kG`$Cw=XtFbT zkK+&zgHLn2d);i++^V+=9b))7`U2FGt5l?cQ^eVWp-kDfP+l}=Zs*RiZLjURUEvYy zpkAIsK0H9ECW%IXA3M>!ID-S*)PJdLI;3mghaBr49X?}Z-@NZG!-8q|I_O)Kp;W4A zJ7%=vJ{OJ|dzJ-<86=jUksb?G>`m(z%+0%TG&wGL;EhD@{A90~Ma3hCQqx`@zC!sh ze$7D^1+7b9J9zM0BDSv@PxQyJ^u(UC=c+j@D>**kMaX-t)RW7GP|t{njuCt;M`LvS ztE58#DmS2_yR#HfXB2BuPb-HnTCL?4fzcY(#rF(Vy6+F)5P#vFr99fN`ZE3FIQyr& z{5Jw3_rHGlXygj6%*S@&(vEz;|80Q8-@NZWYl)3f`g}w16XfXwM1lrRc;)5p zG($i1)QPeMom4pnjL{w3oxYyB!{|qhj&sY}zr_imW{^o8=DPNaYrqNpeQq|qp#!;$ zgOK+PSO0eKel5+stjbjZkY!MV)ADC1q!@;rAxgA4Aa+md$Jr<}&*F8&TAG*Dkg@Ju zjUsQW8NR79{U8v5WrF3b{kJIBL)HaInc2GWk;nb7gH=E7J#mJB1C!~@ORe7^!t0v2 zqnxa=(39OK3^C{nInqzD)>wb-$ekWayD!Mgp7Cxj(>P#iq;t``$F(1vh+0OC^Cpz% ztwO%x$fjMrbIb`OrUuXeT3nW@;Clk==S_EJTs_i)|0P5Q)D{DL#cmMy+-Hpi!xa<-~at(;}|M z6Nd`U58`+JH^gTqO? zJh8b7Of`mDe)a`J_CnX&`6`hp4{Vt9qfokQ$49<-(71zsIPV4~3C3w&5F0P1Wb#K#VW7VvcyEvLiw=GQ(m^v01AqN{h(JFx~qoJIH) z4J8%l1#XIz9|0(Iv)rJzDX*jH#CO&BW{iG^Yp;vVJW5tKexg<^z!o`h_j=&Bq9E0) zI~1XT(bs$xAE$+^mU;LvKJ_`fGQqSo)6|8Wvu#>K-?w=)l=>!k%1mg=Dr>^fBncbT zRm633t#snEJ-ET5^Jz%@=yCb(S}%zlJ8Jj!ds_JS1baneMO=c#%MWFa zm8c%L$&7yP|7HfhhCsh=(YeB5(+?}@{dTIj~ zl)x>^hqmFAsDyi^jT@R&w?Aqx$qgTw%lK&>M0W^!cGnj! z!Q*=q9-Um$;u~bN>7xk4AJS0(xapSwec=a*B% z-QT@p?ivORSD}jRlWQlzc{sYfHuBZ;XQ4G_K13Al~p+4gRfJb*l#d#;m#}SoJpq9nhBS9EheHMY{Kk z`sCI$^Z&v$1N;8MopY7JtuuBV6xAuq!^Ko<`n{5_!=YT$L*g?sNC??(Ur4%V^cHs) zT*mlh?KEiAmuHx+KD1KKUG-A%7+|(_lS}rQihPt1q;dMtDk}A^Y7qnAS5g8Gf-&~J zUvce3_5|zoxY|^9yqaL(NmvX$0lH@5b}?*wn)%>9_1lg24XHMLrA=c!U?DI=mo)oQ zP6oGq75Tev;)C9-N)c&>C2BRn)ru#36vgZmdG=Rh%jjHXMw3Zw89Cjue&a&0k z@C{&DEtw#-C-lQ)L%Dh7-yG3=pujk2`k`gNyO~K>Ib=BhUVV+COix;5S97XuH`*b> zisO{3l^w_7doPkx)Xi_to!J?1G4j}V)yz#oGCk!q^Ga#MteNCZF{2y_qL@H*kQ=;) z-+o1HoQIT{U745fyHN-ae_|u#F(~^`4?`6c&msG@@O994l>&>zKdcsrYz8LeEDL!EmHb=xPjev=XU~0YuYQD~tjM_|`f6EBq zZ)|3CaP7y8?wxAOhMxgu29(h{h(d@#9bX640DgpYJ|)2Of4?o6hF^g_Y%Z0kvCy(i zqP`Ok@c7i<9)G6w@3RW}F{@16exUTy%wu5u6T6MuN5N#lDB@-5jg032rFJIOqH|Nd z-#hi6t%Is=6~J1CVHiM$gYu3idcb49z2bAAMr}o!|8y}G|KyJ{d3{$%Qs4`lgAp&g z{!r>4QW*Uy#Txa!gh+yhVVaH>JcW zd%#J8_kkk*b|aZd0eBVPb3p8~`x00X_!$Bfb?Jud=}e5&k`3OsUVqgE(oeeT{t z$r_NTLv3XJTdF67mz2AkHt)9Pmg<3xEu&^AZ^GRMbjp`HCRV^R{+tRZ>0f6DJT!3z zU?lwUqMDv$Skh)$H+qr<^C%3TXos02QQs?ys3|?OOmlV0hmG?<)@?6*+y3O%%fm@;^anF*o{u9>AH~>;rC8C-l_j2iv5oy4~Ffj1ycPz z7gtIyNz?*u=7RW(T!60aNG(warE6;uH5YzPHLw2!_NPSPA=w_(pQ}q~%oopQw6Zs#DMHBIJsU{BTC;U@DH~Dt-O|`pb|Da^yAfEG6J5alUDxDeGGVojUKXD zDCa*vkD9FLA0*RFD@T%0A#b@MV0K85nQ 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 literal 0 HcmV?d00001 From de73fc8f8c11f3a53cc8379302ac2b0f041a2d41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20Hlav=C3=A1=C4=8D?= Date: Mon, 19 Aug 2024 15:15:21 +0200 Subject: [PATCH 11/22] mrak .jpg as binary in .gitattributes --- .gitattributes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 0899b91..974c308 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ * text eol=crlf -*.png binary \ No newline at end of file +*.png binary +*.jpg binary \ No newline at end of file From f57d26535630d4ba532cd68e00188c4368d9b0f7 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:52:17 +0200 Subject: [PATCH 12/22] feat(Lucene.Core): indexing reusable content example --- .../ReusableContentItemsIndexingStrategy.cs | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs b/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs index 06a4786..5b4bc0d 100644 --- a/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs +++ b/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs @@ -14,7 +14,7 @@ namespace DancingGoat.Search; public class ReusableContentItemsIndexingStrategy : DefaultLuceneIndexingStrategy { - public static string SORTABLE_TITLE_FIELD_NAME = "SortableTitle"; + public const string SORTABLE_TITLE_FIELD_NAME = "SortableTitle"; private readonly IWebPageQueryResultMapper webPageMapper; private readonly IContentQueryExecutor queryExecutor; @@ -53,7 +53,9 @@ WebCrawlerService webCrawler // pattern matching to get access to the web page item specific type and fields if (item is IndexEventReusableItemModel indexedItem) { - var query = new ContentItemQueryBuilder() + if (string.Equals(item.ContentTypeName, Banner.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + { + var query = new ContentItemQueryBuilder() .ForContentType(HomePage.CONTENT_TYPE_NAME, config => config @@ -63,35 +65,40 @@ WebCrawlerService webCrawler // so we use a hardcoded channel name. .ForWebsite(INDEXED_WEBSITECHANNEL_NAME) - // Retrieves all ArticlePages that link to the Article through the ArticlePage.ArticlePageArticle field + // Retrieves all HomePages that link to the Banner through the HomePage.HomePageBanner field .Linking(nameof(HomePage.HomePageBanner), new[] { indexedItem.ItemID })) .InLanguage(indexedItem.LanguageName); - var associatedWebPageItem = (await queryExecutor.GetWebPageResult(query, webPageMapper.Map)).First(); - string url = string.Empty; - try - { - url = (await urlRetriever.Retrieve(associatedWebPageItem.SystemFields.WebPageItemTreePath, - INDEXED_WEBSITECHANNEL_NAME, indexedItem.LanguageName)).RelativePath; + var associatedWebPageItem = (await queryExecutor.GetWebPageResult(query, webPageMapper.Map)).First(); + string url = string.Empty; + try + { + url = (await urlRetriever.Retrieve(associatedWebPageItem.SystemFields.WebPageItemTreePath, + INDEXED_WEBSITECHANNEL_NAME, indexedItem.LanguageName)).RelativePath; + } + catch (Exception) + { + // Retrieve can throw an exception when processing a page update LuceneQueueItem + // and the page was deleted before the update task has processed. In this case, return no item. + return null; + } + + sortableTitle = title = associatedWebPageItem!.HomePageBanner.First().BannerText; + string rawContent = await webCrawler.CrawlWebPage(associatedWebPageItem!); + content = htmlSanitizer.SanitizeHtmlDocument(rawContent); + + //If the indexed item is a reusable content item, we need to set the url manually. + document.Add(new StringField(BaseDocumentProperties.URL, url, Field.Store.YES)); + document.Add(new TextField(nameof(DancingGoatSearchResultModel.Title), title, Field.Store.YES)); + document.Add(new StringField(SORTABLE_TITLE_FIELD_NAME, sortableTitle, Field.Store.YES)); + document.Add(new TextField(CRAWLER_CONTENT_FIELD_NAME, content, Field.Store.NO)); + + return document; } - catch (Exception) + else { - // Retrieve can throw an exception when processing a page update LuceneQueueItem - // and the page was deleted before the update task has processed. In this case, return no item. return null; } - - sortableTitle = title = associatedWebPageItem!.HomePageBanner.First().BannerText; - string rawContent = await webCrawler.CrawlWebPage(associatedWebPageItem!); - content = htmlSanitizer.SanitizeHtmlDocument(rawContent); - - //If the indexed item is a reusable content item, we need to set the url manually. - document.Add(new StringField(BaseDocumentProperties.URL, url, Field.Store.YES)); - document.Add(new TextField(nameof(DancingGoatSearchResultModel.Title), title, Field.Store.YES)); - document.Add(new StringField(SORTABLE_TITLE_FIELD_NAME, sortableTitle, Field.Store.YES)); - document.Add(new TextField(CRAWLER_CONTENT_FIELD_NAME, content, Field.Store.NO)); - - return document; } else { From 3a48bb55c53170a79c13559d41a469be166f0e2f Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 19 Aug 2024 18:13:30 +0200 Subject: [PATCH 13/22] feat(Lucene.Core): indexing reusable content do not execute rebuild query if no content type is selected --- .../Indexing/DefaultLuceneClient.cs | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs index 80c5d5b..cc1baf6 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs @@ -164,46 +164,48 @@ private async Task RebuildInternal(LuceneIndex luceneIndex, CancellationToken? c foreach (string language in luceneIndex.LanguageNames) { - var queryBuilder = new ContentItemQueryBuilder(); - if (includedPathAttribute.ContentTypes != null && includedPathAttribute.ContentTypes.Count > 0) { + var queryBuilder = new ContentItemQueryBuilder(); + foreach (var contentType in includedPathAttribute.ContentTypes) { queryBuilder.ForContentType(contentType.ContentTypeName, config => config.ForWebsite(luceneIndex.WebSiteChannelName, includeUrlPath: true, pathMatch: pathMatch)); } - } - queryBuilder.InLanguage(language); - var webpages = await executor.GetWebPageResult(queryBuilder, container => container, cancellationToken: cancellationToken ?? default); + queryBuilder.InLanguage(language); - foreach (var page in webpages) - { - var item = await MapToEventItem(page); - indexedItems.Add(item); + var webpages = await executor.GetWebPageResult(queryBuilder, container => container, cancellationToken: cancellationToken ?? default); + + foreach (var page in webpages) + { + var item = await MapToEventItem(page); + indexedItems.Add(item); + } } } } foreach (string language in luceneIndex.LanguageNames) { - var queryBuilder = new ContentItemQueryBuilder(); - if (luceneIndex.IncludedReusableContentTypes != null && luceneIndex.IncludedReusableContentTypes.Count > 0) { + var queryBuilder = new ContentItemQueryBuilder(); + foreach (string reusableContentType in luceneIndex.IncludedReusableContentTypes) { queryBuilder.ForContentType(reusableContentType); } - } - queryBuilder.InLanguage(language); - var reusableItems = await executor.GetResult(queryBuilder, result => result, cancellationToken: cancellationToken ?? default); + queryBuilder.InLanguage(language); + + var reusableItems = await executor.GetResult(queryBuilder, result => result, cancellationToken: cancellationToken ?? default); - foreach (var reusableItem in reusableItems) - { - var item = await MapToEventReusableItem(reusableItem); - indexedItems.Add(item); + foreach (var reusableItem in reusableItems) + { + var item = await MapToEventReusableItem(reusableItem); + indexedItems.Add(item); + } } } From 9174ab51e1f96f2282522050d6d12dd8f61c4585 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 19 Aug 2024 18:49:06 +0200 Subject: [PATCH 14/22] feat(Lucene.Admin): update packages --- .../Client/package-lock.json | 3861 +++++++++-------- 1 file changed, 2030 insertions(+), 1831 deletions(-) diff --git a/src/Kentico.Xperience.Lucene.Admin/Client/package-lock.json b/src/Kentico.Xperience.Lucene.Admin/Client/package-lock.json index 1e2f049..bf0745e 100644 --- a/src/Kentico.Xperience.Lucene.Admin/Client/package-lock.json +++ b/src/Kentico.Xperience.Lucene.Admin/Client/package-lock.json @@ -46,15 +46,6 @@ "node": ">=18.12.0 <=19" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@amcharts/amcharts5": { "version": "5.8.5", "resolved": "https://registry.npmjs.org/@amcharts/amcharts5/-/amcharts5-5.8.5.tgz", @@ -85,34 +76,34 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -148,12 +139,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, "node_modules/@babel/eslint-parser": { "version": "7.23.10", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", @@ -172,24 +157,14 @@ "eslint": "^7.5.0 || ^8.0.0" } }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -197,38 +172,39 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -237,19 +213,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", - "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.0", "semver": "^6.3.1" }, "engines": { @@ -260,12 +234,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -277,9 +251,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -292,74 +266,41 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -369,35 +310,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -407,14 +348,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -424,112 +365,104 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", "dev": true, "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", - "dev": true, + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dependencies": { + "@babel/types": "^7.25.2" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -538,12 +471,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -553,14 +486,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -570,13 +503,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", - "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -661,12 +594,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -676,12 +609,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -715,12 +648,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -832,12 +765,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -863,12 +796,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -878,15 +811,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -896,14 +829,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -913,12 +846,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -928,12 +861,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -943,13 +876,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -959,13 +892,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -976,18 +909,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", - "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", "globals": "^11.1.0" }, "engines": { @@ -998,13 +929,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1014,12 +945,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1029,13 +960,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1045,12 +976,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1060,12 +991,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1076,13 +1007,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1092,12 +1023,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1108,13 +1039,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1124,14 +1055,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1141,12 +1072,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1157,12 +1088,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1172,12 +1103,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1188,12 +1119,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1203,13 +1134,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1219,14 +1150,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1236,15 +1167,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", - "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1254,13 +1185,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1270,13 +1201,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1286,12 +1217,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1301,12 +1232,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1317,12 +1248,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1333,16 +1264,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1352,13 +1282,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1368,12 +1298,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1384,13 +1314,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1401,12 +1331,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1416,13 +1346,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1432,14 +1362,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1450,12 +1380,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1465,12 +1395,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", - "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1480,16 +1410,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -1499,12 +1429,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1514,13 +1444,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", - "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1530,12 +1460,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1546,12 +1476,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1581,12 +1511,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1596,13 +1526,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1612,12 +1542,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1627,12 +1557,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1642,12 +1572,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1657,15 +1587,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", - "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1675,12 +1606,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1690,13 +1621,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1706,13 +1637,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1722,13 +1653,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1891,9 +1822,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", - "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1902,33 +1833,28 @@ } }, "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", - "dev": true, + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1937,12 +1863,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1950,9 +1876,9 @@ } }, "node_modules/@codemirror/autocomplete": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.15.0.tgz", - "integrity": "sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.0.tgz", + "integrity": "sha512-5DbOvBbY4qW5l57cjDsmmpDh3/TeK1vXfTHa+BUMrRzdWdcxKZ4U4V7vQaTtOpApNU4kLS4FQ6cINtLg245LXA==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -1967,13 +1893,13 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", - "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.0.tgz", + "integrity": "sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.0.0", + "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } }, @@ -1990,9 +1916,9 @@ } }, "node_modules/@codemirror/lang-html": { - "version": "6.4.8", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz", - "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==", + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz", + "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", @@ -2020,9 +1946,9 @@ } }, "node_modules/@codemirror/lang-sql": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.6.3.tgz", - "integrity": "sha512-fo5i3OD/7TmmqMtKycC4OaqfPsRxk0sKOb35g8cOtyUyyI2hfP2qXkDc7Asb6h7BiJK+MU/DYVPnQm6iNB5ZTw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.7.0.tgz", + "integrity": "sha512-KMXp6rtyPYz6RaElvkh/77ClEAoQoHRPZo0zutRRialeFs/B/X8YaUJBCnAV2zqyeJPLZ4hgo48mG8TKoNXfZA==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -2046,9 +1972,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", - "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", + "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", @@ -2059,9 +1985,9 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", - "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.1.tgz", + "integrity": "sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -2095,9 +2021,9 @@ } }, "node_modules/@codemirror/view": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.1.tgz", - "integrity": "sha512-wLw0t3R9AwOSQThdZ5Onw8QQtem5asE7+bPlnzc57eubPqiuJKIzwjMZ+C42vQett+iva+J8VgFV4RYWDBh5FA==", + "version": "6.32.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.32.0.tgz", + "integrity": "sha512-AgVNvED2QTsZp5e3syoHLsrWtwJFYWdx1Vr/m3f4h1ATQz0ax60CfXF3Htdmk69k2MlYZw8gXesnQdHtzyVmAw==", "dependencies": { "@codemirror/state": "^6.4.0", "style-mod": "^4.1.0", @@ -2114,15 +2040,15 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -2131,6 +2057,11 @@ "stylis": "4.2.0" } }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2142,48 +2073,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@emotion/babel-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz", + "integrity": "sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -2196,44 +2119,44 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.0.tgz", + "integrity": "sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==", "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.9.0", + "@emotion/utils": "^1.4.0", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.9.0.tgz", + "integrity": "sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -2250,10 +2173,22 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -2282,6 +2217,16 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -2297,6 +2242,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "8.56.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", @@ -2307,34 +2264,29 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", - "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.7" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", - "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", "dependencies": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" } }, - "node_modules/@floating-ui/dom/node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" - }, "node_modules/@floating-ui/react": { - "version": "0.26.11", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.11.tgz", - "integrity": "sha512-fo01Cu+jzLDVG/AYAV2OtV6flhXvxP5rDaR1Fk8WWhtsFqwk478Dr2HGtB8s0HqQCsFWVbdHYpPjMiQiR/A9VA==", + "version": "0.26.22", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.22.tgz", + "integrity": "sha512-LNv4azPt8SpT4WW7Kku5JNVjLk2GcS0bGGjFTAgqOONRFo9r/aaGHHPpdiIuQbB1t8shmWyWqTTUDmZ9fcNshg==", "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@floating-ui/utils": "^0.2.0", + "@floating-ui/react-dom": "^2.1.1", + "@floating-ui/utils": "^0.2.7", "tabbable": "^6.0.0" }, "peerDependencies": { @@ -2343,26 +2295,21 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", - "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", "dependencies": { - "@floating-ui/dom": "^1.6.1" + "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, - "node_modules/@floating-ui/react/node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" - }, "node_modules/@floating-ui/utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", - "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" }, "node_modules/@foliojs-fork/fontkit": { "version": "1.9.2", @@ -2405,9 +2352,9 @@ "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz", - "integrity": "sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", + "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", "dependencies": { "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" @@ -2422,21 +2369,21 @@ } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz", - "integrity": "sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==", + "version": "2.7.8", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", + "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", - "@formatjs/icu-skeleton-parser": "1.8.0", + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/icu-skeleton-parser": "1.8.2", "tslib": "^2.4.0" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz", - "integrity": "sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", + "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/ecma402-abstract": "2.0.0", "tslib": "^2.4.0" } }, @@ -2449,19 +2396,42 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -2476,97 +2446,93 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@internationalized/date": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.2.tgz", - "integrity": "sha512-vo1yOMUt2hzp63IutEaTUxROdvQg1qlMRsbCvbay2AK2Gai7wIgCyK5weEX3nHkiLgo4qCXHijFNC/ILhlRpOQ==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.5.tgz", + "integrity": "sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==", "dependencies": { "@swc/helpers": "^0.5.0" } }, "node_modules/@internationalized/message": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.2.tgz", - "integrity": "sha512-MHAWsZWz8jf6jFPZqpTudcCM361YMtPIRu9CXkYmKjJ/0R3pQRScV5C0zS+Qi50O5UAm8ecKhkXx6mWDDcF6/g==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.4.tgz", + "integrity": "sha512-Dygi9hH1s7V9nha07pggCkvmRfDd3q2lWnMGvrJyrOwYMe1yj4D2T9BoH9I6MGR7xz0biQrtLPsqUkqXzIrBOw==", "dependencies": { "@swc/helpers": "^0.5.0", "intl-messageformat": "^10.1.0" } }, "node_modules/@internationalized/number": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.1.tgz", - "integrity": "sha512-N0fPU/nz15SwR9IbfJ5xaS9Ss/O5h1sVXMZf43vc9mxEG48ovglvvzBjF53aHlq20uoR6c+88CrIXipU/LSzwg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.3.tgz", + "integrity": "sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==", "dependencies": { "@swc/helpers": "^0.5.0" } }, "node_modules/@internationalized/string": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.1.tgz", - "integrity": "sha512-vWQOvRIauvFMzOO+h7QrdsJmtN1AXAFVcaLWP9AseRN2o7iHceZ6bIXhBD4teZl8i91A3gxKnWBlGgjCwU6MFQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.3.tgz", + "integrity": "sha512-9kpfLoA8HegiWTeCbR2livhdVeKobCnVv8tlJ6M2jF+4tcMqDo94ezwlnrUANBWPgd8U7OXIHCk2Ov2qhk4KXw==", "dependencies": { "@swc/helpers": "^0.5.0" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2684,9 +2650,9 @@ } }, "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, "node_modules/@lezer/common": { @@ -2705,17 +2671,17 @@ } }, "node_modules/@lezer/highlight": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", - "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", "dependencies": { "@lezer/common": "^1.0.0" } }, "node_modules/@lezer/html": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.9.tgz", - "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==", + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz", + "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", @@ -2723,9 +2689,9 @@ } }, "node_modules/@lezer/javascript": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.14.tgz", - "integrity": "sha512-GEdUyspTRgc5dwIGebUk+f3BekvqEWVIYsIuAC3pA8e8wcikGwBZRWRa450L0s8noGWuULwnmi4yjxTnYz9PpA==", + "version": "1.4.17", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.17.tgz", + "integrity": "sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==", "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", @@ -2733,9 +2699,9 @@ } }, "node_modules/@lezer/lr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", - "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", "dependencies": { "@lezer/common": "^1.0.0" } @@ -2759,28 +2725,6 @@ "eslint-scope": "5.1.1" } }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2826,50 +2770,50 @@ } }, "node_modules/@react-aria/focus": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.16.2.tgz", - "integrity": "sha512-Rqo9ummmgotESfypzFjI3uh58yMpL+E+lJBbQuXkBM0u0cU2YYzu0uOrFrq3zcHk997udZvq1pGK/R+2xk9B7g==", + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.1.tgz", + "integrity": "sha512-N0Cy61WCIv+57mbqC7hiZAsB+3rF5n4JKabxUmg/2RTJL6lq7hJ5N4gx75ymKxkN8GnVDwt4pKZah48Wopa5jw==", "dependencies": { - "@react-aria/interactions": "^3.21.1", - "@react-aria/utils": "^3.23.2", - "@react-types/shared": "^3.22.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/focus/node_modules/@react-aria/interactions": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.1.tgz", - "integrity": "sha512-AlHf5SOzsShkHfV8GLLk3v9lEmYqYHURKcXWue0JdYbmquMRkUsf/+Tjl1+zHVAQ8lKqRnPYbTmc4AcZbqxltw==", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz", + "integrity": "sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw==", "dependencies": { - "@react-aria/ssr": "^3.9.2", - "@react-aria/utils": "^3.23.2", - "@react-types/shared": "^3.22.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/i18n": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.10.2.tgz", - "integrity": "sha512-Z1ormoIvMOI4mEdcFLYsoJy9w/EzBdBmgfLP+S/Ah+1xwQOXpgwZxiKOhYHpWa0lf6hkKJL34N9MHJvCJ5Crvw==", - "dependencies": { - "@internationalized/date": "^3.5.2", - "@internationalized/message": "^3.1.2", - "@internationalized/number": "^3.5.1", - "@internationalized/string": "^3.2.1", - "@react-aria/ssr": "^3.9.2", - "@react-aria/utils": "^3.23.2", - "@react-types/shared": "^3.22.1", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.1.tgz", + "integrity": "sha512-0q3gyogF9Ekah+9LOo6tcfshxsk2Ope+KdbtFHJVhznedMxn6RpHGcVur5ImbQ1dYafA5CmjBUGJW70b56+BGA==", + "dependencies": { + "@internationalized/date": "^3.5.5", + "@internationalized/message": "^3.1.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/interactions": { @@ -2887,16 +2831,16 @@ } }, "node_modules/@react-aria/label": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.6.tgz", - "integrity": "sha512-ap9iFS+6RUOqeW/F2JoNpERqMn1PvVIo3tTMrJ1TY1tIwyJOxdCBRgx9yjnPBnr+Ywguep+fkPNNi/m74+tXVQ==", + "version": "3.7.10", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.10.tgz", + "integrity": "sha512-e5XVHA+OUK0aIwr4nHcnIj0z1kUryGaJWYYD2OGkkIltyUCKmwpRqdx8LQYbO4HGsJhvC3hJgidFdGcQwHHPYw==", "dependencies": { - "@react-aria/utils": "^3.23.2", - "@react-types/shared": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/overlays": { @@ -2941,9 +2885,9 @@ } }, "node_modules/@react-aria/ssr": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.2.tgz", - "integrity": "sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -2951,7 +2895,7 @@ "node": ">= 12" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/switch": { @@ -2969,89 +2913,90 @@ } }, "node_modules/@react-aria/toggle": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.2.tgz", - "integrity": "sha512-DgitscHWgI6IFgnvp2HcMpLGX/cAn+XX9kF5RJQbRQ9NqUgruU5cEEGSOLMrEJ6zXDa2xmOiQ+kINcyNhA+JLg==", - "dependencies": { - "@react-aria/focus": "^3.16.2", - "@react-aria/interactions": "^3.21.1", - "@react-aria/utils": "^3.23.2", - "@react-stately/toggle": "^3.7.2", - "@react-types/checkbox": "^3.7.1", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.6.tgz", + "integrity": "sha512-AGlbtB1b8grrtjbiW5Au0LKYzxR83RHbHhaUkFwajyYRGyuEzr3Y03OiveoPB+DayA8Gz3H1ZVmW++8JZQOWHw==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/toggle": "^3.7.6", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/toggle/node_modules/@react-aria/interactions": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.1.tgz", - "integrity": "sha512-AlHf5SOzsShkHfV8GLLk3v9lEmYqYHURKcXWue0JdYbmquMRkUsf/+Tjl1+zHVAQ8lKqRnPYbTmc4AcZbqxltw==", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz", + "integrity": "sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw==", "dependencies": { - "@react-aria/ssr": "^3.9.2", - "@react-aria/utils": "^3.23.2", - "@react-types/shared": "^3.22.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/toggle/node_modules/@react-stately/toggle": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.2.tgz", - "integrity": "sha512-SHCF2btcoK57c4lyhucRbyPBAFpp0Pdp0vcPdn3hUgqbu6e5gE0CwG/mgFmZRAQoc7PRc7XifL0uNw8diJJI0Q==", + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.6.tgz", + "integrity": "sha512-xRZyrjNVu1VCd1xpg5RwmNYs9fXb+JHChoUaRcBmGCCjsPD0R5uR3iNuE17RXJtWS3/8o9IJVn90+/7NW7boOg==", "dependencies": { - "@react-stately/utils": "^3.9.1", - "@react-types/checkbox": "^3.7.1", + "@react-stately/utils": "^3.10.2", + "@react-types/checkbox": "^3.8.3", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/utils": { - "version": "3.23.2", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.23.2.tgz", - "integrity": "sha512-yznR9jJ0GG+YJvTMZxijQwVp+ahP66DY0apZf7X+dllyN+ByEDW+yaL1ewYPIpugxVzH5P8jhnBXsIyHKN411g==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.1.tgz", + "integrity": "sha512-5Uj864e7T5+yj78ZfLnfHqmypLiqW2mN+nsdslog2z5ssunTqjolVeM15ootXskjISlZ7MojLpq97kIC4nlnAw==", "dependencies": { - "@react-aria/ssr": "^3.9.2", - "@react-stately/utils": "^3.9.1", - "@react-types/shared": "^3.22.1", + "@react-aria/ssr": "^3.9.5", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/visually-hidden": { - "version": "3.8.10", - "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.10.tgz", - "integrity": "sha512-np8c4wxdbE7ZrMv/bnjwEfpX0/nkWy9sELEb0sK8n4+HJ+WycoXXrVxBUb9tXgL/GCx5ReeDQChjQWwajm/z3A==", + "version": "3.8.14", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.14.tgz", + "integrity": "sha512-DV3yagbAgO4ywQTq6D/AxcIaTC8c77r/SxlIMhQBMQ6vScJWTCh6zFG55wmLe3NKqvRrowv1OstlmYfZQ4v/XA==", "dependencies": { - "@react-aria/interactions": "^3.21.1", - "@react-aria/utils": "^3.23.2", - "@react-types/shared": "^3.22.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/visually-hidden/node_modules/@react-aria/interactions": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.1.tgz", - "integrity": "sha512-AlHf5SOzsShkHfV8GLLk3v9lEmYqYHURKcXWue0JdYbmquMRkUsf/+Tjl1+zHVAQ8lKqRnPYbTmc4AcZbqxltw==", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz", + "integrity": "sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw==", "dependencies": { - "@react-aria/ssr": "^3.9.2", - "@react-aria/utils": "^3.23.2", - "@react-types/shared": "^3.22.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-dnd/asap": { @@ -3070,16 +3015,16 @@ "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" }, "node_modules/@react-stately/overlays": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.5.tgz", - "integrity": "sha512-U4rCFj6TPJPXLUvYXAcvh+yP/CO2W+7f0IuqP7ZZGE+Osk9qFkT+zRK5/6ayhBDFpmueNfjIEAzT9gYPQwNHFw==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.9.tgz", + "integrity": "sha512-4chfyzKw7P2UEainm0yzjUgYwG1ovBejN88eTrn+O62x5huuMCwe0cbMxmYh4y7IhRFSee3jIJd0SP0u/+i39w==", "dependencies": { - "@react-stately/utils": "^3.9.1", - "@react-types/overlays": "^3.8.5", + "@react-stately/utils": "^3.10.2", + "@react-types/overlays": "^3.8.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/radio": { @@ -3111,83 +3056,83 @@ } }, "node_modules/@react-stately/utils": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.9.1.tgz", - "integrity": "sha512-yzw75GE0iUWiyps02BOAPTrybcsMIxEJlzXqtvllAb01O9uX5n0i3X+u2eCpj2UoDF4zS08Ps0jPgWxg8xEYtA==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/button": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.2.tgz", - "integrity": "sha512-EnPTkGHZRtiwAoJy5q9lDjoG30bEzA/qnvKG29VVXKYAGeqY2IlFs1ypmU+z1X/CpJgPcG3I5cakM7yTVm3pSg==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.6.tgz", + "integrity": "sha512-8lA+D5JLbNyQikf8M/cPP2cji91aVTcqjrGpDqI7sQnaLFikM8eFR6l1ZWGtZS5MCcbfooko77ha35SYplSQvw==", "dependencies": { - "@react-types/shared": "^3.22.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/checkbox": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.7.1.tgz", - "integrity": "sha512-kuGqjQFex0As/3gfWyk+e9njCcad/ZdnYLLiNvhlk15730xfa0MmnOdpqo9jfuFSXBjOcpxoofvEhvrRMtEdUA==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.3.tgz", + "integrity": "sha512-f4c1mnLEt0iS1NMkyZXgT3q3AgcxzDk7w6MSONOKydcnh0xG5L2oefY14DhVDLkAuQS7jThlUFwiAs+MxiO3MA==", "dependencies": { - "@react-types/shared": "^3.22.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/overlays": { - "version": "3.8.5", - "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.5.tgz", - "integrity": "sha512-4D7EEBQigD/m8hE68Ys8eloyyZFHHduqykSIgINJ0edmo0jygRbWlTwuhWFR9USgSP4dK54duN0Mvq0m4HEVEw==", + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.9.tgz", + "integrity": "sha512-9ni9upQgXPnR+K9cWmbYWvm3ll9gH8P/XsEZprqIV5zNLMF334jADK48h4jafb1X9RFnj0WbHo6BqcSObzjTig==", "dependencies": { - "@react-types/shared": "^3.22.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/radio": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.7.1.tgz", - "integrity": "sha512-Zut3rN1odIUBLZdijeyou+UqsLeRE76d9A+npykYGu29ndqmo3w4sLn8QeQcdj1IR71ZnG0pW2Y2BazhK5XrrQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.3.tgz", + "integrity": "sha512-fUVJt4Bb6jOReFqnhHVNxWXH7t6c60uSFfoPKuXt/xI9LL1i2jhpur0ggpTfIn3qLIAmNBU6bKBCWAdr4KjeVQ==", "dependencies": { - "@react-types/shared": "^3.22.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/shared": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.22.1.tgz", - "integrity": "sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/switch": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.1.tgz", - "integrity": "sha512-2LFEKMGeufqyYmeN/5dtkDkCPG6x9O4eu6aaBaJmPGon7C/l3yiFEgRue6oCUYc1HixR7Qlp0sPxk0tQeWzrSg==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.5.tgz", + "integrity": "sha512-SZx1Bd+COhAOs/RTifbZG+uq/llwba7VAKx7XBeX4LeIz1dtguy5bigOBgFTMQi4qsIVCpybSWEEl+daj4XFPw==", "dependencies": { - "@react-types/shared": "^3.22.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@remix-run/router": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", - "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", + "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", "engines": { "node": ">=14.0.0" } @@ -3198,9 +3143,9 @@ "integrity": "sha512-izzOXQfeQLonzrIQb8u6LQ8dk+ymz3WXTIXjvOlTXHq6sbzROg3NWU+9TTAOpEoK9Bth24/6F/XrfHJ5yR5n6Q==" }, "node_modules/@swc/helpers": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.8.tgz", - "integrity": "sha512-lruDGw3pnfM3wmZHeW7JuhkGQaJjPyiKjxeGhdmfoOT53Ic9qb5JLDNaK2HUdl1zLDeX28H221UvKjfdvSLVMg==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.12.tgz", + "integrity": "sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==", "dependencies": { "tslib": "^2.4.0" } @@ -3369,9 +3314,9 @@ } }, "node_modules/@types/d3-force": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz", - "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==" + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==" }, "node_modules/@types/d3-format": { "version": "3.0.4", @@ -3499,9 +3444,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.8", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", - "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -3537,9 +3482,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.41", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", - "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, "dependencies": { "@types/node": "*", @@ -3569,9 +3514,9 @@ "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -3596,18 +3541,18 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "version": "22.4.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.1.tgz", + "integrity": "sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==", "devOptional": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz", - "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==", + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -3624,14 +3569,14 @@ "integrity": "sha512-9Zw2KoDpi+T4PZz2G6pO2xArE0m/GSMTW1MIxF2s8ZY8x9XDO6fv9um0ydRGvcbkFLlaq8yNK6eZxnmMZtDgWQ==" }, "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true }, "node_modules/@types/range-parser": { @@ -3671,9 +3616,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "dependencies": { "@types/react": "*" } @@ -3685,14 +3630,14 @@ "dev": true }, "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==" }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/send": { @@ -3715,14 +3660,14 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/sockjs": { @@ -3740,9 +3685,9 @@ "integrity": "sha512-XQtKy9lmkKlV+c3Jelo7kxNPw7qOqIq3GcnOhywGZHF7zw5D5m+Ssigbmf3Turbe/A8Ur+lRh8TYjuxXKvyivw==" }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -3783,26 +3728,11 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3810,22 +3740,16 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", - "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.14.0", - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/typescript-estree": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "engines": { @@ -3845,13 +3769,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", - "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3862,12 +3786,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", - "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3878,6 +3802,18 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz", @@ -3976,50 +3912,11 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4027,16 +3924,10 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/types": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", - "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4047,16 +3938,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", - "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", - "@typescript-eslint/visitor-keys": "6.14.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -4074,12 +3966,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", - "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -4090,26 +3982,23 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4117,12 +4006,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz", @@ -4189,50 +4072,11 @@ } } }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4240,12 +4084,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz", @@ -4276,10 +4114,22 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@uiw/codemirror-extensions-basic-setup": { - "version": "4.21.25", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.25.tgz", - "integrity": "sha512-eeUKlmEE8aSoSgelS8OR2elcPGntpRo669XinAqPCLa0eKorT2B0d3ts+AE+njAeGk744tiyAEbHb2n+6OQmJw==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.0.tgz", + "integrity": "sha512-+k5nkRpUWGaHr1JWT8jcKsVewlXw5qBgSopm9LW8fZ6KnSNZBycz8kHxh0+WSvckmXEESGptkIsb7dlkmJT/hQ==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -4303,15 +4153,15 @@ } }, "node_modules/@uiw/react-codemirror": { - "version": "4.21.25", - "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.25.tgz", - "integrity": "sha512-mBrCoiffQ+hbTqV1JoixFEcH7BHXkS3PjTyNH7dE8Gzf3GSBRazhtSM5HrAFIiQ5FIRGFs8Gznc4UAdhtevMmw==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.23.0.tgz", + "integrity": "sha512-MnqTXfgeLA3fsUUQjqjJgemEuNyoGALgsExVm0NQAllAAi1wfj+IoKFeK+h3XXMlTFRCFYOUh4AHDv0YXJLsOg==", "dependencies": { "@babel/runtime": "^7.18.6", "@codemirror/commands": "^6.1.0", "@codemirror/state": "^6.1.1", "@codemirror/theme-one-dark": "^6.0.0", - "@uiw/codemirror-extensions-basic-setup": "4.21.25", + "@uiw/codemirror-extensions-basic-setup": "4.23.0", "codemirror": "^6.0.0" }, "funding": { @@ -4334,17 +4184,17 @@ "dev": true }, "node_modules/@vtaits/use-lazy-ref": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@vtaits/use-lazy-ref/-/use-lazy-ref-0.1.0.tgz", - "integrity": "sha512-/m5z3Df6I6i/B0lnv6pB2O1+X/nWVquqbnltq+irW1+Nhpv0PpeMzSNf9lTjzT/eHRZtH2fM1370AdYqc3FTyQ==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@vtaits/use-lazy-ref/-/use-lazy-ref-0.1.3.tgz", + "integrity": "sha512-ZTLuFBHSivPcgWrwkXe5ExVt6R3/ybD+N0yFPy4ClzCztk/9bUD/1udKQ/jd7eCal+lapSrRWXbffqI9jkpDlg==", "peerDependencies": { - "react": "^17.0.0 || ^18.0.0" + "react": "^16.14.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -4364,9 +4214,9 @@ "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { @@ -4387,15 +4237,15 @@ "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -4423,28 +4273,28 @@ "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -4452,24 +4302,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -4478,12 +4328,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -4557,9 +4407,9 @@ } }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4620,15 +4470,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -4711,34 +4561,38 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -4758,16 +4612,17 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4813,30 +4668,34 @@ } }, "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -4852,20 +4711,14 @@ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -4883,12 +4736,12 @@ } }, "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.4.tgz", + "integrity": "sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A==", "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-loader": { @@ -4923,13 +4776,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", - "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.5.0", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -4949,6 +4802,22 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", @@ -4961,6 +4830,22 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4979,12 +4864,15 @@ "dev": true }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/body-parser": { @@ -5048,34 +4936,31 @@ "dev": true }, "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -5090,9 +4975,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -5109,10 +4994,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -5140,34 +5025,19 @@ } }, "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "dependencies": { "semver": "^7.0.0" } }, - "node_modules/builtins/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/builtins/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5175,12 +5045,6 @@ "node": ">=10" } }, - "node_modules/builtins/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -5217,9 +5081,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001568", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", - "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "dev": true, "funding": [ { @@ -5250,16 +5114,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5272,6 +5130,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -5289,9 +5150,9 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "engines": { "node": ">=6.0" @@ -5325,9 +5186,9 @@ } }, "node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } @@ -5424,6 +5285,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5451,26 +5318,6 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", @@ -5481,9 +5328,10 @@ } }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/cookie": { "version": "0.6.0", @@ -5501,12 +5349,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", - "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz", + "integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==", "dev": true, "dependencies": { - "browserslist": "^4.22.2" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -6052,6 +5900,57 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", @@ -6062,10 +5961,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { "ms": "2.1.2" }, @@ -6225,12 +6123,6 @@ "redux": "^4.2.0" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -6271,9 +6163,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.610", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz", - "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==", + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.11.tgz", + "integrity": "sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==", "dev": true }, "node_modules/emoji-regex": { @@ -6292,9 +6184,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6305,9 +6197,9 @@ } }, "node_modules/envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -6325,50 +6217,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -6397,42 +6296,57 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -6465,9 +6379,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -6543,10 +6457,13 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, + "dependencies": { + "semver": "^7.5.4" + }, "engines": { "node": ">=12" }, @@ -6554,6 +6471,18 @@ "eslint": ">=6.0.0" } }, + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", @@ -6599,6 +6528,7 @@ "version": "43.0.1", "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-43.0.1.tgz", "integrity": "sha512-WfZ986+qzIzX6dcr4yGUyVb/l9N3Z8wPXCc5z/70fljs3UbWhhV+WxrfgsqMToRzuuyX9MqZ974pq2UPhDTOcA==", + "deprecated": "Please use eslint-config-love, instead.", "dev": true, "dependencies": { "@typescript-eslint/parser": "^6.4.0", @@ -6634,9 +6564,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -6660,21 +6590,22 @@ } }, "node_modules/eslint-plugin-es-x": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", - "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.1.2" + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, "peerDependencies": { "eslint": ">=8" } @@ -6710,6 +6641,16 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -6731,6 +6672,18 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", @@ -6761,6 +6714,28 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-n": { "version": "16.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", @@ -6789,6 +6764,16 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-n/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -6804,26 +6789,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-n/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" + "node": "*" } }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6831,12 +6813,6 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-n/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-plugin-promise": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", @@ -6891,6 +6867,16 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -6903,6 +6889,18 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -6921,31 +6919,34 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=10" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -6963,6 +6964,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -6988,25 +6999,53 @@ "color-name": "~1.1.4" }, "engines": { - "node": ">=7.0.0" + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/globals": { @@ -7033,6 +7072,18 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7062,10 +7113,22 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -7198,12 +7261,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -7219,26 +7276,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7284,6 +7321,12 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -7294,9 +7337,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -7327,9 +7370,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -7437,9 +7480,9 @@ "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==" }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/follow-redirects": { @@ -7495,9 +7538,9 @@ "integrity": "sha512-oWF8SZNtLvfweURV5T0WYO69ZQpB1LQiGO2e6zoYRAlOwmqlW5yqLWfGi0tfn99qOgZ/4dxqBBDxqfOsRCQFiA==" }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "dev": true }, "node_modules/fs.realpath": { @@ -7506,6 +7549,20 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -7580,13 +7637,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -7596,9 +7654,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -7611,6 +7669,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -7645,22 +7704,44 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7747,9 +7828,9 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -7769,11 +7850,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7783,9 +7864,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -7813,10 +7894,46 @@ "wbuf": "^1.1.0" } }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/html-entities": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", - "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", "dev": true, "funding": [ { @@ -7916,9 +8033,9 @@ } }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -7940,9 +8057,9 @@ } }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -8035,6 +8152,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -8048,12 +8166,12 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -8079,20 +8197,20 @@ } }, "node_modules/intl-messageformat": { - "version": "10.5.11", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.11.tgz", - "integrity": "sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==", + "version": "10.5.14", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", + "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", "dependencies": { - "@formatjs/ecma402-abstract": "1.18.2", + "@formatjs/ecma402-abstract": "2.0.0", "@formatjs/fast-memoize": "2.2.0", - "@formatjs/icu-messageformat-parser": "2.7.6", + "@formatjs/icu-messageformat-parser": "2.7.8", "tslib": "^2.4.0" } }, "node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, "engines": { "node": ">= 10" @@ -8114,14 +8232,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8215,11 +8335,29 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8303,18 +8441,21 @@ } }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -8396,21 +8537,27 @@ } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8459,12 +8606,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -8474,10 +8621,13 @@ } }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8495,13 +8645,16 @@ } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8612,7 +8765,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -8688,10 +8840,15 @@ "node": ">=0.10.0" } }, + "node_modules/krustykrab": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/krustykrab/-/krustykrab-1.0.0.tgz", + "integrity": "sha512-cn9vpa5YLWF8WtgCzrWu9nII9O2AB5gXMpbrAPuDjlytPVdopnPBBAGyoa6101EHIy2ZyII+w0BeG4mWc5RyEg==" + }, "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", "dev": true }, "node_modules/language-tags": { @@ -8707,9 +8864,9 @@ } }, "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", + "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", "dev": true, "dependencies": { "picocolors": "^1.0.0", @@ -8852,12 +9009,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -8913,15 +9070,18 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -8936,8 +9096,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -8983,9 +9142,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/normalize-path": { @@ -9018,10 +9177,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9068,28 +9230,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9099,39 +9262,45 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9209,17 +9378,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -9366,9 +9535,9 @@ } }, "node_modules/pdfmake": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.10.tgz", - "integrity": "sha512-doipFnmE1UHSk+Z3wfQuVweVQqx2pE/Ns2G5gCqZmWwqjDj+mZHnZYH/ryXWoIfD+iVdZUAutgI/VHkTCN+Xrw==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.12.tgz", + "integrity": "sha512-TFsqaG6KVtk+TWermmJNNwom3wmB/xiz07prM74KBhdM+7pz3Uwq2b0uoqhhQRn6cYUTpL8lXZY6xF011o1YcQ==", "dependencies": { "@foliojs-fork/linebreak": "^1.1.1", "@foliojs-fork/pdfkit": "^0.14.0", @@ -9380,10 +9549,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -9483,9 +9651,9 @@ } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "engines": { "node": ">=12.20" @@ -9507,6 +9675,15 @@ "tinyqueue": "^2.0.3" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -9710,9 +9887,9 @@ } }, "node_modules/react-datepicker": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-6.6.0.tgz", - "integrity": "sha512-ERC0/Q4pPC9bNIcGUpdCbHc+oCxhkU3WI3UOGHkyJ3A9fqALCYpEmLc5S5xvAd7DuCDdbsyW97oRPM6pWWwjww==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-6.9.0.tgz", + "integrity": "sha512-QTxuzeem7BUfVFWv+g5WuvzT0c5BPo+XTCNbMTZKSZQLU+cMMwSUHwspaxuIcDlwNcOH0tiJ+bh1fJ2yxOGYWA==", "dependencies": { "@floating-ui/react": "^0.26.2", "clsx": "^2.1.0", @@ -9824,9 +10001,9 @@ } }, "node_modules/react-onclickoutside": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", - "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz", + "integrity": "sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==", "funding": { "type": "individual", "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" @@ -9866,11 +10043,11 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-router": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", - "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", + "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", "dependencies": { - "@remix-run/router": "1.15.3" + "@remix-run/router": "1.19.1" }, "engines": { "node": ">=14.0.0" @@ -9880,12 +10057,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", - "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", + "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", "dependencies": { - "@remix-run/router": "1.15.3", - "react-router": "6.22.3" + "@remix-run/router": "1.19.1", + "react-router": "6.26.1" }, "engines": { "node": ">=14.0.0" @@ -9916,14 +10093,16 @@ } }, "node_modules/react-select-async-paginate": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/react-select-async-paginate/-/react-select-async-paginate-0.7.3.tgz", - "integrity": "sha512-5r1vcXsVhG2zWbEEAnsnT55UIbU0H0kW+l0x/qJyEX/jwmn+7DyI8DbV92GYa4V4WsmMg224eki00erayqK/sQ==", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/react-select-async-paginate/-/react-select-async-paginate-0.7.5.tgz", + "integrity": "sha512-ZNk42VH5NOTjWX5LV04KNr6qKvgjzEcu9YBA7H7M2E2zW/0W0JZanxXw4yaTr+uYdZ4XmV+q2dTmOw5tZEC+cw==", "dependencies": { "@seznam/compose-react-refs": "^1.0.6", - "@vtaits/use-lazy-ref": "^0.1.0", + "@vtaits/use-lazy-ref": "^0.1.3", + "krustykrab": "^1.0.0", "sleep-promise": "^9.1.0", - "use-is-mounted-ref": "^1.5.0" + "use-is-mounted-ref": "^1.5.0", + "use-latest": "^1.2.1" }, "peerDependencies": { "react": "^16.14.0 || ^17.0.0 || ^18.0.0", @@ -9980,26 +10159,19 @@ } }, "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -10033,15 +10205,16 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -10071,9 +10244,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", @@ -10085,13 +10258,14 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -10230,6 +10404,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -10275,13 +10450,13 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -10293,21 +10468,38 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10318,14 +10510,14 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } @@ -10350,15 +10542,15 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -10580,13 +10772,14 @@ } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10641,14 +10834,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10694,6 +10891,14 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -10743,20 +10948,6 @@ "wbuf": "^1.7.3" } }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -10767,43 +10958,50 @@ } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10813,28 +11011,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10943,9 +11144,9 @@ } }, "node_modules/terser": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", - "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -11083,12 +11284,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -11119,9 +11320,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/type-check": { "version": "0.4.0", @@ -11161,29 +11362,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -11193,16 +11395,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -11212,14 +11415,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11254,9 +11463,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.19.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", + "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==", "devOptional": true }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -11327,9 +11536,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -11346,8 +11555,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -11374,14 +11583,14 @@ } }, "node_modules/use-debounce": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.0.tgz", - "integrity": "sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.3.tgz", + "integrity": "sha512-DxQSI9ZKso689WM1mjgGU3ozcxU1TJElBJ3X6S4SMzMNcm2lVH0AHmyXB+K7ewjz2BSUKJTDqTcwtSMRfB89dg==", "engines": { "node": ">= 16.0.0" }, "peerDependencies": { - "react": ">=16.8.0" + "react": "*" } }, "node_modules/use-is-mounted-ref": { @@ -11491,9 +11700,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -11718,28 +11927,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -11813,13 +12000,13 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", "dev": true, "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", "is-finalizationregistry": "^1.0.2", @@ -11828,8 +12015,8 @@ "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -11839,31 +12026,34 @@ } }, "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11878,6 +12068,15 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -11885,9 +12084,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.0.tgz", - "integrity": "sha512-H/Z3H55mrcrgjFwI+5jKavgXvwQLtfPCUEp6pi35VhoB0pfcHnSoyuTzkBEZpzq49g1193CUEwIvmsjcotenYw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "engines": { "node": ">=10.0.0" From 685742f520cd0beec695c2a0a31f856bf74daa10 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:56:21 +0200 Subject: [PATCH 15/22] fix(docs): typo --- docs/Managing-Indexes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Managing-Indexes.md b/docs/Managing-Indexes.md index 287048d..b60357c 100644 --- a/docs/Managing-Indexes.md +++ b/docs/Managing-Indexes.md @@ -18,7 +18,7 @@ Fill out the search index form, populating the fields with your custom values. - Included Reusable Content Types - these are the reusable content types that will be processed by your custom indexing strategy. If no option is selected, no items will be processed. - Indexed Languages - the index will only include content in the selected languages. -- Channel Name - the index will only be triggered by web page item creation or modication in the selected website channel. +- Channel Name - the index will only be triggered by web page item creation or modification in the selected website channel. - Indexing Strategy - the indexing strategy specified in code during dependency registration of a custom indexing strategies. - If you want the default strategy to appear here, register it explicitly in `IServiceCollection.AddKenticoLucene()` method. - Lucene Analyzer - the Lucene analyzer which indexes use to analyze text. From 6b125a4f32c87e35a2b4384f1907e889a414ec94 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:57:00 +0200 Subject: [PATCH 16/22] fix(DancingGoat): refactor string initialization with string.empty --- .../Search/AdvancedSearchIndexingStrategy.cs | 8 +- .../Search/DancingGoatSearchResultModel.cs | 6 +- .../ReusableContentItemsIndexingStrategy.cs | 98 +++++++++---------- .../Search/Services/AdvancedSearchService.cs | 2 +- 4 files changed, 55 insertions(+), 59 deletions(-) diff --git a/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs b/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs index 63741ab..325699c 100644 --- a/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs +++ b/examples/DancingGoat/Search/AdvancedSearchIndexingStrategy.cs @@ -43,9 +43,9 @@ WebCrawlerService webCrawler { var document = new Document(); - string sortableTitle = ""; - string title = ""; - string content = ""; + string sortableTitle = string.Empty; + string title = string.Empty; + string content = string.Empty; // IIndexEventItemModel could be a reusable content item or a web page item, so we use // pattern matching to get access to the web page item specific type and fields @@ -65,7 +65,7 @@ WebCrawlerService webCrawler return null; } - sortableTitle = title = page?.ArticleTitle ?? ""; + sortableTitle = title = page?.ArticleTitle ?? string.Empty; string rawContent = await webCrawler.CrawlWebPage(page!); content = htmlSanitizer.SanitizeHtmlDocument(rawContent); diff --git a/examples/DancingGoat/Search/DancingGoatSearchResultModel.cs b/examples/DancingGoat/Search/DancingGoatSearchResultModel.cs index 8a95c04..ab7311d 100644 --- a/examples/DancingGoat/Search/DancingGoatSearchResultModel.cs +++ b/examples/DancingGoat/Search/DancingGoatSearchResultModel.cs @@ -2,7 +2,7 @@ public class DancingGoatSearchResultModel { - public string Title { get; set; } = ""; - public string ContentType { get; set; } = ""; - public string Url { get; set; } = ""; + public string Title { get; set; } = string.Empty; + public string ContentType { get; set; } = string.Empty; + public string Url { get; set; } = string.Empty; } diff --git a/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs b/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs index 5b4bc0d..06f5b4f 100644 --- a/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs +++ b/examples/DancingGoat/Search/ReusableContentItemsIndexingStrategy.cs @@ -45,65 +45,61 @@ WebCrawlerService webCrawler { var document = new Document(); - string sortableTitle = ""; - string title = ""; - string content = ""; + string sortableTitle = string.Empty; + string title = string.Empty; + string content = string.Empty; // IIndexEventItemModel could be a reusable content item or a web page item, so we use // pattern matching to get access to the web page item specific type and fields - if (item is IndexEventReusableItemModel indexedItem) + if (item is not IndexEventReusableItemModel indexedItem) { - if (string.Equals(item.ContentTypeName, Banner.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) - { - var query = new ContentItemQueryBuilder() - .ForContentType(HomePage.CONTENT_TYPE_NAME, - config => - config - .WithLinkedItems(4) - - // Because the changedItem is a reusable content item, we don't have a website channel name to use here - // so we use a hardcoded channel name. - .ForWebsite(INDEXED_WEBSITECHANNEL_NAME) - - // Retrieves all HomePages that link to the Banner through the HomePage.HomePageBanner field - .Linking(nameof(HomePage.HomePageBanner), new[] { indexedItem.ItemID })) - .InLanguage(indexedItem.LanguageName); - - var associatedWebPageItem = (await queryExecutor.GetWebPageResult(query, webPageMapper.Map)).First(); - string url = string.Empty; - try - { - url = (await urlRetriever.Retrieve(associatedWebPageItem.SystemFields.WebPageItemTreePath, - INDEXED_WEBSITECHANNEL_NAME, indexedItem.LanguageName)).RelativePath; - } - catch (Exception) - { - // Retrieve can throw an exception when processing a page update LuceneQueueItem - // and the page was deleted before the update task has processed. In this case, return no item. - return null; - } - - sortableTitle = title = associatedWebPageItem!.HomePageBanner.First().BannerText; - string rawContent = await webCrawler.CrawlWebPage(associatedWebPageItem!); - content = htmlSanitizer.SanitizeHtmlDocument(rawContent); - - //If the indexed item is a reusable content item, we need to set the url manually. - document.Add(new StringField(BaseDocumentProperties.URL, url, Field.Store.YES)); - document.Add(new TextField(nameof(DancingGoatSearchResultModel.Title), title, Field.Store.YES)); - document.Add(new StringField(SORTABLE_TITLE_FIELD_NAME, sortableTitle, Field.Store.YES)); - document.Add(new TextField(CRAWLER_CONTENT_FIELD_NAME, content, Field.Store.NO)); - - return document; - } - else - { - return null; - } + return null; + } + + if (!string.Equals(item.ContentTypeName, Banner.CONTENT_TYPE_NAME, StringComparison.OrdinalIgnoreCase)) + { + return null; + } + + var query = new ContentItemQueryBuilder() + .ForContentType(HomePage.CONTENT_TYPE_NAME, + config => + config + .WithLinkedItems(4) + + // Because the changedItem is a reusable content item, we don't have a website channel name to use here + // so we use a hardcoded channel name. + .ForWebsite(INDEXED_WEBSITECHANNEL_NAME) + + // Retrieves all HomePages that link to the Banner through the HomePage.HomePageBanner field + .Linking(nameof(HomePage.HomePageBanner), new[] { indexedItem.ItemID })) + .InLanguage(indexedItem.LanguageName); + + var associatedWebPageItem = (await queryExecutor.GetWebPageResult(query, webPageMapper.Map)).First(); + string url = string.Empty; + try + { + url = (await urlRetriever.Retrieve(associatedWebPageItem.SystemFields.WebPageItemTreePath, + INDEXED_WEBSITECHANNEL_NAME, indexedItem.LanguageName)).RelativePath; } - else + catch (Exception) { + // Retrieve can throw an exception when processing a page update LuceneQueueItem + // and the page was deleted before the update task has processed. In this case, return no item. return null; } + + sortableTitle = title = associatedWebPageItem!.HomePageBanner.First().BannerText; + string rawContent = await webCrawler.CrawlWebPage(associatedWebPageItem!); + content = htmlSanitizer.SanitizeHtmlDocument(rawContent); + + //If the indexed item is a reusable content item, we need to set the url manually. + document.Add(new StringField(BaseDocumentProperties.URL, url, Field.Store.YES)); + document.Add(new TextField(nameof(DancingGoatSearchResultModel.Title), title, Field.Store.YES)); + document.Add(new StringField(SORTABLE_TITLE_FIELD_NAME, sortableTitle, Field.Store.YES)); + document.Add(new TextField(CRAWLER_CONTENT_FIELD_NAME, content, Field.Store.NO)); + + return document; } public override FacetsConfig FacetsConfigFactory() diff --git a/examples/DancingGoat/Search/Services/AdvancedSearchService.cs b/examples/DancingGoat/Search/Services/AdvancedSearchService.cs index 27c4b7c..cbdd65d 100644 --- a/examples/DancingGoat/Search/Services/AdvancedSearchService.cs +++ b/examples/DancingGoat/Search/Services/AdvancedSearchService.cs @@ -77,7 +77,7 @@ public LuceneSearchResultModel GlobalSearch( return new LuceneSearchResultModel { - Query = searchText ?? "", + Query = searchText ?? string.Empty, Page = page, PageSize = pageSize, TotalPages = topDocs.TotalHits <= 0 ? 0 : ((topDocs.TotalHits - 1) / pageSize) + 1, From d773ec5d9157ee58427200ff494f81a08bbe0e15 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:58:02 +0200 Subject: [PATCH 17/22] refactor(Lucene.Core, Admin): refactor string assignments --- .../UIPages/BaseIndexEditPage.cs | 150 ++++----- .../Indexing/DefaultLuceneClient.cs | 8 +- ...efaultLuceneConfigurationStorageService.cs | 26 +- .../Indexing/DefaultLuceneTaskProcessor.cs | 308 +++++++++--------- 4 files changed, 246 insertions(+), 246 deletions(-) diff --git a/src/Kentico.Xperience.Lucene.Admin/UIPages/BaseIndexEditPage.cs b/src/Kentico.Xperience.Lucene.Admin/UIPages/BaseIndexEditPage.cs index 2fb85c1..0047f2c 100644 --- a/src/Kentico.Xperience.Lucene.Admin/UIPages/BaseIndexEditPage.cs +++ b/src/Kentico.Xperience.Lucene.Admin/UIPages/BaseIndexEditPage.cs @@ -1,75 +1,75 @@ -using System.Text; - -using Kentico.Xperience.Admin.Base; -using Kentico.Xperience.Admin.Base.Forms; -using Kentico.Xperience.Lucene.Core.Indexing; - -using IFormItemCollectionProvider = Kentico.Xperience.Admin.Base.Forms.Internal.IFormItemCollectionProvider; - -namespace Kentico.Xperience.Lucene.Admin; - -internal abstract class BaseIndexEditPage : ModelEditPage -{ - protected readonly ILuceneConfigurationStorageService StorageService; - - private readonly ILuceneIndexManager indexManager; - - protected BaseIndexEditPage( - IFormItemCollectionProvider formItemCollectionProvider, - IFormDataBinder formDataBinder, - ILuceneConfigurationStorageService storageService, - ILuceneIndexManager indexManager) - : base(formItemCollectionProvider, formDataBinder) - { - this.indexManager = indexManager; - StorageService = storageService; - } - - protected async Task ValidateAndProcess(LuceneConfigurationModel configuration) - { - configuration.IndexName = RemoveWhitespacesUsingStringBuilder(configuration.IndexName ?? ""); - - if (StorageService.GetIndexIds().Exists(x => x == configuration.Id)) - { - bool edited = await StorageService.TryEditIndexAsync(configuration.ToLuceneModel()); - - if (edited) - { - return IndexModificationResult.Success; - } - - return IndexModificationResult.Failure; - } - else - { - if (!string.IsNullOrWhiteSpace(configuration.IndexName)) - { - indexManager.AddIndex(configuration.ToLuceneModel()); - - return IndexModificationResult.Success; - } - - return IndexModificationResult.Failure; - } - } - - protected static string RemoveWhitespacesUsingStringBuilder(string source) - { - var builder = new StringBuilder(source.Length); - for (int i = 0; i < source.Length; i++) - { - char c = source[i]; - if (!char.IsWhiteSpace(c)) - { - builder.Append(c); - } - } - return source.Length == builder.Length ? source : builder.ToString(); - } -} - -internal enum IndexModificationResult -{ - Success, - Failure -} +using System.Text; + +using Kentico.Xperience.Admin.Base; +using Kentico.Xperience.Admin.Base.Forms; +using Kentico.Xperience.Lucene.Core.Indexing; + +using IFormItemCollectionProvider = Kentico.Xperience.Admin.Base.Forms.Internal.IFormItemCollectionProvider; + +namespace Kentico.Xperience.Lucene.Admin; + +internal abstract class BaseIndexEditPage : ModelEditPage +{ + protected readonly ILuceneConfigurationStorageService StorageService; + + private readonly ILuceneIndexManager indexManager; + + protected BaseIndexEditPage( + IFormItemCollectionProvider formItemCollectionProvider, + IFormDataBinder formDataBinder, + ILuceneConfigurationStorageService storageService, + ILuceneIndexManager indexManager) + : base(formItemCollectionProvider, formDataBinder) + { + this.indexManager = indexManager; + StorageService = storageService; + } + + protected async Task ValidateAndProcess(LuceneConfigurationModel configuration) + { + configuration.IndexName = RemoveWhitespacesUsingStringBuilder(configuration.IndexName ?? string.Empty); + + if (StorageService.GetIndexIds().Exists(x => x == configuration.Id)) + { + bool edited = await StorageService.TryEditIndexAsync(configuration.ToLuceneModel()); + + if (edited) + { + return IndexModificationResult.Success; + } + + return IndexModificationResult.Failure; + } + else + { + if (!string.IsNullOrWhiteSpace(configuration.IndexName)) + { + indexManager.AddIndex(configuration.ToLuceneModel()); + + return IndexModificationResult.Success; + } + + return IndexModificationResult.Failure; + } + } + + protected static string RemoveWhitespacesUsingStringBuilder(string source) + { + var builder = new StringBuilder(source.Length); + for (int i = 0; i < source.Length; i++) + { + char c = source[i]; + if (!char.IsWhiteSpace(c)) + { + builder.Append(c); + } + } + return source.Length == builder.Length ? source : builder.ToString(); + } +} + +internal enum IndexModificationResult +{ + Success, + Failure +} diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs index cc1baf6..42fbf10 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneClient.cs @@ -222,11 +222,11 @@ private async Task MapToEventItem(IWebPageContentQue { var languages = await GetAllLanguages(); - string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? ""; + string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? string.Empty; var websiteChannels = await GetAllWebsiteChannels(); - string channelName = websiteChannels.FirstOrDefault(c => c.WebsiteChannelID == content.WebPageItemWebsiteChannelID).ChannelName ?? ""; + string channelName = websiteChannels.FirstOrDefault(c => c.WebsiteChannelID == content.WebPageItemWebsiteChannelID).ChannelName ?? string.Empty; var item = new IndexEventWebPageItemModel( content.WebPageItemID, @@ -248,7 +248,7 @@ private async Task MapToEventReusableItem(IContentQ { var languages = await GetAllLanguages(); - string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? ""; + string languageName = languages.FirstOrDefault(l => l.ContentLanguageID == content.ContentItemCommonDataContentLanguageID)?.ContentLanguageName ?? string.Empty; var item = new IndexEventReusableItemModel( content.ContentItemID, @@ -383,7 +383,7 @@ private Task> GetAllLanguages() => { if (item.TryGetValue(nameof(WebsiteChannelInfo.WebsiteChannelID), out object channelID) && item.TryGetValue(nameof(ChannelInfo.ChannelName), out object channelName)) { - items.Add(new(conversionService.GetInteger(channelID, 0), conversionService.GetString(channelName, ""))); + items.Add(new(conversionService.GetInteger(channelID, 0), conversionService.GetString(channelName, string.Empty))); } } diff --git a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs index f41ed80..e833124 100644 --- a/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs +++ b/src/Kentico.Xperience.Lucene.Core/Indexing/DefaultLuceneConfigurationStorageService.cs @@ -42,11 +42,11 @@ public bool TryCreateIndex(LuceneIndexModel configuration) var newInfo = new LuceneIndexItemInfo() { - LuceneIndexItemIndexName = configuration.IndexName ?? "", - LuceneIndexItemChannelName = configuration.ChannelName ?? "", - LuceneIndexItemStrategyName = configuration.StrategyName ?? "", - LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? "", - LuceneIndexItemRebuildHook = configuration.RebuildHook ?? "" + LuceneIndexItemIndexName = configuration.IndexName ?? string.Empty, + LuceneIndexItemChannelName = configuration.ChannelName ?? string.Empty, + LuceneIndexItemStrategyName = configuration.StrategyName ?? string.Empty, + LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? string.Empty, + LuceneIndexItemRebuildHook = configuration.RebuildHook ?? string.Empty }; indexProvider.Set(newInfo); @@ -180,7 +180,7 @@ public async Task> GetAllIndexDataAsync() public async Task TryEditIndexAsync(LuceneIndexModel configuration) { - configuration.IndexName = RemoveWhitespacesUsingStringBuilder(configuration.IndexName ?? ""); + configuration.IndexName = RemoveWhitespacesUsingStringBuilder(configuration.IndexName ?? string.Empty); var indexInfo = indexProvider.Get() .WhereEquals(nameof(LuceneIndexItemInfo.LuceneIndexItemId), configuration.Id) @@ -192,11 +192,11 @@ public async Task TryEditIndexAsync(LuceneIndexModel configuration) return false; } - indexInfo.LuceneIndexItemRebuildHook = configuration.RebuildHook ?? ""; - indexInfo.LuceneIndexItemStrategyName = configuration.StrategyName ?? ""; - indexInfo.LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? ""; - indexInfo.LuceneIndexItemChannelName = configuration.ChannelName ?? ""; - indexInfo.LuceneIndexItemIndexName = configuration.IndexName ?? ""; + indexInfo.LuceneIndexItemRebuildHook = configuration.RebuildHook ?? string.Empty; + indexInfo.LuceneIndexItemStrategyName = configuration.StrategyName ?? string.Empty; + indexInfo.LuceneIndexItemAnalyzerName = configuration.AnalyzerName ?? string.Empty; + indexInfo.LuceneIndexItemChannelName = configuration.ChannelName ?? string.Empty; + indexInfo.LuceneIndexItemIndexName = configuration.IndexName ?? string.Empty; indexProvider.Set(indexInfo); @@ -382,7 +382,7 @@ private void SetNewIndexPaths(LuceneIndexModel configuration, IEnumerable PublishedIndices { get; set; } = []; -} - -internal class DefaultLuceneTaskProcessor : ILuceneTaskProcessor -{ - private readonly IWebPageUrlRetriever urlRetriever; - private readonly IServiceProvider serviceProvider; - private readonly ILuceneClient luceneClient; - private readonly IEventLogService eventLogService; - private readonly ILuceneIndexManager indexManager; - - public DefaultLuceneTaskProcessor( - ILuceneClient luceneClient, - IEventLogService eventLogService, - IWebPageUrlRetriever urlRetriever, - IServiceProvider serviceProvider, - ILuceneIndexManager indexManager) - { - this.luceneClient = luceneClient; - this.eventLogService = eventLogService; - this.urlRetriever = urlRetriever; - this.serviceProvider = serviceProvider; - this.indexManager = indexManager; - } - - /// - public async Task ProcessLuceneTasks(IEnumerable queueItems, CancellationToken cancellationToken, int maximumBatchSize = 100) - { - LuceneBatchResult batchResults = new(); - - var batches = queueItems.Batch(maximumBatchSize); - - foreach (var batch in batches) - { - await ProcessLuceneBatch(batch, batchResults, cancellationToken); - } - - foreach (var index in batchResults.PublishedIndices) - { - var storage = index.StorageContext.GetNextOrOpenNextGeneration(); - index.StorageContext.PublishIndex(storage); - } - - return batchResults.SuccessfulOperations; - } - - private async Task ProcessLuceneBatch(IEnumerable queueItems, LuceneBatchResult previousBatchResults, CancellationToken cancellationToken) - { - - var groups = queueItems.GroupBy(item => item.IndexName); - - foreach (var group in groups) - { - try - { - var deleteIds = new List(); - var deleteTasks = group.Where(queueItem => queueItem.TaskType == LuceneTaskType.DELETE).ToList(); - - var updateTasks = group.Where(queueItem => queueItem.TaskType is LuceneTaskType.PUBLISH_INDEX or LuceneTaskType.UPDATE); - var upsertData = new List(); - foreach (var queueItem in updateTasks) - { - var document = await GetDocument(queueItem); - if (document is not null) - { - upsertData.Add(document); - } - else - { - deleteTasks.Add(queueItem); - } - } - deleteIds.AddRange(GetIdsToDelete(deleteTasks ?? []).Where(x => x is not null).Select(x => x ?? "")); - if (indexManager.GetIndex(group.Key) is { } index) - { - previousBatchResults.SuccessfulOperations += await luceneClient.DeleteRecords(deleteIds, group.Key); - previousBatchResults.SuccessfulOperations += await luceneClient.UpsertRecords(upsertData, group.Key, cancellationToken); - - if (group.Any(t => t.TaskType == LuceneTaskType.PUBLISH_INDEX) && !previousBatchResults.PublishedIndices.Any(x => x.IndexName == index.IndexName)) - { - previousBatchResults.PublishedIndices.Add(index); - } - } - else - { - eventLogService.LogError(nameof(DefaultLuceneTaskProcessor), nameof(ProcessLuceneTasks), "Index instance not exists"); - } - } - catch (Exception ex) - { - eventLogService.LogError(nameof(DefaultLuceneTaskProcessor), nameof(ProcessLuceneTasks), ex.Message); - } - } - } - - private static IEnumerable GetIdsToDelete(IEnumerable deleteTasks) => deleteTasks.Select(queueItem => queueItem.ItemToIndex.ItemGuid.ToString()); - - /// - public async Task GetDocument(LuceneQueueItem queueItem) - { - var luceneIndex = indexManager.GetRequiredIndex(queueItem.IndexName); - - var strategy = serviceProvider.GetRequiredStrategy(luceneIndex); - - var data = await strategy.MapToLuceneDocumentOrNull(queueItem.ItemToIndex); - - if (data is null) - { - return null; - } - - await AddBaseProperties(queueItem.ItemToIndex, data!); - - return data; - } - - private async Task AddBaseProperties(IIndexEventItemModel item, Document document) - { - document.AddStringField(BaseDocumentProperties.CONTENT_TYPE_NAME, item.ContentTypeName, Field.Store.YES); - document.AddStringField(BaseDocumentProperties.LANGUAGE_NAME, item.LanguageName, Field.Store.YES); - document.AddStringField(BaseDocumentProperties.ITEM_GUID, item.ItemGuid.ToString(), Field.Store.YES); - - if (item is IndexEventWebPageItemModel webpageItem && !document.Any(x => string.Equals(x.Name, BaseDocumentProperties.URL, StringComparison.OrdinalIgnoreCase))) - { - string url = string.Empty; - try - { - url = (await urlRetriever.Retrieve(webpageItem.WebPageItemTreePath, webpageItem.WebsiteChannelName, webpageItem.LanguageName)).RelativePath; - } - catch (Exception) - { - // Retrieve can throw an exception when processing a page update LuceneQueueItem - // and the page was deleted before the update task has processed. In this case, upsert an - // empty URL - } - - document.AddStringField(BaseDocumentProperties.URL, url, Field.Store.YES); - } - } -} +using CMS.Base; +using CMS.Core; +using CMS.Websites; + +using Lucene.Net.Documents; +using Lucene.Net.Documents.Extensions; + +using Microsoft.Extensions.DependencyInjection; + +namespace Kentico.Xperience.Lucene.Core.Indexing; + +internal class LuceneBatchResult +{ + internal int SuccessfulOperations { get; set; } = 0; + internal HashSet PublishedIndices { get; set; } = []; +} + +internal class DefaultLuceneTaskProcessor : ILuceneTaskProcessor +{ + private readonly IWebPageUrlRetriever urlRetriever; + private readonly IServiceProvider serviceProvider; + private readonly ILuceneClient luceneClient; + private readonly IEventLogService eventLogService; + private readonly ILuceneIndexManager indexManager; + + public DefaultLuceneTaskProcessor( + ILuceneClient luceneClient, + IEventLogService eventLogService, + IWebPageUrlRetriever urlRetriever, + IServiceProvider serviceProvider, + ILuceneIndexManager indexManager) + { + this.luceneClient = luceneClient; + this.eventLogService = eventLogService; + this.urlRetriever = urlRetriever; + this.serviceProvider = serviceProvider; + this.indexManager = indexManager; + } + + /// + public async Task ProcessLuceneTasks(IEnumerable queueItems, CancellationToken cancellationToken, int maximumBatchSize = 100) + { + LuceneBatchResult batchResults = new(); + + var batches = queueItems.Batch(maximumBatchSize); + + foreach (var batch in batches) + { + await ProcessLuceneBatch(batch, batchResults, cancellationToken); + } + + foreach (var index in batchResults.PublishedIndices) + { + var storage = index.StorageContext.GetNextOrOpenNextGeneration(); + index.StorageContext.PublishIndex(storage); + } + + return batchResults.SuccessfulOperations; + } + + private async Task ProcessLuceneBatch(IEnumerable queueItems, LuceneBatchResult previousBatchResults, CancellationToken cancellationToken) + { + + var groups = queueItems.GroupBy(item => item.IndexName); + + foreach (var group in groups) + { + try + { + var deleteIds = new List(); + var deleteTasks = group.Where(queueItem => queueItem.TaskType == LuceneTaskType.DELETE).ToList(); + + var updateTasks = group.Where(queueItem => queueItem.TaskType is LuceneTaskType.PUBLISH_INDEX or LuceneTaskType.UPDATE); + var upsertData = new List(); + foreach (var queueItem in updateTasks) + { + var document = await GetDocument(queueItem); + if (document is not null) + { + upsertData.Add(document); + } + else + { + deleteTasks.Add(queueItem); + } + } + deleteIds.AddRange(GetIdsToDelete(deleteTasks ?? []).Where(x => x is not null).Select(x => x ?? string.Empty)); + if (indexManager.GetIndex(group.Key) is { } index) + { + previousBatchResults.SuccessfulOperations += await luceneClient.DeleteRecords(deleteIds, group.Key); + previousBatchResults.SuccessfulOperations += await luceneClient.UpsertRecords(upsertData, group.Key, cancellationToken); + + if (group.Any(t => t.TaskType == LuceneTaskType.PUBLISH_INDEX) && !previousBatchResults.PublishedIndices.Any(x => x.IndexName == index.IndexName)) + { + previousBatchResults.PublishedIndices.Add(index); + } + } + else + { + eventLogService.LogError(nameof(DefaultLuceneTaskProcessor), nameof(ProcessLuceneTasks), "Index instance not exists"); + } + } + catch (Exception ex) + { + eventLogService.LogError(nameof(DefaultLuceneTaskProcessor), nameof(ProcessLuceneTasks), ex.Message); + } + } + } + + private static IEnumerable GetIdsToDelete(IEnumerable deleteTasks) => deleteTasks.Select(queueItem => queueItem.ItemToIndex.ItemGuid.ToString()); + + /// + public async Task GetDocument(LuceneQueueItem queueItem) + { + var luceneIndex = indexManager.GetRequiredIndex(queueItem.IndexName); + + var strategy = serviceProvider.GetRequiredStrategy(luceneIndex); + + var data = await strategy.MapToLuceneDocumentOrNull(queueItem.ItemToIndex); + + if (data is null) + { + return null; + } + + await AddBaseProperties(queueItem.ItemToIndex, data!); + + return data; + } + + private async Task AddBaseProperties(IIndexEventItemModel item, Document document) + { + document.AddStringField(BaseDocumentProperties.CONTENT_TYPE_NAME, item.ContentTypeName, Field.Store.YES); + document.AddStringField(BaseDocumentProperties.LANGUAGE_NAME, item.LanguageName, Field.Store.YES); + document.AddStringField(BaseDocumentProperties.ITEM_GUID, item.ItemGuid.ToString(), Field.Store.YES); + + if (item is IndexEventWebPageItemModel webpageItem && !document.Any(x => string.Equals(x.Name, BaseDocumentProperties.URL, StringComparison.OrdinalIgnoreCase))) + { + string url = string.Empty; + try + { + url = (await urlRetriever.Retrieve(webpageItem.WebPageItemTreePath, webpageItem.WebsiteChannelName, webpageItem.LanguageName)).RelativePath; + } + catch (Exception) + { + // Retrieve can throw an exception when processing a page update LuceneQueueItem + // and the page was deleted before the update task has processed. In this case, upsert an + // empty URL + } + + document.AddStringField(BaseDocumentProperties.URL, url, Field.Store.YES); + } + } +} From cd8c14c88a25fec5520d288a39142fad2fdff6ee Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:58:29 +0200 Subject: [PATCH 18/22] refactor(Lucene.Core): remove specific info providers --- .../ILuceneContentTypeItemInfoProvider.cs | 27 +++++++++++-------- .../LuceneContentTypeItemInfo.generated.cs | 2 +- ...neContentTypeItemInfoProvider.generated.cs | 18 ------------- .../ILuceneIncludedPathItemInfoProvider.cs | 24 +++++++++++------ .../LuceneIncludedPathItemInfo.generated.cs | 2 +- ...eIncludedPathItemInfoProvider.generated.cs | 18 ------------- .../ILuceneIndexItemInfoProvider.cs | 24 +++++++++++------ .../LuceneIndexItemInfo.generated.cs | 2 +- .../LuceneIndexItemInfoProvider.generated.cs | 18 ------------- .../ILuceneIndexLanguageItemInfoProvider.cs | 27 +++++++++++-------- .../LuceneIndexLanguageItemInfo.generated.cs | 2 +- ...IndexLanguageItemInfoProvider.generated.cs | 18 ------------- ...ceneReusableContentTypeItemInfoProvider.cs | 5 ++++ ...neReusableContentTypeItemInfo.generated.cs | 2 +- ...leContentTypeItemInfoProvider.generated.cs | 18 ------------- 15 files changed, 74 insertions(+), 133 deletions(-) delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/LuceneContentTypeItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIncludedPathItem/LuceneIncludedPathItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexItem/LuceneIndexItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneIndexLanguageItem/LuceneIndexLanguageItemInfoProvider.generated.cs delete mode 100644 src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneReusableContentTypeItem/LuceneReusableContentTypeItemInfoProvider.generated.cs diff --git a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs index 4ed616a..7ec1986 100644 --- a/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs +++ b/src/Kentico.Xperience.Lucene.Core/InfoModels/LuceneContentTypeItem/ILuceneContentTypeItemInfoProvider.cs @@ -1,11 +1,16 @@ -using CMS.DataEngine; - -namespace Kentico.Xperience.Lucene.Core; - -///